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

📄 pcvt_out.c

📁 freebsd v4.4内核源码
💻 C
📖 第 1 页 / 共 4 页
字号:
{	if(svsp->which_fkl == SYS_FKL)	{		if(svsp->force24)		{			svsp->force24 = 0;			swritefkl(2,(u_char *)"FORCE24 ENABLE  ",svsp);		}		else		{			svsp->force24 = 1;			swritefkl(2,(u_char *)"FORCE24 ENABLE *",svsp);		}		set_screen_size(svsp, vgacs[(svsp->vga_charset)].screen_size);	}}#if PCVT_SHOWKEYS/*---------------------------------------------------------------------------* *	toggle keyboard scancode display *---------------------------------------------------------------------------*/voidtoggl_kbddbg(struct video_state *svsp){	if((svsp->which_fkl == SYS_FKL) && (svsp == &vs[0]))	{		if(keyboard_show)		{			keyboard_show = 0;			swritefkl(3,(u_char *)"KEYBSCANDISPLAY ",svsp);		}		else		{			keyboard_show = 1;			swritefkl(3,(u_char *)"KEYBSCANDISPLAY*",svsp);		}	}}#endif /* PCVT_SHOWKEYS *//*---------------------------------------------------------------------------* *	toggle display functions *---------------------------------------------------------------------------*/voidtoggl_dspf(struct video_state *svsp){	if(svsp->which_fkl == SYS_FKL)	{		if(svsp->dis_fnc)		{			svsp->dis_fnc = 0;			swritefkl(6,(u_char *)"DISPLAY FUNCTNS ",svsp);		}		else		{			svsp->dis_fnc = 1;			swritefkl(6,(u_char *)"DISPLAY FUNCTNS*",svsp);		}	}}/*---------------------------------------------------------------------------* *	auto wrap on/off *---------------------------------------------------------------------------*/voidtoggl_awm(struct video_state *svsp){	if(svsp->which_fkl == SYS_FKL)	{		if(svsp->m_awm)		{			svsp->m_awm = 0;			swritefkl(7,(u_char *)"AUTOWRAPENABLE  ",svsp);		}		else		{			svsp->m_awm = 1;			swritefkl(7,(u_char *)"AUTOWRAPENABLE *",svsp);		}	}}/*---------------------------------------------------------------------------* *	bell on/off *---------------------------------------------------------------------------*/voidtoggl_bell(struct video_state *svsp){	if(svsp->which_fkl == SYS_FKL)	{		if(svsp->bell_on)		{			svsp->bell_on = 0;			swritefkl(4,(u_char *)"BELL    ENABLE  ",svsp);		}		else		{			svsp->bell_on = 1;			swritefkl(4,(u_char *)"BELL    ENABLE *",svsp);		}	}}/*---------------------------------------------------------------------------* *	7/8 bit usage *---------------------------------------------------------------------------*/voidtoggl_sevenbit(struct video_state *svsp){	if(svsp->which_fkl == SYS_FKL)	{		if(svsp->sevenbit)		{			svsp->sevenbit = 0;			swritefkl(5,(u_char *)"8-BIT   ENABLE *",svsp);		}		else		{			svsp->sevenbit = 1;			swritefkl(5,(u_char *)"8-BIT   ENABLE  ",svsp);		}	}}/*---------------------------------------------------------------------------* *	80 / 132 columns *---------------------------------------------------------------------------*/voidtoggl_columns(struct video_state *svsp){	if(svsp->which_fkl == SYS_FKL)	{		if(svsp->maxcol == SCR_COL132)		{			if(vt_col(svsp, SCR_COL80))				svsp->maxcol = 80;		}		else		{			if(vt_col(svsp, SCR_COL132))				svsp->maxcol = 132;		}	}}/*---------------------------------------------------------------------------* *	toggle vga 80/132 column operation *---------------------------------------------------------------------------*/intvt_col(struct video_state *svsp, int cols){	if(vga_col(svsp, cols) == 0)		return(0);	if(cols == SCR_COL80)		swritefkl(0,(u_char *)"132     COLUMNS ",svsp);	else		swritefkl(0,(u_char *)"132     COLUMNS*",svsp);	fillw(user_attr | ' ',		svsp->Crtat,		svsp->maxcol * svsp->screen_rowsize);	clr_parms(svsp);		/* escape parameter init */	svsp->state = STATE_INIT;	/* initial state */	svsp->col = 0;			/* init row */	svsp->row = 0;			/* init col */	svsp->cur_offset = 0;		/* cursor offset init */	svsp->sc_flag = 0;		/* invalidate saved cursor position */	svsp->scrr_beg = 0;		/* reset scrolling region */	svsp->scrr_len = svsp->screen_rows; /*reset scrolling region legnth */	svsp->scrr_end = svsp->scrr_len - 1;	svsp->transparent = 0;		/* disable control code processing */	svsp->selchar = 0;		/* selective attr off */	vt_initsel(svsp);		/* re-init sel attr */	update_hp(svsp);		/* update labels, row/col, page ind */	/* Update winsize struct to reflect screen size */	if(svsp->vs_tty)	{		svsp->vs_tty->t_winsize.ws_row = svsp->screen_rows;		svsp->vs_tty->t_winsize.ws_col = svsp->maxcol;		svsp->vs_tty->t_winsize.ws_xpixel =			(cols == SCR_COL80)? 720: 1056;		svsp->vs_tty->t_winsize.ws_ypixel = 400;#if PCVT_SIGWINCH		if(svsp->vs_tty->t_pgrp)			pgsignal(svsp->vs_tty->t_pgrp, SIGWINCH, 1);#endif /* PCVT_SIGWINCH */	}	return(1);}/*---------------------------------------------------------------------------* *	update HP stuff on screen *---------------------------------------------------------------------------*/voidupdate_hp(struct video_state *svsp){	if(svsp->vt_pure_mode != M_HPVT)		return;	fillw (user_attr | ' ',	       svsp->Crtat + svsp->screen_rows * svsp->maxcol,	       (svsp->screen_rowsize - svsp->screen_rows) * svsp->maxcol);	if (!svsp->labels_on)		return;	/* update fkey labels */	fkl_off(svsp);	fkl_on(svsp);	if(vsp == svsp)	{		/* update current displayed screen indicator */		*((svsp->Crtat + ((svsp->screen_rows + 2) * svsp->maxcol))		  + svsp->maxcol - 3) = user_attr | '[';		*((svsp->Crtat + ((svsp->screen_rows + 2) * svsp->maxcol))		  + svsp->maxcol - 2) = user_attr | current_video_screen + '0';		*((svsp->Crtat + ((svsp->screen_rows + 2) * svsp->maxcol))		  + svsp->maxcol - 1) = user_attr | ']';	}}/*---------------------------------------------------------------------------* *	initialize ANSI escape sequence parameter buffers *---------------------------------------------------------------------------*/voidclr_parms(struct video_state *svsp){	register int i;	for(i=0; i < MAXPARMS; i++)		svsp->parms[i] = 0;	svsp->parmi = 0;}/*---------------------------------------------------------------------------* * *	partial HP 2392 ANSI mode Emulator *	================================== * *	this part takes over the emulation of some escape sequences *	needed to handle the function key labels * *	They are modeled after the corresponding escape sequences *	introduced with the HP2392 terminals from Hewlett-Packard. * *	see: *	"HP2392A, Display Terminal Reference Manual", *	HP Manual Part Number 02390-90001 *	and: *	Reference Manual Supplement *	"2392A Display Terminal Option 049, ANSI Operation" *	HP Manual Part Number 02390-90023EN * *---------------------------------------------------------------------------*/static voidhp_entry(U_char ch, struct video_state *svsp){	switch(svsp->hp_state)	{		case SHP_INIT:			switch(ch)			{				case 'f':					svsp->hp_state = SHP_AND_F;					svsp->attribute = 0;					svsp->key = 0;					svsp->l_len = 0;					svsp->s_len = 0;					svsp->i = 0;					break;				case 'j':					svsp->m_len = 0;					svsp->hp_state = SHP_AND_J;					break;				case 's':					svsp->hp_state = SHP_AND_ETE;					break;				default:					svsp->hp_state = SHP_INIT;					svsp->state = STATE_INIT;					break;			}			break;		case SHP_AND_F:			if((ch >= '0') && (ch <= '8'))			{				svsp->attribute = ch;				svsp->hp_state = SHP_AND_Fa;			}			else			{				svsp->hp_state = SHP_INIT;				svsp->state = STATE_INIT;			}			break;		case SHP_AND_Fa:			if(ch == 'a')				svsp->hp_state = SHP_AND_Fak;			else if(ch == 'k')			{				svsp->key = svsp->attribute;				svsp->hp_state = SHP_AND_Fakd;			}			else			{				svsp->hp_state = SHP_INIT;				svsp->state = STATE_INIT;			}			break;		case SHP_AND_Fak:			if((ch >= '1') && (ch <= '8'))			{				svsp->key = ch;				svsp->hp_state = SHP_AND_Fak1;			}			else			{				svsp->hp_state = SHP_INIT;				svsp->state = STATE_INIT;			}			break;		case SHP_AND_Fak1:			if(ch == 'k')				svsp->hp_state = SHP_AND_Fakd;			else			{				svsp->hp_state = SHP_INIT;				svsp->state = STATE_INIT;			}			break;		case SHP_AND_Fakd:			if(svsp->l_len > 16)			{				svsp->hp_state = SHP_INIT;				svsp->state = STATE_INIT;			}			else if(ch >= '0' && ch <= '9')			{				svsp->l_len *= 10;				svsp->l_len += (ch -'0');			}			else if(ch == 'd')				svsp->hp_state = SHP_AND_FakdL;			else			{				svsp->hp_state = SHP_INIT;				svsp->state = STATE_INIT;			}			break;		case SHP_AND_FakdL:			if(svsp->s_len > 80)			{				svsp->hp_state = SHP_INIT;				svsp->state = STATE_INIT;			}			else if(ch >= '0' && ch <= '9')			{				svsp->s_len *= 10;				svsp->s_len += (ch -'0');			}			else if(ch == 'L')			{				svsp->hp_state = SHP_AND_FakdLl;				svsp->transparent = 1;			}			else			{				svsp->hp_state = SHP_INIT;				svsp->state = STATE_INIT;			}			break;		case SHP_AND_FakdLl:			svsp->l_buf[svsp->i] = ch;			if(svsp->i >= svsp->l_len-1)			{				svsp->hp_state = SHP_AND_FakdLls;				svsp->i = 0;				if(svsp->s_len == 0)				{					svsp->state = STATE_INIT;					svsp->hp_state = SHP_INIT;					svsp->transparent = 0;					svsp->i = 0;					svsp->l_buf[svsp->l_len] = '\0';					svsp->s_buf[svsp->s_len] = '\0';					writefkl((svsp->key - '0' -1),						 svsp->l_buf, svsp);				}			}			else				svsp->i++;			break;		case SHP_AND_FakdLls:			svsp->s_buf[svsp->i] = ch;			if(svsp->i >= svsp->s_len-1)			{				svsp->state = STATE_INIT;				svsp->hp_state = SHP_INIT;				svsp->transparent = 0;				svsp->i = 0;				svsp->l_buf[svsp->l_len] = '\0';				svsp->s_buf[svsp->s_len] = '\0';				writefkl((svsp->key - '0' -1), svsp->l_buf,					 svsp);			}			else				svsp->i++;			break;		case SHP_AND_J:			switch(ch)			{				case '@':	/* enable user keys, remove */						/* all labels & status from */						/* screen 		    */					svsp->hp_state = SHP_INIT;					svsp->state = STATE_INIT;					fkl_off(svsp);					break;				case 'A':	/* enable & display "modes" */					svsp->hp_state = SHP_INIT;					svsp->state = STATE_INIT;					fkl_on(svsp);					sw_sfkl(svsp);					break;				case 'B':	/* enable & display "user"  */					svsp->hp_state = SHP_INIT;					svsp->state = STATE_INIT;					fkl_on(svsp);					sw_ufkl(svsp);					break;				case 'C':	/* remove (clear) status line*/						/* and restore current labels*/					svsp->hp_state = SHP_INIT;					svsp->state = STATE_INIT;					fkl_on(svsp);					break;				case 'R':	/* enable usr/menu keys */						/* and fkey label modes */					svsp->hp_state = SHP_INIT;					svsp->state = STATE_INIT;					break;				case 'S':	/* disable usr/menu keys */						/* and fkey label modes */					svsp->hp_state = SHP_INIT;					svsp->state = STATE_INIT;					break;				case '0':				case '1':				case '2':				case '3':				case '4':				case '5':				case '6':				case '7':				case '8':				case '9': /* parameters for esc & j xx L mm */					svsp->m_len *= 10;					svsp->m_len += (ch -'0');					break;				case 'L':					svsp->hp_state = SHP_AND_JL;					svsp->i = 0;					svsp->transparent = 1;					break;				default:					svsp->hp_state = SHP_INIT;					svsp->state = STATE_INIT;					break;			}			break;		case SHP_AND_JL:			svsp->m_buf[svsp->i] = ch;			if(svsp->i >= svsp->m_len-1)			{				svsp->state = STATE_INIT;				svsp->hp_state = SHP_INIT;				svsp->transparent = 0;				svsp->i = 0;				svsp->m_buf[svsp->m_len] = '\0';				/* display status line */				/* needs to be implemented */				/* see 2392 man, 3-14 */			}			else				svsp->i++;			break;		case SHP_AND_ETE:	/* eat chars until uppercase */			if(ch >= '@' && ch <= 'Z')			{				svsp->hp_state = SHP_INIT;				svsp->state = STATE_INIT;				svsp->transparent = 0;			}			break;		default:			svsp->hp_state = SHP_INIT;			svsp->state = STATE_INIT;			svsp->transparent = 0;			break;	}}#endif	/* NVT > 0 *//* ------------------------- E O F ------------------------------------------*/

⌨️ 快捷键说明

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