관리 메뉴

Programmer

리눅스에서 5버튼 마우스 사용하기 본문

컴퓨터 관련/리눅스, 유닉스

리눅스에서 5버튼 마우스 사용하기

sunyzero 2018.03.19 18:37

리눅스에서 5버튼 혹은 7버튼 휠 마우스를 사용하는 경우 기본 3버튼(좌우버튼 + 휠버튼)외에 인식되지 않는 경우가 많다. 윈도라면 웹 브라우저에서 앞,뒤 페이지로 이동할 때 마우스 옆에 딸린 2개의 추가 버튼을 엄지로 눌러주면 그만이지만, 리눅스는 이게 안된다. (마우스 모델에 따라서 기본으로 되는 경우도 있는데, 그럴 경우에는 굳이 이 방법을 쓰지 않아도 된다.)


따라서 웹 브라우저에서 앞뒤 페이지로 갈 때 마다 단축키인 <Alt-Right> <Alt-Left>를 대신 쓰는 경우가 많은데, 이건 매우 귀찮다. 그러나 리눅스에서도 몇 가지 작업을 해주면 마우스의 다른 버튼에 기능을 설정할 수 있다.


참고로 이 글은 레드햇 리눅스 계열(CentOS, RHEL, Fedora Linux)에서 작성하였다.

그리고 데비안 계열(Ubuntu, Mint, Debian)은 패키지 이름만 약간 다를뿐 같은 방법을 사용한다.



1. 필요 프로그램 설치

마우스 입력을 알아내는 프로그램과 마우스 키를 가로채는 프로그램을 설치한다.  프로그램 설치는 패키지로 하면 된다. 페도라에서는 패키지 설치를 dnf 명령으로 하지만, CentOS7 이전이라면 아직 yum을 사용할테니 명령어만 yum으로 변경하면 된다.


# dnf -y install xautomation xbindkeys



2. 마우스 버튼 확인

마우스의 추가 버튼의 번호를 알아내기 위해 xinput을 사용한다.

먼저 xinput --list 명령을 내려보면 시스템에 설치된 마우스 장치의 id를 알 수 있다.

아래에서는 id가 10번으로 나타난다.


$ xinput --list

⎡ Virtual core pointer                      id=2    [master pointer  (3)]

⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]

⎜   ↳ USB Keyboard                              id=9    [slave  pointer  (2)]

⎜   ↳ E-Signal/A-One USB Gaming Mouse           id=10   [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)]

    ↳ Power Button                              id=7    [slave  keyboard (3)]

    ↳ USB Keyboard                              id=8    [slave  keyboard (3)]

    ↳ USB Keyboard                              id=12   [slave  keyboard (3)]


마우스 장치가 10번인 것을 알았으니 xinput --test 10 명령어로 마우스 이벤트를 테스트 해보자.

주의할 점은 마우스가 움직이는 이벤트도 감지되니, 마우스를 들고 공중에서 버튼만 눌러보자.

만일 마우스 광센서가 움직임을 포착하는 경우 앞에 motion 이라고 메시지가 나오는데 무시하자.

우린 button press, release 메시지만 보면 된다.


$ xinput --test 10

button press   9 

button release 9 

button press   8 

button release 8 


위 예제는 첫번째로 forward 버튼을 눌렀고, 그 다음에는 backward 버튼을 눌렀다.
각각 9번, 8번 버튼임을 알 수 있다.


3. 환경 설정 생성
이제 vim에디터로 ~/.xbindkeysrc 를 편집해보자.
이 파일은 특정 키 이벤트를 가로채서 다른 명령어로 해석해주는 프로그램인 xbindkeys의 설정 파일이다.

vim ~/.xbindkeysrc

vim 편집기에서 아래의 라인을 넣어두자. 참고로 "xte ... b:9"는 9번 버튼에 <Alt_left + Right>를 눌렀다 떼는 역할을 한다. 원래 이전 페이지 가기가 <Alt-Left>, 다음 페이지 가기가 <Alt-Right>라는 점을 기억하자. 같은 방식으로 다른 버튼에 커스텀 기능을 넣을 수도 있다. (키보드에 특수키가 있다면 기능을 넣을 수도 있다.)

