Я пытаюсь переместить курсор с помощью клавиш со стрелками, но с ними есть задержка на одну клавишу. Я читал, что он сначала отправляет управляющую последовательность, так что может быть поэтому, есть ли способ это исправить?
int main() {
int ch,x=0,y=0;
initscr();
noecho();
cbreak();
keypad(stdscr, TRUE);
refresh();
while(true) { /*main loop*/
ch=getch();
switch (ch) {
case KEY_UP:
y--;
move(y,x);
break;
case KEY_DOWN:
move(y,x);
y++;
break;
case KEY_RIGHT:
move(y,x);
x++;
break;
case KEY_LEFT:
move(y,x);
x--;
break;
case 27:
goto clean;
default:
addch(ch);
break;
}
}
clean:
endwin();
return 0;
}
Спасибо!
Как отмечено в комментарии, проблема с программой-примером заключается в том, что в некоторых случаях она корректирует координаты после перемещения курсора, что несовместимо со случаем для KEY_UP
, который корректирует координаты перед перемещением курсора.
Чтобы быть последовательным, поместите вызовы move(y,x)
после операторов y++
, x++
и x--
.