프로그램 사용/VNC2022. 2. 25. 12:18

client -> server 프로토콜

#define rfbKeyEvent 4
#define rfbPointerEvent 5

 

키보드 이벤트 관련 구조체

/*-----------------------------------------------------------------------------
 * KeyEvent - key press or release
 *
 * Keys are specified using the "keysym" values defined by the X Window System.
 * For most ordinary keys, the keysym is the same as the corresponding ASCII
 * value.  Other common keys are:
 *
 * BackSpace 0xff08
 * Tab 0xff09
 * Return or Enter 0xff0d
 * Escape 0xff1b
 * Insert 0xff63
 * Delete 0xffff
 * Home 0xff50
 * End 0xff57
 * Page Up 0xff55
 * Page Down 0xff56
 * Left 0xff51
 * Up 0xff52
 * Right 0xff53
 * Down 0xff54
 * F1 0xffbe
 * F2 0xffbf
 * ... ...
 * F12 0xffc9
 * Shift 0xffe1
 * Control 0xffe3
 * Meta 0xffe7
 * Alt 0xffe9
 */

typedef struct {
    uint8_t type; /* always rfbKeyEvent */
    uint8_t down; /* true if down (press), false if up */
    uint16_t pad;
    uint32_t key; /* key is specified as an X keysym */
} rfbKeyEventMsg;

#define sz_rfbKeyEventMsg 8


typedef struct {
    uint8_t type;     /* always rfbQemuEvent */
    uint8_t subtype;  /* always 0 */
    uint16_t down;
    uint32_t keysym;  /* keysym is specified as an X keysym, may be 0 */
    uint32_t keycode; /* keycode is specified as XT key code */
} rfbQemuExtendedKeyEventMsg;

#define sz_rfbQemuExtendedKeyEventMsg 12

 

내용이 부실한데 드래그를 구현하려면 down 이벤트를 보고 해당 버튼의 마스크가 사라질때 까지 보고 있어야 할 듯?

uinput에서 그럼 드래그 어떻게 구현해야 하냐... ㅠㅠ

/*-----------------------------------------------------------------------------
 * PointerEvent - mouse/pen move and/or button press.
 */

typedef struct {
    uint8_t type; /* always rfbPointerEvent */
    uint8_t buttonMask; /* bits 0-7 are buttons 1-8, 0=up, 1=down */
    uint16_t x;
    uint16_t y;
} rfbPointerEventMsg;

#define rfbButton1Mask 1
#define rfbButton2Mask 2
#define rfbButton3Mask 4
#define rfbButton4Mask 8
#define rfbButton5Mask 16
/* RealVNC 335 method */
#define rfbWheelUpMask rfbButton4Mask
#define rfbWheelDownMask rfbButton5Mask

#define sz_rfbPointerEventMsg 6

