⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 curses.mus

📁 早期freebsd实现
💻 MUS
📖 第 1 页 / 共 2 页
字号:
CASE int winschI	WINDOW*		winI	char		cENDCASE int insertlnENDCASE int winsertlnI	WINDOW*		winENDCASE int moveI	int		yI	int		xENDCASE int wmoveI	WINDOW*		winI	int		yI	int		xENDCASE int overlayI	WINDOW*		win1I	WINDOW*		win2ENDCASE int overwriteI	WINDOW*		win1I	WINDOW*		win2ENDCASE int refreshENDCASE int wrefreshI	WINDOW*		winENDCASE int standoutENDCASE int wstandoutI	WINDOW*		winENDCASE int standendENDCASE int wstandendI	WINDOW*		winENDCASE int cbreakENDCASE int nocbreakENDCASE int echoENDCASE int noechoEND    case US_getch:	if (items != 0)	    fatal("Usage: &getch()");	else {	    int retval;	    char retch;	    retval = getch();	    if (retval == EOF)		st[0] = &str_undef;	    else {		retch = retval;		if (retval > 0377)			str_numset(st[0], (double) retval);		else			str_nset(st[0], &retch, 1);	    }	}	return sp;    case US_wgetch:	if (items != 1)	    fatal("Usage: &wgetch($win)");	else {	    int retval;	    char retch;	    WINDOW*     win =           *(WINDOW**)     str_get(st[1]);	    retval = wgetch(win);	    if (retval == EOF)		st[0] = &str_undef;	    else {		retch = retval;		if (retval > 0377)			str_numset(st[0], (double) retval);		else			str_nset(st[0], &retch, 1);	    }	}	return sp;CASE int getstrO	char*		strENDCASE int wgetstrI	WINDOW*		winO	char*		strENDCASE int rawENDCASE int norawENDCASE int baudrateENDCASE int delwinI	WINDOW*		winENDCASE int endwinENDCASE int erasecharEND    case US_getyx:	if (items != 3)	    fatal("Usage: &getyx($win, $y, $x)");	else {	    int retval;	    STR*	str =		str_new(0);	    WINDOW*	win =		*(WINDOW**)	str_get(st[1]);	    int		y;	    int		x;	    do_sprintf(str, items - 1, st + 1);	    retval = getyx(win, y, x);	    str_numset(st[2], (double)y);	    str_numset(st[3], (double)x);	    str_numset(st[0], (double) retval);	    str_free(str);	}	return sp;	CASE int inchENDCASE int winchI	WINDOW*		winENDCASE WINDOW* initscrENDCASE int killcharENDCASE int leaveokI	WINDOW*		winI	bool		boolfEND#ifdef BSDCASE char* longnameI	char*		termbufIO	char*		nameEND#elseCASE char* longnameI	char*		termbugI	char*		nameEND#endifCASE int mvwinI	WINDOW*		winI	int		yI	int		xENDCASE WINDOW* newwinI	int		linesI	int		colsI	int		begin_yI	int		begin_xENDCASE int nlENDCASE int nonlENDCASE int scrollokI	WINDOW*		winI	bool		boolfENDCASE WINDOW* subwinI	WINDOW*		winI	int		linesI	int		colsI	int		begin_yI	int		begin_xENDCASE int touchlineI	WINDOW*		winI	int		yI	int		startxI	int		endxENDCASE int touchwinI	WINDOW*		winENDCASE char* unctrlI	char		chENDCASE int gettmodeENDCASE int mvcurI	int		lastyI	int		lastxI	int		newyI	int		newxENDCASE int scrollI	WINDOW*		winENDCASE int savettyENDCASE void resettyENDCASE int settermI	char*		nameENDCASE int attroffI       chtype          strENDCASE int wattroffI       chtype          strENDCASE int wattronI       chtype          strENDCASE int attronI       chtype          strENDCASE int attrsetI       chtype          strENDCASE int wattrsetI       chtype          strEND#ifdef	CURSEFMT    case US_printw:	if (items < 1)	    fatal("Usage: &printw($fmt, $arg1, $arg2, ... )");	else {	    int retval;	    STR*	str =		str_new(0);	    do_sprintf(str, items - 1, st + 1);	    retval = addstr(str->str_ptr);	    str_numset(st[0], (double) retval);	    str_free(str);	}	return sp;    case US_wprintw:	if (items < 2)	    fatal("Usage: &wprintw($win, $fmt, $arg1, $arg2, ... )");	else {	    int retval;	    STR*	str =		str_new(0);	    WINDOW*	win =		*(WINDOW**)	str_get(st[1]);	    do_sprintf(str, items - 1, st + 1);	    retval = waddstr(win, str->str_ptr);	    str_numset(st[0], (double) retval);	    str_free(str);	}	return sp;#endifCASE char* getcapI	char*		strEND#ifdef BSDCASE int flushokI	WINDOW*		winI	bool		boolfENDCASE int fullnameI	char*		termbufIO	char*		nameENDCASE int touchoverlapI	WINDOW*		win1I	WINDOW*		win2ENDCASE int tstpENDCASE int _putcharI	char		chEND    case US_testcallback:	sp = callback("callback", sp + items, curcsv->wantarray, 1, items);	break;#endif    default:	fatal("Unimplemented user-defined subroutine");    }    return sp;}static intuserval(ix, str)int ix;STR *str;{    switch (ix) {    case UV_COLS:	str_numset(str, (double)COLS);	break;    case UV_ERR:	str_numset(str, (double)ERR);	break;    case UV_LINES:	str_numset(str, (double)LINES);	break;    case UV_OK:	str_numset(str, (double)OK);	break;    case UV_curscr:	str_nset(str, &curscr, sizeof(WINDOW*));	break;    case UV_stdscr:	str_nset(str, &stdscr, sizeof(WINDOW*));	break;    case UV_ttytype:	str_set(str, ttytype);	break;#ifdef BSD    case UV_Def_term:	str_set(str, Def_term);	break;    case UV_My_term:	str_numset(str, (double)My_term);	break;#endif    case UV_A_STANDOUT:	str_numset(str, (double)A_STANDOUT);	break;    case UV_A_UNDERLINE:	str_numset(str, (double)A_UNDERLINE);	break;    case UV_A_REVERSE:	str_numset(str, (double)A_REVERSE);	break;    case UV_A_BLINK:	str_numset(str, (double)A_BLINK);	break;    case UV_A_DIM:	str_numset(str, (double)A_DIM);	break;    case UV_A_BOLD:	str_numset(str, (double)A_BOLD);	break;    case UV_A_NORMAL:	str_numset(str, (double)A_NORMAL);	break;    }    return 0;}static intuserset(ix, str)int ix;STR *str;{    switch (ix) {    case UV_COLS:	COLS = (int)str_gnum(str);	break;    case UV_LINES:	LINES = (int)str_gnum(str);	break;    case UV_ttytype:	strcpy(ttytype, str_get(str));		/* hope it fits */#ifdef USG	if (tcbuf != NULL) {	    free(tcbuf);	    tcbuf = NULL;	}#endif		break;#ifdef BSD    case UV_Def_term:	Def_term = savestr(str_get(str));	/* never freed */	break;    case UV_My_term:	My_term = (bool)str_gnum(str);	break;#endif    }    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -