¿Cómo permitir que los acordes de las teclas del teclado cambien el mapa de teclas temporalmente?


9

Realmente me he acostumbrado a la funcionalidad "Modo Vi simultánea" de KeyRemap4MacBook que le permite mantener pulsado el sy dteclas a la vez y luego utiliza los h, j, k, y lteclas como las teclas de flecha. Cuando sy dse presionan entre sí, no so devento se activa, pero cuando escribo normalmente no se observan problemas de retraso con golpear so dde forma individual.

¿Cómo podría recrear esta funcionalidad en Linux (específicamente RHEL 6.4)?

Un par de ideas que tuve:

  1. Si s+ dpodría volver a asignar a un modificador, a continuación, las teclas h, j, k, l+ modificador podría ser asignada en consecuencia. (El teclado que estoy usando ahora no tiene teclas modificadoras de repuesto disponibles para usar en lugar de s+ d, además el punto del modo Vi simultáneo es mantener todos los dedos en la fila de inicio. CapsLockYa está reasignado a Controly Escape).

  2. Idealmente, encontraría una manera de hacer esto usando la configuración del sistema o algo así como el teclado XKB que ya estoy usando. Si eso no es posible, tal vez podría escribirse algo similar al programa xcape (que estoy usando y que permite que las teclas se asignen a diferentes pulsaciones de teclas y símbolos de teclas modificadoras). xcapeSin embargo, se dispara fuera de la liberación de teclas, por lo que tendría que modificarse para evitar que las teclas sy dsean demasiado lentas.


¿En RHEL 6.4? ¿Estás usando vim desde X o vía terminal?
Oteo

Ah, y ¿cómo mapeas CapsLock para Control AND Escape?
Oteo

Asigne Bloq Mayús a Control y luego use xcape (vinculado anteriormente) para asignar breves pulsaciones de control a Escape. En la pregunta, me refiero a un modo similar a Vi de KeyRemap4MacBook, no a vim. Hasta ahora, la opción más prometedora que encontré para lo que estoy buscando es usar el módulo Python Xlib de una manera similar a la utilizada por Plover. Hasta ahora, no he tenido mucho tiempo para trabajar en esto.
ws_e_c421

Respuestas:


2

No puede hacer esto con las herramientas estándar, tendría que escribir algo (probablemente gran parte del servidor x se verá afectado, y si desea que esto funcione fuera de X, habrá cambios en el núcleo).

La razón de esto es que las ideas en las que se basa (y está optimizado) el diseño no incluyen el acorde de teclas regulares o la emisión de caracteres de los modificadores.


Todavía estoy investigando esto (necesito más tiempo). Encontré el proyecto Plover que parecía proporcionar una plantilla para una solución basada en X, pero quiero cambiar a Wayland, así que dejé de buscarlo. Recientemente, descubrí caps2esc que usa libevdev y libudev para capturar y reasignar dispositivos dinámicamente. Creo que un enfoque como este podría funcionar para el acorde además de la reasignación, pero debe investigarse más a fondo (también preferiría una solución de libinput).
ws_e_c421

Mi comentario de libinput fue mal informado. Pensé que caps2esc funcionaba con el controlador xf86-input-evdev, que es una alternativa a libinput, pero en realidad funciona en el nivel libevdev, que es una biblioteca de nivel inferior utilizada por ambos proyectos. Las herramientas para caps2esc se han refactorizado en el proyecto de herramientas de intercepción . Creo que un complemento bien escrito para herramientas de intercepción podría proporcionar la característica que describí. Está en mi lista para investigar.
ws_e_c421

2

Entonces, después de cuatro años, finalmente tengo un borrador de una respuesta a esta pregunta. La respuesta es usar las herramientas de intercepción que usan libevdev para tomar la entrada del teclado y procesarla antes de volver a emitirla. En cuanto a asignación de teclas simultáneas, he hecho un plugin en bruto para la interceptación de las herramientas llamadas chorded de configuración de teclado que permite h, j, k, lactúan como las teclas de flecha sy dse presionan simultáneamente.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.