Masquage dynamique du curseur de la souris lors de l'utilisation de l'écran tactile

21

J'ai un ordinateur portable à écran tactile et je souhaite masquer le pointeur chaque fois que je touche l'écran. Je connais des solutions comme désencombrer et startx -nocursormais je veux que le pointeur se cache / affiche dynamiquement, se cachant si j'utilise l'écran tactile et montrant quand j'utilise une souris matérielle.

J'ai pensé à créer deux pointeurs distincts et à appliquer l'une des deux solutions ci-dessus au pointeur de l'écran tactile, mais aucune de ces solutions ne mentionne comment cibler un seul pointeur, et avoir plusieurs pointeurs rend les choses étranges, et cela ne cacherait pas le matériel Curseur de la souris.

Je pense que je peux très raisonnablement faire cela en faisant quelque chose comme ça , en gardant une trace du mécanisme d'entrée actuel et en l'exécutant xinput -cursor [transparent cursor]chaque fois que l'écran tactile est utilisé et xinput -cursor [normal cursor]chaque fois qu'une souris normale est utilisée.

J'ai cependant regardé xinput et il semble que la souris matérielle et l'écran tactile soient asservis au même pointeur, ils enregistrent tous les deux les mêmes événements dans xev, donc je ne sais pas vraiment où obtenir les informations nécessaires pour différencier un toucher d'un clic de souris. c'est possible?

erp
la source

Réponses:

5

Vous pourriez utiliser

Pour l'utiliser, installez-le

sudo apt-get install unclutter

puis lancez-le

unclutter -idle 0.01 -root

Notez que le nombre après inactif signifie le temps avant qu'il ne se cache. Dans ce cas, son réglage au 1/100 de seconde. Vous pouvez essayer de le changer en une valeur qui serait toujours masquée.

Cela masquera le curseur lorsque vous ne le déplacerez pas. Je suis sûr qu'il existe également une option pour le masquer complètement.

КодСерфинг145
la source
J'ai vu des solutions utilisant unclutter, mais cela ne fait pas de différence entre l'utilisation d'un écran tactile et d'une souris.
erp
2

Je suppose que vous utilisez l'écran tactile lorsque vous n'avez pas de souris et que vous en branchez une sur le système lorsque vous souhaitez l'utiliser. Dans ce cas, vous pouvez utiliser des udevrègles pour gérer votre pointeur en conséquence:

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", ENV{REMOVE_CMD}="/usr/bin/xinput -cursor [transparent cursor]", RUN+="/usr/bin/xinput -cursor [normal cursor]"

Les conditions utilisées pour distinguer une souris sont empruntées à cette réponse .

Gardez à l'esprit que les applications individuelles sont libres de redéfinir le curseur dynamiquement, de sorte que votre curseur peut redevenir visible lorsque vous survolez leurs fenêtres. Vous pouvez unclutterplutôt démarrer / arrêter si vous souhaitez que tous les curseurs soient masqués partout:

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", ENV{REMOVE_CMD}="/bin/sh -c unclutter&", RUN+="/usr/bin/killall unclutter"

Personnellement, je désactiverais également complètement l'écran tactile lorsque la souris est branchée, de sorte que le toucher accidentellement ne perturbe pas le curseur lorsque vous vous attendez à ce qu'il suive la souris.

Dmitry Grigoryev
la source
c'est une bonne option sauf que je veux ce comportement pour mon trackpad, pas seulement pour les souris branchées. Je crois que udev affecte uniquement les appareils qui sont ajoutés / supprimés dynamiquement?
erp
Vous voulez dire que votre trackpad est votre "souris matérielle"? Je dirais que vous devrez essayer de voir si cela fonctionne. Le pavé tactile peut en fait être vu udevcomme retiré lorsque vous le désactivez à l'aide du bouton Fn (en supposant que vous en ayez un).
Dmitry Grigoryev
1

Il y a un fork de l'outil unclutter-fix de nowrep disponible ici . Cette version ajoute une -touchoption pour masquer automatiquement le curseur chaque fois qu'une entrée tactile est détectée. (Le dépôt d'origine unclutter-xfixes est ici )

Une chose à savoir est qu'elle inclut toujours le comportement de masquage du curseur après une période de temps spécifiée. Vous pouvez simplement définir l' --timeoutoption sur une valeur très élevée pour contourner ce problème.

Cela devrait fonctionner parfaitement pour vous. Dans mon cas, j'avais un écran tactile connecté à l'extérieur et lorsque je reviens au moniteur normal, le curseur sera sur l'écran tactile, donc je dois le déplacer vers le moniteur d'où j'ai touché. La bonne chose est qu'après avoir commencé à déplacer la souris, le curseur apparaîtra donc je sais où il se trouve.

Un bon avantage de cette option est que je peux toujours utiliser ma souris comme d'habitude sur l'écran tactile si je le souhaite mais que je la cache quand je ne le fais pas.

bpedman
la source