[링크 : https://github.com/LibVNC/libvncserver/blob/master/rfb/rfbproto.h]

 

키보드의 경우 키 다운, 업 이벤트가 오는 것 같고, 반복키 처리를 좀 찾아봐야 할 듯.

마우스는 buttonmask에 

static void doptr(int buttonMask, int x, int y, rfbClientPtr cl)
{

}

static void dokey(rfbBool down, rfbKeySym key, rfbClientPtr cl)
{

}

[링크 : http:// https://github.com/LibVNC/libvncserver/blob/master/examples/example.c]

 

키보드 입력관련 선언문

#define XK_VoidSymbol 0xFFFFFF /* void symbol */

#define XK_BackSpace 0xFF08 /* back space, back char */
#define XK_Tab 0xFF09
#define XK_Linefeed 0xFF0A /* Linefeed, LF */
#define XK_Clear 0xFF0B
#define XK_Return 0xFF0D /* Return, enter */
#define XK_Pause 0xFF13 /* Pause, hold */
#define XK_Scroll_Lock 0xFF14
#define XK_Sys_Req 0xFF15
#define XK_Escape 0xFF1B
#define XK_Delete 0xFFFF /* Delete, rubout */

#define XK_A                   0x041
#define XK_B                   0x042
#define XK_C                   0x043

#define XK_a                   0x061
#define XK_b                   0x062
#define XK_c                   0x063

[링크 : https://github.com/LibVNC/libvncserver/blob/master/rfb/keysym.h]

 

[링크 : https://github.com/LibVNC/libvncserver]

 

+

relative / absolute mode 관련 참고할 코드

doptr() 에서 현재 좌표 넘어온 것과 이전 마지막 좌표 계산해서 넣는것 외에는

libvncserver 자체에서 상대좌표 모드로 작동하진 않도록 구성되어 있는 것으로 보인다.

[링크 : https://github.com/hanzelpeter/dispmanx_vnc/blob/master/main.c]

'프로그램 사용 > VNC' 카테고리의 다른 글

libvncserver 마우스 이벤트  (0) 2022.02.25
libvncserver 사용예  (0) 2022.02.15
rfb(remote framebuffer) protocol  (0) 2022.01.26
gconf-editor / ubuntu 14.04 LTS vino + VNC 접속불가  (0) 2015.03.22
VNC web 버전?  (0) 2014.12.11
VNC 5.0.5  (0) 2013.09.04
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/VNC2022. 2. 15. 16:33

-lvncserver 해주고 나면 의외로 건드릴게 별로 없다.

 

#include <rfb/rfb.h>

int main(int argc,char** argv)
{                                                                
  rfbScreenInfoPtr server=rfbGetScreen(&argc,argv,400,300,8,3,4);
  if(!server)
    return 1;
  server->frameBuffer=(char*)malloc(400*300*4);
  rfbInitServer(server);           
  rfbRunEventLoop(server,-1,FALSE);
  return(0);
}

[링크 : https://github.com/LibVNC/libvncserver/blob/master/examples/simple.c]

'프로그램 사용 > VNC' 카테고리의 다른 글

libvncserver 마우스 이벤트  (0) 2022.02.25
libvncserver 사용예  (0) 2022.02.15
rfb(remote framebuffer) protocol  (0) 2022.01.26
gconf-editor / ubuntu 14.04 LTS vino + VNC 접속불가  (0) 2015.03.22
VNC web 버전?  (0) 2014.12.11
VNC 5.0.5  (0) 2013.09.04
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/VNC2022. 1. 26. 17:07

VNC 프로토콜

 

[링크 : https://en.wikipedia.org/wiki/RFB_protocol]

[링크 : https://github.com/any1/wayvnc]

 

+

[링크 : https://github.com/LibVNC/libvncserver]

'프로그램 사용 > VNC' 카테고리의 다른 글

libvncserver 마우스 이벤트  (0) 2022.02.25
libvncserver 사용예  (0) 2022.02.15
rfb(remote framebuffer) protocol  (0) 2022.01.26
gconf-editor / ubuntu 14.04 LTS vino + VNC 접속불가  (0) 2015.03.22
VNC web 버전?  (0) 2014.12.11
VNC 5.0.5  (0) 2013.09.04
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/VNC2015. 3. 22. 21:43

14.04 깔고 나서 vnc 하려고 하니

어?



그래서 검색을 해보니...

dconf-editor 라는 레지스트리 편집기 비스므리한 것이 나타나는데..

좋은거 같으면서도 익숙하지 않아서 먼지 모르겠...


아무튼 require-encryption을 끄면 된다는데


위와 같이 설정하면 vino-preferences 에서 암호 입력이 꺼진다.



일단은 되는데.. 암호 입력하면서는 안되는건가...?

I had the same problem using VNC from my Chromebook and after updating to Ubuntu 14.04 LTS. I used the suggestion of the dconf-editor -> org.gnome.desktop.remote-access then "require-encryption = NO"


[링크 : https://bugs.launchpad.net/ubuntu/+source/vino/+bug/1290666] 



+

위의 설정을 해버리면 vino-preferences 에서 보안이 설정되지 않는다 -ㅁ-!!!

암호 걸고 싶어도 걸수가 없네... ㅠㅠ

'프로그램 사용 > VNC' 카테고리의 다른 글

libvncserver 사용예  (0) 2022.02.15
rfb(remote framebuffer) protocol  (0) 2022.01.26
gconf-editor / ubuntu 14.04 LTS vino + VNC 접속불가  (0) 2015.03.22
VNC web 버전?  (0) 2014.12.11
VNC 5.0.5  (0) 2013.09.04
tsclient에 VNC 추가하기  (0) 2011.12.31
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/VNC2014. 12. 11. 09:32
HTML5 / websocket을 이용한다는데
쓸만한지 클라이언트측 부하는 얼마나 걸릴지 체크할 필요는 있어보인다.


[링크 : http://stackoverflow.com/questions/3240633/web-based-vnc-client]
    [링크 : http://kanaka.github.io/noVNC/]
    [링크 : http://guac-dev.org/]
[링크 : https://chrome.google.com/webstore/detail/vnc%C2%AE-viewer-for-google-ch/...a] 크롬 확장

'프로그램 사용 > VNC' 카테고리의 다른 글

rfb(remote framebuffer) protocol  (0) 2022.01.26
gconf-editor / ubuntu 14.04 LTS vino + VNC 접속불가  (0) 2015.03.22
VNC web 버전?  (0) 2014.12.11
VNC 5.0.5  (0) 2013.09.04
tsclient에 VNC 추가하기  (0) 2011.12.31
UVNC - Ultra VNC  (2) 2010.11.26
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/VNC2013. 9. 4. 08:37
간만에 포맷도 한김에 새로운 버전을 받았더니.. VNC가 장족의 발전을 했다 -ㅁ-!




먼가.. 팀뷰어 같은 느낌이 드는 툴바?



그리고 새롭게 추가된 VNC Plus
Intel 2세대 i 시리즈에서 된다는데.. BIOS 레벨부터 원격 제어가 가능해지는 KVM 같기도 하고...
[링크 : http://www.realvnc.com/products/viewerplus/]

'프로그램 사용 > VNC' 카테고리의 다른 글

gconf-editor / ubuntu 14.04 LTS vino + VNC 접속불가  (0) 2015.03.22
VNC web 버전?  (0) 2014.12.11
VNC 5.0.5  (0) 2013.09.04
tsclient에 VNC 추가하기  (0) 2011.12.31
UVNC - Ultra VNC  (2) 2010.11.26
우분투 9.10 원격설정하기(vino server on Ubuntu 9.10)  (0) 2009.12.30
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/VNC2011. 12. 31. 19:49
tsclient는 윈도우즈의 mstsc와 거의 유사한 디자인의 원격제어 프로그램이다.
vnc 프토토콜은 기본적으로 추가되어 있지 않지만 목록상에는 존재한다.


xtightvncviewer  패키지를 추가하면 목록에 추가되고,
xtightvncviewer 라는 명령어를 사용하여 직접 연결할 수도 있지만
gnome 사용중에 프로그램 목록에 추가되지는 않는다.

$ sudo apt-get install xtightvncviewer

[링크 : https://help.ubuntu.com/community/VNC/Clients]
[링크 : http://queleimporta.com/using-vnc-with-terminal-server-client-on-ubuntu/]  


'프로그램 사용 > VNC' 카테고리의 다른 글

VNC web 버전?  (0) 2014.12.11
VNC 5.0.5  (0) 2013.09.04
tsclient에 VNC 추가하기  (0) 2011.12.31
UVNC - Ultra VNC  (2) 2010.11.26
우분투 9.10 원격설정하기(vino server on Ubuntu 9.10)  (0) 2009.12.30
Fedora Core 6에 VNC 설치하기  (0) 2009.07.22
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/VNC2010. 11. 26. 13:34
개인적으로는 realVNC만 사용했는데,
VISTA / Win7에서는 Service Mode가 작동하지 않는 문제로 인해서 UVNC로 환승중이다 -_-

설치시에 VISTA/Win7 관련 다운로드는 전부 체크해주면
별다른 설정없이(물론 방화벽은 뚫어줘야겠지만) 작동이 된다.





하지만, 듀얼 모니터의 경우 메인모니터만 나오고
아래와 같이 보조 모니터가 왼쪽에 있는 경우 좌표가 엉겨 마우스가 못 움직이고, 메인 화면이 나오는 불상사가 발생!
아직 해결책은 발견하지 못했다.(머.. 일시적인 해결책은 싱글 모니터로 써라 정도?)


장점 : VISTA/Win7에서 Service mode 가능함
         File 전송가능(하지만 드래그로 바로 보낼수는 없음)

단점 : 이녀석도 아직은.. 듀얼모니터 지원을 제대로 못함

'프로그램 사용 > VNC' 카테고리의 다른 글

VNC 5.0.5  (0) 2013.09.04
tsclient에 VNC 추가하기  (0) 2011.12.31
UVNC - Ultra VNC  (2) 2010.11.26
우분투 9.10 원격설정하기(vino server on Ubuntu 9.10)  (0) 2009.12.30
Fedora Core 6에 VNC 설치하기  (0) 2009.07.22
tightVNC 서버사용기  (0) 2009.04.02
Posted by 구차니

댓글을 달아 주세요

  1. 음.. 저는 듀얼모니터를 사용하고 있는데... 정상적으로 동작합니다.
    셋팅(설치) 과정을 다시 살펴보시는게 좋을거 같아요.

    드라이버 모드에서는 데스크탑 스위칭이 됩니다.

    2010.11.29 09:30 [ ADDR : EDIT/ DEL : REPLY ]
    • 듀얼이 문제가 아니라
      듀얼 모니터중 보조 모니터가(2번) 왼쪽에 있을 경우가 문제더라구요. 아무래도 마이너스 좌표가 되면서 오작동을 하는것 같아요.

      2010.11.29 09:34 신고 [ ADDR : EDIT/ DEL ]

프로그램 사용/VNC2009. 12. 30. 21:16
시스템 - 기본설정 메뉴에서
"원격 데스크탑"과 "시작 응용 프로그램" 을 설정한다.

원격 데스크탑에서는, 공유에서 두가지 체크
보안에서 암호 입력과 자동 네트워크 설정 체크
취향에 따라 알림 영역에 아이콘 표시를 해주거나 하지 않으면 된다.

하지만, 위에까지만 해서는 자동으로 원격 데스크탑이 시작되지 않으므로
시작 프로그램 기본 설정에서 원격 데스크탑을 체크 해주어야 한다.

[링크 : http://minimonk.tistory.com/397]

'프로그램 사용 > VNC' 카테고리의 다른 글

tsclient에 VNC 추가하기  (0) 2011.12.31
UVNC - Ultra VNC  (2) 2010.11.26
우분투 9.10 원격설정하기(vino server on Ubuntu 9.10)  (0) 2009.12.30
Fedora Core 6에 VNC 설치하기  (0) 2009.07.22
tightVNC 서버사용기  (0) 2009.04.02
tightVNC / realVNC  (0) 2009.03.13
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/VNC2009. 7. 22. 14:42
서버설정은 크게 6단계로 나뉜다.

1. rpm이나 소스로 vnc를 설치한다.(자세한 내용은 생략)
2. /etc/sysconfig/vncserver의 내용을 수정한다.
# The VNCSERVERS variable is a list of display:user pairs.
 #
 # Uncomment the lines below to start a VNC server on display :2
 # as my 'myusername' (adjust this to your own).  You will also
 # need to set a VNC password; run 'man vncpasswd' to see how
 # to do that.
 #
 # DO NOT RUN THIS SERVICE if your local area network is
 # untrusted!  For a secure way of using VNC, see
 # <URL:http://www.uk.research.att.com/archive/vnc/sshvnc.html>.
 
 # Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.
 
 # Use "-nohttpd" to prevent web-based VNC clients connecting.
 
 # Use "-localhost" to prevent remote VNC clients connecting except when
 # doing so through a secure tunnel.  See the "-via" option in the
 # `man vncviewer' manual page.
 
 # VNCSERVERS="2:myusername"
 # VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"

FC6에서는 localhost:0.0 은 gdm에서 사용하고 있으므로, 1번 이후로 설정을 해준다.
예를들어 testuser 라는 아이디로 1번 디스플레이 1024x768 해상도로 접속을 하도록 하려면 아래와 같이 추가를 해준다.
VNCSERVERS="1:testuser"
VNCSERVERARGS[1]="-geometry 1024x768 -nohttpd"

3. vncpasswd로 사용자 비밀번호를 설정한다. 물론 확인을 위해 두번 입력 해야 한다.
   이 부분을 하지 않고 vncserver를 구동시키면, 아무런 에러 없이 FAILED 만 출력된다.
$ vncpasswd
Password:
Verify:

4. 기본으로 설정되는 윈도우 매니저는 twm으로, gdm에 익숙해진 일반유저로서는 교체해주는 것이 좋다.
   위의 설정에 해준 아이디의 홈디렉토리에서 .vnc/ 디렉토리에 xstartup이라는 스크립트를 교체 해준다.
   xstatup 파일은 /etc/X11/xinit/xinitrc을 xstartup으로 이름 바꾸어 복사해주면 된다.


# more xstartup
#!/bin/sh
# Copyright (C) 1999 - 2005 Red Hat, Inc. All rights reserved. This
# copyrighted material is made available to anyone wishing to use, modify,
# copy, or redistribute it subject to the terms and conditions of the
# GNU General Public License version 2.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# Authors:
#       Mike A. Harris <mharris@redhat.com>

# Mandatorily source xinitrc-common, which is common code shared between the
# Xsession and xinitrc scripts which has been factored out to avoid duplication
. /etc/X11/xinit/xinitrc-common

# The user may have their own clients they want to run.  If they don't,
# fall back to system defaults.
if [ -f $HOME/.Xclients ]; then
    exec $SSH_AGENT $DBUS_LAUNCH $HOME/.Xclients || \
    exec $SSH_AGENT $HOME/.Xclients
elif [ -f /etc/X11/xinit/Xclients ]; then
    exec $SSH_AGENT $DBUS_LAUNCH /etc/X11/xinit/Xclients || \
    exec $SSH_AGENT /etc/X11/xinit/Xclients
else
    # Failsafe settings.  Although we should never get here
    # (we provide fallbacks in Xclients as well) it can't hurt.
    [ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45'
    [ -x /usr/bin/xclock ] && /usr/bin/xclock -geometry 100x100-5+5 &
    [ -x /usr/bin/xterm ] && xterm -geometry 80x50-50+150 &
    [ -x /usr/bin/twm ] && /usr/bin/twm
fi

5. 방화벽을 해제하거나, 포트를 풀어준다.(자세한 내용은 생략)
    포트는 5900번이 기본으로 디스플레이 포트를 더해준다.
    예를들어 3번 display 번호를 사용하면 5900 + 3 = 5903 번의 포트를 열어주어야 한다.

6. vnc 서버를 구동한다.(자세한 내용은 생략)
    service vncserver start
    service vncserver restart

'프로그램 사용 > VNC' 카테고리의 다른 글

tsclient에 VNC 추가하기  (0) 2011.12.31
UVNC - Ultra VNC  (2) 2010.11.26
우분투 9.10 원격설정하기(vino server on Ubuntu 9.10)  (0) 2009.12.30
Fedora Core 6에 VNC 설치하기  (0) 2009.07.22
tightVNC 서버사용기  (0) 2009.04.02
tightVNC / realVNC  (0) 2009.03.13
Posted by 구차니
TAG VNC

댓글을 달아 주세요