为什么终端仿真器不将tty-clock的换行符与隐式回车符匹配?

时间:2019-01-28 01:56:55

标签: terminal ansi terminal-emulator

我正在开发终端仿真器。到目前为止,许多软件都可以在其中运行,包括zsh和vim。

但是我不知道如何使tty-clock正常工作。使其呈现正确的唯一方法是在终端模拟器处理换行符时禁用隐式回车(即,将换行符视为仅将光标向下移动一行而不将其移动到第一列的命令)。

正在运行tty-clock > /tmp/x ...

以下是vim /tmp/x的输出:

[[?1049h^[[1;39r^[(B^[[m^[[4l^[[?7h^[[?1h^[[39;49m^[[?25l^[[39;49m^[(B^[[m^[[H^[[2J^[[H^[[2J^[[7;12H^[[H
^[[6G^[[42m
^H^H
^H^H
^H^H
^H^H  ^[[39;49m^[(B^[[m^[[2d ^[[42m
^H^H
^H^H
^H^H
^H^H  ^[[39;49m^[(B^[[m^[[2;21H^[[42m  ^[[39;49m^[(B^[[m  ^[[42m  ^[[3;17H  ^[[39;49m^[(B^[[m  ^[[42m  ^[[39;49m^[(B^[[m  ^[[42m
^[[21G      ^[[5;17H  ^[[25G
^H^H  ^[[39;49m^[(B^[[m^[[2d ^[[42m
^H^H
^H^H
^H^H
^H^H  ^[[39;49m^[(B^[[m^[[8;13H^[[32m2019-01-27^[[39;49m^[(B^[[m^[[6;8H^[[15G^[[6;27H^[[34G^[[8;23H^[[6;8H^[[15G^[[6;27H^[[34G^[[8;23H^[[39;1H^[[?12l^[[?25h^[[?1049l^M^[[?1l

以下是cat /tmp/x | hexdump -C的输出:

00000000  1b 5b 3f 31 30 34 39 68  1b 5b 31 3b 33 39 72 1b  |.[?1049h.[1;39r.|
00000010  28 42 1b 5b 6d 1b 5b 34  6c 1b 5b 3f 37 68 1b 5b  |(B.[m.[4l.[?7h.[|
00000020  3f 31 68 1b 5b 33 39 3b  34 39 6d 1b 5b 3f 32 35  |?1h.[39;49m.[?25|
00000030  6c 1b 5b 33 39 3b 34 39  6d 1b 28 42 1b 5b 6d 1b  |l.[39;49m.(B.[m.|
00000040  5b 48 1b 5b 32 4a 1b 5b  48 1b 5b 32 4a 1b 5b 37  |[H.[2J.[H.[2J.[7|
00000050  3b 31 32 48 1b 5b 48 0a  1b 5b 36 47 1b 5b 34 32  |;12H.[H..[6G.[42|
00000060  6d 20 20 0a 08 08 20 20  0a 08 08 20 20 0a 08 08  |m  ...  ...  ...|
00000070  20 20 0a 08 08 20 20 1b  5b 33 39 3b 34 39 6d 1b  |  ...  .[39;49m.|
00000080  28 42 1b 5b 6d 1b 5b 32  64 20 1b 5b 34 32 6d 20  |(B.[m.[2d .[42m |
00000090  20 20 20 20 20 0a 08 08  20 20 0a 08 08 20 20 0a  |     ...  ...  .|
000000a0  08 08 20 20 0a 08 08 20  20 1b 5b 33 39 3b 34 39  |..  ...  .[39;49|
000000b0  6d 1b 28 42 1b 5b 6d 1b  5b 32 3b 32 31 48 1b 5b  |m.(B.[m.[2;21H.[|
000000c0  34 32 6d 20 20 1b 5b 33  39 3b 34 39 6d 1b 28 42  |42m  .[39;49m.(B|
000000d0  1b 5b 6d 20 20 1b 5b 34  32 6d 20 20 1b 5b 33 3b  |.[m  .[42m  .[3;|
000000e0  31 37 48 20 20 1b 5b 33  39 3b 34 39 6d 1b 28 42  |17H  .[39;49m.(B|
000000f0  1b 5b 6d 20 20 1b 5b 34  32 6d 20 20 1b 5b 33 39  |.[m  .[42m  .[39|
00000100  3b 34 39 6d 1b 28 42 1b  5b 6d 20 20 1b 5b 34 32  |;49m.(B.[m  .[42|
00000110  6d 20 20 0a 1b 5b 32 31  47 20 20 20 20 20 20 1b  |m  ..[21G      .|
00000120  5b 35 3b 31 37 48 20 20  1b 5b 32 35 47 20 20 0a  |[5;17H  .[25G  .|
00000130  08 08 20 20 1b 5b 33 39  3b 34 39 6d 1b 28 42 1b  |..  .[39;49m.(B.|
00000140  5b 6d 1b 5b 32 64 20 1b  5b 34 32 6d 20 20 20 20  |[m.[2d .[42m    |
00000150  20 20 0a 08 08 20 20 0a  08 08 20 20 0a 08 08 20  |  ...  ...  ... |
00000160  20 0a 08 08 20 20 1b 5b  33 39 3b 34 39 6d 1b 28  | ...  .[39;49m.(|
00000170  42 1b 5b 6d 1b 5b 38 3b  31 33 48 1b 5b 33 32 6d  |B.[m.[8;13H.[32m|
00000180  32 30 31 39 2d 30 31 2d  32 37 1b 5b 33 39 3b 34  |2019-01-27.[39;4|
00000190  39 6d 1b 28 42 1b 5b 6d  1b 5b 36 3b 38 48 1b 5b  |9m.(B.[m.[6;8H.[|
000001a0  31 35 47 1b 5b 36 3b 32  37 48 1b 5b 33 34 47 1b  |15G.[6;27H.[34G.|
000001b0  5b 38 3b 32 33 48 1b 5b  36 3b 38 48 1b 5b 31 35  |[8;23H.[6;8H.[15|
000001c0  47 1b 5b 36 3b 32 37 48  1b 5b 33 34 47 1b 5b 38  |G.[6;27H.[34G.[8|
000001d0  3b 32 33 48 1b 5b 33 39  3b 31 48 1b 5b 3f 31 32  |;23H.[39;1H.[?12|
000001e0  6c 1b 5b 3f 32 35 68 1b  5b 3f 31 30 34 39 6c 0d  |l.[?25h.[?1049l.|
000001f0  1b 5b 3f 31 6c                                    |.[?1l|
000001f5

如果tty-clock具有非默认的linefeed mode,我会期望上述行为,但是据我所知,它不会发送任何转义序列来设置换行模式。

0 个答案:

没有答案