pub mod tap_dance;
pub mod tap_hold;
pub mod tap_mod;
use crate::keys::KeyCode;
use crate::effects::Effect;
use serde::Deserialize;
pub use tap_dance::TapDanceMgr;
pub use tap_hold::TapHoldMgr;
pub use tap_mod::TapModMgr;
type TapEffect = Effect;
type HoldEffect = Effect;
type DanceEffect = Effect;
type ModiEffect = Effect;
type ModoEffect = Effect;
type Modifier = KeyCode;
type DanceLength = usize;
#[derive(Clone, Debug, PartialEq, Eq, Deserialize)]
pub enum Action {
Tap(Effect),
TapHold(TapEffect, HoldEffect),
TapDance(DanceLength, TapEffect, DanceEffect),
TapModi(Modifier, TapEffect, ModiEffect),
TapModo(Modifier, TapEffect, ModoEffect),
TildeEsc,
}