You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

295 lines
8.8 KiB

  1. #pragma once
  2. #include "quantum.h"
  3. // clang-format off
  4. #define FOREACH_UNICODE(M) \
  5. M(UALP, 0x0391) /* Α */ \
  6. M(UBET, 0x0392) /* Β */ \
  7. M(UGAM, 0x0393) /* Γ */ \
  8. M(UDEL, 0x0394) /* Δ */ \
  9. M(UEPS, 0x0395) /* Ε */ \
  10. M(UZET, 0x0396) /* Ζ */ \
  11. M(UETA, 0x0397) /* Η */ \
  12. M(UTHE, 0x0398) /* Θ */ \
  13. M(UIOT, 0x0399) /* Ι */ \
  14. M(UKAP, 0x039A) /* Κ */ \
  15. M(ULAM, 0x039B) /* Λ */ \
  16. M(UMU, 0x039C) /* M */ \
  17. M(UNU, 0x039D) /* Ν */ \
  18. M(UXI, 0x039E) /* Ξ */ \
  19. M(UOMI, 0x039F) /* Ο */ \
  20. M(UPI, 0x03A0) /* Π */ \
  21. M(URHO, 0x03A1) /* Ρ */ \
  22. M(USIG, 0x03A3) /* Σ */ \
  23. M(UTAU, 0x03A4) /* Τ */ \
  24. M(UUPS, 0x03A5) /* Υ */ \
  25. M(UPHI, 0x03A6) /* Φ */ \
  26. M(UCHI, 0x03A7) /* Χ */ \
  27. M(UPSI, 0x03A8) /* Ψ */ \
  28. M(UOME, 0x03A9) /* Ω */ \
  29. M(LALP, 0x03B1) /* α */ \
  30. M(LBET, 0x03B2) /* β */ \
  31. M(LGAM, 0x03B3) /* γ */ \
  32. M(LDEL, 0x03B4) /* δ */ \
  33. M(LEPS, 0x03B5) /* ε */ \
  34. M(LZET, 0x03B6) /* ζ */ \
  35. M(LETA, 0x03B7) /* η */ \
  36. M(LTHE, 0x03B8) /* θ */ \
  37. M(LIOT, 0x03B9) /* ι */ \
  38. M(LKAP, 0x03BA) /* κ */ \
  39. M(LLAM, 0x03BB) /* λ */ \
  40. M(LMU, 0x03BC) /* μ */ \
  41. M(LNU, 0x03BD) /* ν */ \
  42. M(LXI, 0x03BE) /* ξ */ \
  43. M(LOMI, 0x03BF) /* ο */ \
  44. M(LPI, 0x03C0) /* π */ \
  45. M(LRHO, 0x03C1) /* ρ */ \
  46. M(LSIG, 0x03C3) /* σ */ \
  47. M(LTAU, 0x03C4) /* τ */ \
  48. M(LUPS, 0x03C5) /* υ */ \
  49. M(LPHI, 0x03C6) /* φ */ \
  50. M(LCHI, 0x03C7) /* χ */ \
  51. M(LPSI, 0x03C8) /* ψ */ \
  52. M(LOME, 0x03C9) /* ω */ \
  53. M(UAH, 0x0410) /* А */ \
  54. M(UBE, 0x0411) /* Б */ \
  55. M(UVE, 0x0412) /* В */ \
  56. M(UGHE, 0x0413) /* Г */ \
  57. M(UDE, 0x0414) /* Д */ \
  58. M(UIE, 0x0415) /* Е */ \
  59. M(UIO, 0x0401) /* Ё */ \
  60. M(UZHE, 0x0416) /* Ж */ \
  61. M(UZE, 0x0417) /* З */ \
  62. M(UIH, 0x0418) /* И */ \
  63. M(USIH, 0x0419) /* Й */ \
  64. M(UKA, 0x041A) /* К */ \
  65. M(UEL, 0x041B) /* Л */ \
  66. M(UEM, 0x041C) /* М */ \
  67. M(UEN, 0x041D) /* Н */ \
  68. M(UOH, 0x041E) /* О */ \
  69. M(UPE, 0x041F) /* П */ \
  70. M(UER, 0x0420) /* Р */ \
  71. M(UES, 0x0421) /* С */ \
  72. M(UTE, 0x0422) /* Т */ \
  73. M(UUU, 0x0423) /* У */ \
  74. M(UEF, 0x0424) /* Ф */ \
  75. M(UHA, 0x0425) /* Х */ \
  76. M(UTSE, 0x0426) /* Ц */ \
  77. M(UCHE, 0x0427) /* Ч */ \
  78. M(USHA, 0x0428) /* Ш */ \
  79. M(USCHA, 0x0429) /* Щ */ \
  80. M(UHARD, 0x042A) /* Ъ */ \
  81. M(UYERU, 0x042B) /* Ы */ \
  82. M(USOFT, 0x042C) /* Ь */ \
  83. M(UEH, 0x042D) /* Э */ \
  84. M(UYU, 0x042E) /* Ю */ \
  85. M(UYA, 0x042F) /* Я */ \
  86. M(LAH, 0x0430) /* а */ \
  87. M(LBE, 0x0431) /* б */ \
  88. M(LVE, 0x0432) /* в */ \
  89. M(LGHE, 0x0433) /* г */ \
  90. M(LDE, 0x0434) /* д */ \
  91. M(LIE, 0x0435) /* е */ \
  92. M(LIO, 0x0451) /* ё */ \
  93. M(LZHE, 0x0436) /* ж */ \
  94. M(LZE, 0x0437) /* з */ \
  95. M(LIH, 0x0438) /* и */ \
  96. M(LSIH, 0x0439) /* й */ \
  97. M(LKA, 0x043A) /* к */ \
  98. M(LEL, 0x043B) /* л */ \
  99. M(LEM, 0x043C) /* м */ \
  100. M(LEN, 0x043D) /* н */ \
  101. M(LOH, 0x043E) /* о */ \
  102. M(LPE, 0x043F) /* п */ \
  103. M(LER, 0x0440) /* р */ \
  104. M(LES, 0x0441) /* с */ \
  105. M(LTE, 0x0442) /* т */ \
  106. M(LUU, 0x0443) /* у */ \
  107. M(LEF, 0x0444) /* ф */ \
  108. M(LHA, 0x0445) /* х */ \
  109. M(LTSE, 0x0446) /* ц */ \
  110. M(LCHE, 0x0447) /* ч */ \
  111. M(LSHA, 0x0448) /* ш */ \
  112. M(LSCHA, 0x0449) /* щ */ \
  113. M(LHARD, 0x044A) /* ъ */ \
  114. M(LYERU, 0x044B) /* ы */ \
  115. M(LSOFT, 0x044C) /* ь */ \
  116. M(LEH, 0x044D) /* э */ \
  117. M(LYU, 0x044E) /* ю */ \
  118. M(LYA, 0x044F) /* я */ \
  119. M(FE, 0x16A0) /* ᚠ */ \
  120. M(UR, 0x16A2) /* ᚢ */ \
  121. M(THURS, 0x16A6) /* ᚦ */ \
  122. M(ANSUZ, 0x16A8) /* ᚨ */ \
  123. M(RAIDO, 0x16B1) /* ᚱ */ \
  124. M(KAUNA, 0x16B2) /* ᚲ */ \
  125. M(GEBO, 0x16B7) /* ᚷ */ \
  126. M(WUNJO, 0x16B9) /* ᚹ */ \
  127. M(HAGLZ, 0x16BA) /* ᚺ */ \
  128. M(NAUDZ, 0x16BE) /* ᚾ */ \
  129. M(ISAZ, 0x16C1) /* ᛁ */ \
  130. M(JERAN, 0x16C3) /* ᛃ */ \
  131. M(IWAZ, 0x16C7) /* ᛇ */ \
  132. M(PERTH, 0x16C8) /* ᛈ */ \
  133. M(ALGIZ, 0x16C9) /* ᛉ */ \
  134. M(SOWIL, 0x16CA) /* ᛊ */ \
  135. M(TIWAZ, 0x16CF) /* ᛏ */ \
  136. M(BEORC, 0x16D2) /* ᛒ */ \
  137. M(EHWAZ, 0x16D6) /* ᛖ */ \
  138. M(MANNZ, 0x16D7) /* ᛗ */ \
  139. M(LAUKZ, 0x16DA) /* ᛚ */ \
  140. M(INGWZ, 0x16DC) /* ᛜ */ \
  141. M(DAGAZ, 0x16DE) /* ᛞ */ \
  142. M(ETHEL, 0x16DF) /* ᛟ */ \
  143. M(JRO, 0x308D) /* ろ */ \
  144. M(JWA, 0x308F) /* わ */ \
  145. M(JNU, 0x306C) /* ぬ */ \
  146. M(JHU, 0x3075) /* ふ */ \
  147. M(JA, 0x3042) /* あ */ \
  148. M(JU, 0x3046) /* う */ \
  149. M(JE, 0x3048) /* え */ \
  150. M(JO, 0x304A) /* お */ \
  151. M(JYA, 0x3084) /* や */ \
  152. M(JYU, 0x3086) /* ゆ */ \
  153. M(JYO, 0x3088) /* よ */ \
  154. M(JHO, 0x307B) /* ほ */ \
  155. M(JHE, 0x3078) /* へ */ \
  156. M(JMU, 0x3080) /* む */ \
  157. M(JTA, 0x305F) /* た */ \
  158. M(JTE, 0x3066) /* て */ \
  159. M(JI, 0x3044) /* い */ \
  160. M(JSU, 0x3059) /* す */ \
  161. M(JKA, 0x3095) /* ゕ */ \
  162. M(JN, 0x3093) /* ん */ \
  163. M(JNA, 0x306A) /* な */ \
  164. M(JNI, 0x306B) /* に */ \
  165. M(JRA, 0x3089) /* ら */ \
  166. M(JSE, 0x305B) /* せ */ \
  167. M(JVV, 0x309B) /* ゛*/ \
  168. M(JSV, 0x309C) /* ゜*/ \
  169. M(JTI, 0x3061) /* ち */ \
  170. M(JTO, 0x3068) /* と */ \
  171. M(JSI, 0x3057) /* し */ \
  172. M(JHA, 0x306F) /* は */ \
  173. M(JKI, 0x304D) /* き */ \
  174. M(JKU, 0x304F) /* く */ \
  175. M(JMA, 0x307E) /* ま */ \
  176. M(JNO, 0x306E) /* の */ \
  177. M(JRI, 0x308A) /* り */ \
  178. M(JRE, 0x308C) /* れ */ \
  179. M(JKE, 0x3051) /* け */ \
  180. M(JTU, 0x3064) /* つ */ \
  181. M(JSA, 0x3055) /* さ */ \
  182. M(JSO, 0x305D) /* そ */ \
  183. M(JHI, 0x3072) /* ひ */ \
  184. M(JKO, 0x3053) /* こ */ \
  185. M(JMI, 0x307F) /* み */ \
  186. M(JMO, 0x3082) /* も */ \
  187. M(JNE, 0x306D) /* ね */ \
  188. M(JRU, 0x308B) /* る */ \
  189. M(JME, 0x3081) /* め */ \
  190. M(ALEF, 0x05D0) /* א */ \
  191. M(BET, 0x05D1) /* ב */ \
  192. M(GIMEL, 0x05D2) /* ג */ \
  193. M(DALET, 0x05D3) /* ד */ \
  194. M(HE, 0x05D4) /* ה */ \
  195. M(VAV, 0x05D5) /* ו */ \
  196. M(ZAYIN, 0x05D6) /* ז */ \
  197. M(CHET, 0x05D7) /* ח */ \
  198. M(TET, 0x05D8) /* ט */ \
  199. M(YOD, 0x05D9) /* י */ \
  200. M(KAF, 0x05DB) /* כ */ \
  201. M(LAMED, 0x05DC) /* ל */ \
  202. M(MEM, 0x05DE) /* מ */ \
  203. M(NUN, 0x05E0) /* נ */ \
  204. M(SAMCH, 0x05E1) /* ס */ \
  205. M(AYIN, 0x05E2) /* ע */ \
  206. M(PE, 0x05E4) /* פ */ \
  207. M(TZADI, 0x05E6) /* צ */ \
  208. M(KOF, 0x05E7) /* ק */ \
  209. M(RESH, 0x05E8) /* ר */ \
  210. M(SHIN, 0x05E9) /* ש */ \
  211. M(TAV, 0x05EA) /* ת */
  212. // clang-format on
  213. #define UC_KEYCODE(name, code) name = UC(code), // LALP = UC(0x03B1),
  214. #define UCM_NAME(name, code) UCM_ ## name, // UCM_LALP,
  215. #define UCM_ENTRY(name, code) [UCM_ ## name] = code, // [UCM_LALP] = 0x03B1,
  216. #define UCM_KEYCODE(name, code) name = X(UCM_ ## name), // LALP = X(UCM_LALP)
  217. #if defined(UNICODE_ENABLE)
  218. enum unicode_keycodes {
  219. FOREACH_UNICODE(UC_KEYCODE)
  220. };
  221. #elif defined(UNICODEMAP_ENABLE)
  222. enum unicode_names {
  223. FOREACH_UNICODE(UCM_NAME)
  224. };
  225. extern const uint32_t PROGMEM unicode_map[];
  226. enum unicode_keycodes {
  227. FOREACH_UNICODE(UCM_KEYCODE)
  228. };
  229. #endif
  230. #define ALPHA XP(LALP, UALP)
  231. #define BETA XP(LBET, UBET)
  232. #define GAMMA XP(LGAM, UGAM)
  233. #define DELTA XP(LDEL, UDEL)
  234. #define EPSLN XP(LEPS, UEPS)
  235. #define ZETA XP(LZET, UZET)
  236. #define ETA XP(LETA, UETA)
  237. #define THETA XP(LTHE, UTHE)
  238. #define IOTA XP(LIOT, UIOT)
  239. #define KAPPA XP(LKAP, UKAP)
  240. #define LAMBD XP(LLAM, ULAM)
  241. #define GMU XP(LMU, UMU)
  242. #define NU XP(LNU, UNU)
  243. #define XI XP(LXI, UXI)
  244. #define OMCRN XP(LOMI, UOMI)
  245. #define PI XP(LPI, UPI)
  246. #define RHO XP(LRHO, URHO)
  247. #define SIGMA XP(LSIG, USIG)
  248. #define TAU XP(LTAU, UTAU)
  249. #define UPSLN XP(LUPS, UUPS)
  250. #define PHI XP(LPHI, UPHI)
  251. #define CHI XP(LCHI, UCHI)
  252. #define PSI XP(LPSI, UPSI)
  253. #define OMEGA XP(LOME, UOME)
  254. #define AH XP(LAH, UAH)
  255. #define BE XP(LBE, UBE)
  256. #define VE XP(LVE, UVE)
  257. #define GHE XP(LGHE, UGHE)
  258. #define DE XP(LDE, UDE)
  259. #define IE XP(LIE, UIE)
  260. #define IO XP(LIO, UIO)
  261. #define ZHE XP(LZHE, UZHE)
  262. #define ZE XP(LZE, UZE)
  263. #define IH XP(LIH, UIH)
  264. #define SIH XP(LSIH, USIH)
  265. #define KA XP(LKA, UKA)
  266. #define EL XP(LEL, UEL)
  267. #define EM XP(LEM, UEM)
  268. #define EN XP(LEN, UEN)
  269. #define OH XP(LOH, UOH)
  270. #define PE XP(LPE, UPE)
  271. #define ER XP(LER, UER)
  272. #define ES XP(LES, UES)
  273. #define TE XP(LTE, UTE)
  274. #define UU XP(LUU, UUU)
  275. #define EF XP(LEF, UEF)
  276. #define HA XP(LHA, UHA)
  277. #define TSE XP(LTSE, UTSE)
  278. #define CHE XP(LCHE, UCHE)
  279. #define SHA XP(LSHA, USHA)
  280. #define SCHA XP(LSCHA, USCHA)
  281. #define HARD XP(LHARD, UHARD)
  282. #define YERU XP(LYERU, UYERU)
  283. #define SOFT XP(LSOFT, USOFT)
  284. #define EH XP(LEH, UEH)
  285. #define YU XP(LYU, UYU)
  286. #define YA XP(LYA, UYA)