venerdì 21 giugno 2013

Disabilitare il TouchPad quando si inserisce il mouse USB


Nella mia configurazione base, uso molto spesso il mouse usb esterno.
Mi capita a volte durante la scrittura (scrivo un sacco di cose) che il mio pollice vada ad innescare dei comandi non attesi sul TouchPad (spesso mi perdo intere frasi ... fortunatamente esiste l'undo). Ho scritto un programmino che disabilita il TouchPad quando viene inserito il mouse usb, e lo riattiva quando viene rimosso.

Il sistema sul quale lo uso è Ubuntu 13.04 (colleghi lo usano anche su versioni più datate).


Per prima cosa è necessario capire quali sono i device del TouchPad.
xinput --list --short|grep slave | grep "pointer"
⎜   ↳ Virtual core XTEST pointer               id=4 [slave  pointer  (2)]
⎜   ↳ USB Optical Mouse                        id=11 [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS DualPoint TouchPad         id=14 [slave  pointer  (2)]
⎜   ↳ DualPoint Stick                          id=13 [slave  pointer  (2)]

Nel mio caso i device da "accendere" e "spegnere" sono il 13 e il 14. Il device 11 è il mio Mouse USB ;) il device 4 non so cosa sia ma è trascurabile.

Lo script che ho creato utilizza un regex per intercettare i device da disabilitare. Io utilizzerò come match "DualPoint" (vedi script riga 29)
Ora possiamo procedere ad installare lo script.

Copiamo lo script in $HOME/bin e diamogli i permessi si esecuzione:
wget -O $HOME/bin/mouse-usb-manager http://static.fuffaware.it/scripts/mouse-usb-manager
chmod +x $HOME/bin/mouse-usb-manager
Configuriamo GSettings per invocare lo script all'inserimento e rimozione del mouse usb.
gsettings set org.gnome.settings-daemon.peripherals.input-devices hotplug-command $HOME/bin/mouse-usb-manager

Se vogliamo rimuovere lo script da GSettings:
gsettings reset org.gnome.settings-daemon.peripherals.input-devices hotplug-command

Quando ora inserisco il mouse appare questa notifica e il TouchPad viene disabilitato

Mentre quando lo rimuovo appare quest'altra notifica e il TouchPad viene riabilitato

0 commenti: