LINUX.ORG.RU
ФорумAdmin

Сделать /dev/input/keyboard

 , , , ,


0

1

Посоны, тут такое дело - подключаю сканер штрих-кодов по юсб, который мимикриует под юсб-клавиатуру. Программка на Qt4.8. И все было здорово - ловлю ивенты от сканера, собираю строку и обрабатываю. Но, как всегда появилось это самое «но».

Я, как четкий патсан, сделал симлинк с /dev/input/event3 на /dev/barcode. Работает, здорово. Но если мою программу запустить без подключенного сканера и подключить его потом, то работать не будет, события от сканера-клавы не обрабатываются, а все потому, что симлинк на /dev/barcode существует только тогда, когда сканер подключен. Т.е. hot plug нам обламывается(

И при это ведь есть /dev/input/mice, который есть всегда, и куда собираются события от всех мышей.

Вот и я хочу такой же файл, агрегирующий события от клавиатур.

Пробовал ставить источником событий /dev/tty1. Причем отключил консоль в inittab. Но в ответ на cat /dev/tty1 | hexdump - тишина. Понимаю, что тут очень вероятно решение, но гугаль пока не помогает(

Всем, кто осилил, спасибо.

Сделай правило удев, который найдя id твоего устройства симлинкает правильный /input/eventX.

anonymous
()

Т.е. hot plug нам обламывается(

Нет.

Вот и я хочу такой же файл, агрегирующий события от клавиатур.

И ловить события от всех клавиатур?

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

Я УЖЕ сделал правило и симлинк УЖЕ есть и работает, но он появляется только когда подключается клавиатура. Если я указываю этот симлинк или /dev/input/eventX в качестве источника событий, то все будет работать только, если подключить устройство ДО запуска программы.

titan83
() автор топика
Ответ на: комментарий от t184256

Нет.

Конкретизируйте, пожалуйста.

И ловить события от всех клавиатур?

Меня это абсолютно устроит.

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

Тогда чини программу, чтобы переоткрывала устройство в случае неудачи.

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

но он появляется только когда подключается клавиатура

не верю

то все будет работать только, если подключить устройство ДО запуска программы

не до запуска, а до попытки открытия. переоткрыть религия не позволяет? про какие-нибудь udev, inotify или отдельного демона под это дело и заговаривать-то страшно.

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

да, только связь односторонняя, разрыв поймать будет проблематично, соотв. нужно еще ловить события udev по поводу plug/unplug (он кажется умеет в dbus посылать)

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

не до запуска, а до попытки открытия. переоткрыть религия не позволяет? про какие-нибудь udev, inotify или отдельного демона под это дело и заговаривать-то страшно.

Плюсую. ТС - тебе дело говорят. Я держу это отдельным демоном (ну ладно у меня реализация такая, так удобнее было сделать) и переоткрываю устройство после полного прочтения кода (но у меня скорость не большая, гораздо меньше чем одна в минуту, возможно вам это не подойдет).

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