LINUX.ORG.RU

ncurses + notimeout


0

0

Здравствуйте!
Я хочу чтобы моя программа на ncurses обрабатывала кнопку ESC без односекундной задержки. В манах и всех документах, которые я только смог найти, написано что это делается через функцию notimeout. Она действительно работает, но только в случае, если я не вызову дополнительно функцию keypad. Без keypad я не могу - мне необходимо обрабатывать функциональные клавиши и стрелки. После вызова keypad - хоть об стену расшибись - при нажатии ESC запускается односекундный таймер. Будте добры, поясните мне, что я делаю не так, я уже совсем замучался.

anonymous

припоминаю я что и без кейпада читалось легко и свитчилось на придмет KEY_..., помоему так.
А зачем ЕСК? неужели не придумать чтонить более юниксовое? Ж)

anonymous
()
Ответ на: комментарий от anonymous

Я считаю что ESC - очень удобная и интуитивно понятная кнопка для таких действий как например "Выход", "Отмена". "Юниксовый" подход призван унифицировать работу всего и везде.. IMHO в данном случае он проигрывает в юзабельности.

anonymous
()

У меня создается впечатление, что на задержку при обработке ESC вообще не влияет notimeout. Аргумент можно устанавливать в TRUE, можно в FALSE - результат одинаковый - односекундная задержка. Если же вообще не вызывать ни keypad, ни notimeout - ESC обрабатывается без задержки. Вот простенький пример программы:


#include <ncurses.h>

int main()
{
int ch;

stdscr = initscr();
keypad(stdscr, TRUE);
notimeout(stdscr, TRUE);
ch = wgetch(stdscr);
endwin();

return 0;
}


> припоминаю я что и без кейпада читалось легко и свитчилось на придмет KEY_...
Можно поподробнее, в моем случае, если убрать keypad, wgetch возвращает число 27 при нажатии любой функциональной клавиши.

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