1 个不稳定版本

使用旧的 Rust 2015

0.2.0 2021年8月6日

#7 in #terminfo

Download history · Rust 包仓库 51/week @ 2024-07-29 · Rust 包仓库

每月51次 下载

WTFPL 许可证

60KB
1K SLoC

cx-terminfo

WTFPL

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 实现。

许可证

WTFPL

无运行时依赖