Wayland에서 추가 마우스 버튼을 두 번째 가운데 클릭으로 구성

Wayland에서 추가 마우스 버튼을 두 번째 가운데 클릭으로 구성

저는 10버튼 마우스(Logitech M705)를 사용합니다. X11에서는 etc/X11/xorg.conf.d.

Wayland에서는 더 이상 작동하지 않습니다. 내 조사에 따르면 내가 뭔가를 해야 한다는 사실이 밝혀졌습니다 libinput. 흔한 질문일 줄 알았는데 어디서도 답을 찾을 수가 없네요.

누군가 마우스 버튼을 다시 매핑하는 방법이나 이 작업을 수행할 수 없는 이유를 설명할 수 있습니까?

답변1

나는 이틀 동안 인터넷 검색을 하고, 내가 찾은 수십 가지 방법을 테스트하고, Wayland에서 마우스 버튼을 다시 매핑하는 데 어려움을 겪었습니다...

그래서 제가 배운 것을 공유합니다:

Logitech M570 트랙볼에는 2개의 추가 버튼이 있습니다. libinput에서 BTN_SIDE 및 BTN_EXTRA를 생성합니다.

[root@centos8 ~]# libinput debug-events --device /dev/input/event21
-event21  DEVICE_ADDED     Logitech M570                     
      seat0 default group1  cap:p left scroll-nat scroll-button
 event21  POINTER_BUTTON   +16.93s      BTN_EXTRA (276) pressed, seat count: 1
 event21  POINTER_BUTTON   +17.09s      BTN_EXTRA (276) released, seat count: 0
 event21  POINTER_BUTTON   +17.89s      BTN_SIDE (275) pressed, seat count: 1
 event21  POINTER_BUTTON   +17.99s      BTN_SIDE (275) released, seat count: 0

evtest를 사용하여 확인할 수 있으며 버튼 스캔 코드도 표시됩니다.

[root@centos8 ~]# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
...
/dev/input/event21: Logitech M570
Select the device event number [0-21]: 21
Event: time 1589974995.415405, -------------- SYN_REPORT ------------
Event: time 1589974996.969613, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90004
Event: time 1589974996.969613, type 1 (EV_KEY), code 275 (BTN_SIDE), value 1
Event: time 1589975000.165574, -------------- SYN_REPORT ------------
Event: time 1589975000.611570, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90005
Event: time 1589975000.611570, type 1 (EV_KEY), code 276 (BTN_EXTRA), value 1
Event: time 1589975002.369616, -------------- SYN_REPORT ------------

이제 스캔 코드를 원하는 버튼에 다시 매핑하기 위해 udev hwdb에 대한 규칙 파일을 만듭니다 /etc/udev/hwdb.d/70-mouse-remap.hwdb. 예를 들면 다음과 같습니다.

# remap buttons on Logitech M570 trackball
evdev:name:Logitech M570:*
 ID_INPUT_KEY=1
 KEYBOARD_KEY_90004=btn_middle
 KEYBOARD_KEY_90005=btn_middle

응, 그 버튼은진짜키보드 키 스캔 코드를 마우스 가운데 버튼에 다시 매핑합니다. 너무 일반적인 장치 식별자는 evdev:input:*다른 장치를 방해할 수 있으므로 사용하지 마십시오. 예를 들어 내 Thinkpad T490에서는 마이크 음소거 버튼(Fn+F4)이 작동하지 않습니다.

파일을 저장하고 hwdb를 다시 검색하세요.

[root@centos8 ~]# systemd-hwdb update

또한 변경 사항을 확인하려면 USB에서 마우스(이 경우 무선 수신기)를 물리적으로 분리해야 했습니다. 다시 연결하고 규칙이 적용되었는지 확인하세요.

[root@centos8 ~]# udevadm info /dev/input/event21
P: /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.4/1-4.4:1.2/0003:046D:C52B.0097/0003:046D:1028.0098/input/input84/event21
...
E: KEYBOARD_KEY_90004=btn_middle
E: KEYBOARD_KEY_90005=btn_middle

이제 libinput을 다시 테스트할 수 있으며 BTN_MIDDLE 이벤트를 생성하는 두 버튼이 모두 표시되어야 합니다.

[root@centos8 ~]#  libinput debug-events --device /dev/input/event21
-event21  DEVICE_ADDED     Logitech M570                     seat0 default group1  cap:kp left scroll-nat scroll-button
 event21  POINTER_BUTTON    +1.45s  BTN_MIDDLE (274) pressed, seat count: 1
 event21  POINTER_BUTTON    +1.59s  BTN_MIDDLE (274) released, seat count: 0
 event21  POINTER_BUTTON    +2.20s  BTN_MIDDLE (274) pressed, seat count: 1    
 event21  POINTER_BUTTON    +2.28s  BTN_MIDDLE (274) released, seat count: 0

