web-dev-qa-db-fra.com

Comment désactiver le pavé tactile lorsque vous utilisez un point de suivi sur un Thinkpad?

Les Thinkpads (par exemple, le X230 que j'utilise) ont à la fois un trackpoint et un pavé tactile. Le pavé tactile est désactivé lors de la frappe.

Cependant, lorsque j'utilise le point de suivi, je touche souvent aussi le pavé tactile et génère des clics de souris que j'aimerais éviter. Quelqu'un a-t-il une idée de la manière de désactiver les clics de souris sur le pavé tactile lorsque le point de suivi est utilisé?

EDIT: aussi, quelqu'un peut-il expliquer comment l'option de désactiver le pavé tactile lors de la frappe fonctionne? Que fait-on dans les coulisses? Est-ce une commande de configuration xinput, et si oui, laquelle?

EDIT2: clarification; désactiver manuellement le pavé tactile (même avec un raccourci) n’est pas le problème ici. Cela devrait fonctionner comme l'option "désactiver le pavé tactile lors de la frappe", car j'utilise indifféremment le pavé tactile et le point de suivi (le plus souvent, j'utilise le pavé tactile pour le défilement et le point de contrôle pour déplacer le curseur).

21
January

Désactivation du pavé tactile lorsque le clavier est utilisé

Cette fonction est exécutée par l'utilitaire syndaemonname__, à partir du package xserver-xorg-input-synaptics. Vous pouvez définir des options telles que la durée d'inactivité, la fréquence d'interrogation, etc. (voir aide à l'exécution ):

 Utilisation: syndaemon [-i temps d'inactivité] [-m poll-delay] [-d] [-t] [-k] 
 -I Combien de secondes attendre après la dernière touche appuyez sur avant 
 pour activer le pavé tactile. (la valeur par défaut est 2,0s) 
 -m Combien de millisecondes doivent attendre jusqu'au prochain sondage 
 (la valeur par défaut est 200 ms) 
 ... 
 -t uniquement désactivez le tapotement et le défilement, pas les mouvements de la souris.

Voici le code source pour syndaemon.c.

  • Les fonctions importantes sont keyboard_activity(...) et main_loop(...)
  • keyboard_activity utilise le XQueryKeyMap Appel d'API pour obtenir l'état actuel du clavier (1 bit par touche), puis le compare jusqu'au dernier (ancien) état; si elles sont différentes, ça retourne 1
  • main_loop interroge keyboard_activity toutes les mmillisecondes, et en fonction de la "dernière activité" et si keyboard_activity renvoie true ou false, il décide de désactiver ou d'activer le pavé tactile.
  • La fonction dp_get_device illustre comment les périphériques d’entrée X sont énumérés; vous devriez pouvoir modifier ceci et la fonction keyboard_activity pour vérifier également toute activité de point de suivi.

  • L'outil xinputrépertorie les périphériques et les ID, par exemple "

     N ° de pointeur du noyau virtuel = 2 [pointeur principal (3)] 
     ⎜ ↳ N ° du pointeur central du XTEST virtuel = 4 [pointeur esclave (2)] 
     SynPS/2 Synaptics Pavé tactile id = 11 [pointeur esclave (2)] 
     ↳ ↳ TPPS/2 id IBM TrackPoint = 12 [pointeur esclave (2)]
  • Vous pouvez obtenir cet identifiant via la fonction XListInputDevices

  • Après cela, vous devez obtenir un identifiant de périphérique à partir de l'ID à l'aide de XOpenDevice
  • Ensuite, vous utilisez la fonction XQueryDeviceState pour obtenir les coordonnées du pointeur TrackPoint; similaire à la boucle existante, vous interrogez cela de temps en temps et vérifiez si les coordonnées ont changé (c'est-à-dire que le TrackPoint est en cours d'utilisation), et vous l'utilisez pour activer ou désactiver le pavé tactile.
  • Vous pouvez utiliser l'utilitaire xinputavec le commutateur query-state et l'ID de périphérique pour vérifier si votre programmation est correcte, par exemple:

     $ xinput query-state 12 
     2 classes: 
     ButtonClass 
     bouton [1] = haut 
     bouton [2] = haut 
     bouton [3] = haut bouton 
     [4] = haut bouton 
     [5] = haut bouton 
     [6] = haut bouton 
     [7] = up 
     ValuatorClass Mode = Relative Proximity = In 
     Valuator [0] = 854 
     Valuator [1] = 867 
    
  • Vous êtes intéressé par les valeurs du valorisateur , qui sont les coordonnées X et Y du TrackPoint
  • Voir la source xinputpour plus de conseils.
  • Pour modifier et reconstruire ce paquet:

    1. Obtenez le source avec apt-get source...
    2. Apportez vos modifications à tools/syndaemon.c
    3. Désactivez les correctifs syndaemonexistants en commentant les lignes 118... et 124... dans debian/patches/series
    4. Construisez votre paquet modifié avec dpkg-buildpackage -us -uc et les fichiers deb seront dans le répertoire parent.
10
ish

La première chose à faire est de connaître votre identifiant de pavé tactile. Pour ce faire, suivez ces étapes

Premier terminal ouvert et Exécuter cette commande

~$ xinput --list

Ici nous avons ce Touchpad id = <id Number>

Après cela, ouvrez les raccourcis clavier puis ajoutez cette commande ci-dessous deux avec vos raccourcis clavier.

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

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

enter image description hereenter image description here

4
newuser

Voici une solution low-tech qui pourrait être mauvaise pour l'utilisation de l'énergie (le correctif syndaemon -T ne fonctionnait pas pour moi).

#!/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

Il doit être un peu chanceux de remarquer que vous utilisez le trackpoint, car il ne peut indiquer que les coordonnées au cours de chaque intervalle de 5 secondes. En d'autres termes, il est prudent de désactiver le pavé tactile mais ne doit pas le réactiver de manière fiable lorsque le point de suivi est inactif.

En tout cas, cela m'aide beaucoup sur mon ultrabook avec le curseur errant de Palm Press.

0
covener