keymap.c 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include QMK_KEYBOARD_H
  2. /* Mike's Layout for JD45 with backlight LEDs acting as layer indicator
  3. */
  4. #define KC_TT2 TT(2)
  5. #define KC_BLST BL_STEP
  6. #define KC_BLTG BL_TOGG
  7. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  8. [0] = LAYOUT_kc(
  9. TAB, Q, W, E, R, T, Y, U, I, O, P, MINS, BSLS,
  10. FN1, A, S, D, F, G, H, J, K, L, QUOT, ENT,
  11. FN0, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT,
  12. NO, LCTL, LALT, LGUI, SPC, BSPC, APP, TT2, ESC, NO),
  13. [1] = LAYOUT_kc(
  14. GRV, TRNS, UP, TRNS, 7, 8, 9, 0, MINS, EQL, PSCR, LBRC, RBRC,
  15. TRNS, LEFT, DOWN, RGHT, 4, 5, 6, INS, HOME, PGUP, SCLN, TRNS,
  16. TRNS, TRNS, TRNS, TRNS, 1, 2, 3, DEL, END, PGDN, TRNS, TRNS,
  17. TRNS, TRNS, TRNS, SPC, TRNS, DEL, TRNS, BLST, TRNS, TRNS),
  18. [2] = LAYOUT_kc(
  19. TRNS, TRNS, VOLU, TRNS, F7, F8, F9, F10, F11, F12, PSCR, BLST, BLTG,
  20. TRNS, MPRV, VOLD, MNXT, F4, F5, F6, J, K, L, SCLN, TRNS,
  21. TRNS, TRNS, TRNS, TRNS, F1, F2, F3, MUTE, MPRV, MNXT, MSTP, TRNS,
  22. TRNS, TRNS, TRNS, LGUI, TRNS, TRNS, TRNS, TRNS, PAUS, TRNS)
  23. /* ,
  24. [3] = LAYOUT_kc(
  25. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  26. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  27. TRNS, TRNS, TRNS, TRNS, TRNS, BTLD, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  28. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS )*/
  29. };
  30. enum macro_id
  31. {
  32. M_LAYER1,
  33. M_LAYER2
  34. };
  35. const uint16_t PROGMEM fn_actions[] = {
  36. [0] = ACTION_MODS_TAP_TOGGLE(MOD_LSFT),
  37. [1] = ACTION_MACRO(M_LAYER1)
  38. };
  39. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
  40. {
  41. // MACRODOWN only works in this function
  42. switch (id)
  43. {
  44. case M_LAYER1:
  45. // need to add a timer for doubletap: https://github.com/jackhumbert/qmk_firmware/wiki#timer-functionality
  46. // action_function_tap may also handle this...
  47. if (record->event.pressed)
  48. {
  49. breathing_period_set(3);
  50. breathing_enable();
  51. layer_on(1);
  52. }
  53. else
  54. {
  55. breathing_period_set(1);
  56. breathing_self_disable();
  57. layer_off(1);
  58. }
  59. break;
  60. case M_LAYER2:
  61. if (record->event.pressed)
  62. {
  63. breathing_period_set(2);
  64. breathing_pulse();
  65. layer_on(2);
  66. }
  67. else
  68. {
  69. breathing_period_set(1);
  70. breathing_self_disable();
  71. layer_off(2);
  72. }
  73. break;
  74. }
  75. return MACRO_NONE;
  76. };