Преобразование скан-кода в символ. (Как по скан-коду получить соответствующий ему символ ?)

Модератор: Модераторы разделов

Sfunx
Сообщения: 47

Преобразование скан-кода в символ.

Сообщение Sfunx »

Проблема:

Имеется клавиатура, подсоединённая к некоему устройству. Это устройство соединено с Линукс-машиной по RS232 и шлёт скан-коды клавиатуры.

То есть я, открыв /dev/ttyS1, могу прочитать скан-код нажатой клавиши.

Вопрос:

Как преобразовать этот скан-код в соответствующий ему символ текущей раскладки ?

Я уже полнета обсмотрел - не нашёл то что надо...
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

Re: Преобразование скан-кода в символ.

Сообщение TwisT »

ну скан-коды у меня есть
вопрос в другом, как узнать у устройства какая раскладка щас включена?
P.S. Владимир Кулаков Программирование на аппаратном уровне
Linux user #432536.
Спасибо сказали:
Sfunx
Сообщения: 47

Re: Преобразование скан-кода в символ.

Сообщение Sfunx »

TwisT писал(а):
21.05.2007 18:05
ну скан-коды у меня есть
вопрос в другом, как узнать у устройства какая раскладка щас включена?
P.S. Владимир Кулаков Программирование на аппаратном уровне



Проблема не в построении таблицы соответствия "скан-код -> код символа".

Проблема в том - как сделать, чтобы /dev/ttyS1 работало как /dev/tty0, например. То есть можно ли запрограммировать последовательный порт так, чтобы он воспринимал входную информацию как скан-коды клавиатуры и преобразовывал их в коды символов так же как это делает стандартный драйвер терминала ?

В общем я хочу пользоваться стандартными средствами, а не писать своё. Только и всего.
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10

Re: Преобразование скан-кода в символ.

Сообщение BlackStar »

Может попробовать повесить виртуальную консоль на этот порт?
/etc/inittab:

Код: Выделить всё

4:2345:respawn:/sbin/mgetty ttyS1

man mgetty
LightLang Team
Спасибо сказали:
Sfunx
Сообщения: 47

Re: Преобразование скан-кода в символ.

Сообщение Sfunx »

BlackStar писал(а):
22.05.2007 09:30
Может попробовать повесить виртуальную консоль на этот порт?
/etc/inittab:

Код: Выделить всё

4:2345:respawn:/sbin/mgetty ttyS1

man mgetty


не получаеся... mgetty хочет символы, скан-коды никак не обрабатывает.

меня бы устроила программка, которая преобразует по таблице ядра скан-коды в символы... создал бы псевдотерминал - и не знал бы проблем...
Спасибо сказали:
Sfunx
Сообщения: 47

Re: Преобразование скан-кода в символ.

Сообщение Sfunx »

Неужели никто не писал драйвера клавиатуры ?
Эх...
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Преобразование скан-кода в символ.

Сообщение Uncle_Theodore »

Драйвера не писал. :)
Но могу посоветовать почитать вот это
http://www.linuxjournal.com/article/1080
http://gunnarwrobel.de/wiki/Linux-and-the-keyboard.html
Спасибо сказали:
Sfunx
Сообщения: 47

Re: Преобразование скан-кода в символ.

Сообщение Sfunx »

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.

ВСЁ!!!!

Теперь ядро спокойно воспринимает мою клавиатуру, повешанную на ком-порт, как обычно. Только светодиоды не работают - обратной связи нету... ну да бог с ними... доработаем потом...
Спасибо сказали: