web-dev-qa-db-fra.com

Comment émuler une touche Fn (touche de fonction) dans xte

xte fait partie du paquet xautomation. Après des heures passées à lire des pages de manuel et à chercher de la documentation ou des exemples pratiques, je ne parviens toujours pas à obtenir xte pour émuler une Fn-F7 appuyez sur la touche.

xte 'keydown Meta_L' 'key F7' 'keyup Meta_L'

J'ai essayé Meta_L, Meta_R, Multi_key, la touche F7, la touche F7, puis la touche F7. Aucune combinaison ne semble fonctionner.

Toute idée de la manière dont je peux émuler une combinaison de touches avec un Fn clé d'une commande/script?

3
komputes

Il est généralement très difficile ou presque impossible d’utiliser xte pour simuler les pressions sur les touches fn + f, car la touche fn elle-même n’est pas enregistrée du tout dans xev, et très souvent les combinaisons de touches fn ou fn sont pas vu par le noyau comme d'autres touches de clavier normales.

Résumé

En fait, j’ai réussi à configurer trois combinaisons de touches (fn + f1, fn + f2 et fn + f3), car chacune de ces combinaisons entraînait l’envoi par le noyau de sa boîte de dialogue 'Clé inconnue enfoncée ... Définition de codes clés'. Cela signifiait que je pouvais définir les codes de clé, puis accéder à la boîte de dialogue des raccourcis clavier et voir si un raccourci clavier avait été attribué, par exemple. XF86Paste. Si tel était le cas, il était maintenant possible d'assigner un programme à lancer à partir d'eux et il était également possible d'utiliser xte pour émettre la commande suivante, ce qui équivalait à appuyer sur fn + f1 pour moi:

xte 'keydown XF86Paste' 'keyup XF86Paste'

C’est peut-être une particularité de l’un de mes ordinateurs portables que je puisse définir trois de ces combinaisons fn comme des touches multimédias normales comme montré ici , mais j’expliquerai quand même le processus pour vous et les étapes particulières que je suivrai. suivi.


Explication complète

Vous pouvez ne pas être en mesure de définir les touches, comme d'habitude, mais deux ou trois peuvent être configurés, comme je l'ai découvert. Appuyez sur fn et sur chacune des touches de fonction tour à tour (f1-f12) tout en consultant le journal du noyau:

tail -f /var/log/kern.log

S'ils sont reconnus, vous verrez un scancode du noyau:

atkbd serio0: Unknown key pressed (translated set 2, code 0xa7 on isa0060/serio0).   
kernel: [22751.972058] atkbd serio0: Use 'setkeycodes e027 <keycode>' to make it known.

Maintenant, par exemple, vous devez définir ces combinaisons de touches avec les informations fournies par le noyau, c’est-à-dire utiliser le scancode du noyau et un code de clé de votre choix (de préférence un nombre élevé afin de ne pas interférer avec autre chose). Consultez vos codes de clé actuels avec Sudo dumpkeys | grep ^keycode, comme indiqué dans cet article utile du wiki Ubunt .)

Il est clair que, parce que fn n’est pas reconnue comme une clé, mais uniquement en combinaison avec une autre clé, la combinaison de touches fn + f3, par exemple, est traitée comme une clé unique et peut donc être définie comme une autre clé multimédia unique. boutons:

Sudo setkeycodes e027 135 

La commande ci-dessus doit être entrée séparément pour chacune des combinaisons de touches que vous souhaitez définir et doit être placée dans /etc/rc.local (sans le préfixe Sudo) si vous souhaitez les charger au démarrage.

Maintenant, vous devez vérifier si un raccourci clavier X a été associé à vos nouveaux codes clé en accédant aux raccourcis clavier et en vérifiant si la combinaison de touches, par exemple, fn + F1, peut être définie. Si tel est le cas, un raccourci clavier tel que XF86Paste apparaîtra et le raccourci pourra être configuré pour lancer le programme de votre choix.

Maintenant, tout ce que vous avez à faire pour tester cela avec xte consiste à noter le keysym (par exemple, XF86Paste) que vous avez vu dans le dialogue des raccourcis clavier pour une combinaison particulière (par exemple, fn + f1), et entrez la commande appropriée:

xte 'keydown XF86Paste' 'keyup XF86Paste'

C'est l'équivalent de presser et d'appuyer sur fn + f1.

Si vous avez défini un programme à lancer avec la combinaison de touches (fn + f ...) associée au mot-clé, l'événement xte lancera ce programme et vous saurez que le réglage a fonctionné.


Conclusion

C’est un moyen de définir les combinaisons touche fn + Fonction, mais votre ordinateur portable ne sera possible que si le noyau reconnaît au moins l’une des combinaisons comme clé inconnue, mais réglable. Seuls fn + f1, fn + f2 et fn + f3 étaient réglables pour moi, mais cela sera différent pour votre ordinateur. Si vous voulez expérimenter avec la modification des actions de votre bouton de fonction 'sommeil' fn +, voir cet article du wiki Ubunt , mais il se peut que ce ne soit pas tout à fait à jour.

2
user76204

Il semble que les auteurs de xte aient résolu ce problème simplement.

En guise de test, j'ai lié la touche F7 à la fonctionnalité de désactivation du son, puis,

echo 'key F7' | xte 

et a confirmé que la clé F7 avait été générée avec succès, par xte.

0
Gino