ESC-клавиша в ncurses

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

n1tr0gen
Сообщения: 149

ESC-клавиша в ncurses

Сообщение n1tr0gen »

Как можно без односекундной задержки обработать клавишу ESC? В документации написано что для этого надо использовать функцию notimeout. Но если еще вызвать keypad - notimeout перестает работать.
Вот кусок программы:

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

        int ch;

        stdscr = initscr();
        cbreak();
        noecho();

        keypad(stdscr, TRUE);
        notimeout(stdscr, TRUE);
        ch = getch();
Спасибо сказали:
MedVed
Сообщения: 112

Re: ESC-клавиша в ncurses

Сообщение MedVed »

Наверное, уже решил проблемму-то? Если нет - то вот код для размышления (вроде обрабатывает без задержек). Взят он, кстати, из html-документации по ncurses и немного модифицирован.
МСВС 3.0/Linux Mandrake 8.0
Спасибо сказали:
n1tr0gen
Сообщения: 149

Re: ESC-клавиша в ncurses

Сообщение n1tr0gen »

Проблему пока не решил (т. е. решить могу, но нет гарантии что будет работать на другом терминале). За пример спасибо, обязательно изучу.

n1tr0gen добавил в 18.08.2005 22:23

К сожалению ваш код не подходит. Обрабатывается без задержки, потому что выключена интерпретация esc-последовательностей. Если я ее включу (вызову keypad() - как я уже писал, мне необходимо обрабатывать функциональные клавиши) - опять появится задержка. Фактически мне по-любому надо обрабатывать esc-последовательности самому. Проблема вся в том, что на разных терминалах они разные. Более того, у них даже длина варьируется от 2 до примерно 7 байт. Может кто знает ссылку где про esc-последовательности, генерируемые при вводе с клавиатуры можно почитать? Я перерыл уже очень много на эту тему, но почти ничего не нашел.
Спасибо сказали: