📄 terminalxterm.java
字号:
break; case CASE_ICH: if(DEBUG) System.out.println("ICH"); val = param[0]; if(val < 1) val = 1; term.insertChars(val); parseState = groundTable; break; case CASE_CPL: term.doCR(); // Fall through case CASE_CUU: if(DEBUG) System.out.println("CUU/CPL"); val = param[0]; if(val < 1) val = 1; term.cursorUp(val); parseState = groundTable; break; case CASE_CNL: term.doCR(); // Fall through case CASE_CUD: if(DEBUG) System.out.println("CUD/CNL"); val = param[0]; if(val < 1) val = 1; term.cursorDown(val); parseState = groundTable; break; case CASE_CUF: if(DEBUG) System.out.println("CUF"); val = param[0]; if(val < 1) val = 1; term.cursorForward(val); parseState = groundTable; break; case CASE_CUB: if(DEBUG) System.out.println("CUB"); val = param[0]; if(val < 1) val = 1; term.cursorBackward(val); parseState = groundTable; break; case CASE_CUP: if(DEBUG) System.out.println("CUP"); v = param[0]; h = param[1]; if(v < 1) v = 1; if(nparam < 2 || h < 1) h = 1; term.cursorSetPos(v - 1, h - 1, windowRelative); parseState = groundTable; break; case CASE_ED: if(DEBUG) System.out.println("ED"); switch(param[0]) { case PARAMNOTUSED: case 0: term.clearBelow(); break; case 1: term.clearAbove(); break; case 2: term.clearScreen(); term.cursorSetPos(0, 0, windowRelative); break; } parseState = groundTable; break; case CASE_EL: if(DEBUG) System.out.println("EL"); switch(param[0]) { case PARAMNOTUSED: case 0: term.clearRight(); break; case 1: term.clearLeft(); break; case 2: term.clearLine(); break; } parseState = groundTable; break; case CASE_IL: if(DEBUG) System.out.println("IL"); val = param[0]; if(val < 1) val = 1; term.insertLines(val); parseState = groundTable; break; case CASE_DL: if(DEBUG) System.out.println("DL"); val = param[0]; if(val < 1) val = 1; term.deleteLines(val); parseState = groundTable; break; case CASE_DCH: if(DEBUG) System.out.println("DCH"); val = param[0]; if(val < 1) val = 1; term.deleteChars(val); parseState = groundTable; break; case CASE_DECID: if(DEBUG) System.out.println("DECID"); param[0] = PARAMNOTUSED; // Fall through case CASE_DA1: if(DEBUG) System.out.println("DA1"); reply = replyTypes[R_CSI] + "?1;2c"; term.sendBytes(reply.getBytes()); parseState = groundTable; break; case CASE_TRACK_MOUSE: if(DEBUGNOTIMPL) notImplemented("TRACK_MOUSE"); break; case CASE_TBC: if(DEBUG) System.out.println("TBC " + "(" + term.getCursorH() + ")"); if(param[0] <= 0) { term.clearTab(term.getCursorH()); } else if(param[0] == 3) { term.clearAllTabs(); } parseState = groundTable; break; case CASE_SET: if(DEBUG) System.out.println("SET"); ansiModes(true); parseState = groundTable; break; case CASE_RST: if(DEBUG) System.out.println("RST"); ansiModes(false); parseState = groundTable; break; case CASE_SGR: if(DEBUG) System.out.println("SGR"); sgrModes(); parseState = groundTable; break; case CASE_CPR: if(DEBUG) System.out.println("CPR"); reply = null; if(param[0] == 5) reply = replyTypes[R_CSI] + "0n"; else if(param[0] == 6) reply = replyTypes[R_CSI] + (term.getCursorV() + 1) + ";" + (term.getCursorH() + 1) + "R"; if(reply != null) term.sendBytes(reply.getBytes()); parseState = groundTable; break; case CASE_DECSTBM: if(DEBUG) System.out.println("DECSTBM"); int top = param[0]; int bot = param[1]; if(top < 1) top = 1; if(nparam < 2 || bot == PARAMNOTUSED || bot == 0 || bot > term.rows()) bot = term.rows(); if(bot > top) { term.setWindow(top - 1, bot); term.cursorSetPos(0, 0, windowRelative); } parseState = groundTable; break; case CASE_DECREQTPARM: if(DEBUG) System.out.println("DECREQTPARM"); if(param[0] == PARAMNOTUSED || param[0] == 1 || param[0] == 0) reply = (replyTypes[R_CSI] + String.valueOf((term.getCursorV() + 2)) + ";1;1;112;112;1;0x"); if(reply != null) term.sendBytes(reply.getBytes()); parseState = groundTable; break; case CASE_DECSET: if(DEBUG) System.out.println("DECSET"); dpModes(true); parseState = groundTable; break; case CASE_DECRST: if(DEBUG) System.out.println("DECRST"); dpModes(false); parseState = groundTable; break; case CASE_DECALN: if(DEBUGNOTIMPL) notImplemented("DECALN"); parseState = groundTable; break; case CASE_GSETS: if(DEBUG) System.out.println("GSETS: '" + c + "'"); gSets[scsType] = c; parseState = groundTable; break; case CASE_DECSC: if(DEBUG) System.out.println("DECSC"); term.cursorSave(); curGLDECSC = curGL; System.arraycopy(gSets, 0, gSetsDECSC, 0, 4); parseState = groundTable; break; case CASE_DECRC: if(DEBUG) System.out.println("DECRC"); term.cursorRestore(); curGL = curGLDECSC; System.arraycopy(gSetsDECSC, 0, gSets, 0, 4); parseState = groundTable; break; case CASE_DECKPAM: if(DEBUG) System.out.println("DECKPAM"); keypadAppl = true; parseState = groundTable; break; case CASE_DECKPNM: if(DEBUG) System.out.println("DECKPNM"); keypadAppl = false; parseState = groundTable; break; case CASE_IND: term.cursorIndex(1); parseState = groundTable; break; case CASE_NEL: if(DEBUG) System.out.println("NEL"); term.cursorIndex(1); term.doCR(); parseState = groundTable; break; case CASE_HTS: if(DEBUG) System.out.println("HTS (" + term.getCursorH() + ")"); term.setTab(term.getCursorH()); parseState = groundTable; break; case CASE_RI: if(DEBUG) System.out.println("RI"); term.cursorIndexRev(1); parseState = groundTable; break; case CASE_SS2: curSS = 2; parseState = groundTable; break; case CASE_SS3: curSS = 3; parseState = groundTable; break; case CASE_CSI_STATE: if(DEBUG) System.out.println("CSI_STATE"); param[0] = PARAMNOTUSED; nparam = 1; parseState = csiTable; break; case CASE_OSC: param[0] = PARAMNOTUSED; nparam = 1; parseState = oscTable; break; case CASE_RIS: if(DEBUG) System.out.println("RIS"); vtReset(); parseState = groundTable; break; case CASE_LS2: if(DEBUG) System.out.println("SI(curGL = 2)"); curGL = 2; parseState = groundTable; break; case CASE_LS3: if(DEBUG) System.out.println("SI(curGL = 3)"); curGL = 3; parseState = groundTable; break; case CASE_LS3R: if(DEBUGNOTIMPL) notImplemented("LS3R"); parseState = groundTable; break; case CASE_LS2R: if(DEBUGNOTIMPL) notImplemented("LS2R"); parseState = groundTable; break; case CASE_LS1R: if(DEBUGNOTIMPL) notImplemented("LS1R"); parseState = groundTable; break; case CASE_XTERM_SAVE: xtermSavemodes(); parseState = groundTable; break; case CASE_XTERM_RESTORE: xtermRestoremodes(); parseState = groundTable; break; case CASE_XTERM_TITLE: if(DEBUGNOTIMPL) notImplemented("XTERM_TITLE"); break; case CASE_HP_MEM_LOCK: if(DEBUGNOTIMPL) notImplemented("HP_MEM_LOCK"); parseState = groundTable; break; case CASE_HP_MEM_UNLOCK: if(DEBUGNOTIMPL) notImplemented("HP_MEM_UNLOCK"); parseState = groundTable; break; case CASE_HP_BUGGY_LL: if(DEBUGNOTIMPL) notImplemented("HP_BUGGY_LL"); parseState = groundTable; break; case CASE_XTERM_SEQ: if(DEBUG) System.out.println("XTERM_SEQ"); xtermModes(); parseState = groundTable; break; case CASE_SEQ_CAPTURE: if(DEBUG) System.out.println("XTERM_SEQ_CAP" + c); xtermSeq += c; break; case CASE_ENQ: term.sendBytes(terminalType().getBytes()); break; case CASE_XTERMWIN: xtermWinCtrl(); parseState = groundTable; case CASE_CHT: if(DEBUG) System.out.println("CHT"); val = param[0]; if(val == PARAMNOTUSED) val = 1; term.doTabs(val); parseState = groundTable; break; case CASE_SU: if(DEBUG) System.out.println("SU"); val = param[0]; if(val == PARAMNOTUSED) val = 1; term.scrollUp(val); parseState = groundTable; break; case CASE_SD: if(DEBUG) System.out.println("SD"); val = param[0]; if(val == PARAMNOTUSED) val = 1; term.scrollDown(val); parseState = groundTable; break; case CASE_ECH: if(DEBUG) System.out.println("ECH"); val = param[0]; if(val == PARAMNOTUSED) val = 1; term.eraseChars(val); parseState = groundTable; break; case CASE_CBT: if(DEBUG) System.out.println("CBT"); val = param[0]; if(val == PARAMNOTUSED) val = 1; term.doBackTabs(val); parseState = groundTable; break; case CASE_CHA: case CASE_HPA: if(DEBUG) System.out.println("HPA/CHA"); h = param[0]; if(h < 1) h = 1; term.cursorSetPos(term.getCursorV(), h - 1, false); parseState = groundTable; break; case CASE_REP: if(DEBUGNOTIMPL) notImplemented("REP"); parseState = groundTable; break; case CASE_VPA: if(DEBUG) System.out.println("VPA"); v = param[0]; if(v < 1) v = 1; term.cursorSetPos(v - 1, term.getCursorH(), false); parseState = groundTable; break; case CASE_ANSI_PRINTER: if(DEBUG) System.out.println("ANSI_PRINTER"); val = param[0]; if(val == PARAMNOTUSED) val = 0; ansiPrinterCtrl(val); parseState = groundTable; break; default: if(DEBUGNOTIMPL) System.out.println("** Unknown state !!!"); break; } return IGNORE; } protected void ansiModes(boolean set) { for(int i = 0; i < nparam; i++) { switch(param[i]) { case 2: if(DEBUGNOTIMPL) notImplemented("ANSI_AM"); break; case 4: if(DEBUG) System.out.println("IRM " + set); term.setOption(Terminal.OPT_INSERTMODE, set); break; case 12: if(DEBUGNOTIMPL) notImplemented("ANSI_SRM"); break; case 20: if(DEBUG) System.out.println("LNM"); term.setOption(Terminal.OPT_AUTO_LF, set); break; default: if(DEBUGNOTIMPL) notImplemented("ansi-mode: " + param[i] + "(" + set + ")"); } } } protected void sgrModes() { for(int i = 0; i < nparam; i++) { switch(param[i]) { case PARAMNOTUSED: case 0: term.clearAllAttributes(); break; case 1: case 5: // !!! Should be Hilite/blinking... term.setAttribute(Terminal.ATTR_BOLD, true); break; case 4: term.setAttribute(Terminal.ATTR_UNDERLINE, true); break; case 7: term.setAttribute(Terminal.ATTR_INVERSE, true); break; case 8: if(DEBUGNOTIMPL) notImplemented("SGR invisible"); break; case 22: term.setAttribute(Terminal.ATTR_BOLD, false); break; case 24: term.setAttribute(Terminal.ATTR_UNDERLINE, false); break; case 25: term.setAttribute(Terminal.ATTR_BOLD, false); // !!! Actually no-blink
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -