keymap.c 48 KB

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