private boolean setModeOrPrivateMode()

in core/src/com/jediterm/terminal/emulator/JediEmulator.java [613:754]


  private boolean setModeOrPrivateMode(ControlSequence args, boolean enabled) {
    if (args.startsWithQuestionMark()) { // DEC Private Mode
      switch (args.getArg(0, -1)) {
        case 1: //Cursor Keys Mode (DECCKM)
          setModeEnabled(TerminalMode.CursorKey, enabled);
          return true;
        case 3: //132 Column Mode (DECCOLM)
          setModeEnabled(TerminalMode.WideColumn, enabled);
          return true;
        case 4: //Smooth (Slow) Scroll (DECSCLM)
          setModeEnabled(TerminalMode.SmoothScroll, enabled);
          return true;
        case 5: //Reverse Video (DECSCNM)
          setModeEnabled(TerminalMode.ReverseVideo, enabled);
          return true;
        case 6: //Origin Mode (DECOM)
          setModeEnabled(TerminalMode.OriginMode, enabled);
          return true;
        case 7: //Wraparound Mode (DECAWM)
          setModeEnabled(TerminalMode.AutoWrap, enabled);
          return true;
        case 8: //Auto-repeat Keys (DECARM)
          setModeEnabled(TerminalMode.AutoRepeatKeys, enabled);
          return true;
        case 12: //Start Blinking Cursor (att610)
          //setModeEnabled(TerminalMode.CursorBlinking, enabled);
          //We want to show blinking cursor always
          return true;
        case 25:
          setModeEnabled(TerminalMode.CursorVisible, enabled);
          return true;
        case 40: //Allow 80->132 Mode
          setModeEnabled(TerminalMode.AllowWideColumn, enabled);
          return true;
        case 45: //Reverse-wraparound Mode
          setModeEnabled(TerminalMode.ReverseWrapAround, enabled);
          return true;
        case 47:
        case 1047:
          setModeEnabled(TerminalMode.AlternateBuffer, enabled);
          return true;
        case 1048:
          setModeEnabled(TerminalMode.StoreCursor, enabled);
          return true;
        case 1049: //Save cursor and use Alternate Screen Buffer
          setModeEnabled(TerminalMode.StoreCursor, enabled);
          setModeEnabled(TerminalMode.AlternateBuffer, enabled);
          return true;
        case 1000:
          if (enabled) {
            setMouseMode(MouseMode.MOUSE_REPORTING_NORMAL);
          } else {
            setMouseMode(MouseMode.MOUSE_REPORTING_NONE);
          }
          return true;
        case 1001:
          if (enabled) {
            setMouseMode(MouseMode.MOUSE_REPORTING_HILITE);
          } else {
            setMouseMode(MouseMode.MOUSE_REPORTING_NONE);
          }
          return true;
        case 1002:
          if (enabled) {
            setMouseMode(MouseMode.MOUSE_REPORTING_BUTTON_MOTION);
          } else {
            setMouseMode(MouseMode.MOUSE_REPORTING_NONE);
          }
          return true;
        case 1003:
          if (enabled) {
            setMouseMode(MouseMode.MOUSE_REPORTING_ALL_MOTION);
          } else {
            setMouseMode(MouseMode.MOUSE_REPORTING_NONE);
          }
          return true;
        case 1004:
          // stub focus gained/lost events for now
          // https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
          return true;
        case 1005:
          if (enabled) {
            myTerminal.setMouseFormat(MouseFormat.MOUSE_FORMAT_XTERM_EXT);
          } else {
            myTerminal.setMouseFormat(MouseFormat.MOUSE_FORMAT_XTERM);
          }
          return true;
        case 1006:
          if (enabled) {
            myTerminal.setMouseFormat(MouseFormat.MOUSE_FORMAT_SGR);
          } else {
            myTerminal.setMouseFormat(MouseFormat.MOUSE_FORMAT_XTERM);
          }
          return true;
        case 1015:
          if (enabled) {
            myTerminal.setMouseFormat(MouseFormat.MOUSE_FORMAT_URXVT);
          } else {
            myTerminal.setMouseFormat(MouseFormat.MOUSE_FORMAT_XTERM);
          }
          return true;
        case 1034:
          setModeEnabled(TerminalMode.EightBitInput, enabled);
          return true;
        case 1039:
          setModeEnabled(TerminalMode.AltSendsEscape, enabled);
          return true;
        case 2004:
          setModeEnabled(TerminalMode.BracketedPasteMode, enabled);
          return true;
        case 2026:
          SynchronizedOutput syncOutput = new SynchronizedOutput(myDataStream, myTerminal);
          syncOutput.await();
          return true;
        case 9001:
          // suppress warnings about `win32-input-mode`
          // https://github.com/microsoft/terminal/blob/main/doc/specs/%234999%20-%20Improved%20keyboard%20handling%20in%20Conpty.md
          return true;
        default:
          return false;
      }
    } else {
      switch (args.getArg(0, -1)) {
        case 2: //Keyboard Action Mode (AM)
          setModeEnabled(TerminalMode.KeyboardAction, enabled);
          return true;
        case 4: //Insert Mode (IRM)
          setModeEnabled(TerminalMode.InsertMode, enabled);
          return true;
        case 12: //Send/receive (SRM)
          setModeEnabled(TerminalMode.SendReceive, enabled);
          return true;
        case 20:
          setModeEnabled(TerminalMode.AutoNewLine, enabled);
          return true;
        case 25:
          return true;
        default:
          return false;
      }
    }
  }