Skip to content

Add matrix_map and keymap/layers config proc-macro #571

@HaoboGu

Description

@HaoboGu

Now defining keymap and layout in Rust code is cumbersome. An approach is to reuse the matrix_map and layers parsing, add a proc-macro for defining keymap in Rust code, like:

// keymap.rs

const KEYMAP: [[[KeyAction; COL]; ROW]; NUM_LAYER] = keymap! {
    matrix_map: "
        (0,0) (0,1) (0,2)
        (1,0) (1,1) (1,2)
    ",

    layers: [
        {
            layer: 0,
            name: "base_layer",
            layout: "
                A B C
                D E F
            "
        },
        {
            layer: 1,
            name: "fn_layer",
            layout: "
                F1 F2 F3
                F4 F5 F6
            "
        }
    ]
}

// Alternative
const KEYMAP: [[[KeyAction; COL]; ROW]; NUM_LAYER] = keymap! {
    matrix_map: "
        (0,0) (0,1) (0,2)
        (1,0) (1,1) (1,2)
    "

    layer(layer = 0, name = "base_layer"): "
        A B C
        D E F
    "

    layer(layer = 1, name = "fn_layer"): "
        F1 F2 F3
        F4 F5 F6
    "
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions