diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-10-04 12:22:35 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-10-04 12:22:35 +0000 |
commit | 27389dc7d4aacc15a6201621fb793b3e1027f46e (patch) | |
tree | c91ab0ac9447b25f91c05e901212c2142fb95953 /html/src/components/terminal/xterm/index.ts | |
parent | Adding upstream version 1.7.3. (diff) | |
download | ttyd-27389dc7d4aacc15a6201621fb793b3e1027f46e.tar.xz ttyd-27389dc7d4aacc15a6201621fb793b3e1027f46e.zip |
Adding upstream version 1.7.4.upstream/1.7.4
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'html/src/components/terminal/xterm/index.ts')
-rw-r--r-- | html/src/components/terminal/xterm/index.ts | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/html/src/components/terminal/xterm/index.ts b/html/src/components/terminal/xterm/index.ts index e6809e4..06d97ee 100644 --- a/html/src/components/terminal/xterm/index.ts +++ b/html/src/components/terminal/xterm/index.ts @@ -44,6 +44,7 @@ export interface ClientOptions { enableTrzsz: boolean; enableSixel: boolean; titleFixed?: string; + isWindows: boolean; } export interface FlowControl { @@ -94,7 +95,10 @@ export class Xterm { private writeFunc = (data: ArrayBuffer) => this.writeData(new Uint8Array(data)); - constructor(private options: XtermOptions, private sendCb: () => void) {} + constructor( + private options: XtermOptions, + private sendCb: () => void + ) {} dispose() { for (const d of this.disposables) { @@ -199,13 +203,13 @@ export class Xterm { terminal.write(data, () => { this.pending = Math.max(this.pending - 1, 0); if (this.pending < lowWater) { - this.socket?.send(textEncoder.encode(Command.PAUSE)); + this.socket?.send(textEncoder.encode(Command.RESUME)); } }); this.pending++; this.written = 0; if (this.pending > highWater) { - this.socket?.send(textEncoder.encode(Command.RESUME)); + this.socket?.send(textEncoder.encode(Command.PAUSE)); } } else { terminal.write(data); @@ -218,7 +222,10 @@ export class Xterm { if (socket?.readyState !== WebSocket.OPEN) return; if (typeof data === 'string') { - socket.send(textEncoder.encode(Command.INPUT + data)); + const payload = new Uint8Array(data.length * 3 + 1); + payload[0] = Command.INPUT.charCodeAt(0); + const stats = textEncoder.encodeInto(data, payload.subarray(1)); + socket.send(payload.subarray(0, (stats.written as number) + 1)); } else { const payload = new Uint8Array(data.length + 1); payload[0] = Command.INPUT.charCodeAt(0); @@ -320,6 +327,7 @@ export class Xterm { this.zmodemAddon = new ZmodemAddon({ zmodem: prefs.enableZmodem, trzsz: prefs.enableTrzsz, + windows: prefs.isWindows, onSend: this.sendCb, sender: this.sendData, writer: this.writeData, @@ -370,6 +378,9 @@ export class Xterm { this.titleFixed = value; document.title = value; break; + case 'isWindows': + if (value) console.log('[ttyd] is windows'); + break; default: console.log(`[ttyd] option: ${key}=${JSON.stringify(value)}`); if (terminal.options[key] instanceof Object) { |