„1. Więc co robi modyfikator 5. poziomu? ”
Wybiera piąty poziom. Modyfikator drugiego poziomu (zwykłe przesunięcie) wybiera drugi poziom, a trzeci poziom wybiera trzeci poziom.
Powodem, dla którego modyfikator 5. poziomu wybiera piąty poziom zamiast czwartego poziomu (zaraz po modyfikatorze 3. poziomu) jest to, że te trzy modyfikatory można łączyć na różne sposoby, aby wybrać osiem różnych poziomów (w tym nie używać żadnego z modyfikatorów, który po prostu naciska klawisz bez takich modyfikatorów). Istnieje osiem kombinacji od 2 ↑ 3 = 8. Dla pierwszych dwóch modyfikatorów istnieją cztery kombinacje:
- Bez modyfikatorów (poziom 1)
- Modyfikator 2. poziomu, aka shift (poziom 2)
- Modyfikator 3. poziomu (poziom 3)
- 2. + 3. modyfikator (poziom 4)
Dodanie trzeciego modyfikatora (5 poziom) dodaje cztery kolejne poziomy.
„2. Jak mogę ustawić go tak, że mogę dostać 5 lub sześć różnych postaci z jednego klucza (zmodyfikowanej przez Shift Alt Gri Right
Ctrlna przykład)?”
Przede wszystkim potrzebujesz układu, który używa pięciu lub więcej znaków na klawisz. Możesz wybrać istniejący układ, ale jeśli chcesz po prostu dodać więcej poziomów do aktualnie używanego układu, może to nie być optymalne. Na przykład istnieje układ klawiatury Neo († 1), ale jest on „zoptymalizowany pod kątem języka niemieckiego”, więc nie jest tak świetny dla większości osób posługujących się językiem angielskim.
Mimo to warto pouczyć się, jakie klawisze Neo wybrał dla modyfikatora poziomu 5.
Neo najwyraźniej nazywa modyfikator poziomu 5 dla „Mod4”. Jak widać, używa klawisza po prawej stronie lewego klawisza Shift ( LSGT
) i prawego klawisza / AltGr
klawisza Alt . Jest to na klawiaturze europejskiej (105 klawiszy), która w porównaniu z klawiaturą amerykańską (104 klawisze) ma wąski lewy shift oraz wysoki i cienki klawisz powrotu. W przypadku układu klawiatury opartego na klawiaturze amerykańskiej konieczne może być wybranie innych klawiszy.
Wybór klawisza modyfikującego poziom 5
W odpowiedzi sup wybiera Xmodmap. W dzisiejszych czasach narzędzia takie jak Setxkbmap są zalecane zamiast Xmodmap. Xkb zawiera wiele predefiniowanych opcji, takich jak wybór modyfikatora poziomu 5. Jeśli skonsultujesz się z
man xkeyboard-config i lv5
szukasz, znajdziesz następujące opcje:
┌──────────────────────┬───────────────────────────────────────────────────┐
│ Option │ Description │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lsgt_switch_lock │ <Less/Greater> chooses 5th level; acts as onetime │
│ │ lock when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:ralt_switch_lock │ Right Alt chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lwin_switch_lock │ Left Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:rwin_switch_lock │ Right Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
└──────────────────────┴───────────────────────────────────────────────────┘
Udokumentowane opcje to LSGT
klucz, prawy klawisz Alt, prawy klawisz Windows i lewy klawisz Windows. Jak widzieliśmy, Neo korzysta z dwóch pierwszych opcji.
Powiedz, że chcesz użyć tej lv5:ralt_switch_lock
opcji z pewnym układem. To polecenie konfiguruje us
układ za pomocą tego klawisza modyfikującego poziom 5:
setxkbmap -option "lv5:ralt_switch_lock" us
Tak więc dla każdej z opcji, które są udokumentowane man xkeyboard-config
, użyj tego jako argumentu -option
podczas korzystania z Setxkbmap.
Jeśli te opcje nie są wystarczające i chcesz zdefiniować inny klucz, który będzie modyfikatorem poziomu 5, warto przyjrzeć się deklaracjom tych opcji. Wydaje się, że są w środku
/usr/share/X11/xkb/symbols/level5
. Deklaracja dla
lv5:ralt_switch_lock
wygląda następująco:
partial modifier_keys
xkb_symbols "ralt_switch_lock" {
include "level5(lock)"
key <RALT> {
type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
};
};
Prawa strona symbols[Group1]
deklaruje, jaki klucz lub znak powinien generować każdy poziom klucza. Wykorzystuje wszystkie osiem możliwych poziomów, ponieważ ma blokować modyfikator poziomu 5, gdy jest naciśnięty razem z innym klawiszem Shift poziomu 5. Tak więc emitowane są poziomy 5–8,
ISO_Level5_Lock
ponieważ dostęp do wszystkich tych poziomów uzyskuje się przez przytrzymanie klawisza Shift poziomu 5 i kombinacji innych klawiszy Shift (brak dla wszystkich). Jeśli chcesz tylko zachowania shift, a nie blokowania dwukrotnego naciśnięcia, możesz złożyć prostszą deklarację (z tego samego pliku):
// The right Alt key (while pressed) chooses the fifth shift level.
partial modifier_keys
xkb_symbols "ralt_switch" {
key <RALT> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
include "level5(modifier_mapping)"
};
Dodawanie dodatkowych poziomów do układu
Układy Xkb są dość modułowe. Możesz dołączyć istniejące układy i zmienić je. Możemy więc wybrać istniejący układ z mniej niż 5 poziomami i dodać do niego kilka poziomów.
Możesz tworzyć nowe układy, kopiując plik ze swoimi układami do
/usr/share/X11/xkb/symbols/
, lub gdziekolwiek to jest, że twoje narzędzia Xkb szukają układów. Ale to wymaga uprawnień sudo, więc nie jest to najlepsze rozwiązanie. Alternatywnie możesz skopiować strukturę katalogów xkb/
i umieścić swoje układy w odpowiednim katalogu xkb/
, mianowicie
symbols/
. Powiedzmy, że utworzyłeś plik xkb-tree/symbols/my-layouts
. Aby użyć układów zdefiniowanych w tym pliku, możesz użyć -print
opcji, setxkbmap
a następnie potokować dane wyjściowe xkbcomp
. Ten skrypt otoki przyjmuje układy jako dane wejściowe:
#!/bin/sh
# `-option ""` resets all options.
setxkbmap -option "" -layout "$1" \
-print |
xkbcomp -I"<path-to-project>/xkb-tree" - "$DISPLAY"
Jeśli chodzi o plik z układem, powiedzmy, że chcemy rozszerzyć układ „US international”, który wykorzystuje cztery poziomy. Po pierwsze, ustawiamy klawisze Shift poziomu 3 i poziomu 5 w taki sam sposób, jak Neo:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
};
Teraz chcemy dodać dodatkowe postacie. Jako przykładu wykorzystajmy cztery pierwsze klucze układów Qwerty. Klawisze te są Q
na R
, które odpowiadają <AD01>
na <AD04>
. Najpierw musimy sprawić, aby klucze mogły korzystać z maksymalnie ośmiu poziomów:
key.type[Group1] = "EIGHT_LEVEL";
Dla pierwszych czterech poziomów, aby ich nie przedefiniować, mapujemy je na NoSymbol
. Następnie dodajemy dwa poziomy. Na poziomie 5 dodajemy strzałki ←↓↑→
(† 2). Na poziomie 6 dodajemy klawisze kierunkowe. Nasz układ wygląda następująco:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
// Make the following keys capable of using eight levels.
key.type[Group1] = "EIGHT_LEVEL";
key <AD01> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
leftarrow, Left
] };
key <AD02> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
downarrow, Down
] };
key <AD03> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
uparrow, Up
] };
key <AD04> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
rightarrow, Right
] };
};
Aby go użyć, możemy użyć skryptu opakowania, który wykonaliśmy:
./setxkbmap-wrapper "my-layouts(mine)"
† 1: Neo jest de(neo)
w Xkb; setxkbmap "de(neo)"
.
† 2: Aby znaleźć nazwy symboliczne używane przez Xkb, wyszukaj plik o nazwie keysymdef.h
. Powinien znajdować się w katalogu o nazwie X11/
. Możesz także użyć nazw Unicode, na przykład U2192
dla U + 2192.
Cóż, po odrobinie kopania:
(1) Klucz do wyboru 5. poziomu robi dziwne rzeczy (dotyczące niektórych francuskich układów), które nie mają związku z tym, co chciałem zrobić. Zasadniczo określa, który klucz będzie działał jako ISO_Level5_Shift. ISO_Level5_Shift jest używany w niektórych niejasnych układach. Ta odpowiedź jest oparta na liczbie wyników, jakie Google daje podczas wyszukiwania „ISO_Level5_Shift” i na tych linkach .
(2) Nie można go użyć do uzyskania 6 symboli z jednego klucza fizycznego. Jednym ze sposobów na osiągnięcie tego jest użycie pliku .xmodmap umieszczonego w katalogu $ HOME.
Po pierwsze, rozkaz
podaje, jakie symbole klawiszy działają jako różne modyfikatory. W moim systemie wyglądało to następująco:
mod3 musi zostać skonfigurowany, aby używać 6 symboli z jednym kluczem. To musi zostać umieszczone w pliku .xmodmap:
Następnie xmodmap -pm dał mi:
Tam, gdzie klucz 94 jest kluczem, wybrałem działanie jako mod3. Kody różnych fizycznych kluczy można znaleźć za pomocą narzędzia wiersza polecenia xev (po prostu uruchom je i naciśnij różne klawisze, pojawią się kody).
Następnie, jeśli wstawię do pliku .xmodmap
lub biegnij
Otrzymuję sześć różnych symboli z jednego klawisza przy użyciu altgr, shift i keycode 94 (jest to bezużyteczny klawisz obok lewego klawisza shift na moim fizycznym układzie).
AKTUALIZACJA: jeśli potrzebujesz tylko pięciu symboli, wygodnie jest ustawić go w następujący sposób:
Czasami zdarza mi się, że w przeciwnym razie dostaję 4 zamiast 3.
źródło