summaryrefslogtreecommitdiff
path: root/include/zmk/keymap.h
blob: e575774d095b991e81f8349f564fc96782408c50 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once

#include <devicetree.h>
#include <usb/usb_device.h>
#include <usb/class/usb_hid.h>
#include <dt-bindings/zmk/keys.h>

#include <zmk/matrix.h>
#include <zmk/keys.h>

#define ZMK_KEYMAP_NODE DT_CHOSEN(zmk_keymap)
#define ZMK_KEYMAP_LAYERS_LEN DT_PROP_LEN(ZMK_KEYMAP_NODE, layers)

#define _ZMK_LAYER_ENUM_ITEM(label) DT_CAT(label, _layer)

#define _ZMK_KEYMAP_GENERATE_LAYER_CONST(node_id) \
    _ZMK_LAYER_ENUM_ITEM(DT_NODELABEL(node_id)),

enum zmk_keymap_layer
{
    DT_FOREACH_CHILD(DT_INST(0, zmk_layers), _ZMK_KEYMAP_GENERATE_LAYER_CONST)
};

bool zmk_keymap_layer_activate(u8_t layer);
bool zmk_keymap_layer_deactivate(u8_t layer);

zmk_key
zmk_keymap_keycode_from_position(u32_t row, u32_t column);