#pragma once
#include "quantum.h"
#include "version.h"
#include "process_records.h"
#include "wrappers.h"
#ifdef TAP_DANCE_ENABLE
# include "tapdances.h"
#endif
#if defined(UNICODEMAP_ENABLE) || defined(UNICODE_ENABLE)
# include "unicode.h"
#endif
enum userspace_layers
{
_QWERTY,
_DVORAK,
_COLEMAK,
#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE)
_GREEK,
_RUSSIAN,
_RUNES,
_HIRA1,
_HIRA2,
#endif
_EDITOR,
_NUMBER,
_SYMBOL,
_F_KEYS,
_DEBUG,
_SECRET,
#if defined(MOUSEKEY_ENABLED)
_MOUSE,
#endif
_MEDIA,
_FINAL
};
#define LS(kc) MT(MOD_LSFT, KC_##kc)
#define LC(kc) MT(MOD_LCTL, KC_##kc)
#define LG(kc) MT(MOD_LGUI, KC_##kc)
#define LA(kc) MT(MOD_LALT, KC_##kc)
#define RS(kc) MT(MOD_RSFT, KC_##kc)
#define RC(kc) MT(MOD_RCTL, KC_##kc)
#define RG(kc) MT(MOD_RGUI, KC_##kc)
#define RA(kc) MT(MOD_RALT, KC_##kc)
#define ED(kc) LT(_EDITOR, KC_##kc)
#define NM(kc) LT(_NUMBER, KC_##kc)
#define SM(kc) LT(_SYMBOL, KC_##kc)
#define SC(kc) LT(_SECRET, KC_##kc)
#define FK(kc) LT(_F_KEYS, KC_##kc)
#define DB(kc) LT(_DEBUG, KC_##kc)
void matrix_init_keymap(void);
void matrix_scan_keymap(void);
void keyboard_post_init_keymap(void);
layer_state_t layer_state_set_keymap(layer_state_t state);