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)