Wyłączanie środkowego przycisku myszy

17

Próbowałem więc przejrzeć różne inne pytania, ale głównie koncentrują się one na wyłączeniu środkowej myszy.

Zasadniczo środkowy przycisk myszy na moim Logitech G500s jest zepsuty i ciągle „klika” losowo, więc marnuje każdą szansę na wykonanie pracy.

Czy jest jakiś sposób, aby to wyłączyć? Lub zmapować to na nic?

Dzięki i przepraszam, jeśli to duplikat.

xinput list wynik:

⎡ Virtual core pointer id=2 [master pointer (3)]
⎜   ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜   ↳ Turtle Beach Turtle Beach PX3 (XBOX) id=8 [slave pointer (2)]
⎜   ↳ Logitech G500s Laser Gaming Mouse id=9 [slave pointer (2)]
⎜   ↳ Logitech G500s Laser Gaming Mouse id=10 [slave pointer (2)]
⎜   ↳ Razer Razer DeathStalker id=12 [slave pointer (2)]
⎜   ↳ Razer Razer DeathStalker id=13 [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)]
    ↳ Razer Razer DeathStalker id=11 [slave keyboard (3)]
Tom Hamilton Stubber
źródło
Wykonaj to polecenie xinput list | grep 'id='i opublikuj dane wyjściowe.
Helio
W przypadku tej myszy istnieją dwa identyfikatory urządzenia dla tej myszy. Po uruchomieniu testu xinput 9 identyfikator mojego środkowego przycisku myszy to 2
Tom Hamilton Stubber

Odpowiedzi:

24

Wykonaj te polecenia:

xinput set-button-map 9 1 0 3
xinput set-button-map 10 1 0 3

Wyjaśnienie (przekazane przez @Yehosef ):

Pierwsza liczba to identyfikator wskaźnika (często masz tylko jeden, w tym przypadku były dwa, 9 i 10).

Kolejne liczby to to, co robisz za pomocą pierwszego, drugiego i trzeciego (tj. Lewego, środkowego, prawego) przycisku myszy. „1 0 3” mówi, że lewy przycisk powinien zrobić lewy przycisk (akcja 1), środkowy przycisk nie powinien nic zrobić, a prawy przycisk powinien wykonać kliknięcie prawym przyciskiem (akcja 3). Jeśli chcesz, aby środkowy przycisk wykonał również lewy przycisk myszy, możesz użyć „1 1 3”. Jeśli chcesz zmienić prawą i lewą akcję, możesz użyć „3 0 1”. Aby uzyskać więcej informacji, zobacz https://wiki.ubuntu.com/X/Config/Input .

Helio
źródło
Wielkie dzięki, próba sprawdzenia tego była bardzo frustrująca.
Tom Hamilton Stubber
1
Dzięki! Dla tych, którzy zastanawiają się - 9/10 to wejściowy identyfikator myszy, a 1 0 3 to odwzorowania dla pierwszego, drugiego i trzeciego przycisku myszy. Jeśli chcesz, aby wszystkie przyciski
robiły
@Yehosef: Dzięki! Nie wyjaśniłem, co się dzieje, gdy OP uruchomił polecenia. Proszę utwórz nową szczegółową odpowiedź, wyślij mi ping, a ja poprę. To interesujące wyjaśnienie.
Helio
@Helio Nie mam innej odpowiedzi - po prostu więcej wyjaśnień dla zainteresowanych. Być może chcesz edytować swoją odpowiedź, aby uwzględnić te informacje, które możesz. Myślałem o edycji twojej odpowiedzi - ale generalnie nie lubię, gdy ludzie dodają dodatkowe szczegóły do ​​moich odpowiedzi - więc powstrzymałem się :)
Yehosef
2
Jak więc ustalić pierwszą liczbę. Biegam xinput list | grep 'id='i szukam rzeczy, które wyglądają najbardziej jak moja mysz / touchpad? Czy istnieje jakiś ostateczny sposób stwierdzenia, czy jest właściwy?
Kvothe
3

Poniższe instrukcje oparte są na informacjach z Ubuntu Wiki (przewiń w dół do tytułu „Przykład: Wyłączanie wklejania środkowego przycisku myszy na kółku myszy”).

Najpierw określ identyfikator wskaźnika, wyświetlając listę urządzeń wejściowych:

xinput list | grep 'id='

I poszukaj linii, która zawiera nazwę twojego wskaźnika, powinien też być id urządzenia, zaraz po „id =”. Na przykład identyfikator tego urządzenia to 10:

Lenovo ThinkPad Compact USB Keyboard with TrackPoint    id=10   [slave  pointer  (2)]

Następnie pobierz aktualną mapę przycisków tego urządzenia (będę używać identyfikatora mojego urządzenia, które wynosi 10):

xinput get-button-map 10

Wynik:

1 2 3 4 5 6 7 8 9

Jest to mapowanie przycisków kursora na akcje, gdzie liczba reprezentuje kod akcji, a pozycja - przycisk.

Interesuje nas druga mapa - numer 2 odpowiada akcji „Środkowy przycisk kliknięcia”, a jej pozycja - do rzeczywistego środkowego przycisku.

Aby wyłączyć środkowy przycisk wyzwalający dowolną akcję, użyłbym polecenia xinput set-button-mapz identyfikatorem urządzenia i zaktualizowanej mapy (nowy kod akcji to 0 - brak akcji). Nie trzeba umieszczać całej mapy - mapa, aż zainteresowany przycisk wystarczy (reszta po prostu nie zostanie zaktualizowana):

 xinput set-button-map 10 1 0

Otóż ​​to.

ego
źródło
To działało w przypadku mojego touchpada na Lenovo Thinkpad T580 z Ubuntu 18.04
Russell England
0

set-button-mapwyłącza funkcję środkowego kliknięcia. Aby emulować kliknięcie środkowym przyciskiem lewy + prawy (aby wkleić i otworzyć kartę itp. Za pomocą myszy), ale wyłączyć kliknięcia kółka myszy, możesz załatać libinput:

--- a/src/evdev.c   2019-09-22 17:15:13.498880044 +0300
+++ a/src/evdev.c   2019-09-22 17:15:18.062860221 +0300
@@ -1861,6 +1861,8 @@
    /* Logitech Marble Mouse claims to have a middle button */
    if (device->model_flags & EVDEV_MODEL_LOGITECH_MARBLE_MOUSE)
        libevdev_disable_event_code(device->evdev, EV_KEY, BTN_MIDDLE);
+
+   libevdev_disable_event_code(device->evdev, EV_KEY, BTN_MIDDLE);
 }

 static void
  • mkdir deb; cd deb; apt source libinput; sudo apt build-dep libinput
  • zapisz powyższą łatkę jako libinput-1.XX.Y/debian/patches/middle.diff
  • dodaj middle.diffdodebian/patches/series
  • dpkg-buildpackage -us -uc -b
  • sudo dpkg -i ../libinput10_*.deb
  • uruchom ponownie Xorg lub ponownie uruchom komputer

I użyj xinput listi, xinput set-prop 11 "libinput Middle Emulation Enabled" 1aby włączyć lewą + prawą emulację. 11jest numerem urządzenia, z xinput listktórego można dodać polecenie set-prop ~/.xstartup.

Lub, aby uniknąć przebudowy, użyj pliku .quirks libinput (niesprawdzone):

[My Mouse]
MatchUdevType=mouse
AttrEventCodeDisable=BTN_MIDDLE;
patraulea
źródło