내 Emacs 키 바인딩 중 하나는 C-'
GUI에서 잘 작동한다는 것입니다. 그러나 터미널에서는 인식이 되지 않습니다. 터미널로 전송된 실제 문자를 찾아 C-'
이를 emacs 구성에 매핑해야 한다는 것을 알고 있습니다.
다음 제안을 따르세요Bash에서 단축키를 다시 매핑하기 위한 터미널 키 코드 목록은 어디에서 찾을 수 있나요?, sed -n l
나에게 반환되는 것은 끝이 없어도 빈 줄입니다 $
. 단말이 C-'
시퀀스를 전혀 인식하지 못하는 걸까요?
답변1
터미널은 키가 아닌 바이트를 전송합니다. Ctrl+ 와 같은 키 코드는 '일련의 바이트로 인코딩되어야 합니다. 대부분의 키와 코드 에는 수식어가 없거나 로만 인쇄 가능한 문자 이외의 해당 문자가 없으며 대신 이스케이프 문자(바이트 값이 27인 문자)에 대한 이스케이프 시퀀스로 전송됩니다. 이는 다음과 같은 방식으로 작성된 Emacs 문자에서 Shift와 같이 사용할 수 있습니다. \e
문자열에서). 그러나 많은 키 코드에는 전통적인 표준 이스케이프 시퀀스가 없으며 많은 터미널은 이러한 키 코드를 전송하지 않거나 수정자에 대한 정보를 제거합니다( Ctrl문자로 +만 전송).''
일부 터미널에서는 각 키와 코드에 대한 이스케이프 시퀀스를 구성할 수 있습니다. 터미널 애플리케이션에서는키보드 환경설정을 통해 이 작업을 수행할 수 있습니다..
Ctrl+ 의 경우 또는 다음을 '선택하십시오 . 이는 libtermkey 체계와 xterm 체계라는 두 가지 새로운 표준입니다. 바라보다\033[39;5~
\033[27;5;39~
터미널 사용 시 키 바인딩 문제더 많은 정보를 알고 싶습니다.
Emacs는 다음과 같은 방법으로 이스케이프 시퀀스를 내부 키 표현으로 변환합니다:input-decode-map
또는local-function-key-map
(또는 function-key-map
Emacs 23 이전). 다음 중 하나를 초기화 파일에 넣으세요:
(define-key input-decode-map "\033[39;5~" [(control ?\')])
(define-key input-decode-map "\033[27;5;39~" [(control ?\')])
답변2
나는 using을 시도했고 showkey
이것이 c-'
using alone과 동일하다는 것을 알았습니다 '
. 언급된 답변을 읽고 시도한 후 키보드의 거의 모든 키를 테스트한 결과 showkey
대부분의 키에 ^key
컨트롤 키를 눌렀을 때 출력이 있는 것을 발견했습니다 ^C
. 을 누르고 있지만 c-c
를 눌러도 영향을 받지 않는 키가 몇 개 있습니다 c-
. 예를 들어 '
영향을 받지 않을 뿐만 ,
아니라 .
눌렀을 때 점이 c-
점을 인쇄하지도 않고 아무것도 하지 않으므로 바인딩이 아닌 것 같습니다. 일반 키를 누르는 것과 같은 '
일이 없기 ! 하지만 X
"아마도"가 이를 인식하기 때문에 왜 작동하는지 설명할 수 없습니다 .
키를 사용해 보시기 바라며 showkey --ascii
이 답변이 도움이 되기를 바랍니다.