모든 것이 제대로 작동하면 gnome-terminal과 같은 Wayland 기본 애플리케이션에 두 개의 추가 버튼을 붙여 넣을 수 있습니다.

즐기다.

답변2

이제 이를 수행하는 그래픽 방법이 있습니다. 모든 명령줄 솔루션이 손상될 것입니다. 내가 찾은 GUI 프로그램은 Key Mapper라고 하며 X11 및 Wayland에서 작동합니다. 루트 권한을 사용하고 모든 문제를 해결합니다.

  • 설치 프로그램(예: deb 패키지)풀어 주다GitHub의 페이지(또는 아래 기사에서 언급한 것처럼 아치 기반 배포판을 위한 AUR 패키지도 있거나 pip를 사용할 수 있음)
  • 키매퍼 열기
  • 원하는 마우스를 선택하세요.
  • "여기를 클릭하세요"를 클릭하세요
  • 변경하려는 버튼을 클릭합니다. "키 누르기"가 멈춘 경우 먼저 하단 팝업의 지침에 따라 "기본값 복원"을 수행하십시오. 이전에 매핑된 변경 사항이 적용되며 "기본값 복원" 버튼은 삭제되지 않습니다. 그들을) .
  • 버튼이 승인되면 버튼 이름이 왼쪽 열에 표시됩니다. 그런 다음 오른쪽 열을 클릭하고 버튼으로 수행할 작업을 입력하기 시작할 수 있습니다. 예를 들어, 이전 단계에서 클릭한 Logitech Marble 마우스 측면 버튼을 중간 클릭으로 지정하려면 "middle"을 입력한 다음 "BTN_MIDDLE"을 선택합니다.
  • "적용"을 클릭하면 즉시 적용됩니다!

나는 이것을 검색하여 찾았습니다: 마우스 버튼 매핑 gui ubuntu

내가 찾은 기사에는 이에 대한 자세한 내용이 설명되어 있습니다.새로운 키매퍼 GUI(X11 및 Wayland 지원)를 사용하여 Linux에서 키보드 및 마우스 버튼을 다시 매핑합니다.2021년 2월 23일 Linux 반란에 대하여

답변3

Wayland를 실행하는 경우 다음과 같이 버튼을 다시 매핑할 수 있습니다.

  1. xev | grep button마우스 클릭 이벤트를 기록하고 창을 클릭하여 이벤트 수를 얻으려면 실행하세요 . 내 경우에는 가운데 버튼은 다음과 같습니다.

    state 0x10, button 2, same_screen YES
    

    나는 그것을 다음에 매핑하고 싶습니다 :

    state 0x10, button 13, same_screen YES
    
  2. 그런 다음 실행하여 xinput --list포인팅 장치를 찾으십시오. 내 것은 다음과 같습니다.

    Logitech Performance MX  id=9  [slave pointer  (2)]
    
  3. xinput get-button-map 9반품:

    1 2 3 4 ... 20
    
  4. xinput은 버튼 매핑을 설정합니다.

    $ xinput set-button-map 9  1 13 3 4 .. 12 2 14 .. 20
    

노트:번호를 9반환된 번호로 바꿉니다.id=

해당 키의 동작이 정의되면 이벤트가 매핑됩니다. 그렇지 않다면 문제가 조금 다릅니다. Wayland TBH에서는 이벤트에 대해 명령을 실행하는 방법을 찾지 못했고(Xorg에서는 매우 쉽습니다 xbindkeys) 키 누르기 및 마우스 이벤트 동작을 완전히 사용자 정의했습니다. 나는 Wayland가 더 많은 노력을 하고 있다고 믿습니다.안전한이 동작을 비활성화합니다.

그럼에도 불구하고 여전히 Xorg로 쉽게 전환하고 그 기능을 즐길 수 있는 기회가 있습니다.

답변4

hwdb udev 규칙을 수정해 보세요. 이렇게 하면 마우스 버튼이 키보드 키(예: Launch8/F16)로 등록되고 모든 프로그램, wayland 또는 기타 프로그램의 기능이 비활성화됩니다.

# /usr/lib/udev/hwdb.d/71-mouse-local.hwdb

evdev:input:*
 KEYBOARD_KEY_90004=key_f16
 KEYBOARD_KEY_90005=key_f17

그런 다음 마우스를 루트로 연결 해제했다 systemd-hwdb update; udevadm trigger가 다시 연결하십시오.

추가 온전성 검사: sudo udevadm info /dev/input/by-path/*-usb-*-mouse | grep -A3 -P3 KEYBOARD_KEY또는 이와 같이 쿼리합니다. systemd-hwdb query "evdev:input:v046dp406a*ID 추출에 대한 자세한 내용은 소스 코드를 참조하세요.

원천:https://yulistic.gitlab.io/2017/12/linux-keymapping-with-udev-hwdb/

관련 정보