void input(WINDOW *wnd) { int row=1,col=1,c; curs_set(1); while(1) { move (row,col); c = getch (); switch (c) { case KEY_LEFT: if (col > 1) col--; else flash (); break; case KEY_DOWN: if (row < LINES - 5) row++; else flash (); break; case KEY_UP: if (row > 1) row--; else flash (); break; case KEY_RIGHT: if (col < COLS - 2) col++; else flash (); break; case KEY_BACKSPACE: if(col>1) { mvwprintw(wnd,row,--col,"%c",' '); wrefresh (wnd); } else flash(); break; box(wnd, 0 , 0); case KEY_DL: deleteln (); box(wnd, 0 , 0); break; default: if(c==KEY_F(3)) goto DONE; if(col < COLS - 1) mvwinsch(wnd, row, ++col-1, c); else{ col=0; row++; mvwinsch(wnd, row, ++col, c); } box(wnd,0,0); wrefresh (wnd); break; } } DONE: refresh(); };
int winsch(WINDOW *win, chtype ch) { if (win == NULL) { return ERR; } return mvwinsch(win, win->cury, win->curx, ch); }
static int MvWInsCh(WINDOW *win, int y, int x, chtype ch) { int code; cchar_t tmp_cchar; if (ConvertCh(ch, &tmp_cchar)) { code = mvwins_wch(win, y, x, &tmp_cchar); } else { code = mvwinsch(win, y, x, ch); } return code; }
int mvinsch(int y, int x, chtype ch) { return mvwinsch(stdscr, y, x, ch); }