Quali sono i passaggi necessari per creare un nuovo layout di tastiera su Ubuntu?


43

La tastiera che sto cercando di creare ha un sacco di Unicode e assomiglia a questo: La tastiera che sto cercando di creare

Non avere successo con il seguente tutorial:

Mi chiedevo se qualcuno sarebbe stato così gentile da fornire un tutorial migliore con istruzioni dettagliate?


2
Mmh, questo mi sembra un duplicato . Peccato che hai già messo una taglia sulla tua domanda: /.
Glutanimate,

@Glutanimate Oh pulito; non l'ho visto. Avrei comunque cercato una risposta migliore.
Akiva,


Risposte:


69

In Ubuntu 14.04 , i layout di tastiera sono mantenuti

/usr/share/X11/xkb/symbols/


Ciascuno dei file in questa directory contiene una serie di voci del seguente tipo:

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

Questa voce associa un tasto sulla tastiera a un numero di caratteri specifici usando le seguenti convenzioni:

  1. < Un C01> La prima lettera Aindica che stiamo cercando nel blocco tasto alfanumerico (altre opzioni includono KP [for keypad]e FK [for Function Key]);

  2. <A C 01> La seconda lettera Cindica la riga, contando dal basso in cui si trova la chiave. (In una tastiera americana standard, la barra spaziatrice è nella riga AAe i tasti numerici sono nella riga AE).

  3. <AC 01 > I numeri 01indicano la posizione della chiave, contando da sinistra e ignorando qualsiasi chiave con un nome speciale come TABo ~(tilde): si AC01trova nella terza riga in alto, prima chiave da sinistra (ignorando Caps Lock, se presente); su una tastiera americana standard, questo è il tasto contrassegnato con "a".

  4. Le parentesi racchiudono l'elenco dei caratteri assegnati a ciascun tasto. Questo contiene fino a quattro voci, separate da virgole:

    1. a - La chiave non modificata.
    2. A - Il Shiftpersonaggio.
    3. á - Il Alt Grpersonaggio. ( acuto )
    4. Á - Il carattere Shift+ Alt Gr. ( Acuto )

Creare una mappa della tastiera personalizzata è facile come sostituire i caratteri che non vuoi in una data riga con quelli che fai!

Per esempio:

Come anglosassone, scrivo áe Ámolto meno frequentemente di quanto scrivo æe Æ.

Per aggiungere i caratteri anglosassoni al mio elenco, sostituisco semplicemente aacutee Aacutecon i nomi delle entità o i punti di codice Unicode per æe Æ("aelig" o U00E6 e "AElig" o U00C6 , rispettivamente):

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

o

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

Quando ho finito di modificare il layout della tastiera, salvo il file con un nuovo nome, "oe" nella stessa directory.

Aggiunta di un nuovo layout di tastiera al evdev.xmlfile.

Per utilizzare il nuovo layout di tastiera, dobbiamo dire X11che esiste. In Ubuntu 14.04 X11tiene traccia delle tastiere installate nel /usr/share/X11/xkb/rules/evdev.xmlfile. Quindi consente di aggiungere il nuovo layout al suo interno.

  1. Apri X11/xkb/rules/evdev.xmlin un editor
  2. Vai alla fine della <layoutList>sezione (cerca </layoutList>). Aggiungi quanto segue dopo l'ultimo </layout>tag, dove Xè il nome del file del layout della tastiera in /usr/share/X11/xkb/symbols(nel mio caso oe); Yun nome breve adatto; e Zun nome lungo, adatto in una o più lingue e aaauna di tre lettere legale (ISO 639-2) codice della lingua (ad esempio eng per inglese):

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

Eccolo, segui la completa introduzione

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


Ho lavorato un po 'su questo post; il contenuto che hai fornito era di altissima qualità, ma secondo me ha ancora bisogno di lavoro. I tutorial a cui sei collegato sono molto vecchi e obsoleti e pieni di "Se stai usando 8.04, fai xy e z". Vorrei vedere una risposta completa al tutorial (vorrei solo poter aumentare la taglia)
Akiva

