Начнем с того, как выглядит мой код, а затем я объясню свою проблему:
int main {
char ch; //Stores key presses
initscr();
raw();
nonl();
keypad(stdscr, TRUE);
noecho();
//Some code
ch = getch();
switch (ch) {
case KEY_UP:{
//Code that works
break;
}
case KEY_ENTER:{
//Some code- that doesn't work problem being the above
break;
}
//Other case statements
}
Теперь проблема:
Проблема, с которой я сталкиваюсь, если вы еще не решили ее, заключается в том, что когда я нажимаю клавишу ввода / возврата на моей клавиатуре, абсолютно ничего не происходит.
Я пытался изменить KEY_ENTER
в '\n'
— не работал — даже изменил char ch
который, когда через несколько итераций, включая int
а также wchar_t
,
Все безрезультатно, и прежде чем вы скажете, ищите ответы и отправляйте меня собирать чемоданы, чтобы отправиться в опасное приключение через каждый уголок сетей, я уже попробовал это, если бы не было, я бы не рискнул здесь, в поисках помощи.
Так что теперь мой поиск привел меня сюда, и я прошу вас — милых людей из паутины — помочь мне в поиске ответа, который я искал
И тому, кто когда-либо будет достаточно храбрым, чтобы ответить на него, я выражаю вам свою благодарность и благодарность
Пытаться case '\r':
, (Для хорошей меры, вы могли бы сделать case '\r': case '\n': case KEY_ENTER:
, как это обычно делается в testcurs.c, чтобы охватить все возможности.) Призыв к nonl()
Вот почему вы получаете ‘\ r’ вместо ‘\ n’.
Что касается KEY_ENTER
Моим единственным оправданием является то, что он отмечен как «ненадежный» в комментариях PDCurses. Я мог бы притвориться, что он представляет собой клавишу «Enter» на клавиатуре, а не клавишу, обычно помеченную как «Return» в основной части клавиатуры … за исключением того, что PDCurses также имеет PADENTER
специально для этой цели. По правде говоря, как много вещей в PDCurses, причина KEY_ENTER
есть и определено так, как есть, это немного исторический беспорядок.