Desativar mouse (não touchpad!) No Xorg enquanto ocioso

17

Sou um usuário ávido de teclado, mas ainda preciso do mouse de vez em quando. Para minimizar o deslocamento da mão, tenho o mouse localizado abaixo do teclado. (Em uma nota lateral, usar o mouse dessa maneira parece mais natural para a minha mão.)

Atualmente, estou usando a organização para ocultar o ponteiro enquanto não uso o mouse. Infelizmente, às vezes, estou cutucando-o durante a digitação, o que faz com que o ponteiro reapareça. Às vezes, isso move o ponteiro sobre outra janela, o que, por sua vez, afasta o foco da minha janela atual. (Estou usando um foco superficial e alterar isso não é uma opção.)

Agora estou procurando uma possibilidade de ocultar não apenas o ponteiro após um certo período de tempo ocioso, mas desativar o mouse completamente. Clicar em qualquer botão do mouse ou usar a roda do mouse deve reativar o mouse.

igor
fonte

Respostas:

16

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 Mousecom 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 actkbdno modo daemon:

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

Da mesma forma, precisamos lidar com o evento "ativar":

  1. Verificar manipuladores do dispositivo do mouse
  2. Verifique os códigos das teclas esquerda + direita do mouse usando actkbd
  3. Coloque para actkbd.conf
  4. 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 ...;)

pbm
fonte
Obrigado pela dica com actkbd! Depois de postar minha pergunta, eu já tinha decidido usá-lo xinput, mas não descobri como reativaria o mouse pressionando os botões.
igor
Esta é uma resposta muito bem escrita.
Pjc50
Obrigado por essa informação, especialmente para a dica com atkkbd
Em vez de usar a opção --set-prop juntamente com a propriedade "Device Enabled / Disabled", também é possível usar as opções --enable e --disable, por exemplo, xinput --enable [device] e xinput --disable [device] .
thebodzio
1

Você já tentou um applet de painel "Pointer Capture" Gnome ?

O ponteiro do mouse pode ser bloqueado em uma área da tela para que o dispositivo apontador fique livre para outras tarefas. Por exemplo, esse recurso permite que um usuário de cadeira de rodas controle a cadeira de rodas e o ponteiro do mouse com um único joystick

O miniaplicativo do painel Captura de ponteiro cria uma área no painel, na qual o usuário pode bloquear o ponteiro até que seja liberado de uma determinada maneira.

O applet do painel Pointer Capture pode ser instalado clicando com o botão direito do mouse na barra de menus do GNOME Desktop / painel do sistema, selecionando Add to Panel, escolhendo Pointer Capture e clicando no botão Add

Caso a descrição do gnome.org não seja clara, isso criará uma área no painel em que, quando o mouse entrar (ou você clicar), o cursor desaparecerá e não reaparecerá até que uma ação definida ocorra, por exemplo, um segundo clique. Parece exatamente o que você precisa?

Josh
fonte
Eu usei isso, mas criei alguns problemas. Não pude usar Alt + F1para abrir pelo menu de aplicativos. Não sei o que causou isso. Eu sou um usuário do Ubuntu.
balki