From fe3bfd91c1a085716baa2b4396709ad5d77c7c75 Mon Sep 17 00:00:00 2001 From: wanleg <32079073+wanleg@users.noreply.github.com> Date: Mon, 17 Sep 2018 13:41:59 -0700 Subject: [PATCH] Keymap: Big switch config (#3904) * bigswitch keymap * bigswitch keymap * bigswitch keymap * bigswitch keymap * recommended edits made * forgot to revert this change with the others --- keyboards/bigswitch/bigswitch.c | 2 + keyboards/bigswitch/keymaps/wanleg/config.h | 45 ++++++++++++++++ keyboards/bigswitch/keymaps/wanleg/keymap.c | 27 ++++++++++ keyboards/bigswitch/keymaps/wanleg/rules.mk | 7 +++ users/wanleg/tapdances.c | 59 +++++++++++++++++++++ users/wanleg/wanleg.h | 1 + 6 files changed, 141 insertions(+) create mode 100644 keyboards/bigswitch/keymaps/wanleg/config.h create mode 100644 keyboards/bigswitch/keymaps/wanleg/keymap.c create mode 100644 keyboards/bigswitch/keymaps/wanleg/rules.mk diff --git a/keyboards/bigswitch/bigswitch.c b/keyboards/bigswitch/bigswitch.c index dfd9710e2..b924c7017 100644 --- a/keyboards/bigswitch/bigswitch.c +++ b/keyboards/bigswitch/bigswitch.c @@ -19,10 +19,12 @@ along with this program. If not, see . volatile uint8_t runonce = true; static uint16_t my_timer; +__attribute__ ((weak)) void matrix_init_user(void) { my_timer = timer_read(); } +__attribute__ ((weak)) void matrix_scan_user(void) { if (runonce && timer_elapsed(my_timer) > 1000) { runonce = false; diff --git a/keyboards/bigswitch/keymaps/wanleg/config.h b/keyboards/bigswitch/keymaps/wanleg/config.h new file mode 100644 index 000000000..f1e169345 --- /dev/null +++ b/keyboards/bigswitch/keymaps/wanleg/config.h @@ -0,0 +1,45 @@ +/* Copyright 2018 wanleg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here +#undef MATRIX_ROW_PINS +#define MATRIX_ROW_PINS { B4 } +#undef MATRIX_COL_PINS +#define MATRIX_COL_PINS { B6 } +//#define UNUSED_PINS + +/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ +#undef DIODE_DIRECTION +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B5 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 3 +#define BREATHING_PERIOD 5 + +/* for Tap Dance */ +#undef TAPPING_TERM +#define TAPPING_TERM 700 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +//#define DEBOUNCING_DELAY 5 +#undef DEBOUNCING_DELAY +#define DEBOUNCING_DELAY 2 + +// set flashing LED with QMK DFU +#define QMK_LED B0 diff --git a/keyboards/bigswitch/keymaps/wanleg/keymap.c b/keyboards/bigswitch/keymaps/wanleg/keymap.c new file mode 100644 index 000000000..7f4150e58 --- /dev/null +++ b/keyboards/bigswitch/keymaps/wanleg/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2018 wanleg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "wanleg.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT( /* Base */ +TD(CAD_TD) \ +), +}; + +void led_set_user(uint8_t usb_led) { + +} diff --git a/keyboards/bigswitch/keymaps/wanleg/rules.mk b/keyboards/bigswitch/keymaps/wanleg/rules.mk new file mode 100644 index 000000000..bc4a1873f --- /dev/null +++ b/keyboards/bigswitch/keymaps/wanleg/rules.mk @@ -0,0 +1,7 @@ +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default + +#If using a ProMicro and it has the QMK DFU bootloader instead of Caterina, +#run "make : dfu=qmk" when compiling to ensure it is flagged properly after being flashed +ifeq ($(strip $(dfu)), qmk) + BOOTLOADER = qmk-dfu +endif \ No newline at end of file diff --git a/users/wanleg/tapdances.c b/users/wanleg/tapdances.c index 318810b1b..6a98b896a 100644 --- a/users/wanleg/tapdances.c +++ b/users/wanleg/tapdances.c @@ -94,6 +94,64 @@ void DEL_reset (qk_tap_dance_state_t *state, void *user_data) { } DELtap_state.state = 0; } + +//instantialize an instance of 'tap' for the 'CAD' tap dance. +static tap CADtap_state = { + .is_press_action = true, + .state = 0 +}; + +void CAD_finished (qk_tap_dance_state_t *state, void *user_data) { + CADtap_state.state = cur_dance(state); + switch (CADtap_state.state) { + case SINGLE_TAP: + //register_code(KC_SPC); + SEND_STRING(SS_LGUI("l")); + backlight_set(3); + break; + case SINGLE_HOLD: + //register_code(KC_NO); + //take a screenshot of a single window, open Paint and paste + SEND_STRING(SS_LALT(SS_TAP(X_PSCREEN)) SS_LGUI("r")); + _delay_ms(500); + SEND_STRING("mspaint" SS_TAP(X_ENTER)); + _delay_ms(700); + SEND_STRING(SS_LCTRL("v")); + break; //register this keycode when button is held + case DOUBLE_TAP: + //register_code(KC_ENT); + SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_DELETE)))); + backlight_set(0); + break; + //case DOUBLE_HOLD: register_code(KC_NO); break; //register this keycode when button is tapped and then held + case DOUBLE_HOLD: + reset_keyboard(); + break; //register this keycode when button is tapped and then held + case DOUBLE_SINGLE_TAP: register_code(KC_NO); unregister_code(KC_NO); register_code(KC_NO); + } +} + +void CAD_reset (qk_tap_dance_state_t *state, void *user_data) { + switch (CADtap_state.state) { + case SINGLE_TAP: + //unregister_code(KC_SPC); + SEND_STRING(SS_LGUI("l")); + backlight_set(3); + break; + case SINGLE_HOLD: + register_code(KC_NO); //(un)register this keycode when button is held and then released + //SEND_STRING(SS_LCTRL("v")); + break; + case DOUBLE_TAP: + //register_code(KC_ENT); + SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_DELETE)))); + backlight_set(0); + break; + case DOUBLE_HOLD: register_code(KC_NO); //(un)register this keycode when button is tapped and then held, and then released + case DOUBLE_SINGLE_TAP: unregister_code(KC_NO); + } + CADtap_state.state = 0; +} ///// QUAD FUNCTION TAP DANCE PERSONALIZATION SECTION END ///// //Tap Dance Definitions @@ -104,6 +162,7 @@ qk_tap_dance_action_t tap_dance_actions[] = { ,[TD_Q_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC) ,[ENT_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ENT_finished, ENT_reset) ,[DEL_TAP_DANCE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, DEL_finished, DEL_reset) + ,[CAD_TD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, CAD_finished, CAD_reset) }; //In Layer declaration, add tap dance item in place of a key code diff --git a/users/wanleg/wanleg.h b/users/wanleg/wanleg.h index 5cec82e60..8b98ec7dd 100644 --- a/users/wanleg/wanleg.h +++ b/users/wanleg/wanleg.h @@ -106,6 +106,7 @@ enum { ,TD_Q_ESC ,ENT_TAP_DANCE ,DEL_TAP_DANCE + ,CAD_TD }; #endif