// tap dance
TD_FLSH, // flash keyboard
+ TD_LAYR, // SYSCTL and MOUSE layer switch
};
// application selection
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | | | | | | | | |
+ * | | | | | | |SYSCTL| | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* |BEGIN |QWERTY| | | |
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,TG(BEGIN) ,TG(QWERTY)
- ,TG(CARPALX)
- ,KC_BSPC ,KC_LSFT ,TG(SYSCTL)
+ ,TG(BEGIN) ,TD(TD_LAYR)
+ ,TG(MOUSE)
+ ,KC_BSPC ,KC_LSFT ,TD(TD_LAYR)
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
+ ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
+ ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
+ ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
+ ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
+ ,MO(SYSCTL) ,KC_NO ,KC_NO ,KC_NO ,KC_NO
,TG(SYSCTL) ,KC_NO
,AP_SLCK
,KC_TRNS
,KC_TRNS ,KC_TRNS ,KC_TRNS
- ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS ,KC_EQL
- ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS
- ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT
- ,KC_RPRN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT
- ,KC_UP ,KC_DOWN ,KC_TRNS ,KC_QUOT ,KC_TRNS
+ ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS ,KC_EQL
+ ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS
+ ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT
+ ,KC_RPRN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT
+ ,KC_TRNS ,KC_DOWN ,KC_TRNS ,KC_QUOT ,KC_TRNS
,KC_TRNS ,KC_TRNS
,KC_TRNS
/* /// ,KC_PTRN*/,KC_NO ,KC_MUTE ,KC_HOME ,KC_UP ,KC_END ,KC_NO ,KC_NO
,KC_VOLU ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_NO ,LCTL(LSFT(KC_PWR))
,KC_NO ,KC_VOLD ,KC_MPRV ,KC_MPLY ,KC_MNXT ,KC_NO ,KC_SLEP
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_PWR
+ ,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_PWR
,KC_NO ,KC_NO
,KC_NO
ergodox_led_all_off();
}
+// light up leds based on the layer
+void matrix_scan_user(void) {
+ uint8_t layer = biton32(layer_state);
+
+ switch(layer) {
+ case SYSCTL:
+ ergodox_right_led_3_on();
+ break;
+ case MOUSE:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+ break;
+ }
+}
+
// extra keys
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
switch (id) {
ergodox_right_led_3_off();
}
+// SYSCTL on first tap, MOUSE ON second tap
+void layers_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
+ uint8_t layer = biton32(layer_state);
+
+ switch(state->count) {
+ case 1:
+ switch(layer) {
+ case SYSCTL:
+ layer_off(SYSCTL);
+ break;
+ case MOUSE:
+ layer_off(MOUSE);
+ break;
+ default:
+ layer_on(SYSCTL);
+ break;
+ }
+ break;
+ case 2:
+ layer_on(MOUSE);
+ break;
+ }
+}
+
qk_tap_dance_action_t tap_dance_actions[] = {
[TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ),
+ [TD_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, layers_dance_finished, NULL ),
};