# Go to next page / previous page
"xte 'keydown Alt_L' 'key Right' 'keyup Alt_L'"
  b:9

"xte 'keydown Alt_L' 'key Left' 'keyup Alt_L'"
  b:8


4. 테스트
xbindkeys를 실행해서 설정이 제대로 작동하는지 테스트 해보자.
xbindkeys 실행 후 마우스 앞,뒤 버튼을 눌렀을때 Button press 메시지가 제대로 나오는지 보면 된다.
잘된다면 <Ctrl-C>를 눌러서 종료하자.

$ xbindkeys -n -v
displayName = :1
rc file = /home/sunyzero/.xbindkeysrc
rc guile file = /home/sunyzero/.xbindkeysrc.scm
getting rc guile file /home/sunyzero/.xbindkeysrc.scm.
WARNING : /home/sunyzero/.xbindkeysrc.scm not found or reading not allowed.
5 keys in /home/sunyzero/.xbindkeysrc

min_keycode=8     max_keycode=255 (ie: know keycodes)
"xbindkeys_show"
    Control+Shift + q
"xterm"
    m:0x4 + c:41
    Control + f
"xterm"
    m:0x4 + b:2   (mouse)
"xte 'keydown Alt_L' 'key Right' 'keyup Alt_L'"
    m:0x0 + b:9   (mouse)
"xte 'keydown Alt_L' 'key Left' 'keyup Alt_L'"
    m:0x0 + b:8   (mouse)
starting loop...

Button press !
e.xbutton.button=9
e.xbutton.state=0
"xte 'keydown Alt_L' 'key Right' 'keyup Alt_L'"
    m:0x0 + b:9   (mouse)
got screen 0 for window 1e6
Start program with fork+exec call
^[[1;3CButton release !
e.xbutton.button=9
e.xbutton.state=0
Button press !
e.xbutton.button=8
e.xbutton.state=0
"xte 'keydown Alt_L' 'key Left' 'keyup Alt_L'"
    m:0x0 + b:8   (mouse)
got screen 0 for window 1e6
Start program with fork+exec call
^[[1;3DButton release !
e.xbutton.button=8
e.xbutton.state=0
^C


6. 시작 프로그램에 등록
테스트까지 잘 되었다면, X윈도우 실행시 자동으로 시작되도록 시작 프로그램에 등록하자.
CentOS나 Fedora가 쓰는 GNOME3 데스크탑 환경에서는 다음과 같이 하면 된다.


$ which xbindkeys
/usr/bin/xbindkeys

먼저 xbindkeys의 절대 경로를 알아낸다. /usr/bin/xbindkeys로 나타남을 볼 수 있다.
시작 프로그램 등록은 GNOME3에서는 ~/.config/autostart/ 밑에 설정 파일을 생성하면 된다.
(설정을 도와주는 툴도 있지만 간단하니까 그냥 타이핑 하자.)
vi로 아래 [Desktop Entry]부터 시작해서 10행을 파일 안에 넣어두면 된다.

vi ~/.config/autostart/xbindkeys.desktop

[Desktop Entry]
Name=xbindkeys
Comment=A grabbing keys program for X
TryExec=/usr/bin/xbindkeys
Exec=/usr/bin/xbindkeys
Icon=input-keyboard
Type=Application
Categories=GNOME;GTK;Utility;System;
StartupNotify=true
Keywords=xbindkeys;xmouse;xinput;


이제 설정이 끝났다. 
설정이 잘되었는지 확인하기 위해 X윈도우에서 로그아웃 했다가 다시 로그인 해보자. 그런 뒤에 웹 브라우저를 띄워서 서핑하면서 마우스 버튼을 눌러서 확인해보자.


0 Comments
댓글쓰기 폼