Клавиатура с пользовательскими клавишами

Многие компьютерные и игровые энтузиасты используют специальные клавиатуры. Одной из распространенных функций на этих клавиатурах является множество настраиваемых ключей, предназначенных для привязки к специальной команде, специфичной для игр и программного обеспечения.

Программное обеспечение для редактирования и создания команд, которые запускаются этими настраиваемыми ключами, почти всегда находится в окнах

EX: Tt Esports Challenger software Challenger Pro Gaming

При запуске программного обеспечения с помощью Wine он не может найти клавиатуру или другие устройства, и поэтому привязки клавиш не могут быть запрограммированы.

Не удается найти клавиатуру

Для большинства клавиатур пользовательские ключи привязаны по умолчанию к ctrl+c и ctrl+v . Поэтому использование System Settings для установки этих ключей будет перезаписываться всякий раз, когда пользователь пытается использовать эти команды.

Каковы возможные решения этой проблемы, есть ли способ разрешить Wine обнаруживать аппаратное обеспечение или есть другой способ установки пользовательских ключей?

Поиск решения будет очень полезен для сообщества Linux, поскольку пользовательские ключи могут использоваться при разработке или использовании специализированного программного обеспечения.

Моя клавиатура – это клавиатура HID, использующая hid-generic набор.

Для ключей, которые не установлены по умолчанию, ничего не регистрируется в evtest но для трех заданных значений они возвращаются

 Event: time 1488397338.016750, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0 Event: time 1488397338.016750, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0 

xev регистрирует только ключи, заданные ctrl + c и такие как 2 нажатия клавиш, ключи, которые не установлены по умолчанию, не регистрируются

У меня есть система Windows, где я мог нюхать USB-протокол. Но как мне это сделать?

  • Нельзя вводить заглавные буквы с помощью клавиши shift
  • GNOME 3.22 - Отключить F1 Help Key
  • One Solution collect form web for “Клавиатура с пользовательскими клавишами”

    Вероятно, это займет несколько шагов / итераций, и формат Q & A не подходит. Пожалуйста, обновите свой вопрос с дополнительной информацией, если вы застряли, и напишите мне в комментарии к этому ответу. Тогда я отредактирую свой ответ.

    Из описания это звучит так, как отображение специальных клавиш на ключевые события выполняется на клавиатуре, поэтому программирование должно выполняться на клавиатуре, а не в драйвере.

    Для Windows есть различные USB- фильтры с открытым исходным кодом, например usbpcap или более старый usbsnoop , Google, вероятно, найдет больше, и учебники, как их использовать.

    В принципе, вам необходимо записать сообщение, программируя различные специальные клавиши с различными последовательностями клавиш с программным обеспечением. Затем просмотрите пакеты, сравните их и посмотрите, какие байты изменяются для разных специальных клавиш или запрограммированных последовательностей. Угадайте протокол, повторите его в самостоятельной программе, используя libusb для Linux.

    Поскольку ваша клавиатура HID, а HID имеет высокую стандартизацию, мы немного помогаем. Ознакомьтесь с документацией HID (или, по крайней мере, просмотрите те части, которые вам нужны). Каждое HID-устройство поставляется с дескриптором, и дескриптор описывает все возможные взаимодействия с устройством в соответствии со стандартом HID. Если это так, как программируется клавиатура, и если не слишком много «специфичных для поставщика» полей, мы можем угадать протокол напрямую.

    Вы можете прочитать дескриптор двумя способами.

    (1) Если ваше ядро ​​имеет debugfs ,

     mount -t debugfs none /sys/kernel/debug cat /sys/kernel/debug/hid/device_id/rdesc 

    где device_id – это идентификатор, если ваша клавиатура. Это покажет необработанный дескриптор как шестнадцатеричные байты и как его анализирует. Если анализа синтаксиса недостаточно, попробуйте hidrd преобразовать необработанный дескриптор.

    (2) Выпустите HIDIOCGRDESCSIZE и HIDIOCGRDESC ioctls на устройстве hidraw (посмотрите в dmesg чтобы найти его для вашей клавиатуры). samples/hidraw/hid-example.c в источнике ядра Linux объясняют, как это сделать, или используйте готовый инструмент, такой как usbhid-dump .

    В идеале вы увидите описание или описание функций, которые связаны с программированием. Вам может потребоваться отследить программные средства, если слишком много описанных полей нечеткие или отмечены как «специфические для вендора».

    Linux и Unix - лучшая ОС в мире.