2
0

keymap.c 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. // pvinis' ergodox keymap
  2. #include "ergodox.h"
  3. #include "mousekey.h"
  4. // easier name for left ctrl-alt-gui
  5. #define ALLM(kc) LCAG(kc)
  6. // layers
  7. enum {
  8. BASE = 0,
  9. BEGIN,
  10. QWERTY,
  11. CARPALX,
  12. SYSCTL,
  13. MOUSE,
  14. };
  15. // extra keys
  16. enum {
  17. NONE = 0,
  18. // tap dance
  19. TD_FLSH, // flash keyboard
  20. };
  21. // application selection
  22. // this is sending ctrl-alt-gui-<key>, and this is picked up by hammerspoon
  23. #define AP_SLCK ALLM(KC_S)
  24. #define AP_XCOD ALLM(KC_X)
  25. #define AP_MSGR ALLM(KC_M)
  26. // keymaps
  27. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  28. /* BASE
  29. * the base of the keyboard.
  30. *
  31. * ,--------------------------------------------------. ,--------------------------------------------------.
  32. * |4x FLASH| | | | | | | | | | | | | | |
  33. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  34. * | | | | | | | | | | | | | | | |
  35. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  36. * | | | | | | |------| |------| | | | | | |
  37. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  38. * | | | | | | | | | | | | | | | |
  39. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  40. * | | | | | | | | | | | |
  41. * `----------------------------------' `----------------------------------'
  42. * ,-------------. ,-------------.
  43. * |BEGIN |QWERTY| | | |
  44. * ,------|------|------| |------+--------+------.
  45. * | | |CARPAL| |Slack | | |
  46. * |Backsp|LShift|------| |------| Enter |Space |
  47. * | | |SYSCTL| |Msngr | | |
  48. * `--------------------' `----------------------'
  49. */
  50. [BASE] = KEYMAP(
  51. TD(TD_FLSH) ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  52. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  53. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  54. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  55. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  56. ,TG(BEGIN) ,TG(QWERTY)
  57. ,TG(CARPALX)
  58. ,KC_BSPC ,KC_LSFT ,TG(SYSCTL)
  59. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  60. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  61. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  62. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  63. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  64. ,TG(SYSCTL) ,KC_NO
  65. ,AP_SLCK
  66. ,AP_MSGR ,KC_ENT ,KC_SPC
  67. ),
  68. /* BEGIN
  69. * a beginner's keymap i currently use.
  70. *
  71. * ,--------------------------------------------------. ,--------------------------------------------------.
  72. * | | 1 | 2 | 3 | 4 | 5 | opt | | 6 | 7 | 8 | 9 | 0 | - | = |
  73. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  74. * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
  75. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  76. * |Esc/Ctrl| A | S | D | F | G |------| |------| H | J | K | L | ; | Enter |
  77. * |--------+------+------+------+------+------| ( | | ) |------+------+------+------+------+--------|
  78. * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
  79. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  80. * | | ` | Cmd | | Cmd | | | | | ' | |
  81. * `----------------------------------' `----------------------------------'
  82. * ,-------------. ,-------------.
  83. * | | | | | |
  84. * ,------|------|------| |------+--------+------.
  85. * | | | | | | | |
  86. * | | |------| |------| | |
  87. * | | | | | | | |
  88. * `--------------------' `----------------------'
  89. */
  90. [BEGIN] = KEYMAP(
  91. KC_TRNS ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_LALT
  92. ,KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC
  93. ,CTL_T(KC_ESC) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G
  94. ,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LPRN
  95. ,KC_TRNS ,KC_GRV ,KC_LGUI ,KC_LEFT ,KC_RIGHT
  96. ,KC_TRNS ,KC_TRNS
  97. ,KC_TRNS
  98. ,KC_TRNS ,KC_TRNS ,KC_TRNS
  99. ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS ,KC_EQL
  100. ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS
  101. ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT
  102. ,KC_RPRN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT
  103. ,KC_UP ,KC_DOWN ,KC_TRNS ,KC_QUOT ,KC_TRNS
  104. ,KC_TRNS ,KC_TRNS
  105. ,KC_TRNS
  106. ,KC_TRNS ,KC_TRNS ,KC_TRNS
  107. ),
  108. /* QWERTY
  109. * the default qwerty keymap. not really used, but i'll keep it here for now.
  110. *
  111. * ,--------------------------------------------------. ,--------------------------------------------------.
  112. * | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
  113. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  114. * | | Q | W | E | R | T | | | | Y | U | I | O | P | |
  115. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  116. * | | A | S | D | F | G |------| |------| H | J | K | L | ; | |
  117. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  118. * | | Z | X | C | V | B | | | | N | M | , | . | / | |
  119. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  120. * | | | | | | | | | | | |
  121. * `----------------------------------' `----------------------------------'
  122. * ,-------------. ,-------------.
  123. * | | | | | |
  124. * ,------|------|------| |------+--------+------.
  125. * | | | | | | | |
  126. * | | |------| |------| | |
  127. * | | | | | | | |
  128. * `--------------------' `----------------------'
  129. */
  130. [QWERTY] = KEYMAP(
  131. KC_TRNS ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_TRNS
  132. ,KC_TRNS ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_TRNS
  133. ,KC_TRNS ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G
  134. ,KC_TRNS ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_TRNS
  135. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  136. ,KC_TRNS ,KC_TRNS
  137. ,KC_TRNS
  138. ,KC_TRNS ,KC_TRNS ,KC_TRNS
  139. ,KC_TRNS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_TRNS
  140. ,KC_TRNS ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_TRNS
  141. ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_TRNS
  142. ,KC_TRNS ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_TRNS
  143. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  144. ,KC_TRNS ,KC_TRNS
  145. ,KC_TRNS
  146. ,KC_TRNS ,KC_TRNS ,KC_TRNS
  147. ),
  148. /* CARPALX
  149. * the keymap i would like to transition to.
  150. *
  151. * ,--------------------------------------------------. ,--------------------------------------------------.
  152. * | | 1 | 2 | 3 | 4 | 5 | | | RIGHT| 6 | 7 | 8 | 9 | 0 | |
  153. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  154. * | | Q | G | M | L | W | | | L1 | Y | F | U | B | ; | |
  155. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  156. * | | D | S | T | N | R |------| |------| I | A | E | O | H | |
  157. * |--------+------+------+------+------+------| | | Meh |------+------+------+------+------+--------|
  158. * | | Z | X | C | V | J | | | | K | P | , | . | / | |
  159. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  160. * | | | | | | | Up | | | | |
  161. * `----------------------------------' `----------------------------------'
  162. * ,-------------. ,-------------.
  163. * | | | | | |
  164. * ,------|------|------| |------+------+------.
  165. * | | | | | | | |
  166. * | | |------| |------| | |
  167. * | | | | | | | |
  168. * `--------------------' `--------------------'
  169. */
  170. [CARPALX] = KEYMAP(
  171. KC_TRNS ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_TRNS
  172. ,KC_TRNS ,KC_Q ,KC_G ,KC_M ,KC_L ,KC_W ,KC_TRNS
  173. ,KC_TRNS ,KC_D ,KC_S ,KC_T ,KC_N ,KC_R
  174. ,KC_TRNS ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_J ,KC_TRNS
  175. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  176. ,KC_TRNS ,KC_TRNS
  177. ,KC_TRNS
  178. ,KC_TRNS ,KC_TRNS ,KC_TRNS
  179. ,KC_TRNS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_TRNS
  180. ,KC_TRNS ,KC_Y ,KC_F ,KC_U ,KC_B ,KC_SCLN ,KC_TRNS
  181. ,KC_I ,KC_A ,KC_E ,KC_O ,KC_H ,KC_TRNS
  182. ,KC_TRNS ,KC_K ,KC_P ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_TRNS
  183. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  184. ,KC_TRNS ,KC_TRNS
  185. ,KC_TRNS
  186. ,KC_TRNS ,KC_TRNS ,KC_TRNS
  187. ),
  188. /* SYSCTL
  189. * a keymap to control my system.
  190. *
  191. * ,--------------------------------------------------. ,------------------------------------------------------.
  192. * | ^ | | | | | | | | | | | | | | |
  193. * |--------+------+------+------+------+-------------| |------+------+------+----------+------+------+--------|
  194. * | | | | | | | | | | Mute | Home | Up | End | | |
  195. * |--------+------+------+------+------+------| | | |------+------+----------+------+------+--------|
  196. * | | | | | | |------| |------|VolUp | Left | Down |Right | | Lock |
  197. * |--------+------+------+------+------+------| | | |------+------+----------+------+------+--------|
  198. * | | | | | | | | | |VolDn | Prev |Play/Pause| Next | | Sleep |
  199. * `--------+------+------+------+------+-------------' `-------------+------+----------+------+------+--------'
  200. * | | | | | | | | | | | Power|
  201. * `----------------------------------' `--------------------------------------'
  202. * ,-------------. ,-------------.
  203. * | | | | | |
  204. * ,------|------|------| |------+------+------.
  205. * | | | | | | | |
  206. * | | |------| |------| | |
  207. * | | | ^ | | | | |
  208. * `--------------------' `--------------------'
  209. */
  210. [SYSCTL] = KEYMAP(
  211. KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  212. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  213. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  214. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  215. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  216. ,KC_NO ,KC_NO
  217. ,KC_NO
  218. ,KC_NO ,KC_NO ,KC_TRNS
  219. /*,KC_POP /// */,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  220. /* /// ,KC_PTRN*/,KC_NO ,KC_MUTE ,KC_HOME ,KC_UP ,KC_END ,KC_NO ,KC_NO
  221. ,KC_VOLU ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_NO ,LCTL(LSFT(KC_PWR))
  222. ,KC_NO ,KC_VOLD ,KC_MPRV ,KC_MPLY ,KC_MNXT ,KC_NO ,KC_SLEP
  223. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_PWR
  224. ,KC_NO ,KC_NO
  225. ,KC_NO
  226. ,KC_NO ,KC_NO ,KC_NO
  227. ),
  228. /* MOUSE
  229. * a keymap to control my system.
  230. *
  231. * ,--------------------------------------------------. ,--------------------------------------------------.
  232. * | ^ | | | | | | | | | | | | | | |
  233. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  234. * | | | | | | | | | | | | MsUp | | | |
  235. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  236. * | | | | | | |------| |------| |MsLeft| MsDn |MsRght| | |
  237. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  238. * | | | | | | | | | | | | | | | |
  239. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  240. * | | | | | | | | | | | |
  241. * `----------------------------------' `----------------------------------'
  242. * ,-------------. ,-------------.
  243. * | | | | |MidClk|
  244. * ,------|------|------| |------+------+------.
  245. * | | | | | |Left |Right |
  246. * | | |------| |------| Click| Click|
  247. * | | | ^ | | | | |
  248. * `--------------------' `--------------------'
  249. */
  250. [MOUSE] = KEYMAP(
  251. KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  252. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  253. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  254. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  255. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  256. ,KC_NO ,KC_NO
  257. ,KC_NO
  258. ,KC_NO ,KC_NO ,KC_TRNS
  259. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  260. ,KC_NO ,KC_NO ,KC_NO ,KC_MS_U ,KC_NO ,KC_NO ,KC_NO
  261. ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO
  262. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  263. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  264. ,KC_NO ,KC_NO
  265. ,KC_NO
  266. ,KC_NO ,KC_NO ,KC_NO
  267. ),
  268. /* TEMPLATE
  269. * keymap template with transparent and non-transparent keys
  270. *
  271. * ,--------------------------------------------------. ,--------------------------------------------------.
  272. * | | | | | | | | | | | | | | | |
  273. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  274. * | | | | | | | | | | | | | | | |
  275. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  276. * | | | | | | |------| |------| | | | | | |
  277. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  278. * | | | | | | | | | | | | | | | |
  279. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  280. * | | | | | | | | | | | |
  281. * `----------------------------------' `----------------------------------'
  282. * ,-------------. ,-------------.
  283. * | | | | | |
  284. * ,------|------|------| |------+--------+------.
  285. * | | | | | | | |
  286. * | | |------| |------| | |
  287. * | | | | | | | |
  288. * `--------------------' `----------------------'
  289. */
  290. /*
  291. [TEMPLATE] = KEYMAP(
  292. KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  293. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  294. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  295. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  296. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  297. ,KC_TRNS ,KC_TRNS
  298. ,KC_TRNS
  299. ,KC_TRNS ,KC_TRNS ,KC_TRNS
  300. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  301. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  302. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  303. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  304. ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
  305. ,KC_TRNS ,KC_TRNS
  306. ,KC_TRNS
  307. ,KC_TRNS ,KC_TRNS ,KC_TRNS
  308. ),
  309. [TEMPLATE] = KEYMAP(
  310. KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  311. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  312. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  313. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  314. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  315. ,KC_NO ,KC_NO
  316. ,KC_NO
  317. ,KC_NO ,KC_NO ,KC_NO
  318. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  319. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  320. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  321. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  322. ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  323. ,KC_NO ,KC_NO
  324. ,KC_NO
  325. ,KC_NO ,KC_NO ,KC_NO
  326. ),
  327. */
  328. };
  329. // keyboard initialization
  330. void matrix_init_user() {
  331. ergodox_led_all_on();
  332. for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
  333. ergodox_led_all_set(i);
  334. wait_ms(5);
  335. }
  336. wait_ms(1000);
  337. for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
  338. ergodox_led_all_set(i);
  339. wait_ms(10);
  340. }
  341. ergodox_led_all_off();
  342. }
  343. // extra keys
  344. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
  345. switch (id) {
  346. }
  347. return MACRO_NONE;
  348. }
  349. // tap dances
  350. // flash keyboard on 4x tap, with leds
  351. void flash_each_tap(qk_tap_dance_state_t *state, void *user_data) {
  352. switch (state->count) {
  353. case 1:
  354. ergodox_right_led_3_on();
  355. break;
  356. case 2:
  357. ergodox_right_led_2_on();
  358. break;
  359. case 3:
  360. ergodox_right_led_1_on();
  361. break;
  362. case 4:
  363. ergodox_right_led_3_off();
  364. wait_ms(50);
  365. ergodox_right_led_2_off();
  366. wait_ms(50);
  367. ergodox_right_led_1_off();
  368. break;
  369. }
  370. }
  371. void flash_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
  372. if (state->count >= 4) {
  373. reset_keyboard();
  374. reset_tap_dance(state);
  375. }
  376. }
  377. void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) {
  378. ergodox_right_led_1_off();
  379. wait_ms(50);
  380. ergodox_right_led_2_off();
  381. wait_ms(50);
  382. ergodox_right_led_3_off();
  383. }
  384. qk_tap_dance_action_t tap_dance_actions[] = {
  385. [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),
  386. };