Como usar a tecla Meta / Alt com tput?

4

Eu quero redefinir as combinações de teclas para a linha de comando de um dialeto lisp. A linha de comando é modelada após Vi e implementada com tput / terminfo. Eu quero uma versão alternativa com atalhos de teclado do Emacs, e gostaria de tentar sem usar gnu readline ou assim.

Uma atribuição de chave típica é assim:

(setq *XtF1 (in '("tput" "kf1") (line T)) ...

Esta questão é sobre o

("tput" "kf1")

parte, ignore o resto. Agora, "kf1" é fácil de encontrar na página de manual do terminfo:

   key_f1                     kf1     k1    F1 function key

Eu também encontrei 3 entradas para "meta":

   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)

Mas como posso usar essa informação para definir atalhos de teclado típicos do Emacs como, por exemplo, M-f, M-b, M-d etc. com tput?

    
por user17106 27.10.2012 / 13:30

1 resposta

2

O terminfo provavelmente não vai ajudar muito. Na maioria dos emuladores de terminal, você pode configurar com M-x envia <Esc>x ou x com o conjunto de 8 bits e a entrada terminfo não será magicamente atualizada quando o usuário fizer isso.

Além disso, a maioria dos conjuntos de caracteres são 8bits agora, então não faz muito sentido hoje em dia usar esse oitavo bit para o Meta.

Gostaria apenas de codificar M-x == <Esc>x (a sequência de dois caracteres 3 e x ). Desta forma, mesmo que o terminal não suporte esse modo, o usuário ainda pode digitar Esc , x em seqüência.

    
por 27.10.2012 / 19:23