Или можно дать некоторым командам супердержаву. Я говорю о специальных полномочиях, в которых команды выполняются с разрешением владельца.
Получите путь команды #which <command>
и набор SUID или SGID для того пути.
P.S. - SUID и биты SGID должны быть даны с осторожностью. Они могут сделать Вашу систему небезопасной.
Super_L
X keysym. Tmux работает в терминале. Это до Вашего эмулятора терминала для преобразования keysym в последовательность символов. Таким образом, необходимо было бы настроить и эмулятор терминала и tmux.
Смотря на tmux документацию, префикс может только известное ключевое имя с дополнительным модификатором. Таким образом, можно установить tmux префикс на сочетание клавиш, Вы не используете, говорите M-F12
, и заставьте свой терминал отправлять последовательность символов за M-F12
когда Вы нажимаете Super_L
. С немного большим количеством работы Вы могли использовать ключ, который, вероятно, не имеет Ваша клавиатура (tmux, принимает F13
через F20
как ключ называет, но они должны быть объявлены в terminfo).
На стороне эмулятора терминала необходимо было бы устроить Super_L
генерировать сочетание клавиш \e\e[24~
(для M-F12
) или \e[34~
(для F20
) (где \e
символ ESC). Как сделать, это зависит от эмулятора терминала (и некоторые не достаточно настраиваются, чтобы сделать это). С xterm это сделано через X ресурсов:
! Make Super_L act as Meta+F12
XTerm.VT100.translations: #override \
<Key>Super_L: string("\033\033[24~")
Можно наткнуться на препятствие это Super_L
обычно модификатор, и модифицирующие клавиши не всегда работают, когда немодификатор требуется. Если Вы не хотите Super_L
чтобы быть модификатором, можно устранить его модификатор или (менее смутно) использовать другой keysym для физического ключа. Это может быть сделано через xmodmap (старомодный и простой понять) через xkb (современный, плохо зарегистрированный, мощный и сложный путь), или возможно через инструмент конфигурирования GUI Вашей настольной среды.
Вы не можете. Привязка ключа будет звонить 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
На поверхности, хотя, не выглядит слишком трудным изменить; возможно, выходные (известные последние слова ;)) проект?
Я не смог установить префикс на пользовательскую модифицирующую клавишу, но мне действительно удавалось определить tmux привязку в сочетании с пользовательской модифицирующей клавишей под Gnome в сочетании с Метагородом. Например, для отображения 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, и т.д.).
Кажется, что Вы хотите это: https://lists.gnu.org/archive/html/screen-users/2009-12/msg00144.html
Super_L
X keysym, таким образом, у Вас, по-видимому, есть X-сервер где-нибудь (если бы Вы входили в систему из Windows, я предполагаю, что Вы назвали бы ключ левым ключом Windows). Tmux работает в терминале и чтениях его вход как байты, с функциональными клавишами, переведенными в escape-последовательности. Удаленный вход в систему прозрачен, ssh просто передает байты, которые составляют escape-последовательность. – Gilles 'SO- stop being evil' 12.09.2010, 00:04