GTK не может получить ввод с клавиатуры сканера штрих-кода - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть дешевый сканер штрих-кода Amazon, который выглядит как клавиатура USB.Когда различные QR-коды сканируются в приложениях Windows, у него нет проблем с выводом соответствующего текста.

Однако этот текст не интерпретируется ни одним приложением Windows GTK, которое я использовал.Это включает в себя пользовательское приложение Python, а также GIMP, Glade и gedit.Исключением являются символы пробела и новой строки, которые интерпретируются точно.РЕДАКТИРОВАТЬ: проблема у меня заключается в том, что мне нужно это для работы с моим приложением Python GTK.

Дамп ключевых событий в Python, возвращаемые коды ключей находятся в диапазоне более 65 000 кодов.Короткая распечатка для некоторых строк «ABCDEFGH» ...:

keyval PRS ffb0 (65456)
keyval REL ffb0 (65456)
keyval PRS ffb9 (65465)
keyval REL ffb9 (65465)
keyval PRS ffb7 (65463)
keyval REL ffb7 (65463)
keyval REL ffe9 (65513)
keyval PRS ffe9 (65513)
keyval PRS ffb0 (65456)
keyval REL ffb0 (65456)
keyval PRS ffb9 (65465)
keyval REL ffb9 (65465)
keyval PRS ffb8 (65464)
keyval REL ffb8 (65464)
keyval REL ffe9 (65513)
keyval PRS ffe9 (65513)
keyval PRS ffb0 (65456)
keyval REL ffb0 (65456)
keyval PRS ffb9 (65465)
keyval REL ffb9 (65465)
keyval PRS ffb9 (65465)
keyval REL ffb9 (65465)
keyval REL ffe9 (65513)
keyval PRS ffe9 (65513)
keyval PRS ffb1 (65457)
keyval REL ffb1 (65457)
keyval PRS ffb0 (65456)
keyval REL ffb0 (65456)
keyval PRS ffb0 (65456)
keyval REL ffb0 (65456)
keyval REL ffe9 (65513)
keyval PRS ffe9 (65513)

У приложений нет проблем с приемом обычных клавиш на обычной клавиатуре USB, и копирование / вставка также работает отлично.

Самое странное, что эти странные коды клавиш не появляются в других диагностических приложениях, например, я пытался прочитать коды клавиш с помощью Google Chrome и немного JS, и более типичный диапазон кодов клавиш ASCII (около 65-90) былвернулся.И я позаимствовал гораздо более дорогой сканер Motorola Symbol, который также работал правильно.Этот дешевый сканер Eyoyo EY-001, кажется, является единственным устройством, которое ведет себя таким образом.

Я еще не пробовал это в Linux.Это будет мой следующий шаг.

Похоже, этот сканер посылает странный набор расширенных кодов клавиш или кодов клавиш необычным способом, с которым GTK плохо работает.Поскольку кажется, что коды повторяются, не представляется возможным легко удалить эту кодировку, если она вообще кодируется.Кто-нибудь еще сталкивался с этой проблемой?Есть ли какие-либо известные обходные пути для этого?

1 Ответ

0 голосов
/ 05 февраля 2019

Итак, я понял это, и это действительно странная причина.

Устройство «клавиатура» не отправляет реальные символы.Вместо этого он содержит ALT, затем отправляет 097 и, наконец, освобождает ALT для отправки, например, a.Это поведение может быть захвачено Pygame.Похоже, что GTK не может правильно перехватить эту операцию, возвращая вместо этого данные мусора.

Поскольку формат <ALT>-nnn является специфичным для Windows способом ввода кодов клавиш, я подозреваю, что это немного обратно совместимый способ дляQR-код сканер для отправки расширенных наборов символов через интерфейс клавиатуры.Однако это не объясняет, почему некоторые другие сканеры штрих-кодов, эмулирующие клавиатуру, не работают таким образом!

Чтобы обойти это, необходимо нажать клавишу ALT и декодировать следующие три цифры какASCII символ.

...