Remapeie uma combinação de teclas para outra combinação, por exemplo, Super + Ctrl + Shift + J -> Ctrl + Shift + Esquerda


11

Quero implementar uma camada de chave de adição, para poder acessar chaves não alfanuméricas sem precisar mover meus pulsos.

Eu tenho usado o Autokey para esse fim, mas a experiência foi insatisfatória: teve atrasos ocasionais e permitiu que as teclas originais deslizassem em certos aplicativos.

Então, eu preciso de uma solução de baixo nível.


você pode ter que criar controlador de entrada virtual personalizada para fazer isso que eu acho que seria escrito em C
Amias

@ Amias, você pode por favor elaborar?
Lolmaus # Andrey Mikhaylov 14/10

você pode ter um driver xinput que executa o driver de teclado normal, mas interpreta as teclas antes de passá-las para o xorg, isso lhe daria controle completo, mas seriam alguns dias moderadamente complexos para um programador em C.
Amias 14/10

Respostas:


10

Experimente uma combinação de xbindkeys e xvkbd . xbindkeys escuta as chaves e envia a tradução para xvkbd.

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

Abra .xbindkeysrc no seu editor favorito. Eu comentei todo o resto, mas é bom consultar, se necessário.

Para conferir, tentei mapear Ctrl +; para Ctrl + V

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

Espero que você esteja atrás de algo assim

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

Salve o arquivo e execute xbindkeys

Para recarregar as alterações de configuração, eu matei o processo xbindkeys e reiniciei.

sintaxe xbindkeys

Eu trabalhei com a combinação de teclas usando uma GUI para xbindkeys

sudo apt-get install xbindkeys-config
xbindkeys-config

Depois de executar isso, pressione Get Key para a combinação colocar na segunda linha do seu arquivo .xbindkeysrc.

sintaxe xvkbd

Do manual:

\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

Adoro ouvir como funciona e se a combinação foi adequada para o seu propósito. Parece bom como keymapper, mas não necessariamente como macro runner.


Hey @MarkHewitt! Muito obrigado pela resposta detalhada! Infelizmente, isso não funciona muito bem para mim: o pressionamento de tecla original continua aparecendo, o que estraga tudo.
lolmaus - Andrey Mikhaylov 30/10

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.