@Akiva Non ti è stata d'aiuto questa risposta? Dove hai il problema?
αғsнιη,

3
La risposta ha aiutato; Spiegare l'AC01 è stato davvero ben scritto, ma volevo una risposta completa con tutti i passaggi. Quando sei collegato ad altri tutorial; sono vecchi e ce ne sono tre. Per il bene di altri utenti, preferirei avere una risposta completa fornita qui. Quindi per esempio; ci sono più elementi trovati nel file di testo oltre alla chiave <ac01> {[a, b, c, d]} e c'è anche un file XML che deve essere modificato. C'è anche la domanda su come testarlo. Come detto; Avrei dovuto dare una ricompensa di 500 rappresentanti su questo, perché è un compito abbastanza grande creare un buon tutorial.
Akiva,

2
Vado a rispondere a questa domanda a tutti gli effetti perché devo comunque definire il layout della mia tastiera. quando ci arrivo, risponderò correttamente.
Akiva,

Funziona solo per Xorg o anche per ttys?
Narcolessico,

18

Nota : Wayland usa xkb, ma molti xTools hanno smesso di funzionare correttamente (ad esempio xdotool)

Nota : questo è un tutorial non esaustivo. È molto utile per un individuo che cerca di creare un nuovo layout a otto livelli e comprendere la sintassi.

Nota: viene fornita una soluzione rapida e sporca. Include un foglio di calcolo che genera automaticamente il codice necessario.


Comprensione della directory XKB

cd /usr/share/X11/xkb/ && ls
  1. types- Come le chiavi prodotte vengono modificate dai modificatori attivi . (Shift, Control, Alt ~)
    Importante se si desidera personalizzare i tasti modificatori.
  2. geometry- Utilizzato per disegnare la grafica della tastiera.
    Importante se si sta progettando un componente hardware non standard della tastiera.
  3. rules- Recupero della configurazione appropriata per la configurazione corrente.
    Dovrai definirlo
  4. keycodes- L'interprete dei codici chiave per l'hardware della tastiera.
    Esempio: le tastiere Macintosh comprendono la barra spaziatrice come 57. Lo scriviamo comunque come<SPCE>
  5. symbols- Quali valori sono assegnati a quali codici chiave .
    Qui è dove definiremo il nostro layout personalizzato.
  6. compat- Abbreviazione di compatibilità .
    Comportamento interno dei modificatori (Shift, Control, Alt ...)

Flusso di lavoro

keycodes > symbols > compat

Tocco solo symbols: vedi sotto per la soluzione Quick and Dirty .


Mappe dei simboli

/symbols/us Qualsiasi file in questa directory segue la stessa struttura.

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 - Non una mappa tastiera completa

alphanumeric_keysSezione della tastiera da mappare. È possibile utilizzare multipli
Nota: se non *_keysviene specificato alcun valore , si presuppone una tastiera completa.

"basic" - Il nome della mappa dei simboli

name[Group1]= "US/ASCII";Fornisce un nome univoco a questo gruppo di tastiere.

modifier_mapPer modificare i tasti modificatori . (ctrl, shift, alt ~)

Shift { Shift_L, Shift_R };Di solito non necessario. Associa entrambi i turni al modificatore del cambio, noto anche come livello 2.

key <TLDE> Il tasto Tilde - Di solito il tasto in alto a sinistra a destra sopra la scheda

key <AE01> Illustrazione - Composto da tre parti,AE01

  1. A= blocco tasti alfanumerico.
    KP= Tastiera
    FK= Tasto funzione

  2. E= Fila sulla tastiera.
    Space Key= Ariga
    Shift Key= Briga
    Caps Lock= Criga
    Tab Key= Driga

  3. 01= Posizione della chiave sulla riga.
    AE01= 1
    AB02= X
    AC05=G

