keymap.c 2.7 KB

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