use serde::{ Deserialize, Serialize };
use crate::key::KeyId;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Hash)]
pub enum TapKind {
VeryShort,
Short,
Normal,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Hash)]
pub enum Gesture {
Tap(TapKind),
DoubleTap,
TripleTap,
Hold,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct GestureEvent {
pub key: KeyId,
pub gesture: Gesture,
pub decided_at_ms: u64,
}
impl GestureEvent {
pub fn new<K: Into<KeyId>>(key: K, gesture: Gesture, decided_at_ms: u64) -> Self {
Self {
key: key.into(),
gesture,
decided_at_ms,
}
}
}