mod encoder;
mod key_action;
mod keyboard;
mod light;
pub use encoder::EncoderAction;
pub use key_action::KeyAction;
pub use keyboard::KeyboardAction;
pub use light::LightAction;
use postcard::experimental::max_size::MaxSize;
use serde::{Deserialize, Serialize};
use crate::keycode::{HidKeyCode, KeyCode, SpecialKey};
use crate::modifier::ModifierCombination;
#[cfg(feature = "steno")]
use crate::steno::StenoKey;
#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize, MaxSize)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[non_exhaustive]
#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))]
pub enum Action {
No,
Key(KeyCode),
Modifier(ModifierCombination),
KeyWithModifier(HidKeyCode, ModifierCombination),
LayerOn(u8),
LayerOnWithModifier(u8, ModifierCombination),
LayerOff(u8),
LayerToggle(u8),
DefaultLayer(u8),
LayerToggleOnly(u8),
TriLayerLower,
TriLayerUpper,
TriggerMacro(u8),
OneShotLayer(u8),
OneShotModifier(ModifierCombination),
OneShotKey(HidKeyCode),
Light(LightAction),
KeyboardControl(KeyboardAction),
Special(SpecialKey),
User(u8),
PersistentDefaultLayer(u8),
#[cfg(feature = "steno")]
Steno(StenoKey),
}