Deshabilite el mouse (¡no el panel táctil!) En Xorg mientras está inactivo

17

Soy un usuario ávido del teclado, pero todavía necesito el mouse de vez en cuando. Para minimizar el desplazamiento de la mano, tengo el mouse ubicado debajo de mi teclado. (En una nota al margen, usar el mouse de esta manera se siente más natural para mi mano).

Actualmente estoy usando unclutter para ocultar el puntero mientras no uso el mouse. Desafortunadamente, lo estoy empujando a veces mientras escribo, lo que hace que vuelva a aparecer el puntero. A veces, esto moverá el puntero sobre otra ventana, lo que a su vez aleja el foco de mi ventana actual. (Estoy usando un enfoque descuidado, y cambiar esto no es una opción).

Ahora estoy buscando la posibilidad de no solo ocultar el puntero después de un cierto tiempo de inactividad, sino también desactivar el mouse por completo. Al hacer clic en cualquier botón del mouse o usar la rueda del mouse, se debe volver a habilitar el mouse.

igor
fuente

Respuestas:

16

Lo primero que debemos lograr es apagar el mouse, pero solo en X. Para esto podríamos usar xinput.

Necesitamos descubrir dispositivos de entrada que estén conectados a la computadora (al 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)]
     [...]

El dispositivo que necesitamos usar es A4Tech USB Mousecon id=10. A continuación, debemos verificar las propiedades de ese dispositivo:

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

Para apagar el dispositivo, necesitamos cambiar la propiedad Device Enabled:

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

Encenderlo:

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

Lo siguiente es hacerlo automáticamente ...;) En este ejemplo, deshabilitaremos el acceso directo del mouse por teclado y lo habilitaremos presionando el botón izquierdo + derecho del mouse.

Para esto podríamos usar actkbd - demonio de atajo de teclado (pero no solo) que funciona fuera del servidor X.

Primero necesitamos crear el archivo de configuración vacío para actkbd: touch /etc/actkbd.conf. Lo siguiente es descubrir dispositivos conectados a la computadora:

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

[...]

En esta parte, lo más interesante para usar son los nombres y controladores de dispositivos de teclado y mouse.

Primero nos encargamos de apagar el mouse mediante el método abreviado de teclado, por lo que debemos descubrir los identificadores de 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 + `

Cuando sabemos qué son los identificadores de claves, debemos ponerlos en el archivo de configuración ( /etc/actkbd.conf):

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

Para probarlo necesitamos ejecutar actkbden modo demonio:

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

De la misma manera, necesitamos manejar el evento "activar":

  1. Verifique los controladores del dispositivo del mouse
  2. Verifique los códigos de tecla del botón izquierdo + derecho del mouse usando actkbd
  3. Ponlo a actkbd.conf
  4. Ejecute actkbd daemon para monitorear el dispositivo de entrada del mouse

La ejecución de demonios se puede realizar como script de inicio o script de ejecución automática en el entorno.

Para apagar automáticamente el mouse, podríamos monitorear el dispositivo de entrada ( cat /dev/input/event5) y apagarlo cuando no haya entrada ...

Espero que mi breve introducción te ayude ...;)

pbm
fuente
Gracias por la pista con actkbd! Después de publicar mi pregunta, ya había decidido usarla xinput, pero no descubrí cómo volvería a habilitar el mouse presionando los botones del mouse.
igor
Esta es una respuesta muy bien escrita.
pjc50
Gracias por esa información, especialmente por la pista con atkkbd
En lugar de usar la opción --set-prop junto con la propiedad "Device Enabled / Disabled", también se pueden usar las opciones --enable y --disable, por ejemplo, xinput --enable [dispositivo] y xinput --disable [dispositivo] .
thebodzio
1

¿Has probado un applet de panel Gnome "Captura de puntero" ?

El puntero del mouse se puede bloquear en un área de la pantalla para que el dispositivo señalador esté libre para otras tareas. Por ejemplo, esta capacidad permite que un usuario de silla eléctrica controle tanto la silla eléctrica como el puntero del mouse con un solo joystick.

El applet del panel de captura de puntero crea un área de este tipo en el panel, en la que el usuario puede bloquear el puntero hasta que se suelte de una manera determinada.

El applet del panel de captura de puntero se puede instalar haciendo clic con el botón derecho en la barra de menú del escritorio de GNOME / panel del sistema, seleccionando Agregar al panel, eligiendo captura de puntero y haciendo clic en el botón Agregar

En caso de que la descripción de gnome.org no sea clara, esto creará un área en el panel donde cuando el mouse ingrese (o haga clic), el cursor desaparecerá y no volverá a aparecer hasta que ocurra una acción definida, por ejemplo, un segundo clic ¿Suena exactamente como lo que necesitas?

Josh
fuente
He usado esto pero he creado algunos problemas. No pude usar Alt + F1para abrir por menú de aplicaciones. No sé qué causó eso. Soy un usuario de ubuntu.
balki