2
0

keymap.c 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287
  1. #include "ergodox_ez.h"
  2. #include "action_layer.h"
  3. #include "keymap_common.h"
  4. #include "keymap_extras/keymap_german.h"
  5. #define UC_ASYMPTOTICALLY_EQUAL_TO 0
  6. #define UC_DIVISION_SIGN 1
  7. #define UC_DOWNWARDS_ARROW 2
  8. #define UC_ELEMENT_OF 3
  9. #define UC_EMPTY_SET 4
  10. #define UC_FOR_ALL 5
  11. #define UC_GREEK_CAPITAL_LETTER_ALPHA 6
  12. #define UC_GREEK_CAPITAL_LETTER_BETA 7
  13. #define UC_GREEK_CAPITAL_LETTER_CHI 8
  14. #define UC_GREEK_CAPITAL_LETTER_DELTA 9
  15. #define UC_GREEK_CAPITAL_LETTER_EPSILON 10
  16. #define UC_GREEK_CAPITAL_LETTER_ETA 11
  17. #define UC_GREEK_CAPITAL_LETTER_GAMMA 12
  18. #define UC_GREEK_CAPITAL_LETTER_IOTA 13
  19. #define UC_GREEK_CAPITAL_LETTER_KAPPA 14
  20. #define UC_GREEK_CAPITAL_LETTER_LAMDA 15
  21. #define UC_GREEK_CAPITAL_LETTER_MU 16
  22. #define UC_GREEK_CAPITAL_LETTER_NU 17
  23. #define UC_GREEK_CAPITAL_LETTER_OMEGA 18
  24. #define UC_GREEK_CAPITAL_LETTER_OMICRON 19
  25. #define UC_GREEK_CAPITAL_LETTER_PHI 20
  26. #define UC_GREEK_CAPITAL_LETTER_PI 21
  27. #define UC_GREEK_CAPITAL_LETTER_PSI 22
  28. #define UC_GREEK_CAPITAL_LETTER_RHO 23
  29. #define UC_GREEK_CAPITAL_LETTER_SIGMA 24
  30. #define UC_GREEK_CAPITAL_LETTER_TAU 25
  31. #define UC_GREEK_CAPITAL_LETTER_THETA 26
  32. #define UC_GREEK_CAPITAL_LETTER_UPSILON 27
  33. #define UC_GREEK_CAPITAL_LETTER_XI 28
  34. #define UC_GREEK_CAPITAL_LETTER_ZETA 29
  35. #define UC_GREEK_SMALL_LETTER_ALPHA 30
  36. #define UC_GREEK_SMALL_LETTER_BETA 31
  37. #define UC_GREEK_SMALL_LETTER_CHI 32
  38. #define UC_GREEK_SMALL_LETTER_DELTA 33
  39. #define UC_GREEK_SMALL_LETTER_EPSILON 34
  40. #define UC_GREEK_SMALL_LETTER_ETA 35
  41. #define UC_GREEK_SMALL_LETTER_FINAL_SIGMA 36
  42. #define UC_GREEK_SMALL_LETTER_GAMMA 37
  43. #define UC_GREEK_SMALL_LETTER_IOTA 38
  44. #define UC_GREEK_SMALL_LETTER_KAPPA 39
  45. #define UC_GREEK_SMALL_LETTER_LAMDA 40
  46. #define UC_GREEK_SMALL_LETTER_MU 41
  47. #define UC_GREEK_SMALL_LETTER_NU 42
  48. #define UC_GREEK_SMALL_LETTER_OMEGA 43
  49. #define UC_GREEK_SMALL_LETTER_OMICRON 44
  50. #define UC_GREEK_SMALL_LETTER_PHI 45
  51. #define UC_GREEK_SMALL_LETTER_PI 46
  52. #define UC_GREEK_SMALL_LETTER_PSI 47
  53. #define UC_GREEK_SMALL_LETTER_RHO 48
  54. #define UC_GREEK_SMALL_LETTER_SIGMA 49
  55. #define UC_GREEK_SMALL_LETTER_TAU 50
  56. #define UC_GREEK_SMALL_LETTER_THETA 51
  57. #define UC_GREEK_SMALL_LETTER_UPSILON 52
  58. #define UC_GREEK_SMALL_LETTER_XI 53
  59. #define UC_GREEK_SMALL_LETTER_ZETA 54
  60. #define UC_INFINITY 55
  61. #define UC_LEFTWARDS_ARROW 56
  62. #define UC_MULTIPLICATION_SIGN 57
  63. #define UC_NOT_AN_ELEMENT_OF 58
  64. #define UC_NOT_EQUAL_TO 59
  65. #define UC_PLUS_MINUS_SIGN 60
  66. #define UC_RIGHTWARDS_ARROW 61
  67. #define UC_SUBSCRIPT_EIGHT 62
  68. #define UC_SUBSCRIPT_FIVE 63
  69. #define UC_SUBSCRIPT_FOUR 64
  70. #define UC_SUBSCRIPT_NINE 65
  71. #define UC_SUBSCRIPT_ONE 66
  72. #define UC_SUBSCRIPT_SEVEN 67
  73. #define UC_SUBSCRIPT_SIX 68
  74. #define UC_SUBSCRIPT_THREE 69
  75. #define UC_SUBSCRIPT_TWO 70
  76. #define UC_SUBSCRIPT_ZERO 71
  77. #define UC_SUPERSCRIPT_EIGHT 72
  78. #define UC_SUPERSCRIPT_FIVE 73
  79. #define UC_SUPERSCRIPT_FOUR 74
  80. #define UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N 75
  81. #define UC_SUPERSCRIPT_NINE 76
  82. #define UC_SUPERSCRIPT_ONE 77
  83. #define UC_SUPERSCRIPT_SEVEN 78
  84. #define UC_SUPERSCRIPT_SIX 79
  85. #define UC_SUPERSCRIPT_THREE 80
  86. #define UC_SUPERSCRIPT_TWO 81
  87. #define UC_SUPERSCRIPT_ZERO 82
  88. #define UC_THERE_DOES_NOT_EXIST 83
  89. #define UC_THERE_EXISTS 84
  90. #define UC_UPWARDS_ARROW 85
  91. #define UC_VULGAR_FRACTION_ONE_EIGHTH 86
  92. #define UC_VULGAR_FRACTION_ONE_FIFTH 87
  93. #define UC_VULGAR_FRACTION_ONE_HALF 88
  94. #define UC_VULGAR_FRACTION_ONE_QUARTER 89
  95. #define UC_VULGAR_FRACTION_ONE_SIXTH 90
  96. #define UC_VULGAR_FRACTION_ONE_THIRD 91
  97. #define UC_VULGAR_FRACTION_THREE_QUARTERS 92
  98. #define UC_VULGAR_FRACTION_TWO_THIRDS 93
  99. #define UM 94
  100. #define L0 0 // layer_0
  101. #define L1 1 // layer_1
  102. #define L2 2 // layer_2
  103. #define L3 3 // layer_3
  104. #define L4 4 // layer_4
  105. #define L5 5 // layer_5
  106. #define L6 6 // layer_6
  107. #define L7 7 // layer_7
  108. #define L8 8 // layer_8
  109. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  110. /*
  111. * .------------------------------------.------------------------------------.
  112. * |MO(5)| 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC |
  113. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  114. * |MO(4)| X | P | F | W | G |HOME |TG(2)| H | J | K | L | Q | Z |
  115. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  116. * |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | SS |
  117. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  118. * |MO(3)| UE | OE | AE | C | V |END | TAB | B | M |COMM| DOT| UP | Y |
  119. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  120. * | | |LGUI|LALT|LCTL| !LALT| |LEFT|DOWN|RGHT|
  121. * '------------------------' '------------------------'
  122. * .-----------. .-----------.
  123. * |INS |TG(2)| !M(UM)|DELT |
  124. * .-----+-----+-----! !-----+-----+-----.
  125. * ! ! | APP | ! PGUP| ! !
  126. * ! ! !-----! !-----! ! !
  127. * |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
  128. * '-----------------' '-----------------'
  129. */
  130. [L0] = KEYMAP(
  131. MO(5), DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT,
  132. MO(4), DE_X, DE_P, DE_F, DE_W, DE_G, KC_HOME,
  133. MO(1), DE_U, DE_I, DE_A, DE_E, DE_O,
  134. MO(3), DE_UE, DE_OE, DE_AE, DE_C, DE_V, KC_END,
  135. KC_TRNS, KC_TRNS, KC_LGUI, KC_LALT, KC_LCTL,
  136. KC_INS, TG(2),
  137. KC_APP,
  138. KC_BSPC, KC_LSFT, KC_ESC,
  139. DE_GRV, DE_6, DE_7, DE_8, DE_9, DE_0, DE_CIRC,
  140. TG(2), DE_H, DE_J, DE_K, DE_L, DE_Q, DE_Z,
  141. DE_S, DE_N, DE_R, DE_T, DE_D, DE_SS,
  142. KC_TAB, DE_B, DE_M, DE_COMM, DE_DOT, KC_UP, DE_Y,
  143. KC_LALT, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT,
  144. UM, KC_DELT,
  145. KC_PGUP,
  146. KC_PGDN, KC_ENTER, KC_SPACE
  147. ),
  148. /*
  149. * .------------------------------------.------------------------------------.
  150. * | |EXLM|DQOT|PARA| | | | | | | | |RING| |
  151. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  152. * | |ASTR|PIPE|SLSH|LCBR|RCBR| | |HASH|LESS|MORE| |DQOT| |
  153. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  154. * | |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
  155. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  156. * | | |PLUS|EQL | | | | |BSLS|PERC|SCLN|COLN| ↑ | |
  157. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  158. * | | | | | | ! | | ← | ↓ | → |
  159. * '------------------------' '------------------------'
  160. * .-----------. .-----------.
  161. * | | | ! | |
  162. * .-----+-----+-----! !-----+-----+-----.
  163. * ! ! | | ! | ! !
  164. * ! ! !-----! !-----! ! !
  165. * | | | | ! | | |
  166. * '-----------------' '-----------------'
  167. */
  168. [L1] = KEYMAP(
  169. KC_TRNS, DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS, KC_TRNS, KC_TRNS,
  170. KC_TRNS, DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR, DE_RCBR, KC_TRNS,
  171. KC_TRNS, DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC, DE_RBRC,
  172. KC_TRNS, KC_TRNS, DE_PLUS, DE_EQL, KC_TRNS, KC_TRNS, KC_TRNS,
  173. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  174. KC_TRNS, KC_TRNS,
  175. KC_TRNS,
  176. KC_TRNS, KC_TRNS, KC_TRNS,
  177. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_RING, KC_TRNS,
  178. KC_TRNS, DE_HASH, DE_LESS, DE_MORE, KC_TRNS, DE_DQOT, KC_TRNS,
  179. DE_DLR, DE_LPRN, DE_RPRN, DE_TILD, DE_QUOT, DE_QST,
  180. KC_TRNS, DE_BSLS, DE_PERC, DE_SCLN, DE_COLN, M(UC_UPWARDS_ARROW), KC_TRNS,
  181. KC_TRNS, KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW),
  182. KC_TRNS, KC_TRNS,
  183. KC_TRNS,
  184. KC_TRNS, KC_TRNS, KC_TRNS
  185. ),
  186. /*
  187. * .------------------------------------.------------------------------------.
  188. * | | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
  189. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  190. * | | | | | | | | | | P7 | P8 | P9 |PAST|PSLS |
  191. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  192. * | | | | | | |-----!-----! | P4 | P5 | P6 |PMNS|PMNS |
  193. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  194. * | | | | | | | | NLCK| | P1 | P2 | P3 |PPLS|PPLS |
  195. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  196. * | | | | | | ! P0 |PCMM|PDOT|PENT|PENT|
  197. * '------------------------' '------------------------'
  198. * .-----------. .-----------.
  199. * | | | ! | |
  200. * .-----+-----+-----! !-----+-----+-----.
  201. * ! ! | | ! | ! !
  202. * ! ! !-----! !-----! ! !
  203. * | | | | ! | | |
  204. * '-----------------' '-----------------'
  205. */
  206. [L2] = KEYMAP(
  207. KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
  208. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  209. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  210. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  211. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  212. KC_TRNS, KC_TRNS,
  213. KC_TRNS,
  214. KC_TRNS, KC_TRNS, KC_TRNS,
  215. KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PEQL,
  216. KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PSLS,
  217. KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PMNS,
  218. KC_NLCK, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PPLS,
  219. KC_P0, KC_PCMM, KC_PDOT, KC_PENT, KC_PENT,
  220. KC_TRNS, KC_TRNS,
  221. KC_TRNS,
  222. KC_TRNS, KC_TRNS, KC_TRNS
  223. ),
  224. /*
  225. * .------------------------------------.------------------------------------.
  226. * | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | |
  227. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  228. * | | × | ½ | ÷ | ¼ | ⅕ | | | ⅙ | | ⅛ | | | |
  229. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  230. * | | | ± | AT |EURO| ∅ |-----!-----! ∞ | ⁿ | ∃ | ∈ | | |
  231. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  232. * | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | |EXLM| | ∄ | ∉ | | |
  233. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  234. * | | | | | | ! | | | | |
  235. * '------------------------' '------------------------'
  236. * .-----------. .-----------.
  237. * | | | ! | |
  238. * .-----+-----+-----! !-----+-----+-----.
  239. * ! ! | | ! | ! !
  240. * ! ! !-----! !-----! ! !
  241. * | | | | ! | | |
  242. * '-----------------' '-----------------'
  243. */
  244. [L3] = KEYMAP(
  245. KC_TRNS, M(UC_SUPERSCRIPT_ONE), M(UC_SUPERSCRIPT_TWO), M(UC_SUPERSCRIPT_THREE), M(UC_SUPERSCRIPT_FOUR), M(UC_SUPERSCRIPT_FIVE), M(UC_FOR_ALL),
  246. KC_TRNS, M(UC_MULTIPLICATION_SIGN), M(UC_VULGAR_FRACTION_ONE_HALF), M(UC_DIVISION_SIGN), M(UC_VULGAR_FRACTION_ONE_QUARTER), M(UC_VULGAR_FRACTION_ONE_FIFTH), KC_TRNS,
  247. KC_TRNS, KC_TRNS, M(UC_PLUS_MINUS_SIGN), DE_AT, DE_EURO, M(UC_EMPTY_SET),
  248. KC_TRNS, M(UC_VULGAR_FRACTION_ONE_THIRD), M(UC_NOT_EQUAL_TO), M(UC_VULGAR_FRACTION_TWO_THIRDS), M(UC_VULGAR_FRACTION_THREE_QUARTERS), M(UC_ASYMPTOTICALLY_EQUAL_TO), KC_TRNS,
  249. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  250. KC_TRNS, KC_TRNS,
  251. KC_TRNS,
  252. KC_TRNS, KC_TRNS, KC_TRNS,
  253. KC_TRNS, M(UC_SUPERSCRIPT_SIX), M(UC_SUPERSCRIPT_SEVEN), M(UC_SUPERSCRIPT_EIGHT), M(UC_SUPERSCRIPT_NINE), M(UC_SUPERSCRIPT_ZERO), KC_TRNS,
  254. KC_TRNS, M(UC_VULGAR_FRACTION_ONE_SIXTH), KC_TRNS, M(UC_VULGAR_FRACTION_ONE_EIGHTH), KC_TRNS, KC_TRNS, KC_TRNS,
  255. M(UC_INFINITY), M(UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N), M(UC_THERE_EXISTS), M(UC_ELEMENT_OF), KC_TRNS, KC_TRNS,
  256. KC_TRNS, DE_EXLM, KC_TRNS, M(UC_THERE_DOES_NOT_EXIST), M(UC_NOT_AN_ELEMENT_OF), KC_TRNS, KC_TRNS,
  257. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  258. KC_TRNS, KC_TRNS,
  259. KC_TRNS,
  260. KC_TRNS, KC_TRNS, KC_TRNS
  261. ),
  262. /*
  263. * .------------------------------------.------------------------------------.
  264. * | | ₁ | ₂ | ₃ | ₄ | ₅ | | | ₆ | ₇ | ₈ | ₉ | ₀ | |
  265. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  266. * | | χ | π | φ | ω | γ | | | η | ξ | κ | λ | | ζ |
  267. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  268. * | | υ | ι | α | ε | ο |-----!-----! σ | ν | ρ | τ | δ | ς |
  269. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  270. * | | | θ | | | | | | β | μ | | | | ψ |
  271. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  272. * | | | | | | ! | | | | |
  273. * '------------------------' '------------------------'
  274. * .-----------. .-----------.
  275. * | | | ! | |
  276. * .-----+-----+-----! !-----+-----+-----.
  277. * ! ! | | ! | ! !
  278. * ! ! !-----! !-----! ! !
  279. * | | | | ! | | |
  280. * '-----------------' '-----------------'
  281. */
  282. [L4] = KEYMAP(
  283. KC_TRNS, M(UC_SUBSCRIPT_ONE), M(UC_SUBSCRIPT_TWO), M(UC_SUBSCRIPT_THREE), M(UC_SUBSCRIPT_FOUR), M(UC_SUBSCRIPT_FIVE), KC_TRNS,
  284. KC_TRNS, M(UC_GREEK_SMALL_LETTER_CHI), M(UC_GREEK_SMALL_LETTER_PI), M(UC_GREEK_SMALL_LETTER_PHI), M(UC_GREEK_SMALL_LETTER_OMEGA), M(UC_GREEK_SMALL_LETTER_GAMMA), KC_TRNS,
  285. KC_TRNS, M(UC_GREEK_SMALL_LETTER_UPSILON), M(UC_GREEK_SMALL_LETTER_IOTA), M(UC_GREEK_SMALL_LETTER_ALPHA), M(UC_GREEK_SMALL_LETTER_EPSILON), M(UC_GREEK_SMALL_LETTER_OMICRON),
  286. KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_THETA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  287. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  288. KC_TRNS, KC_TRNS,
  289. KC_TRNS,
  290. KC_TRNS, KC_TRNS, KC_TRNS,
  291. KC_TRNS, M(UC_SUBSCRIPT_SIX), M(UC_SUBSCRIPT_SEVEN), M(UC_SUBSCRIPT_EIGHT), M(UC_SUBSCRIPT_NINE), M(UC_SUBSCRIPT_ZERO), KC_TRNS,
  292. KC_TRNS, M(UC_GREEK_SMALL_LETTER_ETA), M(UC_GREEK_SMALL_LETTER_XI), M(UC_GREEK_SMALL_LETTER_KAPPA), M(UC_GREEK_SMALL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_SMALL_LETTER_ZETA),
  293. M(UC_GREEK_SMALL_LETTER_SIGMA), M(UC_GREEK_SMALL_LETTER_NU), M(UC_GREEK_SMALL_LETTER_RHO), M(UC_GREEK_SMALL_LETTER_TAU), M(UC_GREEK_SMALL_LETTER_DELTA), M(UC_GREEK_SMALL_LETTER_FINAL_SIGMA),
  294. KC_TRNS, M(UC_GREEK_SMALL_LETTER_BETA), M(UC_GREEK_SMALL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_PSI),
  295. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  296. KC_TRNS, KC_TRNS,
  297. KC_TRNS,
  298. KC_TRNS, KC_TRNS, KC_TRNS
  299. ),
  300. /*
  301. * .------------------------------------.------------------------------------.
  302. * | | | | | | | | | | | | | | |
  303. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  304. * | | Χ | Π | Φ | Ω | Γ | | | Η | Ξ | Κ | Λ | | Ζ |
  305. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  306. * | | Υ | Ι | Α | Ε | Ο |-----!-----! Σ | Ν | Ρ | Τ | Δ | |
  307. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  308. * | | | Θ | | | | | | Β | Μ | | | | Ψ |
  309. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  310. * | | | | | | ! | | | | |
  311. * '------------------------' '------------------------'
  312. * .-----------. .-----------.
  313. * | | | ! | |
  314. * .-----+-----+-----! !-----+-----+-----.
  315. * ! ! | | ! | ! !
  316. * ! ! !-----! !-----! ! !
  317. * | | | | ! | | |
  318. * '-----------------' '-----------------'
  319. */
  320. [L5] = KEYMAP(
  321. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  322. KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_CHI), M(UC_GREEK_CAPITAL_LETTER_PI), M(UC_GREEK_CAPITAL_LETTER_PHI), M(UC_GREEK_CAPITAL_LETTER_OMEGA), M(UC_GREEK_CAPITAL_LETTER_GAMMA), KC_TRNS,
  323. KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_UPSILON), M(UC_GREEK_CAPITAL_LETTER_IOTA), M(UC_GREEK_CAPITAL_LETTER_ALPHA), M(UC_GREEK_CAPITAL_LETTER_EPSILON), M(UC_GREEK_CAPITAL_LETTER_OMICRON),
  324. KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_THETA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  325. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  326. KC_TRNS, KC_TRNS,
  327. KC_TRNS,
  328. KC_TRNS, KC_TRNS, KC_TRNS,
  329. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  330. KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ETA), M(UC_GREEK_CAPITAL_LETTER_XI), M(UC_GREEK_CAPITAL_LETTER_KAPPA), M(UC_GREEK_CAPITAL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ZETA),
  331. M(UC_GREEK_CAPITAL_LETTER_SIGMA), M(UC_GREEK_CAPITAL_LETTER_NU), M(UC_GREEK_CAPITAL_LETTER_RHO), M(UC_GREEK_CAPITAL_LETTER_TAU), M(UC_GREEK_CAPITAL_LETTER_DELTA), KC_TRNS,
  332. KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_BETA), M(UC_GREEK_CAPITAL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_PSI),
  333. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  334. KC_TRNS, KC_TRNS,
  335. KC_TRNS,
  336. KC_TRNS, KC_TRNS, KC_TRNS
  337. ),
  338. /*
  339. * .------------------------------------.------------------------------------.
  340. * | | | | | | | | | | | | | | |
  341. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  342. * | | | | | | | | | | | | | | |
  343. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  344. * | | | | | | |-----!-----! | | | | | |
  345. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  346. * | | | | | | | | | | | | | | |
  347. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  348. * | | | | | | ! | | | | |
  349. * '------------------------' '------------------------'
  350. * .-----------. .-----------.
  351. * | | | ! | |
  352. * .-----+-----+-----! !-----+-----+-----.
  353. * ! ! | | ! | ! !
  354. * ! ! !-----! !-----! ! !
  355. * | | | | ! | | |
  356. * '-----------------' '-----------------'
  357. */
  358. [L6] = KEYMAP(
  359. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  360. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  361. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  362. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  363. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  364. KC_TRNS, KC_TRNS,
  365. KC_TRNS,
  366. KC_TRNS, KC_TRNS, KC_TRNS,
  367. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  368. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  369. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  370. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  371. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  372. KC_TRNS, KC_TRNS,
  373. KC_TRNS,
  374. KC_TRNS, KC_TRNS, KC_TRNS
  375. ),
  376. /*
  377. * .------------------------------------.------------------------------------.
  378. * | | | | | | | | | | | | | | |
  379. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  380. * | | | | | | | | | | | | | | |
  381. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  382. * | | | | | | |-----!-----! | | | | | |
  383. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  384. * | | | | | | | | | | | | | | |
  385. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  386. * | | | | | | ! | | | | |
  387. * '------------------------' '------------------------'
  388. * .-----------. .-----------.
  389. * | | | ! | |
  390. * .-----+-----+-----! !-----+-----+-----.
  391. * ! ! | | ! | ! !
  392. * ! ! !-----! !-----! ! !
  393. * | | | | ! | | |
  394. * '-----------------' '-----------------'
  395. */
  396. [L7] = KEYMAP(
  397. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  398. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  399. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  400. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  401. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  402. KC_TRNS, KC_TRNS,
  403. KC_TRNS,
  404. KC_TRNS, KC_TRNS, KC_TRNS,
  405. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  406. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  407. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  408. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  409. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  410. KC_TRNS, KC_TRNS,
  411. KC_TRNS,
  412. KC_TRNS, KC_TRNS, KC_TRNS
  413. ),
  414. /*
  415. * .------------------------------------.------------------------------------.
  416. * | | | | | | | | | | | | | | |
  417. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  418. * | | | | | | | | | | | | | | |
  419. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  420. * | | | | | | |-----!-----! | | | | | |
  421. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  422. * | | | | | | | | | | | | | | |
  423. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  424. * | | | | | | ! | | | | |
  425. * '------------------------' '------------------------'
  426. * .-----------. .-----------.
  427. * | | | ! | |
  428. * .-----+-----+-----! !-----+-----+-----.
  429. * ! ! | | ! | ! !
  430. * ! ! !-----! !-----! ! !
  431. * | | | | ! | | |
  432. * '-----------------' '-----------------'
  433. */
  434. [L8] = KEYMAP(
  435. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  436. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  437. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  438. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  439. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  440. KC_TRNS, KC_TRNS,
  441. KC_TRNS,
  442. KC_TRNS, KC_TRNS, KC_TRNS,
  443. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  444. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  445. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  446. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  447. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  448. KC_TRNS, KC_TRNS,
  449. KC_TRNS,
  450. KC_TRNS, KC_TRNS, KC_TRNS
  451. ),
  452. };
  453. const uint16_t PROGMEM fn_actions[] = {};
  454. #define UC_MODE_WIN 0
  455. #define UC_MODE_LINUX 1
  456. static uint16_t unicode_mode = UC_MODE_WIN;
  457. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
  458. if (!record->event.pressed) {
  459. return MACRO_NONE;
  460. }
  461. // MACRODOWN only works in this function
  462. switch(id) {
  463. case UM:
  464. unicode_mode = (unicode_mode + 1) % 2;
  465. break;
  466. default:
  467. break;
  468. }
  469. if (unicode_mode == UC_MODE_WIN) {
  470. switch(id) {
  471. case UC_GREEK_SMALL_LETTER_OMICRON:
  472. return MACRODOWN(
  473. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(F), U(LALT), END
  474. );
  475. case UC_LEFTWARDS_ARROW:
  476. return MACRODOWN(
  477. D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_0), U(LALT), END
  478. );
  479. case UC_GREEK_CAPITAL_LETTER_RHO:
  480. return MACRODOWN(
  481. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_1), U(LALT), END
  482. );
  483. case UC_SUBSCRIPT_THREE:
  484. return MACRODOWN(
  485. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_3), U(LALT), END
  486. );
  487. case UC_VULGAR_FRACTION_ONE_EIGHTH:
  488. return MACRODOWN(
  489. D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(B), U(LALT), END
  490. );
  491. case UC_GREEK_SMALL_LETTER_LAMDA:
  492. return MACRODOWN(
  493. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(B), U(LALT), END
  494. );
  495. case UC_VULGAR_FRACTION_ONE_THIRD:
  496. return MACRODOWN(
  497. D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_3), U(LALT), END
  498. );
  499. case UC_GREEK_SMALL_LETTER_XI:
  500. return MACRODOWN(
  501. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(E), U(LALT), END
  502. );
  503. case UC_THERE_DOES_NOT_EXIST:
  504. return MACRODOWN(
  505. D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_4), U(LALT), END
  506. );
  507. case UC_SUPERSCRIPT_ONE:
  508. return MACRODOWN(
  509. D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_9), U(LALT), END
  510. );
  511. case UC_GREEK_SMALL_LETTER_BETA:
  512. return MACRODOWN(
  513. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_2), U(LALT), END
  514. );
  515. case UC_SUBSCRIPT_FIVE:
  516. return MACRODOWN(
  517. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_5), U(LALT), END
  518. );
  519. case UC_GREEK_CAPITAL_LETTER_IOTA:
  520. return MACRODOWN(
  521. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_9), U(LALT), END
  522. );
  523. case UC_VULGAR_FRACTION_ONE_FIFTH:
  524. return MACRODOWN(
  525. D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_5), U(LALT), END
  526. );
  527. case UC_GREEK_SMALL_LETTER_PSI:
  528. return MACRODOWN(
  529. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_8), U(LALT), END
  530. );
  531. case UC_SUBSCRIPT_NINE:
  532. return MACRODOWN(
  533. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_9), U(LALT), END
  534. );
  535. case UC_SUPERSCRIPT_FOUR:
  536. return MACRODOWN(
  537. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_4), U(LALT), END
  538. );
  539. case UC_RIGHTWARDS_ARROW:
  540. return MACRODOWN(
  541. D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_2), U(LALT), END
  542. );
  543. case UC_SUPERSCRIPT_SIX:
  544. return MACRODOWN(
  545. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_6), U(LALT), END
  546. );
  547. case UC_DOWNWARDS_ARROW:
  548. return MACRODOWN(
  549. D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_3), U(LALT), END
  550. );
  551. case UC_GREEK_SMALL_LETTER_PI:
  552. return MACRODOWN(
  553. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_0), U(LALT), END
  554. );
  555. case UC_SUPERSCRIPT_TWO:
  556. return MACRODOWN(
  557. D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_2), U(LALT), END
  558. );
  559. case UC_GREEK_CAPITAL_LETTER_OMEGA:
  560. return MACRODOWN(
  561. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_9), U(LALT), END
  562. );
  563. case UC_GREEK_CAPITAL_LETTER_PSI:
  564. return MACRODOWN(
  565. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_8), U(LALT), END
  566. );
  567. case UC_SUBSCRIPT_FOUR:
  568. return MACRODOWN(
  569. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_4), U(LALT), END
  570. );
  571. case UC_GREEK_CAPITAL_LETTER_NU:
  572. return MACRODOWN(
  573. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(D), U(LALT), END
  574. );
  575. case UC_DIVISION_SIGN:
  576. return MACRODOWN(
  577. D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(F), T(KP_7), U(LALT), END
  578. );
  579. case UC_GREEK_SMALL_LETTER_SIGMA:
  580. return MACRODOWN(
  581. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_3), U(LALT), END
  582. );
  583. case UC_GREEK_SMALL_LETTER_RHO:
  584. return MACRODOWN(
  585. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_1), U(LALT), END
  586. );
  587. case UC_VULGAR_FRACTION_ONE_SIXTH:
  588. return MACRODOWN(
  589. D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_9), U(LALT), END
  590. );
  591. case UC_GREEK_SMALL_LETTER_GAMMA:
  592. return MACRODOWN(
  593. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_3), U(LALT), END
  594. );
  595. case UC_VULGAR_FRACTION_TWO_THIRDS:
  596. return MACRODOWN(
  597. D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_4), U(LALT), END
  598. );
  599. case UC_GREEK_SMALL_LETTER_NU:
  600. return MACRODOWN(
  601. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(D), U(LALT), END
  602. );
  603. case UC_GREEK_SMALL_LETTER_ZETA:
  604. return MACRODOWN(
  605. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_6), U(LALT), END
  606. );
  607. case UC_GREEK_SMALL_LETTER_EPSILON:
  608. return MACRODOWN(
  609. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_5), U(LALT), END
  610. );
  611. case UC_GREEK_SMALL_LETTER_KAPPA:
  612. return MACRODOWN(
  613. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(A), U(LALT), END
  614. );
  615. case UC_SUPERSCRIPT_SEVEN:
  616. return MACRODOWN(
  617. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_7), U(LALT), END
  618. );
  619. case UC_GREEK_CAPITAL_LETTER_PI:
  620. return MACRODOWN(
  621. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_0), U(LALT), END
  622. );
  623. case UC_GREEK_SMALL_LETTER_FINAL_SIGMA:
  624. return MACRODOWN(
  625. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_2), U(LALT), END
  626. );
  627. case UC_GREEK_CAPITAL_LETTER_XI:
  628. return MACRODOWN(
  629. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(E), U(LALT), END
  630. );
  631. case UC_GREEK_SMALL_LETTER_THETA:
  632. return MACRODOWN(
  633. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_8), U(LALT), END
  634. );
  635. case UC_GREEK_SMALL_LETTER_ETA:
  636. return MACRODOWN(
  637. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_7), U(LALT), END
  638. );
  639. case UC_SUBSCRIPT_TWO:
  640. return MACRODOWN(
  641. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_2), U(LALT), END
  642. );
  643. case UC_ASYMPTOTICALLY_EQUAL_TO:
  644. return MACRODOWN(
  645. D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_4), T(KP_3), U(LALT), END
  646. );
  647. case UC_GREEK_SMALL_LETTER_ALPHA:
  648. return MACRODOWN(
  649. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_1), U(LALT), END
  650. );
  651. case UC_GREEK_CAPITAL_LETTER_PHI:
  652. return MACRODOWN(
  653. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_6), U(LALT), END
  654. );
  655. case UC_GREEK_SMALL_LETTER_PHI:
  656. return MACRODOWN(
  657. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_6), U(LALT), END
  658. );
  659. case UC_INFINITY:
  660. return MACRODOWN(
  661. D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_1), T(E), U(LALT), END
  662. );
  663. case UC_GREEK_CAPITAL_LETTER_OMICRON:
  664. return MACRODOWN(
  665. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(F), U(LALT), END
  666. );
  667. case UC_ELEMENT_OF:
  668. return MACRODOWN(
  669. D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_8), U(LALT), END
  670. );
  671. case UC_MULTIPLICATION_SIGN:
  672. return MACRODOWN(
  673. D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(D), T(KP_7), U(LALT), END
  674. );
  675. case UC_SUBSCRIPT_ZERO:
  676. return MACRODOWN(
  677. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_0), U(LALT), END
  678. );
  679. case UC_GREEK_CAPITAL_LETTER_SIGMA:
  680. return MACRODOWN(
  681. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_3), U(LALT), END
  682. );
  683. case UC_GREEK_SMALL_LETTER_OMEGA:
  684. return MACRODOWN(
  685. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_9), U(LALT), END
  686. );
  687. case UC_SUBSCRIPT_ONE:
  688. return MACRODOWN(
  689. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_1), U(LALT), END
  690. );
  691. case UC_GREEK_CAPITAL_LETTER_ZETA:
  692. return MACRODOWN(
  693. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_6), U(LALT), END
  694. );
  695. case UC_GREEK_SMALL_LETTER_TAU:
  696. return MACRODOWN(
  697. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_4), U(LALT), END
  698. );
  699. case UC_SUPERSCRIPT_FIVE:
  700. return MACRODOWN(
  701. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_5), U(LALT), END
  702. );
  703. case UC_THERE_EXISTS:
  704. return MACRODOWN(
  705. D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_3), U(LALT), END
  706. );
  707. case UC_PLUS_MINUS_SIGN:
  708. return MACRODOWN(
  709. D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_1), U(LALT), END
  710. );
  711. case UC_VULGAR_FRACTION_THREE_QUARTERS:
  712. return MACRODOWN(
  713. D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(E), U(LALT), END
  714. );
  715. case UC_SUPERSCRIPT_THREE:
  716. return MACRODOWN(
  717. D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_3), U(LALT), END
  718. );
  719. case UC_EMPTY_SET:
  720. return MACRODOWN(
  721. D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_5), U(LALT), END
  722. );
  723. case UC_UPWARDS_ARROW:
  724. return MACRODOWN(
  725. D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_1), U(LALT), END
  726. );
  727. case UC_SUPERSCRIPT_NINE:
  728. return MACRODOWN(
  729. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_9), U(LALT), END
  730. );
  731. case UC_GREEK_SMALL_LETTER_DELTA:
  732. return MACRODOWN(
  733. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_4), U(LALT), END
  734. );
  735. case UC_GREEK_SMALL_LETTER_MU:
  736. return MACRODOWN(
  737. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(C), U(LALT), END
  738. );
  739. case UC_GREEK_CAPITAL_LETTER_KAPPA:
  740. return MACRODOWN(
  741. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(A), U(LALT), END
  742. );
  743. case UC_SUBSCRIPT_EIGHT:
  744. return MACRODOWN(
  745. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_8), U(LALT), END
  746. );
  747. case UC_GREEK_CAPITAL_LETTER_ALPHA:
  748. return MACRODOWN(
  749. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_1), U(LALT), END
  750. );
  751. case UC_SUBSCRIPT_SEVEN:
  752. return MACRODOWN(
  753. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_7), U(LALT), END
  754. );
  755. case UC_GREEK_CAPITAL_LETTER_BETA:
  756. return MACRODOWN(
  757. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_2), U(LALT), END
  758. );
  759. case UC_GREEK_CAPITAL_LETTER_ETA:
  760. return MACRODOWN(
  761. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_7), U(LALT), END
  762. );
  763. case UC_SUPERSCRIPT_EIGHT:
  764. return MACRODOWN(
  765. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_8), U(LALT), END
  766. );
  767. case UC_SUPERSCRIPT_ZERO:
  768. return MACRODOWN(
  769. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_0), U(LALT), END
  770. );
  771. case UC_NOT_AN_ELEMENT_OF:
  772. return MACRODOWN(
  773. D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_9), U(LALT), END
  774. );
  775. case UC_GREEK_SMALL_LETTER_UPSILON:
  776. return MACRODOWN(
  777. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_5), U(LALT), END
  778. );
  779. case UC_NOT_EQUAL_TO:
  780. return MACRODOWN(
  781. D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_6), T(KP_0), U(LALT), END
  782. );
  783. case UC_GREEK_CAPITAL_LETTER_CHI:
  784. return MACRODOWN(
  785. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_7), U(LALT), END
  786. );
  787. case UC_FOR_ALL:
  788. return MACRODOWN(
  789. D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_0), U(LALT), END
  790. );
  791. case UC_GREEK_CAPITAL_LETTER_TAU:
  792. return MACRODOWN(
  793. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_4), U(LALT), END
  794. );
  795. case UC_VULGAR_FRACTION_ONE_QUARTER:
  796. return MACRODOWN(
  797. D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(C), U(LALT), END
  798. );
  799. case UC_GREEK_SMALL_LETTER_CHI:
  800. return MACRODOWN(
  801. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_7), U(LALT), END
  802. );
  803. case UC_GREEK_CAPITAL_LETTER_THETA:
  804. return MACRODOWN(
  805. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_8), U(LALT), END
  806. );
  807. case UC_GREEK_SMALL_LETTER_IOTA:
  808. return MACRODOWN(
  809. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_9), U(LALT), END
  810. );
  811. case UC_GREEK_CAPITAL_LETTER_LAMDA:
  812. return MACRODOWN(
  813. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(B), U(LALT), END
  814. );
  815. case UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N:
  816. return MACRODOWN(
  817. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(F), U(LALT), END
  818. );
  819. case UC_GREEK_CAPITAL_LETTER_UPSILON:
  820. return MACRODOWN(
  821. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_5), U(LALT), END
  822. );
  823. case UC_GREEK_CAPITAL_LETTER_MU:
  824. return MACRODOWN(
  825. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(C), U(LALT), END
  826. );
  827. case UC_GREEK_CAPITAL_LETTER_EPSILON:
  828. return MACRODOWN(
  829. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_5), U(LALT), END
  830. );
  831. case UC_GREEK_CAPITAL_LETTER_GAMMA:
  832. return MACRODOWN(
  833. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_3), U(LALT), END
  834. );
  835. case UC_SUBSCRIPT_SIX:
  836. return MACRODOWN(
  837. D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_6), U(LALT), END
  838. );
  839. case UC_GREEK_CAPITAL_LETTER_DELTA:
  840. return MACRODOWN(
  841. D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_4), U(LALT), END
  842. );
  843. case UC_VULGAR_FRACTION_ONE_HALF:
  844. return MACRODOWN(
  845. D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(D), U(LALT), END
  846. );
  847. default:
  848. break;
  849. }
  850. } else if (unicode_mode == UC_MODE_LINUX) {
  851. switch(id) {
  852. case UC_GREEK_SMALL_LETTER_OMICRON:
  853. return MACRODOWN(
  854. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(F), T(KP_ENTER), END
  855. );
  856. case UC_LEFTWARDS_ARROW:
  857. return MACRODOWN(
  858. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_0), T(KP_ENTER), END
  859. );
  860. case UC_GREEK_CAPITAL_LETTER_RHO:
  861. return MACRODOWN(
  862. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_1), T(KP_ENTER), END
  863. );
  864. case UC_SUBSCRIPT_THREE:
  865. return MACRODOWN(
  866. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_3), T(KP_ENTER), END
  867. );
  868. case UC_VULGAR_FRACTION_ONE_EIGHTH:
  869. return MACRODOWN(
  870. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(B), T(KP_ENTER), END
  871. );
  872. case UC_GREEK_SMALL_LETTER_LAMDA:
  873. return MACRODOWN(
  874. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(B), T(KP_ENTER), END
  875. );
  876. case UC_VULGAR_FRACTION_ONE_THIRD:
  877. return MACRODOWN(
  878. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_3), T(KP_ENTER), END
  879. );
  880. case UC_GREEK_SMALL_LETTER_XI:
  881. return MACRODOWN(
  882. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(E), T(KP_ENTER), END
  883. );
  884. case UC_THERE_DOES_NOT_EXIST:
  885. return MACRODOWN(
  886. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_4), T(KP_ENTER), END
  887. );
  888. case UC_SUPERSCRIPT_ONE:
  889. return MACRODOWN(
  890. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_9), T(KP_ENTER), END
  891. );
  892. case UC_GREEK_SMALL_LETTER_BETA:
  893. return MACRODOWN(
  894. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_2), T(KP_ENTER), END
  895. );
  896. case UC_SUBSCRIPT_FIVE:
  897. return MACRODOWN(
  898. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_5), T(KP_ENTER), END
  899. );
  900. case UC_GREEK_CAPITAL_LETTER_IOTA:
  901. return MACRODOWN(
  902. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_9), T(KP_ENTER), END
  903. );
  904. case UC_VULGAR_FRACTION_ONE_FIFTH:
  905. return MACRODOWN(
  906. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_5), T(KP_ENTER), END
  907. );
  908. case UC_GREEK_SMALL_LETTER_PSI:
  909. return MACRODOWN(
  910. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_8), T(KP_ENTER), END
  911. );
  912. case UC_SUBSCRIPT_NINE:
  913. return MACRODOWN(
  914. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_9), T(KP_ENTER), END
  915. );
  916. case UC_SUPERSCRIPT_FOUR:
  917. return MACRODOWN(
  918. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_4), T(KP_ENTER), END
  919. );
  920. case UC_RIGHTWARDS_ARROW:
  921. return MACRODOWN(
  922. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_2), T(KP_ENTER), END
  923. );
  924. case UC_SUPERSCRIPT_SIX:
  925. return MACRODOWN(
  926. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_6), T(KP_ENTER), END
  927. );
  928. case UC_DOWNWARDS_ARROW:
  929. return MACRODOWN(
  930. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_3), T(KP_ENTER), END
  931. );
  932. case UC_GREEK_SMALL_LETTER_PI:
  933. return MACRODOWN(
  934. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_0), T(KP_ENTER), END
  935. );
  936. case UC_SUPERSCRIPT_TWO:
  937. return MACRODOWN(
  938. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_2), T(KP_ENTER), END
  939. );
  940. case UC_GREEK_CAPITAL_LETTER_OMEGA:
  941. return MACRODOWN(
  942. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_9), T(KP_ENTER), END
  943. );
  944. case UC_GREEK_CAPITAL_LETTER_PSI:
  945. return MACRODOWN(
  946. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_8), T(KP_ENTER), END
  947. );
  948. case UC_SUBSCRIPT_FOUR:
  949. return MACRODOWN(
  950. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_4), T(KP_ENTER), END
  951. );
  952. case UC_GREEK_CAPITAL_LETTER_NU:
  953. return MACRODOWN(
  954. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(D), T(KP_ENTER), END
  955. );
  956. case UC_DIVISION_SIGN:
  957. return MACRODOWN(
  958. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(F), T(KP_7), T(KP_ENTER), END
  959. );
  960. case UC_GREEK_SMALL_LETTER_SIGMA:
  961. return MACRODOWN(
  962. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_3), T(KP_ENTER), END
  963. );
  964. case UC_GREEK_SMALL_LETTER_RHO:
  965. return MACRODOWN(
  966. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_1), T(KP_ENTER), END
  967. );
  968. case UC_VULGAR_FRACTION_ONE_SIXTH:
  969. return MACRODOWN(
  970. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_9), T(KP_ENTER), END
  971. );
  972. case UC_GREEK_SMALL_LETTER_GAMMA:
  973. return MACRODOWN(
  974. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_3), T(KP_ENTER), END
  975. );
  976. case UC_VULGAR_FRACTION_TWO_THIRDS:
  977. return MACRODOWN(
  978. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_4), T(KP_ENTER), END
  979. );
  980. case UC_GREEK_SMALL_LETTER_NU:
  981. return MACRODOWN(
  982. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(D), T(KP_ENTER), END
  983. );
  984. case UC_GREEK_SMALL_LETTER_ZETA:
  985. return MACRODOWN(
  986. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_6), T(KP_ENTER), END
  987. );
  988. case UC_GREEK_SMALL_LETTER_EPSILON:
  989. return MACRODOWN(
  990. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_5), T(KP_ENTER), END
  991. );
  992. case UC_GREEK_SMALL_LETTER_KAPPA:
  993. return MACRODOWN(
  994. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(A), T(KP_ENTER), END
  995. );
  996. case UC_SUPERSCRIPT_SEVEN:
  997. return MACRODOWN(
  998. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_7), T(KP_ENTER), END
  999. );
  1000. case UC_GREEK_CAPITAL_LETTER_PI:
  1001. return MACRODOWN(
  1002. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_0), T(KP_ENTER), END
  1003. );
  1004. case UC_GREEK_SMALL_LETTER_FINAL_SIGMA:
  1005. return MACRODOWN(
  1006. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_2), T(KP_ENTER), END
  1007. );
  1008. case UC_GREEK_CAPITAL_LETTER_XI:
  1009. return MACRODOWN(
  1010. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(E), T(KP_ENTER), END
  1011. );
  1012. case UC_GREEK_SMALL_LETTER_THETA:
  1013. return MACRODOWN(
  1014. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_8), T(KP_ENTER), END
  1015. );
  1016. case UC_GREEK_SMALL_LETTER_ETA:
  1017. return MACRODOWN(
  1018. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_7), T(KP_ENTER), END
  1019. );
  1020. case UC_SUBSCRIPT_TWO:
  1021. return MACRODOWN(
  1022. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_2), T(KP_ENTER), END
  1023. );
  1024. case UC_ASYMPTOTICALLY_EQUAL_TO:
  1025. return MACRODOWN(
  1026. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_4), T(KP_3), T(KP_ENTER), END
  1027. );
  1028. case UC_GREEK_SMALL_LETTER_ALPHA:
  1029. return MACRODOWN(
  1030. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_1), T(KP_ENTER), END
  1031. );
  1032. case UC_GREEK_CAPITAL_LETTER_PHI:
  1033. return MACRODOWN(
  1034. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_6), T(KP_ENTER), END
  1035. );
  1036. case UC_GREEK_SMALL_LETTER_PHI:
  1037. return MACRODOWN(
  1038. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_6), T(KP_ENTER), END
  1039. );
  1040. case UC_INFINITY:
  1041. return MACRODOWN(
  1042. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_1), T(E), T(KP_ENTER), END
  1043. );
  1044. case UC_GREEK_CAPITAL_LETTER_OMICRON:
  1045. return MACRODOWN(
  1046. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(F), T(KP_ENTER), END
  1047. );
  1048. case UC_ELEMENT_OF:
  1049. return MACRODOWN(
  1050. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_8), T(KP_ENTER), END
  1051. );
  1052. case UC_MULTIPLICATION_SIGN:
  1053. return MACRODOWN(
  1054. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(D), T(KP_7), T(KP_ENTER), END
  1055. );
  1056. case UC_SUBSCRIPT_ZERO:
  1057. return MACRODOWN(
  1058. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_0), T(KP_ENTER), END
  1059. );
  1060. case UC_GREEK_CAPITAL_LETTER_SIGMA:
  1061. return MACRODOWN(
  1062. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_3), T(KP_ENTER), END
  1063. );
  1064. case UC_GREEK_SMALL_LETTER_OMEGA:
  1065. return MACRODOWN(
  1066. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_9), T(KP_ENTER), END
  1067. );
  1068. case UC_SUBSCRIPT_ONE:
  1069. return MACRODOWN(
  1070. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_1), T(KP_ENTER), END
  1071. );
  1072. case UC_GREEK_CAPITAL_LETTER_ZETA:
  1073. return MACRODOWN(
  1074. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_6), T(KP_ENTER), END
  1075. );
  1076. case UC_GREEK_SMALL_LETTER_TAU:
  1077. return MACRODOWN(
  1078. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_4), T(KP_ENTER), END
  1079. );
  1080. case UC_SUPERSCRIPT_FIVE:
  1081. return MACRODOWN(
  1082. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_5), T(KP_ENTER), END
  1083. );
  1084. case UC_THERE_EXISTS:
  1085. return MACRODOWN(
  1086. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_3), T(KP_ENTER), END
  1087. );
  1088. case UC_PLUS_MINUS_SIGN:
  1089. return MACRODOWN(
  1090. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_1), T(KP_ENTER), END
  1091. );
  1092. case UC_VULGAR_FRACTION_THREE_QUARTERS:
  1093. return MACRODOWN(
  1094. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(E), T(KP_ENTER), END
  1095. );
  1096. case UC_SUPERSCRIPT_THREE:
  1097. return MACRODOWN(
  1098. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_3), T(KP_ENTER), END
  1099. );
  1100. case UC_EMPTY_SET:
  1101. return MACRODOWN(
  1102. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_5), T(KP_ENTER), END
  1103. );
  1104. case UC_UPWARDS_ARROW:
  1105. return MACRODOWN(
  1106. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_1), T(KP_ENTER), END
  1107. );
  1108. case UC_SUPERSCRIPT_NINE:
  1109. return MACRODOWN(
  1110. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_9), T(KP_ENTER), END
  1111. );
  1112. case UC_GREEK_SMALL_LETTER_DELTA:
  1113. return MACRODOWN(
  1114. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_4), T(KP_ENTER), END
  1115. );
  1116. case UC_GREEK_SMALL_LETTER_MU:
  1117. return MACRODOWN(
  1118. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(C), T(KP_ENTER), END
  1119. );
  1120. case UC_GREEK_CAPITAL_LETTER_KAPPA:
  1121. return MACRODOWN(
  1122. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(A), T(KP_ENTER), END
  1123. );
  1124. case UC_SUBSCRIPT_EIGHT:
  1125. return MACRODOWN(
  1126. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_8), T(KP_ENTER), END
  1127. );
  1128. case UC_GREEK_CAPITAL_LETTER_ALPHA:
  1129. return MACRODOWN(
  1130. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_1), T(KP_ENTER), END
  1131. );
  1132. case UC_SUBSCRIPT_SEVEN:
  1133. return MACRODOWN(
  1134. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_7), T(KP_ENTER), END
  1135. );
  1136. case UC_GREEK_CAPITAL_LETTER_BETA:
  1137. return MACRODOWN(
  1138. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_2), T(KP_ENTER), END
  1139. );
  1140. case UC_GREEK_CAPITAL_LETTER_ETA:
  1141. return MACRODOWN(
  1142. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_7), T(KP_ENTER), END
  1143. );
  1144. case UC_SUPERSCRIPT_EIGHT:
  1145. return MACRODOWN(
  1146. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_8), T(KP_ENTER), END
  1147. );
  1148. case UC_SUPERSCRIPT_ZERO:
  1149. return MACRODOWN(
  1150. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_0), T(KP_ENTER), END
  1151. );
  1152. case UC_NOT_AN_ELEMENT_OF:
  1153. return MACRODOWN(
  1154. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_9), T(KP_ENTER), END
  1155. );
  1156. case UC_GREEK_SMALL_LETTER_UPSILON:
  1157. return MACRODOWN(
  1158. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_5), T(KP_ENTER), END
  1159. );
  1160. case UC_NOT_EQUAL_TO:
  1161. return MACRODOWN(
  1162. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_6), T(KP_0), T(KP_ENTER), END
  1163. );
  1164. case UC_GREEK_CAPITAL_LETTER_CHI:
  1165. return MACRODOWN(
  1166. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_7), T(KP_ENTER), END
  1167. );
  1168. case UC_FOR_ALL:
  1169. return MACRODOWN(
  1170. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_0), T(KP_ENTER), END
  1171. );
  1172. case UC_GREEK_CAPITAL_LETTER_TAU:
  1173. return MACRODOWN(
  1174. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_4), T(KP_ENTER), END
  1175. );
  1176. case UC_VULGAR_FRACTION_ONE_QUARTER:
  1177. return MACRODOWN(
  1178. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(C), T(KP_ENTER), END
  1179. );
  1180. case UC_GREEK_SMALL_LETTER_CHI:
  1181. return MACRODOWN(
  1182. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_7), T(KP_ENTER), END
  1183. );
  1184. case UC_GREEK_CAPITAL_LETTER_THETA:
  1185. return MACRODOWN(
  1186. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_8), T(KP_ENTER), END
  1187. );
  1188. case UC_GREEK_SMALL_LETTER_IOTA:
  1189. return MACRODOWN(
  1190. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_9), T(KP_ENTER), END
  1191. );
  1192. case UC_GREEK_CAPITAL_LETTER_LAMDA:
  1193. return MACRODOWN(
  1194. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(B), T(KP_ENTER), END
  1195. );
  1196. case UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N:
  1197. return MACRODOWN(
  1198. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(F), T(KP_ENTER), END
  1199. );
  1200. case UC_GREEK_CAPITAL_LETTER_UPSILON:
  1201. return MACRODOWN(
  1202. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_5), T(KP_ENTER), END
  1203. );
  1204. case UC_GREEK_CAPITAL_LETTER_MU:
  1205. return MACRODOWN(
  1206. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(C), T(KP_ENTER), END
  1207. );
  1208. case UC_GREEK_CAPITAL_LETTER_EPSILON:
  1209. return MACRODOWN(
  1210. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_5), T(KP_ENTER), END
  1211. );
  1212. case UC_GREEK_CAPITAL_LETTER_GAMMA:
  1213. return MACRODOWN(
  1214. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_3), T(KP_ENTER), END
  1215. );
  1216. case UC_SUBSCRIPT_SIX:
  1217. return MACRODOWN(
  1218. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_6), T(KP_ENTER), END
  1219. );
  1220. case UC_GREEK_CAPITAL_LETTER_DELTA:
  1221. return MACRODOWN(
  1222. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_4), T(KP_ENTER), END
  1223. );
  1224. case UC_VULGAR_FRACTION_ONE_HALF:
  1225. return MACRODOWN(
  1226. D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(D), T(KP_ENTER), END
  1227. );
  1228. default:
  1229. break;
  1230. }
  1231. }
  1232. return MACRO_NONE;
  1233. };
  1234. // Runs just one time when the keyboard initializes.
  1235. void matrix_init_user(void) {
  1236. };
  1237. // Runs constantly in the background, in a loop.
  1238. void matrix_scan_user(void) {
  1239. uint8_t layer = biton32(layer_state);
  1240. ergodox_board_led_off();
  1241. ergodox_right_led_1_off();
  1242. ergodox_right_led_2_off();
  1243. ergodox_right_led_3_off();
  1244. switch (layer) {
  1245. case L1:
  1246. ergodox_right_led_1_on();
  1247. break;
  1248. case L2:
  1249. ergodox_right_led_2_on();
  1250. break;
  1251. case L3:
  1252. ergodox_right_led_3_on();
  1253. break;
  1254. case L4:
  1255. ergodox_right_led_1_on();
  1256. ergodox_right_led_2_on();
  1257. break;
  1258. case L5:
  1259. ergodox_right_led_1_on();
  1260. ergodox_right_led_3_on();
  1261. break;
  1262. // case L6:
  1263. // ergodox_right_led_2_on();
  1264. // ergodox_right_led_3_on();
  1265. // break;
  1266. // case L7:
  1267. // ergodox_right_led_1_on();
  1268. // ergodox_right_led_2_on();
  1269. // ergodox_right_led_3_on();
  1270. // break;
  1271. default:
  1272. ergodox_board_led_off();
  1273. break;
  1274. }
  1275. };