Как определить, нажаты ли клавиши со стрелками с помощью проклятий в C? - PullRequest
17 голосов
/ 25 июля 2009

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

Ответы [ 3 ]

14 голосов
/ 25 июля 2009

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

14 голосов
/ 19 октября 2009

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

keypad(stdscr, TRUE);
7 голосов
/ 25 июля 2009

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

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