Геймерская клавиатура с настраиваемыми клавишами

Если у вас гость Centos Linux , вам необходимо установить пакет DKMS (поддержка динамических модулей ядра).

# yum install dkms
# yum install virtualbox-guest-additions

Для справки вы можете проверить это

Без virtualbox-guest-adds инструмент

Отключить службу ntp

chkconfig ntpd off

Для хоста Windows

Перейдите в
C: \ Documents and Settings \ .VirtualBox \ Machines \
и отредактируйте XML-файл.
-> Создать резервную копию этого файла

Добавьте строку

VBoxInternal / Devices / VMMDev / 0 / Config / GetHostTimeDisabled "0"

4
02.03.2017, 00:38
1 ответ

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

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

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

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

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

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

(1) Если в вашем ядре включен debugfs , с правами root выполните

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 .

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

1
27.01.2020, 21:01

Теги

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