keymap.c 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  1. #include QMK_KEYBOARD_H
  2. #include "action_layer.h"
  3. #include "keymap_extras/keymap_german.h"
  4. #define UM 0
  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. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  13. /*
  14. .------------------------------------.------------------------------------.
  15. |ESC | 1 | 2 | 3 | 4 | 5 | ´ | ` | 6 | 7 | 8 | 9 | 0 | ^ |
  16. !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  17. |TAB | X | V | L | C | W |Print| | K | H | G | F | Q | ß |
  18. !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  19. |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | Y |
  20. !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  21. |LSFT | ü | ö | ä | P | Z |SPACE| | B | M | , | . | J |RSFT |
  22. '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  23. |LCTL|LGUI|LALT|MO(3)|MO(2)| !MO(2)|MO(3)|APP |RALT|RCTL|
  24. '------------------------' '------------------------'
  25. .-----------. .-----------.
  26. |VOL- |VOL+ | !MUTE |PLAY |
  27. .-----+-----+-----! !-----+-----+-----.
  28. ! ! | | ! | ! !
  29. ! ! |-----| !-----| ! !
  30. ! CTL ! ! ALT ! ! CTL ! ! ALT !
  31. |ENTER|MO(1)| TAB | !ESC |MO(1)|SPACE|
  32. '-----------------' '-----------------'
  33. */
  34. [L0] = LAYOUT_ergodox(
  35. KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT,
  36. KC_TAB, DE_X, DE_V, DE_L, DE_C, DE_W, KC_PSCR,
  37. MO(1), DE_U, DE_I, DE_A, DE_E, DE_O,
  38. KC_LSFT, DE_UE, DE_OE, DE_AE, DE_P, DE_Z, KC_SPACE,
  39. KC_LCTL, KC_LGUI, KC_LALT, MO(3), MO(2),
  40. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_VOLU,
  41. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
  42. /*-*/ /*-*/ /*-*/ /*-*/ CTL_T(KC_ENTER), MO(1), ALT_T(KC_TAB),
  43. DE_GRV, DE_6, DE_7, DE_8, DE_9, DE_0, DE_CIRC,
  44. KC_TRNS, DE_K, DE_H, DE_G, DE_F, DE_Q, DE_SS,
  45. /*-*/ DE_S, DE_N, DE_R, DE_T, DE_D, DE_Y,
  46. KC_TRNS, DE_B, DE_M, DE_COMM, DE_DOT, DE_J, KC_RSFT,
  47. /*-*/ /*-*/ MO(2), MO(3), KC_APP, KC_RALT, KC_RCTL,
  48. KC_MUTE, KC_MPLY,
  49. KC_TRNS,
  50. CTL_T(KC_ESC), MO(1), ALT_T(KC_SPACE)
  51. ),
  52. /*
  53. .------------------------------------.------------------------------------.
  54. | | | | | | | | | | | | | | |
  55. !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  56. | | € | _ | [ | ] | | | | ! | < | > | = | & | |
  57. !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  58. | | \ | / | { | } | * |-----!-----! ? | ( | ) | - | : | @ |
  59. !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  60. | | # | $ | | | ~ | | | | + | % | " | ' | ; | |
  61. '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  62. | | | | | | ! | | | | |
  63. '------------------------' '------------------------'
  64. .-----------. .-----------.
  65. | | | ! | |
  66. .-----+-----+-----! !-----+-----+-----.
  67. ! ! | | ! | ! !
  68. ! ! !-----! !-----! ! !
  69. | | | | ! | | |
  70. '-----------------' '-----------------'
  71. */
  72. [L1] = LAYOUT_ergodox(
  73. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  74. KC_TRNS, DE_EURO, DE_UNDS, DE_LBRC, DE_RBRC, KC_TRNS, KC_TRNS,
  75. KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR,
  76. KC_TRNS, DE_HASH, DE_DLR, DE_PIPE, DE_TILD, KC_TRNS, KC_TRNS,
  77. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  78. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
  79. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
  80. /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
  81. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  82. KC_TRNS, DE_EXLM, DE_LESS, DE_MORE, DE_EQL, DE_AMPR, KC_TRNS,
  83. /*-*/ DE_QST, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, DE_AT,
  84. KC_TRNS, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_TRNS,
  85. /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  86. KC_TRNS, KC_TRNS,
  87. KC_TRNS,
  88. KC_TRNS, KC_TRNS, KC_TRNS
  89. ),
  90. /*
  91. * .------------------------------------.------------------------------------.
  92. * | | | | | | | | | | | | | | |
  93. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  94. * | |PGUP|BSPC| UP |DEL |PGDN| | | | 7 | 8 | 9 | | |
  95. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  96. * | |HOME|LEFT|DOWN|RGHT|END |-----!-----! | 4 | 5 | 6 | | |
  97. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  98. * | | | |PREV|NEXT| | | | | 1 | 2 | 3 | | |
  99. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  100. * | | | | | | ! | | | | |
  101. * '------------------------' '------------------------'
  102. * .-----------. .-----------.
  103. * | | | ! | |
  104. * .-----+-----+-----! !-----+-----+-----.
  105. * ! ! | | ! | ! !
  106. * ! ! !-----! !-----! ! !
  107. * | | | | ! | | 0 |
  108. * '-----------------' '-----------------'
  109. */
  110. [L2] = LAYOUT_ergodox(
  111. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  112. KC_TRNS, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_TRNS,
  113. KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,
  114. KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
  115. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  116. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
  117. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
  118. /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
  119. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  120. KC_TRNS, KC_TRNS, DE_7, DE_8, DE_9, KC_TRNS, KC_TRNS,
  121. /*-*/ KC_TRNS, DE_4, DE_5, DE_6, KC_TRNS, KC_TRNS,
  122. KC_TRNS, KC_TRNS, DE_1, DE_2, DE_3, KC_TRNS, KC_TRNS,
  123. /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  124. KC_TRNS, KC_TRNS,
  125. KC_TRNS,
  126. KC_TRNS, KC_TRNS, DE_0
  127. ),
  128. /*
  129. * .------------------------------------.------------------------------------.
  130. * | | F1 | F2 | F3 | F4 | F5 | F6 | | | | | | | |
  131. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  132. * | | F7 | F8 | F9 | F10| F11| F12 | | |M_WU|M_CU|M_WD| | |
  133. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  134. * |M_B5 |M_B4|M_B3|M_B2|M_B1| |-----!-----! |M_CL|M_CD|M_CR| | |
  135. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  136. * | | |M_A2|M_A1|M_A0| | | | | | | | | |
  137. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  138. * | | | | | | ! | | | | |
  139. * '------------------------' '------------------------'
  140. * .-----------. .-----------.
  141. * | | | ! | |
  142. * .-----+-----+-----! !-----+-----+-----.
  143. * ! ! | | ! | ! !
  144. * ! ! !-----! !-----! ! !
  145. * | | | | ! | | |
  146. * '-----------------' '-----------------'
  147. */
  148. [L3] = LAYOUT_ergodox(
  149. KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
  150. KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
  151. KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_TRNS,
  152. KC_TRNS, KC_TRNS, KC_ACL2, KC_ACL1, KC_ACL0, KC_TRNS, KC_TRNS,
  153. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  154. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
  155. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
  156. /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
  157. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  158. KC_TRNS, KC_TRNS, KC_WH_U, KC_MS_U, KC_WH_D, KC_TRNS, KC_TRNS,
  159. /*-*/ KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS,
  160. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  161. /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  162. KC_TRNS, KC_TRNS,
  163. KC_TRNS,
  164. KC_TRNS, KC_TRNS, KC_TRNS
  165. ),
  166. /*
  167. * .------------------------------------.------------------------------------.
  168. * | | | | | | | | | | | | | | |
  169. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  170. * | | | | | | | | | | | | | | |
  171. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  172. * | | | | | | |-----!-----! | | | | | |
  173. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  174. * | | | | | | | | | | | | | | |
  175. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  176. * | | | | | | ! | | | | |
  177. * '------------------------' '------------------------'
  178. * .-----------. .-----------.
  179. * | | | ! | |
  180. * .-----+-----+-----! !-----+-----+-----.
  181. * ! ! | | ! | ! !
  182. * ! ! !-----! !-----! ! !
  183. * | | | | ! | | |
  184. * '-----------------' '-----------------'
  185. */
  186. [L4] = LAYOUT_ergodox(
  187. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  188. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  189. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  190. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  191. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  192. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
  193. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
  194. /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
  195. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  196. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  197. /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  198. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  199. /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  200. KC_TRNS, KC_TRNS,
  201. KC_TRNS,
  202. KC_TRNS, KC_TRNS, KC_TRNS
  203. ),
  204. /*
  205. * .------------------------------------.------------------------------------.
  206. * | | | | | | | | | | | | | | |
  207. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  208. * | | | | | | | | | | | | | | |
  209. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  210. * | | | | | | |-----!-----! | | | | | |
  211. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  212. * | | | | | | | | | | | | | | |
  213. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  214. * | | | | | | ! | | | | |
  215. * '------------------------' '------------------------'
  216. * .-----------. .-----------.
  217. * | | | ! | |
  218. * .-----+-----+-----! !-----+-----+-----.
  219. * ! ! | | ! | ! !
  220. * ! ! !-----! !-----! ! !
  221. * | | | | ! | | |
  222. * '-----------------' '-----------------'
  223. */
  224. [L5] = LAYOUT_ergodox(
  225. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  226. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  227. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  228. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  229. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  230. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
  231. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
  232. /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
  233. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  234. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  235. /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  236. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  237. /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  238. KC_TRNS, KC_TRNS,
  239. KC_TRNS,
  240. KC_TRNS, KC_TRNS, KC_TRNS
  241. ),
  242. /*
  243. * .------------------------------------.------------------------------------.
  244. * | | | | | | | | | | | | | | |
  245. * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
  246. * | | | | | | | | | | | | | | |
  247. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  248. * | | | | | | |-----!-----! | | | | | |
  249. * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
  250. * | | | | | | | | | | | | | | |
  251. * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
  252. * | | | | | | ! | | | | |
  253. * '------------------------' '------------------------'
  254. * .-----------. .-----------.
  255. * | | | ! | |
  256. * .-----+-----+-----! !-----+-----+-----.
  257. * ! ! | | ! | ! !
  258. * ! ! !-----! !-----! ! !
  259. * | | | | ! | | |
  260. * '-----------------' '-----------------'
  261. */
  262. [L6] = LAYOUT_ergodox(
  263. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  264. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  265. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  266. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  267. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  268. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
  269. /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
  270. /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
  271. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  272. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  273. /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  274. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  275. /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  276. KC_TRNS, KC_TRNS,
  277. KC_TRNS,
  278. KC_TRNS, KC_TRNS, KC_TRNS
  279. ),
  280. };
  281. const uint16_t PROGMEM fn_actions[] = {};
  282. #define UC_MODE_WIN 0
  283. #define UC_MODE_LINUX 1
  284. #define UC_MODE_OSX 2
  285. // TODO: allow default mode to be configured
  286. static uint16_t unicode_mode = UC_MODE_WIN;
  287. uint16_t hextokeycode(uint8_t hex) {
  288. if (hex == 0x0) {
  289. return KC_P0;
  290. }
  291. if (hex < 0xA) {
  292. return KC_P1 + (hex - 0x1);
  293. }
  294. return KC_A + (hex - 0xA);
  295. }
  296. void unicode_action_function(uint16_t hi, uint16_t lo) {
  297. switch (unicode_mode) {
  298. case UC_MODE_WIN:
  299. register_code(KC_LALT);
  300. register_code(KC_PPLS);
  301. unregister_code(KC_PPLS);
  302. register_code(hextokeycode((hi & 0xF0) >> 4));
  303. unregister_code(hextokeycode((hi & 0xF0) >> 4));
  304. register_code(hextokeycode((hi & 0x0F)));
  305. unregister_code(hextokeycode((hi & 0x0F)));
  306. register_code(hextokeycode((lo & 0xF0) >> 4));
  307. unregister_code(hextokeycode((lo & 0xF0) >> 4));
  308. register_code(hextokeycode((lo & 0x0F)));
  309. unregister_code(hextokeycode((lo & 0x0F)));
  310. unregister_code(KC_LALT);
  311. break;
  312. case UC_MODE_LINUX:
  313. register_code(KC_LCTL);
  314. register_code(KC_LSFT);
  315. register_code(KC_U);
  316. unregister_code(KC_U);
  317. register_code(hextokeycode((hi & 0xF0) >> 4));
  318. unregister_code(hextokeycode((hi & 0xF0) >> 4));
  319. register_code(hextokeycode((hi & 0x0F)));
  320. unregister_code(hextokeycode((hi & 0x0F)));
  321. register_code(hextokeycode((lo & 0xF0) >> 4));
  322. unregister_code(hextokeycode((lo & 0xF0) >> 4));
  323. register_code(hextokeycode((lo & 0x0F)));
  324. unregister_code(hextokeycode((lo & 0x0F)));
  325. unregister_code(KC_LCTL);
  326. unregister_code(KC_LSFT);
  327. break;
  328. case UC_MODE_OSX:
  329. break;
  330. }
  331. }
  332. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
  333. if (!record->event.pressed) {
  334. return MACRO_NONE;
  335. }
  336. // MACRODOWN only works in this function
  337. switch(id) {
  338. case UM:
  339. unicode_mode = (unicode_mode + 1) % 2;
  340. break;
  341. default:
  342. break;
  343. }
  344. return MACRO_NONE;
  345. };
  346. // Runs just one time when the keyboard initializes.
  347. void matrix_init_user(void) {
  348. };
  349. // Runs constantly in the background, in a loop.
  350. void matrix_scan_user(void) {
  351. uint8_t layer = biton32(layer_state);
  352. ergodox_board_led_off();
  353. ergodox_right_led_1_off();
  354. ergodox_right_led_2_off();
  355. ergodox_right_led_3_off();
  356. switch (layer) {
  357. case L1:
  358. ergodox_right_led_1_on();
  359. break;
  360. case L2:
  361. ergodox_right_led_2_on();
  362. break;
  363. case L3:
  364. ergodox_right_led_3_on();
  365. break;
  366. case L4:
  367. ergodox_right_led_1_on();
  368. ergodox_right_led_2_on();
  369. break;
  370. case L5:
  371. ergodox_right_led_1_on();
  372. ergodox_right_led_3_on();
  373. break;
  374. // case L6:
  375. // ergodox_right_led_2_on();
  376. // ergodox_right_led_3_on();
  377. // break;
  378. // case L7:
  379. // ergodox_right_led_1_on();
  380. // ergodox_right_led_2_on();
  381. // ergodox_right_led_3_on();
  382. // break;
  383. default:
  384. ergodox_board_led_off();
  385. break;
  386. }
  387. };