【问题标题】:terminfo for windows console that is using read(stdin) for input使用 read(stdin) 进行输入的 Windows 控制台的 terminfo
【发布时间】:2017-06-16 18:51:23
【问题描述】:

我正在编写一个应用程序,它通过自定义套接字从 Windows 控制台连接到 Linux 机器,我需要通过 TERM 环境变量告诉 Linux 机器我的控制台能够做什么。现在我设置了TERM=dumb,但它太有限了。特别是我需要 Linux 方面知道:

  1. 我正在使用标准输入从标准输入读取输入,因此没有传递 ESC、F1 和箭头(但 TAB 是)
  2. Windows 控制台具有自动换行功能
  3. 无法处理 ANSI 颜色序列
  4. 可以处理回车来绘制进度条

terminfo 数据库中是否有适用于此类 Windows 控制台的良好配置文件? 当我的应用最终识别 ANSI 颜色时,是否可以使用扩展配置文件?

更新:有人投票以too broad 结束此问题,因此我将问题编辑为非常具体地涉及应反映在terminfo 条目中的Windows 控制台功能。

【问题讨论】:

  • 您是否寻找过通过控制台 API 实现 VT100 仿真的库,例如 PDCurses 如何实现curses?我不知道有一个,至少对于 C/C++ 来说不是。您还可以在 Windows 10 中支持控制台的 virtual terminal mode,并在 ANSICON 或 ConEmu 下运行时检测 VT100/ANSI 支持。
  • @eryksun 我实际上是为 Go 做的 - github.com/lxc/lxd/issues/1317 - 但现在我希望像 apt update 这样的命令能够正确识别终端宽度并使用回车来绘制进度条。跨度>
  • 您的问题基本上是在问如何编写自定义终端描述(教程离题)。

标签: windows-console terminfo


【解决方案1】:

版本 10 中的 Windows 控制台和 Windows 终端功能更加强大。有了这些,你也许可以摆脱TERM=xterm-256color

对于旧版本,可能首先考虑加载 ANSICON。这增加了坚实的 8 色支持。否则尝试一个简单的术语定义,例如下面不支持颜色的那些:

  • glasstty 超级简单,略高于哑巴
  • interix "nt 控制台"
  • pcansi
  • ansi77

【讨论】:

  • interixpcansi 的终端描述表明该终端支持 8 种 ANSI 颜色。 Windows 终端与xterm-256color 不是很接近。
  • 实际上,您可以在 Windows 终端中非常多地使用 xterm-256color,这实际上是对 conhost 以及远程连接的推荐。如果您使用echo $TERM,它会将自己报告为 xterm-256color。
猜你喜欢
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 2012-12-21
  • 2012-03-04
  • 2011-01-15
相关资源
最近更新 更多