Como o emacs pode ser configurado para aceitar as combinações de cursores Shift e Alt corretamente?

0

Estou usando o modo de organização em emacs no terminal e as combinações de Shift e Alt são inseridas como caracteres como 2A , 2B , 3A etc. Noto que vim e o terminal também exibem tal comportamento.

Existem algumas configurações de terminal que podem ser definidas para alterar esse comportamento, ou as configurações são feitas no emacs e no vim?

Seguindo o conselho de Gilles:

O emulador de terminal é o KDE Konsole . Por causa de alguns conselhos, entrei no menu Settings->Configure Shortcuts e desativei o uso de Shift+Left e Shift+Right para as opções Previous Tab e Next Tab .

Emacs

Shift+Left -> ^[2D

Shift+Right -> ^[2D

Alt+Left -> ^[3D

Alt+Right -> ^[3C

Vim

Shift+Left -> ^[[1;2D

Shift+Right -> ^[[1;2C

Alt+Left -> ^[[1;3D

Alt+Right -> ^[[1;3C
    
por vfclists 06.07.2017 / 20:46

3 respostas

1

Depois de seguir o conselho de Gilles em seu comentário sobre a questão e mais algumas pesquisas na web, encontrei este link link com algumas seções definem as chaves apropriadamente.

;; ;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;; Fix for screen / tmux
;; some snipped code

;; Fix ALT + arrow keys inside screen/tmux
(define-key input-decode-map "\e[1;3A" [M-up])
(define-key input-decode-map "\e[1;3B" [M-down])
(define-key input-decode-map "\e[1;3C" [M-right])
(define-key input-decode-map "\e[1;3D" [M-left])

Eu copiei e adaptei para Shift e parece que está funcionando bem agora.

    
por 10.07.2017 / 11:11
1

São configurações nas próprias aplicações, combinadas com o terminal.

O comportamento DEC VT, que está sendo imitado pelo Xterm, envia um evento-chave estendido como uma seqüência de controle com parâmetros. Muitos programas ingênuos não podem decodificá-los corretamente, já que erroneamente esperam que sequências de controle de teclado sejam sequências de controle simples sem parâmetros. Alguns deles são tão ingênuos que nem sequer procuram os caracteres intermediários e finais corretamente. Eles acabam decodificando apenas parte da sequência de controle e tratando o restante como entrada comum, resultando em esquisitices como o que você está vendo.

O vim é capaz de decodificar tais seqüências de teclado adequadamente, e como você garante que isso é explicado na seção xterm-modifier-keys de sua ajuda on-line.

O nvim também é, embora não exija que se configurem variáveis termcap na maneira que se faz para o vim.

A diferença é que aplicativos como esse também exigem que o terminal pense que está no modo de chave do cursor de aplicativo e modo de teclado do aplicativo . Normalmente, os terminais estão no modo normal da tecla do cursor e modo normal do teclado . Esses aplicativos informam ao terminal para alternar os modos, pela duração, imprimindo uma seqüência de controle no terminal.

    
por 06.07.2017 / 21:34
1

A descrição do terminal (supondo que seu TERM esteja definido como "xterm") fornece as informações necessárias (veja, por exemplo, o comentário antes do xterm+pcfkeys entrada).

xterm desde 1999 (e seus imitadores konsole e gnome-terminal, começando alguns anos mais tarde - consulte a FAQ do xterm ) para fornecer um conjunto estendido de teclas de função usando shift -, control, alt e met modificadores:

add parameters to function keys to indicate if shift, control or alt are set. The codes are based on a description of a DEC VT510 with a PC keyboard

Se xterm é "imitar" um DEC VT é obviamente discutível: na época, não havia nenhum manual disponível gratuitamente, então a "descrição" era via e-mail em algumas linhas de texto. Espere alguma variação.

O comportamento inicial foi alterado em 2002 , fazendo com que o xterm enviasse um número como o segundo parâmetro para dizer quais modificadores são usados (após o "1" que o emacs pode interpretar como uma contagem de repetição).

O acompanhamento com exemplos para o vim e o emacs citando o konsole é interessante:

  • Ambos são aplicativos termcap , o que significa que (embora os detalhes tenham sido fornecidos na descrição terminfo por mais de 10 anos, nenhum desses programas realmente usa a descrição do terminal, porque os nomes pelos quais esses recursos são referenciados não são (e provavelmente nunca serão) encontrados em um arquivo termcap.
  • Ambos os programas têm alguma solução alternativa, por exemplo, a documentação do vim para chaves deslocadas xterm , teclas modificadoras xterm , códigos xterm . Para o emacs, a documentação não é tão concisa (por exemplo, a discussão dos keymaps ), mas ajuda a ler o código-fonte, por exemplo, lisp / termo / xterm.el
  • A parte interessante é que o que o emacs ecoa é diferente do que o vim ecoa, e que o primeiro se parece com o comportamento antigo / obsoleto. Não apenas é obsoleto, mas os desenvolvedores do Konsole e do gnome-terminal copiando-o, não se preocuparam em seguir a mudança do xterm por mais de dez anos (dando origem a inúmeros relatórios de erros). A solução alternativa do emacs pode ser resultado disso.
por 09.07.2017 / 17:28