Если у вас гость 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"
Это, вероятно, займет несколько шагов / итераций, а формат вопросов и ответов не является хорошо подходит. Пожалуйста, обновите свой вопрос дополнительной информацией, если вы застряли, и напишите мне в комментарии к этому ответу. Тогда я отредактирую свой ответ.
Судя по описанию, отображение специальных клавиш на ключевые события выполняется на клавиатуре, поэтому программирование должно происходить на клавиатуре, а не в драйвере.
Существуют различные снифферы 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 .
В идеале вы увидите некоторую функцию или вывод описание (я), которые связаны с программированием. Возможно, вам все равно придется изучить программные инструменты, если слишком многие из описанных полей неясны или помечены как «зависит от производителя».