Windows 환경에서 개발을 하다가 처음 Xcode를 접하는 개발자의 경우, Mac OS X의 기본 키 바인딩(특정 키 조합과 특정 동작을 대응시킨 설정을 키 바인딩이라고 한다. 예를 들면 'Ctrl + C' -> '복사하기'에 대응하는 하나의 설정이 키 바인딩이다)이 너무 낯설어서 고생을 하는 경우를 왕왕 볼 수 있다. 이럴 경우 키 바인딩을 변경하여 좀 더 편하게 작업을 할 수 있다. 이러한 키 바인딩에는 두 가지 스타일이 있는데, 하나는 Mac OS X 자체의 키 바인딩을 변경하는 것이고, 또 하나는 Xcode만의 키 바인딩을 변경하는 것이다.
Mac OS X의 키 바인딩을 변경하는 방법은 몇 가지가 있는데, 소개해 보자면 :
- DoubleCommand
http://doublecommand.sourceforge.net/
control/option/command 키의 배치를 변경한다든가, home/end 키의 동작을 PC와 비슷하게 한다든가, fn 키를 control 키로 인식시킨다든가(맥북이라면 꽤 편하다!) … 등의 옵션을 제공하는 유틸리티이다. 간단한 형태의 옵션들을 제공하고 있다.
- KeyRemap4MacBook
http://pqrs.org/macosx/keyremap4macbook/
옵션이 좀 더 세세하다. 위 화면에서 보듯 PC 스타일의 Copy & Paste(다시 말하면, 다른 키 배치는 안 건드리고 Copy/Paste만 Command+C/V 대신 Ctrl+C/V를 사용하게 한다), Undo 옵션 등 방대한 키 바인딩 변경 기능을 제공한다. Windows 환경에서 넘어왔다면, ‘For PC Users’ 카테고리 아래 있는 옵션을 살펴보면 될 것이다.
MenuBar 탭 아래에는 설정을 따로 저장할 수 있는데, 여기서 저장된 설정은 태스크바에서 전환이 가능하다. 이를 통해 Windows 스타일 키 바인딩과 원래 Mac OS X 키 바인딩을 손쉽게 전환할 수 있다.
- 직접 고친다
…진심인가? 고친다면 고치는거지 뭐 흠.
Mac OS X의 기본 키 바인딩은 다음 경로에 저장되어 있다 :
/System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict
하지만 기본 바인딩 파일을 막 바꾸면 나중에 피곤해지므로 … Mac OS X를 다뤄봤다면 알겠지만, Mac OS X에서는 시스템 레벨의 설정 내용을 /System/Library에 저장하며, 사용자 레벨의 설정은 ~/Library에 저장한다. 이를 이용해 사용자 레벨의 키 바인딩 설정을 추가할 수 있는데, 사용자 레벨의 키 바인딩 설정 파일은 기본 키 바인딩 설정 파일의 경로와 약간 다르다 (‘~’는 ‘/Users/현재사용자명’을 나타내는 경로) :
~/Library/KeyBindings/DefaultKeyBinding.dict
좀 더 자세한 내용은 외부 링크를 남겨놓도록 하겠다. 참고하시라 :
물론 Xcode만의 키 바인딩도 변경할 수 있다. Xcode의 Preferences 창을 열고(command + ,) Key Bindings 메뉴에서 필요한 설정을 변경하면 된다.
이렇게 해서 저장된 키 바인딩 설정은 다음 경로에 저장된다(Xcode 4.0 버전의 경우) :
~/Library/Developer/Xcode/UserData/KeyBindings
예전 버전의 Xcode에서는 지정할 수 없는 키 바인딩이 몇 가지 있어서 불편했는데(Undo였던가?) 지금 좀 살펴본 결과 Xcode 4.0에서는 거의 모든 키 바인딩을 변경할 수 있는 것으로 보인다. 변경할 수 있는 키 바인딩의 예를 들자면 다음과 같다 :
- Move to Left/Right End of Line : Home/End
- Move to Left/Right End of Line Extending Selection : Shift + Home/End
- Page Up/Down : PageUp/PageDown
- Page Up/Down Extending Selection : Shift + PageUp/PageDown
- Copy, Cut, Paste, Undo : Ctrl + C/X/V/Z
'TechLog' 카테고리의 다른 글
만우절 개발일기 (0) | 2011.04.01 |
---|---|
Syntaxhighlighter 적용 완료 (0) | 2011.04.01 |
iOS 시뮬레이터의 네트워크 인터페이스 (0) | 2011.03.30 |
Cocoa의 NSDictionary 객체에 nil 값 삽입하기 (0) | 2011.03.30 |
Objective-c에서 메시지 송신 방식에 따른 실행 속도 비교 (0) | 2011.03.30 |