Проблема:
Имеется клавиатура, подсоединённая к некоему устройству. Это устройство соединено с Линукс-машиной по RS232 и шлёт скан-коды клавиатуры.
То есть я, открыв /dev/ttyS1, могу прочитать скан-код нажатой клавиши.
Вопрос:
Как преобразовать этот скан-код в соответствующий ему символ текущей раскладки ?
Я уже полнета обсмотрел - не нашёл то что надо...
Преобразование скан-кода в символ. (Как по скан-коду получить соответствующий ему символ ?)
Модератор: Модераторы разделов
-
TwisT
- Сообщения: 265
- ОС: Debian
Re: Преобразование скан-кода в символ.
ну скан-коды у меня есть
вопрос в другом, как узнать у устройства какая раскладка щас включена?
P.S. Владимир Кулаков Программирование на аппаратном уровне
вопрос в другом, как узнать у устройства какая раскладка щас включена?
P.S. Владимир Кулаков Программирование на аппаратном уровне
Linux user #432536.
-
Sfunx
- Сообщения: 47
Re: Преобразование скан-кода в символ.
Проблема не в построении таблицы соответствия "скан-код -> код символа".
Проблема в том - как сделать, чтобы /dev/ttyS1 работало как /dev/tty0, например. То есть можно ли запрограммировать последовательный порт так, чтобы он воспринимал входную информацию как скан-коды клавиатуры и преобразовывал их в коды символов так же как это делает стандартный драйвер терминала ?
В общем я хочу пользоваться стандартными средствами, а не писать своё. Только и всего.
-
BlackStar
- Сообщения: 1338
- Статус: We are all Kosh
- ОС: Fedora 10
Re: Преобразование скан-кода в символ.
Может попробовать повесить виртуальную консоль на этот порт?
/etc/inittab:
man mgetty
/etc/inittab:
Код: Выделить всё
4:2345:respawn:/sbin/mgetty ttyS1man mgetty
LightLang Team
-
Sfunx
- Сообщения: 47
Re: Преобразование скан-кода в символ.
BlackStar писал(а): ↑22.05.2007 09:30Может попробовать повесить виртуальную консоль на этот порт?
/etc/inittab:
Код: Выделить всё
4:2345:respawn:/sbin/mgetty ttyS1
man mgetty
не получаеся... mgetty хочет символы, скан-коды никак не обрабатывает.
меня бы устроила программка, которая преобразует по таблице ядра скан-коды в символы... создал бы псевдотерминал - и не знал бы проблем...
-
Sfunx
- Сообщения: 47
Re: Преобразование скан-кода в символ.
Неужели никто не писал драйвера клавиатуры ?
Эх...
Эх...
-
Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Преобразование скан-кода в символ.
Драйвера не писал. 
Но могу посоветовать почитать вот это
http://www.linuxjournal.com/article/1080
http://gunnarwrobel.de/wiki/Linux-and-the-keyboard.html
Но могу посоветовать почитать вот это
http://www.linuxjournal.com/article/1080
http://gunnarwrobel.de/wiki/Linux-and-the-keyboard.html
-
Sfunx
- Сообщения: 47
Re: Преобразование скан-кода в символ.
Uncle_Theodore писал(а): ↑24.05.2007 08:47Драйвера не писал.
Но могу посоветовать почитать вот это
http://www.linuxjournal.com/article/1080
http://gunnarwrobel.de/wiki/Linux-and-the-keyboard.html
Огромадное спасибо!
Нашёл что надо.
Оказывается - происходит двойное преобразование скан-кода. Сначала скан-код1 от клавиатуры поступает в контроллер, которые его преобразует в другой скан-код2. И уже этот скан-код2 поступает в драйвер клавиатуры atkbd....
Я сделал так:
1. взял драйвер-эулятор клавиатуры kbde c http://sourceforge.net/projects/kbde/
Этот драйвер создаёт устройство /dev/kbde (11,0), которое доступно лишь для записи. В этот устройство пишем скан-коды2, которые ядро воспринимает как ввод с AT-клавиатуры.
2. встроил его в ядро linux-2.6.16/drivers/input/serio/kbde.c (ну естественно добавил его в файлы Makefile и Kconfig) в том же каталоге...
3. сконфигурировал ядро, включив поддержку AT-keyboard.
4. Написал малюсенькую программу-демон, которая принимает скан-код1 с ком-порта, преобразует в скан-код2 и записывает в /dev/kbde.
ВСЁ!!!!
Теперь ядро спокойно воспринимает мою клавиатуру, повешанную на ком-порт, как обычно. Только светодиоды не работают - обратной связи нету... ну да бог с ними... доработаем потом...