역방향 제어 코드 조회 터미널

역방향 제어 코드 조회 터미널

내가 이해한 바에 따르면 터미널은 일반적으로 영숫자가 아닌 문자의 시퀀스를 나타내기 위해 ANSI 제어 코드를 사용합니다. 예를 들어 .inputrcLinux에서 Bash를 편집할 때 다음과 같은 코드 시퀀스를 쉽게 찾을 수 있습니다.

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word

위의 명령정의Bash 명령 history-search-backward등에 대한 키 바인딩

이제 bash에서는 read키보드에 입력된 문자가 ANSI 제어 코드에 어떻게 매핑되는지 확인할 수 있습니다. 예를 들어, 실행 read하고 를 입력 하면 Ctrl-P다음과 같은 결과가 나타납니다 ^P. 마찬가지로 를 입력하면 Alt-W다음과 같은 결과가 표시됩니다 ^[W.

내 질문은: 그 반대를 수행하는 프로그램, 도구 또는 웹 사이트가 있습니까? 즉, 주어진 ANSI 제어 코드 시퀀스를 얻기 위해 키보드에 입력해야 하는 키보드 키 시퀀스를 출력하거나 표시하는 도구입니다. 예를 들어 입력은 다음 ^[W을 출력해야 합니다.Alt-W

감사해요!

답변1

infocmp도울 수있다. or \E대신 escape 를 씁니다 .\e^[

예를 들어, 이를 찾으려면 \e[A기록을 거꾸로 살펴보세요.

$ infocmp -1x | grep -F '=\E[A,'
       cuu1=\E[A,
$ man 5 terminfo | grep '  cuu1  '
       cursor_up                     cuu1       up       up one line

위쪽 화살표라고도 알려진 커서를 위로 누르라는 메시지가 표시됩니다.

+ -x와 같은 특정 조합을 표시하려면 위에 표시된 플래그가 필요합니다 .Ctrl<-

이러한 확장 키는 표준의 일부가 아니므로 terminfo 매뉴얼 페이지에는 나열되지 않지만 다음 문서에 문서화되어 있습니다.용어 정보 파일.

또한 사용하는 단말기에 따라 제어 순서가 다르기 때문에 주의하시기 바랍니다.

infocmp -1x <terminal>예를 들어 등을 사용하여 다양한 터미널에 대한 정보를 얻을 수 있습니다 infocmp -1x rxvt.infocmp -1x putty

당신이 어떤 terminfo를 갖고 있다고 생각하는지 파악한 후에는 변수를 일치하도록 설정하면 TERM작업이 더 쉬워집니다 .

답변2

cat기능은 키보드가 실제로 보내는 내용을 표시하는 데 사용할 수 있기 때문에 이를 수행하는 일반적인 방법입니다. bash는 터미널 데이터베이스의 확장 정보를 사용하지 않습니다.하위 집합전통적인 termcap 기능의 일부).

cat물론 사용의 단점은

^[[A

^[A 또는 escapeA\e(Bash는 이 문자의 인쇄 가능한 표현을 제공합니다 escape.)

실제로는 전자를 무시할 수 있습니다. 기본적으로 아무도 이 세 문자 문자를 보내지 않으며 "모든 사람"이 문자 ^[로 보냅니다 escape.

추가 자료:

관련 정보