2 #include "action_layer.h"
\r
3 #include "eeconfig.h"
\r
4 //#ifdef BACKLIGHT_ENABLE
\r
5 // #include "backlight.h"
\r
8 extern keymap_config_t keymap_config;
\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
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
26 // Fillers to make layering more clear
\r
27 #define _______ KC_TRNS
\r
28 #define XXXXXXX KC_NO
\r
30 //Tap Dance Declarations
\r
41 //Tap Dance Definitions
\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
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
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
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
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
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
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
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
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
130 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
\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
143 * | L3 | L2 | L1 | NP |
\r
144 * `-----`-----`-----`-----'
\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
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
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
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
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
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
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
205 const uint16_t PROGMEM fn_actions[] = {
\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
214 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
\r
218 if (record->event.pressed) {
\r
219 persistent_default_layer_set(1UL<<_L3);
\r
223 if (record->event.pressed) {
\r
224 persistent_default_layer_set(1UL<<_L2);
\r
228 if (record->event.pressed) {
\r
229 persistent_default_layer_set(1UL<<_L1);
\r
233 if (record->event.pressed) {
\r
234 persistent_default_layer_set(1UL<<_NP);
\r