Fix terminal input modes persisting after ssh remote connection breaking
This commit is contained in:
@@ -200,7 +200,29 @@ class TerminalSession: NSObject, ObservableObject, LocalProcessDelegate, @precon
|
|||||||
// MARK: - LocalProcessDelegate
|
// MARK: - LocalProcessDelegate
|
||||||
|
|
||||||
nonisolated func processTerminated(_ source: LocalProcess, exitCode: Int32?) {
|
nonisolated func processTerminated(_ source: LocalProcess, exitCode: Int32?) {
|
||||||
Task { @MainActor in self.isRunning = false }
|
Task { @MainActor in
|
||||||
|
self.isRunning = false
|
||||||
|
self.resetTerminalModes()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private func resetTerminalModes() {
|
||||||
|
let resetSequences: [[UInt8]] = [
|
||||||
|
Array("\u{1b}[?9l".utf8),
|
||||||
|
Array("\u{1b}[?1000l".utf8),
|
||||||
|
Array("\u{1b}[?1002l".utf8),
|
||||||
|
Array("\u{1b}[?1003l".utf8),
|
||||||
|
Array("\u{1b}[?1006l".utf8),
|
||||||
|
Array("\u{1b}[?1015l".utf8),
|
||||||
|
Array("\u{1b}[?2004l".utf8),
|
||||||
|
Array("\u{1b}[?1l".utf8),
|
||||||
|
Array("\u{1b}[?1049l".utf8),
|
||||||
|
Array("\u{1b}[?25h".utf8),
|
||||||
|
]
|
||||||
|
|
||||||
|
for seq in resetSequences {
|
||||||
|
terminalView.feed(byteArray: seq[...])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nonisolated func dataReceived(slice: ArraySlice<UInt8>) {
|
nonisolated func dataReceived(slice: ArraySlice<UInt8>) {
|
||||||
|
|||||||
Reference in New Issue
Block a user