터미널에 대한 인코딩 및 디코딩을 거치지 않고도 키보드 입력 및 표시 텍스트를 수신 할 수있는 X11 Emacs에 더 편합니다 . 텍스트 모드 편집기를 사용하는 주된 이유는 원격 컴퓨터에서 화면 또는 tmux 내에서 실행하는 것이지만 Tramp 덕분에 일반적으로 로컬 Emacs에서 원격 파일을 편집하는 것이 더 쉽습니다. 즉, 터미널 에뮬레이터가 협력하는 한 원하는 것을 할 수 있습니다 (Xterm의 경우).
터미널에서 키 또는 키 조합을 누르면 하나 이상의 문자 시퀀스로 터미널에서 실행중인 응용 프로그램으로 전송됩니다. 예를 들어를 누르면 a응용 프로그램이 수신 a
합니다. 을 누르면 Enter응용 프로그램은 문자 CR
(일명 ^M
"Control-emm", 일명 문자 번호 13, 일명 \r
또는 \015
)를받습니다. 관련된 키 조합 Alt은 일반적으로 문자 ESC
( ^[
일명 일명 \e
또는 \033
) 로 전송되고 그 뒤에 키 또는 키 조합에 대한 시퀀스가 이어집니다 Alt. 기능 키 및 기타 키 조합은 \e[
또는로 시작하는 이스케이프 시퀀스로 전송됩니다 \eO
.
이스케이프 시퀀스는 완전히 표준화되지 않았으며 터미널은 일반적으로 특정 키의 특정 속성을 무시합니다. 예를 들어, hyper 및 super 한정자는 일반적으로 무시됩니다. 쉘 프롬프트에서 Ctrl+ V와 그 키 조합을 차례로 누르 C-q
거나 C-h c
Emacs 의 키 조합을 누르면 터미널이 키 조합에 대해 전송하는 내용을 볼 수 있습니다 .
Xterm을 사용하면 X 자원을 통해 각 키의 이스케이프 시퀀스를 구성 할 수 있습니다 . 대부분의 설정은 ~/.Xresources
X가 시작될 때 부터 리소스를 읽으며을 사용하여 파일을 수동으로로드 할 수 있습니다 xrdb -merge ~/.Xresources
.
XTerm.VT100.translations: #override \n\
Ctrl ~Shift ~Meta <Key> Return: string("\033[73;5~") \n\
Ctrl Shift ~Meta <Key> percent: string("\033[37;6~")
공통 규칙은 ESC [ number1 ; number2 ~
수정자가있는 기능 키 에 대해 형식의 이스케이프 시퀀스를 사용합니다 . number1
(기능 키 나타낸다 15
에 24
대해 F5에 F12- 역사적인 이유로, F1을 통해 F4다른 이스케이프 시퀀스가) number2
개질제를 나타낸다 ( 2
에 대해 Shift, 5
에 대해 Ctrl, 3
에 대해 Meta, 8
에 대해 Ctrl+ Meta및 + 1 추가 Shift- 없음, 매우 일관되지이다).
를 Mod1
통해 와 같이 숫자를 통해 Hyper 및 Super 수정자를 지정해야합니다 Mod5
. 키 xmodmap -pm
심이 수정 자에 맵핑되는 것을 보려면 실행 하십시오. 예를 들어 Super_L
Mod5에 바인딩 된 경우 다음 줄 (이 정확한 경우 사용)은 Super+에 대한 바인딩을 정의합니다 Space.
~Ctrl ~Meta Mod5 <Key> space: string("\033[32;16~") \n\
이맥스 통해 키 내부 표현으로 이스케이프 시퀀스를 변환 input-decode-map
하거나local-function-key-map
(또는 function-key-map
이맥스 23 전).
(define-key local-function-key-map "\033[32;16~" [(super ?\ )])
이 글은 80 % 재활용 소재로 만들어졌습니다. 모든 핵심 조합을 처리 할 수있는 리눅스 터미널이 있습니까?