1 个不稳定版本
0.1.0 | 2020年6月4日 |
---|
#535 in 命令行界面
45KB
638 行
terminal-input
跨终端精确解码修改键和其他输入事件。目前正在用于 csvsheet。
支持表格
terminal-input
尚未在 macOS 上进行测试,目前没有 Windows 支持。这些是期望的平台;如果您有能力测试或帮助移植到这些(和其他)操作系统,问题和拉取请求欢迎。
uxterm |
kitty |
urxvt |
gnome-terminal |
alacritty |
|
---|---|---|---|---|---|
Ctrl | 键盘仅 | 是 | 大多数字母,鼠标左键,滚动 | 大多数字母,所有鼠标 | 大多数字母,所有鼠标 |
Alt | 是 | 是 | 大多数字母,所有鼠标 | 所有字母,所有鼠标 | 所有字母,所有鼠标 |
Ctrl+Alt | 是 | 是 | 大多数字母,所有鼠标 | 所有字母,所有鼠标 | 所有字母,所有鼠标 |
Shift | 键盘仅 | 特殊字符仅 | 否 | 一些特殊字符仅 | 一些特殊字符仅 |
Ctrl+Shift | 键盘仅 | 键盘仅,通常仅释放? | 否,会与输入编码混淆 | 一些特殊字符仅,其他的是大写或 Ctrl,但不都是 | 一些特殊字符仅,其他的是大写或 Ctrl,但不都是 |
Alt+Shift | 键盘仅 | 是 | 否 | 鼠标右键,滚动 | 仅滚动 |
Ctrl+Alt+Shift | 键盘仅 | 键盘仅 | 否,会与输入编码混淆 | 鼠标右键,滚动 | 大写或 Ctrl,但不都是 |
按键释放 | 否 | 仅修改的 | 否 | 否 | 否 |
按键重复 | 否 | 否(BUG?) | 否 | 否 | 否 |
Ctrl+Delete | 是 | 是 | 是 | 是 | 是 |
Ctrl+Backspace | 看起来像 Backspace | 是 | 看起来像 \u{8} | 看起来像 Backspace | 看起来像 \u{8} |
Shift+Backspace | 看起来像 Shift+\u{8} | 是 | 看起来像 Backspace | 看起来像 Backspace | 看起来像 \u{8} |
Ctrl+H | 是 | 是 | 看起来像 \u{8} | 看起来像 Backspace | 看起来像 \u{8} |
Ctrl+I | 是 | 是 | 看起来像 Tab | 看起来像 Tab | 看起来像 Tab |
Ctrl+J | 是 | 是 | 看起来像 Enter | 看起来像 Enter | 看起来像 Enter |
Ctrl+M | 是 | 是 | 看起来像 Enter | 看起来像 Enter | 看起来像 Enter |
试试看!
cargo run --example event_viewer
event_viewer
示例允许您在交互式终端时查看 terminal-input
收到的哪些事件。要退出,请按 Ctrl+C
或 Ctrl+Q
。
ESCDELAY
terminal-input
目前默认在接收到 Escape 字符后等待 25 毫秒,以区分用户输入的 Escape 字符和终端生成的 Escape 序列。这比典型的 ncurses 值 1 秒低得多,这应该会提高响应速度,但可能会因为 Escape 序列被拆分和延迟而失败。然而,25 毫秒为这种延迟提供了一些余地。要修改此值,请使用 InputStream
上的 set_escdelay
方法,或作为用户设置 ESCDELAY
环境变量。
未来可能存在一种投机性的ESCDELAY模式,其中不明确的转义立即返回到应用程序,并伴随新的Checkpoint
事件。如果之后(在一定延迟内)输入表明该转义原本应该是转义序列的一部分,那么将发出一个Rollback
事件,应用程序应回到上次Checkpoint
发生时的状态。这将允许最大程度的响应性,同时在慢速连接中仍然可靠。
依赖项
~105–330KB