Remapper une combinaison de touches à une autre combinaison, par exemple Super + Ctrl + Maj + J -> Ctrl + Maj + Gauche

11

Je souhaite implémenter une couche de touches supplémentaires, afin de pouvoir accéder aux touches non alphanumériques sans avoir à bouger mes poignets.

J'ai utilisé Autokey à cette fin, mais l'expérience n'a pas été satisfaisante: il y avait des retards occasionnels et laissait glisser des touches originales dans certaines applications.

J'ai donc besoin d'une solution de bas niveau.

lolmaus - Andrey Mikhaylov
la source
vous devrez peut-être créer un pilote d'entrée virtuel personnalisé pour ce faire, ce qui, je suppose, serait écrit en C
Amias
@Amias, pouvez-vous développer?
lolmaus - Andrey Mikhaylov
vous pourriez avoir un pilote xinput qui exécute le pilote de clavier normal mais interprète les frappes avant de les transmettre à xorg, cela vous donnerait un contrôle complet, mais ce serait un couple de travail moyennement complexe pour un programmeur C.
Amias

Réponses:

10

Essayez une combinaison de xbindkeys et xvkbd . xbindkeys écoute les clés et envoie la traduction à xvkbd.

sudo apt-get install xbindkeys xvkbd
xbindkeys --defaults > /home/your-user-name/.xbindkeysrc

Ouvrez .xbindkeysrc dans votre éditeur préféré. J'ai commenté tout le reste, mais il est bon de s'y référer si nécessaire.

Pour le vérifier, j'ai essayé de mapper Ctrl +; à Ctrl + V

"xvkbd -xsendevent -text "\Cv""
   control + semicolon

Je suppose que vous recherchez quelque chose comme ça

"xvkbd -xsendevent -text "\C\S\[Left]""
  Super+Control+Shift+J

Enregistrez le fichier, puis exécutez xbindkeys

Afin de recharger les modifications de configuration, j'ai tué le processus xbindkeys puis redémarré.

syntaxe xbindkeys

J'ai travaillé sur la combinaison de touches en utilisant une interface graphique pour xbindkeys

sudo apt-get install xbindkeys-config
xbindkeys-config

Une fois que vous avez exécuté cela, appuyez sur Get Key pour que la combinaison soit placée dans la deuxième ligne de votre fichier .xbindkeysrc.

syntaxe xvkbd

Du manuel:

\r - Return
\t - Tab
\b - Backspace
\e - Escape
\d - Delete
\S - Shift (modify the next character; please note that modify with ``\S'' will be ignored in many cases. For example, ``a\Cb\ScD\CE'' will be interpreted as a, Control-b, c, Shift-D, and Control-Shift-E.)
\C - Control (modify the next character)
\A - Alt (modify the next character)
\M - Meta (modify the next character)
\[keysym] - the keysym keysym (e.g., \[Left]), which will be processed in the similar matter with other general characters
\{keysym} - the keysym keysym (e.g., \{Left}), which will be processed in more primitive matter and can also be used for modofier keys such as Control_L, Meta_L, etc.; also, \{+keysym} and \{+keysym} will simulate press and release of the key, respectively [Version 3.3]
\Ddigit - delay digit * 100 ms
\xvalue - move mouse pointer (use "+" or "-" for relative motion)
\yvalue - move mouse pointer (use "+" or "-" for relative motion)
\mdigit - simulate click of the specified mouse button

J'adore savoir comment cela fonctionne et si la combinaison était adaptée à votre objectif. Il semble bon en tant que keymapper, mais pas nécessairement en tant que macro runner.

Mark Hewitt
la source
Salut @MarkHewitt! Merci beaucoup pour la réponse détaillée! Malheureusement, cela ne fonctionne pas très bien pour moi: la touche d'origine continue de passer, ce qui ruine le tout.
lolmaus - Andrey Mikhaylov