Просмотр исходного кода

add implicit cr and implicit lf for serial terminal similar to putty

ChangHwan Kim 2 лет назад
Родитель
Сommit
a8ef5963c3

+ 8 - 0
locale/ko-KR.po

@@ -916,6 +916,14 @@ msgstr "CRLF 강제"
 msgid "Force LF"
 msgstr "LF 강제"
 
+#: tabby-terminal/src/components/streamProcessingSettings.component.ts:56
+msgid "Implicit CR in every LF"
+msgstr "LF에만 CR 추가"
+
+#: tabby-terminal/src/components/streamProcessingSettings.component.ts:57
+msgid "Implicit LF in every CR"
+msgstr "CR에만 LF 추가"
+
 #: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:25
 msgid "Forces a specific SSH agent connection type."
 msgstr "특정 SSH 에이전트로 연결 유형 강제"

+ 2 - 0
tabby-terminal/src/components/streamProcessingSettings.component.ts

@@ -53,6 +53,8 @@ export class StreamProcessingSettingsComponent {
         { key: 'cr', name: _('Force CR') },
         { key: 'lf', name: _('Force LF') },
         { key: 'crlf', name: _('Force CRLF') },
+        { key: 'implicit_cr', name: _('Implicit CR in every LF') },
+        { key: 'implicit_lf', name: _('Implicit LF in every CR') },
     ]
 
     getInputModeName (key) {

+ 8 - 1
tabby-terminal/src/middleware/streamProcessing.ts

@@ -9,7 +9,7 @@ import { SessionMiddleware } from '../api/middleware'
 
 export type InputMode = null | 'local-echo' | 'readline' | 'readline-hex'
 export type OutputMode = null | 'hex'
-export type NewlineMode = null | 'cr' | 'lf' | 'crlf'
+export type NewlineMode = null | 'cr' | 'lf' | 'crlf' | 'implicit_cr' | 'implicit_lf'
 
 export interface StreamProcessingOptions {
     inputMode?: InputMode
@@ -134,6 +134,13 @@ export class TerminalStreamProcessor extends SessionMiddleware {
         if (!mode) {
             return data
         }
+        else if (mode == 'implicit_cr') {
+            return bufferReplace(data, '\n', '\r\n')
+        }
+        else if (mode == 'implicit_lf') {
+            return bufferReplace(data, '\r', '\r\n')
+        }
+
         data = bufferReplace(data, '\r\n', '\n')
         data = bufferReplace(data, '\r', '\n')
         const replacement = {