Мультимедийные клавиши в OCZ Alchemy Elixir I (Решено)
Здравствуй, %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. Не буду приводить конфигурацию компьютера и версию ядра, так как пробовал разные машины и разные дистрибутивы.
Проблема с 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. Дальше осталось написать драйвер.
Вот заготовка:
#/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
- Для комментирования войдите или зарегистрируйтесь