keymap.c 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. #include QMK_KEYBOARD_H
  2. enum layer_names {
  3. BASE,
  4. GREL,
  5. GREU,
  6. SYMB,
  7. MATH,
  8. QWER,
  9. FNLR
  10. };
  11. enum unicode_names {
  12. //MATH
  13. neq, //≠
  14. intgrl, //∫
  15. angl, //∠
  16. imply, //⇒
  17. equiv, //⇔
  18. porp, //∝
  19. exists, //∃
  20. nexists, //∄
  21. forall, //∀
  22. and, //∧
  23. or, //∨
  24. xor, //⊕
  25. apeql, //≅
  26. root, //√
  27. not, //¬
  28. sum, //∑
  29. plsminus, //±
  30. infin, //∞
  31. emtyset, //∅
  32. Mn, //ℕ
  33. Mz, //ℤ
  34. Mq, //ℚ
  35. Mr, //ℝ
  36. Mc, //ℂ
  37. eleof, //∈
  38. member, //∋
  39. neleof, //∉
  40. nmember, //∌
  41. subsetof, //⊂
  42. suprsetof, //⊃
  43. intersection, //∩
  44. Munion, //∪
  45. //SYMB
  46. arwl,
  47. arwu,
  48. arwr,
  49. arwd,
  50. uxclm,
  51. cent,
  52. degree,
  53. trade,
  54. copy,
  55. numero,
  56. sect,
  57. mdot,
  58. rang,
  59. lshade,
  60. mshade,
  61. dshade,
  62. fire,
  63. water,
  64. cleft,
  65. baster,
  66. neteen,
  67. floppy,
  68. boxemp,
  69. boxchk,
  70. boxX,
  71. bbstr,
  72. bbstl,
  73. bbml,
  74. bbmr,
  75. bbmb,
  76. bbrtr,
  77. bbrbr,
  78. bbrtl,
  79. bbrbl,
  80. bbsbr,
  81. bbsbl,
  82. bbmbr,
  83. bbmbl,
  84. Agrave,
  85. Aacute,
  86. Acircm,
  87. Atilde,
  88. Abreve,
  89. Adiaer,
  90. Adacut,
  91. // not all ogham letters, as I
  92. // actually intend to use them for hex
  93. OS,
  94. Oa,
  95. Ob,
  96. Oc,
  97. Od,
  98. Oe,
  99. Of,
  100. Og,
  101. Oh,
  102. Oi,
  103. OA,
  104. OB,
  105. OC,
  106. OD,
  107. OE,
  108. OF,
  109. Os,
  110. OED,
  111. Ox,
  112. gnd,
  113. sqr,
  114. sine,
  115. opt,
  116. geq,
  117. leq,
  118. brkup,
  119. brkdn,
  120. perup,
  121. perdn,
  122. //GREEL
  123. rone, // 1:: ⅰ
  124. rtwo,
  125. rthree,
  126. rfour, // 4:: ⅳ
  127. rfive, // 5:: ⅴ
  128. rsix, // 6:: ⅵ
  129. rseven, // 7:: ⅶ
  130. reight, // 8:: ⅷ
  131. rnine, // 9:: ⅸ
  132. rten, // 0:: ⅹ
  133. gq, // q:: θ
  134. gw, // w:: ω
  135. ge, // e:: ε
  136. gr, // r:: ρ
  137. gt, // t:: τ
  138. gy, // y:: ψ
  139. gu, // u:: υ
  140. gi, // i:: ι
  141. go, // o:: ο
  142. gp, // p:: π
  143. ga, // a:: α
  144. gs, // s:: σ
  145. gd, // d:: δ
  146. gf, // f:: φ
  147. gg, // g:: γ
  148. gh, // h:: η
  149. gj, // j:: ϑ
  150. gk, // k:: κ
  151. gl, // l:: λ
  152. gz, // z:: ζ
  153. gx, // x:: ξ
  154. gc, // c:: χ
  155. gv, // v:: ς
  156. gb, // b:: β
  157. gn, // n:: ν
  158. gm, // m:: μ
  159. //GREEU
  160. Rone, // 1:: Ⅰ
  161. Rtwo, // 2:: Ⅱ
  162. Rthree, // 3:: Ⅲ
  163. Rfour, // 4:: Ⅳ
  164. Rfive, // 5:: Ⅴ
  165. Rsix, // 6:: Ⅵ
  166. Rseven, // 7:: Ⅶ
  167. Reight, // 8:: Ⅷ
  168. Rnine, // 9:: Ⅸ
  169. Rten,
  170. Gq, // Q:: Θ
  171. Gw, // W:: Ω
  172. Ge, // E:: Ε
  173. Gr, // R:: Ρ
  174. Gt, // T:: Τ
  175. Gy, // Y:: Ψ
  176. Gu, // U:: Υ
  177. Gi, // I:: Ι
  178. Go, // O:: Ο
  179. Gp, // P:: Π
  180. Ga, // A:: Α
  181. Gs, // S:: Σ
  182. Gd, // D:: Δ
  183. Gf, // F:: Φ
  184. Gg, // G:: Γ
  185. Gh, // H:: Η
  186. Gj, // J:: J
  187. Gk, // K:: Κ
  188. Gl, // L:: Λ
  189. Gz, // Z:: Ζ
  190. Gx, // X:: Ξ
  191. Gc, // C:: Χ
  192. Gv, // V:: V
  193. Gb, // B:: Β
  194. Gn, // N:: Ν
  195. Gm, // M:: Μ
  196. };
  197. const uint32_t PROGMEM unicode_map[] = {
  198. //MATH
  199. [neq] = 0x2260, //≠
  200. [intgrl] = 0x222B, //∫
  201. [angl] = 0x2220, //∠
  202. [imply] = 0x21D2, //⇒
  203. [equiv] = 0x21D4, //⇔
  204. [porp] = 0x221D, //∝
  205. [exists] = 0x2203, //∃
  206. [nexists] = 0x2204, //∄
  207. [forall] = 0x2200, //∀
  208. [and] = 0x2227, //∧
  209. [or] = 0x2228, //∨
  210. [xor] = 0x2295, //⊕
  211. [apeql] = 0x2245, //≅
  212. [root] = 0x221A, //√
  213. [not] = 0x00AC, //¬
  214. [sum] = 0x2211, //∑
  215. [plsminus] = 0x00B1, //±
  216. [infin] = 0x221E, //∞
  217. [emtyset] = 0x2205, //∅
  218. [Mn] = 0x2115, //ℕ
  219. [Mz] = 0x2124, //ℤ
  220. [Mq] = 0x211A, //ℚ
  221. [Mr] = 0x211D, //ℝ
  222. [Mc] = 0x2102, //ℂ
  223. [eleof] = 0x2208, //∈
  224. [member] = 0x220B, //∋
  225. [neleof] = 0x2209, //∉
  226. [nmember] = 0x220C, //∌
  227. [subsetof] = 0x2282, //⊂
  228. [suprsetof] = 0x2283, //
  229. [intersection] = 0x2229, //∩
  230. [Munion] = 0x222A, //∪
  231. //Symbol
  232. [arwl] = 0x2190, //←
  233. [arwu] = 0x2191, //↑
  234. [arwr] = 0x2192, //→
  235. [arwd] = 0x2193, //↓
  236. [uxclm] = 0x00A1, //¡
  237. [cent] = 0x00A2, //¢
  238. [degree] = 0x00B0, //°
  239. [trade] = 0x2122, //™
  240. [copy] = 0x00A9, //©
  241. [numero] = 0x2116, //№
  242. [sect] = 0x00A7, //§
  243. [mdot] = 0x00B7, //·
  244. [rang] = 0x299C, //⦜
  245. [lshade] = 0x2591,//░
  246. [mshade] = 0x2592,//▒
  247. [dshade] = 0x2593,//▓
  248. [fire] = 0x1F525, //🔥
  249. [water] = 0x1F322, //🌢
  250. [cleft] = 0x1F12F, //🄯
  251. [baster] = 0x1F7BC, //🞼
  252. [neteen] = 0x1F51E, //🔞
  253. [floppy] = 0x1F5AB, //🖫
  254. [boxemp] = 0x2610, //☐
  255. [boxchk] = 0x2611, //☑
  256. [boxX] = 0x2612, //☒
  257. [bbstr] = 0x23A1, //⎡
  258. [bbstl] = 0x23A4, //⎤
  259. [bbml] = 0x23A8, //⎨
  260. [bbmr] = 0x23AC, //⎬
  261. [bbmb] = 0x23AA, //⎪
  262. [bbrtr] = 0x23A7, //⎧
  263. [bbrbr] = 0x23A9, //⎩
  264. [bbrtl] = 0x23AB, //⎫
  265. [bbrbl] = 0x23AD, //⎭
  266. [bbsbr] = 0x23A3, //⎣
  267. [bbsbl] = 0x23A6, //⎦
  268. [bbmbr] = 0x23A5, //⎥
  269. [bbmbl] = 0x23A2, //⎢
  270. [Agrave] = 0x0300,//è //above [wtf] = 0x1242A, //𒐪
  271. [Aacute] = 0x0301,//é //1st
  272. [Acircm] = 0x0302,//ê //2nd
  273. [Atilde] = 0x0303,//ẽ //5th
  274. [Abreve] = 0x0306,//ĕ //4th
  275. [Adiaer] = 0x0308,//ë //3rd
  276. [Adacut] = 0x030B,//e̋
  277. // not all ogham letters, as I
  278. // actually intend to use them for hex
  279. [OS] = 0x1680,//space
  280. [Oa] = 0x1681,//1
  281. [Ob] = 0x1682,//2
  282. [Oc] = 0x1683,//3
  283. [Od] = 0x1684,//4
  284. [Oe] = 0x1685,//5
  285. [Of] = 0x1686,//6
  286. [Og] = 0x1687,//7
  287. [Oh] = 0x1688,//8
  288. [Oi] = 0x1689,//9
  289. [OA] = 0x168A,//A
  290. [OB] = 0x168B,//B
  291. [OC] = 0x168C,//C
  292. [OD] = 0x168D,//D
  293. [OE] = 0x168E,//E
  294. [OF] = 0x168F,//F
  295. [Os] = 0x169B,//Start
  296. [OED] = 0x169C,//End
  297. [Ox] = 0x1695,//X
  298. [gnd] = 0x23DA,//⏚
  299. [sqr] = 0x238D,//⎍, actually monostable
  300. [sine] = 0x223F,//∿
  301. [opt] = 0x2325,//⌥, actually option used for switch
  302. [geq] = 0x2264, //≤
  303. [leq] = 0x2265, //≥
  304. [brkup] = 0xFE38, //︸
  305. [brkdn] = 0xFE37, //︷
  306. [perup] = 0xFE35, //︵
  307. [perdn] = 0xFE36, //︶
  308. //GREEKL
  309. [rone] = 0x2170, // 1:: ⅰ
  310. [rtwo] = 0x2171, // 2:: ⅱ
  311. [rthree] = 0x2172, // 3:: ⅲ
  312. [rfour] = 0x2173, // 4:: ⅳ
  313. [rfive] = 0x2174, // 5:: ⅴ
  314. [rsix] = 0x2175, // 6:: ⅵ
  315. [rseven] = 0x2176, // 7:: ⅶ
  316. [reight] = 0x2177, // 8:: ⅷ
  317. [rnine] = 0x2178, // 9:: ⅸ
  318. [rten] = 0x2179, // 0:: ⅹ
  319. [gq] = 0x03B8, // q:: θ
  320. [gw] = 0x03C9, // w:: ω
  321. [ge] = 0x03B5, // e:: ε
  322. [gr] = 0x03C1, // r:: ρ
  323. [gt] = 0x03C4, // t:: τ
  324. [gy] = 0x03C8, // y:: ψ
  325. [gu] = 0x03C5, // u:: υ
  326. [gi] = 0x03B9, // i:: ι
  327. [go] = 0x03BF, // o:: ο
  328. [gp] = 0x03C0, // p:: π
  329. [ga] = 0x03B1, // a:: α
  330. [gs] = 0x03C3, // s:: σ
  331. [gd] = 0x03B4, // d:: δ
  332. [gf] = 0x03C6, // f:: φ
  333. [gg] = 0x03B3, // g:: γ
  334. [gh] = 0x03B7, // h:: η
  335. [gj] = 0x03D1, // j:: ϑ
  336. [gk] = 0x03BA, // k:: κ
  337. [gl] = 0x03BB, // l:: λ
  338. [gz] = 0x03B6, // z:: ζ
  339. [gx] = 0x03BE, // x:: ξ
  340. [gc] = 0x03C7, // c:: χ
  341. [gv] = 0x03C2, // v:: ς
  342. [gb] = 0x03B2, // b:: β
  343. [gn] = 0x03BD, // n:: ν
  344. [gm] = 0x03BC, // m:: μ
  345. //GREEKU
  346. [Rone] = 0x2160, // 1:: Ⅰ
  347. [Rtwo] = 0x2161, // 2:: Ⅱ
  348. [Rthree] = 0x2162, // 3:: Ⅲ
  349. [Rfour] = 0x2163, // 4:: Ⅳ
  350. [Rfive] = 0x2164, // 5:: Ⅴ
  351. [Rsix] = 0x2165, // 6:: Ⅵ
  352. [Rseven] = 0x2166, // 7:: Ⅶ
  353. [Reight] = 0x2167, // 8:: Ⅷ
  354. [Rnine] = 0x2168, // 9:: Ⅸ
  355. [Rten] = 0x2169, // 0:: Ⅹ
  356. [Gq] = 0x0398, // Q:: Θ
  357. [Gw] = 0x03A9, // W:: Ω
  358. [Ge] = 0x0395, // E:: Ε
  359. [Gr] = 0x03A1, // R:: Ρ
  360. [Gt] = 0x03A4, // T:: Τ
  361. [Gy] = 0x03A8, // Y:: Ψ
  362. [Gu] = 0x03A5, // U:: Υ
  363. [Gi] = 0x0399, // I:: Ι
  364. [Go] = 0x039F, // O:: Ο
  365. [Gp] = 0x03A0, // P:: Π
  366. [Ga] = 0x0391, // A:: Α
  367. [Gs] = 0x03A3, // S:: Σ
  368. [Gd] = 0x0394, // D:: Δ
  369. [Gf] = 0x03A6, // F:: Φ
  370. [Gg] = 0x0393, // G:: Γ
  371. [Gh] = 0x0397, // H:: Η
  372. [Gj] = 0x004A, // J:: J
  373. [Gk] = 0x039A, // K:: Κ
  374. [Gl] = 0x039B, // L:: Λ
  375. [Gz] = 0x0396, // Z:: Ζ
  376. [Gx] = 0x039E, // X:: Ξ
  377. [Gc] = 0x03A7, // C:: Χ
  378. [Gv] = 0x0056, // V:: V
  379. [Gb] = 0x0392, // B:: Β
  380. [Gn] = 0x039D, // N:: Ν
  381. [Gm] = 0x039C, // M:: Μ
  382. };
  383. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  384. [BASE] = LAYOUT_ergodox( // layer 0 : default
  385. KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV,
  386. KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_BSLS,
  387. KC_EQL, KC_A, KC_O, KC_E, KC_U, KC_I,
  388. KC_LSPO, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_AMPR,
  389. OSL(FNLR), TT(GREL), TT(MATH), KC_UP, KC_DOWN,
  390. KC_LBRC, KC_HOME, KC_INS, KC_SPC, KC_LGUI, KC_DEL,
  391. OSL(FNLR), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
  392. KC_PGUP, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
  393. KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
  394. KC_PGDN, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSPC,
  395. KC_LEFT, KC_RIGHT, KC_RALT, TT(SYMB), TT(QWER),
  396. KC_END, KC_RBRC, KC_PSCR, KC_RALT, KC_RCTL, KC_ENT
  397. ),
  398. [FNLR] = LAYOUT_ergodox(
  399. // left hand
  400. KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO,
  401. KC_NO,KC_F11, KC_F12, KC_F13,KC_F14, KC_F15, KC_NO,
  402. KC_NO,KC_F21, KC_F22, KC_F23,KC_F24, KC_NO,
  403. KC_NO,KC_PAUSE,KC_PSCR,KC_SLCK,KC_NO,KC_NO,KC_NO,
  404. EEP_RST,TO(BASE),TO(BASE),TO(BASE),TO(BASE),
  405. KC_NO,KC_NO,
  406. KC_NO,
  407. KC_NO,KC_NO,KC_NO,
  408. // right hand
  409. TO(BASE), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, UC_M_LN,
  410. KC_NO, KC_F16, KC_F17,KC_F18, KC_F19, KC_F20, UC_M_WI,
  411. KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
  412. KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
  413. KC_NO,KC_NO, KC_NO, KC_NO, KC_NO,
  414. KC_NO, KC_NO,
  415. KC_NO,
  416. KC_NO, KC_RCTL, KC_NO
  417. ),
  418. [QWER] = LAYOUT_ergodox(
  419. KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV,
  420. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSLS,
  421. KC_AMPR, KC_A, KC_S, KC_D, KC_F, KC_G,
  422. KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_QUOT,
  423. KC_BSLS, KC_LCTL, KC_LGUI, KC_RALT, KC_APP,
  424. KC_LBRC, KC_HOME, KC_PGUP, KC_SPC, KC_LSFT, KC_PGDN,
  425. OSL(FNLR), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
  426. KC_MINS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SLSH,
  427. KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
  428. KC_EQL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
  429. KC_UP, KC_DOWN, KC_LEFT, KC_RIGHT, TO(BASE),
  430. KC_END, KC_INS, KC_DEL, KC_RGHT, KC_ENT, KC_SPC
  431. ),
  432. [MATH] = LAYOUT_ergodox(
  433. KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV,
  434. KC_TAB, X(Mc), X(Munion), X(arwl), X(or), X(exists), KC_BSLASH,
  435. X(arwr), X(root), X(and), X(imply), X(nexists), X(forall),
  436. KC_LSPO, KC_SCLN, X(intgrl), X(Mn), X(Mz), X(member), X(arwl),
  437. KC_MS_L, TO(BASE), TO(BASE), KC_INS, KC_DEL,
  438. KC_LBRC, KC_HOME, KC_UP, KC_SPC, KC_LGUI, KC_DOWN,
  439. TT(FNLR), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
  440. KC_PGUP, X(plsminus), X(infin), X(neleof), X(equiv), X(Mq), KC_EQL,
  441. X(sum), X(emtyset), X(porp), X(suprsetof), X(not), X(neq),
  442. KC_PGDN, X(subsetof), X(intersection), X(angl), X(nmember), X(eleof), KC_RSPC,
  443. KC_RCTL, KC_RALT, KC_APP, TO(BASE), TO(BASE),
  444. KC_END, KC_RBRC, KC_LEFT, KC_RGHT, KC_ENT, KC_SPC
  445. ),
  446. [SYMB] = LAYOUT_ergodox(
  447. X(Os), X(Oa), X(Ob), X(Oc), X(Od), X(Oe), X(mdot),
  448. X(boxemp), X(bbstr), X(bbrtr), X(bbrtl), X(bbstl), X(degree), X(brkdn),
  449. X(boxchk), X(bbmbl), X(bbml), X(bbmr), X(bbmbr), X(neteen),
  450. X(boxX), X(bbsbr), X(bbrbr), X(bbrbl), X(bbsbl), X(uxclm), X(brkup),
  451. X(floppy), TO(BASE), TO(BASE), X(arwu), X(arwd),
  452. X(fire), X(lshade), X(mshade), KC_SPC, X(OS), X(dshade),
  453. X(Ox), X(Of), X(Og), X(Oh), X(Oi), X(OA), X(OB),
  454. X(numero), X(trade), X(copy), X(cleft), X(cent), X(OED), X(OC),
  455. X(Agrave), X(gnd), X(sqr), X(sine), X(opt), X(OD),
  456. X(sect), X(Aacute), X(Acircm), X(Adiaer), X(Abreve), X(Atilde), X(OE),
  457. X(arwl), X(arwr), X(geq), X(leq), X(OF),
  458. X(rang), X(water), X(perup), X(perdn), X(baster), KC_ENT
  459. ),
  460. [GREL] = LAYOUT_ergodox(
  461. KC_ESC, X(Rone), X(Rtwo), X(Rthree), X(Rfour), X(Rfive), KC_GRV,
  462. KC_TAB, KC_QUOT, KC_COMM, KC_DOT, X(gp), X(gy), KC_SLSH,
  463. KC_SLSH, X(ga), X(go), X(ge), X(gu), X(gi),
  464. MO(GREU), KC_SCLN, X(gq), X(gj), X(gk), X(gx), KC_AMPR,
  465. KC_MS_L, TO(BASE), TO(BASE), KC_INS, KC_DEL,
  466. KC_LBRC, KC_HOME, KC_UP, KC_SPC, KC_LGUI, KC_DOWN,
  467. TO(BASE), X(Rsix), X(Rseven), X(Reight), X(Rnine), X(Rten), KC_BSPC,
  468. KC_PGUP, X(gf), X(gg), X(gc), X(gr), X(gl), KC_EQL,
  469. X(gd), X(gh), X(gt), X(gn), X(gs), KC_MINS,
  470. KC_PGDN, X(gb), X(gm), X(gw), X(gv), X(gz), MO(GREU),
  471. KC_RCTL, KC_RALT, KC_APP, TO(BASE), TO(BASE),
  472. KC_END, KC_RBRC, KC_LEFT, KC_RGHT, KC_ENT, KC_SPC
  473. ),
  474. [GREU] = LAYOUT_ergodox(
  475. KC_ESC, X(Rone), X(Rtwo), X(Rthree), X(Rfour), X(Rfive), KC_GRV,
  476. KC_TAB, KC_QUOT, KC_COMM, KC_DOT, X(Gp), X(Gy), KC_SLSH,
  477. KC_SLSH, X(Ga), X(Go), X(Ge), X(Gu), X(Gi),
  478. KC_TRNS, KC_SCLN, X(Gq), X(Gj), X(Gk), X(Gx), KC_AMPR,
  479. KC_MS_L, TO(BASE), TO(BASE), KC_INS, KC_DEL,
  480. KC_LBRC, KC_HOME, KC_UP, KC_SPC, KC_LGUI, KC_DOWN,
  481. TO(BASE), X(Rsix), X(Rseven), X(Reight), X(Rnine), X(Rten), KC_BSPC,
  482. KC_PGUP, X(Gf), X(Gg), X(Gc), X(Gr), X(Gl), KC_EQL,
  483. X(Gd), X(Gh), X(Gt), X(Gn), X(Gs), KC_MINS,
  484. KC_PGDN, X(Gb), X(Gm), X(Gw), X(Gv), X(Gz), KC_TRNS,
  485. KC_RCTL, KC_RALT, KC_APP, TO(BASE), TO(BASE),
  486. KC_END, KC_RBRC, KC_LEFT, KC_RGHT, KC_ENT, KC_SPC
  487. ),
  488. };
  489. // Runs just one time when the keyboard initializes.
  490. void matrix_init_user(void) {
  491. };
  492. // Runs constantly in the background, in a loop.
  493. void matrix_scan_user(void) {
  494. uint8_t layer = biton32(layer_state);
  495. ergodox_board_led_off();
  496. ergodox_right_led_1_off();
  497. ergodox_right_led_2_off();
  498. ergodox_right_led_3_off();
  499. switch (layer) {
  500. // TODO: Make this relevant to the ErgoDox EZ.
  501. case 1:
  502. ergodox_right_led_1_on();
  503. break;
  504. case 2:
  505. ergodox_right_led_2_on();
  506. break;
  507. default:
  508. // none
  509. break;
  510. }
  511. };