본문 바로가기

프로그래밍/Linux

[Linux] 우분투에서 마우스 버튼 매핑하기

이전 마우스 구입글 : 2011/03/25 - [Harry's life] - [마우스] 로지텍 M705 마우스 구입

로지텍 M705 마우스를 구매하여 우분투가 설치된 노트북에서 사용중입니다.
아래 빨간원 안의 버튼은 아무리 눌러봐도 반응이 없습니다. 그래서 이버튼을 Expose 기능으로 사용해보려합니다.



우선 해당 버튼이 어떤 이벤트 인지 확인이 필요합니다. 터미널을 열어서 xinput 명령을 통해 확인해봅니다.

$ xinput --list
⎡ Virtual core pointer                      id=2 [master pointer  (3)]

⎜   ↳ Virtual core XTEST pointer               id=4 [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                   id=11 [slave  pointer  (2)]                 <----- 마우스입니다.
⎜   ↳ SynPS/2 Synaptics TouchPad           id=13 [slave  pointer  (2)]
⎣ Virtual core keyboard                    id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard             id=5 [slave  keyboard (3)]
    ↳ Power Button                             id=6 [slave  keyboard (3)]
    ↳ Video Bus                                id=7 [slave  keyboard (3)]
    ↳ Power Button                             id=8 [slave  keyboard (3)]
    ↳ Sleep Button                             id=9 [slave  keyboard (3)]
    ↳ Logitech USB Receiver                    id=10 [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard           id=12 [slave  keyboard (3)]

$ xinput --test 11                  <--- "Logitech USB Receiver"가 두개여서 id를 직접 입력합니다. 그리고 버튼을 누릅니다.
button press   10 
button release 10 
버튼 10번으로 할당되어있네요. 버튼이 작동하고, 이벤트도 잘 발생하고 있다는게 확인 됐습니다. :D

이제 이버튼을 눌렀을때 특정 프로그램을 실행 시켜줄수 있다면 이버튼을 특별하게 사용할수 있습니다.
xbindkeys 라는 프로그램이 이러한 기능을 합니다. xte 라는 프로그램은 X-window에 키보드 이벤트를 발생시켜줍니다.

해당 프로그램이 설치 되어있지 않았다면 apt-get을 이용해 아래와 같이 설치를 해야합니다.

$ sudo apt-get install xautomation xbindkeys xbindkeys-config 


설치가 완료 됐다면 xbindkeys를 실행시켜봅니다.

$ xbindkeys

Error : /home/sekim/.xbindkeysrc not found or reading not allowed.

please, create one with 'xbindkeys --defaults > /home/sekim/.xbindkeysrc'.

or, if you want scheme configuration style,

with 'xbindkeys --defaults-guile > /home/sekim/.xbindkeysrc.scm'.

.xbindkeysrc 파일이 없어서 오류가 났다는 겁니다.
 
.xbindkeysrc 파일을 열어 아래처럼 입력합니다.

"xterm"
   b:10 


저장후 xbindkeys 를 아래처럼 실행하여 테스트 해봅시다. 마우스 버튼을 누르면 xterm이 실행 됩니다. :D

$ xbindkeys -n -v

displayName = :0.0

rc file = /home/sekim/.xbindkeysrc

rc guile file = /home/sekim/.xbindkeysrc.scm

getting rc guile file /home/sekim/.xbindkeysrc.scm.

WARNING : /home/sekim/.xbindkeysrc.scm not found or reading not allowed.

2 keys in /home/sekim/.xbindkeysrc


min_keycode=8     max_keycode=255 (ie: know keycodes)

"xterm"

    m:0x0 + b:10   (mouse)


이제 Expose 키(Window Key + e)를 버튼에 매핑하면 완료 되겠습니다.
.xbindkeysrc 을 열고 아래처럼 수정합니다. xte(X Test Event)는 X-window에 Event를 발생시키는 프로그램입니다.
Super_L 은 윈도키를 가르킵니다. 따라서 아래내용은 마우스버튼 10을 누르면 윈도키+e 를 누르는것과 같습니다.

"xte 'keydown Super_L' 'key e' 'keyup Super_L'"
  b:10 


저장후 xbindkeys를 다시 실행해서 테스트 해봅니다.

$ xbindkeys -n -v

displayName = :0.0

rc file = /home/sekim/.xbindkeysrc

rc guile file = /home/sekim/.xbindkeysrc.scm

getting rc guile file /home/sekim/.xbindkeysrc.scm.

WARNING : /home/sekim/.xbindkeysrc.scm not found or reading not allowed.

2 keys in /home/sekim/.xbindkeysrc


min_keycode=8     max_keycode=255 (ie: know keycodes)

"xte 'keydown Super_L' 'key e' 'keyup Super_L'"

    m:0x0 + b:10   (mouse)


이제 버튼이 잘 작동되는걸 확인했습니다. 하지만 xbindkeys가 실행되어야만 작동을 합니다. 이제 부팅시 자동으로 xbindkeys가 실행될수 있도록 작업을해야합니다.

시스템->기본설정->시작응용프로그램에 아래처럼 xbindkeys를 추가하여 자동으로 실행되도록 해줍니다.


이제 우분투에서 M705의 숨겨진 엄지손가락부분의 버튼을 Expose 기능으로 사용가능해졌습니다. :D
응용 하면 여러가지 기능으로 사용가능합니다. :)

참고로 설치했지만 보여드리지못한 xbindkeys-config 를 수행하시면 GUI를 통해 간편하게 설정도 가능합니다.

 

'프로그래밍 > Linux' 카테고리의 다른 글

Ubuntu C Programming 환경 설정  (0) 2011.03.03