Bash에서 일부 키보드 단축키를 다시 매핑하려고 합니다. 문제는 표시 키 코드를 사용하려고 할 때 Ctrl-V
모든 키가 작동하지 않는다는 것입니다. 예를 들어 평소와 마찬가지로 터미널을 입력한 Ctrl-V
다음 맨 위로 이동합니다. Home
입력 Ctrl-V
하면 Ctrl
아무것도 표시되지 않습니다. 을 입력 Ctrl-V
하고 left arrow
show 를 ^[OD
입력 한 Ctrl-V
다음 Ctrl-left arrow
동일한 내용을 표시합니다.
커서를 줄의 시작이나 끝으로 이동하고 Ctrl-화살표를 사용하여 단어를 이동하기 위해 Home과 End를 다시 매핑하려고 합니다. 저는 Solaris에서 DtTerm을 사용하고 있습니다.
해결책:
.X기본값:
Dtterm*DtTerm*Translations: #override \n\
<KeyPress>osfBeginLine: string("0x1B")string("[1~") \n\
<KeyPress>osfEndLine: string("0x1B")string("[4~") \n\
Ctrl<KeyPress>osfLeft: string("0x1B")string("OC") \n\
Ctrl<KeyPress>osfRight: string("0x1B")string("OD")
.inputrc:
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\eOD": forward-word
"\eOC": backward-word
답변1
나는 몇 년 동안 dtTerm을 사용하지 않았습니다. 키보드 모드와 커서 키 모드를 "응용 프로그램 모드"(터미널->옵션 아래에 있음)로 설정하여 작동하게 할 수 있습니다.
작동하지 않으면 Xresources 경로를 따라야 할 수도 있지만 Home키(예: escape키)가 DtTerm(ala OSF/Motif)에 특별한 의미를 갖고 있어 재생하려면 추가 작업이 필요하다는 생각이 들었습니다. 잘.
분명히 번역에서 #override를 사용하는 것은 "공식적으로 지원"되지 않지만 해킹으로서는 작동합니다.
쉘에서 dtTerm을 실행하여 현재 존재하는 키맵을 찾은 다음 a를 실행하여 ShiftCtrl*dtTerm이 키맵을 덤프하도록 해야 합니다(dtTerm을 실행하는 쉘의 표준 출력에 나타납니다). *X 키 바인딩에 대해 이야기할 때 이는 숫자 패드의 키(KP_Multiply라고도 함)입니다.
나는 dtTerm이 osfBeginLine
.
다음으로 당신은실제예 xev
를 들어 home내 설정의 키는keysym 입니다 0xff50
.
KeyPress event, serial 30, synthetic NO, window 0x3600001,
root 0x102, subw 0x0, time 643678606, (78,90), root:(1578,578),
state 0x0, keycode 110 (keysym 0xff50, Home), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
~/.Xdefaults
다음으로 다음을 편집하고 추가해야 합니다 .
Dtterm*DtTerm*translations:#override\n\
:<KeyPress>osfBeginLine: string("0xff50")
그런 다음 실행하면 파일을 dtaction ReloadResources
가져와야 합니다 .Xdefaults
.
운이 좋다면 매핑을 얻은 다음 평소처럼 키 바인딩을 할 수 있을 것입니다. 그렇지 않다면 아마도 거대한 스파게티 더미였던 Motif의 가상 스테이플링 영역을 돌아다녀야 할 것입니다.
인용하다:
답변2
물리적 터미널은 화살표와 함께 사용되는 CTRL에 대해 다른 코드 시퀀스를 생성하지 않습니다. 터미널 에뮬레이터는 물리적 조상과 동일한 방식으로 동작하려고 시도하면서 그 뒤를 따랐습니다. 사용하는 터미널 에뮬레이터에 따라 고유한 시퀀스를 정의할 수도 있습니다. 예를 들어, 나는
XTerm*VT100*Translations: #override \
Ctrl<Key>Prior:scroll-back(1,halfpage)\n\
<Key>Prior:string(0x1B)string([5~)\n\
Ctrl<Key> Next:scroll-forw(1,halfpage)\n\
<Key>Next:string(0x1B)string([6~)\n\
<Key>Delete:string(0x1B)string([3~)\n\
Ctrl<Key>Home:string(0x1B)string(CH~)\n\
Ctrl<Key>End:string(0x1B)string(CE~)\n\
<Key>Home:string(0x1B)string(H~)\n\
<Key>End:string(0x1B)string(E~)\n\
<Key>BackSpace:string(0x7F)\n\
Ctrl<Key>Left:string(0x1B)string(CL~)\n\
Ctrl<Key>Right:string(0x1B)string(CR~)\n\
Ctrl<Key>Up:string(0x1B)string(CU~)\n\
Ctrl<Key>Down:string(0x1B)string(CD~)\n
내 XTerm 리소스 파일에 있습니다.