xterm을 사용할 때 키보드 시퀀스 Ctrl+/는 Ctrl-_를 생성합니다. ++ 를 showkey -a
먼저 클릭 한 다음 + 를 클릭한 결과 입니다 . 저는 미국식 ANSI 키보드를 사용하고 있습니다.CtrlShift-Ctrl/
[ ~ ] showkey -a
Press any keys - Ctrl-D will terminate this program
^_ 31 0037 0x1f
^_ 31 0037 0x1f
내가 실제로 얻고 싶은 것 ^/
(또는 그것이 무엇이든)은 Emacs에 C-/와 관련된 사용자 정의 바인딩이 있고 Emacs GUI를 실행하면 제대로 작동하지만 실행하면 전혀 작동하지 않는다는 것입니다. emacs -nw
C -_("실행 취소" 작업을 수행함)만 수신하기 때문입니다.
xmodmap을 망칠 필요가 없습니다(실제 키는매핑괜찮아요). 나는 vt100 번역을 조사했고 예를 들어 이미 다음을 가지고 있습니다(문서에서여기기다리다):
XTerm*VT100.translations: #override \n\
<Key> Prior: scroll-back(1, halfpage) \n\
<Key> Next: scroll-forw(1, halfpage)
하지만 명령을 실행하는 대신 번역을 사용하여 다른 키를 얻을 수 있나요? 줄을 추가하고 Ctrl <Key> /:
using을 사용하여 재정의하려고 시도했지만 insert()
작동하지 않았습니다. 슬래시가 표시되는 를 사용해 보았지만 string("0xffe4") string("0x2f")
Ctrl을 입력하려고 하면 이상하게 실패합니다... Ctrl_R을 보고 키 기호를 얻었지만 xev
이것이 올바른 사용 방법인지 잘 모르겠습니다.
modifyOtherKeys
나는 또한 그 문서를 보았다.여기, 그러나 1로 설정해도 도움이 되지 않으며, 2로 설정하면 거의 모든 것이 중단됩니다.
C-/를 가로채서 C-_로 바꾸는 것은 무엇이며, 극복할 수 있을까요?
중요한:저는 루트가 아니며 해당 시스템에 대한 수퍼유저 권한도 없습니다. 뭔가가 있어요이 문제관련된 것 같지만 모든 호출에서 loadkeys
권한 관련 오류가 발생합니다.
답변1
Stéphane Chazelas 덕분에 다음을 수행하고 문제를 해결할 수 있었습니다. 이를 Ctrl <Key> /: string("0x1b") string("/")
vt100.translations 리소스에 다음과 같이 넣었습니다.
XTerm*VT100.translations: #override \n\
<Key> Prior: scroll-back(1, halfpage) \n\
<Key> Next: scroll-forw(1, halfpage) \n\
Ctrl <Key> /: string("0x1b") string("/")
이것은 Ctrl+ /전송을 "ESC-/"로 만듭니다(이스케이프를 사용하며 이스케이프는 0x1b 또는 27인데 정말 그리워요). 그런 다음 현재 C-/바인딩과 마찬가지로 이를 처리하기 위해 Emacs에 다른 바인딩을 추가할 수 있습니다. 이런 식으로 이제 키보드에서 +를 누르고 Emacs가 M-/(Emacs 기호) 1을Ctrl 수신하여 GUI와 터미널에서 동일하게 작동하도록 할 수 있습니다./
1 M-/의 Emacs는 이미 기본적으로 "dabbrev-expand"에 바인딩되어 있습니다. 나는 그것을 사용한 적이 없기 때문에 그것을 재정의하는 데 주저하지 않습니다.