Задача состоит в следующем:
При загрузке системы должен запуститься скрипт, который ждет ввода серийного номера с USB клавиатуры (точнее со сканера штрих-кода, работающего в режиме эмуляции клавиатуры) подключенной железяке после чего кладет его куда надо.
(Конкретно речь идет об IMX6-oem)
Пока это дело надо запустить с обычной usb-клавиатурой.
На данный момент при подключении клавиатуры вываливается это:
updater:/>> usb 1-1: new low-speed USB device number 4 using ci_hdrc
input: BTC USB Keyboard as /devices/soc0/soc.1/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1:1.0/input/input6
hid-generic 0003:046E:6000.0005: input: USB HID v1.10 Keyboard [BTC USB Keyboard] on usb-ci_hdrc.1-1/input0 hid-generic 0003:046E:6000.0006: usb_submit_urb(ctrl) failed: -1
hid-generic 0003:046E:6000.0006: timeout initializing reports
input: BTC USB Keyboard as /devices/soc0/soc.1/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1:1.1/input/input7
hid-generic 0003:046E:6000.0006: input: USB HID v1.10 Device [BTC USB Keyboard] on usb-ci_hdrc.1-1/input1
В каталоге /sys/class/input/
появляется новый каталог input7
updater:/>> ls /sys/class/input/
event0 event1 event3 input0 input3 input7 mice mouse0
Содержимое ls /dev/input/ до и после не меняется.
updater:/>> ls /dev/input/
event0 event1 event2 event3 mice mouse0 mouse1 mouse2 mouse3
..............................................
Event: time 1411993325.986623, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70014
Event: time 1411993325.986623, type 1 (EV_KEY), code 16 (KEY_Q), value 1
Event: time 1411993325.986623, -------------- EV_SYN ------------
.............................................
понятия не имею..
ищите утилиту или пишите сами приблуду на Си, которая будет транслировать сырые коды в удобный формат и это уже можно скармливать скрипту..
In this code example we will be able to read a keyboard device input directly from/to /dev/input/eventX in Ubuntu with C++. You might want to change the default event device if that is not your keyboard. (Support for mouse etc. is not implemented)
You can find right device by:
# cat /proc/bus/input/devices
Find your keyboard and find a line like this "H: Handlers=kbd event5 ". Event5 tells you that right value for EVENT_DEVICE variable is "/dev/input/event5".
Run in terminal with:
# sudo ./<compiled_file> "/dev/input/event5"
Code:
#include <linux/input.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
Я конечно в этом деле туплю, но мне кажется есть более красивое решение, чем писать программу-прослойку....
Иначе получается считывать ввод с подключенной usb клавиатуры осложнен, бред какой-то.....
Все-таки Linux - это зрелая система, оттого и не верится....
ну раз не нравится Си, напишите скриптовый парсер, который будет обрабатывать поток от evtest..
ядро ядром, а линукс линуксом - ядро предоставляет сервисы, а утилиты и демоны ими кормятся.. и если в ядре нет нужного выхлопа, то, имхо, никто не запрещает дописать/написать свой.. опять же, если его нет, то возможно такое никому не нужно или вредно/неправильно с т.з. идеологии ядра..
Юра, дело не в том нравится мне Си или нет.
Я задачу решил именно на Си.
Просто сейчас опять столкнулся со своим кодом и опять подумал, что что-то тут не то....
Тут уже просто интересно стало, т.е. из этого следует, что я не могу юзать клавиатуру в консоли что ли, так?
Наверняка, можно...