Como mapear o atalho do terminal de CTRL-M para outra combinação

Como mapear o atalho do terminal de CTRL-M para outra combinação

Li em outro post que você pode digitar CtrlJou CtrlMno lugar da Returnchave no terminal, o que é ótimo. Mas o que eu quero poder fazer é mudar isso para outra combinação, por exemplo: Ctrlspacebar. Tentei remapear a F1chave, sem sucesso.

Isso é possível?

Responder1

Depende do que exatamente você deseja fazer.

os terminais têm dois modos principais, ambos os quais podem ser ajustados com configurações extras:

  1. modo cozido/canônico. Nesse modo, o terminal vem com um editor de linha interno onde os caracteres ^H(ou ^?), ^W, ^U(ou @), ^V(ou \) podem ser usados ​​para editar a linha. Nada é enviado para a leitura do aplicativo do dispositivo terminal até que o ^Jcaractere seja recebido.
  2. crumodo. Onde cada caractere está disponível para leitura para o aplicativo que lê o dispositivo terminal assim que é digitado, ou após um atraso ou após tantos terem sido inseridos dependendo dotempoeminparâmetros, mas em qualquer caso, não com aquele editor de linha interno.

Em ambos os casos, o ^Mcaractere (CR) pode ser traduzido automaticamente para ^J(LF) (ou ignorado para os terminais que enviam CR e LF ao pressionar Enter).

O primeiro modo é o modo padrão do terminal. O segundo modo é usado por aplicativos como zsh, bashou vique desejam assumir o controle da edição da linha.

No primeiro modo, você não pode alterar qual caractere é usado para aceitar a linha.

Mas você pode dizer ao seu terminal para enviar o ^Jcaractere ao pressionar esta ou aquela tecla. Por exemplo, com xterm, você pode usar o translationsrecurso X11 para alterar o mapeamento de teclas e solicitar que ele envie o que quiser ao pressionar uma determinada tecla. Se o seu terminal não suportar o remapeamento do teclado, você ainda poderá usar o GNU screenpara fazer a tradução para você. Por exemplo, se o seu terminal envia a ^[OPsequência de caracteres ao pressionar F1, você pode adicionar

bindkey \033OP "\012"

para você ~/screenrcdizer para enviar LF quando você pressionarF1

Para o segundo caso, onde os aplicativos assumem o controle da entrada, você ainda pode usar a mesma abordagem acima, mas também pode configurar cada aplicativo individual para fazer isso e aquilo quando você pressionaF1

Por exemplo, com zsh, o caractere LF está vinculado ao accept-line zshwidget. Você poderia fazer:

bindkey "^[OA" accept-line

para vincular F1-se ao mesmo widget.

Observe que Ctrl+Spacegeralmente envia o caractere NUL, ao qual você pode se referir como \0ou ^@.

informação relacionada