La meta chiave di Bash era originariamente definita in questo modo ( 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.
Questo sembra essere il modo in cui viene interpretato ncurses e xterm . A pochi terminali previsti per rendere questa funzione opzionale (questo aspetto non era diffusa La maggior parte dei terminali si incontreranno uso comportamento hardcoded (e non molto interessante) I.. Terminfo documenti delle pagine di manuale queste capacità del terminale:
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)
e spiega la funzione:
Se il terminale ha una "meta chiave" che funge da tasto shift, impostando l'ottavo bit di qualsiasi carattere trasmesso, questo fatto può essere indicato con km
. Altrimenti, il software supporrà che l'ottavo bit sia parità e che di solito verrà cancellato. Se esistono stringhe per attivare e disattivare questa "meta-modalità", possono essere fornite come smm
e rmm
.
Una funzione diversa, che precede un carattere di escape in risposta a Alt
chiave, è stata incorporata in alcuni emulatori di terminale. Bash (in realtà la readline
biblioteca) documenta tale utilizzo nel suo log delle modifiche del 2004:
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 è un caso speciale di un tasto modificatore . Come controle shift, lo premi contemporaneamente a un altro tasto e ti aspetti di vedere qualcosa di diverso dalla pressione del tasto da solo. X fornisce i tasti modificatori assegnando un bit nel valore del modificatore passato nell'evento X per il tasto. I tasti premuti possono essere più eventi X; X fornisce funzioni per combinare questi eventi mantenendo i modificatori.
X definisce anche simboli per ciascuno dei tasti che potrebbero apparire sulla tastiera. Fornisce altri valori (come Unicode) mediante una gestione speciale nelle funzioni che combinano eventi.
Ma "meta" è un caso speciale.
Le applicazioni X non hanno metachiave, se non per convenzione. X non ha una definizione per la meta chiave o il meta modificatore. Convenzionalmente, i terminali cercano il Alttasto-e / o uno dei modificatori noti xmodmap
, ad esempio mod2
. Più tardi funzione xkb complica le cose (ma non fornisce alcun miglioramento rispetto a questa discussione) fornendo un altro livello di informazioni per trovare la Altchiave.
La convenzione ovviamente può portarti solo così lontano, dato che né xmodmap
né xkb
sapere nulla in particolare sulla meta . xterm, per esempio, è configurabile e non tutti gli utenti vogliono configurare meta allo stesso modo. Ad esempio, Altpotrebbe non essere la meta-chiave desiderata, ad esempio se viene utilizzata nella translation
risorsa. Un'altra chiave potrebbe essere la meta-chiave, ma gli utenti (in particolare quelli che usano sequenze di escape in bash) potrebbero voler inviare un carattere di escape quando premono Alt. Ma tieni presente che a meno che non sia configurato come a modificatore, nulla di tutto ciò accade: xterm non combina gli eventi da solo.
xterm ha diverse impostazioni delle risorse (documentate nella pagina del manuale ):
altIsNotMeta
e altSendsEscape
(aggiunto nel 2007 ).
eightBitInput
dal 2006 corrisponde al senso originale della meta-modalità, e per questo esiste una sequenza di escape che fornisce le funzionalità del terminale smm
e rmm
(imposta / rimuovi meta-modalità).
eightBitInput
è stato modificato nel 2003 per tenere conto di UTF-8 spostando i valori Unicode decodificati di 128 anziché i byte di input non elaborati.
metaSendsEscape
date da 1999
eightBitInput
è molto più vecchio di metaSendsEscape
. Ciò ha implementato una scelta tra la modalità meta (aggiungendo l'ottavo bit) o il prefisso di una chiave conescape da X11R4 (1989). Ma la funzione è stata determinata all'avvio: è stata verificata durante l'inizializzazione per determinare se l'ingresso era impostato per consentire 8 bit o solo 7. Successivamente, non è cambiato.
Alcune persone identificano i due ( ottavo bit e prefisso di escape), riferendosi a quest'ultimo come meta mode. A seconda del punto di vista sull'argomento, ileightBitInput
impostazione delle risorse di xterm fa parte della soluzione per ottenere una meta-chiave realizzabile.
Ulteriori letture:
MENU
chiave viene notata anche da X? Quale gestore di finestre stai usando - alcuni di essi possono aiutarti a ridefinire le tue chiavi.