2
0

keymap.c 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #include QMK_KEYBOARD_H
  2. enum jd45_layers
  3. {
  4. _QWERTY,
  5. _QWERTYNUMMODS,
  6. _NUMSYM,
  7. _FUNCTION,
  8. _NUMPAD,
  9. _FKEYNUMPAD,
  10. _ADJUST
  11. };
  12. enum jd45_keycodes
  13. {
  14. NUMSYM = SAFE_RANGE,
  15. MACSLEEP,
  16. USEFNMODS,
  17. USENUMMODS,
  18. DYNAMIC_MACRO_RANGE,
  19. };
  20. #include "dynamic_macro.h"
  21. #define LONGPRESS_DELAY 150
  22. #define LAYER_TOGGLE_DELAY 900
  23. #define _______ KC_TRNS
  24. #define __MOD__ KC_TRNS
  25. #define XXXXXXX KC_NO
  26. #define F_FNSPC F(0)
  27. #define F_NUMSPC F(1)
  28. #define F_FNTAB F(2)
  29. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  30. [_QWERTY] = {
  31. {F_FNTAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_BSPC},
  32. {CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(_ADJUST, KC_QUOT)},
  33. {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)},
  34. {XXXXXXX, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, F_FNSPC, XXXXXXX, XXXXXXX, MO(_FUNCTION), MO(_ADJUST)}},
  35. [_QWERTYNUMMODS] = {{F_FNTAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_BSPC}, {CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(_ADJUST, KC_QUOT)}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)}, {XXXXXXX, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, F_NUMSPC, XXXXXXX, XXXXXXX, MO(_FKEYNUMPAD), MO(_ADJUST)}},
  36. [_NUMSYM] = {{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_DEL}, {__MOD__, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______}, {_______, _______, _______, _______, _______, KC_SPC, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______}, {XXXXXXX, __MOD__, __MOD__, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, __MOD__, __MOD__}},
  37. [_FUNCTION] = {{__MOD__, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, {__MOD__, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {XXXXXXX, __MOD__, __MOD__, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, __MOD__, __MOD__}},
  38. [_NUMPAD] = {{KC_GRV, _______, KC_UP, _______, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_PSCR, KC_LBRC, KC_RBRC}, {_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_4, KC_5, KC_6, KC_INS, KC_HOME, KC_PGUP, _______, _______}, {_______, _______, _______, _______, KC_1, KC_2, KC_3, KC_DEL, KC_END, KC_PGDN, _______, _______}, {XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, __MOD__, __MOD__}},
  39. [_FKEYNUMPAD] = {{_______, _______, KC_VOLU, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, _______, _______}, {_______, KC_MPRV, KC_VOLD, KC_MNXT, KC_F4, KC_F5, KC_F6, KC_J, KC_K, KC_L, KC_SCLN, _______}, {_______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_MUTE, KC_MPRV, KC_MNXT, KC_MSTP, _______}, {XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, __MOD__, __MOD__}},
  40. [_ADJUST] = {{_______, RESET, _______, _______, _______, _______, _______, DYN_REC_START1, DYN_REC_START2, _______, KC_PSCR, _______, _______}, {_______, _______, _______, _______, USEFNMODS, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, MACSLEEP, _______, _______}, {_______, _______, _______, _______, _______, _______, USENUMMODS, _______, _______, _______, _______, _______}, {XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, __MOD__, __MOD__}}};
  41. const uint16_t PROGMEM fn_actions[] = {
  42. [0] = ACTION_LAYER_TAP_KEY(_NUMSYM, KC_SPC),
  43. [1] = ACTION_LAYER_TAP_KEY(_NUMPAD, KC_SPC),
  44. [2] = ACTION_LAYER_TAP_KEY(_FUNCTION, KC_TAB),
  45. };
  46. void persistent_default_layer_set(uint16_t default_layer)
  47. {
  48. eeconfig_update_default_layer(default_layer);
  49. default_layer_set(default_layer);
  50. }
  51. static bool singular_key = false;
  52. bool process_record_user(uint16_t keycode, keyrecord_t *record)
  53. {
  54. uint16_t macro_kc = (keycode == MO(_ADJUST) ? DYN_REC_STOP : keycode);
  55. if (!process_record_dynamic_macro(macro_kc, record))
  56. {
  57. return false;
  58. }
  59. println(" ");
  60. print("process record");
  61. switch (keycode)
  62. {
  63. case MACSLEEP:
  64. if (record->event.pressed)
  65. {
  66. // ACTION_MODS_KEY(MOD_LCTL | MOD_LSFT, KC_POWER);
  67. register_code(KC_RSFT);
  68. register_code(KC_RCTL);
  69. register_code(KC_POWER);
  70. unregister_code(KC_POWER);
  71. unregister_code(KC_RCTL);
  72. unregister_code(KC_RSFT);
  73. }
  74. return false;
  75. break;
  76. case USEFNMODS:
  77. if (record->event.pressed)
  78. {
  79. persistent_default_layer_set(1UL << _QWERTY);
  80. #ifdef AUDIO_ENABLE
  81. PLAY_NOTE_ARRAY(tone_fnpc, false, 0);
  82. #endif
  83. print("Space-FN");
  84. }
  85. return false;
  86. break;
  87. case USENUMMODS:
  88. if (record->event.pressed)
  89. {
  90. persistent_default_layer_set(1UL << _QWERTYNUMMODS);
  91. #ifdef AUDIO_ENABLE
  92. PLAY_NOTE_ARRAY(tone_fnmac, false, 0);
  93. #endif
  94. print("Space-Numpad");
  95. }
  96. return false;
  97. break;
  98. default:
  99. singular_key = false;
  100. break;
  101. }
  102. return true;
  103. };
  104. void matrix_init_user(void)
  105. {
  106. #ifdef AUDIO_ENABLE
  107. startup_user();
  108. #endif
  109. // debug_enable = true;
  110. }