The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

пример функции для ожидания нажатия одной клавиши (keyboard)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: keyboard,  (найти похожие документы)
Date: Fri, 20 Apr 2001 16:03:08 +0400 From: Oleg Galizin <[email protected]> Newsgroups: fido7.ru.unix.prog Subject: пример функции для ожидания нажатия одной клавиши > Кстати, можно вопрос? Я вот тут наваял подобие getkey из редхатовых > вот некий пример по ожиданию нажатия одной клавиши тк в UNIX нажатие одной клавиши может приввести к целой последовательности символов то и возвращается ее длина int WaitOneKeyDown(char* buffer, int length) { struct termios ti, nti; char c; int flags_fcntl; int ret_value; /* set max length of sequence */ length = length > MAX_INPUT?MAX_INPUT:length; /* Set terminal mode for read one key */ if ( tcgetattr(0, &ti) < 0 ) return -1; memcpy(&nti, &ti, sizeof(struct termios)); nti.c_lflag &= ~ICANON; nti.c_cc[VMIN] = length; nti.c_cc[VTIME] = 2; if ( tcsetattr(0, TCSANOW, &nti) < 0) return -1; /* flush previon input */ flags_fcntl = fcntl(0, F_GETFL); if ( flags_fcntl < 0 ) return -1; if ( fcntl(0, F_SETFL, flags_fcntl | O_NONBLOCK) < 0 ) return -1; while ( read(0, &c, 1) > 0 ); errno = 0; if ( fcntl(0, F_SETFL, flags_fcntl & ~O_NONBLOCK) < 0 ) return -1; /* wait one key press */ ret_value = read(0, buffer, length); /* restore setting */ if ( tcsetattr(0, TCSANOW, &ti) < 0) return -1; return ret_value; } еще нужны соотв #include Считаем что между нажатиями на клавиши не менее 0.2 сек

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру