2013-04-29 54 views
0

我正在製作一個使用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)?

回答

0

KEY_ENTER僅指鍵盤的輸入按鈕。

除非那是你要怎樣做,試試這個:

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

     break; 

,如果你想支持鍵盤上的回車鍵,以及你可以保留你已經在那裏的情況。

另外,您是否打過電話keypad()?如果不嘗試添加keypad(winscr, TRUE)