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

📄 terminalxterm.java

📁 一个非常好的ssh客户端实现
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
      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 + -