Cómo personalizar las asignaciones de teclado con Wayland

20

Uso Linux en una Macbook con un teclado UK / GB y personalizo el mapa de teclas para resolver algunos problemas que causa la extraña distribución del teclado de Apple. Yo solía xmodmaphacer esto. Me gustaría probar Wayland, pero xmodmapno funciona en eso. ¿Cómo puedo lograr un resultado similar en Wayland? El .Xmodmaparchivo que uso contiene lo siguiente:

keycode  12 = 3 numbersign 3 sterling sterling sterling threesuperior sterling
clear Control
clear Mod4
add Control = Control_L Super_R
add Mod4 = Super_L
keysym Caps_Lock = NoSymbol Caps_Lock

Línea 1: en los teclados del Reino Unido Shift: 3es £, por lo que # generalmente tiene su propia tecla cerca Return. Pero en Mac # se obtiene con Altgr- 3. Como programador, uso # mucho más que £, por lo que esta línea los intercambia. Seleccionar el diseño de EE. UU. También logra esto, pero al hacerlo en Linux también se intercambian algunas otras teclas de uso común, mientras que en OS X esas otras teclas no se ven afectadas por EE. UU. / Reino Unido.

Líneas 2-5: Haga que la Cmdtecla derecha actúe como Derecha Ctrl, porque este teclado no tiene Ctrltecla física correcta .

Línea 6: CapsLockSolo funciona si lo presiona con Shift. No es específico de Mac, esta debería ser una opción estándar para todos los sistemas operativos y teclados.

realh
fuente
Estoy a mitad de camino: aparentemente Wayland usa xkb, y xmodmap está en desuso en X de todos modos. Desafortunadamente, xkb es considerablemente más complicado, y GNOME nunca consideró que los usuarios pudieran necesitar personalizarlo, así que he planteado una segunda pregunta .
realh

Respuestas:

11

Desafortunadamente, modificar la base de datos del sistema XKB /usr/share/X11/xkbes la única forma; de su otra pregunta parece que ha conseguido que esa parte funcione.

La limitación se debe principalmente a la inmadurez de Wayland y a la supervisión del diseño en XKB.

  • Las herramientas tienen gusto setxkbmapy xkbcompproporcionan una -Iopción para agregar una base de datos definida por el usuario para buscar (por ejemplo , ~/.xkbo ~/.config/xkb, con archivos y subdirectorios dispuestos como la base de datos del sistema). Estas herramientas interactúan con el servidor X, por lo que pueden ser útiles para configurar la Xwaylandcapa de compatibilidad para ejecutar aplicaciones X en Wayland. Pero actualmente no hablan los protocolos de Wayland.

  • Los protocolos de Wayland todavía están madurando. Actualmente parece que los protocolos input-methody text-inputson más relevantes, y ambos son inestables. Tampoco mencione nada acerca de alterar un mapa de teclas definido; Estos detalles se dejan al compositor.

  • GNOME y KDE proporcionan demonios de configuración de manejo de teclado que deben manejar las opciones XKB del sistema, incluido el cambio sobre la marcha. Que yo sepa, no hay forma de contar sobre las personalizaciones de los usuarios. Hasta donde sé, Weston y otros compositores confían en los archivos de configuración o las variables de entorno para configurar las opciones de XKB al inicio, y no proporcionan otra forma de cambiarlas que no sea salir y reiniciar.

  • Incluso en XKB, esto no es totalmente compatible. Su archivo de símbolos personalizado puede includeotros archivos de símbolos del sistema. Pero en la actualidad no hay includefuncionalidad para los archivos de reglas XKB, por lo que incluso si tuviera una herramienta que hablara con el compositor de Wayland y buscara sus personalizaciones personales, tendría que incluir manualmente todas las reglas que desea usar (es decir, copiar rules/evdev*desde el sistema XKB y modificarlo). libxkbcommontiene un problema abierto sobre este tema y un error relacionado .

quijotesco
fuente
1
Debería haber dejado más claro que ya he resuelto esto. Lo dije en la otra pregunta, pero la información es un poco inconexa. Tengo la intención de documentar esto más claramente cuando llegue el momento de agregar un blog a mi sitio web, luego tendré que recordar vincularlo aquí.
realh
claro, pero todavía era una pregunta sin respuesta, así que traté de abordar el .Xmodmapaspecto de Wayland equivalente .
quijotesco
3
Ahora he documentado esto en detalle en una publicación de blog .
realh
5

