Не зависят ли коды клавиш символов-модификаторов от раскладки и модели клавиатуры?

Возможно, вы сможете добиться того, что пытаетесь сделать, используя повторное -используемое соединение между 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
0
04.07.2020, 00:36
1 ответ

Нет -это зависит от конфигурации клавиатуры (в конечном итоге от оборудования ). Если вы все время используете одно и то же оборудование, это не проблема.

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
1
18.03.2021, 23:22

Теги

Похожие вопросы