¿Cuáles son los pasos necesarios para crear una nueva distribución del teclado en ubuntu?

43

El teclado que estoy tratando de crear tiene mucho Unicode y se ve así: El teclado que intento crear

No tener éxito con el siguiente tutorial:

Me preguntaba si alguien sería tan amable de proporcionar un mejor tutorial con instrucciones paso a paso.

Akiva
fuente
2
Mmh, esto me parece un duplicado . Lástima que ya hayas recompensado tu pregunta: /.
Glutanimate
@Glutanimate Oh ordenado; No vi eso. Sin embargo, todavía me habría ofrecido una respuesta mejor.
Akiva
Puedes usar este enlace. help.ubuntu.com/community/ComposeKey
Anandu M Das

Respuestas:

69

En Ubuntu 14.04 , los diseños de teclado se mantienen en

/usr/share/X11/xkb/symbols/


Cada uno de los archivos en este directorio contiene una serie de entradas del siguiente tipo:

    clave <AC01> {[a, A, aacute, Aacute]};

Esta entrada asigna una tecla en el teclado a varios caracteres específicos usando las siguientes convenciones:

  1. < Una C01> La primera letra Aindica que estamos buscando en el bloque de clave alfanumérica (otras opciones incluyen KP [for keypad]y FK [for Function Key]);

  2. <A C 01> La segunda letra Cindica la fila, contando desde la parte inferior en la que se encuentra la clave. (En un teclado estándar de EE. UU., La barra espaciadora está en fila AAy las teclas numéricas están en fila AE).

  3. <AC 01 > Los números 01indican la posición de la tecla, contando desde la izquierda e ignorando cualquier tecla especialmente nombrada como TABo ~(tilde): AC01está en la tercera fila hacia arriba, la primera tecla desde la izquierda (ignorando Caps Lock, si está presente); en un teclado estándar de EE. UU., esta es la tecla marcada "a".

  4. Los corchetes encierran la lista de caracteres asignados a cada tecla. Contiene hasta cuatro entradas, separadas por comas:

    1. a - La clave no modificada.
    2. A - El Shiftpersonaje.
    3. á - El Alt Grpersonaje. ( aacute )
    4. Á - El carácter Shift+ Alt Gr. ( Aacute )

¡Crear un mapa de teclado personalizado es tan fácil como reemplazar los caracteres que no quieres en una línea dada por los que sí quieres!

Por ejemplo:

Como anglosajón, escribo áy con Ámucha menos frecuencia que escribo æy Æ.

Para agregar los caracteres anglosajones a mi lista, simplemente reemplazo aacutey Aacutecon los nombres de entidad o puntos de código Unicode para æy Æ("aelig" o U00E6 y "AElig" o U00C6 , respectivamente):

    clave {[a, A, aelig, AElig]};

o

    clave {[a, A, U00E6, U00C6]};

Cuando termine de modificar la distribución de mi teclado, guardo el archivo con un nuevo nombre, "oe" en el mismo directorio.

Agregar un nuevo diseño de teclado al evdev.xmlarchivo.

Para usar la nueva distribución del teclado, necesitamos decir X11que existe. En Ubuntu 14.04 X11realiza un seguimiento de los teclados instalados en el /usr/share/X11/xkb/rules/evdev.xmlarchivo. Luego, agreguemos el nuevo diseño.

  1. Abrir X11/xkb/rules/evdev.xmlen un editor
  2. Ir al final de la <layoutList>sección (buscar </layoutList>). Agregue lo siguiente después de la última </layout>etiqueta, donde Xestá el nombre del archivo de la distribución de su teclado /usr/share/X11/xkb/symbols(en mi caso oe); Yun nombre corto adecuado; y Zun nombre largo y adecuado en una o más lenguas y aaauna de tres letras legal (ISO 639-2) código de idioma (por ejemplo, eng de Inglés):

    <layout>
     <configItem>
       <name> X </name>
       <shortDescription> Y </shortDescription>
       <description> Z </description>
       <languageList>
          <iso639Id> aaa </iso639Id>
       </languageList>
     </configItem>
     <variantList/>
    </layout>
    

