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 smmi rmm.
Inna funkcja, poprzedzająca znak zmiany znaczenia w odpowiedzi na Altklucz, została włączona do niektórych emulatorów terminali. Bash (właściwie readlinebiblioteka) 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 xmodmapnp 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 xmodmapnie xkbwiesz 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 translationzasobie. 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 ):
altIsNotMetai altSendsEscape(dodane w 2007 r .).
eightBitInputod 2006 r. odpowiada pierwotnemu sensowi trybu meta, a dla tego zdefiniowano sekwencję ucieczki, która zapewnia smmi rmm(ustawianie / usuwanie meta-trybu) możliwości terminala.
eightBitInputzostał 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.
metaSendsEscapepochodzi z 1999 r
eightBitInputjest 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 eightBitInputustawienie zasobów xterm stanowi część rozwiązania pozwalającego uzyskać wykonalny meta-klucz.
Dalsza lektura:
MENUklucz jest nawet zauważony przez X? Jakiego menedżera okien używasz - niektóre z nich mogą pomóc Ci przedefiniować klucze.