Estou tentando rodar o Emacs em um terminal. Ativei a "opção de uso como meta" nas preferências do terminal e, portanto, cerca de 95% estão funcionando corretamente.
A sequência de teclas ctrl- / (ou na notação Emacs C- /) é "desfazer". Essa sequência de teclas apenas faz com que o terminal toque uma campainha. Como faço para corrigir isso?
Respostas:
Controle -
/
não faz parte do conjunto de códigos de controle padrão . Não é diretamente representável como pressionamento de tecla em muitas emulações de terminal. Esse pressionamento de tecla é detectável apenas corretamente em certos "modos de scancode" ou "modo GUI" específicos da plataforma (onde a API informa exatamente quais chaves e modificadores estão sendo usados). O emulador de terminal está emitindo um sinal sonoro, porque é efetivamente um pressionamento de tecla inválido.Os códigos de controle padrão cobrem apenas as versões "Controle" do
@
A
-Z
[\]^_
(ASCII 0 - 31), e?
(ASCII 127)Na maioria dos programas de emulador de terminal em execução com a maioria dos layouts de teclas dos EUA, pode ser necessário pressionar Shiftpara gerar alguns dos "códigos de controle":
@
é Shift2)^
é Shift6)_
é Shift-)?
é Shift/); C-? geralmente é gerado por Backspace(nos teclados da Apple, a tecla "apenas excluir" sem o símbolo adicional ⌦) ou Delete(aquela com ⌦ nos teclados da Apple).No Emacs baseado em tty, geralmente você pode usar C-_ para em
undo
vez de C- /.fonte
Ctrl- / envia 0x1f, que é equivalente a Ctrl-_ desde os dias do VT102. Existem muitos emuladores VT100, mas na verdade são emuladores VT102. O iTerm2 funciona porque está seguindo esse comportamento.
Somente emuladores que cumprem estritamente a especificação VT100 não podem enviar Ctrl- /. Acredito que o aplicativo Terminal seja um deles.
O VT100 mascara 2 bits mais significativos do ASCII de 7 bits quando a tecla de controle é pressionada. / é 0x2f, o é 0x6f. Quando os 2 bits são mascarados, ambos são 0x0f. O VT100 pode enviar Ctrl-o, mas não Ctrl- /.
fonte