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

Мне очень везло с С 7 zip. Если у Вас есть лошадиная сила, это способно к работе с очень большим окном. Удостоверьтесь, что Ваши исходные файлы являются максимально несжатыми, таким образом, это может найти общие черты. (Для файлов Excel в разнородной среде, например, это означает разархивировать их содержание сначала, так как xlsx файлы слегка сжаты, когда они хранятся. Я однажды смог сжать 600 мебибайт + почти избыточных файлов версий Excel вниз к нескольким сотням кибибайт.)

4
09.03.2017, 20:04
1 ответ

Пока я нашел правильное решение, я отвечу на свой вопрос.

Существует программа с именем keyfuzz , которая может изменять раскладки клавиатуры, используемые ядром, в зависимости от устройств ввода, то есть отдельно для каждой клавиатуры, подключенной к компьютеру.

Есть две проблемы с этой программой, которые не описаны должным образом в документации:

  1. USB-клавиатуры генерируют скан-коды, отличные от скан-кодов клавиатур, подключенных к порту ps / 2. Таким образом, если вам нужно переназначить USB-клавиатуру, вам понадобится способ узнать скан-коды клавиш. Инструмент showkey, обычно рекомендуемый для тестирования скан-кода и кода клавиши, не выполняет эту работу, потому что он читает форму / dev / console , которая выдает «стандартные» коды сканирования, независимо от клавиатура.

Чтобы проверить скан-коды клавиатуры на основе ее адреса / dev / input / KEYBOARD , вам необходимо использовать программу с именем getscancodes . Обратите внимание, что загруженный файл по указанной выше ссылке не сжат должным образом. Он называется getscancodes.tar.gz , но сжат с помощью алгоритма ZIP. Пакет содержит исходный код, а также предварительно скомпилированные двоичные файлы.

В моем случае конфигурационный файл keyfuzz выглядит так:

### evdev 1.0.0., driver 'TK Stealth keyboard'
### Proper old-style numpad handling

0x70059    107
0x7005A    108
0x7005B    109
0x7005C    105
0x7005D    108
0x7005E    106
0x7005F    102
0x70060    103
0x70061    104

0x70062    110
0x70063    111
  1. Программа keyfuzz запускается как служба во время загрузки, чтобы исправить таблицы как можно раньше. К сожалению, USB-клавиатуры добавляются к устройствам позже, поэтому, когда запускается keyfuzz, нет клавиатуры для исправления, даже если USB-клавиатура подключена во время загрузки.

Решение состоит в том, чтобы использовать файлы правил udev и запустить keyfuzz при добавлении необходимой клавиатуры.

Для этого вам нужно добавить файл /etc/udev/rules.d/mykeyboard.rules , содержащий (в моем случае):

ACTION=="add", ATTRS{idVendor}=="2516", RUN+="/usr/lib/systemd/scripts/keyfuzz start"

Теперь, после подключения клавиатуры , запустится сценарий запуска keyfuzz и внесет исправления в таблицы декодирования клавиатуры.

1
27.01.2020, 21:01

Теги

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