4个版本
0.6.1 | 2024年4月28日 |
---|---|
0.6.0 | 2024年3月5日 |
0.5.1 | 2023年11月9日 |
0.5.0 | 2023年10月24日 |
#1335 in 硬件支持
每月22次下载
在 2 个crate中使用 (通过 afrim)
57KB
721 行
Afrim Preprocessor
它生成一系列要执行特定任务的命令。
功能
- inhibit: 启用抑制模式。
- serde: 启用序列化和反序列化。
lib.rs
:
预处理输入法的键盘事件。
启用从输入法引擎中的键盘输入事件生成键盘事件响应。`afrim-preprocessor` crate建立在`afrim-memory
` crate之上。
示例
use afrim_preprocessor::{utils, Command, Preprocessor};
use keyboard_types::{
webdriver::{self, Event},
Key::*,
};
use std::{collections::VecDeque, rc::Rc};
// Prepares the memory.
let data = utils::load_data("cc ç");
let text_buffer = utils::build_map(data);
let memory = Rc::new(text_buffer);
// Builds the preprocessor.
let mut preprocessor = Preprocessor::new(memory, 8);
// Process an input.
let input = "cc";
webdriver::send_keys(input)
.into_iter()
.for_each(|event| {
match event {
// Triggers the generated keyboard input event.
Event::Keyboard(event) => preprocessor.process(event),
_ => unimplemented!(),
};
});
// Now let's look at the generated commands.
// The expected results without `inhibit` feature.
#[cfg(not(feature = "inhibit"))]
let mut expecteds = VecDeque::from(vec![
Command::Pause,
Command::Delete,
Command::Delete,
Command::CommitText("ç".to_owned()),
Command::Resume,
]);
// The expected results with `inhibit` feature.
#[cfg(feature = "inhibit")]
let mut expecteds = VecDeque::from(vec![
Command::Pause,
Command::Delete,
Command::Resume,
Command::Pause,
Command::Delete,
Command::CommitText("ç".to_owned()),
Command::Resume,
]);
// Verification.
while let Some(command) = preprocessor.pop_queue() {
assert_eq!(command, expecteds.pop_front().unwrap());
}
注意:处理非拉丁语言时。`inhibit` feature允许尽可能多地删除不需要的字符,通常是拉丁字符。
依赖项
~230–420KB