1 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2021年8月6日 |
---|
#7 in #terminfo
每月51次 下载
60KB
1K SLoC
cx-terminfo
cx-terminfo 是一个几乎纯 Rust 的库,用于解析 terminfo 文件。无需其他 Rust 依赖。
用法
将此添加到您的 'Cargo.toml' 中
[dependencies]
cxterminfo = "*"
或者
[dependencies]
cxterminfo = { git = "https://github.com/bxinom/cx-terminfo" }
并将此添加到您的 crate 根目录
extern crate cxterminfo;
示例
加载默认的 terminfo 数据库
use cxterminfo::terminfo;
fn main() {
if Ok(info) = terminfo::from_env() {
// do whatever you want
}
}
标准功能
cx-terminfo 为功能提供了三个枚举(每个值都有文档说明)
cxterminfo::capabilities::BoolCapability // known bool capabilities
cxterminfo::capabilities::NumberCapability // known number capabilities
cxterminfo::capabilities::StringCapability // known string capabilities
如何获取功能值
use cxterminfo::terminfo;
use cxterminfo::capabilities::{BoolCapability, NumberCapability, StringCapability};
fn main() {
if Ok(info) = terminfo::from_env() {
println!("{:?}", info.get_bool(BoolCapability::AutoLeftMargin));
println!("{:?}", info.get_number(NumberCapability::MaxColors));
println!("{:?}", info.get_string(StringCapability::Bell));
}
}
扩展功能
use cxterminfo::terminfo;
fn main() {
if Ok(info) = terminfo::from_env() {
println!("{:?}", info.get_ext_bool("AT"));
println!("{:?}", info.get_ext_number("IDENT"));
println!("{:?}", info.get_ext_string("XM"));
}
}
参数化字符串
use cxterminfo::param_string::{evaluate, Param};
fn main() {
// Move cursor to location 10, 10
let param_str = "\x1B[%d;%dH";
if let Ok(move_cursor) = evaluate(param_str, &[Param::Number(10), Param::Number(10)]) {
println!("{:?}", move_cursor);
}
}
有关参数化字符串的更多信息,请参阅 terminfo(4) - 第1-2节
终端响应
要处理响应,请使用 sscanf 实现。