tmux 접두사를 Super에 바인딩하는 방법은 무엇입니까?

tmux 접두사를 Super에 바인딩하는 방법은 무엇입니까?

Ctrl+b저도 비슷 하긴 emacs한데 이해는 가네요. 사용하지 않는 키에 대해 단일 키 입력에 바인딩할 수 있는지 궁금합니다. 즉, Super_L(왼쪽 Windows 키라고도 합니다. 그래서 Super_L을 xev터미널에서 시작하고 해당 키를 누르라고 했습니다.)

답변1

Super_LX 키 기호입니다. Tmux는 터미널에서 실행됩니다. 터미널 에뮬레이터를 통해 키보드 기호를 문자 시퀀스로 변환합니다. 따라서 터미널 에뮬레이터와 tmux를 구성해야 합니다.

tmux 문서를 보면 접두사는 선택적 수정자가 있는 알려진 키 이름만 될 수 있습니다. 따라서 tmux 접두어를 사용하지 않는 키 조합(예: )으로 설정하고 이를 누를 때 M-F12터미널이 일련의 문자를 보내도록 할 수 있습니다 . 더 많은 작업을 수행하면 키보드에 없는 키를 사용할 수 있습니다(tmux는 키 이름으로 허용 하지만 terminfo에 선언해야 함).M-F12Super_LF13F20

터미널 에뮬레이터 측에서는 (for ) 또는 (for )(여기서 이스케이프 문자는) Super_L키 시퀀스를 생성 하도록 배열해야 합니다. 이를 수행하는 방법은 터미널 에뮬레이터에 따라 다릅니다(일부 터미널 에뮬레이터는 이 작업을 수행할 만큼 충분히 구성되지 않았습니다). xterm을 사용하면 X 리소스를 통해 수행됩니다.\e\e[24~M-F12\e[34~F20\e

! Make Super_L act as Meta+F12
XTerm.VT100.translations:       #override \
    <Key>Super_L:  string("\033\033[24~")

일반적으로 수정자인 장애물에 부딪힐 수 있으며 Super_L, 수정자가 아닌 것이 필요한 경우 수정자 키가 항상 작동하지 않는 경우도 있습니다. 수정자가 되고 싶지 않다면 Super_L해당 수정자를 제거하거나 (덜 혼란스럽게) 물리적 키에 대해 다른 키 기호를 사용할 수 있습니다. 이는 xmodmap(구식이며 이해하기 쉬움), xkb(현대적이고 문서화가 부족하며 강력하고 복잡함) 또는 데스크탑 환경의 GUI 구성 도구를 통해 수행할 수 있습니다.

답변2

당신은 할 수 없습니다. 키를 바인딩하면 이 cmd_bind_key_parse함수가 호출됩니다.cmd-bind-key.c차례로 (결국) key_string_get_modifiers전화key-string.c:

/* Find modifiers. */
105     int
106     key_string_get_modifiers(const char **string)
107     {
108         int modifiers;
109         
110         modifiers = 0;
111         while (((*string)[0] != '\0') && (*string)[1] == '-') {
112             switch ((*string)[0]) {
113                 case 'C':
114                 case 'c':
115                 modifiers |= KEYC_CTRL;
116                 break;
117                 case 'M':
118                 case 'm':
119                 modifiers |= KEYC_ESCAPE;
120                 break;
121                 case 'S':
122                 case 's':
123                 modifiers |= KEYC_SHIFT;
124                 break;
125             }
126             *string += 2;
127         }
128         return (modifiers);
129     } 

이것tmux.c#define이 파일에는 수정자 키 선언이 포함되어 있습니다.

106     /* Key modifier bits. */
107     #define KEYC_ESCAPE 0x2000
108     #define KEYC_CTRL 0x4000
109     #define KEYC_SHIFT 0x8000
110     #define KEYC_PREFIX 0x10000 

하지만 표면적으로는 그렇지 않아 보여요또한수정하기 어렵습니다. 아마도 주말(유명한 마지막 말 ;)) 프로젝트일까요?

답변3

사용자 정의 수정자 키에 대한 접두사를 설정할 수 없었지만 Gnome 및 Metacity에서 사용자 정의 수정자 키 조합을 사용하여 tmux 바인딩을 정의할 수 있었습니다. 예를 들어, 현재 패널에서 각각 위아래로 이동하려면 Mod4+ kMod4+를 매핑합니다.j

gconftool-2 --set /apps/metacity/keybinding_commands/command_1 --type string "tmux select-pane -D"
gconftool-2 --set /apps/metacity/keybinding_commands/command_2 --type string "tmux select-pane -U"
gconftool-2 --set /apps/metacity/global_keybindings/run_command_1 --type string "<Mod4>j"
gconftool-2 --set /apps/metacity/global_keybindings/run_command_2 --type string "<Mod4>k"

이를 통해 tmux 바인딩을 Windows 키 등과 결합할 수 있습니다. 이는 전역 키보드 단축키 정의를 허용하는 모든 창 관리자(Compiz, KWin 등)에 적용됩니다.

답변4

당신이 이것을 원하는 것 같습니다 : https://lists.gnu.org/archive/html/screen-users/2009-12/msg00144.html

관련 정보