개인적으로 맥북 키보드의 기본 키맵은 꽤나 괜찮다고 생각한다. 하지만.. 키 배열이 다른 외장키보드를 연결할 경우 매우 불편해진다.
이를테면 보통 사용되는 한글 키보드의 경우 스페이스 키 왼쪽에는 CONTROL-COMMAND-OPTION 순서로 키가 매핑되는데, 이게 맥북 기본 키보드의 (FN-)CONTROL-OPTION-COMMAND와 다른 점과, 맥북 키보드의 FN키를 외장 키보드에서 누를 방법이 없는 점이 그렇다(Page up/down이야 직접 키를 누르면 된다고 하자, 화면 밝기 조절이나 볼륨 조절 등은?).
이를 해결할 방법을 찾아보니 거의 모든 답변이 키를 리매핑하는 소프트웨어를 이용하는 것이었는데, 직접 해보니 확실히 편리해지긴 했지만, 그 과정에서 약간의 삽질을 했기 때문에 -_-; 다시 헤매는 일이 없도록 내가 사용한 설정법을 간단하게 적어본다.
1. Karabiner 다운로드 및 설치(https://pqrs.org/osx/karabiner/index.html.en).
2. private.xml 위치 찾기
3. 단순한 키 변환 문법(자세히:https://pqrs.org/osx/karabiner/xml.html.en#autogen-syntax)
키를 다른 키로 바꾸기:
<autogen>__KeyToKey__ KeyCode::CONTROL_L, KeyCode::OPTION_L</autogen>
(왼쪽 CONTROL키를 왼쪽 ALT키로 바꾼다)
키를 다른 키 조합으로 바꾸기:
<autogen>__KeyToKey__
KeyCode::OPTION_R,
KeyCode::SPACE, ModifierFlag::COMMAND_L
</autogen>
(오른쪽 OPTION키를 왼쪽 COMMAND + 스페이스 키로 바꾼다)
키 조합을 다른 키로 바꾸기:
<!-- LCTRL+LSHIFT+ARROW(R/L) ==> VOLUME UP/DOWN -->
<autogen>__KeyToConsumer__
KeyCode::CURSOR_RIGHT, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L,
ConsumerKeyCode::VOLUME_UP
</autogen>
<autogen>__KeyToConsumer__
KeyCode::CURSOR_LEFT, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L,
ConsumerKeyCode::VOLUME_DOWN
</autogen>
*3개 이상의 키 조합의 경우에는 pipe(|)를 이용한다.
키 조합을 다른 키 조합으로 바꾸기:
<autogen>__KeyToKey__
KeyCode::SPACE, ModifierFlag::SHIFT_L,
KeyCode::SPACE, ModifierFlag::COMMAND_L
</autogen>
4. 디바이스 한정 문법
외장 키보드의 키 리맵이 내장 키보드에까지 영향을 주면 불편하기 때문에 키 리맵을 외장 키보드로 입력하는 경우만으로 제한하면 편리하다.
우선 메뉴 바의 사과마크를 클릭, "이 Mac에 관해서"를 선택한 다음, "시스템 리포트"를 눌러 외장 키보드를 찾는다.
<devicevendordef>
<vendorname>LEOPOLD</vendorname>
<vendorid>0x0853</vendorid>
</devicevendordef>
<deviceproductdef>
<productname>FC660C</productname>
<productid>0x0134</productid>
</deviceproductdef>
그 다음엔 위와 같이 디바이스와 제조사의 정보를 정의한 다음, 아이템에 device_only를 추가하면 된다.
<item>
<name>FC660C</name>
<identifier>private.fc660c</identifier>
<device_only>DeviceVendor::LEOPOLD,DeviceProduct::FC660C</device_only>
... (키 리맵 정보들)
</item>
5. 예시
<?xml version="1.0"?>
<root>
<devicevendordef>
<vendorname>LEOPOLD</vendorname>
<vendorid>0x0853</vendorid>
</devicevendordef>
<devicevendordef>
<vendorname>APPLE</vendorname>
<vendorid>0x05ac</vendorid>
</devicevendordef>
<deviceproductdef>
<productname>FC660C</productname>
<productid>0x0134</productid>
</deviceproductdef>
<deviceproductdef>
<productname>AppleInternal</productname>
<productid>0x0273</productid>
</deviceproductdef>
<item>
<name>FC660C</name>
<identifier>private.fc660c</identifier>
<device_only>DeviceVendor::LEOPOLD,DeviceProduct::FC660C</device_only>
<!-- CTRL+SHIFT+ARROW ==> VOLUME UP/DOWN -->
<autogen>__KeyToConsumer__
KeyCode::CURSOR_RIGHT, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L,
ConsumerKeyCode::VOLUME_UP
</autogen>
<autogen>__KeyToConsumer__
KeyCode::CURSOR_LEFT, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L,
ConsumerKeyCode::VOLUME_DOWN
</autogen>
<autogen>__KeyToKey__
KeyCode::OPTION_R,
KeyCode::SPACE, ModifierFlag::COMMAND_L
</autogen><!-- Right Option ==> Kor./Eng. Change -->
<autogen>__KeyToKey__ KeyCode::CONTROL_L, KeyCode::OPTION_L</autogen>
<autogen>__KeyToKey__ KeyCode::OPTION_L, KeyCode::COMMAND_L</autogen>
<autogen>__KeyToKey__ KeyCode::COMMAND_L, KeyCode::CONTROL_L</autogen>
</item>
<item>
<name>Apple::Alt.To.Lang.Chng</name>
<identifier>private.AppleLangChng</identifier>
<device_only>DeviceVendor::APPLE,DeviceProduct::AppleInternal</device_only>
<autogen>__KeyToKey__
KeyCode::OPTION_R,
KeyCode::SPACE, ModifierFlag::COMMAND_L
</autogen><!-- Right Option ==> Kor./Eng. Change -->
</item>
</root>
*여담인데, 문법이 include를 지원하기 때문에 이 설정 역시 dotfile과 함께 git으로 관리해도 편할 것 같다.
'Computer' 카테고리의 다른 글
Strikers 1945 II AI (2) | 2016.03.24 |
---|---|
Windows 8에서 TOEIC 성적표 PDF로 뽑기 (5) | 2016.03.16 |
PacMan for Terminal (0) | 2015.06.16 |
SQL Injection (0) | 2015.05.18 |
Windows8 / Windows Server 2012에서 Apache+MySQL 속도 문제 해결 (0) | 2015.05.07 |