A primeira coisa que precisamos fazer é desligar o mouse, mas apenas no X. Para isso, poderíamos usar xinput
.
Precisamos descobrir os dispositivos de entrada conectados ao computador (ao servidor 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)]
[...]
O dispositivo que precisamos usar está A4Tech USB Mouse
com id=10
. Em seguida, precisamos verificar as propriedades desse dispositivo:
pbm@tauri ~ $ xinput list-props "A4Tech USB Mouse"
Device 'A4Tech USB Mouse':
Device Enabled (121): 1
[....]
Para desligar o dispositivo, precisamos alterar a propriedade Device Enabled
:
xinput set-prop DEV PROP STATE
xinput set-prop "A4Tech USB Mouse" "Device Enabled" 0
Para ligar:
xinput set-prop "A4Tech USB Mouse" "Device Enabled" 1
O próximo passo é fazer isso automaticamente ...;) Neste exemplo, desativaremos o mouse pelo atalho de teclado e ativá-lo pressionando o botão esquerdo + direito do mouse.
Para isso, podemos usar o daemon de atalho actkbd - keyboard (mas não apenas) que funciona fora do servidor X.
Primeiro, precisamos criar o arquivo de configuração vazio para actkbd: touch /etc/actkbd.conf
. O próximo passo é descobrir os dispositivos conectados ao computador:
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
[...]
Nesta parte, mais interessantes para o uso são nomes e manipuladores de dispositivos de teclado e mouse.
Primeiro, lidamos com a desativação do mouse por atalho de teclado, portanto, precisamos descobrir os IDs das teclas:
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 sabemos quais são os IDs das chaves, precisamos colocá-los no arquivo de configuração ( /etc/actkbd.conf
):
29+41+42:::sudo -u pbm DISPLAY=:0 xinput set-prop "A4Tech USB Mouse" "Device Enabled" 0
Para testá-lo, precisamos executar actkbd
no modo daemon:
pbm@tauri ~ $ sudo actkbd -d /dev/input/event3 -D
Da mesma forma, precisamos lidar com o evento "ativar":
- Verificar manipuladores do dispositivo do mouse
- Verifique os códigos das teclas esquerda + direita do mouse usando
actkbd
- Coloque para
actkbd.conf
- Execute o daemon actkbd para monitorar o dispositivo de entrada do mouse
Os daemons em execução podem ser realizados como script init ou script de execução automática no ambiente.
Para desligar automaticamente o mouse, podemos monitorar o dispositivo de entrada ( cat /dev/input/event5
) e desligá-lo quando não houver entrada ...
Espero que minha breve introdução o ajude ...;)
actkbd
! Depois de postar minha pergunta, eu já tinha decidido usá-loxinput
, mas não descobri como reativaria o mouse pressionando os botões.