LINUX.ORG.RU

Фильтрация клавиатурного ввода (драйвер?)

 , ,


0

1

Добрый день!
Преамбула - есть девайс включённый «в разрыв» PS\2 клавиатуры - генерирует определенные последовательности нажатий клавиш (по этому же принципу работают ридеры магнитных карт - передают считанные треки с текстовом виде). Рабочая среда - линукс в минималистичном варианте - без DE, но с иксами.
Интересует вопрос - можно ли каким-то образом «офильтровывать» данные пакеты из потока клавы (чтобы потом отфильтрованные данные обрабатывать каким-либо путём, как вариант - раздавать например через сокеты)?
Был бы благодарен, если бы подсказали в какую сторону тут смотреть и есть ли варианты (низкоуровневое программирование не пугает).


ридеры магнитных карт

И сканеры штрихкодов.

По теме: не спеши писать драйвер. Тебе возможно поможет nc.

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

Гм. А как тут nc помочь может (я про обработку и фильтрацию клавиатурного ввода)? Планируется, что тут же будет работать GUI приложение и необходимо, чтобы данные, передаваемые устройством, не доходили до этого (или любого другого) приложения (в этом и смысл изъятия этих данных из потока клавы). Как их потом уже обрабатывать и организация сервиса - это уже вопрос десятый - там всё просто.

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

необходимо, чтобы данные, передаваемые устройством, не доходили

Телепатические способности меня подвели. А ты учись правильно задавать вопросы.

anonymous ()

Если девайс хорошо притворяется клавиатурой, то можно копать в сторону evdev (умеет в том числе и PS/2) либо ещё выше — actkbd. Делать свой драйвер с нуля необязательно.

x3al ★★★★★ ()

Интересует вопрос - можно ли каким-то образом «офильтровывать» данные пакеты из потока клавы

а как узнать что данные не от клавы а от девайса ?

В ядре можно сделать фильтр через input_register_handler(), см. например реализацию sysrq.

Можно в юзерспейсе эксклюзивно завладеть устройством ввода

http://stackoverflow.com/questions/1698423/how-can-you-take-ownership-of-a-hi...

только как понять кто передает события - девайс или клава :)

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

ОК, инфу сейчас гляну по обоим случаям (хотя хук - это все же немного не то, да и к иксам не стоит особо привязываться). Спасибо за наводку!

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

Как правило данные начинаются и завершаются определенными последовательностями символов (маркеры), а также интервал между «нажатиями» должен быть менее, чем пороговое значение, например - 10мс (т.е. если больше - то это инфа с клавы). Всё довольно просто.

uinput еще смотрю можно заюзать, как вариант.
Спасибо за инфу!

sptim ()

Разобрался в вопросе, посему тему закрываю. Всем ответившим - спасибо за конструктивный подход! :)

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

Вот тут, в ответе, перечислены способы.И даны в общем-то все необходимые ссылки (как отправные точки). Кстати, у проектов, приведенных там же, вполне читабельные исходники. Пока что просто опробовал на скорую руку простое чтение-запись, а также граб, uniput еще не смотрел.

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

Вдогонку - вот тут ответ с простым примером реализации (в конце только надо поправить очепятку со снятием граба).

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