Skip to main content

rmk_q1_pro_iso/
keymap.rs

1//! Default keymap definitions and sizes.
2
3#![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
13/// Number of columns in the key matrix.
14pub const COL: usize = 16;
15/// Number of rows in the key matrix.
16pub const ROW: usize = 6;
17/// Number of supported layers.
18pub const NUM_LAYER: usize = 2;
19/// Number of rotary encoders.
20pub const NUM_ENCODER: usize = 1;
21
22#[rustfmt::skip]
23/// Return the default keymap for all layers.
24pub const fn get_default_keymap() -> [[[KeyAction; COL]; ROW]; NUM_LAYER] {
25    [
26        layer!(
27        // Layer 0: MAC_BASE
28        [
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!(Delete),    a!(No),   k!(AudioMute)],
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), a!(No),   k!(PageUp)],
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!(Enter),     a!(No),   k!(PageDown)],
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),       a!(No),           k!(Backslash), a!(No),   k!(Home)],
33            [k!(LShift),  k!(NonusBackslash), k!(Z),    k!(X),   k!(C),   k!(V),   k!(B),     k!(N),   k!(M),   k!(Comma), k!(Dot),       k!(Slash),       a!(No),           k!(RShift),    k!(Up),   a!(No)],
34            [k!(LCtrl),   k!(LAlt),           k!(LGui), a!(No),  a!(No),  a!(No),  k!(Space), df!(0),  df!(1),  a!(No),    k!(RGui),      k!(RAlt),        k!(RCtrl),        k!(Left),      k!(Down), k!(Right)]
35        ]),
36        layer!(
37        // Layer 1: WIN_BASE
38        [
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!(Delete),    a!(No),   k!(AudioMute)],
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), a!(No),   k!(PageUp)],
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!(Enter),     a!(No),   k!(PageDown)],
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),       a!(No),           k!(Backslash), a!(No),   k!(Home)],
43            [k!(LShift),  k!(NonusBackslash), k!(Z),    k!(X),   k!(C),   k!(V),   k!(B),     k!(N),   k!(M),   k!(Comma), k!(Dot),       k!(Slash),       a!(No),           k!(RShift),    k!(Up),   a!(No)],
44            [k!(LCtrl),   k!(LGui),           k!(LAlt), a!(No),  a!(No),  a!(No),  k!(Space), df!(0),  df!(1),  a!(No),    k!(RAlt),      k!(RGui),        k!(RCtrl),        k!(Left),      k!(Down), k!(Right)]
45        ]),
46    ]
47}
48
49#[rustfmt::skip]
50/// Return the default encoder action map for each layer.
51pub const fn get_default_encoder_map() -> [[EncoderAction; NUM_ENCODER]; NUM_LAYER] {
52    [
53        // Layer 0
54        [
55            // Encoder 0: (Clockwise, Counter-Clockwise)
56            encoder!(k!(KbVolumeUp), k!(KbVolumeDown)),
57        ],
58        // Layer 1
59        [
60            // Encoder 0: (Clockwise, Counter-Clockwise)
61            encoder!(k!(KbVolumeUp), k!(KbVolumeDown)),
62        ],
63    ]
64}