#tui #crossterm #key-input #termion #terminal #user-interface #input-event

crosstermion

crossterm 提供的实用程序,不与 termion 绑定

24 个版本 (13 个重大更改)

0.14.0 2024 年 2 月 3 日
0.13.0 2023 年 12 月 26 日
0.12.1 2023 年 12 月 7 日
0.11.0 2023 年 5 月 11 日
0.3.0 2020 年 7 月 22 日

#130命令行界面

Download history 2126/week @ 2024-04-29 2554/week @ 2024-05-06 1585/week @ 2024-05-13 1603/week @ 2024-05-20 1163/week @ 2024-05-27 1887/week @ 2024-06-03 932/week @ 2024-06-10 1554/week @ 2024-06-17 2704/week @ 2024-06-24 1523/week @ 2024-07-01 3130/week @ 2024-07-08 1580/week @ 2024-07-15 2224/week @ 2024-07-22 2485/week @ 2024-07-29 2782/week @ 2024-08-05 2183/week @ 2024-08-12

每月下载量 9,707
用于 10 个库3 个直接使用)

MIT 许可协议

20KB
297

Crosstermion 是一个实用程序库,用于统一某些类型的两个库,允许在 Unix 系统上轻松构建使用更精简的 termion 库的应用程序,但在 Windows 系统上则使用 crossterm。

目前提供的功能包括

  • 一个 Key 类型和一个 input_stream(异步)来接收按键
  • 一个 AltenrativeRawTerminal,它将替代屏幕与原始模式相结合
  • 创建一个使用 crossterm 或 termion 后端之一的 tuitui-react 终端的方式。

那么如何处理颜色和样式呢?

  • 使用 tui
    • 当使用 tui 时,您将获得对颜色和样式的本地跨后端支持。
  • 不使用 tui
    • 使用 color 功能,结合 ansi_term 提供额外的颜色实用程序。
    • 否则,使用 ansi_termcoloredtermcolor 将按预期工作。

如何在 Windows 上使用 crossterm 和在 Unix 上使用 termion 构建?

似乎没有简单的方法,因为 cargo 总是会构建依赖项,即使它们在您的平台上不应该被使用。这导致 termioncrossterm 都被构建,这在 Windows 上是致命的。因此,在创建发布构建时必须手动选择功能切换,即必须排除所有默认需要 TUI 的功能,并让用户启用他们需要的功能。

compile_error!() 可以用来通知用户是否需要选择功能。或者,确保即使在没有任何选定的后端的情况下也能成功编译。

最后,可以始终选择编译针对 crossterm

功能

所有功能都可以累加使用,但如果它们是互斥的,例如在 tui-reacttui,或者 crosstermtermion 的情况下,将选择更通用的一个。

  • 互斥
    • crossterm
      • 提供从 crossbeam::event::KeyEventKey 的转换支持以及一个 AlternativeRawTerminal
      • 提供线程化的键盘输入通道
      • 累加
        • input-async-crossterm
          • 通过 mio 无需启动额外线程即可将原生异步能力添加到 crossterm。
          • 请注意,线程化键盘输入始终受支持。
    • termion
      • 提供从 termion::event::KeyKey 的转换支持以及一个 AlternativeRawTerminal
      • 提供线程化的键盘输入通道
      • 累加
        • input-async
          • 启动一个线程,并通过 futures Stream 提供输入事件
          • 请注意,线程化键盘输入始终受支持。
  • 互斥
    • _using tui_ (互斥)
      • tui-termion 意味着 termion 功能
        • 结合 tuitermion,并提供一个具有 termion 后端的 tui::Terminal
      • tui-crossterm 意味着 crossterm 功能
        • 结合 tuicrossterm,并提供一个具有 crossterm 后端的 tui::Terminal
    • using tui-react (互斥)
      • tui-react-termion 意味着 termion 功能
        • 结合 tui-reactcrossterm,并提供一个具有 crossterm 后端的 tui::Terminal
      • tui-react-crossterm 意味着 crossterm 功能
        • 结合 tui-reactcrossterm,并提供一个具有 crossterm 后端的 tui::Terminal
  • 颜色
    • 添加基于 ansi_term 的条件着色支持。该包体积小,针对性强,支持零拷贝绘制字节和 UTF-8 字符串,同时支持 Windows 10。
  • 光标移动
    • 互斥
      • crossterm
        • 使用 crossterm 实现光标移动
      • termion
        • 使用 termion 实现光标移动

依赖关系

~0–12MB
~68K SLoC