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

📄 temuvt102.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
   the current screen, or of the emulation class itself.   The token to be interpreteted comes in as a machine word   possibly accompanied by two parameters.   Likewise, the assigned operations, come with up to two   arguments. One could consider making up a proper table   from the function below.   The technical reference manual provides more informations   about this mapping.*/void TEmuVt102::tau( int token, int p, int q ){//scan_buffer_report();//if (token == TY_CHR___()) printf("%c",p); else//printf("tau(%d,%d,%d, %d,%d)\n",(token>>0)&0xff,(token>>8)&0xff,(token>>16)&0xffff,p,q);  switch (token)  {    case TY_CHR___(         ) : scr->ShowCharacter        (p         ); break; //UTF16    //             127 DEL    : ignored on input    case TY_CTL___('@'      ) : /* NUL: ignored                      */ break;    case TY_CTL___('A'      ) : /* SOH: ignored                      */ break;    case TY_CTL___('B'      ) : /* STX: ignored                      */ break;    case TY_CTL___('C'      ) : /* ETX: ignored                      */ break;    case TY_CTL___('D'      ) : /* EOT: ignored                      */ break;    case TY_CTL___('E'      ) :      reportAnswerBack     (          ); break; //VT100    case TY_CTL___('F'      ) : /* ACK: ignored                      */ break;    case TY_CTL___('G'      ) : gui->Bell                 (          ); break; //VT100    case TY_CTL___('H'      ) : scr->BackSpace            (          ); break; //VT100    case TY_CTL___('I'      ) : scr->Tabulate             (          ); break; //VT100    case TY_CTL___('J'      ) : scr->NewLine              (          ); break; //VT100    case TY_CTL___('K'      ) : scr->NewLine              (          ); break; //VT100    case TY_CTL___('L'      ) : scr->NewLine              (          ); break; //VT100    case TY_CTL___('M'      ) : scr->Return               (          ); break; //VT100    case TY_CTL___('N'      ) :      useCharset           (         1); break; //VT100    case TY_CTL___('O'      ) :      useCharset           (         0); break; //VT100    case TY_CTL___('P'      ) : /* DLE: ignored                      */ break;    case TY_CTL___('Q'      ) : /* DC1: XON continue                 */ break; //VT100    case TY_CTL___('R'      ) : /* DC2: ignored                      */ break;    case TY_CTL___('S'      ) : /* DC3: XOFF halt                    */ break; //VT100    case TY_CTL___('T'      ) : /* DC4: ignored                      */ break;    case TY_CTL___('U'      ) : /* NAK: ignored                      */ break;    case TY_CTL___('V'      ) : /* SYN: ignored                      */ break;    case TY_CTL___('W'      ) : /* ETB: ignored                      */ break;    case TY_CTL___('X'      ) : scr->ShowCharacter        (    0x2592); break; //VT100    case TY_CTL___('Y'      ) : /* EM : ignored                      */ break;    case TY_CTL___('Z'      ) : scr->ShowCharacter        (    0x2592); break; //VT100    case TY_CTL___('['      ) : /* ESC: cannot be seen here.         */ break;    case TY_CTL___('\\'     ) : /* FS : ignored                      */ break;    case TY_CTL___(']'      ) : /* GS : ignored                      */ break;    case TY_CTL___('^'      ) : /* RS : ignored                      */ break;    case TY_CTL___('_'      ) : /* US : ignored                      */ break;    case TY_ESC___('D'      ) : scr->index                (          ); break; //VT100    case TY_ESC___('E'      ) : scr->NextLine             (          ); break; //VT100    case TY_ESC___('H'      ) : scr->changeTabStop        (TRUE      ); break; //VT100    case TY_ESC___('M'      ) : scr->reverseIndex         (          ); break; //VT100    case TY_ESC___('Z'      ) :      reportTerminalType   (          ); break;    case TY_ESC___('c'      ) :      reset                (          ); break;    case TY_ESC___('n'      ) :      useCharset           (         2); break;    case TY_ESC___('o'      ) :      useCharset           (         3); break;    case TY_ESC___('7'      ) :      saveCursor           (          ); break;    case TY_ESC___('8'      ) :      restoreCursor        (          ); break;    case TY_ESC___('='      ) :          setMode      (MODE_AppKeyPad); break;    case TY_ESC___('>'      ) :        resetMode      (MODE_AppKeyPad); break;    case TY_ESC___('<'      ) :          setMode      (MODE_Ansi     ); break; //VT100    case TY_ESC_CS('(',  '0') :      setCharset           (0,     '0'); break; //VT100    case TY_ESC_CS('(',  'A') :      setCharset           (0,     'A'); break; //VT100    case TY_ESC_CS('(',  'B') :      setCharset           (0,     'B'); break; //VT100    case TY_ESC_CS(')',  '0') :      setCharset           (1,     '0'); break; //VT100    case TY_ESC_CS(')',  'A') :      setCharset           (1,     'A'); break; //VT100    case TY_ESC_CS(')',  'B') :      setCharset           (1,     'B'); break; //VT100    case TY_ESC_CS('*',  '0') :      setCharset           (2,     '0'); break; //VT100    case TY_ESC_CS('*',  'A') :      setCharset           (2,     'A'); break; //VT100    case TY_ESC_CS('*',  'B') :      setCharset           (2,     'B'); break; //VT100    case TY_ESC_CS('+',  '0') :      setCharset           (3,     '0'); break; //VT100    case TY_ESC_CS('+',  'A') :      setCharset           (3,     'A'); break; //VT100    case TY_ESC_CS('+',  'B') :      setCharset           (3,     'B'); break; //VT100    case TY_ESC_CS('%',  'G') :      setCodec             (1         ); break; //LINUX    case TY_ESC_CS('%',  '@') :      setCodec             (0         ); break; //LINUX    case TY_ESC_DE('3'      ) : /* IGNORED: double high, top half    */ break;    case TY_ESC_DE('4'      ) : /* IGNORED: double high, bottom half */ break;    case TY_ESC_DE('5'      ) : /* IGNORED: single width, single high*/ break;    case TY_ESC_DE('6'      ) : /* IGNORED: double width, single high*/ break;    case TY_ESC_DE('8'      ) : scr->helpAlign            (          ); break;    case TY_CSI_PS('K',    0) : scr->clearToEndOfLine     (          ); break;    case TY_CSI_PS('K',    1) : scr->clearToBeginOfLine   (          ); break;    case TY_CSI_PS('K',    2) : scr->clearEntireLine      (          ); break;    case TY_CSI_PS('J',    0) : scr->clearToEndOfScreen   (          ); break;    case TY_CSI_PS('J',    1) : scr->clearToBeginOfScreen (          ); break;    case TY_CSI_PS('J',    2) : scr->clearEntireScreen    (          ); break;    case TY_CSI_PS('g',    0) : scr->changeTabStop        (FALSE     ); break; //VT100    case TY_CSI_PS('g',    3) : scr->clearTabStops        (          ); break; //VT100    case TY_CSI_PS('h',    4) : scr->    setMode      (MODE_Insert   ); break;    case TY_CSI_PS('h',   20) :          setMode      (MODE_NewLine  ); break;    case TY_CSI_PS('i',    0) : /* IGNORE: attached printer          */ break; //VT100    case TY_CSI_PS('l',    4) : scr->  resetMode      (MODE_Insert   ); break;    case TY_CSI_PS('l',   20) :        resetMode      (MODE_NewLine  ); break;    case TY_CSI_PS('m',    0) : scr->setDefaultRendition  (          ); break;    case TY_CSI_PS('m',    1) : scr->  setRendition     (RE_BOLD     ); break; //VT100    case TY_CSI_PS('m',    4) : scr->  setRendition     (RE_UNDERLINE); break; //VT100    case TY_CSI_PS('m',    5) : scr->  setRendition     (RE_BLINK    ); break; //VT100    case TY_CSI_PS('m',    7) : scr->  setRendition     (RE_REVERSE  ); break;    case TY_CSI_PS('m',   10) : /* IGNORED: mapping related          */ break; //LINUX    case TY_CSI_PS('m',   11) : /* IGNORED: mapping related          */ break; //LINUX    case TY_CSI_PS('m',   12) : /* IGNORED: mapping related          */ break; //LINUX    case TY_CSI_PS('m',   22) : scr->resetRendition     (RE_BOLD     ); break;    case TY_CSI_PS('m',   24) : scr->resetRendition     (RE_UNDERLINE); break;    case TY_CSI_PS('m',   25) : scr->resetRendition     (RE_BLINK    ); break;    case TY_CSI_PS('m',   27) : scr->resetRendition     (RE_REVERSE  ); break;    case TY_CSI_PS('m',   30) : scr->setForeColor         (         0); break;    case TY_CSI_PS('m',   31) : scr->setForeColor         (         1); break;    case TY_CSI_PS('m',   32) : scr->setForeColor         (         2); break;    case TY_CSI_PS('m',   33) : scr->setForeColor         (         3); break;    case TY_CSI_PS('m',   34) : scr->setForeColor         (         4); break;    case TY_CSI_PS('m',   35) : scr->setForeColor         (         5); break;    case TY_CSI_PS('m',   36) : scr->setForeColor         (         6); break;    case TY_CSI_PS('m',   37) : scr->setForeColor         (         7); break;    case TY_CSI_PS('m',   39) : scr->setForeColorToDefault(          ); break;    case TY_CSI_PS('m',   40) : scr->setBackColor         (         0); break;    case TY_CSI_PS('m',   41) : scr->setBackColor         (         1); break;    case TY_CSI_PS('m',   42) : scr->setBackColor         (         2); break;    case TY_CSI_PS('m',   43) : scr->setBackColor         (         3); break;    case TY_CSI_PS('m',   44) : scr->setBackColor         (         4); break;    case TY_CSI_PS('m',   45) : scr->setBackColor         (         5); break;    case TY_CSI_PS('m',   46) : scr->setBackColor         (         6); break;    case TY_CSI_PS('m',   47) : scr->setBackColor         (         7); break;    case TY_CSI_PS('m',   49) : scr->setBackColorToDefault(          ); break;    case TY_CSI_PS('m',   90) : scr->setForeColor         (         8); break;    case TY_CSI_PS('m',   91) : scr->setForeColor         (         9); break;    case TY_CSI_PS('m',   92) : scr->setForeColor         (        10); break;    case TY_CSI_PS('m',   93) : scr->setForeColor         (        11); break;    case TY_CSI_PS('m',   94) : scr->setForeColor         (        12); break;    case TY_CSI_PS('m',   95) : scr->setForeColor         (        13); break;    case TY_CSI_PS('m',   96) : scr->setForeColor         (        14); break;    case TY_CSI_PS('m',   97) : scr->setForeColor         (        15); break;    case TY_CSI_PS('m',  100) : scr->setBackColor         (         8); break;    case TY_CSI_PS('m',  101) : scr->setBackColor         (         9); break;    case TY_CSI_PS('m',  102) : scr->setBackColor         (        10); break;    case TY_CSI_PS('m',  103) : scr->setBackColor         (        11); break;    case TY_CSI_PS('m',  104) : scr->setBackColor         (        12); break;    case TY_CSI_PS('m',  105) : scr->setBackColor         (        13); break;    case TY_CSI_PS('m',  106) : scr->setBackColor         (        14); break;    case TY_CSI_PS('m',  107) : scr->setBackColor         (        15); break;    case TY_CSI_PS('n',    5) :      reportStatus         (          ); break;    case TY_CSI_PS('n',    6) :      reportCursorPosition (          ); break;    case TY_CSI_PS('q',    0) : /* IGNORED: LEDs off                 */ break; //VT100    case TY_CSI_PS('q',    1) : /* IGNORED: LED1 on                  */ break; //VT100    case TY_CSI_PS('q',    2) : /* IGNORED: LED2 on                  */ break; //VT100    case TY_CSI_PS('q',    3) : /* IGNORED: LED3 on                  */ break; //VT100    case TY_CSI_PS('q',    4) : /* IGNORED: LED4 on                  */ break; //VT100    case TY_CSI_PS('x',    0) :      reportTerminalParms  (         2); break; //VT100    case TY_CSI_PS('x',    1) :      reportTerminalParms  (         3); break; //VT100    case TY_CSI_PN('@'      ) : scr->insertChars          (p         ); break;    case TY_CSI_PN('A'      ) : scr->cursorUp             (p         ); break; //VT100    case TY_CSI_PN('B'      ) : scr->cursorDown           (p         ); break; //VT100    case TY_CSI_PN('C'      ) : scr->cursorRight          (p         ); break; //VT100    case TY_CSI_PN('D'      ) : scr->cursorLeft           (p         ); break; //VT100    case TY_CSI_PN('G'      ) : scr->setCursorX           (p         ); break; //LINUX    case TY_CSI_PN('H'      ) : scr->setCursorYX          (p,       q); break; //VT100    case TY_CSI_PN('L'      ) : scr->insertLines          (p         ); break;    case TY_CSI_PN('M'      ) : scr->deleteLines          (p         ); break;    case TY_CSI_PN('P'      ) : scr->deleteChars          (p         ); break;    case TY_CSI_PN('X'      ) : scr->eraseChars           (p         ); break;    case TY_CSI_PN('c'      ) :      reportTerminalType   (          ); break; //VT100    case TY_CSI_PN('d'      ) : scr->setCursorY           (p         ); break; //LINUX    case TY_CSI_PN('f'      ) : scr->setCursorYX          (p,       q); break; //VT100    case TY_CSI_PN('r'      ) : scr->setMargins           (p,       q); break; //VT100    case TY_CSI_PN('y'      ) : /* IGNORED: Confidence test          */ break; //VT100    case TY_CSI_PR('h',    1) :          setMode      (MODE_AppCuKeys); break; //VT100    case TY_CSI_PR('l',    1) :        resetMode      (MODE_AppCuKeys); break; //VT100    case TY_CSI_PR('s',    1) :         saveMode      (MODE_AppCuKeys); break; //FIXME    case TY_CSI_PR('r',    1) :      restoreMode      (MODE_AppCuKeys); break; //FIXME    case TY_CSI_PR('l',    2) :        resetMode      (MODE_Ansi     ); break; //VT100    case TY_CSI_PR('h',    3) :      setColumns           (       132); break; //VT100    case TY_CSI_PR('l',    3) :      setColumns           (        80); break; //VT100    case TY_CSI_PR('h',    4) : /* IGNORED: soft scrolling           */ break; //VT100    case TY_CSI_PR('l',    4) : /* IGNORED: soft scrolling           */ break; //VT100    case TY_CSI_PR('h',    5) : scr->    setMode      (MODE_Screen   ); break; //VT100    case TY_CSI_PR('l',    5) : scr->  resetMode      (MODE_Screen   ); break; //VT100    case TY_CSI_PR('h',    6) : scr->    setMode      (MODE_Origin   ); break; //VT100    case TY_CSI_PR('l',    6) : scr->  resetMode      (MODE_Origin   ); break; //VT100    case TY_CSI_PR('s',    6) : scr->   saveMode      (MODE_Origin   ); break; //FIXME    case TY_CSI_PR('r',    6) : scr->restoreMode      (MODE_Origin   ); break; //FIXME    case TY_CSI_PR('h',    7) : scr->    setMode      (MODE_Wrap     ); break; //VT100    case TY_CSI_PR('l',    7) : scr->  resetMode      (MODE_Wrap     ); break; //VT100    case TY_CSI_PR('s',    7) : scr->   saveMode      (MODE_Wrap     ); break; //FIXME    case TY_CSI_PR('r',    7) : scr->restoreMode      (MODE_Wrap     ); break; //FIXME    case TY_CSI_PR('h',    8) : /* IGNORED: autorepeat on            */ break; //VT100    case TY_CSI_PR('l',    8) : /* IGNORED: autorepeat off           */ break; //VT100    case TY_CSI_PR('h',    9) : /* IGNORED: interlace                */ break; //VT100    case TY_CSI_PR('l',    9) : /* IGNORED: interlace                */ break; //VT100    case TY_CSI_PR('h',   25) :          setMode      (MODE_Cursor   ); break; //VT100    case TY_CSI_PR('l',   25) :        resetMode      (MODE_Cursor   ); break; //VT100    case TY_CSI_PR('h',   41) : /* IGNORED: obsolete more(1) fix     */ break; //XTERM    case TY_CSI_PR('l',   41) : /* IGNORED: obsolete more(1) fix     */ break; //XTERM    case TY_CSI_PR('s',   41) : /* IGNORED: obsolete more(1) fix     */ break; //XTERM    case TY_CSI_PR('r',   41) : /* IGNORED: obsolete more(1) fix     */ break; //XTERM    case TY_CSI_PR('h',   47) :          setMode      (MODE_AppScreen); break; //VT100    case TY_CSI_PR('l',   47) :        resetMode      (MODE_AppScreen); break; //VT100    case TY_CSI_PR('h', 1000) :          setMode      (MODE_Mouse1000); break; //XTERM    case TY_CSI_PR('l', 1000) :        resetMode      (MODE_Mouse1000); break; //XTERM    case TY_CSI_PR('s', 1000) :         saveMode      (MODE_Mouse1000); break; //XTERM    case TY_CSI_PR('r', 1000) :      restoreMode      (MODE_Mouse1000); break; //XTERM    case TY_CSI_PR('h', 1001) : /* IGNORED: hilite mouse tracking    */ break; //XTERM    case TY_CSI_PR('l', 1001) : /* IGNORED: hilite mouse tracking    */ break; //XTERM    case TY_CSI_PR('s', 1001) : /* IGNORED: hilite mouse tracking    */ break; //XTERM    case TY_CSI_PR('r', 1001) : /* IGNORED: hilite mouse tracking    */ break; //XTERM    case TY_CSI_PR('h', 1047) :          setMode      (MODE_AppScreen); break; //XTERM    case TY_CSI_PR('l', 1047) :        resetMode      (MODE_AppScreen); break; //XTERM    //FIXME: Unitoken: save translations    case TY_CSI_PR('h', 1048) :      saveCursor           (          ); break; //XTERM    case TY_CSI_PR('l', 1048) :      restoreCursor        (          ); break; //XTERM    //FIXME: every once in a while new sequences like this pop up in xterm.    //       Here's a guess of what they could mean.    case TY_CSI_PR('h', 1049) :          setMode      (MODE_AppScreen); break; //XTERM    case TY_CSI_PR('l', 1049) :        resetMode      (MODE_AppScreen); break; //XTERM    //FIXME: when changing between vt52 and ansi mode evtl do some resetting.    case TY_VT52__('A'      ) : scr->cursorUp             (         1); break; //VT52    case TY_VT52__('B'      ) : scr->cursorDown           (         1); break; //VT52    case TY_VT52__('C'      ) : scr->cursorRight          (         1); break; //VT52    case TY_VT52__('D'      ) : scr->cursorLeft           (         1); break; //VT52    case TY_VT52__('F'      ) :      setAndUseCharset     (0,     '0'); break; //VT52    case TY_VT52__('G'      ) :      setAndUseCharset     (0,     'B'); break; //VT52    case TY_VT52__('H'      ) : scr->setCursorYX          (1,1       ); break; //VT52    case TY_VT52__('I'      ) : scr->reverseIndex         (          ); break; //VT52    case TY_VT52__('J'      ) : scr->clearToEndOfScreen   (          ); break; //VT52    case TY_VT52__('K'      ) : scr->clearToEndOfLine     (          ); break; //VT52    case TY_VT52__('Y'      ) : scr->setCursorYX          (p-31,q-31 ); break; //VT52    case TY_VT52__('Z'      ) :      reportTerminalType   (          ); break; //VT52    case TY_VT52__('<'      ) :          setMode      (MODE_Ansi     ); break; //VT52    case TY_VT52__('='      ) :          setMode      (MODE_AppKeyPad); break; //VT52    case TY_VT52__('>'      ) :        resetMode      (MODE_AppKeyPad); break; //VT52    default : ReportErrorToken();    break;  };}/* ------------------------------------------------------------------------- *//*                                                                           *//*                          Terminal to Host protocol                        *//*                                                                           *//* ------------------------------------------------------------------------- *//*    Outgoing bytes originate from several sources:   - Replies to Enquiries.   - Mouse Events   - Keyboard Events*//**/void TEmuVt102::sendString(const char* s){  emit sndBlock(s,strlen(s));}// Replies ----------------------------------------------------------------- --// This section copes with replies sent as responses to an enquiry control code./**/void TEmuVt102::reportCursorPosition(){ char tmp[20];  sprintf(tmp,"\033[%d;%dR",scr->getCursorY()+1,scr->getCursorX()+1);  sendString(tmp);}/*   What follows here is rather obsolete and faked stuff.   The correspondent enquiries are nevertheless issued.*//**/void TEmuVt102::reportTerminalType(){//FIXME: should change?  if (getMode(MODE_Ansi))//  sendString("\033[?1;2c");     // I'm a VT100 with AP0 //FIXME: send only in response to ^[[0c    sendString("\033[>0;115;0c"); // I'm a VT220          //FIXME: send only in response to ^[[>c  else    sendString("\033/Z");         // I'm a VT52}void TEmuVt102::reportTerminalParms(int p)// DECREPTPARM{ char tmp[100];  sprintf(tmp,"\033[%d;1;1;112;112;1;0x",p); // not really true.  sendString(tmp);}

⌨️ 快捷键说明

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