it-swarm-es.tech

¿Cómo vinculo el prefijo tmux a un Super?

Encuentro incluso Ctrl+b ser muy emacs pero entiendo el punto. Me pregunto si podría vincularlo a una sola pulsación de tecla que no uso de otra manera. a saber Super_L (también conocida como la tecla izquierda de Windows. Por eso digo Super_L start xev en una terminal y presiono esa tecla)

21
xenoterracide

Super_L es un keyym de X. Tmux se ejecuta en una terminal. Depende de su emulador de terminal transformar un keyym en una secuencia de caracteres. Por lo tanto, tendría que configurar tanto su emulador de terminal como tmux.

Mirando la documentación de tmux, el prefijo solo puede ser un nombre de clave conocido con un modificador opcional. Para que pueda establecer el prefijo tmux en una combinación de teclas que no usa, digamos M-F12, y haz que tu terminal envíe la secuencia de caracteres para M-F12 cuando presiona Super_L. Con un poco más de trabajo, podría usar una tecla que probablemente su teclado no tenga (tmux acepta F13 mediante F20 como nombres de clave, pero deben declararse en terminfo).

En el lado del emulador de terminal, tendrías que hacer arreglos para Super_L para generar la secuencia de teclas \e\e[24~ (para M-F12) o \e[34~ (para F20) (dónde \e es el carácter de escape). La forma de hacer esto depende del emulador de terminal (y algunos no son lo suficientemente configurables para hacerlo). Con xterm, se hace a través de recursos X:

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

Puede encontrar un inconveniente que Super_L es normalmente un modificador, y las teclas modificadoras no siempre funcionan cuando se requiere un no modificador. Si no quieres Super_L para ser un modificador, puede quitar su modificador o (de manera menos confusa) usar un símbolo de clave diferente para la clave física. Esto se puede hacer a través de xmodmap (anticuado y fácil de entender), a través de xkb (la forma moderna, pobremente documentada, poderosa y compleja), o quizás a través de la herramienta de configuración GUI de su entorno de escritorio.

No puedes. Vincular una clave llamará al cmd_bind_key_parse función de cmd-bind-key.c que a su vez (eventualmente) llamará a key_string_get_modifiers de 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     } 

Los tmux.c contiene la tecla modificadora #define declaraciones y de ese archivo tenemos:

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

Sin embargo, en la superficie, no parece demasiado difícil de modificar; tal vez un proyecto de fin de semana (famosas últimas palabras;))?

3
gvkv

No he podido establecer un prefijo para una tecla modificadora personalizada, pero logré definir enlaces tmux en combinación con una tecla modificadora personalizada en Gnome en combinación con Metacity. Por ejemplo, para mapear Mod4 +k y Mod4 +j para moverse al panel actual hacia arriba y hacia abajo respectivamente:

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"

Esto permite los enlaces tmux en combinación con, por ejemplo, la tecla de Windows. Algo en esa línea funciona para cualquier administrador de ventanas que permita definir atajos de teclado globales (Compiz, KWin, etc.).

2