]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/roadkit/keymaps/singlesBrent/keymap.c
Add files via upload
[qmk_firmware.git] / keyboards / roadkit / keymaps / singlesBrent / keymap.c
1 #include "roadkit.h"\r
2 #include "action_layer.h"\r
3 #include "eeconfig.h"\r
4 //#ifdef BACKLIGHT_ENABLE\r
5 //  #include "backlight.h"\r
6 //#endif\r
7 \r
8 extern keymap_config_t keymap_config;\r
9 \r
10 // Each layer gets a name for readability, which is then used in the keymap matrix below.\r
11 // The underscores don't mean anything - you can have a layer called STUFF or any other name.\r
12 // Layer names don't all need to be of the same length, obviously, and you can also skip them\r
13 // entirely and just use numbers.\r
14 \r
15 #define _NP 0\r
16 #define _L1 1\r
17 #define _L2 2\r
18 #define _L3 3\r
19 \r
20 // Macro name shortcuts\r
21 #define NUMPAD M(_NP)\r
22 #define LAYER1 M(_L1)\r
23 #define LAYER2 M(_L2)\r
24 #define LAYER3 M(_L3)\r
25 \r
26 // Fillers to make layering more clear\r
27 #define _______ KC_TRNS\r
28 #define XXXXXXX KC_NO\r
29 \r
30 //Tap Dance Declarations\r
31 \r
32 enum {\r
33 \r
34   TD_EQUAL_NP = 0,\r
35   TD_KP_PLUS_L1,\r
36   TD_DOT_L2,\r
37   TD_0_L3\r
38 \r
39 };\r
40 \r
41 //Tap Dance Definitions\r
42 \r
43 \r
44         //TD equal to turn on layer NP\r
45 void _td_equal_tg_finished (qk_tap_dance_state_t *state, void *user_data) {\r
46   if (state->count == 1) {\r
47     register_code(KC_EQUAL);\r
48   } else if (state->count == 2) {\r
49     backlight_set(3);\r
50         layer_on(_NP);\r
51         layer_off(_L1);\r
52         layer_off(_L2);\r
53         layer_off(_L3);\r
54   }\r
55 }\r
56 \r
57 void _td_equal_tg_reset (qk_tap_dance_state_t *state, void *user_data) {\r
58   if (state->count == 1) {\r
59     unregister_code(KC_EQUAL);\r
60   }\r
61 }\r
62 \r
63 \r
64         //TD kp plus to toggle layer 1\r
65 void _td_kp_plus_tg_finished (qk_tap_dance_state_t *state, void *user_data) {\r
66   if (state->count == 1) {\r
67     register_code(KC_KP_PLUS);\r
68   } else if (state->count == 2) {\r
69 //    layer_invert(_L1);\r
70     backlight_set(2);\r
71         layer_on(_L1);\r
72         layer_off(_L2);\r
73         layer_off(_L3);\r
74   }\r
75 }\r
76 \r
77 void _td_kp_plus_tg_reset (qk_tap_dance_state_t *state, void *user_data) {\r
78   if (state->count == 1) {\r
79     unregister_code(KC_KP_PLUS);\r
80   }\r
81 }\r
82 \r
83 \r
84         //TD dot to toggle layer 2\r
85 void _td_dot_tg_finished (qk_tap_dance_state_t *state, void *user_data) {\r
86   if (state->count == 1) {\r
87     register_code(KC_DOT);\r
88   } else if (state->count == 2) {\r
89     backlight_set(1);\r
90         layer_on(_L2);\r
91         layer_off(_L1);\r
92         layer_off(_L3);\r
93   }\r
94 }\r
95 \r
96 void _td_dot_tg_reset (qk_tap_dance_state_t *state, void *user_data) {\r
97   if (state->count == 1) {\r
98     unregister_code(KC_DOT);\r
99   }\r
100 }\r
101 \r
102         //TD 0 to toggle layer 3\r
103 void _td_0_tg_finished (qk_tap_dance_state_t *state, void *user_data) {\r
104   if (state->count == 1) {\r
105     register_code(KC_0);\r
106   } else if (state->count == 2) {\r
107     backlight_set(0);\r
108         layer_on(_L3);\r
109         layer_off(_L1);\r
110         layer_off(_L2);\r
111   }\r
112 }\r
113 \r
114 void _td_0_tg_reset (qk_tap_dance_state_t *state, void *user_data) {\r
115   if (state->count == 1) {\r
116     unregister_code(KC_0);\r
117   }\r
118 }\r
119 \r
120 //TD Actions\r
121 qk_tap_dance_action_t tap_dance_actions[] = {\r
122   [TD_EQUAL_NP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, _td_equal_tg_finished, _td_equal_tg_reset),\r
123   [TD_KP_PLUS_L1] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, _td_kp_plus_tg_finished, _td_kp_plus_tg_reset),\r
124   [TD_DOT_L2] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, _td_dot_tg_finished, _td_dot_tg_reset),\r
125   [TD_0_L3] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, _td_0_tg_finished, _td_0_tg_reset)\r
126 };\r
127 \r
128 \r
129 \r
130 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\r
131 \r
132 /* Numberpad\r
133  * ,-----------------------.\r
134  * |  7  |  8  |  9  |  /  |\r
135  * |-----`-----`-----`-----|\r
136  * |  4  |  5  |  6  |  *  |\r
137  * |-----`-----`-----`-----|\r
138  * |  1  |  2  |  3  |  -  |\r
139  * |-----`-----`-----`-----|\r
140  * |  0  |  .  |  +  |  =  |\r
141  * `-----`-----`-----`-----'\r
142  * Tapdances:\r
143  * | L3  | L2  | L1  | NP  |\r
144  * `-----`-----`-----`-----'\r
145  */\r
146   [_NP] = /* Numpad */\r
147     SINGLES_KEYMAP(KC_7,        KC_8,          KC_9,           KC_SLASH,  \\r
148                    KC_4,        KC_5,          KC_6,           KC_KP_ASTERISK, \\r
149                    KC_1,        KC_2,          KC_3,           KC_MINUS, \\r
150                    TD(TD_0_L3), TD(TD_DOT_L2), TD(TD_KP_PLUS_L1), TD(TD_EQUAL_NP)),\r
151 \r
152 /* L1\r
153  * ,-----------------------.\r
154  * | Esc |Bksp |Home |PgUp |\r
155  * |-----`-----`-----`-----|\r
156  * | Tab | Up  | End |PgDn |\r
157  * |-----`-----`-----`-----|\r
158  * |Left |Down |Right|Enter|\r
159  * |-----`-----`-----`-----|\r
160  * |  0  |  .  |  +  |  =  |\r
161  * `-----`-----`-----`-----'\r
162  */\r
163   [_L1] = /* LAYER 1 */\r
164     SINGLES_KEYMAP(KC_ESCAPE, KC_BSPACE, KC_HOME,  KC_PGUP, \\r
165                    KC_TAB,    KC_UP,       KC_END,   KC_PGDOWN, \\r
166                    KC_LEFT,   KC_DOWN,     KC_RIGHT, KC_KP_ENTER, \\r
167                    KC_TRNS,   KC_TRNS,     KC_TRNS,  KC_TRNS),\r
168 \r
169 /* L2\r
170  * ,-----------------------.\r
171  * |Sleep|LClik|RClik|VolUp|\r
172  * |-----`-----`-----`-----|\r
173  * |AltF4| F11 |WinTb|VolDn|\r
174  * |-----`-----`-----`-----|\r
175  * |PrvTk|Play |NxtTk|Mute |\r
176  * |-----`-----`-----`-----|\r
177  * |  0  |  .  |  +  |  =  |\r
178  * `-----`-----`-----`-----'\r
179  */                                \r
180   [_L2] = /* LAYER 2 */\r
181     SINGLES_KEYMAP(KC_SYSTEM_SLEEP,     KC_MS_BTN1,          KC_MS_BTN2,          KC_AUDIO_VOL_UP, \\r
182                    LALT(KC_F4),         KC_F11,              LGUI(KC_TAB),        KC_AUDIO_VOL_DOWN, \\r
183                    KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_AUDIO_MUTE, \\r
184                    KC_TRNS,             KC_TRNS,             KC_TRNS,             KC_TRNS),\r
185 \r
186                                    \r
187 /* L3 needs cut, copy, paste, undo, again (redo), find, calc, www back, www forward, F5\r
188  * ,-----------------------.\r
189  * |WBack|WHome|WFor | F5  |\r
190  * |-----`-----`-----`-----|\r
191  * |Calc |Undo |Redo |WSrch|\r
192  * |-----`-----`-----`-----|\r
193  * | Cut |Copy |Paste|Find |\r
194  * |-----`-----`-----`-----|\r
195  * |  0  |  .  |  +  |  =  |\r
196  * `-----`-----`-----`-----'\r
197  */     \r
198   [_L3] = /* LAYER 3 */\r
199     SINGLES_KEYMAP(KC_WWW_BACK,   KC_WWW_HOME, KC_WWW_FORWARD, KC_F5, \\r
200                    KC_CALCULATOR, LCTL(KC_Z),  LCTL(KC_Y),     KC_WWW_SEARCH, \\r
201                    LCTL(KC_X),    LCTL(KC_C),  LCTL(KC_V),     LCTL(KC_F), \\r
202                    KC_TRNS,       KC_TRNS,     KC_TRNS,        KC_TRNS),\r
203 };\r
204 \r
205 const uint16_t PROGMEM fn_actions[] = {\r
206 \r
207 };\r
208 \r
209 void persistent_default_layer_set(uint16_t default_layer) {\r
210   eeconfig_update_default_layer(default_layer);\r
211   default_layer_set(default_layer);\r
212 }\r
213 \r
214 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)\r
215 {\r
216       switch(id) {\r
217         case _L3:\r
218           if (record->event.pressed) {\r
219             persistent_default_layer_set(1UL<<_L3);\r
220           }\r
221           break;\r
222                 case _L2:\r
223           if (record->event.pressed) {\r
224             persistent_default_layer_set(1UL<<_L2);\r
225           }\r
226           break;\r
227         case _L1:\r
228           if (record->event.pressed) {\r
229             persistent_default_layer_set(1UL<<_L1);\r
230           }\r
231           break;\r
232         case _NP:\r
233           if (record->event.pressed) {\r
234             persistent_default_layer_set(1UL<<_NP);\r
235           }\r
236           break;\r
237       }\r
238     return MACRO_NONE;\r
239 };