ЗАО «ЗЭО»

Техническая поддержка пользователей => ОС Linux, U-Boot => Тема начата: squir от 08 Февраля, 2011, 16:16:06

Название: Матричная клавиатура
Отправлено: squir от 08 Февраля, 2011, 16:16:06
Добрый день!

Спаяли тут матричную клавиатурку 4 на 4, подключили  к Тион-про2, на форуме была информация что все вроде должно работать. Подскажите, пожалуйста, как с ней взаимодействовать? Может у Вас есть какие-нибудь тестовые примеры?

Заранее спасибо.
Название: Re: Матричная клавиатура
Отправлено: asv от 08 Февраля, 2011, 19:32:26
1. Если всё правильно соединено, то при нажатии на кнопу в консоли (которая на экране, а не через последовательный порт) будет выводиться соотв. кнопке символ. Читать с клавиатуры как с обычной (getc() и т.п., поток ввода нужно перевести из режима буферизации по строкам), см. http://c-faq.com/osdep/cbreak.html

2. Или читать из /dev/input/eventX, если в ядре включён evdev.

/* Read input event from /dev/input/eventX */

#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>

#include <linux/input.h>

int
main (int argc, char *argv[])
{
int fd;
struct input_event ie;

if (argc < 2) {
fprintf (stdout, "Need input event character device, e.g. /dev/input/event1\n");
exit (1);
}

if ((fd = open (argv[1], O_RDONLY)) < 0) {
perror (argv[1]);
exit (2);
}

while (1) {
if (read (fd, &ie, sizeof(struct input_event)) < 0)
exit (3);

#if 1
printf ("val %x, type %x, code %x\n", ie.value, ie.type, ie.code);
#endif
/* Button pressed */
if (ie.code == 0x100 && ie.value)
exit (0);
}

return 1;
}