xinput은 X11 데스크탑 기반 리눅스에서 입력장치들을 설정할 수 있게 해주는 유틸리티입니다. 우분투 등이 X11 데스크탑 환경을 사용해요.
입력장치의 각 기능(마우스 왼쪽 클릭, 키보드 컨트롤 키 등등)들 모두 다 접근할 수 있어서, 특정 키는 아예 삭제한다던가 두 개의 키 기능을 맞바꾸는 게 가능해요.
여기선 xinput 사용법을 알려드리기 위해 TG 버티컬 마우스의 앞, 뒤 키를 바꿔보겠습니다.
--list 옵션을 통해 모든 입력 장치를 보실 수 있어요. 간혹 실제론 하나의 장치지만 두 개가 뜨는 경우가 있긴 합니다만 상관 없어요.
xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ CATEX TECH. 87EC-S id=9 [slave pointer (2)]
⎜ ↳ Compx 2.4G Receiver id=11 [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)]
↳ CATEX TECH. 87EC-S id=8 [slave keyboard (3)]
↳ Compx 2.4G Receiver id=10 [slave keyboard (3)]
↳ CATEX TECH. 87EC-S id=12 [slave keyboard (3)]
↳ Compx 2.4G Receiver id=13 [slave keyboard (3)]
TG 버티컬 마우스는 왠지, pointer 에서 Compx 2.4G Receiver 일 것 같네요. id를 기억해둡니다.
11번 입력장치의 모든 가능한 입력을 봅시다.
xinput --get-button-map 11
1 2 3 4 5 6 7 8 9
1~9까지 총 9가지 입력이 있다고 해요. 아마 포인터 움직임, 왼, 오른쪽 클릭, 앞, 뒤 버튼, ... 등등이겠죠. 모두 알 필욘 없어요. 전 앞, 뒤 키를 바꾸고 싶으니 그 키가 뭔지 알아볼게요.
xinput --test 11
button press 9
button release 9
button press 8
button release 8
8, 9가 앞, 뒤 키네요. 이 둘이 지금 제 기준에선 반대로 기능하고 있어요. 둘을 뒤바꿔줘야 합니다.
이전에 출력했던 버튼 맵에서 8와 9의 위치를 바꿔줍니다. 명령어의 첫 번째 인자가 입력 장치 id이고, 두번째부턴 새로운 버튼 맵입니다.
xinput --set-button-map 11 1 2 3 4 5 6 7 9 8
다시 확인해볼게요.
xinput --get-button-map 11
1 2 3 4 5 6 7 9 8
8과 9가 제대로 바뀌어 있네요. 실제로 사용하면서 제대로 적용되었는지 확인해봅니다.
바꾼 버튼 맵을 부팅할 때 마다 적용하기 위해 ~/.profile 맨 뒤에 아래 명령어처럼 추가해줍니다. ~/.bashrc여도 상관 없습니다. id가 바뀔 수 있으니 xinput --list 명령어로 id를 다시 찾고, 그 아이디에 새로운 버튼 맵을 설정하는 명령어입니다.
# TG vertical mouse key remapping
xinput --set-button-map `xinput --list | grep -E "Compx 2.4G Receiver.*pointer" | awk '{print substr($6, 4)}'` 1 2 3 4 5 6 7 9 8
이런 식으로 입력 장치의 기능들(버튼들)을 설정할 수 있습니다 :)
- https://wiki.mbirth.de/know-how/software/linux/remapping-mouse-buttons.html
- https://askubuntu.com/questions/405073/making-the-xinput-set-button-map-changes-permanent
'Programming > OS, Program, Framework Tip' 카테고리의 다른 글
hostnamectl - 호스트명 (hostname) 관리 도구 (0) | 2019.01.03 |
---|---|
inxi - 시스템 정보 출력 툴 (0) | 2018.12.31 |
ip, ss (iproute2 utils) - 더 빠르고 정확한 ifconfig, netstat 대체 명령어 (3) | 2018.05.25 |
nmap - 포트/IP 스캔 등 네트워크 스캔 도구 (0) | 2018.05.24 |