Как определить, нажаты ли клавиши со стрелками с помощью проклятий в C?

При попытке получить ввод с клавиш со стрелками через curses (ncurses) он не будет восприниматься как KEY_UP и т.д. Я использовал функцию клавиатуры с истинным аргументом, но getch по-прежнему возвращал экранированную последовательность. Как мне переключаться между значениями, возвращаемыми getch() и специально выбирать клавиши со стрелками?

Ответы

Ответ 1

Я записывал вызовы getch() как char, когда они должны были быть int. Прекрасно работает после переключения.

Ответ 2

Я нашел ту же проблему в Mac OS X. Но она была решена путем добавления следующего:

keypad(stdscr, TRUE);

Ответ 3

Стандартные (VT100-подобные) терминалы посылают последовательность символов при нажатии клавиш со стрелками. Вам просто нужно следить за тем, нажимаются ли они последовательно. Вот char для просмотра:

Down Arrow  0x1B 0x5B 0x42
Left Arrow  0x1B 0x5B 0x44
Right Arrow 0x1B 0x5B 0x43
Up Arrow    0x1B 0x5B 0x41