На самом деле это не клавиатура, а ИК-пульт, но с точки зрения ОС это комплект из 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
В Китае оно, забористое, доступнее простому люду :-)
> Можно фотографию этого чудо-устройства для начала?
Не вопрос:
http://vnaum.com/misc/201101/dragonrise.jpg
Продавалось под маркой "DVTech PC JS19":
http://market.yandex.ru/model.xml?hid=91117&modelid=6471611
По фоткам сдаётся мне что "Defender Game Master" это тоже он:
http://market.yandex.ru/model.xml?modelid=6157419&hid=91117
no subject
no subject
Работают ли какие-нибудь из кнопок как переключатели режимов, модификаторы других кнопок?
no subject
Так часто бывает с дешевыми устройствами.
no subject
Однако смущает разница в описании. У Defender'а указано 13 кнопок против 8-ми и у него якобы нет датчика движения.
no subject
Как ответите про его параметры - дам примерный план действий.
Итак, сейчас интересует сколько реально кнопок, есть ли кнопки-переключатели режимов/модификаторы, есть ли на самом деле датчик движения и определяет ли он направление.
no subject
Может быть мне просто проспонсировать закупку устройства за 300 рублей? :-)
"Наплечных" кнопок 4, две слева и две справа.
Модификаторами работают кнопки turbo, auto и clear - их нажатия jstest не видит.
Итого выходит десять настоящих кнопок (4 основных + 4 шифта + select/start).
Все нажатия кнопок обрабатываются как положено, никаких аномалий (ядро видит 10 кнопок и реально присутствуют десять).
Никакого работающего "датчика движения" не наблюдаю.
USB-устройство ровно одно, оно джойстик. jstest показывает его вот так:
$ jstest --normal /dev/input/js0
Driver version is 2.1.0.
Joystick (USB Gamepad ) has 6 axes (X, Y, Z, Rx, Ry, (null))
and 10 buttons (Trigger, ThumbBtn, ThumbBtn2, TopBtn, TopBtn2, PinkieBtn, BaseBtn, BaseBtn2, BaseBtn3, BaseBtn4).
Testing ... (interrupt to exit)
Axes: 0:-32767 1: 0 2: 0 3: 0 4: 0 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off
Оси 0 и 5 показывают в jstest такие значения (-32767 и 32767) постоянно,
независимо от положения крестовины, кнопок и джойстика.
Дамп потока:
Ничего не нажато:
004:009:000:STREAM
01 7F 7F 7F 7F 0F 00 00
"Крестовина Влево":
004:009:000:STREAM
01 7F 7F 00 7F 0F 00 00
"Крестовина Вправо":
004:009:000:STREAM
01 7F 7F FF 7F 0F 00 00
"Крестовина Вверх":
004:009:000:STREAM
01 7F 7F 7F 00 0F 00 00
"Крестовина Вниз":
004:009:000:STREAM
01 7F 7F 7F FF 0F 00 00
Нажимаю кнопки по одной:
01 7F 7F 7F 7F 0F 01 00 (левый шифт #1)
01 7F 7F 7F 7F 0F 02 00 (правый шифт #1)
01 7F 7F 7F 7F 0F 04 00 (левый шифт #2)
01 7F 7F 7F 7F 0F 08 00 (правый шифт #2)
01 7F 7F 7F 7F 0F 10 00 (select)
01 7F 7F 7F 7F 0F 20 00 (start)
01 7F 7F 7F 7F 1F 00 00 (кнопка #1)
01 7F 7F 7F 7F 2F 00 00 (#2)
01 7F 7F 7F 7F 4F 00 00 (#3)
01 7F 7F 7F 7F 8F 00 00 (#4)
no subject
Мне как-то эта идея в голову не пришла - с моими обычными устройствами - планшетами этот фокус не проходит :) Раз уж вы сделали дамп, может и не понадобится устройства, иначе попробую найти.
> Модификаторами работают кнопки turbo, auto и clear - их нажатия jstest не видит.
А что они делают?
Для какого ядра вам патч сделать?
no subject
> А что они делают?
"turbo": зажимаешь "турбо" + кнопку, и она теперь "турбированная" - её
можно просто держать зажатой, "долбит" джойстик сам.
"auto": то же самое, плюс можно уже и не держать - джойстик сам стреляет
"clear": снимает эффекты верхних двух с указанной кнопки.
> Для какого ядра вам патч сделать?
В идеале, наверное, надо работать для будущих поколений - чтоб в
апстрим толкать можно было.
У самого у меня текущее ядро из squeeze, 2.6.32-5-openvz-686.
Или удобно было бы иметь что-то вроде упомянутого в посте
http://gitorious.org/hid-aureal-kernel-module.
no subject
Тогда модификаторы на дескриптор не влияют.
no subject
Для 2.6.32.
no subject
no subject
no subject
https://github.com/spbnick/dragonrise_joystick_0011_driver/tree/master/patches/vanilla/2.6.32
Git'ом можно выкачать с
git://github.com/spbnick/dragonrise_joystick_0011_driver.git
Ядро 2.6.32 собранное с патчами и стоковым конфигом для 686 из Debian Squeeze (работает - пишу из под него):
http://ponomarevs.sknt.ru:48484/pub/linux-image-2.6.32_dragonrise.1_i386.deb
no subject
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Исправил дескриптор в соответствии с теми данными которые вы успели дать: https://github.com/spbnick/dragonrise_joystick_0011_driver/blob/master/rdesc/fixed.xml
Вам осталось сказать номер версии ядра и я сделаю пробный патч.
no subject
no subject
(no subject)
no subject
no subject
Я основываю свое суждение на ситуации с графическими планшетами.
Но там начинка сильнее завязана на корпус, пожалуй.
Кроме того это более сложные устройства - сложнее копировать частями.
no subject
no subject
Может быть и с планшетами то же будет, но сложно представить :)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
no subject