Vim 사용자를 위한 키맵 설정 – xcape, xmodmap

우분투에서 여러 프로그램을 vim 키 바인딩으로 사용하고 있다. 키보드를 많이 사용하는 편이라 자주 사용하는 키들을 편한 위치로 옮겨서 사용하고 있다. 세 가지 키의 위치와 기능을 변경하는 방법을 정리했다. 만약에 맥을 사용한다면 Karabiner-Elements 을 사용하길 바란다.

1. Control Key

[F] 키와 [J] 키에 손가락을 올리고 자세를 잡았을 때 손목을 움직이지 않고 [Ctrl] 키를 누르기는 쉽지 않다. [Ctrl] 키는 터미널이나 vim에서 신나게 눌러야 하므로 [CapsLock] 키와 바꾸어 사용한다. 손바닥으로 [Ctrl] 키를 누르는 방법을 시도 했지만 키보드 받침대와 같이 사용하려니 왼손의 자세가 불편해서 포기했다.

$ gnome-tweak-tool

위의 설정 툴 입력 항목에서 CapsLock 키를 Ctrl로 사용하기를 선택하면 된다. 이 툴 사용이 불편하다면 스크립트를 실행하여 키를 변경할 수 있다. 전체 스크립트가 사용하기가 번거롭다면 아래 코드를 사용할 수 있다.

$ xmodmap -e ‘keycode 66 = Control_L’
$ xmodmap -e ‘clear Lock’
$ xmodmap -e ‘add Control = Control_L’

다만, CapsLock의 keycode 값이 66 번인지 확인해야 한다. 키 코드는 xev 프로그램으로 확인할 수 있다.

2. Escape Key

ESC 키 또한 [F][J] 키에서 너무 멀리 떨어져 있다. Function 키보다 더 멀리 있는 느낌이다. 이 키는 vim 에디터가 아니더라도 터미널이나 여러 응용 프로그램에서 자주 사용된다. 아래 명령으로 [Ctrl] 키에 Escape Key 기능을 적용할 수 있다.

$ xcape -e “Control_L=Escape”

이제 다른 키와 함께 사용하면 [Ctrl] 키로 동작하고 홀로 눌렀다가 띄면 [Esc] 키로 동작한다. 이미 [CapsLock] 키에 Control Key 기능을 적용했다면 [CapsLock] 키 하나로 [Esc][Ctrl] 키를 같이 사용할 수 있다. 단, xcape 프로그램이 필요하다. 아래 방법으로 설치할 수 있다.

$ sudo apt-get install x11proto-core-dev
$ sudo apt-get install libxtst-dev
$ git clone https://github.com/alols/xcape.git
$ cd xcape
$ make
$ sudo make install

3. Shift Key

Vim 에디터에서 많은 명령은 대소문자를 구분한다. 그리고 한글을 입력하려면 여러 번 [Shift] 키를 눌러야 한다. [Space]키는 [Shift] 키 보다 길고 엄지로 누를 수 있어서 훨씬 편하다. 아래 명령으로 [Space] 키에 [Shift] 키를 할당한다. 단, xmodmap 프로그램과 xcape 프로그램이 필요하다.

xmodmap -e ‘keycode 255=space’
xmodmap -e ‘keycode 65=Shift_L’
xcape -e “#65=space”
일부 키캡을 제거한 키보드
일부 키캡을 제거한 키보드

[Space] 키를 짧게 눌렀다 띄면 공백이 입력 되고 다른 키와 동시에 누르면 [Shift] 키로 동작한다. [Space] 키를 누르고 있으면 연속으로 공백이 입력되는 기능은 포기했다. 연속으로 공백을 입력할 때는 여러 번 [Space] 키를 누르겠다. [Shift] 키 대신 [Space] 를 사용하는 방법은 약간의 연습이 필요하지만 익숙해지면 손가락과 손목이 훨씬 덜 아프다. [Ctrl+Shift]로 시작하는 키를 누를 때 정말 편하다. 실제로는 [CapsLock] 키와 [Space] 키를 누르면 되기 때문이다.

키보드의 Escape, 왼쪽 아래 Shift, Control 키의 키캡을 뽑고 사용한다. 익숙해지기 위한 노력이기도 하고 사실 왼쪽 아래 Shift와 Control은 없는 것이 더 편하다. 오른쪽 [Shift] 키는 브라우저에서 다음 탭으로 이동하는 용도로 사용하고 있다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.