You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

326 lines
17 KiB

  1. #include QMK_KEYBOARD_H
  2. #include "version.h"
  3. #include "danielo515.h"
  4. /* STUPID JS code to split by ergodox rows. Call the format function with the unformatted array
  5. sliceBy = groups => items => groups.reduce(({start, acc},size) => ({
  6. acc: (acc.push(items.slice(start,start+size)),acc ),
  7. start: start + size
  8. }), {acc:[],start:0}).acc
  9. findMaxLen = items => items.reduce((max,curr) => max < curr.length ? curr.length : max,0)
  10. setLen = len => strings => strings.map(str => str.padEnd(len, " "));
  11. const format = string => {
  12. const items = string.split(/,\s*(?![^()]*\))/)
  13. const group = sliceBy([7,7,6,7,5,2,1,3])
  14. const resize = setLen(findMaxLen(items));
  15. const joinstr = ',\n'
  16. const leftItems = group(items.slice(0,items.length/2))
  17. const rightItems = group(items.slice(items.length/2))
  18. const [left,right] = [leftItems.map(resize).join(joinstr),rightItems.map(resize).join(joinstr)]
  19. return `\n${left},\n\n${right}\n`
  20. }
  21. */
  22. #define OSM_SF_CMD OSM(MOD_LGUI | MOD_LSFT)
  23. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  24. [0] = LAYOUT_ergodox(
  25. KC_EQL ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,OSM(MOD_HYPR) ,
  26. KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,TD(PASTE_DANCE) ,
  27. KC_DELETE ,KC_A ,LT(3,KC_S) ,LT(2,KC_D) ,LT(4,KC_F) ,KC_G ,
  28. KC_GRAVE ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,TD(COPY_CUT) ,
  29. KC_BSLS ,OSM(MOD_LCTL) ,OSM(MOD_LALT) ,KC_LEFT ,KC_RIGHT ,
  30. OSM_SF_CMD ,KC_PLUS ,
  31. KC_INSERT ,
  32. OSM(MOD_LSFT) ,LT(2,KC_BSPC) ,OSM(MOD_LGUI) ,
  33. TO(1) ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,LT(3,KC_0) ,KC_DQUO ,
  34. KC_UNDS ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,RSFT_T(KC_MINUS) ,
  35. HYPR_H ,ALT_J ,CTL_K ,LT(6,KC_L) ,TD_CLN ,CMD_QUOT ,
  36. ALT_TAB ,KC_N ,MEH_T(KC_M) ,KC_COMMA ,KC_DOT ,KC_SLASH ,LT(4,KC_KP_ASTERISK),
  37. LT(4,KC_ENTER) ,KC_DOWN ,KC_LBRC ,KC_RBRC ,OSL(2) ,
  38. KC_AUDIO_MUTE ,KC_ESCAPE ,
  39. KC_END ,
  40. KC_COLN ,KC_LEAD ,LT(4,KC_SPACE)
  41. ),
  42. [1] = LAYOUT_ergodox(
  43. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  44. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,AC_E ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  45. LT(5, KC_DELETE),AC_A ,KC_TRANSPARENT ,KC_TRANSPARENT ,FIND ,KC_TRANSPARENT ,
  46. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  47. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  48. KC_TRANSPARENT ,KC_TRANSPARENT ,
  49. KC_TRANSPARENT ,
  50. OSM(MOD_LSFT) ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  51. TO(8) ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  52. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  53. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  54. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  55. KC_ENTER ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  56. KC_TRANSPARENT ,KC_TRANSPARENT ,
  57. KC_TRANSPARENT ,
  58. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT),
  59. [2] = LAYOUT_ergodox(
  60. KC_TRANSPARENT,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRANSPARENT,
  61. KC_TRANSPARENT,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,KC_CALCULATOR ,
  62. KC_TRANSPARENT,KC_HASH ,KC_DLR ,KC_TRANSPARENT,KC_RPRN ,KC_GRAVE ,
  63. KC_TRANSPARENT,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TRANSPARENT,
  64. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  65. KC_TRANSPARENT,KC_TRANSPARENT,
  66. RGB_HUI ,
  67. KC_TRANSPARENT,KC_TRANSPARENT,RGB_HUD ,
  68. KC_DELETE ,KC_A ,KC_B ,KC_C ,KC_D ,KC_E ,KC_BSPC ,
  69. KC_ENTER ,KC_F ,KC_7 ,KC_8 ,KC_9 ,KC_PERC ,KC_TRANSPARENT,
  70. KC_HASH ,KC_4 ,KC_5 ,KC_6 ,KC_PLUS ,KC_KP_ASTERISK,
  71. KC_KP_ENTER ,KC_COLON ,KC_1 ,KC_2 ,KC_3 ,KC_SLASH ,KC_BSLS ,
  72. KC_0 ,KC_COMMA ,KC_DOT ,KC_EQUAL ,KC_TRANSPARENT,
  73. RGB_TOG ,RGB_SLD ,
  74. RGB_VAI ,
  75. RGB_VAD ,KC_BSPC ,KC_SPACE
  76. ),
  77. [3] = LAYOUT_ergodox(
  78. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  79. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_LABK ,KC_RABK ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  80. KC_TRANSPARENT ,KC_AT ,KC_TRANSPARENT ,KC_EQL ,F_ARROW ,KC_GRAVE ,
  81. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_LBRC ,KC_RBRC ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  82. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,IARROW ,ARROW ,
  83. KC_TRANSPARENT ,KC_TRANSPARENT ,
  84. KC_TRANSPARENT ,
  85. // Right hand
  86. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  87. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  88. LALT(LSFT(KC_UP)) ,KC_HASH ,KC_LCBR ,KC_RCBR ,KC_KP_ASTERISK ,KC_PERC ,KC_DLR ,
  89. KC_AMPR ,KC_LPRN ,KC_RPRN ,CLN_EQ ,KC_KP_PLUS ,KC_PIPE ,
  90. LALT(LSFT(KC_DOWN)),KC_EXLM ,KC_TILD ,KC_CIRC ,ARROW ,KC_BSLS ,KC_BSLS ,
  91. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  92. QK_BOOT ,KC_TRANSPARENT ,
  93. KC_TRANSPARENT ,
  94. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_SPACE
  95. ),
  96. [4] = LAYOUT_ergodox(
  97. KC_TRANSPARENT ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRANSPARENT ,
  98. KC_TRANSPARENT ,LCTL(KC_Q) ,LCTL(KC_DOWN) ,LGUI(KC_DOWN) ,WIN_LEFT_HALF ,WIN_RIGHT_HALF ,LALT(LSFT(KC_UP)) ,
  99. LCTL(LSFT(KC_P)) ,LCTL(KC_A) ,SAVE ,LCTL(KC_D) ,KC_TRANSPARENT ,RGUI(KC_R) ,
  100. LCTL(LSFT(KC_F)) ,UNDO ,CUT ,KC_PSCR ,KC_TRANSPARENT ,LGUI(KC_RIGHT) ,LALT(LSFT(KC_DOWN)),
  101. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  102. KC_TRANSPARENT ,KC_TRANSPARENT ,
  103. KC_TRANSPARENT ,
  104. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  105. LALT(KC_F4) ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
  106. LALT(KC_UP) ,LSFT(KC_HOME) ,LSFT(KC_LEFT) ,KC_UP ,LSFT(KC_RIGHT) ,LSFT(KC_END) ,KC_F13 ,
  107. KC_HOME ,KC_LEFT ,KC_DOWN ,KC_RIGHT ,KC_END ,KC_F12 ,
  108. LALT(KC_DOWN) ,LSFT(KC_INSERT) ,LCTL(LSFT(KC_J)) ,LSFT(KC_UP) ,KC_PGUP ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  109. KC_TRANSPARENT ,LSFT(KC_DOWN) ,KC_PGDN ,WIN_TO_LEFT ,WIN_TO_RIGHT ,
  110. KC_TRANSPARENT ,KC_SYSTEM_SLEEP ,
  111. KC_TRANSPARENT ,
  112. KC_TRANSPARENT ,KC_BSPC ,KC_TRANSPARENT
  113. ),
  114. [5] = LAYOUT_ergodox(
  115. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  116. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  117. KC_TRANSPARENT ,LCTL(KC_TAB) ,LCTL(LSFT(KC_TAB)) ,LGUI(KC_D) ,LCTL(KC_F) ,KC_TRANSPARENT ,
  118. LGUI(KC_L) ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  119. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  120. KC_TRANSPARENT ,KC_TRANSPARENT ,
  121. KC_TRANSPARENT ,
  122. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  123. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,LSFT(KC_F9) ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  124. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  125. KC_TRANSPARENT ,LCTL(LGUI(KC_LEFT)) ,LCTL(LGUI(KC_RIGHT)),KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  126. KC_TRANSPARENT ,LCTL(KC_T) ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  127. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  128. KC_TRANSPARENT ,KC_TRANSPARENT ,
  129. KC_TRANSPARENT ,
  130. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT
  131. ),
  132. [6] = LAYOUT_ergodox(
  133. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_MS_ACCEL2 ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  134. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_MS_WH_DOWN ,KC_MS_UP ,KC_MS_WH_UP ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  135. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_MS_LEFT ,KC_MS_DOWN ,KC_MS_RIGHT ,KC_TRANSPARENT ,
  136. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_MS_BTN3 ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  137. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  138. KC_TRANSPARENT ,KC_TRANSPARENT ,
  139. KC_TRANSPARENT ,
  140. KC_MS_BTN1 ,KC_MS_BTN2 ,KC_TRANSPARENT ,
  141. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  142. KC_PGUP ,LCTL(LGUI(KC_RIGHT)),KC_MS_WH_UP ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  143. LGUI(RCTL(KC_LEFT)) ,KC_MS_WH_DOWN ,LCTL(KC_C) ,KC_TRANSPARENT ,KC_MEDIA_STOP ,KC_MEDIA_PLAY_PAUSE ,
  144. KC_PGDN ,LCTL(LSFT(KC_N)) ,LCTL(LSFT(KC_J)) ,KC_MEDIA_PREV_TRACK ,KC_MEDIA_NEXT_TRACK ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  145. KC_AUDIO_VOL_UP ,KC_AUDIO_VOL_DOWN ,KC_AUDIO_MUTE ,KC_TRANSPARENT ,KC_TRANSPARENT ,
  146. KC_TRANSPARENT ,KC_TRANSPARENT ,
  147. KC_TRANSPARENT ,
  148. KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT
  149. ),
  150. [7] = LAYOUT_ergodox(
  151. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  152. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  153. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  154. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  155. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  156. KC_TRANSPARENT,KC_TRANSPARENT,
  157. KC_TRANSPARENT,
  158. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  159. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  160. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_UP ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  161. KC_TRANSPARENT,KC_LEFT ,KC_DOWN ,KC_RIGHT ,KC_TRANSPARENT,KC_TRANSPARENT,
  162. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  163. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  164. KC_TRANSPARENT,KC_TRANSPARENT,
  165. KC_TRANSPARENT,
  166. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT
  167. ),
  168. [8] = LAYOUT_ergodox(
  169. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  170. KC_TRANSPARENT,KC_Q ,KC_W ,KC_E ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  171. KC_ENTER ,KC_A ,KC_S ,KC_D ,KC_F ,KC_TRANSPARENT,
  172. KC_TRANSPARENT,KC_Z ,KC_X ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  173. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  174. KC_TRANSPARENT,KC_TRANSPARENT,
  175. KC_TRANSPARENT,
  176. KC_SPACE ,KC_LSFT ,KC_TRANSPARENT,
  177. TO(0) ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  178. KC_PGDN ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  179. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  180. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  181. KC_ENTER ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,
  182. KC_TRANSPARENT,KC_TRANSPARENT,
  183. KC_TRANSPARENT,
  184. KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT
  185. ),
  186. };
  187. // Used for blinking leds on layers higher than 7
  188. uint16_t blink_timer = 0;
  189. uint16_t blink_elapsed = 0;
  190. bool blink_led_1 = false;
  191. bool blink_led_2 = false;
  192. bool blink_led_3 = false;
  193. void matrix_scan_kb(void){
  194. // first 7 layers do not need to blink
  195. if(blink_led_1 || blink_led_2 || blink_led_3){
  196. ergodox_board_led_off();
  197. ergodox_right_led_1_off();
  198. ergodox_right_led_2_off();
  199. ergodox_right_led_3_off();
  200. blink_elapsed = timer_elapsed(blink_timer);
  201. if(blink_elapsed > 2000) { blink_timer = timer_read();}
  202. if(blink_elapsed < 1000) {
  203. if(blink_led_1) ergodox_right_led_1_on();
  204. if(blink_led_2) ergodox_right_led_2_on();
  205. if(blink_led_3) ergodox_right_led_3_on();
  206. }
  207. }
  208. matrix_scan_user();
  209. };
  210. layer_state_t layer_state_set_user(layer_state_t state)
  211. {
  212. uint8_t layer = get_highest_layer(state);
  213. ergodox_board_led_off();
  214. ergodox_right_led_1_off();
  215. ergodox_right_led_2_off();
  216. ergodox_right_led_3_off();
  217. blink_led_1=false;
  218. blink_led_2=false;
  219. blink_led_3=false;
  220. switch (layer)
  221. {
  222. case 0:
  223. rgblight_setrgb(0, 200, 200);
  224. break;
  225. case 1:
  226. ergodox_right_led_1_on();
  227. rgblight_setrgb(0, 200, 0); // green
  228. break;
  229. case 2:
  230. ergodox_right_led_2_on();
  231. rgblight_setrgb(0, 0, 255);
  232. break;
  233. case 3:
  234. ergodox_right_led_3_on();
  235. rgblight_setrgb(255, 0, 0);
  236. break;
  237. case 4:
  238. ergodox_right_led_1_on();
  239. ergodox_right_led_2_on();
  240. rgblight_setrgb(200, 65, 0);
  241. break;
  242. case 5:
  243. ergodox_right_led_1_on();
  244. ergodox_right_led_3_on();
  245. rgblight_setrgb(0, 80, 33);
  246. break;
  247. case 6:
  248. ergodox_right_led_2_on();
  249. ergodox_right_led_3_on();
  250. rgblight_setrgb(0, 10, 200);
  251. break;
  252. case 7:
  253. ergodox_right_led_1_on();
  254. ergodox_right_led_2_on();
  255. ergodox_right_led_3_on();
  256. rgblight_setrgb(90, 150, 90);
  257. break;
  258. case 8:
  259. blink_led_1=true;
  260. rgblight_setrgb(100, 0, 100);
  261. break;
  262. case 9:
  263. rgblight_setrgb(200, 150, 90);
  264. break;
  265. // default:
  266. // rgblight_setrgb(0, 200, 200);
  267. // break;
  268. }
  269. return state;
  270. };
  271. // use leds to indicate when a one shot mod is on
  272. void oneshot_mods_changed_user(uint8_t mods) {
  273. ergodox_board_led_off();
  274. ergodox_right_led_1_off();
  275. ergodox_right_led_2_off();
  276. ergodox_right_led_3_off();
  277. // One shot checks
  278. if (mods & MOD_MASK_SHIFT) {
  279. ergodox_right_led_1_on();
  280. }
  281. if (mods & MOD_MASK_CTRL) {
  282. ergodox_right_led_2_on();
  283. }
  284. if (mods & MOD_MASK_ALT) {
  285. ergodox_right_led_3_on();
  286. }
  287. // if (mods & MOD_MASK_GUI) {
  288. // println("Oneshot mods GUI");
  289. // }
  290. }
  291. void oneshot_locked_mods_changed_user(uint8_t mods) {
  292. oneshot_mods_changed_user(mods);
  293. }
  294. //=============== alt_tab callbacks
  295. void alt_tab_activated(void){
  296. layer_on(7); // activate motion layer
  297. }
  298. void alt_tab_deactivated(void){
  299. layer_off(7); // activate motion layer
  300. }