📄 charproc.c
字号:
XtRBoolean, (caddr_t) &defaultFALSE},{"font1", "Font1", XtRString, sizeof(String), XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font1]), XtRString, (caddr_t) NULL},{"font2", "Font2", XtRString, sizeof(String), XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font2]), XtRString, (caddr_t) NULL},{"font3", "Font3", XtRString, sizeof(String), XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font3]), XtRString, (caddr_t) NULL},{"font4", "Font4", XtRString, sizeof(String), XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font4]), XtRString, (caddr_t) NULL},{"font5", "Font5", XtRString, sizeof(String), XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font5]), XtRString, (caddr_t) NULL},{"font6", "Font6", XtRString, sizeof(String), XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font6]), XtRString, (caddr_t) NULL},{XtNcolor0, XtCcolor0, XtRPixel, sizeof(Pixel), XtOffset(XtermWidget, screen.colors[COLOR_0]), XtRString, "black" },{XtNcolor1, XtCcolor1, XtRPixel, sizeof(Pixel), XtOffset(XtermWidget, screen.colors[COLOR_1]), XtRString, "red"},{XtNcolor2, XtCcolor2, XtRPixel, sizeof(Pixel), XtOffset(XtermWidget, screen.colors[COLOR_2]), XtRString, "green"},{XtNcolor3, XtCcolor3, XtRPixel, sizeof(Pixel), XtOffset(XtermWidget, screen.colors[COLOR_3]), XtRString, "yellow"},{XtNcolor4, XtCcolor4, XtRPixel, sizeof(Pixel), XtOffset(XtermWidget, screen.colors[COLOR_4]), XtRString, "blue"},{XtNcolor5, XtCcolor5, XtRPixel, sizeof(Pixel), XtOffset(XtermWidget, screen.colors[COLOR_5]), XtRString, "magenta"},{XtNcolor6, XtCcolor6, XtRPixel, sizeof(Pixel), XtOffset(XtermWidget, screen.colors[COLOR_6]), XtRString, "cyan"},{XtNcolor7, XtCcolor7, XtRPixel, sizeof(Pixel), XtOffset(XtermWidget, screen.colors[COLOR_7]), XtRString, "white"},{"font7", "Font7", XtRString, sizeof(String), XtOffset(XtermWidget, screen.menu_font_names[fontMenu_font7]), XtRString, (caddr_t) NULL},{"dynamicColors", "DynamicColors", XtRBoolean, sizeof(Boolean), XtOffset(XtermWidget, misc.dynamicColors), XtRBoolean, (caddr_t) &defaultTRUE},{"cursorWarpTranslation", "CursorWarpTranslation", XtRString, sizeof(String), XtOffset(XtermWidget, misc.cb_translation), XtRString, (caddr_t) NULL},};static void VTClassInit();static void VTInitialize();static void VTRealize();static void VTExpose();static void VTResize();static void VTDestroy();static Boolean VTSetValues();static WidgetClassRec xtermClassRec = { {/* core_class fields */ /* superclass */ (WidgetClass) &widgetClassRec, /* class_name */ "VT100", /* widget_size */ sizeof(XtermWidgetRec), /* class_initialize */ VTClassInit, /* class_part_initialize */ NULL, /* class_inited */ FALSE, /* initialize */ VTInitialize, /* initialize_hook */ NULL, /* realize */ VTRealize, /* actions */ actionsList, /* num_actions */ XtNumber(actionsList), /* resources */ resources, /* num_resources */ XtNumber(resources), /* xrm_class */ NULLQUARK, /* compress_motion */ TRUE, /* compress_exposure */ FALSE, /* compress_enterleave */ TRUE, /* visible_interest */ FALSE, /* destroy */ VTDestroy, /* resize */ VTResize, /* expose */ VTExpose, /* set_values */ VTSetValues, /* set_values_hook */ NULL, /* set_values_almost */ NULL, /* get_values_hook */ NULL, /* accept_focus */ NULL, /* version */ XtVersion, /* callback_offsets */ NULL, /* tm_table */ defaultTranslations, /* query_geometry */ XtInheritQueryGeometry, /* display_accelerator*/ XtInheritDisplayAccelerator, /* extension */ NULL }};WidgetClass xtermWidgetClass = (WidgetClass)&xtermClassRec;static void VTparse(){ register TScreen *screen = &term->screen; register int *parsestate = groundtable; register unsigned int c; register unsigned char *cp; register int row, col, top, bot, scstype; extern int TrackMouse();#ifdef DEBUGGING fprintf(stderr, "entering VTparse\n");#endif if(setjmp(vtjmpbuf)) parsestate = groundtable; for( ; ; ) { switch (parsestate[c = doinput()]) { case CASE_PRINT:#ifdef DEBUGGING fprintf(stderr, "Case Print\n");#endif /* printable characters */ top = bcnt > TEXT_BUF_SIZE ? TEXT_BUF_SIZE : bcnt; cp = bptr; *--bptr = c; while(top > 0 && isprint(*cp & 0x7f)) { top--; bcnt--; cp++; } if(screen->curss) { dotext(screen, term->flags, screen->gsets[screen->curss], bptr, bptr + 1, term->cur_foreground, term->cur_background ); screen->curss = 0; bptr++; } if(bptr < cp) dotext(screen, term->flags, screen->gsets[screen->curgl], bptr, cp, term->cur_foreground, term->cur_background ); bptr = cp; break; case CASE_GROUND_STATE:#ifdef DEBUGGING fprintf(stderr, "Case Ground State.\n");#endif /* exit ignore mode */ parsestate = groundtable; break; case CASE_IGNORE_STATE:#ifdef DEBUGGING fprintf(stderr, "case Ignore state.\n");#endif /* Ies: ignore anything else */ parsestate = igntable; break; case CASE_IGNORE_ESC: /* Ign: escape */#ifdef DEBUGGING fprintf(stderr, "case Ignore ESC\n");#endif parsestate = iestable; break; case CASE_IGNORE: /* Ignore character */#ifdef DEBUGGING fprintf(stderr, "case Ignore char\n");#endif break; case CASE_BELL: /* bell */#ifdef DEBUGGING fprintf(stderr, "case bell\n");#endif Bell(); break; case CASE_BS: /* backspace */#ifdef DEBUGGING fprintf(stderr, "case backspace\n");#endif CursorBack(screen, 1); break; case CASE_CR: /* carriage return */#ifdef DEBUGGING fprintf(stderr, "case carriage return\n");#endif CarriageReturn(screen); parsestate = groundtable; break; case CASE_ESC: /* escape */#ifdef DEBUGGING fprintf(stderr, "case escape\n");#endif parsestate = esctable; break; case CASE_VMOT: /* * form feed, line feed, vertical tab */#ifdef DEBUGGING fprintf(stderr, "case form feed, line feed, vert tab\n");#endif Index(screen, 1); if (term->flags & LINEFEED) CarriageReturn(screen); if (XtAppPending(app_con) || GetBytesAvailable (ConnectionNumber(screen->display)) > 0) xevents(); parsestate = groundtable; break; case CASE_TAB: /* tab */#ifdef DEBUGGING fprintf(stderr, "case tab\n");#endif screen->cur_col = TabNext(term->tabs, screen->cur_col); if (screen->cur_col > screen->max_col) screen->cur_col = screen->max_col; break; case CASE_SI:#ifdef DEBUGGING fprintf(stderr, "case SI\n");#endif screen->curgl = 0; break; case CASE_SO:#ifdef DEBUGGING fprintf(stderr, "case SO\n");#endif screen->curgl = 1; break; case CASE_SCR_STATE: /* enter scr state */#ifdef DEBUGGING fprintf(stderr, "case scr state\n");#endif parsestate = scrtable; break; case CASE_SCS0_STATE:#ifdef DEBUGGING fprintf(stderr, "case SCS0 state\n");#endif /* enter scs state 0 */ scstype = 0; parsestate = scstable; break; case CASE_SCS1_STATE:#ifdef DEBUGGING fprintf(stderr, "case SCS1 state\n");#endif /* enter scs state 1 */ scstype = 1; parsestate = scstable; break; case CASE_SCS2_STATE:#ifdef DEBUGGING fprintf(stderr, "case SCS2 state\n");#endif /* enter scs state 2 */ scstype = 2; parsestate = scstable; break; case CASE_SCS3_STATE:#ifdef DEBUGGING fprintf(stderr, "case scs3 state\n");#endif /* enter scs state 3 */ scstype = 3; parsestate = scstable; break; case CASE_ESC_IGNORE:#ifdef DEBUGGING fprintf(stderr, "case unknown esc sequence\n");#endif /* unknown escape sequence */ parsestate = eigtable; break; case CASE_ESC_DIGIT:#ifdef DEBUGGING fprintf(stderr, "case esc digit\n");#endif /* digit in csi or dec mode */ if((row = param[nparam - 1]) == DEFAULT) row = 0; param[nparam - 1] = 10 * row + (c - '0'); break; case CASE_ESC_SEMI:#ifdef DEBUGGING fprintf(stderr, "case esc semicolon\n");#endif /* semicolon in csi or dec mode */ param[nparam++] = DEFAULT; break; case CASE_DEC_STATE:#ifdef DEBUGGING fprintf(stderr, "case DEC mode\n");#endif /* enter dec mode */ parsestate = dectable; break; case CASE_ICH: /* ICH */#ifdef DEBUGGING fprintf(stderr, "case ICH\n");#endif if((row = param[0]) < 1) row = 1; InsertChar(screen, row); parsestate = groundtable; break; case CASE_CUU:#ifdef DEBUGGING fprintf(stderr, "case CUU\n");#endif /* CUU */ if((row = param[0]) < 1) row = 1; CursorUp(screen, row); parsestate = groundtable; break; case CASE_CUD:#ifdef DEBUGGING fprintf(stderr, "case CUD\n");#endif /* CUD */ if((row = param[0]) < 1) row = 1; CursorDown(screen, row); parsestate = groundtable; break; case CASE_CUF:#ifdef DEBUGGING fprintf(stderr, "case CUF\n");#endif /* CUF */ if((row = param[0]) < 1) row = 1; CursorForward(screen, row); parsestate = groundtable; break; case CASE_CUB:#ifdef DEBUGGING fprintf(stderr, "case CUB\n");#endif /* CUB */ if((row = param[0]) < 1) row = 1; CursorBack(screen, row); parsestate = groundtable; break; case CASE_CUP:#ifdef DEBUGGING fprintf(stderr, "case CUP / HVP\n");#endif /* CUP | HVP */ if((row = param[0]) < 1) row = 1; if(nparam < 2 || (col = param[1]) < 1) col = 1; CursorSet(screen, row-1, col-1, term->flags); parsestate = groundtable; break; case CASE_ED:#ifdef DEBUGGING fprintf(stderr, "case ED\n");#endif /* ED */ switch (param[0]) { case DEFAULT: case 0: ClearBelow(screen); break; case 1: ClearAbove(screen); break; case 2: ClearScreen(screen); break; } parsestate = groundtable; break; case CASE_EL:#ifdef DEBUGGING fprintf(stderr, "case EL\n");#endif /* EL */ switch (param[0]) { case DEFAULT: case 0: ClearRight(screen); break; case 1: ClearLeft(screen); break; case 2: ClearLine(screen); break; } parsestate = groundtable; break; case CASE_IL:#ifdef DEBUGGING fprintf(stderr, "case IL\n");#endif /* IL */ if((row = param[0]) < 1) row = 1; InsertLine(screen, row); parsestate = groundtable; break; case CASE_DL:#ifdef DEBUGGING fprintf(stderr, "case DL\n");#endif /* DL */ if((row = param[0]) < 1) row = 1; DeleteLine(screen, row); parsestate = groundtable; break; case CASE_DCH:#ifdef DEBUGGING fprintf(stderr, "case DCH\n");#endif /* DCH */ if((row = param[0]) < 1) row = 1; DeleteChar(screen, row); parsestate = groundtable; break; case CASE_TRACK_MOUSE:#ifdef DEBUGGING fprintf(stderr, "case track mouse\n");#endif /* Track mouse as long as in window and between specified rows */ TrackMouse(param[0], param[2]-1, param[1]-1, param[3]-1, param[4]-2); break; case CASE_DECID:#ifdef DEBUGGING fprintf(stderr, "case default DEC ID\n");#endif param[0] = -1; /* Default ID parameter */ /* Fall through into ... */ case CASE_DA1:#ifdef DEBUGGING fprintf(stderr, "case DA1\n");#endif /* DA1 */ if (param[0] <= 0) { /* less than means DEFAULT */ reply.a_type = CSI; reply.a_pintro = '?'; reply.a_nparam = 2; reply.a_param[0] = 1; /* VT102 */ reply.a_param[1] = 2; /* VT102 */ reply.a_inters = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -