xterm을 실행하여 키 바인딩을 가져오려고 합니다.
Ctrl-;
Ctrl-.
Ctrl-,
etc..
(저는 emacs -nw와 함께 이러한 바인딩을 사용하는 것을 좋아합니다)
온라인에서 몇 가지 내용을 읽은 후 ~/.Xresources 파일의 다음 줄을 사용하여 사무실의 데스크탑(Fedora 20 실행)에서 작업 설정을 얻을 수 있었습니다.
xterm*formatOtherKeys: 1
그러나 이것은 VirtualBox에서 Windows 7 및 Ubuntu 12.04.5 LTS를 실행하는 내 홈 데스크탑에서는 작동하지 않는 것 같습니다. ~/.Xresources 파일이 실제로 로드되고 있음을 확인했지만(거기서 글꼴 크기를 제어할 수 있기 때문에) formatOtherKeys가 사무실 데스크탑과 다른 효과를 갖는 것 같습니다.
왜 이러한 키 바인딩이 인식되지 않는지 아는 사람이 있습니까?
편집하다:
xterm -v는 XTerm(271)을 반환합니다.
이것은 Ctrl-를 눌렀다가 놓을 때 xdev가 인쇄하는 내용입니다.
KeyPress event, serial 32, synthetic NO, window 0x3e00001,
root 0x139, subw 0x0, time 63644841, (806,220), root:(824,274),
state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 32, synthetic NO, window 0x3e00001,
root 0x139, subw 0x0, time 63645458, (806,220), root:(824,274),
state 0x14, keycode 47 (keysym 0x3b, semicolon), same_screen YES,
XLookupString gives 1 bytes: (3b) ";"
XmbLookupString gives 1 bytes: (3b) ";"
XFilterEvent returns: False
KeyRelease event, serial 32, synthetic NO, window 0x3e00001,
root 0x139, subw 0x0, time 63645579, (806,220), root:(824,274),
state 0x14, keycode 47 (keysym 0x3b, semicolon), same_screen YES,
XLookupString gives 1 bytes: (3b) ";"
XFilterEvent returns: False
KeyRelease event, serial 32, synthetic NO, window 0x3e00001,
root 0x139, subw 0x0, time 63645939, (806,220), root:(824,274),
state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
답변1
내가 사용해야 할 구성은 다음과 같습니다.
xterm*modifyOtherKeys: 1
이제 emacs는 다음 키 바인딩을 모두 올바르게 인식합니다. 이를 사용하려면 .emacs에 매핑해야 할 수도 있습니다.
(define-key input-decode-map "\e[46;5u" (kbd "C-."))
(define-key input-decode-map "\e[44;5u" (kbd "C-,"))
(define-key input-decode-map "\e[60;6u" (kbd "C-<"))
(define-key input-decode-map "\e[62;6u" (kbd "C->"))
(define-key input-decode-map "\e[59;5u" (kbd "C-;"))
(define-key input-decode-map "\e[40;6u" (kbd "C-("))
(define-key input-decode-map "\e[41;6u" (kbd "C-)"))
(define-key input-decode-map "\e[49;5u" (kbd "C-1"))
(define-key input-decode-map "\e[39;5u" (kbd "C-'"))
(define-key input-decode-map "\e[45;5u" (kbd "C--"))
(define-key input-decode-map "\e[43;6u" (kbd "C-+"))
(define-key input-decode-map "\e[61;5u" (kbd "C-="))
(define-key input-decode-map "\e[63;6u" (kbd "C-?"))
답변2
확인할 수 있는 방법은 여러 가지가 있습니다.
formatOtherKeys
패치 #235에 추가되었습니다("xterm -v"는 최소한 이를 표시해야 함).- 환경에 따라 키코드가 다를 수 있습니다.
xev
사용하려는 조합에 약간의 차이가 있을 수 있습니다 .
귀하의 질문에 필요한 리소스 설정이 언급되어 있지 않습니다.modifyOtherKeys
. 이것formatOtherKeys
리소스 변경에 사용되는 제어 순서modifyOtherKeys
(다른 시스템에서 설정을 재사용할 때 이 점을 간과했을 수도 있습니다).
예를 들어, 다음을 사용하여(다른 시스템에서...) 수정된 키를 표시할 수 있습니다.
xterm -xrm '*modifyOtherKeys:1' -xrm '*formatOtherKeys:1' -e cat -v