[+ ]- In lingue C; Le parentesi quadre indicano un elenco in base al quale vengono divisi gli elementi ,. La lunghezza dell'elenco determina la quantità di livelli. Per esempio:

key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }

In genere, i livelli indicano il seguente tasto premuto con:

  1. Nessun tasto modificatore
  2. Shift
  3. Alt Gr
  4. Shift + Alt Gr
  5. Custom - Difficilmente vedrà nulla oltre il livello 4.

In breve, se si desidera mappare una chiave per shift + altgr, l'elenco dovrebbe essere lungo almeno quattro elementi.


ATTENZIONE - Errori comuni

Entrambe queste righe causeranno un errore critico e ti lasceranno senza una tastiera utilizzabile:

key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
  • Backspacedovrebbe essere BackSpace: presta particolare attenzione all'ortografia.
  • Una voce vuota dovrebbe essere VoidSymbol.

La migliore misura di sicurezza!

  1. Eseguire il backup del file che si sta modificando:

    sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP

  2. Crea uno script che puoi eseguire senza password di root

Qualcosa di simile a:

#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us

Se qualcosa va storto, usa il mouse per eseguire quella riga di codice (contenuta nello script bash a cui hai dato il permesso a sudoers. Ricorda chmod +xdi consentire l'esecuzione come eseguibile.)


Strategie di backup per ripristinare un sistema guasto

  • ATTENZIONE: la tastiera e la tastiera su schermo cesseranno di funzionare con il minimo errore.
  • Il mouse funzionerà . La digitazione può essere eseguita evidenziando i caratteri e incollandoli usando il clic centrale. In Bash, puoi return(Premere Invio) incollando un'interruzione di riga.
  • La tastiera funzionerà in modalità di ripristino nella shell principale. (Accessibile da bash)
  • È sempre possibile utilizzare un ambiente live per correggere i file.

Soluzione rapida e sporca

  1. Vai qui
  2. File> Crea una copia
  3. Mapper Il foglio è dove si definisce il layout.
    • Le voci a carattere singolo vengono tradotte in codice compreso dal programma.
      ( !diventa U0021). Unicode supportato!
    • Le stringhe non vengono tradotte e vengono trattate così come sono. Assicurarsi che non vi siano errori di ortografia o di caso !.
    • I quadrati vuoti vengono riempiti automaticamente VoidSymbol.
  4. XKB-Sort Il foglio contiene gruppi di chiavi, ad esempio:
    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 questo su tutti e 8 i livelli:
    1234567890-= // Physical Keys
    ![]"*{}/')(\ // Changed to these characters
  5. XKBTab ha anche delle linee. Ogni altra scheda può essere ignorata (il suo codice).
  6. sudo vim /usr/share/X11/xkb/symbols/us
  7. Sostituisci i contenuti di un layout. Scegli quello che non userai. Ad esempio: ho modificato la voce di colemak lasciando intatta la struttura e sostituito le chiavi.

Linee di interesse:

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


La prima riga della tua risposta dice: "(WIP - Non votare.)". La risposta mi sembra relativamente completa: forse questa nota dovrebbe essere rimossa?
MattKelly,

1
@MattKelly Ahh non ho appena avuto modo di aggiornarlo. In realtà ho creato un foglio di calcolo che genera automaticamente il codice in base a quali caratteri hai inserito in un layout tastiera finto.
Akiva,

Sembra un foglio di calcolo utile: è disponibile al pubblico?
MattKelly,

@MattKelly Ecco una copia. Ha bisogno di un sacco di cruft rimosso e forse alcuni manubri aggiunti, ma come puoi vedere genera codice: docs.google.com/spreadsheets/d/…
Akiva

Questo approccio non consente di impostare RALT come altro backspace o di impostare la chiave di inserimento come backquote / tilde.
Craig Hicks,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.