#pragma once
#include "quantum.h"
#define FOREACH_UNICODE(M) \
M(UALP, 0x0391) \
M(UBET, 0x0392) \
M(UGAM, 0x0393) \
M(UDEL, 0x0394) \
M(UEPS, 0x0395) \
M(UZET, 0x0396) \
M(UETA, 0x0397) \
M(UTHE, 0x0398) \
M(UIOT, 0x0399) \
M(UKAP, 0x039A) \
M(ULAM, 0x039B) \
M(UMU, 0x039C) \
M(UNU, 0x039D) \
M(UXI, 0x039E) \
M(UOMI, 0x039F) \
M(UPI, 0x03A0) \
M(URHO, 0x03A1) \
M(USIG, 0x03A3) \
M(UTAU, 0x03A4) \
M(UUPS, 0x03A5) \
M(UPHI, 0x03A6) \
M(UCHI, 0x03A7) \
M(UPSI, 0x03A8) \
M(UOME, 0x03A9) \
M(LALP, 0x03B1) \
M(LBET, 0x03B2) \
M(LGAM, 0x03B3) \
M(LDEL, 0x03B4) \
M(LEPS, 0x03B5) \
M(LZET, 0x03B6) \
M(LETA, 0x03B7) \
M(LTHE, 0x03B8) \
M(LIOT, 0x03B9) \
M(LKAP, 0x03BA) \
M(LLAM, 0x03BB) \
M(LMU, 0x03BC) \
M(LNU, 0x03BD) \
M(LXI, 0x03BE) \
M(LOMI, 0x03BF) \
M(LPI, 0x03C0) \
M(LRHO, 0x03C1) \
M(LSIG, 0x03C3) \
M(LTAU, 0x03C4) \
M(LUPS, 0x03C5) \
M(LPHI, 0x03C6) \
M(LCHI, 0x03C7) \
M(LPSI, 0x03C8) \
M(LOME, 0x03C9) \
M(UAH, 0x0410) \
M(UBE, 0x0411) \
M(UVE, 0x0412) \
M(UGHE, 0x0413) \
M(UDE, 0x0414) \
M(UIE, 0x0415) \
M(UIO, 0x0401) \
M(UZHE, 0x0416) \
M(UZE, 0x0417) \
M(UIH, 0x0418) \
M(USIH, 0x0419) \
M(UKA, 0x041A) \
M(UEL, 0x041B) \
M(UEM, 0x041C) \
M(UEN, 0x041D) \
M(UOH, 0x041E) \
M(UPE, 0x041F) \
M(UER, 0x0420) \
M(UES, 0x0421) \
M(UTE, 0x0422) \
M(UUU, 0x0423) \
M(UEF, 0x0424) \
M(UHA, 0x0425) \
M(UTSE, 0x0426) \
M(UCHE, 0x0427) \
M(USHA, 0x0428) \
M(USCHA, 0x0429) \
M(UHARD, 0x042A) \
M(UYERU, 0x042B) \
M(USOFT, 0x042C) \
M(UEH, 0x042D) \
M(UYU, 0x042E) \
M(UYA, 0x042F) \
M(LAH, 0x0430) \
M(LBE, 0x0431) \
M(LVE, 0x0432) \
M(LGHE, 0x0433) \
M(LDE, 0x0434) \
M(LIE, 0x0435) \
M(LIO, 0x0451) \
M(LZHE, 0x0436) \
M(LZE, 0x0437) \
M(LIH, 0x0438) \
M(LSIH, 0x0439) \
M(LKA, 0x043A) \
M(LEL, 0x043B) \
M(LEM, 0x043C) \
M(LEN, 0x043D) \
M(LOH, 0x043E) \
M(LPE, 0x043F) \
M(LER, 0x0440) \
M(LES, 0x0441) \
M(LTE, 0x0442) \
M(LUU, 0x0443) \
M(LEF, 0x0444) \
M(LHA, 0x0445) \
M(LTSE, 0x0446) \
M(LCHE, 0x0447) \
M(LSHA, 0x0448) \
M(LSCHA, 0x0449) \
M(LHARD, 0x044A) \
M(LYERU, 0x044B) \
M(LSOFT, 0x044C) \
M(LEH, 0x044D) \
M(LYU, 0x044E) \
M(LYA, 0x044F) \
M(FE, 0x16A0) \
M(UR, 0x16A2) \
M(THURS, 0x16A6) \
M(ANSUZ, 0x16A8) \
M(RAIDO, 0x16B1) \
M(KAUNA, 0x16B2) \
M(GEBO, 0x16B7) \
M(WUNJO, 0x16B9) \
M(HAGLZ, 0x16BA) \
M(NAUDZ, 0x16BE) \
M(ISAZ, 0x16C1) \
M(JERAN, 0x16C3) \
M(IWAZ, 0x16C7) \
M(PERTH, 0x16C8) \
M(ALGIZ, 0x16C9) \
M(SOWIL, 0x16CA) \
M(TIWAZ, 0x16CF) \
M(BEORC, 0x16D2) \
M(EHWAZ, 0x16D6) \
M(MANNZ, 0x16D7) \
M(LAUKZ, 0x16DA) \
M(INGWZ, 0x16DC) \
M(DAGAZ, 0x16DE) \
M(ETHEL, 0x16DF) \
M(JRO, 0x308D) \
M(JWA, 0x308F) \
M(JNU, 0x306C) \
M(JHU, 0x3075) \
M(JA, 0x3042) \
M(JU, 0x3046) \
M(JE, 0x3048) \
M(JO, 0x304A) \
M(JYA, 0x3084) \
M(JYU, 0x3086) \
M(JYO, 0x3088) \
M(JHO, 0x307B) \
M(JHE, 0x3078) \
M(JMU, 0x3080) \
M(JTA, 0x305F) \
M(JTE, 0x3066) \
M(JI, 0x3044) \
M(JSU, 0x3059) \
M(JKA, 0x3095) \
M(JN, 0x3093) \
M(JNA, 0x306A) \
M(JNI, 0x306B) \
M(JRA, 0x3089) \
M(JSE, 0x305B) \
M(JVV, 0x309B) \
M(JSV, 0x309C) \
M(JTI, 0x3061) \
M(JTO, 0x3068) \
M(JSI, 0x3057) \
M(JHA, 0x306F) \
M(JKI, 0x304D) \
M(JKU, 0x304F) \
M(JMA, 0x307E) \
M(JNO, 0x306E) \
M(JRI, 0x308A) \
M(JRE, 0x308C) \
M(JKE, 0x3051) \
M(JTU, 0x3064) \
M(JSA, 0x3055) \
M(JSO, 0x305D) \
M(JHI, 0x3072) \
M(JKO, 0x3053) \
M(JMI, 0x307F) \
M(JMO, 0x3082) \
M(JNE, 0x306D) \
M(JRU, 0x308B) \
M(JME, 0x3081) \
M(ALEF, 0x05D0) \
M(BET, 0x05D1) \
M(GIMEL, 0x05D2) \
M(DALET, 0x05D3) \
M(HE, 0x05D4) \
M(VAV, 0x05D5) \
M(ZAYIN, 0x05D6) \
M(CHET, 0x05D7) \
M(TET, 0x05D8) \
M(YOD, 0x05D9) \
M(KAF, 0x05DB) \
M(LAMED, 0x05DC) \
M(MEM, 0x05DE) \
M(NUN, 0x05E0) \
M(SAMCH, 0x05E1) \
M(AYIN, 0x05E2) \
M(PE, 0x05E4) \
M(TZADI, 0x05E6) \
M(KOF, 0x05E7) \
M(RESH, 0x05E8) \
M(SHIN, 0x05E9) \
M(TAV, 0x05EA)
#define UC_KEYCODE(name, code) name = UC(code),
#define UCM_NAME(name, code) UCM_ ## name,
#define UCM_ENTRY(name, code) [UCM_ ## name] = code,
#define UCM_KEYCODE(name, code) name = X(UCM_ ## name),
#if defined(UNICODE_ENABLE)
enum unicode_keycodes {
FOREACH_UNICODE(UC_KEYCODE)
};
#elif defined(UNICODEMAP_ENABLE)
enum unicode_names {
FOREACH_UNICODE(UCM_NAME)
};
extern const uint32_t PROGMEM unicode_map[];
enum unicode_keycodes {
FOREACH_UNICODE(UCM_KEYCODE)
};
#endif
#define ALPHA XP(LALP, UALP)
#define BETA XP(LBET, UBET)
#define GAMMA XP(LGAM, UGAM)
#define DELTA XP(LDEL, UDEL)
#define EPSLN XP(LEPS, UEPS)
#define ZETA XP(LZET, UZET)
#define ETA XP(LETA, UETA)
#define THETA XP(LTHE, UTHE)
#define IOTA XP(LIOT, UIOT)
#define KAPPA XP(LKAP, UKAP)
#define LAMBD XP(LLAM, ULAM)
#define GMU XP(LMU, UMU)
#define NU XP(LNU, UNU)
#define XI XP(LXI, UXI)
#define OMCRN XP(LOMI, UOMI)
#define PI XP(LPI, UPI)
#define RHO XP(LRHO, URHO)
#define SIGMA XP(LSIG, USIG)
#define TAU XP(LTAU, UTAU)
#define UPSLN XP(LUPS, UUPS)
#define PHI XP(LPHI, UPHI)
#define CHI XP(LCHI, UCHI)
#define PSI XP(LPSI, UPSI)
#define OMEGA XP(LOME, UOME)
#define AH XP(LAH, UAH)
#define BE XP(LBE, UBE)
#define VE XP(LVE, UVE)
#define GHE XP(LGHE, UGHE)
#define DE XP(LDE, UDE)
#define IE XP(LIE, UIE)
#define IO XP(LIO, UIO)
#define ZHE XP(LZHE, UZHE)
#define ZE XP(LZE, UZE)
#define IH XP(LIH, UIH)
#define SIH XP(LSIH, USIH)
#define KA XP(LKA, UKA)
#define EL XP(LEL, UEL)
#define EM XP(LEM, UEM)
#define EN XP(LEN, UEN)
#define OH XP(LOH, UOH)
#define PE XP(LPE, UPE)
#define ER XP(LER, UER)
#define ES XP(LES, UES)
#define TE XP(LTE, UTE)
#define UU XP(LUU, UUU)
#define EF XP(LEF, UEF)
#define HA XP(LHA, UHA)
#define TSE XP(LTSE, UTSE)
#define CHE XP(LCHE, UCHE)
#define SHA XP(LSHA, USHA)
#define SCHA XP(LSCHA, USCHA)
#define HARD XP(LHARD, UHARD)
#define YERU XP(LYERU, UYERU)
#define SOFT XP(LSOFT, USOFT)
#define EH XP(LEH, UEH)
#define YU XP(LYU, UYU)
#define YA XP(LYA, UYA)