Skip to main content

rmk_q6_he_ansi/
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 = 21;
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/// Return the default keymap for all layers.
23#[rustfmt::skip]
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!(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            // 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!(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/// Return the default encoder action map for each layer.
50#[rustfmt::skip]
51pub const fn get_default_encoder_map() -> [[EncoderAction; NUM_ENCODER]; NUM_LAYER] {
52    [
53        // Layer 0: MAC_BASE
54        [
55            // Encoder 0: (Clockwise, Counter-Clockwise)
56            encoder!(k!(KbVolumeUp), k!(KbVolumeDown)),
57        ],
58        // Layer 1:  WIN_BASE
59        [
60            // Encoder 0: (Clockwise, Counter-Clockwise)
61            encoder!(k!(KbVolumeUp), k!(KbVolumeDown)),
62        ],
63    ]
64}