Ctrl-Enter, Shift-Enter 및 Enter는 동일한 키로 해석됩니다.

Ctrl-Enter, Shift-Enter 및 Enter는 동일한 키로 해석됩니다.

저는 KDE와 함께 Fedora 30을 사용하고 있으며 사용 편의성을 위해 (Zsh)를 + autosuggest-execute에 바인딩하려고 합니다. 나는 그것을 작동 시키려고 노력하고 있습니다 .CtrlEntergnome-terminal

그러나 나는 , + 및 + 세 가지 경우에 항상 반환된다는 것을 발견했습니다 showkey -a.^MEnterCtrlEnterShiftEnter

나는 이것을 시도했다방법( Ctrl <Return> : "\033M"in .XCompose) 인데 XCompose 파일을 읽지 않아서 전혀 동작하지 않습니다. 그래서 ibus그대로 설치하기 로 결정내 KDE 설치에는 다음이 포함되어 있지 않습니다.그리고 dnf groupinstall input-methods.

지금 실행하면 ìbus-setup다음 경고가 표시됩니다.

GTK+ supports to output one char only: "\033M": ! Ctrl <Return> : "\033M"

^M불행하게도 모든 입력 조합은 여전히 ​​in gnome-terminal으로 귀결됩니다 xterm.

ibus 유무에 관계없이 이러한 키 조합을 구별할 수 있는 방법이 있습니까?

답변1

ibus 등을 설치할 필요가 없습니다. 모든 X11 애플리케이션은 정확한 키 코드에 액세스할 수 있습니다.그리고xkb/xim 번역으로, 그리고 아마도소홀히 하다후자의.

문제는 터미널 에뮬레이터에 있으며 Ctrl-Enter와 같이 터미널에서 키 조합을 나타내는 표준 방법이 없다는 사실입니다. 또한 각 터미널 에뮬레이터에는 자체 키 바인딩 구성 방법이 있거나 없습니다.

에서는 xterm다른 xt 기반 응용 프로그램과 마찬가지로 X11 리소스를 사용하여 쉽게 구성할 수 있습니다. 예를 들어, 다음은 Ctrl-Enter를 F33기능 키에 해당하는 이스케이프 문자로 변환합니다(에 따라 infocmp).

xterm -xrm '*VT100*translations: #override Ctrl<Key>Return:string("\033[20;5~")'

\e[20;5~그런 다음 readline ~/.inputrc, with bindin bash, with bindkeyin 등에서 zsh원하는 작업 에 바인딩할 수 있습니다 .

X11 리소스는 루트 창의 속성으로 저장되며 유틸리티를 사용하여 루트 창에 로드 RESOURCE_MANAGER할 수 있습니다 . 일반적으로 이는 파일 내용을 로드하기 위해 x11 세션 초기화 스크립트에서 호출됩니다 .xrdbxrdb~/.Xresources

KDE나 Gnome 응용 프로그램에는 키 조합의 작동을 구성하는 고유한 방법이 konsole있습니다 gnome-terminal. 여기에 의사 tty 마스터에 임의의 문자열을 쓰는 기능이 포함되어 있는지는 모르겠습니다.

답변2

설정 방법은 다음과 같습니다 konsole.

또한보십시오Konsole의 키 바인딩에 대한 Kde 참조.

설정->현재 프로필 편집->키보드->(사용할 키보드 레이아웃 선택)->편집->검색/필터 Return.

다음 항목을 편집합니다(왼쪽 열만).

  • Return-Shift-NewLine로 변경Return-Shift-Ctrl-NewLine
  • Return-Shift+NewLine로 변경Return-Shift-Ctrl+NewLine

이를 통해 EnterCtrl+ 를 구별할 수 있습니다 Enter.

다음 항목을 추가합니다.

Return+Ctrl->\E[20;5~

이제 bindkey '\e[20;5~' autosuggest-execute다른 수신기를 추가하기만 하면 됩니다 ~/.zshrc.

관련 정보