2012-02-09 2 views
0

эй, я протестировал getch и getchar, но его воля для ввода, я думаю, что должен быть функционал, который читает буфер клавиатуры. часть моего кодаNcurses Keyboard input

while (1) { 
    if (key!='r') 
    { 
     if (key!='q') 
     { 
      mvprintw(LINES-2, 1, "Display will refresh in %2d seconds ", t); 
      refresh(); 
      sleep(1); 
      t--; 
      break; 
     } 
     else 
     { 
     exit (0); 
     } 
    } 
    else 
    { 
    return; 
    } 

}

+0

Вы пробовали 'read (1, buffer, buffer_size)'? – Eregrith

ответ

4

Если вы не хотите getch() ждать, вы должны настроить его, чтобы быть неблокируемой с nodelay().

После выполнения:

if (nodelay (pWin, 1) == ERR) { 
    // some error occurred. 
} 

затем getch()ERR вернется, если входной сигнал не доступен.

Справочная информация по параметрам ввода: here, а описание getch упоминается как в отдельной справочной информации, так и в ссылке here.


Опция NODELAY вызывает Геч быть неблокирующая вызов. Если вход не готов, getch возвращает ERR. Если отключено (bf - FALSE), getch ждет, пока не будет нажата клавиша.


Ни в коем задержки режиме, если входной сигнал не ждет, значение ERR возвращается.

+0

эй я решил это с nodelay (stdscr, TRUE); и клавиатура (stdscr, TRUE); NoEcho(); – Mar