Можно ли задать двум клавиатурам разные раскладки?

Просто проверьте первый символ строки, используя синтаксис подстроки:

[[ ${var:0:1} = / ]] || return 1
6
13.02.2017, 12:28
1 ответ

Общий фон: Клавишам присваиваются три различных набора "кодов", сначала scancode (произвольный аппаратно-зависимый номер, обозначающий клавишу на клавиатуре), затем keycode (более абстрактное число, обозначающее конкретную клавишу, например shift или 1 / ! ), и, наконец, keysym (символ клавиши, фактический символ, такой как á, создаваемый клавишей или комбинацией клавиш).

Недавно я узнал, что каждое устройство /dev/input/event* имеет свое собственное отображение сканкода на кейкод. Эти отображения могут быть прочитаны и изменены iotcls (EVIOCGKEYCODE_V2, EVIOCSKEYCODE_V2), но, как ни странно, похоже, что нет общих инструментов для доступа к этим отображениям (я быстро написал простую программу дампа на C, так как мне было интересно).

И ядро Linux, и X затем отображают коды клавиш на символы клавиш. Для ядра существует только одно глобальное отображение, kbd обработчик (или, по крайней мере, одно глобальное отображение для очень виртуальной консоли, я не уверен, что разные виртуальные консоли могут иметь разные отображения). X поддерживает отображение для каждого устройства.

Поэтому, если вам нужны различия между клавиатурами на виртуальной консоли, единственным вариантом остается использование отображения scancode-to-keycode. Для Dvorak vs. Qwerty это действительно может работать, если вы просто переставляете буквенные клавиши и не хотите по-разному переставлять символы в сдвинутом и несдвинутом состоянии.

Более новые версии udev используют аппаратную базу данных (/etc/udev/hwdb.d) для инициализации специальных отображений scancode-to-keycode, и вы можете добавить свои собственные пользовательские версии.

Альтернативный вариант - жить с Dvorak или Qwerty на виртуальной консоли, но настроить X на использование различных сопоставлений keycode-to-keysym для каждого из них, как описано в ответе по вашей ссылке, который вам не помог (возможно, потому что вам не нужен этот вариант). Преимущество этого метода в том, что вы также можете по-разному отображать символы, мертвые клавиши, композиции и т. д.

5
27.01.2020, 20:28

Теги

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