回答:
Super_L
Xキーシムです。Tmuxはターミナルで実行されます。キーシムを文字シーケンスに変換するのは端末エミュレータ次第です。そのため、ターミナルエミュレータとtmuxの両方を設定する必要があります。
tmuxのドキュメントを見ると、プレフィックスは、オプションの修飾子を持つ既知のキー名にしかなれません。したがって、使用しないキーの組み合わせにtmuxプレフィックスを設定し、たとえばM-F12
、M-F12
を押しSuper_L
たときに端末に文字シーケンスを送信させることができます。もう少し作業で、あなたは(tmuxのが受け付けるキーボードはおそらく持っていないことを、キーを使用することができF13
てF20
、キー名として、彼らは、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構成ツールを使用して実行できます。
Super_L
はXキーシムなので、おそらくどこかにXサーバーがあります(Windowsからログインしている場合、このキーを左のWindowsキーと呼びます)。Tmuxは端末で実行され、入力をバイトとして読み取り、ファンクションキーをエスケープシーケンスに変換します。リモートログインは透過的であり、sshはエスケープシーケンスを構成するバイトを送信するだけです。
できません。キーをバインドすると、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
、それは見てませんが、表面にはあまりにも変更するのは難しいです。多分週末(有名な最後の言葉;))プロジェクトですか?
カスタム修飾子キーにプレフィックスを設定することはできませんでしたが、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"
これにより、たとえばWindowsキーと組み合わせてtmuxバインディングが可能になります。これらの行に沿ったものは、グローバルキーボードショートカット(Compiz、KWinなど)を定義できるウィンドウマネージャーで機能します。