Просто проверьте первый символ строки, используя синтаксис подстроки:
[[ ${var:0:1} = / ]] || return 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 для каждого из них, как описано в ответе по вашей ссылке, который вам не помог (возможно, потому что вам не нужен этот вариант). Преимущество этого метода в том, что вы также можете по-разному отображать символы, мертвые клавиши, композиции и т. д.