He estado utilizando las herramientas de intercepción para Linux con éxito para esto, y también conozco personas que producen otros complementos para sus asignaciones personalizadas . caps2esc es el primer complemento de prueba de concepto que uso todos los días y funciona tanto en X como en Wayland. La herramienta tiene un nivel un poco más bajo que el software de mapeo habitual, pero es bastante flexible, y mi plan para el próximo complemento es una herramienta de mapeo de acordes generalizada.

Descargo de responsabilidad: soy el autor.

pepper_chico
fuente
¡Las herramientas de intercepción se ven realmente interesantes! ¡Gracias por tu trabajo!
balu
1
No estoy seguro de cómo me siento al ejecutar toda mi entrada de teclado a través de un script de Python
Ace.C
4

Para aquellos que vienen aquí en 2018 (Ubuntu 17.10), la parte más crítica de esto se puede lograr usando la herramienta de ajuste de GNOME.

Gnome Tweak Tool> Teclado y mouse> Opciones de diseño adicionales> Ctrl se asigna a las teclas Win (y las teclas Ctrl habituales).

Bardi Harborow
fuente
2
¿El uso de "Gnome Tweak Tool" (lo que sea que sea eso) establece también las nuevas asignaciones para otros administradores / entornos / shells gráficos de Windows?
Mali Remorker
La herramienta de ajuste de Gnome no puede reasignar el bloqueo de mayúsculas.
andyn
@andyn my gnome-tweaks-3.34.0-1.fc31.noarchpuede reasignar Caps Lock: por ejemplo, 'Caps Lock también es Ctrl', 'Hacer que Caps Caps Lock sea un Esc adicional', 'Caps Lock como Ctrl' y muchos más.
maxschlepzig
2

Esta respuesta tiene la misma idea que la respuesta de quickotic pero solo con un ejemplo más detallado:

Gnome Tweaks tiene una lista de 20 o 30 ajustes de teclado que puedes hacer a través de xkb. En algún momento puedes encontrar el ajuste que estás buscando por defecto. En mi caso, quería cambiar la tecla de la pantalla de impresión con Menú.

La única opción para modificar la clave printscr disponible a través de xkb era reemplazarla con Win_R. Gunnar Hjalmarsson en este hilo me sugirió que modifique las modificaciones de xkb para que printscr / win_r haga en su lugar printscr / menu. Resolvimos una solución juntos y la voy a retransmitir aquí:

En la terminal, ingrese:

sudo su
nano /usr/share/X11/xkb/symbols/altwin

Al final del archivo encontrarás:

// Win is mapped to the PrtSc key (and the usual Win key).
partial modifier_keys
xkb_symbols "prtsc_rwin" {
    replace key <PRSC> { [ Super_R, Super_R ] };
    modifier_map Mod4 { <PRSC>, <RWIN> };
};

Elimine esta sección y reemplácela con esto:

// Menu is mapped to the PrtSc key (and the usual Win key).
xkb_symbols "prtsc_rwin" {
     replace key <PRSC> { [ Menu, Menu ] };
     modifier_map Mod4 { <PRSC>, <MENU> };
};

Para eliminar en nano, use la tecla de retroceso (resaltar y eliminar no funciona). Para pegar, use shift-ctrl-v. Para salir y guardar, presione ctrl-x, seleccione yes para sobrescribir y presione enter.

Reiniciar. En Gnome / Ubuntu Vaya a gnome-tweak-tools En herramientas de ajuste vaya a la sección Teclado y mouse, presione el botón Opciones de diseño adicionales y expanda el comportamiento de las teclas Alt / Win. Al seleccionar la opción en la parte inferior: Win se asigna a printscr (recuerde que solo hemos modificado este comportamiento para intercambiar print y Menu en lugar de print y Win). (Estoy seguro de que hay una forma de activar la opción xkb modificada en KDE, pero no la uso, así que no puedo darle el procedimiento exacto).

thebunnyrules
fuente