Comment autoriser les accords de touches du clavier à changer temporairement la table des touches?

9

Je l' ai vraiment eu utilisé pour la « simultanée du mode Vi » fonctionnalité de KeyRemap4MacBook qui vous permet maintenez la touche set les dtouches simultanément, puis utilisez les h, j, ket les ltouches que les touches fléchées. Lorsque set dsont pressés ensemble, aucun sou dévénement n'est déclenché, mais lorsque je tape normalement, je ne remarque aucun problème de retard avec la frappe sou dindividuellement.

Comment pourrais-je recréer cette fonctionnalité sous Linux (spécifiquement RHEL 6.4)?

Quelques idées que j'ai eues:

  1. Si s+ dpourrait être reconfiguré à un modificateur, puis les touches h, j, k, l+ modificateur pourrait être mis en correspondance en conséquence. (Le clavier que j'utilise maintenant n'a pas de touches de modification de rechange disponibles à utiliser à la place de s+ d, plus l'intérêt du mode Vi simultané est de garder tous les doigts sur la ligne d'accueil. CapsLockEst déjà remappé vers Controlet Escape).

  2. Idéalement, je trouverais un moyen de le faire en utilisant les paramètres système ou quelque chose comme le clavier XKB que j'utilise déjà. Si ce n'est pas possible, peut-être quelque chose de similaire au programme xcape (que j'utilise et qui permet de mapper les touches sur différents symboles de touches et de touches de modification) pourrait être écrit. xcapedéclenche cependant la libération des clés, il faudrait donc l'ajuster pour éviter que les touches set dne soient trop lentes.

ws_e_c421
la source
Sur RHEL 6.4? Utilisez-vous vim de X ou via un terminal?
Otheus
Oh, et comment mappez-vous CapsLock à Control AND Escape ??
Otheus
Mappez CapsLock à Control, puis utilisez xcape (lié ci-dessus) pour mapper les pressions brèves de contrôle sur Escape. Dans la question, je me réfère à un mode de type Vi de KeyRemap4MacBook, pas à vim lui-même. Jusqu'à présent, l'option la plus prometteuse que j'ai trouvée pour ce que je recherche est d'utiliser le module Python Xlib d'une manière similaire à celle utilisée par Plover. Jusqu'à présent, je n'ai pas eu beaucoup de temps pour y travailler.
ws_e_c421

Réponses:

2

Vous ne pouvez pas faire cela avec les outils standard, vous devrez écrire quelque chose (probablement beaucoup de xserver seront affectés, et si vous voulez que cela fonctionne en dehors de X, il y aura des changements de noyau).

La raison en est que les idées sur lesquelles la conception est basée (et optimisée pour) n'incluent pas l'accord de touches régulières ou l'émission de caractères à partir de modificateurs.

hildred
la source
J'étudie toujours cela (besoin de plus de temps). J'ai trouvé le projet Plover qui semblait fournir un modèle pour une solution basée sur X, mais je veux passer à Wayland, j'ai donc arrêté de chercher dans cela. Récemment, j'ai découvert caps2esc qui utilise libevdev et libudev pour saisir et remapper dynamiquement des périphériques. Je pense qu'une approche comme celle-ci pourrait fonctionner pour les accords en plus du remappage, mais elle doit être étudiée plus loin (je préférerais également une solution libinput).
ws_e_c421
Mon commentaire libinput était mal informé. Je pensais que caps2esc fonctionnait avec le pilote xf86-input-evdev qui est une alternative à libinput, mais il fonctionne en fait au niveau libevdev qui est une bibliothèque de niveau inférieur utilisée par les deux projets. L'outillage de caps2esc a été refactorisé dans le projet d'outils d'interception . Je crois qu'un plugin bien écrit pour les outils d'interception pourrait fournir la fonctionnalité que j'ai décrite. C'est sur ma liste pour enquêter.
ws_e_c421
2

Donc, après quatre ans, j'ai enfin une ébauche de réponse à cette question. La réponse est d'utiliser les outils d'interception qui utilisent libevdev pour saisir les entrées du clavier et effectuer le traitement avant de les réémettre. En ce qui concerne la cartographie clé simultanée, j'ai fait un plugin rude pour les outils d' interception appelé Chorded Keymap qui permet h, j, k, lagir comme les touches fléchées quand set dsont pressés simultanément.

ws_e_c421
la source