📄 getstr.c
字号:
#ifdef lintstatic char *sccsid = "@(#)getstr.c 4.1 (ULTRIX) 7/2/90";#endif lint# include "curses.ext"/* * This routine gets a string starting at (_cury,_curx) * * 7/2/81 (Berkeley) @(#)getstr.c 1.4 */wgetstr(win,str)WINDOW *win; char *str;{ char myerase, mykill; char rownum[256], colnum[256]; int doecho = SP->fl_echoit; int savecb = SP->fl_rawmode; register int cpos = 0; register int ch; register char *cp = str;#ifdef DEBUG if (outf) fprintf(outf, "doecho %d, savecb %d\n", doecho, savecb);#endif myerase = erasechar(); mykill = killchar(); noecho(); crmode(); for (;;) { rownum[cpos] = win->_cury; colnum[cpos] = win->_curx; if (! (win->_flags&_ISPAD)) wrefresh(win); ch = wgetch(win); if (ch <= 0 ||ch == ERR || ch == '\n' || ch == '\r') break; if (ch == myerase || ch == KEY_LEFT || ch == KEY_BACKSPACE) { if (cpos > 0) { cp--; cpos--; if (doecho) { wmove(win, rownum[cpos], colnum[cpos]); wclrtoeol(win); } } } else if (ch == mykill) { cp = str; cpos = 0; if (doecho) { wmove(win, rownum[cpos], colnum[cpos]); wclrtoeol(win); } } else { *cp++ = ch; cpos++; if (doecho) { waddch(win, ch); } } } *cp = '\0'; if (doecho) echo(); if (!savecb) nocrmode(); waddch(win, '\n'); if (win->_flags & _ISPAD); wrefresh(win); if (ch == ERR) return ERR; return OK;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -