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