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

📄 ecufkey.c

📁 一个通讯程序源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/*+-----------------------------------------------------------------	ecufkey.c -- function key definition	wht@n4hgf.Mt-Park.GA.US  Defined functions:	ffso(str)	idke_to_xf(ikde)	kde_fgets(buf,bufsize,fp)	kde_name_to_ikde(keystr)	kde_text(ikde)	keyset_define_key(bufptr)	keyset_display()	keyset_idstr(ikde)	keyset_init()	keyset_read(name)	xf_text(xf)	xf_to_ikde(xf)------------------------------------------------------------------*//*+:EDITS:*//*:09-10-1992-13:58-wht@n4hgf-ECU release 3.20 *//*:08-22-1992-15:38-wht@n4hgf-ECU release 3.20 BETA *//*:04-17-1992-16:29-wht@n4hgf-initialize keyset to SCO "ANSI" send strings *//*:09-01-1991-05:16-wht@n4hgf2-allow comments and whitespace after names *//*:08-31-1991-13:21-wht@n4hgf2-look for keys file in ECULIBDIR *//*:08-16-1991-00:11-wht@n4hgf-keyset_init loads default keyset if found *//*:07-25-1991-12:55-wht@n4hgf-ECU release 3.10 *//*:07-12-1991-13:57-wht@n4hgf-GCC140 fix update *//*:05-21-1991-00:45-wht@n4hgf-added -3 error code to keyset_read *//*:05-21-1991-00:37-wht@n4hgf-improve fkey load error detection *//*:05-16-1991-15:05-wht@n4hgf-gcc binary exploded in keyset_display *//*:08-14-1990-20:40-wht@n4hgf-ecu3.00-flush old edit history */#include "ecu.h"#include "ecukey.h"#include "ecufkey.h"#include "ecuxkey.h"#include "ecufork.h"char *str_token();extern char kbdintr;	/* current input INTR */extern char curr_dir[CURR_DIRSIZ];	/* current working key defns */KDE keyset_table[KDE_COUNT];char keyset_name[256] = "";KDEMAP kdemap[] = {	{ XFcurup,	IKDE_CUU,	"CUU",	"\033[A"	},	{ XFcurdn,	IKDE_CUD,	"CUD",	"\033[B"	},	{ XFcurrt,	IKDE_CUR,	"CUR",	"\033[C"	},	{ XFcurlf,	IKDE_CUL,	"CUL",	"\033[D"	},	{ XFcur5,	IKDE_CU5,	"CU5",	"\033[E"	},	{ XFend,	IKDE_END,	"End",	"\033[F"	},	{ XFpgdn,	IKDE_PGDN,	"PgDn",	"\033[G"	},	{ XFhome,	IKDE_HOME,	"Home",	"\033[H"	},	{ XFpgup,	IKDE_PGUP,	"PgUp",	"\033[I"	},	{ XFins,	IKDE_INS,	"Ins",	"\033[L"	},	{ XF1,		IKDE_F1,	"F1",	"\033[M"	},	{ XF2,		IKDE_F2,	"F2",	"\033[N"	},	{ XF3,		IKDE_F3,	"F3",	"\033[O"	},	{ XF4,		IKDE_F4,	"F4",	"\033[P"	},	{ XF5,		IKDE_F5,	"F5",	"\033[Q"	},	{ XF6,		IKDE_F6,	"F6",	"\033[R"	},	{ XF7,		IKDE_F7,	"F7",	"\033[S"	},	{ XF8,		IKDE_F8,	"F8",	"\033[T"	},	{ XF9,		IKDE_F9,	"F9",	"\033[U"	},	{ XF10,		IKDE_F10,	"F10",	"\033[V"	},	{ XF11,		IKDE_F11,	"F11",	"\033[W"	},	{ XF12,		IKDE_F12,	"F12",	"\033[X"	},	{ XFbktab,	IKDE_BKTAB,	"BkTab","\033[Z"	},	{ 255,		IKDE_InitStr,"IS",	""			},	{ 0,0,"",""}};/*+-------------------------------------------------------------------------	keyset_init()--------------------------------------------------------------------------*/voidkeyset_init(){	register itmp;	register KDE *tkde;	register KDEMAP *kmap;	for(itmp = 0; itmp < KDE_COUNT; itmp++)	{		tkde = &keyset_table[itmp];		tkde->logical[0] = 0;		tkde->ikde = (uchar)itmp;	}	kmap = kdemap;	while(kmap->xf)	{		if(kmap->ikde <= IKDE_lastKey)		{			tkde = &keyset_table[kmap->ikde];			sprintf(tkde->logical,"SCO %s",kmap->name);			strcpy(tkde->str,kmap->init);			tkde->count  = strlen(tkde->str);		}		kmap++;	}	keyset_name[0] = 0;	tkde = &keyset_table[IKDE_BKTAB];	strcpy(tkde->logical,"redisplay");	tkde->count = KACT_REDISPLAY;	tkde = &keyset_table[IKDE_HOME];	strcpy(tkde->logical,"ecu cmd");	tkde->count = KACT_COMMAND;	tkde = &keyset_table[IKDE_INS];	strcpy(tkde->logical,"local shell");	tkde->count = KACT_LOCAL_SHELL;	tkde = &keyset_table[IKDE_CU5];	strcpy(tkde->logical,"screen dump");	tkde->str[0] = 0x7F;	/* this key is intercepted by kbd read routine */	tkde->count = 0;}	/* end of keyset_init *//*+-------------------------------------------------------------------------	kde_fgets(buf,bufsize,fp) - read and evaluate key file lineReturns:    KDETYPE_COMMENT     comment or blank line (null, all blank or "#"                        as non-blank)    KDETYPE_NAME        "name" (non "#\t " in column 1)    KDETYPE_ENTRY       "entry" ("\t " in column 1)    KDETYPE_EOF         end of file--------------------------------------------------------------------------*/intkde_fgets(buf,bufsize,fp)char *buf;int bufsize;FILE *fp;{	register itmp;	register char *cptr;	if(!fgets(buf,bufsize,fp))	{		return(KDETYPE_EOF);	}	if(!(itmp = strlen(buf)))		return(KDETYPE_COMMENT);	if(buf[itmp - 1] == NL)	{		buf[itmp - 1] = 0;		itmp--;	}	if(!itmp)		return(KDETYPE_COMMENT);	cptr = buf;	itmp = (strchr(" \t",*cptr)) ? KDETYPE_ENTRY : KDETYPE_NAME;	while(*cptr && ((*cptr == SPACE) || (*cptr == TAB)))		cptr++;	if(!*cptr || (*cptr == '#'))		return(KDETYPE_COMMENT);	return(itmp);	}	/* end of kde_fgets *//*+-------------------------------------------------------------------------	kde_name_to_ikde(keystr)--------------------------------------------------------------------------*/intkde_name_to_ikde(keystr)char *keystr;{	KDEMAP *kmap = kdemap;	while(kmap->xf != 0)	{		if(!strcmpi(kmap->name,keystr))			return((int)kmap->ikde);		kmap++;	}	return(-1);}	/* end of kde_name_to_ikde *//*+-------------------------------------------------------------------------	keyset_idstr(ikde)--------------------------------------------------------------------------*/char *keyset_idstr(ikde)int ikde;{	KDEMAP *kmap = kdemap;	while(kmap->xf)	{		if((int)kmap->ikde == ikde)			return(kmap->name);		kmap++;	}	return((char *)0);}	/* end of keyset_idstr *//*+-------------------------------------------------------------------------	xf_to_ikde(xf)--------------------------------------------------------------------------*/intxf_to_ikde(xf)uchar xf;{	KDEMAP *kmap = kdemap;	while(kmap->xf)	{		if(kmap->xf == xf)			return((int)kmap->ikde & 0xFF);		kmap++;	}	return(-1);}	/* end of xf_to_ikde *//*+-------------------------------------------------------------------------	ikde_to_xf(ikde)--------------------------------------------------------------------------*/intikde_to_xf(ikde)uchar ikde;{	KDEMAP *kmap = kdemap;	while(kmap->xf)	{		if(kmap->ikde == ikde)			return((int)kmap->xf & 0xFF);		kmap++;	}	return(-1);}	/* end of ikde_to_xf *//*+-------------------------------------------------------------------------	kde_text(ikde) - ikde value to text--------------------------------------------------------------------------*/char *kde_text(ikde)int ikde;{	KDEMAP *kmap = kdemap;	while(kmap->xf)	{		if(kmap->ikde == (char)ikde)			return(kmap->name);		kmap++;	}	return("??");}	/* end of xf_to_ikde *//*+-------------------------------------------------------------------------	xf_text(xf) - XFkey to text--------------------------------------------------------------------------*/char *xf_text(xf)uchar xf;{	static char sc8[8];	switch(xf)	{		case XFcurup:	return("CUU");		case XFcurdn:	return("CUD");		case XFcurrt:	return("CUR");		case XFcurlf:	return("CUL");		case XFcur5:	return("CU5");		case XFend:		return("End");		case XFpgdn:	return("PgDn");		case XFhome:	return("Home");		case XFpgup:	return("PgUp");		case XFins:		return("Ins");		case XF1:		return("F1");		case XF2:		return("F2");		case XF3:		return("F3");		case XF4:		return("F4");		case XF5:		return("F5");		case XF6:		return("F6");		case XF7:		return("F7");		case XF8:		return("F8");		case XF9:		return("F9");		case XF10:		return("F10");		case XF11:		return("F11");		case XF12:		return("F12");		case XFbktab:	return("BkTab");	}	if((xf >= XF_ALTA) && (xf <= XF_ALTZ))	{		sprintf(sc8,"Alt-%c",'a' + xf - XF_ALTA);		return(sc8);	}	sprintf(sc8,"XF_%02x\n",xf);	return(sc8);}	/* end of xf_text *//*+-------------------------------------------------------------------------	keyset_define_key(bufptr)return 0 if no error, -1 if error--------------------------------------------------------------------------*/intkeyset_define_key(bufptr)char *bufptr;{	register itmp;

⌨️ 快捷键说明

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