Надеюсь, что эта статья поможет кому-нибудь сэкономить время на настройку. Статья рассчитана на новичков, но надеюсь и опытные пользователи найдут что-нибудь полезное. Все действия производились в linux mint, но полагаю, что все будет работать и на Ububntu и на других дебианоподобных дистрибутивах.
Картинка для привлечения внимания. На фото тюнер Aver 307 грубо и безжалостно переделанный мной много лет назад в Behold 407.
Итак приступим.
Тв тюнер установлен, в него вставлена антенна, шнурок инфракрасного датчика и аудио кабель, второй конец которого в линейном входе звуковой карты. Для просмотра будем использовать программу tvtime.
При установке у вас спросят стандарт вещания и вариант частотной сетки каналов. Стандарт для России SECAM, а частотная сеткаМозамбик Россия.
При установке в каталоге пользователя создается каталог .tvtime, который недоступен для пользователя. Поэтому:
Можно запускать.
В ~/.tvtime будут созданы файлы tvtime.xml и stationlist.xml.
Если вы увидели изображение с телевизора и услышали звук, вам сказочно повезло. Можете переходить к следующему пункту.
Если вы видите изображение не с тюнера, а, например, с Web камеры, добавьте в файл tvtime.xml
и попробуйте подобрать номер устройства.
Если вы не слышите звук (99% так оно и есть). Запускаете
и увеличиваете громкость по линии Line. Если под ползунком стоят буквы MM, значит линия отключена. Включаем — жмем клавишу «М».
Звук должен появиться. Если нет, то дальше уже зависит от конкретной модели звуковой карты. Проверьте с какого канала карта берет Line-In (у меня есть вариант Line-In и Rear Out). Могут быть и другие экзотические фишки связанные с вашей моделью оборудования. Например интегрированная звуковая Via vt1828s имеет параметр — loopback. Так вот когда он Enebled звук с тв тюнера идет, но не работают больше никакие звуки (немое кино, и неслышная музыка). При Disabled все наоборот.
Со звуком справились и чтобы окончательно закрыть тему, добавляем в tvtime.xml строку
Она указывает программе каким каналом громкости рулить. Можно указать Line, да и вообще любой канал по вашему вкусу. Названия каналов смотрите в alsamixer. Регистр букв имеет значение.
Можно добавить опции глушить звук при выходе и поверх всех окон.
Запускаем:
Вместо /dev/video1 подставьте ваше устройство. Если вы пользуетесь услугами кабельного провайдера, то он может транслировать передачи в стандарте PAL. Ничего страшного в этом нет. Канал будет найден все равно. Изменить кодировку для конкретного канала можно будет позднее в файле stationlist.xml.
После сканирования каналов открываем stationlist.xml, удаляем лишние каналы, добавляем, если что-то не нашлось (но это вряд ли).
Так выглядит строка с каналом.
name — имя канала, которое будет выводиться на экране при переключении. Если в именах каналах будут не только английские буквы, добавьте в объявление xml
Иначе после запуска tvtime буквы преобразуются в Unicode коды.
active — если 0, то при листании каналов он будет пропущен
position — на какой кнопке будет сидеть канал.
Остальные параметры нет необходимости менять вручную.
Самое большое преимущество компьютерного тюнера по сравнению с обычным телевизором — это возможность выводить программу телепередач прямо на экран. Переключаем канал и видим рекламу, но мы то знаем ЧТО будет сразу после нее иделаем звук погромче скорее листаем дальше.
Tvtime умеет работать с файлами формата xmltv и мы воспользуемся этим.
В tvtime.xml добавляем.
Качаем и распаковываем программу.
Теперь нужно связать каналы из xmltv.xml и stationlist.xml. У каждого канала в xmltv.xml есть id. Прописываем его в атрибут xmltvid в файл stationlist.xml вот так:
Вот и все. Теперь можно включить телевизор и наслаждаться программой передач на экране. Правда если вы живете не вDefault city столице нашей родины Москве, то ваша радость, скорее всего, будет неполной. Так как время фактической трансляции не будет совпадать со временем в программе телепередач. Причем для разных каналов отклонение во времени будет различным.
Исправим это:
Изначально в файле xmltv.xml указан часовой пояс +4 часа (видимо от Гринвича), а мы сделаем +6 часов. Нужно выполнить подобную команду для каждого канала.
Самый сложный и самый затратный по времени этап.
Есть два способа работы с пультом:
1. Через lirc,
2. Как с дополнительно клавиатурой.
Мы пойдем по второму пути. Частично пульт уже должен работать. Работают цифровые клавиши и кнопки регулировки громкости. Остальные кнопки нет.
Дело в том, что пульт уже определился системой как клавиатура. Соответствие сканкодов и кейкодов клавиатуры задается на уровне ядра.
Порядок конвертации значений следующий (описываю как сам понял дилетантским языком, исправления и уточнения приветствуются):
1. Драйвер переводит сканкод (физический сигнал) кнопки в однобайтный или многобайтный кейкод (код клавиши) и отправляет «заинтересованным лицам».
2. Заинтересованным лицом, в нашем случае, является X сервер, который в зависимости от модели клавиатуры определяет как интерпретировать полученный кейкод. Т.е. Даже один и тот же код, но полученный от разных моделей устройств X сервер может интерпретировать по разному. Это, обычно не касается буквенно-цифровых символов и основных (вроде стрелок и ентера) кнопок. А вот интересующих нас мультимедийных кнопок очень даже касается.
Есть и еще одна проблема. X сервер способен принимать только однобайтные кейкоды, а некоторые кнопки у пульта бехолдера имеют более длинный код. Будем исправлять. Устанавливаем утилиты:
Считываем текущую кодовую таблицу для пульта:
Пояснение для новичков. На самом деле все не так страшно. Эту строку можно заменить на такую
и она будет работать ничуть не хуже. Просто нужно знать каким именно event'ом числится ваш пульт в системе. Вся остальная страшная строка — это просто вычисление номера. Этой командой можно прочитать кодовую таблицу любой клавиатуры подключенной к компьютеру.
Появился файл /etc/rc_keymaps/behold-key с текущей раскладкой. Выглядит он так:
Редактируем этот файл так чтобы не осталось многобайтных кодов и кодов, которые не понимает X сервер:
Записываем обратно:
Получаем до перезагрузки пульт с новой кодовой таблицей. После перезагрузки все станет как раньше. Я не знаю как сделать чтобы результат оставался навсегда, поэтому последнюю команду добавил в автозагрузку файл /etc/rc.local.
Привожу для примера мой отредактированный файл behold-key:
А вот некоторые коды, которые нормально воспринимает X сервер (данные получены методом сурового брутфорса). Обращаю ваше внимание, что так воспринимаются коды именно от пульта бехолдер. От других клавиатур код 0x94 может идентифицироваться вовсе не как KEY_PROG1.
При проведении работ по настройке кнопок пульта удобно пользоваться следующим методом мониторинга. Запускаем
Где 60 это время ожидания нажатия в секундах, 5 номер клавиатуры в системе. И жмем кнопки на пульте.
Выдача имеет примерно следующий вид.
Вывод происходит при нажатии и при отпускании кнопки.
7046683 — это физический сканкод кнопки пульта в десятичной системе. Он будет выводиться в любом случае.
(0xa4) — кейкод который драйвер отправил дальше. Если его длина не равна одному байту, то X сервер его не увидит.
KEY_PLAYPAUSE — это имя кнопки. Если имени нет, то на эту кнопку нельзя будет повесить команду. Меняйте кейкод.
Мы получили пульт воспринимаемый системой как дополнительная клавиатура с мультимедийными клавишами. Осталось настроить реакцию системы на нажатия. Громкость и переключение каналов в tvtime уже работают, так как кнопки крестовины настроены как стрелки и Enter.
Идем в Настройки клавиатуры и задаем клавиши воспроизведения, которые будут работать в большинстве плееров.
На остальные кнопки настраиваем дополнительные команды.
Я назначил клавише FullScreen пульта значение F11. Эту клавишу понимает большинство программ как переход в полноэкранный режим и обратно, но не tvtime. Поэтому добавляем в файл tvtime.xml
К сожалению tvtime не понимает мультимедийные клавиши, поэтому задать действие на нажатие KEY_SWITCHVIDEOMODE не получится. Но для этого есть другой способ.
В разделе дополнительных команд настроек клавиатуры задаем команду
полный список команд tvtime читайте в документации.
Если нужна кнопка для закрытия активного окна, устанавливаем:
И добавляем допкоманду:
Вот и все. Буду рад исправлениям и уточнениям. Если тема интересна, то можно будет изучить вопрос по настройке медиакомбайна MythTV в многотюнерной конфигурации и с сетевыми клиентами. Между прочим, у MythTV есть фронтэнды под андроид. Можно смотреть эфирное ТВ с планшета или смарта… Заманчиво?!
Картинка для привлечения внимания. На фото тюнер Aver 307 грубо и безжалостно переделанный мной много лет назад в Behold 407.
Итак приступим.
Первоначальная настройка
Тв тюнер установлен, в него вставлена антенна, шнурок инфракрасного датчика и аудио кабель, второй конец которого в линейном входе звуковой карты. Для просмотра будем использовать программу tvtime.
sudo apt-get install tvtime
При установке у вас спросят стандарт вещания и вариант частотной сетки каналов. Стандарт для России SECAM, а частотная сетка
При установке в каталоге пользователя создается каталог .tvtime, который недоступен для пользователя. Поэтому:
sudo chmod 7 ~/.tvtime/
Можно запускать.
tvtime
В ~/.tvtime будут созданы файлы tvtime.xml и stationlist.xml.
Если вы увидели изображение с телевизора и услышали звук, вам сказочно повезло. Можете переходить к следующему пункту.
Если вы видите изображение не с тюнера, а, например, с Web камеры, добавьте в файл tvtime.xml
<option name="V4LDevice" value="/dev/video1/>
и попробуйте подобрать номер устройства.
Если вы не слышите звук (99% так оно и есть). Запускаете
alsamixer
и увеличиваете громкость по линии Line. Если под ползунком стоят буквы MM, значит линия отключена. Включаем — жмем клавишу «М».
Звук должен появиться. Если нет, то дальше уже зависит от конкретной модели звуковой карты. Проверьте с какого канала карта берет Line-In (у меня есть вариант Line-In и Rear Out). Могут быть и другие экзотические фишки связанные с вашей моделью оборудования. Например интегрированная звуковая Via vt1828s имеет параметр — loopback. Так вот когда он Enebled звук с тв тюнера идет, но не работают больше никакие звуки (немое кино, и неслышная музыка). При Disabled все наоборот.
Со звуком справились и чтобы окончательно закрыть тему, добавляем в tvtime.xml строку
<option name="MixerDevice" value="hw:0/Master"/>
Она указывает программе каким каналом громкости рулить. Можно указать Line, да и вообще любой канал по вашему вкусу. Названия каналов смотрите в alsamixer. Регистр букв имеет значение.
Можно добавить опции глушить звук при выходе и поверх всех окон.
<option name="MuteOnExit" value="1"/>
<option name="AlwaysOnTop" value="1"/>
Настройка каналов
Запускаем:
tvtime-scanner -d /dev/video1 -n SECAM
Вместо /dev/video1 подставьте ваше устройство. Если вы пользуетесь услугами кабельного провайдера, то он может транслировать передачи в стандарте PAL. Ничего страшного в этом нет. Канал будет найден все равно. Изменить кодировку для конкретного канала можно будет позднее в файле stationlist.xml.
После сканирования каналов открываем stationlist.xml, удаляем лишние каналы, добавляем, если что-то не нашлось (но это вряд ли).
Так выглядит строка с каналом.
<station name="1" active="1" position="1" band="VHF Russia" channel="R1" finetune="0" norm="SECAM" audio="auto"/>
name — имя канала, которое будет выводиться на экране при переключении. Если в именах каналах будут не только английские буквы, добавьте в объявление xml
encoding="UTF-8"
Иначе после запуска tvtime буквы преобразуются в Unicode коды.
active — если 0, то при листании каналов он будет пропущен
position — на какой кнопке будет сидеть канал.
Остальные параметры нет необходимости менять вручную.
Программа телепередач
Самое большое преимущество компьютерного тюнера по сравнению с обычным телевизором — это возможность выводить программу телепередач прямо на экран. Переключаем канал и видим рекламу, но мы то знаем ЧТО будет сразу после нее и
Tvtime умеет работать с файлами формата xmltv и мы воспользуемся этим.
В tvtime.xml добавляем.
<option name="XMLTVFile" value="~/.tvtime/xmltv.xml"/>
<option name="XMLTVLanguage" value="ru"/>
Качаем и распаковываем программу.
cd ~/.tvtime
wget http://www.teleguide.info/download/new3/xmltv.xml.gz
gzip -f -d xmltv.xml.gz > xmltv.xml
Теперь нужно связать каналы из xmltv.xml и stationlist.xml. У каждого канала в xmltv.xml есть id. Прописываем его в атрибут xmltvid в файл stationlist.xml вот так:
<station name="Первый" xmltvid="1" active="1" position="1" band="VHF Russia" channel="R1" finetune="0" norm="SECAM" audio="auto"/>
Вот и все. Теперь можно включить телевизор и наслаждаться программой передач на экране. Правда если вы живете не в
Исправим это:
sed -i '/channel="1"/s/+0400/+0600/g' xmltv.xml # Первый канал: +2 часа
Изначально в файле xmltv.xml указан часовой пояс +4 часа (видимо от Гринвича), а мы сделаем +6 часов. Нужно выполнить подобную команду для каждого канала.
Настройка пульта
Самый сложный и самый затратный по времени этап.
Есть два способа работы с пультом:
1. Через lirc,
2. Как с дополнительно клавиатурой.
Мы пойдем по второму пути. Частично пульт уже должен работать. Работают цифровые клавиши и кнопки регулировки громкости. Остальные кнопки нет.
Дело в том, что пульт уже определился системой как клавиатура. Соответствие сканкодов и кейкодов клавиатуры задается на уровне ядра.
Порядок конвертации значений следующий (описываю как сам понял дилетантским языком, исправления и уточнения приветствуются):
1. Драйвер переводит сканкод (физический сигнал) кнопки в однобайтный или многобайтный кейкод (код клавиши) и отправляет «заинтересованным лицам».
2. Заинтересованным лицом, в нашем случае, является X сервер, который в зависимости от модели клавиатуры определяет как интерпретировать полученный кейкод. Т.е. Даже один и тот же код, но полученный от разных моделей устройств X сервер может интерпретировать по разному. Это, обычно не касается буквенно-цифровых символов и основных (вроде стрелок и ентера) кнопок. А вот интересующих нас мультимедийных кнопок очень даже касается.
Есть и еще одна проблема. X сервер способен принимать только однобайтные кейкоды, а некоторые кнопки у пульта бехолдера имеют более длинный код. Будем исправлять. Устанавливаем утилиты:
sudo apt-get install ir-keytable input-utils
Считываем текущую кодовую таблицу для пульта:
sudo ir-keytable -r -d /dev/input/event`cat /proc/bus/input/devices | grep -3 "i2c-.*/.*/ir0" | grep "H:" | awk '{ sub(/event/, "", $3); print $3}'` >/etc/rc_keymaps/behold-key
Пояснение для новичков. На самом деле все не так страшно. Эту строку можно заменить на такую
sudo ir-keytable -r -d /dev/input/event5 > /etc/rc_keymaps/behold-key
и она будет работать ничуть не хуже. Просто нужно знать каким именно event'ом числится ваш пульт в системе. Вся остальная страшная строка — это просто вычисление номера. Этой командой можно прочитать кодовую таблицу любой клавиатуры подключенной к компьютеру.
Появился файл /etc/rc_keymaps/behold-key с текущей раскладкой. Выглядит он так:
scancode 0x6b8600 = KEY_0 (0x0b)
scancode 0x6b8601 = KEY_1 (0x02)
scancode 0x6b8602 = KEY_2 (0x03)
scancode 0x6b8603 = KEY_3 (0x04)
scancode 0x6b8604 = KEY_4 (0x05)
scancode 0x6b8605 = KEY_5 (0x06)
scancode 0x6b8606 = KEY_6 (0x07)
scancode 0x6b8607 = KEY_7 (0x08)
scancode 0x6b8608 = KEY_8 (0x09)
scancode 0x6b8609 = KEY_9 (0x0a)
scancode 0x6b860a = KEY_AGAIN (0x81)
scancode 0x6b860b = KEY_CHANNELUP (0x192)
scancode 0x6b860c = KEY_VOLUMEUP (0x73)
scancode 0x6b860d = KEY_INFO (0x166)
scancode 0x6b860e = KEY_TEXT (0x184)
scancode 0x6b860f = KEY_RECORD (0xa7)
scancode 0x6b8610 = KEY_ZOOM (0x174)
scancode 0x6b8611 = KEY_MUTE (0x71)
scancode 0x6b8612 = KEY_POWER (0x74)
scancode 0x6b8613 = KEY_GREEN (0x18f)
scancode 0x6b8614 = KEY_SCREEN (0x177)
scancode 0x6b8615 = KEY_CHANNELDOWN (0x193)
scancode 0x6b8616 = KEY_OK (0x160)
scancode 0x6b8617 = KEY_MODE (0x175)
scancode 0x6b8618 = KEY_VOLUMEDOWN (0x72)
scancode 0x6b8619 = KEY_BLUE (0x191)
scancode 0x6b861a = KEY_STOP (0x80)
scancode 0x6b861b = KEY_PLAYPAUSE (0xa4)
scancode 0x6b861c = KEY_TUNER (0x182)
scancode 0x6b861d = KEY_SLEEP (0x8e)
scancode 0x6b861e = KEY_VIDEO (0x189)
scancode 0x6b861f = KEY_RED (0x18e)
scancode 0x6b8658 = KEY_SLOW (0x199)
scancode 0x6b865c = KEY_CAMERA (0xd4)
Редактируем этот файл так чтобы не осталось многобайтных кодов и кодов, которые не понимает X сервер:
gksudo gedit /etc/rc_keymaps/behold-key
Записываем обратно:
ir-keytable -c -w /etc/rc_keymaps/behold-key -d /dev/input/event`cat /proc/bus/input/devices | grep -3 "i2c-.*/.*/ir0" | grep "H:" | awk '{ sub(/event/, "", $3); print $3}'`
Получаем до перезагрузки пульт с новой кодовой таблицей. После перезагрузки все станет как раньше. Я не знаю как сделать чтобы результат оставался навсегда, поэтому последнюю команду добавил в автозагрузку файл /etc/rc.local.
Привожу для примера мой отредактированный файл behold-key:
scancode 0x6b861c = KEY_PROG1 (0x94)
scancode 0x6b8612 = KEY_CLOSE (0xce)
scancode 0x6b8600 = KEY_0 (0x0b)
scancode 0x6b8601 = KEY_1 (0x02)
scancode 0x6b8602 = KEY_2 (0x03)
scancode 0x6b8603 = KEY_3 (0x04)
scancode 0x6b8604 = KEY_4 (0x05)
scancode 0x6b8605 = KEY_5 (0x06)
scancode 0x6b8606 = KEY_6 (0x07)
scancode 0x6b8607 = KEY_7 (0x08)
scancode 0x6b8608 = KEY_8 (0x09)
scancode 0x6b8609 = KEY_9 (0x0a)
scancode 0x6b860a = KEY_PROG2 (0x95)
scancode 0x6b8614 = KEY_PROG3 (0xca)
scancode 0x6b8617 = KEY_SWITCHVIDEOMODE (0xe3)
scancode 0x6b8610 = KEY_F11 (0x57)
scancode 0x6b860b = KEY_UP (0x67)
scancode 0x6b8615 = KEY_DOWN (0x6c)
scancode 0x6b860c = KEY_RIGHT (0x6a)
scancode 0x6b8618 = KEY_LEFT (0x69)
scancode 0x6b8616 = KEY_ENTER (0x1c)
scancode 0x6b8611 = KEY_MUTE (0x71)
scancode 0x6b860d = KEY_KPEQUAL (0x75)
scancode 0x6b860f = KEY_RECORD (0xa7)
scancode 0x6b861b = KEY_PLAYPAUSE (0xa4)
scancode 0x6b861a = KEY_STOPCD (0xa6)
scancode 0x6b860e = KEY_PAUSECD (0xc9)
scancode 0x6b861f = KEY_PREVIOUSSONG (0xa5)
scancode 0x6b861e = KEY_NEXTSONG (0xa3)
scancode 0x6b861d = KEY_MEDIA (0xe2)
scancode 0x6b8613 = KEY_VOLUMEDOWN (0x72)
scancode 0x6b8619 = KEY_VOLUMEUP (0x73)
scancode 0x6b865c = KEY_CAMERA (0xd4)
scancode 0x6b8658 = KEY_SPORT (0xdc)
А вот некоторые коды, которые нормально воспринимает X сервер (данные получены методом сурового брутфорса). Обращаю ваше внимание, что так воспринимаются коды именно от пульта бехолдер. От других клавиатур код 0x94 может идентифицироваться вовсе не как KEY_PROG1.
KEY_CLOSE (0xce)
KEY_EXIT (0xae)
KEY_PROG1 (0x94)
KEY_PROG2 (0x95)
KEY_PROG3 (0xca)
KEY_PROG4 (0xcb)
KEY_POWER (0x74)
KEY_VOLUMEDOWN (0x72)
KEY_VOLUMEUP (0x73)
KEY_NEXTSONG (0xa3)
KEY_PLAYPAUSE (0xa4)
KEY_PREVIOUSSONG (0xa5)
KEY_STOPCD (0xa6)
KEY_RECORD (0xa7)
KEY_PLAYCD (0xc8)
KEY_PAUSECD (0xc9)
KEY_PLAY (0xcf)
KEY_FASTFORWARD (0xd0)
KEY_BASSBOOST (0xd1)
KEY_CAMERA (0xd4)
KEY_SOUND (0xd5)
KEY_FINANCE (0xdb)
KEY_SPORT (0xdc)
KEY_SHOP (0xdd)
KEY_ALTERASE (0xde)
KEY_MEDIA (0xe2)
KEY_VIDEO_NEXT (0xf1)
KEY_VIDEO_PREV (0xf2)
KEY_LINEFEED (0x65)
KEY_MACRO (0x70)
KEY_MIN_INTERESTING (0x71)
KEY_KPEQUAL (0x75)
KEY_KPPLUSMINUS (0x76)
KEY_PAUSE (0x77)
KEY_KPCOMMA (0x79)
KEY_HANJA (0x7b)
KEY_YEN (0x7c)
KEY_STOP (0x80)
KEY_AGAIN (0x81)
KEY_PROPS (0x82)
KEY_UNDO (0x83)
KEY_FRONT (0x84)
KEY_COPY (0x85)
KEY_OPEN (0x86)
KEY_PASTE (0x87)
KEY_CUT (0x89)
KEY_FIND (0x88)
KEY_MENU (0x8b)
KEY_CALC (0x8c)
KEY_SETUP (0x8d)
KEY_WAKEUP (0x8f)
KEY_FILE (0x90)
KEY_SENDFILE (0x91)
KEY_DELETEFILE (0x92)
KEY_XFER (0x93)
KEY_WWW (0x96)
KEY_MSDOS (0x97)
KEY_DIRECTION (0x99)
KEY_CYCLEWINDOWS (0x9a)
KEY_MAIL (0x9b)
KEY_BOOKMARKS (0x9c)
KEY_COMPUTER (0x9d)
KEY_BACK (0x9e)
KEY_FORWARD (0x9f)
KEY_CLOSECD (0xa0)
KEY_EJECTCD (0xa1)
KEY_EJECTCLOSECD (0xa2)
KEY_REWIND (0xa8)
KEY_PHONE (0xa9)
KEY_ISO (0xaa)
KEY_CONFIG (0xab)
KEY_REFRESH (0xad)
KEY_EDIT (0xb0)
KEY_SCROLLUP (0xb1)
KEY_SCROLLDOWN (0xb2)
KEY_NEW (0xb5)
KEY_REDO (0xb6)
KEY_HOMEPAGE (0xac)111
KEY_DASHBOARD (0xcc)
KEY_HP (0xd3)
KEY_QUESTION (0xd6)
KEY_EMAIL (0xd7)
KEY_CHAT (0xd8)
KEY_CONNECT (0xda)
KEY_SEARCH (0xd9)
KEY_CANCEL (0xdf)
KEY_BRIGHTNESSDOWN (0xe0)
KEY_BRIGHTNESSUP (0xe1)
KEY_SWITCHVIDEOMODE (0xe3)
KEY_KBDILLUMTOGGLE (0xe4)
KEY_KBDILLUMDOWN (0xe5)
KEY_KBDILLUMUP (0xe6)
KEY_SEND (0xe7)
KEY_REPLY (0xe8)
KEY_FORWARDMAIL (0xe9)
KEY_SAVE (0xea)
KEY_DOCUMENTS (0xeb)
KEY_WLAN (0xee)
KEY_UWB (0xef)
KEY_BRIGHTNESS_CYCLE (0xf3)
KEY_BRIGHTNESS_ZERO (0xf4)
KEY_DISPLAY_OFF (0xf5)
KEY_WIMAX (0xf6)
KEY_RFKILL (0xf7)
При проведении работ по настройке кнопок пульта удобно пользоваться следующим методом мониторинга. Запускаем
sudo input-events -t60 5
Где 60 это время ожидания нажатия в секундах, 5 номер клавиатуры в системе. И жмем кнопки на пульте.
Выдача имеет примерно следующий вид.
00:56:27.954276: EV_MSC MSC_SCAN 7046683
00:56:27.954281: EV_KEY KEY_PLAYPAUSE (0xa4) pressed
00:56:27.954281: EV_SYN code=0 value=0
00:56:28.062206: EV_MSC MSC_SCAN 7046683
00:56:28.062207: EV_SYN code=0 value=0
00:56:28.314253: EV_KEY KEY_PLAYPAUSE (0xa4) released
00:56:28.314254: EV_SYN code=0 value=0
Вывод происходит при нажатии и при отпускании кнопки.
7046683 — это физический сканкод кнопки пульта в десятичной системе. Он будет выводиться в любом случае.
(0xa4) — кейкод который драйвер отправил дальше. Если его длина не равна одному байту, то X сервер его не увидит.
KEY_PLAYPAUSE — это имя кнопки. Если имени нет, то на эту кнопку нельзя будет повесить команду. Меняйте кейкод.
Последние штрихи
Мы получили пульт воспринимаемый системой как дополнительная клавиатура с мультимедийными клавишами. Осталось настроить реакцию системы на нажатия. Громкость и переключение каналов в tvtime уже работают, так как кнопки крестовины настроены как стрелки и Enter.
Идем в Настройки клавиатуры и задаем клавиши воспроизведения, которые будут работать в большинстве плееров.
На остальные кнопки настраиваем дополнительные команды.
Я назначил клавише FullScreen пульта значение F11. Эту клавишу понимает большинство программ как переход в полноэкранный режим и обратно, но не tvtime. Поэтому добавляем в файл tvtime.xml
<bind command="toggle_fullscreen">
<keyboard key="F11"/>
</bind>
К сожалению tvtime не понимает мультимедийные клавиши, поэтому задать действие на нажатие KEY_SWITCHVIDEOMODE не получится. Но для этого есть другой способ.
В разделе дополнительных команд настроек клавиатуры задаем команду
tvtime-command TOGGLE_ASPECT
полный список команд tvtime читайте в документации.
Если нужна кнопка для закрытия активного окна, устанавливаем:
sudo apt-get wmctrl
И добавляем допкоманду:
wmctrl -c :ACTIVE:
Вот и все. Буду рад исправлениям и уточнениям. Если тема интересна, то можно будет изучить вопрос по настройке медиакомбайна MythTV в многотюнерной конфигурации и с сетевыми клиентами. Между прочим, у MythTV есть фронтэнды под андроид. Можно смотреть эфирное ТВ с планшета или смарта… Заманчиво?!