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
- types- Come le chiavi prodotte vengono modificate dai modificatori attivi . (Shift, Control, Alt ~)
Importante se si desidera personalizzare i tasti modificatori.
- geometry- Utilizzato per disegnare la grafica della tastiera.
Importante se si sta progettando un componente hardware non standard della tastiera.
- rules- Recupero della configurazione appropriata per la configurazione corrente.
Dovrai definirlo
- 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>
- symbols- Quali valori sono assegnati a quali codici chiave .
Qui è dove definiremo il nostro layout personalizzato.
- 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 *_keys
viene 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
A= blocco tasti alfanumerico.
KP= Tastiera
FK= Tasto funzione
E= Fila sulla tastiera.
Space Key= Ariga
Shift Key= Briga
Caps Lock= Criga
Tab Key= Driga
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:
- Nessun tasto modificatore
- Shift
- Alt Gr
- Shift + Alt Gr
- 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 ] }
Backspace
dovrebbe essere BackSpace
: presta particolare attenzione all'ortografia.
- Una voce vuota dovrebbe essere
VoidSymbol
.
La migliore misura di sicurezza!
Eseguire il backup del file che si sta modificando:
sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP
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 +x
di 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
- Vai qui
- File> Crea una copia
- 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
.
- 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
- XKBTab ha anche delle linee. Ogni altra scheda può essere ignorata (il suo codice).
sudo vim /usr/share/X11/xkb/symbols/us
- 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