Nota : Wayland usa xkb, pero muchas xTools han dejado de funcionar correctamente (por ejemplo, xdotool)
Nota : Este es un tutorial no exhaustivo. Es más útil para una persona que busca crear un nuevo diseño de ocho niveles y comprender la sintaxis.
Nota: se proporciona una solución rápida y sucia. Incluye una hoja de cálculo que genera automáticamente el código que necesita.
Comprender el directorio XKB
cd /usr/share/X11/xkb/ && ls
- types- Cómo los modificadores activos cambian las claves producidas . (Shift, Control, Alt ~)
Importante si desea personalizar las teclas modificadoras.
- geometry- Se utiliza para dibujar gráficos de teclado.
Importante si está diseñando una pieza de hardware de teclado no estándar.
- rules- Obteniendo la configuración adecuada para su configuración actual.
Necesitarás definir esto
- keycodes- El intérprete de los códigos clave para el hardware del teclado.
Ejemplo: los teclados Macintosh entienden la barra espaciadora como 57
. Lo escribimos sin embargo como<SPCE>
- symbols- ¿Qué valores se asignan a qué códigos de teclas .
Aquí es donde definiremos nuestro diseño personalizado.
- compat- Corto para la compatibilidad .
Comportamiento interno de modificadores (Shift, Control, Alt ...)
Flujo de trabajo
keycodes > symbols > compat
Solo toco symbols
: vea a continuación la solución rápida y sucia .
Mapas de símbolos
/symbols/us Cualquier archivo en este directorio sigue la misma estructura.
partial alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "US/ASCII";
key <TLDE> { [ quoteleft, asciitilde ] };
key <AE01> { [ 1, exclam ] };
modifier_map Shift { Shift_L, Shift_R };
};
partial - No es un mapa completo del teclado
alphanumeric_keysSección del teclado que se está mapeando. Se puede usar el múltiplo
Nota: Si no *_keys
se especifica ninguno , se supone un teclado completo.
"basic" - El nombre del mapa de símbolos
name[Group1]= "US/ASCII";Da un nombre único a este grupo de teclados.
modifier_mapPara editar teclas modificadoras . (Ctrl, Mayús, Alt ~)
Shift { Shift_L, Shift_R };No es normalmente necesario. Mapea ambos turnos al modificador de turno, también conocido como nivel 2.
key <TLDE> The Tilde Key - Por lo general, la tecla superior izquierda a la derecha encima de Tab
key <AE01> Ilustración - Compuesto de tres partes,AE01
A= bloque de teclas alfanuméricas.
KP= Teclado
FK= Tecla de función
E= Fila en el teclado.
Space Key= Afila
Shift Key= Bfila
Caps Lock= Cfila
Tab Key= Dfila
01= Posición de la llave en la fila.
AE01= 1
AB02= X
AC05=G
[+ ]- En lenguajes C; Los corchetes denotan una lista por la que se dividen los elementos ,. La longitud de la lista determina la cantidad de niveles. Por ejemplo:
key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }
Normalmente, los niveles denotan la siguiente pulsación de tecla con:
- Sin teclas modificadoras
- Shift
- Alt Gr
- Shift + Alt Gr
- Custom - Es poco probable que vea algo más allá del nivel 4.
En resumen, si quisiera asignar una tecla a shift + altgr, su lista tendría que tener al menos cuatro elementos.
ADVERTENCIA - Errores comunes
Cualquiera de estas líneas causará un error crítico y lo dejará sin un teclado utilizable:
key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
Backspace
debe ser BackSpace
: Presta especial atención a la ortografía.
- Una entrada vacía debe ser
VoidSymbol
.
¡La mejor medida de seguridad!
Haga una copia de seguridad del archivo que está editando:
sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP
Cree un script que pueda ejecutar sin contraseña de root
Algo como:
#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us
Si algo sale mal, use su mouse para ejecutar esa línea de código (contenida en el script bash al que le dio permiso a los sudoers. Recuerde chmod +x
permitir que se ejecute como un ejecutable).
Estrategias de respaldo para recuperar un sistema roto
- ADVERTENCIA: el teclado y el teclado en pantalla dejarán de funcionar con el más mínimo error.
- El mouse funcionará . La escritura se puede hacer resaltando los caracteres y pegándolos con un clic central. En Bash, puedes
return
(Presionando Enter) pegando un salto de línea.
- El teclado funcionará en modo de recuperación en el shell raíz. (Acceso desde bash)
- Siempre puede usar un entorno en vivo para arreglar archivos.
Solución rápida y sucia
- Ven aquí
- Archivo> Hacer una copia
- Mapper La hoja es donde define su diseño.
- Las entradas de un solo carácter se traducen en código entendido por el programa.
(se !
convierte U0021
). Unicode compatible!
- Las cadenas no se traducen y se tratan como están. ¡ASEGÚRESE DE QUE NO HAY HABILIDAD O ERRORES DE CASO !.
- Los cuadrados vacíos se rellenan automáticamente
VoidSymbol
.
- XKB-Sort La hoja contiene grupos clave, por ejemplo:
key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
Cambia esto en los 8 niveles:
1234567890-= // Physical Keys
![]"*{}/')(\ // Changed to these characters
- XKBTab también tiene líneas. Se puede ignorar cualquier otra pestaña (su código).
sudo vim /usr/share/X11/xkb/symbols/us
- Reemplazar un diseño de contenidos. Elige uno que no uses. Por ejemplo: cambié la entrada de colemak dejando la estructura intacta y reemplacé las teclas.
Lineas de interes:
key.type[group1]="EIGHT_LEVEL"; // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] };
key { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5