Заводим пульт Gotview в XBMC
Итак, имеем мультимедийный пульт Gotview с функцией выключения компьютера, подключается к USB-разъему и в разрыв провода от кнопочки Power на корпусе. На пульте 41 клавиша, из которых одна - хардварный power и одна - toggle - переключение пульта из режима клавиатуры в режим мышки и обратно, т.е. использовать в итоге можно 39.
Для начала посмотрим кто это
htpc@htpc:~$ lsusb .... Bus 004 Device 002: ID 0419:0001 Samsung Info. Systems America, Inc. IrDA Remote Controller / Creative Cordless Mouse ....
И еще вот так
htpc@htpc:~$ cat /proc/bus/input/devices ..... I: Bus=0003 Vendor=0419 Product=0001 Version=0100 N: Name="HOLTEK USB Keyboard" P: Phys=usb-0000:00:12.1-3/input0 S: Sysfs=/devices/pci0000:00/0000:00:12.1/usb4/4-3/4-3:1.0/input/input4 U: Uniq= H: Handlers=sysrq kbd event4 B: PROP=0 B: EV=120013 B: KEY=e080ffdf01cfffff fffffffffffffffe B: MSC=10 B: LED=1f I: Bus=0003 Vendor=0419 Product=0001 Version=0110 N: Name="HOLTEK USB Keyboard" P: Phys=usb-0000:00:12.1-3/input1 S: Sysfs=/devices/pci0000:00/0000:00:12.1/usb4/4-3/4-3:1.1/input/input5 U: Uniq= H: Handlers=kbd mouse1 event5 B: PROP=0 B: EV=17 B: KEY=40000000000000 0 70000 0 5878d811cc00 1e000000000000 0 B: REL=103 B: MSC=10 .....
И еще вот так чтобы совсем уже все узнать
htpc@htpc:~$ udevadm info -q all -n /dev/input/event4 P: /devices/pci0000:00/0000:00:12.1/usb4/4-3/4-3:1.0/input/input4/event4 N: input/event4 S: input/by-id/usb-HOLTEK_USB_Keyboard-event-kbd S: input/by-path/pci-0000:00:12.1-usb-0:3:1.0-event-kbd E: UDEV_LOG=3 E: DEVPATH=/devices/pci0000:00/0000:00:12.1/usb4/4-3/4-3:1.0/input/input4/event4 E: MAJOR=13 E: MINOR=68 E: DEVNAME=/dev/input/event4 E: SUBSYSTEM=input E: ID_INPUT=1 E: ID_INPUT_KEY=1 E: ID_INPUT_KEYBOARD=1 E: ID_VENDOR=HOLTEK E: ID_VENDOR_ENC=HOLTEK E: ID_VENDOR_ID=0419 E: ID_MODEL=USB_Keyboard E: ID_MODEL_ENC=USB\x20Keyboard E: ID_MODEL_ID=0001 E: ID_REVISION=0000 E: ID_SERIAL=HOLTEK_USB_Keyboard E: ID_TYPE=hid E: ID_BUS=usb E: ID_USB_INTERFACES=:030101:030102: E: ID_USB_INTERFACE_NUM=00 E: ID_USB_DRIVER=usbhid E: ID_PATH=pci-0000:00:12.1-usb-0:3:1.0 E: ID_PATH_TAG=pci-0000_00_12_1-usb-0_3_1_0 E: XKBMODEL=pc105 E: XKBLAYOUT=us,ru< E: XKBVARIANT=, E: XKBOPTIONS=grp:alt_shift_toggle,grp_led:scroll E: DEVLINKS=/dev/input/by-id/usb-HOLTEK_USB_Keyboard-event-kbd /dev/input/by-path/pci-0000:00:12.1-usb-0:3:1.0-event-kbd htpc@htpc:~$ udevadm info -q all -n /dev/input/event5 P: /devices/pci0000:00/0000:00:12.1/usb4/4-3/4-3:1.1/input/input5/event5 N: input/event5 S: input/by-id/usb-HOLTEK_USB_Keyboard-event-mouse S: input/by-id/usb-HOLTEK_USB_Keyboard-if01-event-mouse S: input/by-path/pci-0000:00:12.1-usb-0:3:1.1-event-mouse E: UDEV_LOG=3 E: DEVPATH=/devices/pci0000:00/0000:00:12.1/usb4/4-3/4-3:1.1/input/input5/event5 E: MAJOR=13 E: MINOR=69 E: DEVNAME=/dev/input/event5 E: SUBSYSTEM=input E: ID_INPUT=1 E: ID_INPUT_MOUSE=1 E: ID_INPUT_KEY=1 E: ID_VENDOR=HOLTEK E: ID_VENDOR_ENC=HOLTEK E: ID_VENDOR_ID=0419 E: ID_MODEL=USB_Keyboard E: ID_MODEL_ENC=USB\x20Keyboard E: ID_MODEL_ID=0001 E: ID_REVISION=0000 E: ID_SERIAL=HOLTEK_USB_Keyboard E: ID_TYPE=hid E: ID_BUS=usb E: ID_USB_INTERFACES=:030101:030102: E: ID_USB_INTERFACE_NUM=01 E: ID_USB_DRIVER=usbhid E: ID_PATH=pci-0000:00:12.1-usb-0:3:1.1 E: ID_PATH_TAG=pci-0000_00_12_1-usb-0_3_1_1 E: XKBMODEL=pc105 E: XKBLAYOUT=us,ru E: XKBVARIANT=, E: XKBOPTIONS=grp:alt_shift_toggle,grp_led:scroll E: DEVLINKS=/dev/input/by-id/usb-HOLTEK_USB_Keyboard-event-mouse /dev/input/by-id/usb-HOLTEK_USB_Keyboard-if01-event-mouse /dev/input/by-path/pci-0000:00:12.1-usb-0:3:1.1-event-mouse
Узнали мы вполне достаточно кстати, этого нам хватит для начала, чтобы рассказать демону udev всегда давать нашему пульту одинаковое название. Для этого нужно создать правило, нам понадобятся значения Vendor, Product, MINOR и MAJOR, которые мы можем почерпнуть из вывода команд выше, в итоге получаем вот такие правила
SUBSYSTEM=="input",ATTRS{idVendor}=="0419",ATTRS{idProduct}=="0001",ATTR{dev}=="13:68",SYMLINK="input/irremote0" SUBSYSTEM=="input",ATTRS{idVendor}=="0419",ATTRS{idProduct}=="0001",ATTR{dev}=="13:69",SYMLINK="input/irremote1"
Записываем их в /etc/udev/rules.d/10-irremote.rules, после чего рестартуем udev
service udev restart
и дергаем триггер чтобы заново распознать девайсы
udevadm trigger
А можно и просто компьютер перезагрузить. После этого проверяем, а не появились ли у нас новые девайсы для ввода
ls -la /dev/input
должно стать на две симлинки больше, примерно так
htpc@htpc:~$ ls -la /dev/input/ итого 0 drwxr-xr-x 4 root root 320 2012-01-25 20:26 . drwxr-xr-x 15 root root 4420 2012-01-25 20:26 .. drwxr-xr-x 2 root root 240 2012-01-25 20:26 by-id drwxr-xr-x 2 root root 180 2012-01-25 20:26 by-path crw-r----- 1 root root 13, 64 2012-01-25 20:26 event0 crw-r----- 1 root root 13, 65 2012-01-25 20:26 event1 crw-r----- 1 root root 13, 66 2012-01-25 20:26 event2 crw-r----- 1 root root 13, 67 2012-01-25 20:26 event3 crw-r----- 1 root root 13, 68 2012-01-25 20:26 event4 crw-r----- 1 root root 13, 69 2012-01-25 20:26 event5 crw-r--r-- 1 root root 13, 70 2012-01-25 20:26 event6 lrwxrwxrwx 1 root root 6 2012-01-25 20:26 irremote0 -> event4 lrwxrwxrwx 1 root root 6 2012-01-25 20:26 irremote1 -> event5 crw-r----- 1 root root 13, 63 2012-01-25 20:26 mice crw-r----- 1 root root 13, 32 2012-01-25 20:26 mouse0 crw-r----- 1 root root 13, 33 2012-01-25 20:26 mouse1
Теперь устанавливаем и настраиваем LIRC
sudo apt-get install lirc inputlirc
Конфигуратор LIRC задаст два вопросы, на оба надо ответить "None", после этого нам потребуется заполнить пару конфигов, сначала hardware.conf
htpc@htpc:~$ vi /etc/lirc/hardware.conf
он должен иметь вот такой вид
REMOTE="None" REMOTE_MODULES="" REMOTE_DRIVER="" REMOTE_DEVICE="phys="" REMOTE_SOCKET="" REMOTE_LIRCD_CONF="" REMOTE_LIRCD_ARGS="" TRANSMITTER="None" TRANSMITTER_MODULES="" TRANSMITTER_DRIVER="" TRANSMITTER_DEVICE="" TRANSMITTER_SOCKET="" TRANSMITTER_LIRCD_CONF="" TRANSMITTER_LIRCD_ARGS="" START_LIRCD="false" LOAD_MODULES="true" LIRCMD_CONF="" FORCE_NONINTERACTIVE_RECONFIGURATION="false" START_LIRCMD=""
теперь следующий конфиг - inputlirc
vi /etc/defaults/inputlirc
здесь должно быть так
EVENTS="/dev/input/irremote0 /dev/input/irremote1" OPTIONS="-g -m 0 -c"
следующий - /etc/lircd/lircd.conf - надо сделать полностью пустым.
Теперь рестартуем inpitlirc и можем проверять результаты первой части работы с помощью irw
service inputlirc restart
Если все сделано верно, то вывод irw будет примерно таким
htpc@htpc:~$ irw f 0 KEY_TAB /dev/input/irremote0 6c 0 KEY_DOWN /dev/input/irremote0 67 0 KEY_UP /dev/input/irremote0 1c 0 KEY_ENTER /dev/input/irremote0 69 0 KEY_LEFT /dev/input/irremote0 1c 0 KEY_ENTER /dev/input/irremote0 72 0 KEY_VOLUMEDOWN /dev/input/irremote1 73 0 KEY_VOLUMEUP /dev/input/irremote1
Если вывод такой, можно считать подготовительный этап завершенным и переходить к настройке XBMC. Она сводится к составлению конфигурационного файла - Lircmap.xml, в котором команды XBMC приводятся в соответствие кодам клавиш пульта. В моем случае этот файл выглядит вот так
KEY_VOLUMEUP KEY_VOLUMEDOWN KEY_MUTE KEY_BACK CTRL_SHIFT_ALT_KEY_2 CTRL_SHIFT_ALT_KEY_H ALT_KEY_F4 CTRL_SHIFT_ALT_KEY_3 CTRL_SHIFT_ALT_KEY_4 CTRL_SHIFT_ALT_KEY_5 CTRL_SHIFT_ALT_KEY_1 KEY_LEFT KEY_RIGHT KEY_UP KEY_DOWN KEY_TAB CTRL_KEY_B CTRL_KEY_P CTRL_KEY_F CTRL_SHIFT_KEY_B CTRL_KEY_S CTRL_SHIFT_KEY_F CTRL_SHIFT_ALT_KEY_HOME KEY_PAGEUP KEY_PAGEDOWN CTRL_KEY_R KEY_1 KEY_2 KEY_3 KEY_4 KEY_5 KEY_6 KEY_7 KEY_8 KEY_9 CTRL_SHIFT_ALT_KEY_F KEY_0 CTRL_SHIFT_ALT_KEY_B
Полученный файл надо поместить в ~/.xbmc/userdata/ после чего запустить XBMC и пользоваться.
Теперь кратко о том как пользоваться. Кнопочки tv/vdr, music, pictures, videos вызывают соответствующие разделы XBMC. Кнопочка close очищает поля форм. Кнопочка dvd/menu вызывает контекстное меню. Стрелочки, естественно, отвечают за перемещение по меню, кнопка Back возвращает назад, кнопка Ok осуществляет выбор элементов. Кнопка Tab переключает в полноэкранный режим и обратно. Кнопка c домиком в полноэкранном режиме вызывает элементы управления, а в обычном переводит пользователя на главный экран XBMC. Play, Stop, Rec и перемотки, а так же vol+/-, mute, ch+/- делают именно то, что на них написано. Кнопочка shuffle отправляет выделенный элемент списка в текущий плейлист, а кнопка repeat переключает звуковые дорожки у фильмов и телеканалов.
Вообще это не единственный способ настройки. Изначально пульт посылает комбинации клавиш, да это видно и по кодам выдаваемым irw, вполне можно было внести изменения в keyboard.xml, но по-моему это было бы сложнее.
Обновление:
В указанной схеме во время использования выявился ряд недостатков. Так при подключении дополнительных девайсов (геймпадов, дэнспадов), нумерация стала съезжать и в результате не создавались нужные ссылочки irremote*. В итоге я привел конфиг Inputlirc вот к такому виду
EVENTS="/dev/input/by-id/usb-HOLTEK_USB_Keyboard-event-kbd /dev/input/by-id/usb-HOLTEK_USB_Keyboard-if01-event-mouse" OPTIONS="-g -m 0 -c"
По моим наблюдениям эти линки не меняются, как бы то ни было проблема нерабочего пульта решилась.
Комментарии