我发现甚至Ctrl+b很像,emacs
但我理解这一点。我想知道是否可以将其绑定到我不使用的按键的单个按键上?即Super_L(也称为左 Windows 键。这就是为什么我说 Super_Lxev
在终端中启动并按该键)
答案1
Super_L
是 X 键符号。 Tmux 在终端中运行。由您的终端模拟器将键盘符号转换为字符序列。因此,您必须配置终端模拟器和 tmux。
查看 tmux 文档,前缀只能是带有可选修饰符的已知键名。因此,您可以将 tmux 前缀设置为您不使用的组合键,例如M-F12
,并让终端在M-F12
您按 时发送字符序列Super_L
。通过更多的工作,您可以使用键盘可能没有的键(tmux 接受F13
throughF20
作为键名称,但它们必须在 terminfo 中声明)。
在终端模拟器方面,您必须安排 来Super_L
生成按键序列\e\e[24~
(for M-F12
) 或\e[34~
(for F20
) (其中\e
是转义字符)。如何执行此操作取决于终端模拟器(有些终端模拟器的配置不足以执行此操作)。使用 xterm,它是通过 X 资源完成的:
! 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
+k和Mod4
+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 等)。