keymap.c 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828
  1. #include QMK_KEYBOARD_H
  2. #ifdef AUDIO_ENABLE
  3. float tone_caps[][2] = SONG( CAPS_LOCK_ON_SOUND );
  4. float tone_taps[][2] = SONG( E__NOTE( _A6 ) );
  5. #endif
  6. #define _BASE 0
  7. #define _CODE 1
  8. #define _NAVI 2
  9. #define _FUNC 3
  10. #define _SYMB 4
  11. #define _NUMB 5
  12. #define _MARO 6
  13. #define _RGB 7
  14. #define _ADJUST 8
  15. #define _GAME 9
  16. /* RGB colors */
  17. #define RGB_Layer_1_Base_Color 0, 128, 0
  18. #define RGB_Layer_2_Base_Color 0,0,0
  19. #define RGB_Layer_3_Base_Color 0,0,0
  20. #define RGB_Layer_4_Base_Color 0,0,0
  21. #define RGB_Layer_5_Base_Color 0,0,0
  22. #define RGB_Layer_6_Base_Color 64, 0, 64
  23. #define RGB_Layer_7_Base_Color 0, 0,0
  24. #define RGB_Layer_8_Base_Color 0,0,0
  25. #define RGB_Layer_9_Base_Color 0,0,0
  26. #define RGB_Caps_Color 6,50,50
  27. #define RGB_TAP_On_Color 0,128,0
  28. #define RGB_TAP_Off_Color 128,0,0
  29. #define RGB_TAP_Base_Color 0,0,0
  30. extern rgblight_config_t rgblight_config;
  31. bool NUMLAY_STATUS = false;
  32. int RGB_LAYER0_mode = 6;
  33. bool RGB_TAP_STATE = false;
  34. static uint8_t current_layer = 0;
  35. static bool has_layer_changed = true;
  36. static bool save_rgbmode = true;
  37. static bool caps = false;
  38. /* Tap Dance function */
  39. void dance_cln_finished( qk_tap_dance_state_t* state, void* user_data )
  40. {
  41. if ( state->count == 1 )
  42. {
  43. register_code( KC_LSFT );
  44. } else {
  45. layer_on( _SYMB );
  46. #ifdef AUDIO_ENABLE
  47. PLAY_SONG( tone_taps );
  48. #endif
  49. }
  50. }
  51. void dance_cln_reset( qk_tap_dance_state_t* state, void* user_data )
  52. {
  53. if ( state->count == 1 )
  54. {
  55. unregister_code( KC_LSFT );
  56. }else {
  57. uint8_t layer = biton32( layer_state );
  58. if ( layer == _SYMB )
  59. {
  60. layer_off( _SYMB );
  61. rgblight_mode( RGB_LAYER0_mode );
  62. }
  63. }
  64. }
  65. enum my_keycodes {
  66. RGB_TAP = SAFE_RANGE,
  67. KC_00
  68. };
  69. /* Tap Dance Declarations */
  70. enum {
  71. TD_Mute_Next = 0,
  72. TD_SFT,
  73. TD_LBRC,
  74. TD_RBRC
  75. };
  76. /* Tap Dance Definitions */
  77. qk_tap_dance_action_t tap_dance_actions[] = {
  78. [TD_Mute_Next] = ACTION_TAP_DANCE_DOUBLE( KC_MUTE, KC_MNXT )
  79. ,[TD_SFT] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, dance_cln_finished, dance_cln_reset )
  80. ,[TD_LBRC] = ACTION_TAP_DANCE_DOUBLE( KC_LBRC, KC_LCBR )
  81. ,[TD_RBRC] = ACTION_TAP_DANCE_DOUBLE( KC_RBRC, KC_RCBR )
  82. };
  83. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  84. /* BASE - QWERTY
  85. * ,-----------------------------------------------------------------------------------.
  86. * | Tab | Q | W | E | R | T | Y | U | I | O | P | BS |
  87. * |------+------+------+------+------+-------------+------+------+------+------+------|
  88. * shift + Esc = ~ --> | Esc | A | S | D | F | G | H | J | K | L | ; | Enter| <-- shift + Enter = "
  89. * |------+------+------+------+------+------|------+------+------+------+------+------|
  90. * | Shift| Z | X | C | V | B | N | M | , | . | / | Mute |
  91. * |------+------+------+------+------+------+------+------+------+------+------+------| <-- tap: 1.Mute 2.Next
  92. * | Ctrl | GUI | Alt | [ | - | Space | = | ] | Fx | \ | Del |
  93. * `-----------------------------------------------------------------------------------'
  94. */
  95. [_BASE] = LAYOUT_planck_mit(
  96. LT( _ADJUST,KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
  97. LT( _NUMB,KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT( _RGB, KC_L ), KC_SCLN, KC_ENT,
  98. TD( TD_SFT ), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, TD( TD_Mute_Next ),
  99. KC_LCTL, KC_LGUI, KC_LALT, TD( TD_LBRC ), LT( _NAVI, KC_MINS ), LT( _CODE, KC_SPC ), LT( _FUNC, KC_EQL ), TD( TD_RBRC ), KC_LEFT, KC_DOWN, KC_RGHT ),
  100. /* Code
  101. * ,-----------------------------------------------------------------------------------.
  102. * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
  103. * |------+------+------+------+------+-------------+------+------+------+------+------|
  104. * | ` | < | [ | { | ( | & | Left | Down | Up | Down | ; | ' |
  105. * |------+------+------+------+------+------|------+------+------+------+------+------|
  106. * | | > | ] | } | ) | | | | | , | . | / | Play |
  107. * |------+------+------+------+------+------+------+------+------+------+------+------|
  108. * | | | | [ | BkSp | ======= | Del | ] | | \ | |
  109. * `-----------------------------------------------------------------------------------'
  110. */
  111. [_CODE] = LAYOUT_planck_mit( /* 1 - Code */
  112. _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
  113. KC_GRV, KC_LABK, KC_LBRC, KC_LCBR, KC_LPRN, KC_AMPR, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_QUOT,
  114. _______, KC_RABK, KC_RBRC, KC_RCBR, KC_RPRN, KC_PIPE, XXXXXXX, XXXXXXX, _______, _______, KC_SLSH, KC_MPLY,
  115. _______, _______, _______, KC_LBRC, KC_BSPC, _______, KC_DEL, KC_RBRC, _______, KC_BSLS, _______ ),
  116. /* Navi
  117. * ,-----------------------------------------------------------------------------------.
  118. * | | | | PgUp | | | | |Insert| |Prtsc | |
  119. * |------+------+------+------+------+-------------+------+------+------+------+------|
  120. * | ~ | | Home | PgDn | End | | | | |SrcLck| | |
  121. * |------+------+------+------+------+------|------+------+------+------+------+------|
  122. * | | | | | | Break| | | | | PgUp | |
  123. * |------+------+------+------+------+------+------+------+------+------+------+------|
  124. * | | | | | | | | | Home | PgDn | End |
  125. * `-----------------------------------------------------------------------------------'
  126. */
  127. [_NAVI] = LAYOUT_planck_mit(
  128. _______, XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, XXXXXXX, KC_PSCR, _______,
  129. KC_TILD, XXXXXXX, KC_HOME, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, _______, _______,
  130. _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAUS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, _______,
  131. _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END ),
  132. /* Func
  133. * ,-----------------------------------------------------------------------------------.
  134. * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
  135. * |------+------+------+------+------+-------------+------+------+------+------+------|
  136. * | | F11 | F12 | | | | | | | | | |
  137. * |------+------+------+------+------+------|------+------+------+------+------+------|
  138. * | | | | | | | | | | | | |
  139. * |------+------+------+------+------+------+------+------+------+------+------+------|
  140. * | | | | | | | | | | | |
  141. * `-----------------------------------------------------------------------------------'
  142. */
  143. [_FUNC] = LAYOUT_planck_mit(
  144. _______ , KC_F1, KC_F2 , KC_F3, KC_F4, KC_F5, KC_F6 , KC_F7, KC_F8, KC_F9, KC_F10, _______,
  145. _______ , KC_F12, KC_F12 , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
  146. _______ , XXXXXXX, XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
  147. _______ , _______, _______ , _______, _______, _______, _______ , _______, _______, _______, _______ ),
  148. /* Symb - double tap shift
  149. * ,-----------------------------------------------------------------------------------.
  150. * | | | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
  151. * |------+------+------+------+------+-------------+------+------+------+------+------|
  152. * | | | | | | | | | | | : | " |
  153. * |------+------+------+------+------+------|------+------+------+------+------+------|
  154. * | | | | | | | | | < | > | ? | |
  155. * |------+------+------+------+------+------+------+------+------+------+------+------|
  156. * | | | | { | _ | | + | } | | | |
  157. * `-----------------------------------------------------------------------------------'
  158. */
  159. [_SYMB] = LAYOUT_planck_mit(
  160. KC_PIPE, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
  161. KC_TILD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_COLN, KC_DQUO,
  162. _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LABK, KC_RABK, KC_QUES, _______,
  163. _______, _______, _______, KC_LCBR, KC_UNDS, _______, KC_PLUS, KC_RCBR, _______, KC_PIPE, _______ ),
  164. /* Number
  165. * ,-----------------------------------------------------------------------------------.
  166. * | | + | - | | | | | 7 | 8 | 9 | | |
  167. * |------+------+------+------+------+-------------+------+------+------+------+------|
  168. * | | * | / | = | | | | 4 | 5 | 6 | | |
  169. * |------+------+------+------+------+------|------+------+------+------+------+------|
  170. * | | | | | | | | 1 | 2 | 3 | |Layer0|
  171. * |------+------+------+------+------+------+------+------+------+------+------+------|
  172. * | | | | | | | 0 | 00 | . | | |
  173. * `-----------------------------------------------------------------------------------'
  174. */
  175. [_NUMB] = LAYOUT_planck_mit( /* 5 - Numpad */
  176. _______, KC_PPLS, KC_PMNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_7, KC_8, KC_9, XXXXXXX, _______,
  177. _______, KC_PAST, KC_PSLS, KC_EQL, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, XXXXXXX, _______,
  178. _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, XXXXXXX, TO( 0 ),
  179. _______, _______, _______, _______, _______, XXXXXXX, KC_0, KC_00, KC_DOT, XXXXXXX, _______ ),
  180. /* MARO Empty
  181. * ,-----------------------------------------------------------------------------------.
  182. * | | | | | | | | | | | | |
  183. * |------+------+------+------+------+-------------+------+------+------+------+------|
  184. * | | | | | | | | | | | | |
  185. * |------+------+------+------+------+------|------+------+------+------+------+------|
  186. * | | | | | | | | | | | | |
  187. * |------+------+------+------+------+------+------+------+------+------+------+------|
  188. * | | | | | | | | | | | |
  189. * `-----------------------------------------------------------------------------------'
  190. */
  191. [_MARO] = LAYOUT_planck_mit(
  192. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  193. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  194. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  195. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
  196. /* RGB
  197. * ,-----------------------------------------------------------------------------------.
  198. * | | | | | | _TAP | | | | | | |
  199. * |------+------+------+------+------+-------------+------+------+------+------+------|
  200. * | MOD | M_R | M_SW | M_K | M_X | M_G | | | | | | |
  201. * |------+------+------+------+------+------|------+------+------+------+------+------|
  202. * | HUI | SAI | VAI | | | | | | | | | |
  203. * |------+------+------+------+------+------+------+------+------+------+------+------|
  204. * | HUD | SAD | VAD | | | RGB_TOG | | | | | |
  205. * `-----------------------------------------------------------------------------------'
  206. */
  207. [_RGB] = LAYOUT_planck_mit(
  208. _______, _______, _______, _______, _______, RGB_TAP, _______, _______, _______, _______, _______, _______,
  209. RGB_MOD, RGB_M_R, RGB_M_SW, RGB_M_K, RGB_M_X, RGB_M_G, _______, _______, _______, _______, _______, _______,
  210. RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  211. RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, RGB_TOG, _______, _______, _______, _______, _______ ),
  212. /* Func
  213. * ,-----------------------------------------------------------------------------------.
  214. * | | | | | | | | | | |Layer0| Rest |
  215. * |------+------+------+------+------+-------------+------+------+------+------+------|
  216. * | Caps | | | | | Game | | | | | | |
  217. * |------+------+------+------+------+------|------+------+------+------+------+------|
  218. * | | | | | | | Numb | Music| | | | |
  219. * |------+------+------+------+------+------+------+------+------+------+------+------|
  220. * | | | | | | | | | | | |
  221. * `-----------------------------------------------------------------------------------'
  222. */
  223. [_ADJUST] = LAYOUT_planck_mit(
  224. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO( 0 ), RESET ,
  225. KC_CAPS, _______, _______, _______, _______, TO(_GAME), _______, _______, _______, _______, _______, _______,
  226. _______, _______, _______, _______, _______, _______, TO(_NUMB), MU_TOG, _______, _______, _______, _______,
  227. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
  228. [_GAME] = LAYOUT_planck_mit(
  229. XXXXXXX,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
  230. XXXXXXX,KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  231. XXXXXXX,KC_LCTL, KC_A, KC_S, KC_D, KC_B, KC_N, KC_M, XXXXXXX, XXXXXXX, KC_UP, TO( 0 ),
  232. XXXXXXX,KC_LSFT, KC_Z, KC_X, KC_C, KC_SPC, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT ),
  233. };
  234. /* Encoder */
  235. static uint8_t encoder_state = 0;
  236. static int8_t encoder_value = 0;
  237. static int8_t encoder_LUT[] = { 0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0 };
  238. /* Timer */
  239. static uint16_t TAP_RGB_timer;
  240. static uint16_t RGB_encoder_timer;
  241. /* Encoder state RGB_display */
  242. static uint8_t RGB_encoder_count=6;
  243. static bool RGB_encoder_bool = false;
  244. /* RGB tap HUE */
  245. static uint16_t Type_Hue=270;
  246. void matrix_init_user( void )
  247. {
  248. wait_ms( 200 );
  249. /* Encoder init */
  250. encoder_state = PIND & 0x3;
  251. /* Timer init */
  252. RGB_encoder_timer= timer_read();
  253. TAP_RGB_timer= timer_read();
  254. }
  255. void matrix_scan_user( void )
  256. {
  257. /* Layer */
  258. uint8_t layer = biton32( layer_state );
  259. /* Encoder */
  260. encoder_state <<= 2;
  261. encoder_state |= (PIND & 0x3);
  262. encoder_value += encoder_LUT[encoder_state & 0xF];
  263. /* Encoder state RGB display */
  264. if (RGB_encoder_bool){
  265. if (timer_elapsed(RGB_encoder_timer) > 2500) {
  266. RGB_encoder_bool=false;
  267. if (RGB_TAP_STATE) {
  268. rgblight_mode( 1 );
  269. rgblight_setrgb( RGB_TAP_Base_Color );
  270. }else{
  271. rgblight_mode( RGB_LAYER0_mode );
  272. }
  273. }
  274. }
  275. /* Display the Caps state */
  276. if (caps==true){
  277. rgblight_setrgb_at(RGB_Caps_Color,12);
  278. }
  279. /* Start of Encoder clockwise */
  280. if ( encoder_value >= 4 ) {
  281. /* Start of Encoder state RGB_display */
  282. if (!RGB_encoder_bool){
  283. RGB_encoder_timer=timer_read();
  284. RGB_encoder_bool=true;
  285. RGB_encoder_count=5;
  286. rgblight_mode(1);
  287. rgblight_setrgb( 0,0,0 );
  288. }else if (RGB_encoder_bool && timer_elapsed(RGB_encoder_timer) < 800) {
  289. RGB_encoder_timer=timer_read();
  290. RGB_encoder_count-=1;
  291. if (RGB_encoder_count>5 || RGB_encoder_count<1){
  292. RGB_encoder_count=5;
  293. rgblight_setrgb(0, 0, 0);
  294. }
  295. }
  296. rgblight_setrgb_at(0,255,0,5);
  297. if (RGB_encoder_count<1) {RGB_encoder_count=1;}
  298. switch (RGB_encoder_count) {
  299. case 5:
  300. rgblight_setrgb_at(0, 255, 0,4);
  301. break;
  302. case 4:
  303. rgblight_setrgb_at(0, 255, 0,3);
  304. break;
  305. case 3:
  306. rgblight_setrgb_at(0, 255, 0,2);
  307. break;
  308. case 2:
  309. rgblight_setrgb_at(0, 255, 0,1);
  310. break;
  311. case 1:
  312. rgblight_setrgb_at(0, 255, 0,0);
  313. break;
  314. }
  315. /* End of Encoder state RGB_display */
  316. /* Start of Set Encoder Keycode */
  317. switch ( layer )
  318. {
  319. case 0:
  320. tap_code( KC_VOLD );
  321. break;
  322. case _CODE:
  323. tap_code( KC_LEFT );
  324. break;
  325. case _RGB:
  326. rgblight_decrease_val();
  327. break;
  328. case _NUMB:
  329. tap_code( KC_LEFT );
  330. break;
  331. case _MARO:
  332. tap_code( KC_UP );
  333. break;
  334. default:
  335. tap_code( KC_VOLD );
  336. }
  337. /* End of Set Encoder Keycode */
  338. }
  339. /* End of Encoder clockwise */
  340. /* Start of Encoder anti-clockwise */
  341. if ( encoder_value <= -4 )
  342. {
  343. /* Start of Encoder state RGB_display */
  344. if (!RGB_encoder_bool){
  345. RGB_encoder_timer=timer_read();
  346. RGB_encoder_bool=true;
  347. RGB_encoder_count=6;
  348. rgblight_mode(1);
  349. rgblight_setrgb( 0,0,0 );
  350. }else if (RGB_encoder_bool && timer_elapsed(RGB_encoder_timer) < 800) {
  351. RGB_encoder_timer=timer_read();
  352. RGB_encoder_count+=1;
  353. if (RGB_encoder_count<6 || RGB_encoder_count> 10){
  354. RGB_encoder_count=6;
  355. rgblight_setrgb(0, 0, 0);
  356. }
  357. }
  358. rgblight_setrgb_at(0, 0,255,6);
  359. if (RGB_encoder_count>11) {
  360. RGB_encoder_count=11;
  361. }
  362. switch (RGB_encoder_count) {
  363. case 6:
  364. rgblight_setrgb_at(0, 0,255,7);
  365. break;
  366. case 7:
  367. rgblight_setrgb_at(0, 0,255,8);
  368. break;
  369. case 8:
  370. rgblight_setrgb_at(0, 0,255,9);
  371. break;
  372. case 9:
  373. rgblight_setrgb_at(0, 0,255,10);
  374. break;
  375. case 10:
  376. rgblight_setrgb_at(0, 0,128,11);
  377. break;
  378. }
  379. /* End of Encoder state RGB_display */
  380. /* Start of Set Encoder Keycode */
  381. switch ( layer )
  382. {
  383. case 0:
  384. tap_code( KC_VOLU );
  385. break;
  386. case _CODE:
  387. tap_code( KC_RGHT );
  388. break;
  389. case _RGB:
  390. rgblight_increase_val();
  391. break;
  392. case _NUMB:
  393. tap_code( KC_RGHT );
  394. break;
  395. case _MARO:
  396. tap_code( KC_DOWN );
  397. break;
  398. default:
  399. tap_code( KC_VOLU );
  400. }
  401. /* End of Set Encoder Keycode */
  402. }
  403. /* End of Encoder anti-clockwise */
  404. encoder_value %= 4;
  405. /* Start of RGB with Layer change */
  406. /* Save the Layer0 RGB state */
  407. if ( save_rgbmode == true ) {
  408. if (RGB_TAP_STATE==false)
  409. {
  410. RGB_LAYER0_mode = rgblight_config.mode;
  411. }
  412. }
  413. save_rgbmode = false;
  414. /* When the layer is changed */
  415. if ( layer != current_layer && caps == false) {
  416. has_layer_changed = true;
  417. current_layer = layer; /* update layer information */
  418. }
  419. /* Check for layer change, and apply color if its changed since last check */
  420. if ( has_layer_changed )
  421. {
  422. /* change backlight based on layer. These should be numbers or whatever you defined the layers as */
  423. switch ( layer )
  424. {
  425. case 0:
  426. /* if the key tap RGB effect is enable */
  427. if (RGB_TAP_STATE==true){
  428. rgblight_mode(1);
  429. rgblight_setrgb( RGB_TAP_Base_Color );
  430. }
  431. else{
  432. rgblight_mode( RGB_LAYER0_mode );
  433. }
  434. break;
  435. case _CODE: //1
  436. /* Save Layer0 RGB state */
  437. RGB_LAYER0_mode = rgblight_config.mode;
  438. /* set all the RGB color under the switch */
  439. rgblight_mode( 1 );
  440. rgblight_setrgb(RGB_Layer_1_Base_Color);
  441. /* set each of the RGB led color under the switch */
  442. rgblight_setrgb_at(64, 64, 64,1); // Q
  443. rgblight_setrgb_at(64, 64, 64,2); // W
  444. rgblight_setrgb_at(64, 64, 64,3); // E
  445. rgblight_setrgb_at(64, 64, 64,4); // R
  446. rgblight_setrgb_at(64, 64, 64,5); // T
  447. rgblight_setrgb_at(64, 64, 64,6); // Y
  448. rgblight_setrgb_at(64, 64, 64,7); // U
  449. rgblight_setrgb_at(64, 64, 64,8); // I
  450. rgblight_setrgb_at(64, 64, 64,9); // O
  451. rgblight_setrgb_at(64, 64, 64,10); // P
  452. rgblight_setrgb_at(64, 0, 0,40); // -
  453. rgblight_setrgb_at(64, 0, 0,42); // =
  454. break;
  455. case _NAVI: //2
  456. RGB_LAYER0_mode = rgblight_config.mode;
  457. rgblight_mode( 1 );
  458. rgblight_setrgb(RGB_Layer_2_Base_Color);
  459. rgblight_setrgb_at(64, 0, 64,3);
  460. rgblight_setrgb_at(64, 0, 64,14);
  461. rgblight_setrgb_at(64, 0, 64,15);
  462. rgblight_setrgb_at(64, 0, 64,16);
  463. rgblight_setrgb_at(64, 64, 0,8);
  464. rgblight_setrgb_at(64, 64, 0,10);
  465. rgblight_setrgb_at(64, 64, 0,21);
  466. rgblight_setrgb_at(64, 64, 0,29);
  467. rgblight_setrgb_at(64, 0, 0,11);
  468. rgblight_setrgb_at(0, 0, 64,34);
  469. rgblight_setrgb_at(0, 0, 64,44);
  470. rgblight_setrgb_at(0, 0, 64,45);
  471. rgblight_setrgb_at(0, 0, 64,46);
  472. break;
  473. case _FUNC: //3
  474. RGB_LAYER0_mode = rgblight_config.mode;
  475. rgblight_mode( 1 );
  476. rgblight_setrgb(RGB_Layer_3_Base_Color);
  477. rgblight_setrgb_at(0, 0, 64,1);
  478. rgblight_setrgb_at(0, 0, 64,2);
  479. rgblight_setrgb_at(0, 0, 64,3);
  480. rgblight_setrgb_at(0, 0, 64,4);
  481. rgblight_setrgb_at(0, 0, 64,5);
  482. rgblight_setrgb_at(0, 0, 64,6);
  483. rgblight_setrgb_at(0, 0, 64,7);
  484. rgblight_setrgb_at(0, 0, 64,8);
  485. rgblight_setrgb_at(0, 0, 64,9);
  486. rgblight_setrgb_at(0, 0, 64,10);
  487. rgblight_setrgb_at(0, 0, 64,13);
  488. rgblight_setrgb_at(0, 0, 64,14);
  489. break;
  490. case _SYMB: //4
  491. RGB_LAYER0_mode = rgblight_config.mode;
  492. rgblight_mode( 1 );
  493. rgblight_setrgb(RGB_Layer_4_Base_Color);
  494. rgblight_setrgb_at(0, 64, 64,1);
  495. rgblight_setrgb_at(0, 64, 64,2);
  496. rgblight_setrgb_at(0, 64, 64,3);
  497. rgblight_setrgb_at(0, 64, 64,4);
  498. rgblight_setrgb_at(0, 64, 64,5);
  499. rgblight_setrgb_at(0, 64, 64,6);
  500. rgblight_setrgb_at(0, 64, 64,7);
  501. rgblight_setrgb_at(0, 64, 64,8);
  502. rgblight_setrgb_at(0, 64, 64,9);
  503. rgblight_setrgb_at(0, 64, 64,10);
  504. rgblight_setrgb_at(0, 64, 64,12);
  505. rgblight_setrgb_at(0, 64, 64,22);
  506. rgblight_setrgb_at(0, 64, 64,23);
  507. rgblight_setrgb_at(0, 64, 64,32);
  508. rgblight_setrgb_at(0, 64, 64,33);
  509. rgblight_setrgb_at(0, 64, 64,34);
  510. rgblight_setrgb_at(0, 64, 64,39);
  511. rgblight_setrgb_at(0, 64, 64,40);
  512. rgblight_setrgb_at(0, 64, 64,42);
  513. rgblight_setrgb_at(0, 64, 64,43);
  514. break;
  515. case _NUMB: //5
  516. RGB_LAYER0_mode = rgblight_config.mode;
  517. rgblight_mode( 1 );
  518. rgblight_setrgb(RGB_Layer_5_Base_Color);
  519. rgblight_setrgb_at(0,64,0,1);
  520. rgblight_setrgb_at(0,64,0,2);
  521. rgblight_setrgb_at(0,64,0,13);
  522. rgblight_setrgb_at(0,64,0,14);
  523. rgblight_setrgb_at(0,64,64,15);
  524. rgblight_setrgb_at(64,64,64,7);
  525. rgblight_setrgb_at(64,64,64,8);
  526. rgblight_setrgb_at(64,64,64,9);
  527. rgblight_setrgb_at(64,64,64,19);
  528. rgblight_setrgb_at(64,64,64,20);
  529. rgblight_setrgb_at(64,64,64,21);
  530. rgblight_setrgb_at(64,64,64,31);
  531. rgblight_setrgb_at(64,64,64,32);
  532. rgblight_setrgb_at(64,64,64,33);
  533. rgblight_setrgb_at(64,64,64,42);
  534. rgblight_setrgb_at(64,64,64,43);
  535. rgblight_setrgb_at(0,128,0,44);
  536. break;
  537. case _MARO: //6
  538. RGB_LAYER0_mode = rgblight_config.mode;
  539. rgblight_mode( 1 );
  540. rgblight_setrgb(RGB_Layer_6_Base_Color);
  541. break;
  542. case _RGB: //7
  543. RGB_LAYER0_mode = rgblight_config.mode;
  544. rgblight_mode( 1 );
  545. rgblight_setrgb(RGB_Layer_7_Base_Color);
  546. rgblight_setrgb_at(1,143,225,0);
  547. rgblight_setrgb_at(39,21,107,1);
  548. rgblight_setrgb_at(208,0,0,2);
  549. rgblight_setrgb_at(64,64,64,21);
  550. break;
  551. case _ADJUST: //8
  552. RGB_LAYER0_mode = rgblight_config.mode;
  553. rgblight_mode( 1 );
  554. rgblight_setrgb(RGB_Layer_8_Base_Color);
  555. rgblight_setrgb_at(0,64,0,10);
  556. rgblight_setrgb_at(64,0,0,11);
  557. rgblight_setrgb_at(0,64,0,17);
  558. rgblight_setrgb_at(0,64,0,30);
  559. rgblight_setrgb_at(6,50,50,12);
  560. break;
  561. case _GAME: //9
  562. RGB_LAYER0_mode = rgblight_config.mode;
  563. rgblight_mode( 1 );
  564. rgblight_setrgb(RGB_Layer_9_Base_Color);
  565. rgblight_setrgb_at(0,0,64,15);
  566. rgblight_setrgb_at(0,0,64,26);
  567. rgblight_setrgb_at(0,0,64,27);
  568. rgblight_setrgb_at(0,0,64,28);
  569. rgblight_setrgb_at(64,0,0,35);
  570. break;
  571. default:
  572. rgblight_mode( RGB_LAYER0_mode );
  573. }
  574. has_layer_changed = false;
  575. }
  576. /* End of RGB with Layer change */
  577. } // End of matrix_scan_user
  578. /* shift + enter = " from:https://github.com/qmk/qmk_firmware/blob/e899cb8940da04fa2610604f0aab417db7fac119/keyboards/mitosis/keymaps/datagrok/keymap.c */
  579. bool comm_shifted = false;
  580. bool ques_shifted = false;
  581. static uint8_t key_index = 0;
  582. uint8_t shifted;
  583. uint16_t s_keycode;
  584. bool *k_shifted;
  585. bool process_record_user( uint16_t keycode, keyrecord_t *record ){
  586. /* Start of key tap RGB effect */
  587. if ( RGB_TAP_STATE ==true ) {
  588. key_index=(record->event.key.col)+(record->event.key.row)*12;
  589. /* Change the Hue of the RGB color with the type speed */
  590. if (timer_elapsed(TAP_RGB_timer) >10000){
  591. TAP_RGB_timer=timer_read();
  592. Type_Hue=270;
  593. }else if (timer_elapsed(TAP_RGB_timer) >1000){
  594. Type_Hue+=30;
  595. if (Type_Hue>270) {
  596. Type_Hue=270;}
  597. }else{
  598. TAP_RGB_timer=timer_read();
  599. Type_Hue-=10;
  600. if (Type_Hue<10) {
  601. Type_Hue=10;}
  602. }
  603. if (key_index>42){ //fix the RGB index of the MIT layout position
  604. key_index=key_index-1;
  605. }
  606. if ( record->event.pressed ) {
  607. rgblight_sethsv_at(Type_Hue,255,255,key_index);
  608. } else {
  609. rgblight_setrgb_at(RGB_TAP_Base_Color,key_index);
  610. }
  611. }
  612. /* End of key tap RGB effect */
  613. switch ( keycode )
  614. {
  615. /* save the RGB state when set the new */
  616. case RGB_M_R:
  617. save_rgbmode = true;
  618. break;
  619. case RGB_M_SW:
  620. save_rgbmode = true;
  621. break;
  622. case RGB_M_X:
  623. save_rgbmode = true;
  624. break;
  625. case RGB_M_G:
  626. save_rgbmode = true;
  627. break;
  628. case RGB_MODE_KNIGHT:
  629. save_rgbmode = true;
  630. break;
  631. /* Define a New Keycode: double zero */
  632. case KC_00:
  633. if (record->event.pressed) {
  634. // Do something when pressed
  635. } else {
  636. tap_code( KC_0 ); // send 0
  637. tap_code( KC_0 ); // send 0 twice without macro
  638. }
  639. return false; // Skip all further processing of this key
  640. /* when the REST key is pressed the 'R' key will RED,the "Bottom Left"(esc of qmk-dfu) will be GREEN */
  641. case RESET:
  642. rgblight_mode( 1 );
  643. rgblight_setrgb( 0, 0, 0 );
  644. rgblight_setrgb_at(128, 0, 0,4); // R
  645. rgblight_setrgb_at(6, 128, 24,36); // Bottom Left key
  646. break;
  647. /* Define a New Keycode: key tap RGB effect toggle */
  648. case RGB_TAP:
  649. if ( !(record->event.pressed)) {
  650. /* If enable,the 'On' key will be green */
  651. if (RGB_TAP_STATE) {
  652. RGB_TAP_STATE=false;
  653. rgblight_mode( 1 );
  654. rgblight_setrgb( RGB_TAP_Base_Color );
  655. rgblight_setrgb_at(RGB_TAP_Off_Color,16); // O - on
  656. }else{
  657. /* If disenable,the 'oFf' key will be red */
  658. RGB_TAP_STATE=true;
  659. rgblight_mode( 1 );
  660. rgblight_setrgb( RGB_TAP_Base_Color );
  661. rgblight_setrgb_at(RGB_TAP_On_Color,9); // F - off
  662. }
  663. }
  664. break;
  665. /* special shift keys */
  666. case KC_ENT:
  667. s_keycode = KC_QUOT;
  668. k_shifted = &ques_shifted;
  669. break;
  670. case KC_UP:
  671. s_keycode = KC_SLSH;
  672. k_shifted = &ques_shifted;
  673. break;
  674. case KC_DOWN:
  675. s_keycode = KC_BSLS;
  676. k_shifted = &ques_shifted;
  677. break;
  678. default:
  679. return(true);
  680. }
  681. shifted = get_mods() & (MOD_BIT( KC_LSHIFT ) | MOD_BIT( KC_RSHIFT ) );
  682. /* Keydown. If shift is currently pressed, register its alternate keycode. */
  683. if ( record->event.pressed && shifted )
  684. {
  685. *k_shifted = true;
  686. register_code( s_keycode );
  687. return(false);
  688. /*
  689. * Keyup. If shift was pressed back when the key was pressed, unregister
  690. * its alternate keycode.
  691. */
  692. } else if ( !(record->event.pressed) && *k_shifted ) {
  693. *k_shifted = false;
  694. unregister_code( s_keycode );
  695. return(false);
  696. /* Otherwise, behave as normal. */
  697. } else {
  698. return(true);
  699. }
  700. } // End ofprocess_record_user
  701. void led_set_user( uint8_t usb_led )
  702. {
  703. static uint8_t old_usb_led = 0;
  704. wait_ms( 10 ); /* gets rid of tick */
  705. if ( (usb_led & (1 << USB_LED_CAPS_LOCK) ) && !(old_usb_led & (1 << USB_LED_CAPS_LOCK) ) ) {
  706. /* CAPS on */
  707. caps= true;
  708. rgblight_setrgb( 0,0,0 );
  709. rgblight_setrgb_at(RGB_Caps_Color,12); // caps key
  710. #ifdef AUDIO_ENABLE
  711. PLAY_SONG( tone_caps );
  712. #endif
  713. }else if ( !(usb_led & (1 << USB_LED_CAPS_LOCK) ) && (old_usb_led & (1 << USB_LED_CAPS_LOCK) ) ) {
  714. /* CAPS off */
  715. caps= false;
  716. if (RGB_TAP_STATE==false){
  717. rgblight_mode( RGB_LAYER0_mode );
  718. }else{
  719. rgblight_mode(1);
  720. rgblight_setrgb( 0,0,0 );
  721. }
  722. #ifdef AUDIO_ENABLE
  723. PLAY_SONG( tone_caps );
  724. #endif
  725. }
  726. old_usb_led = usb_led;
  727. } // End of led_set_user