본문 바로가기

IT/Linux

win + hjkl 로 방향키 사용하기(windows,ubuntu)

저 처럼 프로그래밍을 하는 사람은 타이핑 도중에 방향키를 사용해야 하는 경향이 많은데,
입력키들과 방향키를 왔다 갔다 하는것은 여간 불편한게 아닙니다. 저 만 그럴지도 모르겠지만...
그래서 U/Linux의 vi 스타일의 hjkl로 방향키를 대신하는 것이 부러울때가 많은데요.

그다지 사용이 많지 않은 win(윈도우)키와 hjkl을 방향키로 조합해서 사용하는 방법을
Window와 Linux(Ubuntu)에서 각각 어떻게 하는지 정리해 봅니다.


Windows System
Windows(윈도우) 계열에서는 AutoHotKey 라는 것을 이용하는 방법입니다.
  http://www.autohotkey.com/

1. AutoHotKey를 다운로드 받아 설치합니다.
2. 아래와 같은 내용으로 작성하여 hjkl.ahk 라는 파일로 저장합니다.
LWin & h::
    Send, {Blind}{Left} ;; Lwin과 h를 방향키 <- 에 매핑한다.
Return

LWin & j::
    Send, {Blind}{Down} ;; Lwin과 h를 방향키 <- 에 매핑한다.
Return
   
LWin & k::
    Send, {Blind}{Up} ;; Lwin과 h를 방향키 <- 에 매핑한다.
Return

LWin & l::
    Send, {Blind}{Right} ;; Lwin과 h를 방향키 -> 에 매핑한다.
Return

3. 저장한 파일을 더블클릭하여 실행합니다.
4. 왼쪽 윈도우(win)과 h,j,k,l 을 눌러 방향키로 사용합니다.
5. 앞서 만든 hjkl.ahk 파일을 시작프로그램에 넣어 두면 매번 실행시키지 않아도 됩니다.
6. Window7에서는 win+L이 화면 잠금으로 먼저 동작하기 때문에 이것은 정상적인 동작이 되지 않습니다.(나중에 추가한 글입니다.)




Linux(Ubuntu) System
Linux에서는 xmodmap을 이용하는 방법입니다.

1. xev 를 실행시켜 윈도우(win)키의 keycode를 찾아 냅니다.
키보드 마다 코드가 다를 수 있기 때문입니다.
제 키보드의 윈도우(win)key는 133이군요.

2. 아래와 같은 내용을 ~/.Xmodmap 파일을 생성합니다.
! for vi-like coursor moving
keycode 133 = Mode_switch
keysym h = h H Left
keysym j = j J Down
keysym k = k K Up
keysym l = l L Right

3.재 로그인하고 ~/.Xmodmap 파일을 읽어들이도록 선택합니다.
4. 왼쪽 윈도우(win)과 h,j,k,l 을 눌러 방향키로 사용합니다.

주의-1)
다만 입력상태가 한글 모드 일때는 동작이 되지 않습니다.
입력기가 nabi일때는 한글 모드일때 동작이 되지 않습니다.
9.10에서 부터 기본 입력기로 셋팅되는 iBus를 사용하면 한글 모드에서도 방향키로 사용이 가능합니다.

주의-2)
윈도우(win)키를 Mode_switch로 사용하게 되면
더이상 win 또는 Super_L과 같은 키의 역할을 하지 못하게 됩니다.

이걸 해결할 수 있는 방법을 아시는 분은 알려 주시면 감사하겠습니다.

참조 사이트 :
http://www.colorless-sight.jp/weblog/2006/09/03/1926.html (일본어)
http://j2k.naver.com/j2k_frame.php/korean/www.colorless-sight.jp/weblog/2006/09/03/1926.html (네이버 번역)


사실 조합키로 윈도우(win)키 보다 "한자"키를 사용하고 싶었습니다.
대부분의 한글 키보드의 경우 왼쪽 엄지 손가락를 가장 손쉽게 사용할 수 있는 위치에 '한자'키가 있기 때문입니다.
왼쪽 엄지손가락이 아니라면 Shift,Ctrl, Alt 키 등과 방향키를 조합할때 손가락이 자유롭지 못합니다.
하지만, '한자','한/영' 키는 Key Release Event를 발생하지 않기 때문에 해당 키를 누른채 다른 키를 누른것을 감지 할 수 없었습니다. 왜 그런지 아직도 모르겠습니다. 이것도 아시는 분이 있다면 알려 주시면 감사하겠습니다.

덧.2010.04.06
Mac  OS X에서의 Vi 모드에 대한 내용은 나중에 따로 포스팅 했으니 참고 하십시요.
http://rainer.tistory.com/49

'IT > Linux' 카테고리의 다른 글

ubuntu를 개발환경으로.. 그 소감.  (3) 2009.10.29
ubuntu desktop, windows를 대신할 수 있을까?  (0) 2009.07.31
AIX에 CVS 설치하기  (0) 2007.10.17