jay_config/keyboard/
mods.rs1use {
4 crate::{ModifiedKeySym, keyboard::syms::KeySym},
5 serde::{Deserialize, Serialize},
6 std::ops::BitOr,
7};
8
9bitflags! {
10 #[derive(Serialize, Deserialize, Copy, Clone, Eq, PartialEq, Default, Hash)]
12 pub struct Modifiers(pub u32) {
13 pub const SHIFT = 1 << 0,
15 pub const LOCK = 1 << 1,
17 pub const CTRL = 1 << 2,
19 pub const MOD1 = 1 << 3,
21 pub const MOD2 = 1 << 4,
23 pub const MOD3 = 1 << 5,
25 pub const MOD4 = 1 << 6,
27 pub const MOD5 = 1 << 7,
29
30 pub const RELEASE = 1 << 31,
34 }
35}
36
37impl Modifiers {
38 pub const NONE: Self = Modifiers(0);
40}
41
42pub const CAPS: Modifiers = LOCK;
44pub const ALT: Modifiers = MOD1;
46pub const NUM: Modifiers = MOD2;
48pub const LOGO: Modifiers = MOD4;
50
51impl BitOr<KeySym> for Modifiers {
52 type Output = ModifiedKeySym;
53
54 fn bitor(self, rhs: KeySym) -> Self::Output {
55 ModifiedKeySym {
56 mods: self,
57 sym: rhs,
58 }
59 }
60}