#pragma once
#include QMK_KEYBOARD_H
enum userspace_mode {
MAC = 0,
WINDOWS,
MAC_UNI,
WINDOWS_UNI,
LINUX_UNI,
};
enum userspace_keycodes {
RV_NON = SAFE_RANGE,
RV_SM0, RV_SM1, RV_SM2, RV_SM3, RV_SM4, RV_SM0S, RV_SM1S, RV_SM2S, RV_SM3S, RV_SM4S, RV_SAYM, RV_LOCK, RV_AUML, RV_OUML, RV_UUML, RV_EUR, RV_SZ, RV_TM, RV_RT, RV_CC, RV_DEG, RV_SNAP, RV_PM, RV_UNEQ, RV_SUP1, RV_SUP2, RV_SUP3,
};
typedef union {
uint32_t raw;
struct {
bool mode_1 : 1;
bool mode_2 : 1;
bool mode_3 : 1;
};
} userspace_config_t;
extern userspace_config_t userspace_config;
uint8_t get_mode(void);
void set_mode(uint8_t mode, bool save);
void switch_mode(uint8_t mode);
bool is_unicode(uint8_t mode);
void keyboard_pre_init_keymap(void);
void keyboard_post_init_keymap(void);
void eeconfig_init_keymap(void);
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);