Vuelva a asignar una combinación de teclas a otra combinación, por ejemplo, Super + Ctrl + Shift + J -> Ctrl + Shift + Izquierda

11

Quiero implementar una capa de teclas adicionales, para poder acceder a teclas no alfanuméricas sin tener que mover las muñecas.

He estado usando Autokey para este propósito, pero la experiencia no fue satisfactoria: tenía retrasos ocasionales y dejaba que las teclas originales se deslizaran en ciertas aplicaciones.

Entonces necesito una solución de bajo nivel.

lolmaus - Andrey Mikhaylov
fuente
es posible que tenga que crear un controlador de entrada virtual personalizado para hacer esto, que supongo que se escribiría en C
Amias
@ Amias, ¿puedes dar más detalles?
lolmaus - Andrey Mikhaylov
podría tener un controlador xinput que ejecute el controlador normal del teclado pero interprete las teclas antes de pasarlas a xorg, esto le daría un control completo pero sería un par de días moderadamente complejo para un programador C.
Amias

Respuestas:

10

Prueba una combinación de xbindkeys y xvkbd . xbindkeys escucha las claves y envía la traducción a xvkbd.

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

Abra .xbindkeysrc en su editor favorito. Comenté todo lo demás, pero es bueno hacer referencia si es necesario.

Para comprobarlo, intenté mapear Ctrl +; a Ctrl + V

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

Espero que estés buscando algo como esto

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

Guarde el archivo, luego ejecute xbindkeys

Para volver a cargar los cambios de configuración, eliminé el proceso xbindkeys y luego reinicié.

sintaxis de xbindkeys

Resolví la combinación de teclas usando una GUI para xbindkeys

sudo apt-get install xbindkeys-config
xbindkeys-config

Una vez que ejecute eso, presione Obtener clave para que la combinación se coloque en la segunda línea de su archivo .xbindkeysrc.

sintaxis xvkbd

Del 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

Me encanta saber cómo funciona y si la combinación fue adecuada para su propósito. Se ve bien como un mapeador de teclas, pero no necesariamente como un corredor de macros.

Mark Hewitt
fuente
¡Hola @ MarkHewitt! ¡Muchas gracias por la respuesta detallada! Desafortunadamente, esto no me funciona muy bien: sigue presionando la tecla original, lo que arruina todo.
lolmaus - Andrey Mikhaylov