LINUX.ORG.RU

Дистанционное управление компутером, 4 проблемы


0

0

Preface: Пардон за "многабукв", пытался писать внятно.

В наличии: пульт дистанционного управления от DVB-S карты Twinhan, USB-ресивер к нему. Ресивер втыкается в USB, вот каты (все в порядке) из
[/proc/bus/usb/devices]:
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=6253 ProdID=0100 Rev= 1.00
S: Manufacturer=Twinhan Tech
S: Product=Remote Control
S: SerialNumber=1111111
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid
E: Ad=82(I) Atr=03(Int.) MxPS= 4 Ivl=10ms
[dmesg]:
input: Twinhan Tech Remote Control as /class/input/input1
input: USB HID v1.10 Keyboard [Twinhan Tech Remote Control] on usb-0000:00:02.0-2
input: Twinhan Tech Remote Control as /class/input/input2
input: USB HID v1.10 Mouse [Twinhan Tech Remote Control] on usb-0000:00:02.0-2

Driver=usbhid, т.е. определяется как обычный инпут девайс, работает также - большинство кнопок пульта according to `showkey` дублирут клавиатурные кнопки - цифры, буквы, сочетания с мод-кеями.

Требуется: биндинг различных действий на кнопки пульта.

Проблема1: я бы легко перемапил кнопки на нужные действия, если бы нажатия были бы уникальными. Но как отличить клавиатурное нажатие от "пультового"? Нужно ли использовать lirc? Скачивал сегодня, бегло посмотрел доки, вроде не нашел поддержки для usb-пультов. Тем более, когда запускаю irrecord и пытаюсь нажимать кнопки на пульте, нажатия перехватывает usbhid драйвер (как я понимаю) и просто пишет буквы и цифры в консоль. Может быть можно заставить lirc_* модули вместо usbhid перехватывать нажатия? Но как?

Проблема2: как видно из dmesg, пульт определяется также как МЫШЬ! Это для меня вообще загадка :) Может кто-нибудь объяснить как пульт может быть еще и мышью?

Проблема3 (смежная тема): Не могу понять как правильно загружать модули при загрузке. Неужели нужно вставлять modprobe/insmod в rc-скрипты?

Проблема3.1: в разных документациях при работе с модулями пишут строки наподобии "alias sound-slot-0 snd-card-0" в разные файлы - /etc/{conf.modules, modules.conf, modprobe.conf}. Какой из них правильный? Ман есть только на modprobe.conf.

anonymous

> Нужно ли использовать lirc?

Да

> Но как отличить клавиатурное нажатие от "пультового"?

Твой пульт и клава - РАЗНЫЕ устройства. И им сопоставлены разные файлы /dev/input/event*. Натрави lirc на соответствующее устройство и всех делов

> Может кто-нибудь объяснить как пульт может быть еще и мышью?

А почему нет? Он еще может быть и флэшкой и тачпадом и планшетом и одиннадцатью клавиатурами. См. предыдущий коммент.

> Может быть можно заставить lirc_* модули вместо usbhid

Не нужно это. В твоем случае вообще модули не нужны - достаточно собрать и запустить lirc с поддержкой dev/input.

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

> Да

OK, буду смотреть подробнее. Если пульт сработается с lirc, будут ли нажатия кнопок на нем отправляться на stdin (как это происходит сейчас)?

> им сопоставлены разные файлы /dev/input/event*

io [~] $ ll /dev/input/
итого 0
crw-r--r-- 1 root root 13, 63 2007-02-14 09:46 mice
crw-r--r-- 1 root root 13, 32 2007-02-14 09:46 mouse0
crw-r--r-- 1 root root 13, 33 2007-02-14 09:46 mouse1

Одна из мышек - usb'шная MS IntelliMouse 3.0A, вторая пульт. По ходу просто не создаются файлы устройств для пульта-клавы, вот вывод из /sys:
io [/sys/class/input] $ ls
input0/ input1/ input2/ input3/ mice/ mouse0@ mouse1@
io [/sys/class/input] $ cat input1/name
Twinhan Tech Remote Control

Т.е. как понимаю нужно udev'у прописать дополнительное правило, верно?

> Он еще может быть и флэшкой и тачпадом и планшетом и одиннадцатью клавиатурами

Ладно, как реально с помощью пульта изменять координаты курсора - вот это мне не понятно.

Что по поводу 3 и 3.1? :)

anonymous
()

>Проблема3.1: в разных документациях при работе с модулями пишут строки наподобии "alias sound-slot-0 snd-card-0" в разные

>файлы - /etc/{conf.modules, modules.conf, modprobe.conf}. Какой из них правильный? Ман есть только на modprobe.conf.

Тяжелый случай. В гугле забанили, что ли?

Рассказываю. conf.modules - это тяжелое наследие определенных "оригинальных" дистрибутивов. То же самое, что и modules.conf.

modules.conf - параметры сюда писались для ядер 2.4 (ну дебиановцы и слаководы не растерялись и доточили ядра, чтобы и 2.6 могло пользоваться).

modprobe.conf - родной файл для модулей ядер 2.6. Синтаксис упрощен по сравнению с modules.conf.

>Неужели нужно вставлять modprobe/insmod в rc-скрипты?

См. предыдущий ответ.

jackill ★★★★★
()
Ответ на: комментарий от jackill

> Тяжелый случай. В гугле забанили, что ли?

Язва :) На самом деле меня смутило противоречие того что говорит ман и того что делают программы, такие например как lm-sensors и lirc. В этом месте у меня банально пробел в знаниях, нужно будет почитать нубовские доки.

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

Ну, как успехи?

Тоже занимаюсь настройкой этого ацкого девайса. Пока соображения такие:

если включить поддержку usb hid input в ядре, то евенты пульта напрямую, минуя lirc и конфиг ксорга, отправляются в stdin.

если выключить поддержку usb hid input в ядре, но включить raw hid, то cat /dev/usb/hiddev0 (вроде так) показывает какие-то евенты вроте "TT", но, видимо, это не то что нужно. Пробовал натравить на /dev/usb/hiddev0 lircd и inputlirc - не получилось :( inputlirc падал при первом же нажатии на кнопку пульта, а lircd стоял крепко, но бесполезно.

Как нужно делать по-правильному? может lircd.conf написать особый надо? Собрал я его с поддержкой только devinput.

Есть ещё одна идея - воспользоваться тем, что пульт определяется как клава, и создать для него отдельный keymap. Но для этого нужно для настоящей клавы и пульта создать разные секции в xorg.conf с указанием девайсов. С пультом то всё ясно, но как указать девайс для ps/2 клавы?

Был бы очень признателен за подробный ответ.

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