2 个不稳定版本

0.2.0 2023年11月13日
0.1.0 2023年11月11日

#611数据结构


keybindings-parser 中使用

MIT/Apache

650KB
18K SLoC

Keysymdefs

此crate提供从键符号代码到键符号的字符串表示以及相反的映射。

安装

cargo add keysymdefs

记录项

pub struct Item {
    name: &str,
    cleared_name: &str,
    keysym: u32,
    unicode: Option<u32>,
    desc: &str,
}

通过键符号获取记录

use keysymdefs::get_item_by_keysym;

fn get_item_by_keysym(keysym: u32) -> Option<&Item>

// e.g.
if let Some(key) = get_item_by_keysym(keys::XF86XK_AudioPlay) {
    println!("{}", key.keysym());       // 269025044
    println!("{}", key.name());         // XF86XK_AudioPlay
    println!("{}", key.cleared_name()); // AudioPlay
    println!("{}", key.desc());         // Start playing of audio
    println!("{}", key.unicode());      // None
    println!("{}", key.unicode_char()); // None

    assert_eq!(keys::XF86XK_AudioPlay, 269025044);
}

通过规范名称获取记录

fn get_item_by_name(name: &str) -> Option<&Item>

通过清除名称获取记录

截断的规范名称,没有 "XK_" 或 "XF86XK_" 前缀和中间的 "_"

fn get_item_by_cleared_name(name: &str) -> Option<&Item>

通过unicode获取记录

!警告! 注意,并非所有键都有unicode值

fn get_item_by_unicode(unicode: u32) -> Option<&Item>

模块 keysymdefs::keys

use keysymdefs::{keys, get_item_by_keysym};

println!("Keysym: {:x}", keys::XF86XK_AudioPlay);   // `0x1008ff14`

let item = get_item_by_keysym(keys::XF86XK_AudioPlay).unwrap();
println!("{}", item.name());                        // `XF86XK_AudioPlay`
println!("{}", item.cleared_name());                // `AudioPlay`

没有运行时依赖