есть: несколько кнопок. надо: чтобы нажатие на них воспринималось как нажатие заданных кнопок на клавиатуре.
непонятно как это сделать, ибо: драйвер клавиатуры - это обычно /dev/tty то есть tty устройство. смотрим /linux/drivers/char/keyboard.c это tty устройство но без общения с физикой. то есть некий промежуточный слой? какие функции он выполняет?
смотрим /linux/drivers/input/serio/i8042.c это общение с физикой. но это не tty драйвер. как тогда он работает? в функции обработки прерывания видим serio_interrupt, видимо, это и есть передача данных следующему уровню обработки?
далее, если посмотреть исходник /libminigui-1.6.10/src/gui/keyboard.c , то там находится код, очень похожий на код в /linux/drivers/char/keyboard.c при этом клавиатура используется в режиме MEDIUM_RAW. какой смысл его было повторять авторам этой библиотеки?
каким же образом работает подсистема ввода? как написать драйвер под свои кнопки, написав минимальный код и задействовав по макимуму уже написанный код в ядре?
|