#mouse #escaping #key-input #ctrl #input-event #ansi #curses

terminal-input

跨终端精确解码修改键和其他输入事件

1 个不稳定版本

0.1.0 2020年6月4日

#535 in 命令行界面

MIT 许可证

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+CCtrl+Q

ESCDELAY

terminal-input 目前默认在接收到 Escape 字符后等待 25 毫秒,以区分用户输入的 Escape 字符和终端生成的 Escape 序列。这比典型的 ncurses 值 1 秒低得多,这应该会提高响应速度,但可能会因为 Escape 序列被拆分和延迟而失败。然而,25 毫秒为这种延迟提供了一些余地。要修改此值,请使用 InputStream 上的 set_escdelay 方法,或作为用户设置 ESCDELAY 环境变量。

未来可能存在一种投机性的ESCDELAY模式,其中不明确的转义立即返回到应用程序,并伴随新的Checkpoint事件。如果之后(在一定延迟内)输入表明该转义原本应该是转义序列的一部分,那么将发出一个Rollback事件,应用程序应回到上次Checkpoint发生时的状态。这将允许最大程度的响应性,同时在慢速连接中仍然可靠。

依赖项

~105–330KB