lisp 방언 명령줄에 대한 키 바인딩을 재정의하고 싶습니다. 명령줄은 실제로 Vi를 모델로 하고 tput/terminfo를 사용하여 구현됩니다. 나는 Emacs 키바인딩이 포함된 대체 버전을 원하며, gnu readline 등을 사용하지 않고 사용해 보고 싶습니다.
일반적인 키 할당은 다음과 같습니다.
(setq *XtF1 (in '("tput" "kf1") (line T)) ...
이 질문은
("tput" "kf1")
일부를 제외하고 나머지는 무시합니다. 이제 "kf1"은 terminfo 매뉴얼 페이지에서 쉽게 찾을 수 있습니다.
key_f1 kf1 k1 F1 function key
"meta"에도 3개의 항목이 있는 것으로 확인되었습니다.
has_meta_key km km Has a meta key
(i.e., sets 8th-bit)
meta_off rmm mo turn off meta mode
meta_on smm mm turn on meta mode
(8th-bit on)
하지만 이 정보를 사용하여 Mf, Mb, Md 등과 같은 tput을 통한 일반적인 Emacs 키 바인딩을 정의하려면 어떻게 해야 합니까?
답변1
terminfo는 아마도 당신에게 큰 도움이 되지 않을 것입니다. 대부분의 터미널 에뮬레이터에서는 M-x
전송 <Esc>x
또는 x
비트 8 설정을 사용하여 구성하며, 사용자가 이를 수행하면 terminfo 항목이 마술처럼 업데이트되지 않습니다.
또한 요즘 대부분의 문자 세트는 8비트이므로 메타에 8번째 비트를 사용하는 것은 이제 별 의미가 없습니다.
M-x
방금 ==(두 문자의 시퀀스 sum )를 하드코딩했습니다 <Esc>x
. 이렇게 하면 터미널이 해당 모드를 지원하지 않더라도 사용자는 계속해서 를 순서대로 입력할 수 있습니다.\033
x
Escx