Serialize modes

Fixes #3417
This commit is contained in:
Daniel Imms
2021-08-16 15:31:34 -07:00
parent bef865e196
commit 6c834aecb4
2 changed files with 84 additions and 0 deletions
@@ -403,6 +403,35 @@ export class SerializeAddon implements ITerminalAddon {
return handler.serialize(maxRows - correctRows, maxRows);
}
private _serializeModes(terminal: Terminal): string {
let content = '';
const modes = terminal.modes;
// Default: false
if (modes.applicationCursorKeysMode) content += '\x1b[?1h';
if (modes.applicationKeypadMode) content += '\x1b[?66h';
if (modes.bracketedPasteMode) content += '\x1b[?2004h';
if (modes.insertMode) content += '\x1b[4h';
if (modes.originMode) content += '\x1b[?6h';
if (modes.reverseWraparoundMode) content += '\x1b[?45h';
if (modes.sendFocusMode) content += '\x1b[?1004h';
// Default: true
if (modes.wraparoundMode === false) content += '\x1b[?7l';
// Default: 'none'
if (modes.mouseTrackingMode !== 'none') {
switch (modes.mouseTrackingMode) {
case 'x10': content += '\x1b[?9h'; break;
case 'vt200': content += '\x1b[?1000h'; break;
case 'drag': content += '\x1b[?1002h'; break;
case 'any': content += '\x1b[?1003h'; break;
}
}
return content;
}
public serialize(scrollback?: number): string {
// TODO: Add combinedData support
if (!this._terminal) {
@@ -418,6 +447,9 @@ export class SerializeAddon implements ITerminalAddon {
content += `\u001b[?1049h\u001b[H${alternativeScreenContent}`;
}
// Modes
content += this._serializeModes(this._terminal);
return content;
}