LINUX.ORG.RU

Программинг под Х


0

0

Приветствую!

Имею сканнер штрих-кода, который выводит в устройство /dev/scanner
отсканированный номер (то есть, если скомандовать cat /dev/scanner,
то при сканировании печатается номер).

Мне надо написать программу под Х, которая отлавливает сообщения
сканнера и вставляет отсканированный номер в любое поле ввода.

В каком направлении копать?
Я так понимаю, мне надо получить графический контекст и в него уже
печатать. Какие это функции X-lib-а?

Может, кто уже этим занимался, делал что-то подобное?

Спасибо.

anonymous

В чистом иксе ты замаешься это писать. Используй тулкит, GTK или Qt

Uncle_Theodore ★★
()

На tcl/tk пишется в пять строчек

anonymous
()

наверное, человеку интересно, как буфер обмена устроен
я вот не знаю

anonymous
()

cat /dev/scanner | xsel -i

И вставляй куда хошь.

anonymous
()

Ну что вы, человека интересует "программинг". Не знаю как вы, но я все для себя уже понял.

anonymous
()

Странно, когда я занимался этой фигней, сканеры подключались к клавиатурному PS/2. Когда сканер считывал штрих-код, например, 0123456, для системы он представлялся в качестве последовательности нажатий кнопок "0", "1", "2", "3", "4", "5", "6" клавиатуры. Соответственно, если курсор стоит в поле ввода там будет напечатано 0123456. Используй тот же принцип. Получи штрих код со сканера и симулируй нажатие соответствующий кнопок на клавиатуре.

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

Конечно это не особо правильный способ решения, но зато офигенно универсальный. Ты не привязан ни к какому тулкиту :)

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

Можно в таком случае на шелле с применением чего-то типа xvkbd =)

OxiD ★★★★
()

http://lg.cybermirror.org/issue78/tougher.html#4.5 http://xcb.freedesktop.org/tutorial/fonts/ http://xcb.freedesktop.org/tutorial/events/ http://my.safaribooksonline.com/0789723727?tocview=true

xev'ом можно посмотреть события, через xlsclients / xwininfo ( c ключом --tree ) можно получить список окон и виджетов, идентификатор окна, через xprop можно посмотреть проперти этого виджета (строки ввода) . По идее, надо искать аналог сообщения WM_SETTEXT для виджетов, но сам Xlib довольно низкоуровневый, искать можно долго. Можно например сделать xprop -spy и понабирать текст вручную, посмотреть где что изменяется.

Или через буфер обмена работать, пример с xsel -i / xcutsel уже привели. Средней кнопкой вставлять в любое поле ввода. Или наоборот, копировать в один конкретный named selection, вставлять по хоткею в одно конкретное поле ввода (отловить id окна-виджета поля ввода, событие, сымитировать событие -- вставить произвольную текстовую строку из конкретного поименованого буфера, обрабатывать событие на /dev/scaner копированием текста в этот поименованый буфер)

http://www.xfree86.org/current/record.pdf http://search.cpan.org/~mkoderer/X11-GUITest-record-0.13/lib/X11/GUITest/reco... http://en.wikipedia.org/wiki/X_Window_System_core_protocol#Grabs

anonymous
()

> и вставляет отсканированный номер в любое поле ввода.

в абсолютно любое? Или в конкретное поле конкретной программы? На каком тулките написана программа?

anonymous
()

напиши драйвер ввода для иксов

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

Вот это я посмотрю, спасибо.

Остальным: да, я делал так, что отсканированное передаётся в буфер
обмена. Людям не удобно так работать. Нужно вставлять номер по факту
сканирования.

Тем, кто говорит про тулкиты:
Какое поле ввода - совершенно не важно. Программа, куда вставляем отсканированный номер, может быть написана на чём угодно. Именно
поэтому выбор пал на Xlib.

Гуглевский инструмент тоже посмотрю.
Спасибо, бум искать.

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