모두의 리모트를 완전히 Go언어로 다시 만들고 기존 구조랑 전혀 다르게 수정을 하면서 기존 모두의 리모트를 1년 넘게 사용해오면서 가장 불편하게 느낀 점이 한영키가 먹지 않는다는 점입니다. 모두의 리모트에서 사용중인 TightVNC뿐 아니라 대부분의 VNC계열의 RDP 프로그램들에서 발생하는 문제이긴 한데요..
TightVNC 2.8.59-gpl 버전 소스코드를 받아서 한영키 관련된 부분을 수정하고 아무래도 멀티플랫폼에 맞춰 개발된 프로그램이라 소스코드들이 UTF-8인코딩으로 되어 있어서 Visual Studio 에서 윈도용으로 컴파일시에 뜨는 이런저런 Warning 과 몇가지 define 관련 충돌나는 부분들과 함께 한영키 처리에 대한 부분을 수정하였습니다.
이미 한글에 대한 여러가지 부분이 적용이 되어 있음에도 정작 공식 사이트에서 배포하는 바이너리 실행파일에는 관련 부분들이 제외되어 있는점과 한글과 관련된 define 이나 각종 이런저런 것들이 Japanese .. 라는 주석 밑에 달려 있는게 심히 부울편 하긴 하군요 ..
소스코드는 위 깃헙에서 받으시면 되겠구요..
수정된 파일은 Util 프로젝트의 Keymap.cpp , rfb 프로젝트의 RfbKeySym.cpp 2개의 파일입니다.
Keymap.cpp 의 include 단에 #define XK_KOREAN 을 추가 하였구요
#include "Keymap.h"
#include "util/winhdr.h"
#include "win-system/InputInjector.h"
#include "win-system/Keyboard.h"
#include <crtdbg.h>
#define XK_KOREAN // pirogom
#define XK_MISCELLANY
#define XK_CYRILLICKeymap.cpp 파일의 상단에 const KS2VKEntry 상수 테이블의 맨 마지막에 //pirogom 주석 참고하시구요
const VK2KSEntry 에도 맨 아래에 한글키 관련 처리를 추가 하였습니다.
// Table for translating X11 keysyms to auxiliary windows virtual key codes.
// FIXME: maybe place this into file as binary? such definitions make my eyes wet.
const KS2VKEntry SERVER_AUXILIARY_TRANSLATE_TABLE[] = {
{ XK_Shift_L, VK_LSHIFT },
{ XK_Shift_R, VK_RSHIFT },
{ XK_Shift_L, VK_SHIFT },
...
...
{ XK_Menu, VK_APPS },
{ XK_Hangul, VK_HANGUL } // pirogom
};
const VK2KSEntry VIEWER_AUXILIARY_TRANSLATE_TABLE[] = {
{ VK_LSHIFT, XK_Shift_L },
{ VK_RSHIFT, XK_Shift_R },
{ VK_SHIFT, XK_Shift_L },
{ VK_LCONTROL, XK_Control_L },
...
...
{ VK_RWIN, XK_Super_R },
{ VK_APPS, XK_Menu },
{ VK_HANGUL, XK_Hangul } // pirogom
};rfb 폴더 안의 RfbKeySym.cpp 파일에서 RfbJKeySym::processKeyEvent 을 찾으시고 함수의 상단에
if (virtKey == 229) {
virtKey = 21;
}프로젝트에 sln 파일이 2개 나오는데요 .. 괜히 VS 2017 이나 VS 2019 에서 솔루션 파일 업그레이드 시켜서 어케 해보시려 하지 마시구요. Visual Studio 2015 설치 하시고 tightvnc2015.sln 파일을 사용해서 컴파일 하십시요. XP 관련 코드들이 다수 포함되어 있어서 .. 최신 Visual Studio 에서 컴파일 하시려면 SDK 부터 시작해서 머리 터집니다.
시간 좀 걸리더라도 Visual Studio 2015 버전을 설치해서 컴파일 하시기 바랍니다.
한영키 처리 관련 부분만 수정을 본 부분이고 관련 처리부분은 이전부터 수집해둔 자료를 근간하구요 한영키 관련 패치법은 구글링만 해도 이미 작성해두신 블로거들이 계십니다. tightvnc 소스와 관련해서는 질문받지 않습니다.
이상입니다.