언젠가 이 이야기에 대해 더 자세한 글을 써서 제 블로그에 올릴 생각입니다. 흥미로운 이야기라서 일단 개요나마 대충 적어봅니다.
MS는 윈도의 보안 수준을 높이기 위해, 윈도 비스타부터 커널모드(아래에서 설명)에서 동작하는 모든 프로그램이 인증(디지털 서명)을 받도록 강제합니다.
그래서 윈도 비스타부터는 디지털 서명이 없는데 커널모드에서 동작하는 소프트웨어는 정상적으로 작동하지 않는다고 합니다.
근데 개인 개발자들이 이 디지털 서명을 취득하는 건 사실상 불가능에 가깝습니다.
여기서 설명하는 이야기는 일본의 개인 개발자가 만든 한 오픈소스 소프트웨어가 이것 때문에 문제가 생기자, 그 프로그램을 사용하던 다른 개발자가 아예 회사를 만들어 인증서를 취득한 사례입니다.
키보드 입력을 임의로 가로채서 변형하는 것을 수행해주는 소프트웨어들이 몇 종류 있죠.
오토핫키가 그 중 하나이구요.
그런데 알아보니까(일본쪽 블로그 http://d.hatena.ne.jp/LM-7/20090614/1244980470 를 통해 학습한 내용입니다), 윈도 운영체제 안에서 이런 조작을 수행할 수 있는 방법이 3종류가 있다고 합니다.
저수준부터 고수준까지 따지면(컴퓨터 공학에서는 하드웨어나 운영체제 심층부에 가까울수록 저수준[low level], 반대로 향할 수록 고수준[high level]이라고 표현)
필터 드라이버(윈도의 커널 모드), low level 훅, 메시지 훅(이상 2개는 유저 모드)
이렇게 3종류더군요.
저수준일수록 훨씬 커스터마이징이 쉬워집니다(자유도 증가). 고수준일수록 그 밑바탕(운영체제의 설정 등)의 통제를 받기 때문에 자유도가 떨어지게 됩니다.
오토핫키는 유저 모드에 속하는 low level 훅을 사용합니다.
오토핫키의 경우, 어지간한 키 커스터마이징은 잘 됩니다만, 간혹 같은 키에 여러 가상 키코드를 할당시키는 상황에서는 정상적으로 작동하지 않습니다. 윈도 내장 일본어 입력기(Japanese IME)에서 그런 일이 발생합니다. 여기서는 이에 대한 자세한 설명을 생략합니다.
그 원인은 오토핫키가 동작하는 레벨(low level 훅)이 입력기(IME)보다 높기 때문인 것으로 사료됩니다.
일본의 키보드 커스터마이징 프로그램으로 Mado Tsukai no Yuutsu(窓使いの憂鬱, http://mayu.sourceforge.net/ , '창[윈도 운영체제] 쓰기의 우울'), 약칭 Mayu가 있습니다. 무료 오픈소스 프로그램입니다.
이 프로그램은 윈도용 키보드 커스터마이징 프로그램으로서 가장 저수준인 필터 드라이버로 동작합니다. 그래서 자유도가 오토핫키보다 훨씬 높습니다.
게임에서 쓰는 키 매크로 이런 용도로는 오토핫키가 나을지 모르겠는데, 아예 완전히 새로운 키보드 자판 배열을 만들어보겠다든가, 키배치를 극단적으로 변경해보겠다든가 하는 이런 시도를 할 때에 적합합니다.
윈도 XP에서는 이 프로그램이 아무런 문제가 없이 잘 동작합니다(단 32비트판 윈도에서만). 그런데 윈도 비스타 이후로 벽에 부딪쳤습니다.
MS가 윈도의 보안을 높이기 위해, 커널 모드에서 동작하는 프로그램은 디지털 서명이 있어야 동작시킬 수 있게 되었습니다. 이 서명의 인증서는 누가 발급하느냐 하면 물론 MS입니다. MS가 검사를 해서 "이 프로그램을 커널 모드에서 동작시켜도 안전하다" 확인을 해주는 겁니다.
근데 이렇게 인증 받는 것을 개인 프로그래머가 하는 것은 불가능합니다. 결국 Mayu의 개발자는 더 이상의 Mayu 개발을 중단합니다.
Mayu를 통해 키보드 커스터마이징을 했던 일본 유저들이 이런 조치 때문에 문제가 생겼습니다. 이 문제 때문에 발목이 잡혀서 비스타 이후 버전의 윈도로 업그레이드하지 못하거나, 아니면 기존에 Mayu로 했던 커스터마이징을 버리고 OS 업그레이드를 하든가 했어야 했죠.
그래서 다른 프로그래머들이 대안을 내놓습니다. Mayu의 기존 사용자 커스터마이징 스크립트를 유지하면서 이후 버전의 윈도에서 동작 가능하게 하는 방법을 말이죠.
한 가지는 Mayu의 자유도를 조금 포기하는 대신에 윈도 비스타 이후에서도 동작 가능한 low level 훅으로 소스코드를 수정하는 것(이 방법으로 나온 파생 프로그램 이름이 yamy http://sourceforge.jp/projects/yamy/),
다른 하나는 MS의 디지털 서명을 취득하기 위해 아예 회사를 차리는 것. 그래서 기존 Mayu 프로그램을 다소 수정하여 기능 제약이 있는 셰어웨어로 내놓아서 판매를 하고, 그렇게 모은 금액으로 회사를 설립했습니다. 그리고 결국 2009년 10월 중순에 디지털 서명을 취득하는데 성공했습니다(이 수정 프로그램명은 Nodoka[のどか]입니다. http://www.appletkan.com/nodoka.htm).
정말 인간 승리라고밖에는 표현을 못하겠네요. ㄷㄷ
저런 삽질이 벌어진 배경은 일본어 문자의 문제라고 보긴 어렵다고 봅니다. 그보다는 지나지게 PC 키보드와 IME를 설계한 일본 업계의 문제로 봐야 한다고 생각합니다. 윈도의 경우 일본어 입력기 시스템이 지나치게 복잡한 면이 있습니다.
그에 비해 맥 일본어 입력기, 일본 키보드는 그에 비해 훨씬 심플합니다. 일본어에서도 충분히 간단한 키보드 디자인, 간단한 입력 방식을 만들 수 있다는 걸 보여주는 사례입니다.