📄 ecufkey.c
字号:
/*+----------------------------------------------------------------- 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 + -