showkey -s não exibe scancodes no CentOS 6.4

1

Estou rodando o CentOS 6.4 no vagrant e depois fazendo um SSH errante na caixa. Eu tenho tentado fazer o backspace funcionar corretamente por um tempo agora (como descrito aqui: Centos Terminal Configurando Backspace e Ctrl-h Corretamente )

Como parte disso, estou tentando descobrir quais códigos de verificação estão sendo enviados pela tecla backspace e são diferentes dos códigos de verificação enviados por Ctrl-H. Para isso, estou tentando usar showkey -s como especificado aqui . Isso não parece estar funcionando embora. Aqui está o que eu vejo no console, quando eu o executo como root.

[vagrant@localhost ~]$ sudo showkey -s
kb mode was UNICODE
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
sadfdsdfs[vagrant@localhost ~]$ sadfdsdfs

Como você pode ver, showkey parece estar apenas ecoando o que eu digito, em vez de me dar os scancodes. Alguma idéia do que está errado?

    
por Rohith 02.10.2014 / 13:57

2 respostas

1

Não funciona porque showkey simplesmente abre o primeiro dispositivo especial que testa (a partir de uma lista codificada) que é um terminal. Aqui está a lista que usa (citada de versão 1.15 ):

static char *conspath[] = {
        "/proc/self/fd/0",
        "/dev/tty",
        "/dev/tty0",
        "/dev/vc/0",
        "/dev/systty",
        "/dev/console",
        NULL
};

Quando você se conecta via ssh, os dois primeiros são pseudo-terminais, não passam um teste de acompanhamento que tenta determinar se eles são realmente consoles virtuais. Mas o primeiro é o terminal associado ao seu shell. Ao abrir um terminal diferente, você obtém o eco inesperado, etc.

Quando você executa showkey -s , ele modifica o modo de E / S terminal usando o descritor de arquivo que obtém abrindo o dispositivo (que é, a propósito 3 , diferente da entrada padrão < strong> 0 ). Faz o equivalente para aquele terminal de

stty -icanon -echo -isig

showkey modifica um terminal ( 3 ) que você (provavelmente) não está digitando e exibe o resultado no seu terminal. A entrada padrão original para showkey ainda está usando o modo de entrada original; o modo de entrada atualizado é aplicado ao outro terminal.

O comportamento não é um erro em showkey , porque ele só pode obter códigos de verificação do console virtual. Se você não for digitar tty0 , não obterá o resultado esperado. poderia ser mais agradável, dizendo-lhe mais claramente que você não obterá resultados úteis.

    
por 23.05.2016 / 22:56
0

Tente instruir o Vagrant a forçar a alocação de um TTY.

$ vagrant ssh -- -ttt ...

Achei isso como um comentário para este ServerFault Q & A intitulado: Comandos interativos com ssh vagante. Backspace não apaga o caracter .

    
por 02.10.2014 / 14:31