]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/jd45/keymaps/mjt6u/keymap.c
Keymaps for several of my boards (#1641)
[qmk_firmware.git] / keyboards / jd45 / keymaps / mjt6u / keymap.c
1 #include "jd45.h"
2
3 enum jd45_layers
4 {
5   _QWERTY,
6   _QWERTYNUMMODS,
7   _NUMSYM,
8   _FUNCTION,
9   _NUMPAD,
10   _FKEYNUMPAD,
11   _ADJUST
12 };
13
14 enum jd45_keycodes
15 {
16   NUMSYM = SAFE_RANGE,
17   MACSLEEP,
18   USEFNMODS,
19   USENUMMODS,
20   DYNAMIC_MACRO_RANGE,
21 };
22
23 #include "dynamic_macro.h"
24
25 #define LONGPRESS_DELAY 150
26 #define LAYER_TOGGLE_DELAY 900
27
28 #define _______ KC_TRNS
29 #define __MOD__ KC_TRNS
30 #define XXXXXXX KC_NO
31 #define F_FNSPC F(0)
32 #define F_NUMSPC F(1)
33 #define F_FNTAB F(2)
34
35 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
36   [_QWERTY] = {
37   {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},
38    {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)},
39      {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)},
40   { XXXXXXX, KC_LALT, KC_LGUI, XXXXXXX,  XXXXXXX,  XXXXXXX, F_FNSPC,  XXXXXXX, XXXXXXX, MO(_FUNCTION),  MO(_ADJUST) }
41 },
42 [_QWERTYNUMMODS] = {
43   {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},
44    {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)},
45      {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)},
46   {XXXXXXX,  KC_LALT, KC_LGUI, XXXXXXX,  XXXXXXX,  XXXXXXX, F_NUMSPC,  XXXXXXX, XXXXXXX,  MO(_FKEYNUMPAD), MO(_ADJUST) }
47 },
48 [_NUMSYM] = {
49 {KC_GRV,     KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,   KC_0, _______, KC_DEL},
50  {__MOD__, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______},
51   {_______, _______, _______, _______, _______, KC_SPC, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______},
52 {XXXXXXX, __MOD__, __MOD__, XXXXXXX,  XXXXXXX,  XXXXXXX, _______, XXXXXXX, XXXXXXX, __MOD__, __MOD__}
53 },
54 [_FUNCTION] = {
55 {__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},
56 {__MOD__, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______, _______},
57 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
58 {XXXXXXX, __MOD__, __MOD__, XXXXXXX,  XXXXXXX,  XXXXXXX, _______, XXXXXXX, XXXXXXX, __MOD__ , __MOD__}
59 },
60 [_NUMPAD] = {
61 {KC_GRV,  _______,   KC_UP, _______,   KC_7,    KC_8,    KC_9,    KC_0, KC_MINS,  KC_EQL, KC_PSCR, KC_LBRC, KC_RBRC},
62 {_______, KC_LEFT, KC_DOWN, KC_RGHT,   KC_4,    KC_5,    KC_6,  KC_INS, KC_HOME, KC_PGUP, _______, _______},
63 {_______, _______, _______, _______,   KC_1,    KC_2,    KC_3,  KC_DEL,  KC_END, KC_PGDN, _______, _______},
64 {XXXXXXX, _______, _______, XXXXXXX,  XXXXXXX,  XXXXXXX, _______, XXXXXXX, XXXXXXX, __MOD__, __MOD__}
65 },
66 [_FKEYNUMPAD] = {
67 {_______, _______, KC_VOLU, _______,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12, KC_PSCR, _______, _______},
68 {_______, KC_MPRV, KC_VOLD, KC_MNXT,   KC_F4,   KC_F5,   KC_F6,    KC_J,    KC_K,    KC_L, KC_SCLN, _______},
69 {_______, _______, _______, _______,   KC_F1,   KC_F2,   KC_F3, KC_MUTE, KC_MPRV, KC_MNXT, KC_MSTP, _______},
70 {XXXXXXX, _______, _______, XXXXXXX,  XXXXXXX,  XXXXXXX, _______, XXXXXXX, XXXXXXX, __MOD__, __MOD__ }
71 },
72 [_ADJUST] = {
73   {_______, RESET, _______, _______, _______, _______, _______, DYN_REC_START1, DYN_REC_START2, _______, KC_PSCR, _______, _______},
74   { _______,  _______, _______, _______, USEFNMODS, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, MACSLEEP, _______, _______},
75   {  _______, _______, _______, _______, _______, _______, USENUMMODS, _______, _______, _______, _______, _______},
76   {XXXXXXX, _______, _______,XXXXXXX,  XXXXXXX,  XXXXXXX, _______, XXXXXXX, XXXXXXX, __MOD__, __MOD__}
77  }
78 };
79
80
81 const uint16_t PROGMEM fn_actions[] = {
82   [0] = ACTION_LAYER_TAP_KEY(_NUMSYM, KC_SPC),
83   [1] = ACTION_LAYER_TAP_KEY(_NUMPAD, KC_SPC),
84   [2] = ACTION_LAYER_TAP_KEY(_FUNCTION, KC_TAB),
85 };
86
87 void persistent_default_layer_set(uint16_t default_layer) {
88   eeconfig_update_default_layer(default_layer);
89   default_layer_set(default_layer);
90 }
91
92 static bool singular_key = false;
93
94 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
95   uint16_t macro_kc = (keycode == MO(_ADJUST) ? DYN_REC_STOP : keycode);
96   if (!process_record_dynamic_macro(macro_kc, record)) {
97     return false;
98   }
99   println(" ");
100   print("process record");
101
102   switch (keycode) {
103   case MACSLEEP:
104     if (record->event.pressed) {
105       // ACTION_MODS_KEY(MOD_LCTL | MOD_LSFT, KC_POWER);
106       register_code(KC_RSFT);
107       register_code(KC_RCTL);
108       register_code(KC_POWER);
109       unregister_code(KC_POWER);
110       unregister_code(KC_RCTL);
111       unregister_code(KC_RSFT);
112     }
113     return false;
114     break;
115   case USEFNMODS:
116     if (record->event.pressed) {
117       persistent_default_layer_set(1UL<<_QWERTY);
118       #ifdef AUDIO_ENABLE
119         PLAY_NOTE_ARRAY(tone_fnpc, false, 0);
120       #endif
121       print("Space-FN");
122     }
123     return false;
124     break;
125   case USENUMMODS:
126     if (record->event.pressed) {
127       persistent_default_layer_set(1UL<<_QWERTYNUMMODS);
128       #ifdef AUDIO_ENABLE
129         PLAY_NOTE_ARRAY(tone_fnmac, false, 0);
130       #endif
131       print("Space-Numpad");
132     }
133     return false;
134     break;
135   default:
136       singular_key = false;
137     break;
138   }
139
140   return true;
141 };
142
143
144 void matrix_init_user(void) {
145     #ifdef AUDIO_ENABLE
146         startup_user();
147     #endif
148     // debug_enable = true;
149 }