На самом деле это не клавиатура, а ИК-пульт, но с точки зрения ОС это комплект из USB-мыши и клавиатуры с небольшим набором мультимедийных кнопок.
В Windows работает влёт без всяких дополнительных драйверов. В линуксе работало очень частично и местами неправильно, пока я не нашел драйвер. Хотя если выражаться точно, то это не драйвер устройства. Это маленький патч, который на лету фиксит ошибку в описании одного конкретного USB- устройства. Собственно, вот весь функционал, остальное только привязка вызова этой функции в нужное время в нужном месте:
static void aureal_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int rsize)
{
if (rsize >= 54 && rdesc[52] == 0x25 && rdesc[53] == 0x01) {
dev_info(&hdev->dev, "fixing Aureal Cy se W-01RN USB_V3.1 "
"report descriptor. Keyboard Logical Maximum = 101\n");
rdesc[53] = 0x65;
}
}
Невыясненным остаётся вопрос, почему оно таки работает в Windows без всяких телодвижений. Потому что в линуксе криво реализована поддержка USB HID? Или потому что она криво реализована в Windows, а пульт, заточенный для работы с Windows Media Center, работает с учётом этой кривизны? Или потому что эта часть вообще не регламенитруется спецификациями, а производители сделали так, чтобы оно работало с учетом реализации HID в Windows?
Более ранние ссылки о том же пульте: https://ru-linux.livejournal.com/2579350.html, https://ru-linux.livejournal.com/2647723.html
Оригинал этой записи. Комментировать можно тут или там.
no subject
$ jstest --normal /dev/input/js0
Driver version is 2.1.0.
Joystick (USB Gamepad ) has 2 axes (X, Y)
and 10 buttons (Trigger, ThumbBtn, ThumbBtn2, TopBtn, TopBtn2, PinkieBtn, BaseBtn, BaseBtn2, BaseBtn3, BaseBtn4).
Testing ... (interrupt to exit)
Axes: 0: 0 1: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off
Нажатия - как положено.
evtest, увы, не записал.
no subject
В смысле "не записал"?
Его надо натравливать на /dev/input/eventX.
no subject
Если сильно интересно, я могу его ещё раз поставить и поглядеть в evtest.
no subject
Тогда не надо. Когда будете проверять на 2.6.37 посмотрим.