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