Cir*_*郝海东 4 terminal gnome-terminal
QEMU让我的终端处于一种奇怪的状态,我花了一段时间才最终将其调试到有问题的精确功能:tput smam
vs tput rmam
。
有没有办法检查当前的终端状态,希望一次性显示所有功能的当前值?
这将使我能够轻松区分工作终端和“损坏”终端,以找出修改的内容。
不过,找出任何特定功能的当前状态也是一个好的开始,例如smam
vs rmam
。
在 Ubuntu 19.10、Gnome 终端中测试。
这可能有效(VTE 实现了此控制的一部分):
\n\n\n \n\n\n\n请求 DEC 私有模式 (DECRQM)。对于 VT300 及更高版本,回复\n DECRPM 为
\n\n犯罪现场调查?附:下午$ y
\n\n其中 Ps 是 DECSET/DECSET 中的模式编号,Pm 是 ANSI DECRQM 中的模式值。
\n
具体来说,Ps为 7:
\n\n\n\n\nRun Code Online (Sandbox Code Playgroud)\nPs = 7 \xe2\x87\x92 Auto-wrap Mode (DECAWM), VT100.\n
它对应于终端描述中使用的设置:
\n\n\n\n\n\n
rmam=\\E[?7l,
\nsmam=\\E[?7h,
所以...你会做
\n\nprintf \'\\033[?7$p\'\n
Run Code Online (Sandbox Code Playgroud)\n\n并期待回来
\n\n\\033[?7;1$y\n
Run Code Online (Sandbox Code Playgroud)\n\n或者
\n\n\\033[?7;2$y\n
Run Code Online (Sandbox Code Playgroud)\n\n分别取决于模式是否被设置或重置。
\n\n这还假设您的脚本/程序正在从终端读取(不一定是标准输入)。xterm 的源代码中有几个测试/演示脚本,您可能会发现这些脚本很有用(尽管大多数脚本不适用于 VTE)。一般来说,我会使用vttest测试此功能,它已针对您使用的任何系统进行了打包。
\n