La prise en charge du trackpad sur Linux Desktop est loin derrière celle sur Mac et Windows.
Les gestes du trackpad Mac ont maintenant acquis une citoyenneté considérable, et le défilement naturel, qui déplace le trackpad dans la direction opposée du mouvement du doigt, est maintenant disponible sur une variété de systèmes d'exploitation, y compris Linux.
Même sous Windows, la gestion des gestes a été renforcée par rapport à Windows 10, et bien qu'elle ne soit pas parfaite, il est possible de fonctionner comme un Macbook.
Auparavant, Synaptics (qui est facilement confondu avec le gestionnaire de paquets GUI Synaptic) était utilisé pour contrôler des périphériques tels que les trackpads et souris Linux, mais ces dernières années, Ubuntu utilise libinput dérivé de Wayland depuis environ 15.04. De plus, les synaptiques passeront désormais en mode maintenance et ne seront pas activement développées.
Vous pouvez utiliser libinput avec Xorg même si vous n'êtes pas à Wayland. Sur Ubuntu, si vous utilisez Xorg au lieu de Wayland, vous utilisez libinput au lieu de synaptics en utilisant xf86-input-libinput.
https://wayland.freedesktop.org/libinput/doc/latest/what-is-libinput.html#libinput-and-x-org
De plus, Gnome (Wayland) a ajouté la prise en charge des gestes dans le dernier Ubuntu 19.10, mais cela reste insuffisant.
Que puis-je faire pour pouvoir gérer les gestes?
Considérez chacun de ces facteurs.
Installez libinput-tools pour lire l'entrée du trackpad. https://wayland.freedesktop.org/libinput/doc/latest/tools.html
$ sudo apt-get install libinput-tools
libinput debug-events
crache les informations d'entrée de périphérique sur la sortie standard.
-event2 DEVICE_ADDED Sleep Button seat0 default group5 cap:k
-event17 DEVICE_ADDED DLL075B:01 06CB:76AF Touchpad seat0 default group7 cap:pg size 101x57mm tap(dl off) left scroll-nat scroll-2fg-edge click-buttonareas-clickfinger dwt-on
-event4 DEVICE_ADDED AT Translated Set 2 keyboard seat0 default group13 cap:k
event17 POINTER_MOTION +1.17s 1.22/ 0.00
event17 POINTER_MOTION +1.18s 1.22/ 1.22
event17 POINTER_MOTION +1.18s 1.22/ 0.00
-event4 KEYBOARD_KEY +2.56s *** (-1) pressed
event4 KEYBOARD_KEY +2.67s *** (-1) released
Vous pouvez obtenir des informations de connexion de l'appareil, des informations sur les mouvements du pointeur sur le trackpad et une saisie au clavier (masquée).
De plus, si vous glissez avec trois doigts, vous obtiendrez les résultats suivants.
-event17 GESTURE_SWIPE_BEGIN +296.35s 3
event17 GESTURE_SWIPE_UPDATE +296.35s 3 6.14/-0.28 (24.06/-1.09 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.36s 3 8.06/-0.81 (21.87/-2.19 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.36s 3 7.71/-0.81 (20.78/-2.19 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.37s 3 6.09/-0.81 (16.40/-2.19 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.38s 3 4.06/-0.41 (10.94/-1.09 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.38s 3 6.49/-0.81 (17.50/-2.19 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.39s 3 4.06/-0.41 (10.94/-1.09 unaccelerated)
event17 GESTURE_SWIPE_UPDATE +296.40s 3 2.84/ 0.00 ( 7.66/ 0.00 unaccelerated)
event17 GESTURE_SWIPE_END +296.41s 3
Une ligne de GESTURE_SWIPE_UPDATE + 296,40s 3 2,84 / 0,00
contient le type de geste, le nombre de doigts et la distance parcourue.
Vous pouvez facilement obtenir des événements de périphérique, des événements de balayage, un zoom par pincement et d'autres événements à l'aide de libinput-debug-events. (Il existe également une API C pour libinput, mais elle n'est pas utilisée cette fois)
De plus, dans les synaptiques d'Ubuntu 14.10 ou version antérieure, le journal du trackpad peut être affiché avec la commande "synclient -m", mais il n'y a pas de sortie telle que swipe event, et dans le dernier synclient, l'option -m a été supprimée, il n'est donc pas possible d'acquérir l'événement. Il y a.
GESTURE_SWIPE_UPDATE +296.40s 3 2.84/ 0.00
En traitant cette seule ligne comme un événement et en acquérant la valeur moyenne des distances de déplacement des événements de plusieurs lignes, il est possible de déterminer laquelle est en mouvement. GESTURE_SWIPE_END Ce serait bien d'obtenir la valeur moyenne de la distance parcourue avant de venir.
En passant, si vous calculez, la valeur moyenne de la quantité de mouvement est x = 5,68125, y = -0,5425, ce qui signifie qu'elle se déplace vers la droite.
Vous pouvez voir qu'il a glissé trois doigts vers la droite.
Une fois que vous savez que vous avez glissé, quelle est la prochaine étape pour que votre geste ressemble à une manipulation de l'interface graphique? Si vous glissez, je veux que l'écran se déplace rapidement. La chose la plus simple à faire est d'appeler une touche de raccourci existante.
Xdotool est pratique pour appeler les touches de raccourci. xdotool peut émuler l'entrée du clavier et le fonctionnement de la souris. http://manpages.ubuntu.com/manpages/trusty/man1/xdotool.1.html
Il existe généralement des touches de raccourci pour déplacer Workspace, donc si vous les exprimez avec des commandes xdotool,
$ xdotool key ctrl + alt + up
$ xdotool key ctrl + alt + down
De plus, le fonctionnement du navigateur est le même.
$ xdotool key alt + Left
$ xdotool key alt + Right
De cette manière, les commandes peuvent être utilisées pour émuler les opérations de l'espace de travail et les opérations de l'interface graphique du navigateur. (En fait, vous pouvez obtenir un retour plus intuitif en déplaçant l'espace de travail en synchronisation avec la distance de déplacement du geste en unités de pixels, mais comme cela dépend de l'implémentation côté WM et application, cette fois il suffira d'émuler la touche de raccourci. )
Fondamentalement, le contenu suivant est simplement exécuté en boucle séquentiellement.
Lire l'entrée de l'appareil, déterminer les gestes et appeler la commande (xdotool). Vous devez juste continuer à les boucler.
J'ai créé Fusuma (https://github.com/iberianpig/fusuma), un logiciel créé par Ruby qui reconnaît les gestes de libinput. J'ai également écrit un script perl (https://github.com/iberianpig/xSwipe) pour synaptic auparavant. Y compris, c'est le deuxième travail.
Lorsqu'il est élevé dans la figure, il ressemble à ce qui suit.
Il fait quelque chose comme la programmation événementielle et boucle ce qui suit pour les opérations utilisateur.
C'est une capture d'écran en cours d'exécution, donc je ne peux pas la voir. Veuillez l'installer et l'essayer.
Si vous pouvez écrire Ruby, les parties du répartiteur et du gestionnaire d'événements peuvent également être étendues avec Gem, de sorte que vous pouvez également obtenir des événements de tap, de stylet et de clavier, vous devriez donc pouvoir faire diverses choses. J'ai écrit Dispatcher qui reconnaît l'événement "key press + swipe".
Il est devenu indispensable dans la vie quotidienne, et cela dépend du degré de difficulté lorsque Fusuma est éteint, comme le changement d'espace de travail, le retour du navigateur et la poursuite.
À l'avenir, s'il s'agit de Wayland, si vous écrivez une extension de Gnome Shell, vous pourrez recevoir des événements avec javascript, donc le seuil sera relativement bas.
J'ai réalisé que si je pouvais gérer l'entrée de périphérique librement, je pourrais créer diverses fonctions utiles. Si vous pouvez récupérer l'événement, vous pouvez le lier à diverses actions comme celle-ci, donc J'ai l'impression de pouvoir faire des gestes de la main, des gestes du visage, etc. avec une caméra Web. Notification que la posture est mauvaise. Vous n'en avez pas besoin?
Je voudrais continuer à trouver des problèmes familiers et mineurs et à les résoudre régulièrement.
Recommended Posts