Meta-klucz Basha pierwotnie został zdefiniowany w ten sposób ( lib/readline/ChangeLog
):
Mon Jul 13 11:34:07 1992 Brian Fox (bfox@cubit)
* readline.c: (rl_variable_bind) New variable "meta-flag" if "on"
means force the use of the 8th bit as Meta bit. Internal variable
is called meta_flag.
Tak się dzieje w przypadku ncurses i xterm . A kilka terminali przewidziane do wykonywania tej funkcji opcjonalne (ten aspekt nie był rozpowszechniony Większość terminali można spotkać użytkowania Hardcoded zachowania (i nie bardzo ciekawe) W.. Terminfo ręcznych dokumentów stronie te możliwości terminali:
has_meta_key km km Has a meta key
(i.e., sets 8th-bit)
meta_off rmm mo turn off meta mode
meta_on smm mm turn on meta mode
(8th-bit on)
i wyjaśnia funkcję:
Jeśli terminal ma „klawisz meta”, który działa jak klawisz Shift, ustawiając 8-ty bit dowolnego przesyłanego znaku, fakt ten można wskazać za pomocą km
. W przeciwnym razie oprogramowanie przyjmie, że ósmy bit jest parzysty i zwykle zostanie wyczyszczony. Jeśli istnieją ciągi do włączania i wyłączania tego „trybu meta”, można je podać jako smm
i rmm
.
Inna funkcja, poprzedzająca znak zmiany znaczenia w odpowiedzi na Alt
klucz, została włączona do niektórych emulatorów terminali. Bash (właściwie readline
biblioteka) dokumentuje to użycie w swoim dzienniku zmian z 2004 roku:
lib/readline/callback.c
- use _rl_dispatch_callback and a chain of _rl_keyseq_contexts to
simulate the recursion used to decode multicharacter key sequences
(even things like ESC- as meta-prefix
Meta to specjalny przypadek klawisza modyfikującego . Podobnie jak controli shift, naciskasz go jednocześnie z innym klawiszem i oczekujesz, że zobaczysz coś innego niż samo naciśnięcie klawisza. X zapewnia klucze modyfikatora, przypisując nieco wartość modyfikatora przekazywaną w zdarzeniu X dla klucza. Naciśnięcia klawiszy mogą być wieloma zdarzeniami X; X zapewnia funkcje łączenia tych zdarzeń przy zachowaniu modyfikatorów.
X definiuje również symbole dla każdego klawisza, który może pojawić się na klawiaturze. Zapewnia inne wartości (takie jak Unicode) poprzez specjalną obsługę funkcji łączących zdarzenia.
Ale „meta” to szczególny przypadek.
Aplikacje X nie mają metaklucza, z wyjątkiem konwencji. X nie ma definicji klucza meta ani modyfikatora meta. Tradycyjnie terminale szukają Altklawisza i / lub jednego z modyfikatorów znanych xmodmap
np mod2
. Późniejsza funkcja xkb komplikuje rzeczy (ale nie zapewnia poprawy w stosunku do tej dyskusji), zapewniając kolejną warstwę informacji, aby znaleźć Altklucz.
Konwencja oczywiście może zabrać cię tylko do tej pory, biorąc pod uwagę, że ani xmodmap
nie xkb
wiesz nic szczególnego na temat meta . Na przykład xterm jest konfigurowalny i nie wszyscy użytkownicy chcą konfigurować meta w ten sam sposób. Na przykład Altmoże nie być zamierzonym meta-kluczem, np. Jeśli jest używany w translation
zasobie. Kolejnym klawiszem może być klawisz meta, ale użytkownicy (szczególnie ci, którzy używają sekwencji ucieczki w bash), mogą chcieć wysłać znak ucieczki po naciśnięciu Alt. Pamiętaj jednak, że dopóki nie zostanie skonfigurowany jako modyfikator, nic takiego się nie wydarzy: xterm sam nie łączy zdarzeń.
xterm ma kilka ustawień zasobów (udokumentowanych na stronie podręcznika ):
altIsNotMeta
i altSendsEscape
(dodane w 2007 r .).
eightBitInput
od 2006 r. odpowiada pierwotnemu sensowi trybu meta, a dla tego zdefiniowano sekwencję ucieczki, która zapewnia smm
i rmm
(ustawianie / usuwanie meta-trybu) możliwości terminala.
eightBitInput
został zmodyfikowany w 2003 roku w celu uwzględnienia UTF-8 poprzez przesunięcie zdekodowanych wartości Unicode o 128 zamiast surowych bajtów wejściowych.
metaSendsEscape
pochodzi z 1999 r
eightBitInput
jest znacznie starszy niż metaSendsEscape
. Zaimplementowano wybór pomiędzy trybem meta (dodanie ósmego bitu) lub prefiksem klucza escapeod X11R4 (1989). Ale funkcja została ustalona podczas uruchamiania: została sprawdzona podczas inicjalizacji, aby ustalić, czy wejście zostało ustawione tak, aby zezwalało na 8 bitów, czy tylko na 7. Po tym czasie nie uległo zmianie.
Niektórzy ludzie utożsamiają te dwa ( 8-bitowy i prefiks Escape), określając ten drugi jako tryb meta . W zależności od twojego punktu widzenia w tej sprawie eightBitInput
ustawienie zasobów xterm stanowi część rozwiązania pozwalającego uzyskać wykonalny meta-klucz.
Dalsza lektura:
MENU
klucz jest nawet zauważony przez X? Jakiego menedżera okien używasz - niektóre z nich mogą pomóc Ci przedefiniować klucze.