
Me doy cuenta de que la reasignación de teclas de flecha es un problema antiguo, sin embargo, parece que no puedo encontrar una buena solución que me permita seleccionar texto con SHIFT + teclas reasignadas como lo haría con las teclas de flecha estándar.
Por ejemplo, si reasigno Bloq Mayús a ISO_Level3_Shift y configuro xkb_symbols para leer
key <AC08> { [ k, K , Down, Down] };
o
key <AC08> { type="THREE_LEVEL",
[ k, K , Down ] };
Al presionar Mayús+Bloq Mayús+K se comportará exactamente como Bloq Mayús+K (mientras que Mayús+Abajo se comporta de manera diferente a Abajo solo).
Tuve algo más de éxito usando utilidades macro de nivel superior y generando eventos de teclado (es decir, generar las pulsaciones de teclas de mayúsculas y flechas); Sin embargo, ese enfoque tiene una serie de problemas diferentes (a menudo, la respuesta de la interfaz de usuario a una pulsación de tecla simulada es diferente de la pulsación de tecla "real" y también hay problemas de rendimiento). Puedo escribir más rápido de lo que la cosa puede manejar.
Tl;dr; ¿Cómo se puede seleccionar Mayús usando las teclas de flecha reasignadas debajo de X?
Respuesta1
Puedes usar preserve
para eso: agrega a tu definición de tipo (por ejemplo THREE_LEVEL
) la línea
preserve[LevelThree+Shift] = Shift;
Esto le dice a xkb que conserve el modificador de desplazamiento cuando determine el nivel apropiado de su combinación de modificadores en el caso de LevelThree + Shift
. El modificador de turno se pasa para que lo utilice el kit de herramientas o la aplicación (consulte también aquí:usando preservar con tipos).
Tenga en cuenta que esto tiene un impacto, por ejemplo, en cómo la aplicación interpreta las combinaciones de teclas: si hubiera definido lo anterior preservar y
key <AC08> { type="THREE_LEVEL", [ k, K, kappa ] };
y presionaría, Ctrl + Shift + LevelThree + <AC08>
la aplicación lo leería como una combinación de teclas Ctrl + Shift + kappa
(en lugar de normalmente Ctrl + kappa
) porque el modificador de mayúsculas se conserva y se pasa a la aplicación.