Knowledge Base/Linux

하나의 입력 장치로 두 대의 컴퓨터를 사용... synergy

Woos™ 2010. 10. 1. 11:17

http://sakuragis.egloos.com/4053195


연말과 새해 연휴 동안에 회사 노트북을 집으로 가져올 일이 있었다. 그런데 평소에도 항상 회사 노트북을 쓰면서 키보드의 키감이나 키의 배치가 마음에 들지 않았는데, 집에 가져오다 보니 노트북이 두대가 되어 버렸다. 그래서 가능하면 내 개인 노트북의 키보드와 마우스를 사용해서 회사 노트북까지 제어하고 싶었다.

 그러다가 찾은 것이 synergy이다. 사실 찾았다가 보단 예전에 본 적이 있어서 언젠가 활용할 때가 있겠다 싶어서 기억해 두고 있었다.  하드웨어적으로 이와 비슷한 역할을 하는 것이 KVM(Keyboard Video Mouse)라는 물건인데, 이 KVM은 하나의 키보드, 모니터, 마우스를 가지고 여러대의 컴퓨터를 제어할 수 있는 장치이다.

 그러면 synergy는 KVM과 비교해서 무엇이 다른가 하면 V가 빠진 KM이라고 할 수 있겠다. 즉, 키보드와 마우스는 하나로 쓰지만, 화면을 각각의 컴퓨터에 연결 된 것을 쓴다. 때문에 얼핏봤을 때는 마치 하나의 컴퓨터를 듀얼 모니터로 쓰는 듯 보이기도 한다. 일단 다음의 동영상 데모들을 보고나서 얘기를 계속하자.


왼쪽은 MS Windows, 오른쪽은 Linux.


왼쪽은 MS Windows, 오른쪽은 Linux.


왼쪽은 MS Windows인지 Linux인지 확실치 않음, 오른쪽은 MacOS로 보임.

 위의 세가지 동영상 모두 synergy를 이용하여 서로 다른 OS 쓰는 컴퓨터 간의 키보드와 마우스를 공유하는 것을 보여준다. 바로 이 점이 큰 흥미를 가지게 된 요소이다. 나는 주로 집에서는 리눅스를 쓰고, 회사에서는 업무 때문에 MS Windows를 쓰다. 그래서 이 synergy를 쓰면 내 노트북에는 리눅스를 띄워놓고, 회사 노트북에는 MS Windows를 띄워둔 채로도 키보드와 마우스의 공유가 가능하다. 게다가 클립보드까지 공유되기 때문에 간단한 작업에서는 마치 한대의 컴퓨터를 쓰는 착각까지 하게 된다.

 단지 이 synergy를 소개하고자 이 글은 쓴 것은 아니고, synergy를 사용할 때 한영키 입력을 제대로 인식하지 못하는 버그가 있다. 바로 이 현상 때문에 이 포스팅을 하게 되었다.

 이 버그의 해결방법은 클라이언트에서의 키코드 처리 부분을 수정 해주는 데 있다. 서버에서 클라이언트로 보내는 한글 키 코드 값을 클라이언트의 프로그램에서 한글 키로 인식하도록 되어야 한다. 예를 든다면, 서버 컴퓨터의 한글 키의 키코드가 113이라면 클라이언트 synergy 프로그램에서는 서버에서 보내오는 한글 키의 키코드 값을 113으로 인식 해야 한다. 즉, 서버 프로그램은 패치(소스 수정)가 전혀 필요없고, 클라이언트 프로그램에 패치(소스 수정)가 되어야 한다. 인터넷에 'synergy 한글패치'로 검색을 해보면 한글패치에 관한 자료가 많이 나오는데, 검색해서 나오는 패치가 된 프로그램은 내가 쓰는 환경에서는 정상적으로 동작하지 않았다. 때문에 내가 쓰는 환경에서 맞추어서 해당 키코드 부분을 고쳐서 다시 컴파일 하였다.

 내가 쓰는 환경은 우분투 리눅스가 설치된 에버라텍 4200에 synergy 서버(synergys)를 실행하고, MS Windows가 설치된 Compaq nx6320에서 synergy 클라이언트(synergyc)로 우분투 리눅스에 접속해서 사용한다. 우분투 리눅스가 깔린 컴퓨터의 한영 키의 키 코드는 113이고, 한자키의 키코드는 109이다.

 아래의 패치는 이 환경(한영 키 코드 113, 한자 키 코드 109)에 맞춰진 패치이다. 이 패치는 두 노트북이 전부 MS Windows 환경일 때(서버는 에버라텍 4200)도 정상적으로 동작했다. 서버가 되는 우분투 리눅스의 synergy 프로그램은 우분투 저장소에서 제공되는 패키지를 그대로 쓰면 된다. 다시 한번 말하지만 이 한영키 문제는 키코드를 받아들이는 클라이언트의 문제이지, 서버의 문제가 아니다.
아래의 파일은 위의 패치를 적용해서 컴파일 한 MS Windows용 synergy 1.3.1 버전이다.
 혹 시나 MS Windows용을 컴파일을 하는 방법에 대해 얘기하자면 소스내에 포함된 synergy.dsw 파일을 Visual C++에서 열어서 컴파일 하면 된다. 소스의 용량이 필요 이상으로 크다고 생각되면 Win32 Debug 용으로 컴파일 한 것이 아닌지 확인하면 된다. Win32 Release 용으로 컴파일 하면 Debug용으로 컴파일 하는 것 보다 용량이 줄어든다.

 synergy의 설정에 관해서는 아래의 기사를 참고하길 바란다.
 아래의 사진에서 왼쪽이 서버가 되는 리눅스 노트북이고, 오른쪽이 클라이언트가 되는 MS Windows 이다. 사진으로는 알 수 없지만 왼쪽의 노트북의 키보드와 마우스로 오른쪽의 노트북까지 제어한다.