- 0x0000007b
- 2차세계대전
- 3.20해킹
- 4대강
- 502 error
- 53빌딩
- 7840hs
- 88체육관 수영장
- ABI
- abortive close
- abortive shutdown
- AHCI
- akmods
- ALC1220
- alma linux
- alternatives
- AM4 메인보드
- AMD
- amd 7840hs
- amd 그래픽 게임용
- amd 내장 그래픽 최적화
- anonymous file
- API
- apple.com
- APT
- apt-get
- Armagnac
- Asrock
- ASTALIFT
- audacious player
- Today / Yesterday
- /
- Total
Linux Programmer
리눅스에서 5버튼 마우스 사용하기 본문
리눅스에서 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
vim ~/.xbindkeysrc
# 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
$ 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
$ which xbindkeys
/usr/bin/xbindkeys
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;
'컴퓨터 관련 > 리눅스(유닉스) 일반' 카테고리의 다른 글
리눅스 배포판 순위 : distrowatch에 대한 오해 (10) | 2019.12.05 |
---|---|
bash : 기초 : 셸의 역사, 종류 (0) | 2019.10.13 |
파일(file)에 대한 토막글 : 파일이란 무엇인가? (18) | 2019.03.08 |
CentOS7 리눅스 한글 입력기 설정 : ibus-hangul (4) | 2018.05.04 |
리눅스 아재력 or 할배력 셀프 테스트 (40) | 2016.11.21 |
리눅스의 nvidia 드라이버 설치 (45) | 2014.07.06 |
Fedora 15에서 패키지 자동 설치 (0) | 2011.12.19 |
페도라 13의 새로운 기능과 변경점 (0) | 2010.06.28 |