0

我正在使用 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();

}

左键和右键一切正常,但按回车键后光标挂在前一个位置,输出进入新行。按回车后如何成功移动光标?有没有其他方法可以移动光标(使用 ncurses)?

4

1 回答 1

0

KEY_ENTER仅指键盘的回车键。

除非那是你想要做的,试试这个:

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

        break;

如果您还想支持键盘的输入按钮,您可以将已有的机箱留在其中。

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

于 2013-12-04T07:21:16.027 回答