Disabilita il mouse (non il touchpad!) In Xorg mentre è inattivo


17

Sono un appassionato utente di tastiera, ma ho ancora bisogno del mouse ogni tanto. Per ridurre al minimo la corsa della mano, ho il mouse posizionato sotto la tastiera. (A parte questo, usare il mouse in questo modo è più naturale per la mia mano.)

Attualmente sto usando il disordine per nascondere il puntatore mentre non uso il mouse. Sfortunatamente, a volte lo spingo mentre digito, il che fa riapparire il puntatore. A volte questo sposta il puntatore su un'altra finestra, che a sua volta distoglie l'attenzione dalla mia finestra corrente. (Sto usando il focus sciatto, e cambiare questa non è un'opzione.)

Ora sto cercando una possibilità non solo di nascondere il puntatore dopo un certo periodo di inattività, ma di disabilitare del tutto il mouse. Facendo clic su qualsiasi pulsante del mouse o utilizzando la rotellina del mouse, è necessario riabilitare il mouse.

Risposte:


16

La prima cosa che dobbiamo compiere è disattivare il mouse, ma solo in X. Per questo potremmo usare xinput.

Dobbiamo scoprire i dispositivi di input collegati al computer (al server 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)]
     [...]

Il dispositivo che dobbiamo usare è A4Tech USB Mousecon id=10. Quindi dobbiamo controllare le proprietà di quel dispositivo:

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

Per spegnere il dispositivo è necessario modificare la proprietà Device Enabled:

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

Accenderlo:

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

La prossima cosa è farlo automaticamente ...;) In questo esempio disabiliteremo il mouse con la scorciatoia da tastiera e la abiliteremo premendo il tasto sinistro + destro del mouse.

Per questo potremmo usare actkbd - demone scorciatoia da tastiera (ma non solo) che funziona al di fuori di X server.

In primo luogo abbiamo bisogno di creare file di configurazione vuoto per actkbd: touch /etc/actkbd.conf. La prossima cosa è scoprire i dispositivi collegati al computer:

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

[...]

In questa parte più interessanti per l'uso sono nomi e gestori di dispositivi tastiera e mouse.

Per prima cosa gestiamo lo spegnimento del mouse tramite la scorciatoia da tastiera, quindi dobbiamo scoprire gli ID chiave:

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 + `

Quando sappiamo quali sono gli ID chiavi, dobbiamo metterli nel file di configurazione ( /etc/actkbd.conf):

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

Per provarlo dobbiamo eseguire actkbdin modalità demone:

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

Allo stesso modo dobbiamo gestire l'evento "attiva":

  1. Controllare i gestori del dispositivo mouse
  2. Controllare i codici chiave del tasto sinistro + destro del mouse utilizzando actkbd
  3. Mettilo a actkbd.conf
  4. Esegui il demone actkbd per monitorare il dispositivo di input del mouse

I demoni in esecuzione potrebbero essere realizzati come script di init o script di esecuzione automatica in ambiente.

Per disattivare automaticamente il mouse, potremmo monitorare il dispositivo di input ( cat /dev/input/event5) e spegnerlo quando non c'è input ...

Spero che la mia breve introduzione ti aiuti ...;)


Grazie per il suggerimento con actkbd! Dopo aver pubblicato la mia domanda, avevo già capito di usare xinput, ma non ho scoperto come riattivare il mouse premendo i pulsanti del mouse.
vigore

Questa è una risposta molto ben scritta.
pjc50,

Grazie per queste informazioni, in particolare per il suggerimento con atkkbd

Invece di usare l'opzione --set-prop insieme alla proprietà "Device Enabled / Disabled", si possono anche usare le opzioni --enable e --disable, ad es. Xinput --enable [dispositivo] e xinput --disable [dispositivo] .
thebodzio

1

Hai provato un'applet del pannello Gnome "Pointer Capture" ?

Il puntatore del mouse può essere bloccato in un'area dello schermo in modo che il dispositivo di puntamento sia libero per altre attività. Ad esempio, questa funzionalità consente all'utente di un powerchair di controllare sia il puntatore del mouse sia il puntatore del mouse con un solo joystick

L'applet del pannello Pointer Capture crea una tale area sul pannello, in cui l'utente può bloccare il puntatore fino al rilascio in un determinato modo.

L'applet del pannello Pointer Capture può essere installato facendo clic con il tasto destro sulla barra dei menu / pannello di sistema del desktop GNOME, selezionando Aggiungi al pannello, scegliendo Pointer Capture e facendo clic sul pulsante Aggiungi

Nel caso in cui la descrizione da gnome.org non sia chiara, questo creerà un'area nel pannello in cui quando il mouse entra (o fai clic), il cursore scompare e non riapparirà fino a quando non si verifica un'azione definita, ad esempio un secondo clic. Sembra esattamente quello che ti serve?


L'ho usato ma ho creato alcuni problemi. Non sono stato in grado di utilizzare Alt + F1per aprire dal menu delle applicazioni. Non so cosa l'abbia causato. Sono un utente Ubuntu.
Balki,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.