¿Cómo deshabilitar el panel táctil mientras se usa el trackpoint en un Thinkpad?

21

Los Thinkpads (por ejemplo, X230 que estoy usando) tienen un trackpoint y un panel táctil. El panel táctil se desactiva al escribir.

Sin embargo, cuando uso el trackpoint, a menudo también toco el panel táctil y genero clics del mouse que me gustaría evitar. ¿Alguien tiene una idea de cómo deshabilitar los clics del mouse en el panel táctil cuando el trackpoint está en uso?

EDITAR: también, ¿alguien puede explicar cómo funciona la opción de deshabilitar el panel táctil al escribir? ¿Qué se está haciendo detrás de escena? ¿Es un comando de configuración de xinput y, en caso afirmativo, cuál?

EDIT2: aclaración; Deshabilitar manualmente el panel táctil (incluso con un acceso directo) no es el problema aquí. Esto debería funcionar igual que la opción "deshabilitar el panel táctil al escribir", ya que uso el panel táctil y el Trackpoint de manera intercambiable (con mayor frecuencia, uso el panel táctil para desplazarme y el Trackpoint para mover el cursor).

enero
fuente
Esto seria interesante. La forma en que se despliega el teclado contribuye a gestos extraviados que interfieren con el funcionamiento adecuado. No creo que esto sea posible con las opciones actuales, pero ¿tal vez en el futuro? Me parece que tengo que usar dos manos para escribir y señalar, arqueando mi mano (derecha) alta, para evitar cepillar / empujar el trackpad.
fleamour
Por el momento, he deshabilitado los clics del mouse con el panel táctil; encuentro que, en la mayoría de los casos, uso los botones en la parte superior del panel táctil de todos modos.
Enero

Respuestas:

10

Deshabilitar el panel táctil cuando el teclado está en uso

Esta función es realizada por la syndaemonutilidad, desde el xserver-xorg-input-synapticspaquete. Puede configurar opciones como el tiempo de inactividad, la frecuencia de sondeo, etc. (consulte la ayuda del tiempo de ejecución ):

Uso: syndaemon [-i inactivo-tiempo] [-m sondeo-retraso] [-d] [-t] [-k]
  -i ¿Cuántos segundos esperar después de presionar la última tecla antes?
     habilitando el touchpad. (el valor predeterminado es 2.0s)
  -m Cuántos milisegundos esperar hasta la próxima encuesta.
     (el valor predeterminado es 200 ms)
  ...
  -t Solo deshabilita los toques y el desplazamiento, no los movimientos del mouse.

Aquí está el código fuente para syndaemon.c.

  • Las funciones importantes son keyboard_activity(...)ymain_loop(...)
  • keyboard_activityusa la llamada a la API XQueryKeyMap para obtener el estado actual del teclado (1 bit por tecla) y luego compara el último estado (antiguo); si son diferentes, devuelve 1
  • main_loopsondea keyboard_activitycada mmilisegundos, y en función del "último tiempo de actividad" y si keyboard_activitydevuelve verdadero o falso, decide si deshabilitar o habilitar el panel táctil.
  • La dp_get_devicefunción ilustra cómo se enumeran los dispositivos de entrada X; debería poder modificar esto y la keyboard_activityfunción para verificar también cualquier actividad de trackpoint.

  • La xinputherramienta enumera dispositivos e ID, por ejemplo "

    Id. Del puntero del núcleo virtual = 2 [puntero maestro (3)]
    ⎜ ↳ ID de puntero XTEST de núcleo virtual = 4 [puntero esclavo (2)]
    ⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [puntero esclavo (2)]
    ⎜ ↳ TPPS / 2 IBM TrackPoint id = 12 [puntero esclavo (2)]

  • Puede obtener esto (la ID) a través de la función XListInputDevices

  • Después de eso, debe obtener un identificador de dispositivo de la ID utilizando XOpenDevice
  • Luego, utiliza la función XQueryDeviceState para obtener las coordenadas del puntero TrackPoint; similar al bucle existente, usted sondea esto de vez en cuando y verifica si las coordenadas han cambiado (es decir, el TrackPoint está en uso), y lo usa para activar o desactivar el panel táctil
  • Puede usar la xinpututilidad con el query-stateinterruptor y la ID del dispositivo para verificar si su programación es correcta, por ejemplo:

    $ xinput query-state 12
    2 clases:
    ButtonClass
    botón [1] = arriba
    botón [2] = arriba
    botón [3] = arriba
    botón [4] = arriba
    botón [5] = arriba
    botón [6] = arriba
    botón [7] = arriba
    ValuatorClass Mode = Proximidad relativa = In
    evaluador [0] = 854
    evaluador [1] = 867
    
  • Está interesado en los valores de valoración , que son coordenadas X e Y del TrackPoint
  • Vea la xinputfuente para más consejos
  • Para modificar y reconstruir este paquete:

    1. Obtenga la fuente con apt-get source...
    2. Haz tus modificaciones a tools/syndaemon.c
    3. Deshabilite los syndaemonparches existentes comentando las líneas 118...y 124...endebian/patches/series
    4. Construya su paquete modificado con dpkg-buildpackage -us -ucy los archivos deb estarán en el directorio padre.
