LINUX.ORG.RU

Bioskey под linux ?


0

0

Возникла потребность преписать досовскую программу под linux. Но есть проблема с опросом клавиатуры. В досе это делалось через bioskey. Есть ли что-нибудь подобное под линукс, что возвращало бы скан-код нажатой клавиши ?

anonymous

Если нужен именно сканкод, то:
1) Прога должна быть запущена на консоли (не из-под mc или xterm).
2) В начале работы проги нужно перевести клаву в raw-режим: ioctl(STDIN_FILENO, KDSKBMOD, K_RAW).
3) Перед выходом восстановить режим работы клавы.
4) Если прога вылетит по segfault, ты даже перезагрузиться нормально не сможешь (только если через сеть).
Подробности: man console_ioctl.

nobody ★★
()

Спасибо, А поточней нельзя, какая конкретно функция собссно сканкод возвращает.. Что-то не нашел в указанном мане.

anonymous
()

char c;
read(STDIN_FILENO, &c, 1);

В 'c' будет сканкод. Т.е. все остальное - как обычно. Читаешь stdin. Вышеуказанный ioctl используется только для настройки stdin'а. Если тебе захочется от сканкодов перейти к оттранслированным кодам, сделаешь
ioctl(STDIN_FILENO, KDSKBMOD, K_XLATE);
И опять-таки читать их будешь с stdin.

Но вообще-то тебе надо сделать не только ioctl. Забыл я, нужно еще настроить терминал на неканонический режим. Подробности:
info libc

А еще тебе, наверно, будет интересно вот это почитать:
man showkey

nobody ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.