키보드 리매핑의 필요성

맥을 쓰면서 애플 키보드를 사용하지 않을 경우 국내에서는 참 대체 키보드를 구매하기가 참 애매한 것 같다. 물론 윈도우용 키보드를 연결해서 써도 되지만 기능키 배열이 다른 게 문제가 된다.

맥을 위주로 사용해와서 이미 익숙해져 버려 애플 키보드 배열은 윈도우용 키보드나 한자키가 존재하는 키보드를 사용하는 데 불편함을 느끼게 했다.

그나마 대안으로 찾을 수 있는 건 영어 자판 키보드로

Alt 와 window 키(command로 동작)를 시스템 환경설정에서 바꿔쓰면 되지만 이 또한 뭔가 아쉬웠다. 또 이런 키보드는 너무 한정적이라는 것도 문제였다. 그래서 아예 키보드 리매핑 방법을 찾게 된 이유다.

키보드 리매핑(Remapping)?

각 키보드를 누를 때 입력값을 다르게 설정하는 것으로 예를 들면 키보드 자판을 ‘a’ 를 눌렀을 때 실제 입력은 ‘b’ 가 이루어지도록 하는 방법을 말한다.

KeyRemap4MacBook

기본적으로 상세하게 설정 가능한 한 옵션들이 존재한다. 기존 키를 다른 키로 변경하는 것뿐만 아니라 특정 키를 눌렀을 때 조합키가 동작하도록 설정도 가능하다. 예를 들면 한영전환 키를 누르면 윈도우에서 그러하듯 한영전환이 이루어지도록 command+space 가 입력되도록 하는 방법 등이다. 한국사용자를 위한 설정 역시 따로 있다는 점도 특징이다.
기본설정한국사용자 용 설정
이러한 기능까지만 봐도 아주 유용해 보이는데 무엇보다도 이 프로그램의 가장 파워풀한 점은 바로 사용자 설정이 가능하다는 것이다. Misc & Uninstall 을 눌러 Custom setting 에서 pirvate.xml 을 텍스트 편집이 가능한 편집기로 연다.
아래는 현재 사용하고 있는 개인 설정파일로 스페이스바 좌측 한자키를 좌측 command로 바꾸는 설정이다.



여기에 eventViewer 까지 있다. 내가 누르는 키보드가 어떤 값을 보여주는지, 설정파일에서 어떤 코드로 적용하면 되는지를 확인 가능한 기능으로 아래와 같이 키를 누르면 키값이 자동으로 보인다.


이처럼 Custom setting과 eventViewr를 활용하면 어떤 방식의 키보드도 자신의 손에 익숙하도록 맥에서 리매핑이 가능하다.

Custom setting을 저장한 후 Reload XML을 누르면 본인이 추가한 설정이 목록에 나타난다.

Custom setting 에 사용되는 xml 문법과 예

기본적인 사용방법

모든 코드는 <root> ... </root> 내부에 존재해야 하며 root는 한번만

<item> ... </item> // 하나의 설정옵션이 정의 되는 시작과 끝. 매 설정 옵션마다 반복

<name> ...</name> // 설정 목록에서 보여질 이름

<not> ... </not> // 동작하지 않도록 예외 처리. 아래 예제 코드들 참고.

<only> ... </only> // not 과 반대 기능으로 오로지 해당 환경에서만 동작. 

<identifier>remap.이름</identifier> // 본인이 알아서 설정. 

<autogen> __KeyToKey__ ... </autogen> // 실질적인 설정 코드

[example] A라는 키를 눌렀을 때 B+C로 동작하도록 하는 코드 

<item>
<name>key A to key B+C</name>
<not>생략</not>
<identifier>remap.AtoBandC</identifier>
<autogen> __KeyToKey__ KeyCode::A, KeyCode::C, ModifierFlag::B, Option::NOREPEAT</autogent>
</item>

예시 코드

<!-- 
한영키 -> command+space로 동작. 
조합키를 사용하기 위해서는 ModifierFlag::키코드
가상컴퓨터(페러렐즈 등)와 원격제어시에는 동작하지 않도록 설정
-->
<item>
      <name>Make external keyboard HanEng, Hanja keys work in mac (except virtual machine, RDC)</name>
      <item>
        <name>HanEng Key to Command+Space</name>
        <not>VIRTUALMACHINE, REMOTEDESKTOPCONNECTION</not>
        <identifier>remap.haneng2commandSpace</identifier>
        <autogen>__KeyToKey__ KeyCode::JIS_KANA, KeyCode::SPACE, ModifierFlag::COMMAND_L, Option::NOREPEAT</autogen>
      </item>
<!--
한자키 -> option + enter 로 동작
-->

 <item>
        <name>Hanja Key to Option+Return</name>
        <not>VIRTUALMACHINE, REMOTEDESKTOPCONNECTION</not>
        <identifier>remap.hanja2optionReturn</identifier>
        <autogen>__KeyToKey__ KeyCode::JIS_EISUU, KeyCode::RETURN, ModifierFlag::OPTION_L, Option::NOREPEAT</autogen>
      </item>
<!--
개인적으로 사용중인 스페이스바 좌측 한자키 -> command 동작
-->
    <item>
        <name>Hanja Key to Command_Left</name>
        <identifier>remap.hanja2command_L</identifier>
        <autogen>__KeyToKey__ KeyCode::JIS_EISUU, KeyCode::COMMAND_L, Option::NOREPEAT</autogen>
      </item>

Reference

관련글



신고