LINUX.ORG.RU

Мультимедийные клавиши в OCZ Alchemy Elixir I


0

1

Здравствуй, %username%!

Итак купил сабж. Не работают 16 дополнительных клавиш.

В windows(virtualbox) работают все на стандартном драйвере для hid клавиатур. Если бы в windows без драйверов не работала, плюнул бы, а так обидно, хочется настроить!

В dmesg при отладке hid пишет ошибку:

drivers/hid/hid-core.c: usage index exceeded
drivers/hid/hid-core.c: hid_add_usage failed
drivers/hid/hid-core.c: item 0 2 2 2 parsing failed
drivers/hid/usbhid/hid-core.c: parsing report descriptor failed
generic-usb: probe of 0003:0566:3015.0005 failed with error -22

Пробовал:
Xev --> мультимедийные не показывает
USB>PS2 переходник --> вообще не работает
showkey -s --> мультимедийные не показывает
cat /dev/input/eventN --> мультимедийные не показывает
cat /dev/input/hidrawN --> реагирует на 3 одновременно зажатые мультимедийные клавиши
Отладка HID, HID events в debugfs -> мультимедийные не показывает

Я все глубже ухожу в дебри аппаратной поддержки и драйверов.
Что дальше?
uhci_hcd дебаг?
Или копать в сторону acpi?
Как получить максимум сообщений между USB клавиатурой и ядром?
Спасибо!
P.S. Не буду приводить конфигурацию компьютера и версию ядра, так как пробовал разные машины и разные дистрибутивы.


Ответ на: комментарий от kernelpanic

Она. Голубые кнопки - это макросы. У них есть внутренняя память, в которой хранятся макросы (например ctrl+alt+p при нажатии на L1). Они программируются в windows, а потом отлично исполняются в linux. Все 10 голубых кнопок работают, а вот 16 мультимедийных - никак. Сейчас вот пробовал отслеживать через usbmon. И снова тот же результат, как будто они вообще не подают сигналов. Реагирует только на 3 и более одновременно нажатых: f50e9900 913513645 C Ii:4:003:1 0:1 8 = 01000000 00000000 f50e9900 913513698 S Ii:4:003:1 -115:1 8 <

exh
() автор топика
Ответ на: комментарий от kernelpanic

Они подают сигналы так, как будто нажаты другие кнопки, даже в usbmon. Отследить именно их нельзя.

exh
() автор топика
Ответ на: комментарий от kernelpanic

Наоборот - это очень весело, писать свой драйвер, ковыряться в ядре, дампить работу драйвера из windows :)

exh
() автор топика
Ответ на: комментарий от exh

Проблема с drivers/hid/hid-core.c: usage index exceeded решилась. Нужно всего лишь изменить одну строку в hid-core.c. А именно: if (parser->local.usage_index >= HID_MAX_USAGES) на if (parser->local.usage_index >= HID_MAX_USAGES+1). Теперь все клавиши распознаются в debugfs hid event.

Теперь пишу простой скрипт на питоне, который читает из /dev/hidraw и эмулирует стандартный код мультимедийных клавиш. Вот заготовка:

#/usr/bin/python import os infile = os.open(«/dev/hidraw2», os.O_RDONLY) while infile: key=«» for each_char in os.read(infile,5): #print ord(each_char), key=key+str(ord(each_char))

if (key!=«100»): print key

exh
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.