getch возвращает -1? - PullRequest
       8

getch возвращает -1?

3 голосов
/ 22 ноября 2010

Они спросили, как перехватить такие клавиши, как F11 или insand, и getchr ничего не возвращает для этих клавиш, и я ничего не могу найти, работающий, который принимает необработанный ввод из событий ввода.

Сейчас я пытаюсь захватить эти ключи в программе на языке C ++ ncurses / curses.

Моя программа для тестирования проста, это в основном:

#include <stdlib.h>
#include <stdio.h>
#include <curses.h>
int main() {
    int car;
    while(c != '\b') {
        c = getch();
        printf("%i", c);
    }
    return 0;
}

Я использую его, конечно, так же, как и другую функцию getch (), но она возвращает -1 бесконечное число раз. Я использую последнее ядро ​​в Arch linux, в стандартном терминале (также проверено в xterm)

Есть ли определенный переключатель, который мне нужно включить, чтобы использовать этот getch () в библиотеках?

1 Ответ

7 голосов
/ 22 ноября 2010

Вам нужно вызвать initscr(); для инициализации проклятий перед вызовом getch().

Кроме того, вы, вероятно, хотите использовать режим без линейной буферизации, поэтому вам также следует вызвать cbreak(); noecho(); (режим эха не должен использоваться в режиме cbreak).

...