Aquí está, siga la introducción completa

Otros enlaces relacionados:
http://ubuntuforums.org/showthread.php?t=188761&p=1092145#post1092145 http://www.charvolant.org/~doug/xkb/html/index.html

αғsнιη
fuente
Trabajé un poco en esta publicación; el contenido que proporcionó fue de muy alta calidad, pero aún necesita trabajo en mi opinión. Los tutoriales a los que se vinculó son muy antiguos y desactualizados, y están llenos de "Si está utilizando 8.04, haga xy y z". Me gustaría ver una respuesta tutorial completa (solo desearía poder aumentar la recompensa)
Akiva
@Akiva ¿No te ayudó esta respuesta? ¿Dónde tienes el problema?
αғsнιη
3
La respuesta ayudó; Explicar el AC01 estaba muy bien escrito, pero quería una respuesta completa con todos los pasos. Cuando te vinculaste a los otros tutoriales; son viejos y hay tres de ellos. Por el bien de otros usuarios, preferiría tener una respuesta completa aquí. Así por ejemplo; se encuentran más elementos en el archivo de texto más allá de la Clave <ac01> {[a, b, c, d]}, y también hay un archivo XML que debe editarse. También está la cuestión de cómo probar esto. Como dijo; Debería haber puesto una recompensa de 500 repeticiones en esto, porque es una tarea bastante grande crear un buen tutorial.
Akiva
2
Voy a responder a esto completamente porque tengo que definir la distribución de mi teclado de todos modos. cuando llegue a ello, lo responderé correctamente.
Akiva
¿Funciona solo para Xorg o también para ttys?
Narcolessico
18

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
  1. types- Cómo los modificadores activos cambian las claves producidas . (Shift, Control, Alt ~)
    Importante si desea personalizar las teclas modificadoras.
  2. geometry- Se utiliza para dibujar gráficos de teclado.
    Importante si está diseñando una pieza de hardware de teclado no estándar.
  3. rules- Obteniendo la configuración adecuada para su configuración actual.
    Necesitarás definir esto
  4. 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>
  5. symbols- ¿Qué valores se asignan a qué códigos de teclas .
    Aquí es donde definiremos nuestro diseño personalizado.
  6. 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 *_keysse 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

  1. A= bloque de teclas alfanuméricas.
    KP= Teclado
    FK= Tecla de función

  2. E= Fila en el teclado.
    Space Key= Afila
    Shift Key= Bfila
    Caps Lock= Cfila
    Tab Key= Dfila

  3. 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:

  1. Sin teclas modificadoras
  2. Shift
  3. Alt Gr
  4. Shift + Alt Gr
  5. 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 ] }
  • Backspacedebe ser BackSpace: Presta especial atención a la ortografía.
  • Una entrada vacía debe ser VoidSymbol.

¡La mejor medida de seguridad!

  1. 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

  2. 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 +xpermitir 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

  1. Ven aquí
  2. Archivo> Hacer una copia
  3. 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.
  4. 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
  5. XKBTab también tiene líneas. Se puede ignorar cualquier otra pestaña (su código).
  6. sudo vim /usr/share/X11/xkb/symbols/us
  7. 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

Akiva
fuente
La línea superior de su respuesta dice: "(WIP - No vote)". Parece que la respuesta es relativamente completa para mí, ¿tal vez esta nota debería eliminarse?
MattKelly 01 de
1
@ MattKelly Ahh, no he podido actualizarlo. De hecho, creé una hoja de cálculo que genera automáticamente el código en función de los caracteres que pones en un diseño de teclado simulado.
Akiva
Eso suena como una hoja de cálculo útil: ¿está disponible públicamente?
MattKelly
@MattKelly Aquí hay una copia. Necesita una gran cantidad de material extraído, y tal vez algunos manillares agregados, pero como puede ver, genera código: docs.google.com/spreadsheets/d/…
Akiva
Este enfoque no permite configurar RALT para que actúe como otro retroceso, o configurar la tecla de inserción para que actúe como comilla / tilde.
Craig Hicks