#linux-terminal #terminal #linux #io #single-line #text-editing

bin+lib term-basics-linux

一个简单的crate,用于终端应用程序的基本功能

24个版本 (2个稳定版)

1.0.1 2024年5月24日
1.0.0 2023年11月28日
0.5.8 2022年11月18日
0.5.7 2021年9月12日
0.2.0 2019年7月12日

#154 in 命令行界面

Download history 1/week @ 2024-04-27 154/week @ 2024-05-18 22/week @ 2024-05-25 1/week @ 2024-06-01

1,579 每月下载次数

MIT 协议

24KB
465

term-basics-linux

Rust crate库,为Linux提供基本的终端输入功能。主要功能是单行输入字段。它支持使用退格和删除键编辑文本,以及使用home、end和箭头键进行导航。

print!("your input: ");
let input = tbl::input_field_simple(true);

它支持一系列预定义的输入列表,用户可以通过上下箭头滚动浏览

let mut his = tbl::InputList::new(2);
his.add("one");
his.add("two");
println!("{}", tbl::input_field_scrollable(&mut his, true));

您还可以隐藏/替换输入的字符。这对于密码输入很有用

// like doas/sudo
let pass = tbl::input_field(&mut tbl::InputList::new(0), tbl::PrintChar::None, true);
// like websites
let pass = tbl::input_field(&mut tbl::InputList::new(0), tbl::PrintChar::Substitute('*'), true);

另一个功能是 getch(),它从stdin返回字符,而无需用户按下回车。这很有用,但在rust中默认不可用。所有其他输入字段都使用此函数。

设计

这个crate的设计非常简约,只做了几件事。它只适用于Linux。这使其简单且轻量级。

键码

有时不同的终端仿真器为某些键使用不同的代码,如删除或end。例如,在suckless简单终端(ST)和vscode内置终端仿真器中,退格键都是127。但ST中的删除键是27-91-80,vscode中是27-91-51-126。ST中的end键是27-91-52-126,vscode中是27-91-70。test_chars函数可以帮助查找您平台上的键码。

许可证

Copyright (C) 2024 Cody Bloemhard

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

依赖

~0.4–1MB
~22K SLoC