La meta clave de Bash se definió originalmente de esta manera ( 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.
Esa es la forma en que se interpreta con ncurses y xterm . Se proporcionaron algunos terminales para hacer que esta función sea opcional (ese aspecto no estaba muy extendido. La mayoría de los terminales que encontrará utilizan un comportamiento codificado (y no muy interesante). La página del manual de terminfo documenta estas capacidades de terminal:
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)
y explica la característica:
Si el terminal tiene una "meta clave" que actúa como una tecla shift, configurando el octavo bit de cualquier carácter transmitido, este hecho se puede indicar con km
. De lo contrario, el software asumirá que el octavo bit es paritario y generalmente se borrará. Si existen cadenas para activar y desactivar este "modo meta", se pueden asignar como smm
y rmm
.
Se incorporó una característica diferente, prefijando un carácter de escape en respuesta a la Alt
clave en algunos emuladores de terminal. Bash (en realidad la readline
biblioteca) documenta ese uso en su registro de cambios de 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 es un caso especial de una tecla modificadora . Al igual que controly shift, lo presiona al mismo tiempo que otra tecla y espera ver algo diferente de presionar la tecla por sí mismo. X proporciona claves modificadoras asignando un bit en el valor modificador pasado en el evento X para la clave. Las pulsaciones de teclas pueden ser múltiples eventos X; X proporciona funciones para combinar estos eventos mientras retiene los modificadores.
X también define símbolos para cada una de las teclas que pueden aparecer en su teclado. Proporciona otros valores (como Unicode) mediante un manejo especial en las funciones que combinan eventos.
Pero "meta" es un caso especial.
Las aplicaciones X no tienen metaclave, excepto por convención. X no tiene una definición para la metaclave o el meta modificador. Convencionalmente, los terminales buscan la Alttecla y / o uno de los modificadores se sabe que xmodmap
, por ejemplo, mod2
. La característica posterior de xkb complica las cosas (pero no proporciona ninguna mejora en relación con esta discusión) al proporcionar otra capa de información para encontrar la Altclave.
La convención, por supuesto, puede llevarte solo hasta cierto punto, dado que xmodmap
ni xkb
sabe nada en particular sobre meta . xterm, por ejemplo, es configurable y no todos los usuarios desean configurar meta de la misma manera. Por ejemplo, Altpuede no ser la metaclave deseada, por ejemplo, si se usa en el translation
recurso. Otra tecla puede ser la meta tecla, pero los usuarios (particularmente aquellos que usan secuencias de escape en bash) pueden querer que se envíe un carácter de escape cuando presionan Alt. Pero tenga en cuenta que a menos que esté configurado como un modificador, nada de eso sucede: xterm no combina eventos por sí mismo.
xterm tiene varias configuraciones de recursos (documentadas en la página del manual ):
altIsNotMeta
y altSendsEscape
(agregado en 2007 ).
eightBitInput
desde 2006 corresponde al sentido original del modo meta, y hay una secuencia de escape definida para esto que proporciona las capacidades del terminal smm
y rmm
(establecer / eliminar el modo meta).
eightBitInput
se modificó en 2003 para tener en cuenta UTF-8 cambiando los valores Unicode decodificados por 128 en lugar de los bytes de entrada sin formato.
metaSendsEscape
data de 1999
eightBitInput
es mucho mayor que metaSendsEscape
. Eso ha implementado una opción entre el modo meta (agregando el octavo bit) o prefijando una clave escapedesde X11R4 (1989). Pero la característica se determinó al inicio: se verificó durante la inicialización para determinar si la entrada se configuró para permitir 8 bits o solo 7. Después de eso, no cambió.
Algunas personas equiparan los dos ( 8th-bit y escape-prefix), refiriéndose a este último como meta modo. Dependiendo de su punto de vista sobre el asunto, la eightBitInput
configuración de recursos de xterm es parte de la solución para obtener una metaclave viable.
Otras lecturas:
MENU
clave es notada por X? ¿Qué administrador de ventanas está utilizando? Algunos de ellos pueden ayudarlo a redefinir sus claves.