use rmk_macro::processor;
#[derive(Clone, Copy, Debug)]
pub struct KeyEvent {
pub row: u8,
pub col: u8,
pub pressed: bool,
}
#[derive(Clone, Copy, Debug)]
pub struct EncoderEvent {
pub index: u8,
pub direction: i8,
}
#[derive(Clone, Copy, Debug)]
pub struct ConfigEvent {
pub threshold: u16,
}
mod basic {
use super::{KeyEvent, processor};
#[processor(subscribe = [KeyEvent])]
pub struct SingleEventProcessor;
}
mod multi_sub {
use super::{EncoderEvent, KeyEvent, processor};
#[processor(subscribe = [KeyEvent, EncoderEvent])]
pub struct KeyProcessor;
}
mod polling {
use super::{ConfigEvent, processor};
#[processor(subscribe = [ConfigEvent], poll_interval = 100)]
pub struct PollingProcessor {
pub counter: u32,
}
}
mod multi_attr {
use super::{EncoderEvent, KeyEvent, processor};
#[processor(subscribe = [KeyEvent])]
#[processor(subscribe = [EncoderEvent])]
pub struct MultiAttrProcessor;
}
mod polling_multi {
use super::{ConfigEvent, EncoderEvent, KeyEvent, processor};
#[processor(subscribe = [KeyEvent, EncoderEvent, ConfigEvent], poll_interval = 50)]
pub struct MultiPollingProcessor {
pub state: u8,
}
}