Programming/OS, Program, Framework Tip

리눅스/우분투 - xinput 으로 입력 디바이스 키 매핑 바꾸기 (버튼 기능 맞바꾸기, 스왑)

awesometic 2018. 11. 1. 13:30
반응형

xinput

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

이런 식으로 입력 장치의 기능들(버튼들)을 설정할 수 있습니다 :)


참고


반응형