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;
}
}
}