블로그 이전으로 아래 링크로 변경되었습니다.
간만에 시너지 최신 버전을 받으러 갔더니,
Donation 해야 최신 바이너리를 다운로드 받을 수 있도록 바뀌었네요.
당연히 시너지 개발자들도 정당한 노동의 댓가를 받아야 한다고 생각합니다.
근데... 한영키 전환 문제가 아직도 해결이 되었는지도 모르는데...
(제가 말하는 문제는 윈도 서버 - 리눅스 클라이언트 상황입니다)
그래서 일단 구입하는 건 미루고 github의 프로젝트를 가보니,
아직도 해결이 안된거 같습니다.
왜? 이렇게 오래된 문제가 아직도 해결이 되지 않는 것인가?
그래서 귀찮음을 무릎쓰고 좀 더 근본적인 원인을 찾아보기로 했습니다.
윈도우에서 지원하는 한글 키보드 레이아웃은 크게 2가지가 있습니다.
나누는 기준은 바로 "한글, 한자 변환 전용키가 있느냐 없느냐?" 입니다.
이 키가 있다면 103/106키 키보드 없다면 101/104키 키보드가 됩니다.
그래서 103/106키 키보드에서는 일반적으로 한영키가 VK_HANGUL 키로 매핑이되고,
한자키가 VK_HANJA 로 매핑이 됩니다.
하지만 한영/한자키가 없는 키보드의 경우,(대표적으로 노트북이 그렇습니다)
오른쪽 Alt 키를 VK_HANGUL키로 오른쪽 Control 키를 VK_HANJA키로 매핑시킵니다.
문제가 되는 부분은 아래와 같이 일본어 키보드의 VK_KANA 와 VK_KANJI 라는 키가
한국어 키보드의 VK_HANGUL 과 VK_HANJA 와 동일한 키코드 값을 가지고 있습니다.
시너지의 경우 VK_XXXXX 키를 1:1 로 리눅스의 X Key Symbol Definitions에 매핑시켜서 사용하는데,
X Key Symbol Definitions서는 일어/영문 변환키의 값과 한글/영문 변환키의 값이 다릅니다.
(Kana : 0xEF26, Hangul : 0xEF31, Kanzi: 0xEF2A, Hanja: 0xEF34)
그래서 윈도우 시너지 서버에서는 VK_HANGUL 을 리눅스 시너지 클라이언트로 0xEF26 을 넘기게 되고,
이 값은 리눅스의 한국어 키보드에서는 무시됩니다.
따라서 윈도우의 한영키가 리눅스로 제대로 넘어가기 위해서는,
윈도우용 시너지에서 로케일 등을 체크하여 동적으로 변환된 테이블 값을 전달해 줘야 합니다.
(관련해서 Pull 요청을 하였는데 그 친구들이 Accept 해줄지도 모르겠고,
이게 다음 release 에 포함될 지는 더더욱 알수 없는 상황이죠..)
이 부분은 다양한 환경에서 테스트가 되어야 할 것 같습니다.
윈도우 시너지 서버의 키보드 레이아웃이 101/104키인 경우와 103/106키인 경우의 한영,한자,Alt_R,Control_R 키가
리눅스 시너지 클라이언트의 키보드 레이아웃이 한국어인 경우와 한국어 104키인 경우...
그리고 리눅스의 경우는 다양한 버전과 입력기 상황이 있기 때문에 여기에 대한 테스트가 되어야 할 것 같습니다.
어쨋든 결론은 이 문제가 수정되지 않는 한, 한영키 문제는 계속 저를 괴롭힐 것 같고
결국 윈도우용은 자체 빌드를 할 수 밖에 없을 것 같습니다.
(최신 버전은 Apple 에서 관리하는 라이브러리가 필요한데, 전 Apple ID 가 없는 관계로
친구에게 부탁해서 SDK 를 받아야 했습니다..)
그리고 어짜피 리눅스용은 그냥 편하게 받아서 써야 하니, 조만간 시너지 구입을 할 예정입니다..
혹시 이 문제에 대해서 같이 테스트 해 주실분이 계시면 리플을 달아주세요.
테스트 결과는 아래와 내용을 같이 적어 주시면 좋을꺼 같습니다.
- 윈도우용 서버 버전
- 윈도우용 키보드 레이아웃 (윈7 기준으로 제어판 - 키보드 - 하드웨어 탭에서 확인이 가능합니다)
- 리눅스용 클라이언트 버전
- 리눅스용 배포폰
- 리눅스용 입력기 및 사용하시는 한영전환 키
- 윈도우 -> 리눅스로 시너지로 넘어간 경우 한영키, 한자키, 오른쪽 Alt 키, 오른쪽 Control 키 동장 상태
저의 수정사항이 반영된 최신 stable 버전인 1.7.5버전은 아래 링크에서 다운로드가 가능합니다.
(원하는 버전이 있다면 그 버전도 빌드해서 배포할 수 있도록 하겠습니다)
64bit 버전:
synergy-v1.7.5-windows_x64-hangulkey_patch.msi
32bit 버전:
synergy-v1.7.5-windows_x86-hangulkey_patch.msi
리눅스용 nightly 빌드 버전은 아래 링크에서 다운로드가 가능합니다.
http://synergy-project.org/nightly?filter=synergy-pr5196-fix-korean-and-japanese-keycode-beta-c68ebe4
(더 이상 해당 pull request의 nightly build 다운로드가 제공되지 않네요)
한글 패치 소스 코드는 아래에서 확인 하실 수 있습니다.
https://github.com/ommokazza/synergy
혹시나 제가 파악한 원인이 잘못 되었다거나 하는 부분이 있다면 언제든 리플달아 주세요.
-----------------------------------------------------------------------------------------------
(2016.1.28 추가)
1.7.5 버전에서는 윈도우 서버 - 리눅스 클라이언트 상황에서
화면잠금이 되어 비밀번호를 입력해야 하는 경우 문제가 발생하네요.
그래서 synergy 1.5.1 버전을 다시 추가합니다.
synergy-1.5.1-Windows-x64.msi
synergy-1.5.1-Windows-x86.msi
-----------------------------------------------------------------------------------------------
(2016.4.11 추가)
시너지 다운로드 파일 중 1.7.5 버전은 배포를 안하네요..
1.7.6 RC3 버전 추가. 하였습니다.
추가로 리눅스 클라이언트 환경에서 화면잠금 상태에서 마우스 커서가 안 넘어간다면
/etc/lightdm/lightdm.conf 파일에 아래 두 줄 추가해 주시면 됩니다.
[SeatDefaults]
greeter-setup-script=/usr/bin/synergyc --name [Clinet Name] [Sever IP]
------------------------------------------------------------------------------------------------
(2016.4.20 추가)
당분간 마지막 업데이트가 되지 않을까 생각됩니다.
github 쪽 소스에서 불필요한 브랜치는 다 날려버리고
필요한 브랜치만 생성해 두었습니다.
제가 수정한 내용을 정리해 보면 아래와 같이 3가지 입니다.
1. 윈도우 시너지 서버에서 한글 103/106키보드의 한영/한자키 동작 안하는 문제 수정
(이것저것 해 보다가 그냥 단순하게 수정했습니다)
2. 윈도우 시너지 서버에서 한글 103/106키보드의 한영/한자키가 KeyUp 이벤트가 키보드에서 안오기 때문에
클라이언트 쪽에서 계속 키가 눌린것으로 인식되는 현상 수정.. (이 코드는 좀 work-around 성이 강합니다..)
3. 윈도우 시너지 서버에서 여러개의 IME 를 사용할 경우,
예를 들면 한국어IME, 일본어IME를 모두 사용하는 경우 한영/한자 전용키 여부에 관계없이
Alt 키가 함께 눌린것으로 인식하는 문제 수정
입니다.
아래 첨부 중 위의 것은 1번 수정사항만 적용한 것이고
아래의 것은 3번까지 모든 수정사항을 반영한 것입니다.
synergy-v1.7.6-stable-x64_hangul_key_only_patch.msi
synergy-v1.7.6-stable-x86_hangul_key_only_patch.msi
synergy-v1.7.6-stable-x64_hangul_all_patch.msi
synergy-v1.7.6-stable-x86_hangul_all_patch.msi
그리고 리눅스 클라이언트 환경에서 lightdm.conf 를 수정하는 방법을 이용할 때,
웬지 자꾸 에러가 나는거 같아서...
잠금 화면일 때 마우스가 안 넘어 가는 경우나 클라이언트 화면에 마우스/키보드가 잠긴 경우를 위해
HotKey를 지정해서 화면을 넘어가는 방법을 사용하는 것도 괜찮은 듯 합니다.
------------------------------------------------------------------------------------------------
(관련글)
2014/10/08 - Synergy 1.5.1 한글키 패치 & 빌드 방법 (2016.2.1 수정)