WindowsçRealVNCãæ¹é ãã¦æ¥æ¬èªãã¼ãã¼ãã«å¯¾å¿ããã
Windowsçã®VNCViewerã使ã£ã¦LinuxãFreeBSDãé éæä½ããã¨ã
ãåè§/å
¨è§ããã¼ãå©ããªãã®ã§ãSCIMãèµ·åãããã®ãé¢åããããï¼Ctrl+ã¹ãã¼ã¹ã§åºæ¥ããï¼
RealVNCã®ã½ã¼ã¹ãæ¹é ãã¦ãæ¥æ¬èªãã¼ãã¼ãã«å¯¾å¿ãããäºã«ããã
ç°å¢ï¼Windows XP + Visual Studio 2005 + VNC 4.1.2
以ä¸æé
ã½ã¼ã¹ãç¨æ
RealVNCã®å
¬å¼ãµã¤ãã®ãã¦ã³ãã¼ããã¼ã¸ãããWindowsç¨ã®ã½ã¼ã¹ããã¦ã³ãã¼ãããã
ã½ã¼ã¹ãä¿®æ£
â Visual Studio 2005ã§ã¯ã¨ã©ã¼ã«ãªãç®æãç´ã
ãã¦ã³ãã¼ãããã½ã¼ã¹ãå±éãããããwin\rfb_win32\SocketManager.cxxãã®41è¡ç®ã®staticã®æ¬¡ã«voidãæ¸ãå ããã
static void requestAddressChangeEvents(network::SocketListener* sock_) { DWORD dummy = 0; if (WSAIoctl(sock_->getFd(), SIO_ADDRESS_LIST_CHANGE, 0, 0, 0, 0, &dummy, 0, 0) == SOCKET_ERROR) { DWORD err = WSAGetLastError(); if (err != WSAEWOULDBLOCK) vlog.error("Unable to track address changes", err); } }
ãwin\rfb_win32\CPointer.cxxãã®57è¡ç®ã®inlineã®æ¬¡ã«ãintãæ¸ãå ããã
inline int abs(int x) {return x>0 ? x : 0;}
â ãã¼ããããå ãã
ãwin\rfb_win32\keymap.hãã®ä¸çªä¸ï¼Japanese stuff - almost certainly wrong... ã¨ããæï¼ãä¸è¨ã®éãã«ããã
// Japanese stuff - almost certainly wrong... { XK_Kanji, VK_KANJI, 0 }, { XK_Kana_Shift, VK_KANA, 0 }, { XK_Zenkaku_Hankaku, VK_OEM_AUTO, 0 }, { XK_Zenkaku_Hankaku, VK_OEM_ENLW, 0 }, { XK_Henkan, VK_CONVERT, 0 }, { XK_Muhenkan, VK_NONCONVERT, 0 }, { XK_Hiragana_Katakana,VK_OEM_COPY, 0 }, { XK_Romaji ,VK_OEM_BACKTAB, 0 },
â VNCViewerã®èµ·åä¸ã¯IMEãç¡å¹åãã
ãwin\vncviewer\DesktopWindow.cxxãã®ï¼ç®æã«æãå ããã
imm.hãã¤ã³ã¯ã«ã¼ããããã
#include#include #include #include #include #include #include #include #include #include #include #include
WM_CREATEãå¦çããæã§ãImmAssociateContext()é¢æ°ãæ¿å
¥ããã
if (msg == WM_CREATE) { ImmAssociateContext(wnd, 0); SetWindowLong(wnd, GWL_USERDATA, (long)((CREATESTRUCT*)lParam)->lpCreateParams); } else if (msg == WM_DESTROY)
Visual Studio 2005ã®èµ·å
ãwin\vnc.dswããVisual Studio 2005ã§éãã
ããã¨ãæ§å½¢å¼ã®Visual C++ããã¸ã§ã¯ããå¤æãããèãã¦ããã®ã§ãããã¹ã¦ã¯ã(A)ãã§çããã
â è¨å®
ãã¼ã«ãã¼ã®çãä¸ããReleaseãã«ããã
å·¦ã®ã½ãªã¥ã¼ã·ã§ã³ã¨ã¯ã¹ããã¼ã©ã®vncviewerã§ãå³ã¯ãªãã¯âããããã£ãé¸ã³ã
æ§æããããã£âãªã³ã«âå
¥åâ追å ã®ä¾åãã¡ã¤ã«ã«imm32.libã追å ããã
â ãã«ã
ãF7ããã¼ãæ¼ãã¨ããã¸ã§ã¯ãããã«ããããã
win\Releaseã«ä½æãããã®ã§ããã®ä¸ã§æ¡å¼µåããexeãã¨ãdllãã®ãã¡ã¤ã«ãé©å½ãªå ´æã«ã³ãã¼ãã¦ä½¿ãã
å¾ã¯ãé éæä½ãããLinuxãFreeBSDã§ãSCIMããZenkaku_Hankakuãã§èµ·åããããã«è¨å®ããã¦ãã確èªããã