A meta-chave do Bash foi definida originalmente como esta ( 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.
É assim que é interpretado com ncurses e xterm . A poucos terminais previstos tornando este recurso opcional (esse aspecto não foi generalizada A maioria dos terminais você encontrará o uso comportamento codificado (e não muito interessante) As.. Terminfo documentos de página manual estas capacidades do 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)
e explica o recurso:
Se o terminal possui uma "meta-chave" que atua como uma tecla shift, configurando o 8º bit de qualquer caractere transmitido, esse fato pode ser indicado com km
. Caso contrário, o software assumirá que o oitavo bit é paridade e geralmente será limpo. Se existirem cadeias para ativar e desativar esse "modo meta", elas podem ser fornecidas como smm
e rmm
.
Um recurso diferente, prefixando um caractere de escape em resposta à Alt
chave, foi incorporado em alguns emuladores de terminal. O Bash (atualmente a readline
biblioteca) documenta esse uso em seu registro de alterações 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 é um caso especial de uma tecla modificadora . Como controle shift, você pressiona-o ao mesmo tempo que outra tecla e espera ver algo diferente de pressionar a tecla sozinha. X fornece chaves modificadoras atribuindo um bit ao valor do modificador passado no evento X da chave. As teclas pressionadas podem ser vários eventos X; X fornece funções para combinar esses eventos, mantendo os modificadores.
X também define símbolos para cada uma das teclas que podem aparecer no seu teclado. Ele fornece outros valores (como Unicode), com tratamento especial nas funções que combinam eventos.
Mas "meta" é um caso especial.
Os aplicativos X não têm metachave, exceto por convenção. X não tem uma definição para a meta chave ou o meta modificador. Convencionalmente, os terminais procuram a Alttecla -e / ou um dos modificadores conhecidos por xmodmap
, por exemplo mod2
,. O recurso posterior do xkb complica as coisas (mas não fornece melhorias em relação a esta discussão), fornecendo outra camada de informações para encontrar a Altchave.
A convenção, é claro, pode levá-lo apenas até agora, dado que nem xmodmap
nem xkb
sabemos nada em particular sobre a meta . O xterm, por exemplo, é configurável e nem todos os usuários desejam configurar a meta da mesma maneira. Por exemplo, Altpode não ser a meta-chave pretendida, por exemplo, se for usada no translation
recurso. Outra tecla pode ser a meta-chave, mas os usuários (especialmente aqueles que usam sequências de escape no bash) podem querer que um caractere de escape seja enviado ao pressionar Alt. Mas lembre-se de que, a menos que esteja configurado como um modificador, nada disso acontece: o xterm não combina eventos sozinho.
O xterm possui várias configurações de recursos (documentadas na página de manual ):
altIsNotMeta
e altSendsEscape
(adicionado em 2007 ).
eightBitInput
desde 2006 corresponde ao sentido original do modo meta, e há uma sequência de escape definida para isso, que fornece os recursos do terminal smm
e rmm
(definir / remover meta-modo).
eightBitInput
foi modificado em 2003 para levar em consideração o UTF-8, deslocando os valores Unicode decodificados por 128 em vez dos bytes de entrada brutos.
metaSendsEscape
data de 1999
eightBitInput
é muito mais velho que metaSendsEscape
. Isso implementou uma escolha entre o modo meta (adicionando o oitavo bit) ou o prefixo de uma chave escapedesde X11R4 (1989). Mas o recurso foi determinado na inicialização: foi verificado durante a inicialização para determinar se a entrada foi configurada para permitir 8 bits ou apenas 7. Depois disso, ela não foi alterada.
Algumas pessoas igualam os dois ( oitavo bit e prefixo de escape), referindo-se ao último como modo meta . Dependendo do seu ponto de vista sobre o assunto, a eightBitInput
configuração de recursos do xterm faz parte da solução para obter uma meta-chave viável.
Leitura adicional:
MENU
chave é notada pelo X? Qual gerenciador de janelas você está usando - alguns deles podem ajudá-lo a redefinir suas chaves.