Uwaga : Wayland używa xkb, ale wiele xTools przestało działać poprawnie (na przykład xdotool)
Uwaga : jest to niewyczerpujący samouczek. Jest to najbardziej przydatne dla osoby, która chce stworzyć nowy układ ośmiopoziomowy i rozumie składnię.
Uwaga: Zapewniono szybkie i brudne rozwiązanie. Zawiera arkusz kalkulacyjny, który automatycznie generuje potrzebny kod.
Zrozumienie katalogu XKB
cd /usr/share/X11/xkb/ && ls
- types- Jak zmieniane są produkowane klucze przez Aktywne modyfikatory . (Shift, Control, Alt ~)
Ważne, jeśli chcesz dostosować klawisze modyfikujące.
- geometry- Używany do rysowania grafiki na klawiaturze.
Ważne, jeśli projektujesz niestandardowy element klawiatury.
- rules- Pobieranie odpowiedniej konfiguracji dla bieżącej konfiguracji.
Musisz to zdefiniować
- keycodes- Interpretator kodów klawiszy dla sprzętu klawiatury.
Przykład: klawiatury Macintosh rozumieją spację jako 57
. Piszemy to jednak jako<SPCE>
- symbols- Które wartości są przypisane do jakich kodów dostępu .
Tutaj zdefiniujemy nasz niestandardowy układ.
- compat- Skrót od kompatybilności .
Wewnętrzne zachowanie modyfikatorów (Shift, Control, Alt ...)
Przepływ pracy
keycodes > symbols > compat
Dotykam tylko symbols
: poniżej znajduje się szybkie i brudne rozwiązanie.
Mapy symboli
/symbols/us Każdy plik w tym katalogu ma tę samą strukturę.
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 - Nie pełna mapa klawiatury
alphanumeric_keysOdwzorowana część klawiatury. Można użyć wielu.
Uwaga: Jeśli nie *_keys
określono, zakłada się pełną klawiaturę.
"basic" - Nazwa mapy symboli
name[Group1]= "US/ASCII";Nadaje unikalną nazwę tej grupie klawiatur.
modifier_mapDo edycji klawiszy modyfikujących . (Ctrl, Shift, Alt ~)
Shift { Shift_L, Shift_R };Zwykle nie jest to konieczne. Mapuje obie zmiany do modyfikatora zmiany, czyli poziomu 2.
key <TLDE> Klawisz tyldy - zwykle lewy górny klawisz tuż nad Tab
key <AE01> Ilustracja - składa się z trzech części,AE01
A= alfanumeryczny blok klawiszy.
KP= Klawiatura
FK= klawisz funkcyjny
E= Wiersz na klawiaturze.
Space Key= Awiersz
Shift Key= Bwiersz
Caps Lock= Cwiersz
Tab Key= Dwiersz
01= Pozycja klucza w rzędzie.
AE01= 1
AB02= X
AC05=G
[+ ]- W językach C; Nawiasy kwadratowe oznaczają listę, według której pozycje są dzielone ,. Długość listy określa liczbę poziomów. Na przykład:
key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }
Zazwyczaj poziomy oznaczają następujące naciśnięcie klawisza z:
- Brak klawiszy modyfikujących
- Shift
- Alt Gr
- Shift + Alt Gr
- Custom - Prawdopodobnie nie zobaczy niczego poza poziomem 4.
Krótko mówiąc, jeśli chcesz zmapować klawisz shift + altgr, twoja lista musiałaby mieć co najmniej cztery elementy.
OSTRZEŻENIE - Typowe błędy
Każda z tych linii spowoduje błąd krytyczny i pozostawi cię bez użytecznej klawiatury:
key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
Backspace
powinno być BackSpace
: Zwróć szczególną uwagę na pisownię.
- Pusty wpis powinien być
VoidSymbol
.
Najlepszy środek bezpieczeństwa!
Wykonaj kopię zapasową edytowanego pliku:
sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP
Stwórz skrypt, który możesz uruchomić bez hasła roota
Coś jak:
#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us
Jeśli coś pójdzie nie tak, użyj myszki do uruchomienia tego wiersza kodu (zawartego w skrypcie bash, któremu zezwoliłeś sudoers. Pamiętaj, chmod +x
aby zezwolić na działanie jako plik wykonywalny).
Strategie tworzenia kopii zapasowych w celu odzyskania uszkodzonego systemu
- OSTRZEŻENIE: Klawiatura i klawiatura ekranowa przestaną działać z najmniejszym błędem.
- Mysz będzie działać . Pisanie może odbywać się poprzez wyróżnianie znaków i wklejanie ich za pomocą środkowego kliknięcia. W Bash możesz
return
(naciskając Enter) wklejając podział linii.
- Klawiatura będzie działać w trybie odzyskiwania w powłoce root. (Dostęp z bash)
- Zawsze możesz użyć środowiska na żywo do naprawy plików.
Szybkie i brudne rozwiązanie
- Przejdź tutaj
- Plik> Utwórz kopię
- Mapper Arkusz to miejsce, w którym definiujesz układ.
- Wpisy jednoznakowe są tłumaczone na kod rozumiany przez program.
( !
staje się U0021
). Obsługa Unicode!
- Ciągi nie są tłumaczone i są traktowane jak są. UPEWNIJ SIĘ, ŻE NIE MA ŻADNYCH błędów w pisowni lub PRZYPADKU !.
- Puste kwadraty są automatycznie wypełniane
VoidSymbol
.
- XKB-Sort Arkusz zawiera kluczowe grupy, na przykład:
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] };
Zmienia to na wszystkich 8 poziomach:
1234567890-= // Physical Keys
![]"*{}/')(\ // Changed to these characters
- XKBTab ma również linie. Każdą inną kartę można zignorować (jej kod).
sudo vim /usr/share/X11/xkb/symbols/us
- Zamień zawartość układu. Wybierz taki, którego nie będziesz używać. Na przykład: Zmieniłem wpis colemak pozostawiając nienaruszoną strukturę i wymieniłem klucze.
Linie zainteresowania:
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