1#![expect(clippy::min_ident_chars, reason = "RMK-side implementation")]
4use rmk::{
5 a,
6 df,
7 encoder,
8 k,
9 layer,
10 types::action::{EncoderAction, KeyAction},
11};
12
13pub const COL: usize = 21;
15pub const ROW: usize = 6;
17pub const NUM_LAYER: usize = 2;
19pub const NUM_ENCODER: usize = 1;
21
22#[rustfmt::skip]
24pub const fn get_default_keymap() -> [[[KeyAction; COL]; ROW]; NUM_LAYER] {
25 [
26 layer!(
27 [
29 [k!(Escape), k!(F1), k!(F2), k!(F3), k!(F4), k!(F5), k!(F6), k!(F7), k!(F8), k!(F9), k!(F10), k!(F11), k!(F12), k!(AudioMute), k!(PrintScreen), k!(ScrollLock), k!(Pause), k!(F13), k!(F14), k!(F15), k!(F16)],
30 [k!(Grave), k!(Kc1), k!(Kc2), k!(Kc3), k!(Kc4), k!(Kc5), k!(Kc6), k!(Kc7), k!(Kc8), k!(Kc9), k!(Kc0), k!(Minus), k!(Equal), k!(Backspace), k!(Insert), k!(Home), k!(PageUp), k!(NumLock), k!(KpSlash), k!(KpAsterisk), k!(KpMinus)],
31 [k!(Tab), k!(Q), k!(W), k!(E), k!(R), k!(T), k!(Y), k!(U), k!(I), k!(O), k!(P), k!(LeftBracket), k!(RightBracket), k!(Backslash), k!(Delete), k!(End), k!(PageDown), k!(Kp7), k!(Kp8), k!(Kp9), k!(KpPlus)],
32 [k!(CapsLock), k!(A), k!(S), k!(D), k!(F), k!(G), k!(H), k!(J), k!(K), k!(L), k!(Semicolon), k!(Quote), k!(Enter), a!(No), a!(No), a!(No), a!(No), k!(Kp4), k!(Kp5), k!(Kp6), a!(No)],
33 [k!(LShift), a!(No), k!(Z), k!(X), k!(C), k!(V), k!(B), k!(N), k!(M), k!(Comma), k!(Dot), k!(Slash), a!(No), k!(RShift), a!(No), k!(Up), a!(No), k!(Kp1), k!(Kp2), k!(Kp3), k!(KpEnter)],
34 [k!(LCtrl), k!(LAlt), k!(LGui), a!(No), a!(No), a!(No), k!(Space), df!(0), df!(1), k!(RGui), k!(RAlt), k!(Menu), k!(RCtrl), a!(No), k!(Left), k!(Down), k!(Right), k!(Kp0), k!(KpDot), a!(No), a!(No)]
35 ]),
36 layer!(
37 [
39 [k!(Escape), k!(F1), k!(F2), k!(F3), k!(F4), k!(F5), k!(F6), k!(F7), k!(F8), k!(F9), k!(F10), k!(F11), k!(F12), k!(AudioMute), k!(PrintScreen), k!(ScrollLock), k!(Pause), k!(F13), k!(F14), k!(F15), k!(F16)],
40 [k!(Grave), k!(Kc1), k!(Kc2), k!(Kc3), k!(Kc4), k!(Kc5), k!(Kc6), k!(Kc7), k!(Kc8), k!(Kc9), k!(Kc0), k!(Minus), k!(Equal), k!(Backspace), k!(Insert), k!(Home), k!(PageUp), k!(NumLock), k!(KpSlash), k!(KpAsterisk), k!(KpMinus)],
41 [k!(Tab), k!(Q), k!(W), k!(E), k!(R), k!(T), k!(Y), k!(U), k!(I), k!(O), k!(P), k!(LeftBracket), k!(RightBracket), k!(Backslash), k!(Delete), k!(End), k!(PageDown), k!(Kp7), k!(Kp8), k!(Kp9), k!(KpPlus)],
42 [k!(CapsLock), k!(A), k!(S), k!(D), k!(F), k!(G), k!(H), k!(J), k!(K), k!(L), k!(Semicolon), k!(Quote), k!(Enter), a!(No), a!(No), a!(No), a!(No), k!(Kp4), k!(Kp5), k!(Kp6), a!(No)],
43 [k!(LShift), a!(No), k!(Z), k!(X), k!(C), k!(V), k!(B), k!(N), k!(M), k!(Comma), k!(Dot), k!(Slash), a!(No), k!(RShift), a!(No), k!(Up), a!(No), k!(Kp1), k!(Kp2), k!(Kp3), k!(KpEnter)],
44 [k!(LCtrl), k!(LGui), k!(LAlt), a!(No), a!(No), a!(No), k!(Space), df!(0), df!(1), k!(RAlt), k!(RGui), k!(Menu), k!(RCtrl), a!(No), k!(Left), k!(Down), k!(Right), k!(Kp0), k!(KpDot), a!(No), a!(No)]
45 ]),
46 ]
47}
48
49#[rustfmt::skip]
51pub const fn get_default_encoder_map() -> [[EncoderAction; NUM_ENCODER]; NUM_LAYER] {
52 [
53 [
55 encoder!(k!(KbVolumeUp), k!(KbVolumeDown)),
57 ],
58 [
60 encoder!(k!(KbVolumeUp), k!(KbVolumeDown)),
62 ],
63 ]
64}