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)

MPL-2.0 许可证

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