Ctrl modifier no PgUp ignorado no console do Linux

1

Estou executando o Linux no modo de texto de usuário único ( conforme descrito aqui ). Ctrl+PgUp e Ctrl+PgDn não se comportam como esperado. Usando cat -v - para mostrar os códigos do terminal, vejo que PgUp e Ctrl+PgUp produzem o mesmo código ^[[5~ . Fazendo a mesma coisa no modo gráfico eu vejo PgUp = > ^[[5~ e Ctrl+PgUp = > ^[[5;5~ (e ambas as chaves funcionam como esperado). Portanto conjecturo:

  • Não é um problema de hardware
  • O mapeamento PgUp = > ^[[5~ está funcionando conforme pretendido
  • O problema é que Ctrl+PgUp parece com PgUp quando chega ao terminal.

Para meu caso de uso (Vim), posso configurar PgUp para ser tratado como Ctrl+PgUp , mas, se possível, gostaria que eles tivessem comportamentos diferentes.

Existe alguma configuração que eu possa editar para corrigir isso? Alguma coisa modifica as sequências de caracteres antes de chegarem ao terminal?

Mais notas de investigações posteriores:

  • Em vez de inicializar no modo de texto, posso reproduzi-lo apenas caindo para tty1 ( Ctrl+Alt+F1 ).
  • Eu posso reproduzi-lo em uma máquina diferente.
  • Seguindo a sugestão do dirkt, corri echo $TERM e recebi linux .
por stewbasic 07.08.2017 / 23:40

1 resposta

1

Essa resposta útil me levou a uma solução. Meu mapa de teclado padrão (obtido de sudo dumpkeys ) continha

keycode 104 = Prior
...
string Prior = "3[5~"

eu adicionei

control keycode 104 = F105
...
string F105 = "3[5;5~"

e semelhantemente para PgDn . Observe que o alias não pode ser uma string arbitrária; tem que ser um dos keyyms listados por sudo dumpkeys -l , então eu escolhi o F105 que não foi usado.

Agora, cat -v - mostra ^[[5;5~ para Ctrl + PgUp como no modo gráfico. O Vim ainda não reagiu como esperado (não sei por que, já que funciona no modo gráfico) mas pelo menos Ctrl + PgUp produz uma seqüência de controle diferente de < kbd> PgUp , que eu remapear no meu .vimrc como de costume:

nnoremap ^[[5;5~ :tabp<Enter>
    
por 10.08.2017 / 00:17

Tags