Возможно, вы сможете добиться того, что пытаетесь сделать, используя повторное -используемое соединение между CLIENT и BOUNCE вместе с директивой ProxyCommand
.
В файле ~/.ssh/config
на КЛИЕНТЕ:
Host REMOTE
HostName remote.domains.tld
ProxyCommand ssh BOUNCE -W %h:%p
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster auto
ControlPersist 4h
Нет -это зависит от конфигурации клавиатуры (в конечном итоге от оборудования ). Если вы все время используете одно и то же оборудование, это не проблема.
xterm использует коды клавиш в функции modifyOtherKeys
. Некоторая предыстория (и примеры для нескольких типов клавиатуры )приведены на страницеXTerm — «Другие» модифицированные клавиши .
Таблицы на этой странице генерируются с помощьюмодификации -keys.pl— скрипта, который имитирует поведение xterm для заданной конфигурации X-клавиатуры. Он получает часть информации из "localectl status" , а часть из setkbmap(в более или менее читаемом виде ). В конечном счете, это происходит из таблиц, скомпилированных из других источников, но эти утилиты были самым простым способом получить полезную информацию из конфигурации X-клавиатуры.
Проверяя свою память, я сделал скрипт, чтобы показать детали вариаций в этих таблицах:
#!/bin/sh
for kbd in apple altgr-intl pc105
do
for lang in us gb fr
do
setxkbmap -model $kbd -layout $lang -print | \
xkbcomp - -C -o - >/tmp/$kbd-$lang.log 2>/dev/null
done
done
Код клавиши X является индексом в массиве symCache
, определенном в этих исходных -файлах, например, здесь:
#define NUM_SYMBOLS 358
static KeySym symCache[NUM_SYMBOLS]= {
Но размер стола -меняется при разных конфигурациях:
altgr-intl-fr.log:#define NUM_SYMBOLS 347
altgr-intl-gb.log:#define NUM_SYMBOLS 348
altgr-intl-us.log:#define NUM_SYMBOLS 254
apple-fr.log:#define NUM_SYMBOLS 358
apple-gb.log:#define NUM_SYMBOLS 359
apple-us.log:#define NUM_SYMBOLS 265
pc105-fr.log:#define NUM_SYMBOLS 375
pc105-gb.log:#define NUM_SYMBOLS 376
pc105-us.log:#define NUM_SYMBOLS 282
и левый/правый управляющие символы появляются с разным смещением в некоторых таблицах:
altgr-intl-fr.log: XK_Control_L, XK_Super_L, XK_Shift_R, XK_Control_R,
altgr-intl-gb.log: XK_Control_L, XK_Super_L, XK_Shift_R, XK_Control_R,
altgr-intl-us.log: XK_Num_Lock, XK_Shift_L, XK_Control_L, XK_Super_L,
apple-fr.log: XK_Control_L, XK_Super_L, XK_Shift_R, XK_Control_R,
apple-gb.log: XK_Control_L, XK_Super_L, XK_Shift_R, XK_Control_R,
apple-us.log: XK_Num_Lock, XK_Shift_L, XK_Control_L, XK_Super_L,
pc105-fr.log: XK_Control_L, XK_q, XK_Q, XK_at,
pc105-gb.log: XK_Control_L, XK_a, XK_A, XK_ae,
pc105-us.log: XK_Num_Lock, XK_Shift_L, XK_Control_L, XK_Super_L,
Так что я не ожидал, что эти коды клавиш всегда будут одинаковыми значениями для всех конфигураций клавиатуры.
В комментарии к xev
упоминается способ просмотра кодов клавиш для текущей конфигурации. У меня левое управление 67 (, а не 37):
KeyRelease event, serial 34, synthetic NO, window 0xa00001,
root 0x111, subw 0xa00002, time 51155669, (23,30), root:(43,73),
state 0x4, keycode 67 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 34, synthetic NO, window 0xa00001,
root 0x111, subw 0xa00002, time 51156901, (23,30), root:(43,73),
state 0x0, keycode 70 (keysym 0xffe4, Control_R), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False