如何从 xterm.js 获取 stty echo 模式?
How to get stty echo mode from xterm.js?
我希望能够知道 xterm.js 中回显模式何时关闭(例如,输入密码时)。 stty 可以报告和更改该信息,但(显然)不能在等待用户输入密码时执行。查询echo状态的API是什么?
在 linux、macos 和其他 POSIX 兼容操作系统下看到的终端指标是在终端接口部分指定的 POSIX 功能:
- https://en.wikipedia.org/wiki/POSIX_terminal_interface
- https://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap11.html
终端周围的许多设置(如 ECHO 模式)的有趣部分是 termios
API,您可以在 C 中使用 tcgetattr
/ tcsetattr
访问它在兼容的系统上。此外,许多语言为 API 提供某种绑定(例如 python 模块 termios
)。
可以在大多数 POSIX 系统上通过调用 man termios
或 man tcgetattr
访问文档。
来自网络的示例文档:
编辑:
重新阅读您的问题 - 如果您希望能够从 xterm.js 获取 ECHO 状态,那么这并不容易。这样做的原因很麻烦 - xterm.js 是 PTY 背后的模拟器。 PTY 将终端操作分为主控部分和从属部分,其中主控部分充当终端进程(此处为 xterm.js),从属部分是附加到该终端的进程。虽然 POSIX 只保证 termios
API 在从属部分工作(它的整个写作是为了消费进程),BSD 风格的系统也允许 termios
语义主要部分。
TL;DR: 在 linux 和 macOS 上,您可以在主 文件描述符上使用 termios
API 由您的 PTY 绑定持有(例如 node-pty
),而这仅适用于 solaris 克隆(或任何其他基于 STREAMS 的 TTY)下的从 文件描述符 实施)。
我希望能够知道 xterm.js 中回显模式何时关闭(例如,输入密码时)。 stty 可以报告和更改该信息,但(显然)不能在等待用户输入密码时执行。查询echo状态的API是什么?
在 linux、macos 和其他 POSIX 兼容操作系统下看到的终端指标是在终端接口部分指定的 POSIX 功能:
- https://en.wikipedia.org/wiki/POSIX_terminal_interface
- https://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap11.html
终端周围的许多设置(如 ECHO 模式)的有趣部分是 termios
API,您可以在 C 中使用 tcgetattr
/ tcsetattr
访问它在兼容的系统上。此外,许多语言为 API 提供某种绑定(例如 python 模块 termios
)。
可以在大多数 POSIX 系统上通过调用 man termios
或 man tcgetattr
访问文档。
来自网络的示例文档:
编辑:
重新阅读您的问题 - 如果您希望能够从 xterm.js 获取 ECHO 状态,那么这并不容易。这样做的原因很麻烦 - xterm.js 是 PTY 背后的模拟器。 PTY 将终端操作分为主控部分和从属部分,其中主控部分充当终端进程(此处为 xterm.js),从属部分是附加到该终端的进程。虽然 POSIX 只保证 termios
API 在从属部分工作(它的整个写作是为了消费进程),BSD 风格的系统也允许 termios
语义主要部分。
TL;DR: 在 linux 和 macOS 上,您可以在主 文件描述符上使用 termios
API 由您的 PTY 绑定持有(例如 node-pty
),而这仅适用于 solaris 克隆(或任何其他基于 STREAMS 的 TTY)下的从 文件描述符 实施)。