저는 Debian 9(일명 "Stretch") x86_64를 사용하고 있습니다.
$ uname -a:
Linux mypc 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
내 장치 Logitech MU-007에서 추가 버튼을 매핑하려고 합니다.
$ lsusb | grep Logitech
Bus 001 Device 023: ID 046d:c069 Logitech, Inc. M-U0007 [Corded Mouse M500]
x 입력 장치:
$ xinput | grep Logitech
⎜ ↳ Logitech USB Laser Mouse id=10 [slave pointer (2)]
xinput test 10
마우스 왼쪽에 있는 두 개의 추가 버튼을 테스트하여 8과 9를 반환합니다.
$ xinput -version
xinput version 1.6.2
간단한 것을 시도했습니다.
xinput set-button-map 10 8 2 3
또는
$ xmodmap -e "pointer = 9 2 3"
Warning: Only changing the first 3 of 12 buttons.
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 116 (X_SetPointerMapping)
Value in failed request: 0x9
Serial number of failed request: 9
Current serial number in output stream:
왼쪽 버튼은 전혀 작동하지 않으며 왼쪽 클릭처럼 선택할 수 없습니다.
또한 왼쪽 클릭과 추가 버튼을 왼쪽 클릭으로 유지하고 싶습니다. 이 명령이 아무것도 선택하지 않는
이유를 아시나요 ?xinput
편집하다
마침내:
id=$(xinput list | grep -oP 'Logitech USB Laser Mouse.*id=\K\d+')
xinput set-button-map $id 1 2 3 4 5 6 7 1 1 10 11 12
답변1
이 명령이 첫 번째 마우스 버튼의 기능을 물리적 버튼 #8에 매핑한다고 가정합니다.
xinput set-button-map 10 8 2 3
이 가정은 올바르지 않습니다. 실제로 이 명령은 정반대로 작동합니다. 실제로 이벤트를 "버튼 8"의 다른 인스턴스로 전송하도록 물리적 버튼 #1을 설정하면 "첫 번째 마우스 버튼" 동작을 효과적으로 사용할 수 없게 됩니다.
물리적 버튼 #8을 추가 "첫 번째 마우스 버튼"으로 사용하려면 다음을 수행해야 합니다.
xinput set-button-map 10 1 2 3 4 5 6 7 1 9 10 11 12
기본 매핑은 입니다 1 2 3 4 5 6 7 8 9 10 11 12
. 따라서 물리적 버튼 #8이 첫 번째 마우스 버튼과 동일하게 작동하도록 하려면 8
매핑의 숫자를 다른 숫자로 바꾸세요 1
.
특정 버튼을 완전히 비활성화하려면 0
해당 물리적 버튼에 해당하는 슬롯에서 사용하세요.
버튼 4와 5는 일반적으로 마우스 휠 위/아래 작업에 해당합니다.
답변2
더 나은 해결책을 찾았습니다.숫자패드는 이렇게 보관할 수 있어요다른 솔루션으로는 불가능합니다.
전환할 수 있는 키보드 키가 있습니다.마우스 버튼 모드, 이런 식으로 왼쪽 클릭에는 F1, 가운데 클릭에는 F2, 오른쪽 클릭에는 F3을 사용합니다. 그런 다음 특수 키를 사용하여 키보드로 다시 전환할 수 있습니다.
특수 키는 이 스크립트를 트리거합니다(WM 키보드 단축키 기본 설정을 확인하세요).
#!/bin/bash
if [[ ! -s ~/.button-state ]]; then
echo 0 > ~/.button-state
fi
state=$(<~/.button-state)
if ((state==0)); then
xkbset m
yad --notification xxx &
echo 1 > ~/.button-state
elif ((state==1)); then
xkbset -m
pkill -f 'yad --notification xxx
echo 0 > ~/.button-state
else
echo >&2 "weird error"
exit 1
fi
마우스 제스처가 활성화되면 시스템 트레이에 다음 아이콘이 나타납니다.