showkey -s는 CentOS 6.4에서 스캔 코드를 표시하지 않습니다.

showkey -s는 CentOS 6.4에서 스캔 코드를 표시하지 않습니다.

나는 vagrant에서 CentOS 6.4를 실행하고 vagrant를 통해 상자에 SSH를 실행하고 있습니다. 나는 한동안 백스페이스 키가 제대로 작동하도록 노력해 왔습니다(아래 설명:Centos 터미널은 백스페이스 및 Ctrl-h를 올바르게 구성합니다.)

그 일환으로 백스페이스 키가 보내는 스캔 코드가 무엇인지, Ctrl-H가 보낸 스캔 코드와 다른지 알아보려고 합니다. 이를 위해 지정된대로 showkey -s를 사용해 보았습니다.여기. 그러나 이것은 작동하지 않는 것 같습니다. 이것이 루트로 실행할 때 콘솔에 표시되는 내용입니다.

[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

보시다시피 showkey는 스캔 코드를 제공하는 대신 내가 입력한 내용을 에코하는 것 같습니다. 무슨 일이 일어나고 있는지 아이디어가 있습니까?

답변1

테스트하는 첫 번째 특수 장치(하드코드된 목록에서)를 열면 작동하지 않습니다 showkey. 이는 터미널입니다. 이것이 사용하는 목록은 다음과 같습니다(에서 인용됨).버전 1.15):

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

처음 두 개는 SSH를 통해 연결할 때 의사 터미널입니다. 나중에 가상 콘솔인지 확인하려고 시도하지 마세요. 그러나 첫 번째는 쉘과 연관된 터미널입니다. 다른 터미널을 열면 예상치 못한 에코 등이 발생합니다.

이를 실행하면 showkey -s장치를 열어 얻은 파일 설명자를 사용하여 터미널 I/O 모드를 수정합니다(btw,, 표준 입력과 다릅니다.0). 그 기능은 다음과 같습니다.저것단말기

stty -icanon -echo -isig

showkey터미널 수정() 당신은 (아마도) 입력이 없으며 결과를 터미널에 표시합니다. 원래 표준 입력은 showkey여전히 ​​원래 입력 모드를 사용하며 업데이트된 입력 모드는 다른 터미널에 적용됩니다.

showkey이 동작은 가상 콘솔에서만 스캔 코드를 가져올 수 있으므로 버그가 아닙니다 . 을 입력하지 않으면 tty0기대한 결과를 얻을 수 없습니다. 그것할 수 있다친절하고 명확하게 말하면 유용한 결과를 얻지 못할 것입니다.

답변2

Vagrant에게 TTY 할당을 강제하도록 지시해보세요.

$ vagrant ssh -- -ttt ...

ServerFault라는 제목의 Q&A에 대한 댓글에서 이것을 발견했습니다.대화형 명령에는 vagrant ssh를 사용하십시오. 백스페이스 키는 문자를 삭제하지 않습니다..

관련 정보