xterm formatOtherKeys가 Ubuntu에서 작동하지 않습니까?

xterm formatOtherKeys가 Ubuntu에서 작동하지 않습니까?

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

관련 정보