Skonfiguruj dodatkowe przyciski myszy w Wayland

10

Używam myszy z 10 przyciskami (Logitech M705). Pod X11 byłem w stanie skonfigurować jeden z dodatkowych przycisków, aby zachowywał się jak drugie kliknięcie środkowym przyciskiem, modyfikując pliki etc/X11/xorg.conf.d.

W Wayland to już nie działa. Moje badania pokazują, że muszę coś z tym zrobić libinput. Myślałem, że będzie to powszechny problem, ale nigdzie nie mogę znaleźć odpowiedzi.

Czy ktoś może wyjaśnić, jak zmienić przypisanie przycisków myszy lub wyjaśnić, dlaczego nie można tego zrobić?

Kyle
źródło
Używam Waylanda przez jakiś czas i jak dotąd nie mogłem znaleźć sposobu na mapowanie przycisków.
paulodiovani

Odpowiedzi:

6

Ponowne mapowanie przycisków, jeśli korzystasz z Wayland, można wykonać w następujący sposób:

  1. Uruchom, xev | grep buttonaby zarejestrować zdarzenia kliknięcia myszą i uzyskać numer zdarzenia, np. Klikając w oknie. W moim przypadku środkowy przycisk to:

    state 0x10, button 2, same_screen YES
    

    i chcę to zmapować:

    state 0x10, button 13, same_screen YES
    
  2. Następnie uruchom xinput --listi znajdź swoje urządzenie wskaźnikowe, moje to:

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

    1 2 3 4 ... 20
    
  4. xinput-set-button-map:

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

UWAGA: zamień numer 9na numer zwracany przezid=

A jeśli zdefiniowane jest zachowanie tego klucza, twoje wydarzenie jest mapowane. Jeśli nie, to trochę inna sprawa. Pod Wayland TBH nie znalazłem sposobu na wykonanie polecenia na zdarzeniu (co jest dość łatwe w przypadku Xorga xbindkeys) i dlatego w pełni dostosowuję zachowanie zdarzenia klucza i myszy. Wierzę, że Wayland stara się być bardziej bezpieczny i wyłącza to zachowanie .

W każdym razie nadal możesz dość łatwo przełączyć się na Xorg i cieszyć się funkcjonalnością.

CermakM
źródło
Pracował dla mnie, ale jak sprawić, by zmiana była trwała? Wygląda na to, że muszę biegać xinput set-button-mapdla każdej nowej sesji Wayland ...
mgalgs
1
Tak, musisz go uruchomić za każdym razem. Aby to zautomatyzować, możesz umieścić to w skrypcie i utworzyć plik usługi lub umieścić go w folderze init, który jest uruchamiany przy starcie odpowiadającym twojej dystrybucji (w systemie operacyjnym opartym na systemd, który byłby /etc/rc.d/init .d /)
CermakM
Możesz umieścić opcję w plikach xconf: Option "ButtonMapping" "1 2 3 ..."
le hollandais volant
To zmienia tylko sterownik wejściowy xorg, nie wszystkie aplikacje skład natywnie użycie Wayland, jak Gnome Shell czy Nautilus
Ray Foss
3

Zrobiłem mały skrypt powłoki + plik systemowy, który nazywam wayland-mouse-mapper .

fragment mathportillo / wayland-mouse-mapper

Mały skrypt do mapowania przycisków myszy na naciśnięcia klawiszy w Wayland.

Zmusiłem się do użycia dodatkowych przycisków myszy do przydatnych rzeczy. Jest przetestowany i działa z Logitech MX Master 2S na Fedorze 27 za pomocą Gnome, i działa również na mojej starej Logitech Performance MX. Prawdopodobnie działa na dowolnej myszy Wayland i Any Logitech (lub dowolnej myszy, jeśli edytujesz mapowania), ponieważ żadna inna metoda (xdotools, xbindkeys itp.) Wydaje się nie działać.

Działa poprzez odczyt z zdarzeń debugowania libinput i wyzwalanie kluczowych zdarzeń za pomocą evemu w zależności od rozpoznanego przycisku z rozpoznanego urządzenia.

guziki

Są to tylko ustawienia domyślne, które można dostosować na początku skryptu mousemapper.sh.

  • Do przodu: Przejdź do obszaru roboczego powyżej ( Super+ Page up)
  • Wstecz: Przejdź do obszaru roboczego poniżej ( Super+ Page down)
Matheus Portillo
źródło
0

Spróbuj zmodyfikować reguły udev hwdb. To rejestruje przyciski myszy jako klawisze klawiatury takie jak Launch8 / F16 i wyłącza ich funkcjonalność we wszystkich programach, Wayland lub w inny sposób.

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

evdev:input:*
 KEYBOARD_KEY_90004=key_f16
 KEYBOARD_KEY_90005=key_f17

następnie jako root systemd-hwdb update; udevadm triggeri odłącz mysz, a następnie podłącz ją ponownie.

Dodatkowa kontrola poczytalności: sudo udevadm info /dev/input/by-path/*-usb-*-mouse | grep -A3 -P3 KEYBOARD_KEYlub zapytaj o to jako taki, systemd-hwdb query "evdev:input:v046dp406a*zobacz źródło, aby uzyskać szczegółowe informacje na temat pobierania identyfikatora.

Źródło: https://yulistic.gitlab.io/2017/12/linux-keymapping-with-udev-hwdb/

Ray Foss
źródło