ish
fuente
1
Dado que la recompensa expirará en tres días, tendré un trato con usted (a menos que aparezca una mejor respuesta): le asignaré la recompensa si me indica la API para consultar un dispositivo mediante el identificador xinput y proporcione un enlace a una página que describa cómo crear un paquete deb a partir de fuentes modificadas. Entonces podría aplicar este enfoque. ¿Estaría bien?
Enero
Lo siento, he estado fuera. Eso suena bien, intentaré encontrar la información y editar la respuesta en unas pocas horas.
ish
¡sin preocupaciones! eso está bien
Enero
1
Según lo prometido, señor, obtenga la recompensa. Sin embargo, no acepto la respuesta, porque primero necesito codificar la solución.
Enero
1
@Enero, ¿no está seguro si logró codificar su solución todavía? He parcheado syndaemon para soportar el monitoreo del trackpoint. github.com/eyko/xf86-input-synaptics ( confirme aquí github.com/eyko/xf86-input-synaptics/commit/… ) Para monitorear el TrackPoint, debe pasar el indicador de opción -T cuando ejecute syndaemon.
Vince
4

Lo primero que debe hacer es conocer la identificación de su panel táctil. Para ello, siga estos pasos

Primero abra la terminal y ejecute este comando

~$ xinput --list

Aquí tenemos esto Touchpad id = <id Number>

Después de eso abre atajos de teclado y luego agrega esto debajo de dos comandos con tus atajos de teclado.

# Disable Touchpad:
xinput set-prop <id number> 'Device Enabled' 0

# Enable Touchpad:
xinput set-prop <id number> 'Device Enabled' 1

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

nuevo usuario
fuente
Gracias, pero deshabilitar el panel táctil manualmente no es el problema aquí (incluso con un acceso directo), y sé cómo hacerlo. La idea es deshabilitar el panel táctil automáticamente mientras se usa Trackpoint, de manera similar, el panel táctil se deshabilita automáticamente cuando se usa el teclado (consulte la configuración "deshabilitar el panel táctil mientras se escribe" en la configuración "Mouse y panel táctil").
Enero
0

Aquí hay una solución de baja tecnología que podría ser mala para el uso de energía (el parche syndaemon -T no funcionó para mí).

#!/bin/sh

TRACKPOINT_DEV="TPPS/2 IBM TrackPoint"
SLEEP_TIME=5

OLD_XY=0,0,
while true; do
  NEW_XY=`xinput query-state "$TRACKPOINT_DEV" |grep valu|awk 'BEGIN { FS = "=" } ; {print $2 ","}'|xargs`
    if [ ! "$OLD_XY" = "$NEW_XY" ]; then
      synclient TouchpadOff=1
    else
      synclient TouchpadOff=0
    fi
    sleep $SLEEP_TIME
    OLD_XY="$NEW_XY"
done

Tiene que ser un poco afortunado notar que estás usando el trackpoint, porque solo puede decir las coordenadas durante cada intervalo de 5 segundos. En otras palabras, es conservador acerca de deshabilitar el panel táctil, pero no debe volver a habilitarlo de manera confiable cuando el trackpoint está inactivo.

De todos modos, me ayuda mucho en mi ultrabook con el cursor errante de la prensa de palma.

Covener
fuente