Wyłącz mysz (nie touchpad!) W Xorg podczas bezczynności

17

Jestem zapalonym użytkownikiem klawiatury, ale wciąż potrzebuję myszy od czasu do czasu. Aby zminimalizować ruch ręki, pod klawiaturą znajduje się mysz. (Na marginesie, używanie myszy w ten sposób jest dla mojej dłoni bardziej naturalne).

Obecnie używam funkcji uporządkowania, aby ukryć wskaźnik, gdy nie używam myszy. Niestety, czasami piszę go podczas pisania, co powoduje ponowne pojawienie się wskaźnika. Czasami przesuwa to wskaźnik nad innym oknem, co z kolei odwraca uwagę od mojego bieżącego okna. (Używam niechlujnego fokusa i zmiana tego nie jest opcją.)

Teraz szukam możliwości, aby nie tylko ukryć wskaźnik po pewnym czasie bezczynności, ale całkowicie wyłączyć mysz. Kliknięcie dowolnego przycisku myszy lub użycie kółka myszy powinno następnie ponownie włączyć mysz.

Igor
źródło

Odpowiedzi:

16

Pierwszą rzeczą, którą musimy osiągnąć, jest wyłączenie myszy, ale tylko w X. Do tego moglibyśmy użyć xinput.

Musimy odkryć urządzenia wejściowe podłączone do komputera (do serwera X):

pbm@tauri ~ $ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ A4Tech USB Mouse                          id=10   [slave  pointer  (2)]
⎜   ↳ Macintosh mouse button emulation          id=11   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
     [...]

Urządzenie, które musimy wykorzystać to A4Tech USB Mousez id=10. Następnie musimy sprawdzić właściwości tego urządzenia:

pbm@tauri ~ $ xinput list-props "A4Tech USB Mouse"
Device 'A4Tech USB Mouse':
       Device Enabled (121):   1
       [....]

Aby wyłączyć urządzenie, musimy zmienić właściwość Device Enabled:

xinput set-prop DEV PROP STATE
xinput set-prop "A4Tech USB Mouse" "Device Enabled" 0

Żeby to włączyć:

xinput set-prop "A4Tech USB Mouse" "Device Enabled" 1

Następnie wykonaj to automatycznie ...;) W tym przykładzie wyłączymy mysz za pomocą skrótu klawiaturowego i włączymy ją, naciskając lewy + prawy przycisk myszy.

W tym celu moglibyśmy użyć actkbd - demona skrótów klawiszowych (ale nie tylko), który działa poza serwerem X.

Po pierwsze musimy utworzyć pusty plik konfiguracyjny dla actkbd: touch /etc/actkbd.conf. Następną rzeczą jest wykrycie urządzeń podłączonych do komputera:

pbm@tauri ~ $ cat /proc/bus/input/devices 
I: Bus=0003 Vendor=046d Product=c312 Version=0110
N: Name="BTC USB Multimedia Keyboard"
P: Phys=usb-0000:00:1d.0-1.6/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6:1.0/input/input6
U: Uniq=
H: Handlers=kbd event3 
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7

I: Bus=0003 Vendor=09da Product=000a Version=0110
N: Name="A4Tech USB Mouse"
P: Phys=usb-0000:00:1d.0-1.5/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/input/input8
U: Uniq=
H: Handlers=mouse1 event5 
B: EV=17
B: KEY=ff0000 0 0 0 0
B: REL=343
B: MSC=10

[...]

W tej części najciekawsze w użyciu są nazwy i funkcje obsługi klawiatury i myszy.

Najpierw zajmujemy się wyłączaniem myszy za pomocą skrótu klawiaturowego, dlatego musimy odkryć identyfikatory kluczy:

pbm@tauri ~ $ sudo actkbd -s -d /dev/input/event3
Keys: 29+41+42 //we need to press keys that will turn off mouse, 29+41+42 is Ctrl + Shift + `

Kiedy wiemy, jakie są identyfikatory kluczy, musimy umieścić je w pliku config ( /etc/actkbd.conf):

29+41+42:::sudo -u pbm DISPLAY=:0 xinput set-prop "A4Tech USB Mouse" "Device Enabled" 0

Aby to przetestować, musimy uruchomić actkbdw trybie demona:

pbm@tauri ~ $ sudo actkbd -d /dev/input/event3 -D

W ten sam sposób musimy obsługiwać zdarzenie „włącz”:

  1. Sprawdź procedury obsługi myszy
  2. Sprawdź kody klawiszy lewego i prawego przycisku myszy za pomocą actkbd
  3. Połóż to actkbd.conf
  4. Uruchom demona actkbd, aby monitorować urządzenie wejściowe myszy

Uruchomione demony mogą być realizowane jako skrypt inicjujący lub skrypt autorun w środowisku.

Aby automatycznie wyłączyć mysz, możemy monitorować urządzenie wejściowe ( cat /dev/input/event5) i wyłączać je, gdy nie ma wejścia ...

Mam nadzieję, że moje krótkie wprowadzenie pomoże ci ...;)

pbm
źródło
Dzięki za podpowiedź do actkbd! Po opublikowaniu pytania zastanawiałem się, jak go użyć xinput, ale nie dowiedziałem się, jak ponownie włączyć mysz, naciskając przyciski myszy.
Igor,
To bardzo dobrze napisana odpowiedź.
pjc50
Dzięki za te informacje, szczególnie za podpowiedź z atkkbd
Zamiast używać opcji --set-prop wraz z właściwością „Device Enabled / Disabled”, można również użyć opcji --enable i --disable, np. Xinput --enable [urządzenie] i xinput --disable [urządzenie] .
thebodzio
1

Czy próbowałeś apletu panelu Gnome „Pointer Capture” ?

Wskaźnik myszy można zablokować w obszarze ekranu, aby urządzenie wskazujące było wolne do innych zadań. Na przykład ta funkcja umożliwia użytkownikowi wózka inwalidzkiego sterowanie zarówno wózkiem inwalidzkim, jak i wskaźnikiem myszy za pomocą jednego joysticka

Aplet panelu Przechwytywanie wskaźnika tworzy na panelu taki obszar, w którym użytkownik może zablokować wskaźnik, dopóki nie zostanie zwolniony w określony sposób.

Aplet panelu Przechwytywanie wskaźnika można zainstalować, klikając prawym przyciskiem myszy pasek menu / panel systemowy GNOME, wybierając Dodaj do panelu, wybierając Przechwytywanie wskaźnika i klikając przycisk Dodaj

W przypadku, gdy opis z gnome.org nie jest jasny, spowoduje to utworzenie w panelu obszaru, w którym po wejściu myszy (lub kliknięciu) kursor zniknie i nie pojawi się ponownie, dopóki nie pojawi się określona akcja, na przykład drugie kliknięcie. Brzmi dokładnie tak, jak potrzebujesz?

Josh
źródło
Użyłem tego, ale stworzyłem pewne problemy. Nie byłem w stanie Alt + F1otworzyć menu aplikacji. Nie wiem co to spowodowało. Jestem użytkownikiem ubuntu.
balki