kanata_parser/
sequences.rs1use kanata_keyberon::key_code::KeyCode;
2
3pub const MASK_KEYCODES: u16 = 0x03FF;
4pub const MASK_MODDED: u16 = 0xFC00;
5pub const KEY_OVERLAP: KeyCode = KeyCode::ErrorRollOver;
6pub const KEY_OVERLAP_MARKER: u16 = 0x0400;
7
8pub fn mod_mask_for_keycode(kc: KeyCode) -> u16 {
9 use KeyCode::*;
10 match kc {
11 LShift | RShift => 0x8000,
12 LCtrl | RCtrl => 0x4000,
13 LAlt => 0x2000,
14 RAlt => 0x1000,
15 LGui | RGui => 0x0800,
16 ErrorRollOver => KEY_OVERLAP_MARKER,
21 _ => 0,
22 }
23}
24
25#[test]
26fn keys_fit_within_mask() {
27 use crate::keys::OsCode;
28 assert!(MASK_KEYCODES >= u16::from(OsCode::KEY_MAX));
29}