2 个不稳定版本
0.2.0 | 2023年11月13日 |
---|---|
0.1.0 | 2023年11月11日 |
#611 在 数据结构
在 keybindings-parser 中使用
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`