Caps de ligação bloqueiam para escapar no z-shell

2

Eu quero religar o Caps Lock para escapar no z-shell para fazer melhor uso do modo vi no editor de linhas do z-shell. Eu não quero revinculá-lo para todo o sistema. Isso é possível?

(se isso importa, eu estou no debian)

    
por jules 31.01.2014 / 15:41

1 resposta

1

Não, porque isso não é feito pelo shell Z.

Eventos brutos de criação / interrupção do teclado são fornecidos pelo dispositivo de teclado. Eles são processados por um emulador de terminal - seja aquele embutido no kernel do sistema operacional ou um GUI, como xterm , gnome-terminal , lxterminal e assim por diante. O emulador de terminal converte os eventos do teclado em seqüências de caracteres e os empurra para o lado "mestre" de um pseudo-terminal ou o lado "mestre" (geralmente oculto) de um console virtual. Eles passam pela disciplina de linha de terminal, e somente então faz o shell Z ver o resultado, como entrada lida do lado "escravo" do pseudo-terminal / console virtual.

As chaves "lock" e "modifier" não são tratadas na disciplina de linha. Pense nos dias de terminais reais (em vez de "pseudo" e "virtuais") ligados por linhas seriais para entender isso. Os caracteres que passam pela linha serial do terminal para o sistema já já tinham os modificadores aplicados. caps lock mais a já foi traduzido para "A" pelo terminal, e é isso que é enviado pelo terminal e o que chega na disciplina de linha. (Da mesma forma, control e c já foi traduzido pelo terminal para o caractere ETX do ASCII.)

Então, para ajustar o que caps lock - ou mesmo qualquer outro modificador -, você precisa ajustar o terminal . No seu caso, você tem que ajustar qualquer emulador de terminal que esteja usando.

  • Com os emuladores de terminal baseados no X Window System, você pode ter uma boa aparência com mapeamentos de teclado X, já que há uma camada de X entre o dispositivo de teclado bruto e o programa emulador de terminal.
  • Com os emuladores de terminal integrados em sistemas operacionais, geralmente há um sistema de mapeamento de teclado bastante diferente, envolvendo uma camada de mapeamento de código-chave-de-caracteres do sistema operacional no kernel do sistema operacional, com a qual você pode brincar. Ele varia muito de kernel para kernel (ou seja, Linux para BSD), e as ferramentas que você executa para ajustá-lo variam bastante, desde a distribuição Linux até a distribuição Linux (por exemplo, de localectl a dpkg-reconfigure console-setup a invoke-rc.d console-screen.sh ). >

Mas como isso altera o comportamento do seu terminal , ele afetará todos os programas que receberem entrada desse terminal. Para um emulador de terminal GUI, ele afetará todo programa que você executa que recebe sua entrada desse pseudo-terminal. Para o emulador de terminal no kernel que lida com os consoles virtuais, ele afetará cada programa que recebe sua entrada do console virtual.

Ele não afetará todo o sistema, mas afetará muito mais do que você deseja, o que é apenas para afetar o shell Z.

Leitura adicional

por 01.02.2014 / 15:33

Tags