ncurses中按回车键后光标不会移动到新行
问题描述:
我正在制作一个使用ncurses库文件的文本编辑器程序。但在我的程序中,我不能在按enter
键后将光标移动到新行。我使用switch case
来确定按下哪个键,然后更改变量以确定当前位置。所有工作正常,但在按Enter
后,光标不移动。 我正在使用move(y,x)
函数。ncurses中按回车键后光标不会移动到新行
while((ch = getch())!= KEY_F(1))
{
switch(ch)
{
case KEY_LEFT:
if(posx>0)
posx--;
//traverse left in my link list
break;
case KEY_RIGHT:
if(posx<=cols && posx<cur_maxx)
posx++;
//traverse right in my link list
break;
case 263:
if(posx>0)
posx--;
//delete one node in link list
break;
case KEY_ENTER:
posx=0;
posy=10; //for testing
//add new line at end of link list
break;
default:
c=ch;
getyx(stdscr,y,x);
//add the character to the linked list based on its
//position(insert at prev or append)
break;
}
clear();
traverse(mn);//it is for printing the characters
move(y+posy,x+posx);
refresh();
}
,一切工作正常的左键和右键,但按下回车键 光标在先前的位置后挂断和输出进来了新的生产线。 按回车后如何成功移动光标? 有没有其他的方法来移动光标(使用ncurses)?
答
KEY_ENTER
仅指键盘的输入按钮。
除非那是你要怎样做,试试这个:
case 13: // Replaced KEY_ENTER with 13
posx=0;
posy=10;
break;
,如果你想支持键盘上的回车键,以及你可以保留你已经在那里的情况。
另外,您是否打过电话keypad()
?如果不尝试添加keypad(winscr, TRUE)
。