在ncurses中按Enter键后,光标不会切换到新行

时间:2013-04-29 09:11:52

标签: c ncurses

我正在使用ncurses库文件制作文本编辑器程序。但是在我的程序中,按下enter键后我无法将光标移动到新行。我正在使用switch case来确定按下了哪个键,然后更改变量以确定当前位置。一切正常但按下Enter后光标不动。 我正在使用move(y,x)函数。

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();

}

按下回车键后,左键和右键都能正常工作 光标挂起在前一个位置,输出以新行显示。 按Enter键后如何成功移动光标? 有没有其他方法来移动光标(使用ncurses)?

1 个答案:

答案 0 :(得分:0)

KEY_ENTER仅指键盘的输入按钮。

除非你试图这样做,试试这个:

case 13:         // Replaced KEY_ENTER with 13
        posx=0;
        posy=10;

        break;

如果你想支持键盘的输入按钮,你可以把你已经拥有的情况留在那里。

另外,你打电话给keypad()了吗?如果没有,请尝试添加keypad(winscr, TRUE)