use crate::ModifiedKeySym;
use crate::keyboard::syms::KeySym;
use serde::Deserialize;
use serde::Serialize;
use std::ops::BitOr;
bitflags! {
#[derive(Serialize, Deserialize, Copy, Clone, Eq, PartialEq, Default, Hash)]
pub struct Modifiers(pub u32) {
pub const SHIFT = 1 << 0,
pub const LOCK = 1 << 1,
pub const CTRL = 1 << 2,
pub const MOD1 = 1 << 3,
pub const MOD2 = 1 << 4,
pub const MOD3 = 1 << 5,
pub const MOD4 = 1 << 6,
pub const MOD5 = 1 << 7,
pub const RELEASE = 1 << 31,
}
}
impl Modifiers {
pub const NONE: Self = Modifiers(0);
}
pub const CAPS: Modifiers = LOCK;
pub const ALT: Modifiers = MOD1;
pub const NUM: Modifiers = MOD2;
pub const LOGO: Modifiers = MOD4;
impl BitOr<KeySym> for Modifiers {
type Output = ModifiedKeySym;
fn bitor(self, rhs: KeySym) -> Self::Output {
ModifiedKeySym {
mods: self,
sym: rhs,
}
}
}