diff options
Diffstat (limited to 'keyboards/flehrad/bigswitch')
-rw-r--r-- | keyboards/flehrad/bigswitch/README.md | 16 | ||||
-rw-r--r-- | keyboards/flehrad/bigswitch/bigswitch.c | 37 | ||||
-rw-r--r-- | keyboards/flehrad/bigswitch/bigswitch.h | 28 | ||||
-rw-r--r-- | keyboards/flehrad/bigswitch/config.h | 57 | ||||
-rw-r--r-- | keyboards/flehrad/bigswitch/info.json | 13 | ||||
-rw-r--r-- | keyboards/flehrad/bigswitch/keymaps/333fred/config.h | 20 | ||||
-rw-r--r-- | keyboards/flehrad/bigswitch/keymaps/333fred/keymap.c | 123 | ||||
-rw-r--r-- | keyboards/flehrad/bigswitch/keymaps/333fred/rules.mk | 5 | ||||
-rw-r--r-- | keyboards/flehrad/bigswitch/keymaps/default/keymap.c | 27 | ||||
-rw-r--r-- | keyboards/flehrad/bigswitch/keymaps/wanleg/config.h | 42 | ||||
-rw-r--r-- | keyboards/flehrad/bigswitch/keymaps/wanleg/keymap.c | 26 | ||||
-rw-r--r-- | keyboards/flehrad/bigswitch/keymaps/wanleg/rules.mk | 15 | ||||
-rw-r--r-- | keyboards/flehrad/bigswitch/rules.mk | 27 |
13 files changed, 436 insertions, 0 deletions
diff --git a/keyboards/flehrad/bigswitch/README.md b/keyboards/flehrad/bigswitch/README.md new file mode 100644 index 000000000..1a0fb155a --- /dev/null +++ b/keyboards/flehrad/bigswitch/README.md @@ -0,0 +1,16 @@ +Big Switch PCB by flehrad +========================= + +Designed by Don of the Board Podcast and sold as a kit by [keeb.io](https://keeb.io/collections/frontpage/products/big-switch-pcb?variant=7507922845726) + +### PCB Files + +https://github.com/flehrad/Big-Switch-PCB + +make: flehrad/bigswitch:default + +### Technical Specifications + + * Uses a atmega32u4 pro micro or pin compatible MCU + * Pins B5 and B6 connect to the pins on the Big Switch + * Optionally you may add a RGB strip to pin D3 for data and take power from VCC and GND diff --git a/keyboards/flehrad/bigswitch/bigswitch.c b/keyboards/flehrad/bigswitch/bigswitch.c new file mode 100644 index 000000000..32f9f7fab --- /dev/null +++ b/keyboards/flehrad/bigswitch/bigswitch.c @@ -0,0 +1,37 @@ +/* +Copyright 2018 QMK Contributors + +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 <http://www.gnu.org/licenses/>. +*/ +#include "bigswitch.h" + +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 defined(RGBLIGHT_ENABLE) + if (runonce && timer_elapsed(my_timer) > 1000) { + runonce = false; + rgblight_sethsv_noeeprom(0x0, 0xff, 0x80); + rgblight_mode_noeeprom(9); + rgblight_enable_noeeprom(); + } +#endif +} diff --git a/keyboards/flehrad/bigswitch/bigswitch.h b/keyboards/flehrad/bigswitch/bigswitch.h new file mode 100644 index 000000000..ea3d51a1f --- /dev/null +++ b/keyboards/flehrad/bigswitch/bigswitch.h @@ -0,0 +1,28 @@ +/* +Copyright 2018 QMK Contributors + +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 <http://www.gnu.org/licenses/>. +*/ +#ifndef BIGSWITCH_H +#define BIGSWITCH_H + +#include "quantum.h" + +#define LAYOUT( \ + K00 \ +) { \ + { K00 } \ +} + +#endif diff --git a/keyboards/flehrad/bigswitch/config.h b/keyboards/flehrad/bigswitch/config.h new file mode 100644 index 000000000..220f2591b --- /dev/null +++ b/keyboards/flehrad/bigswitch/config.h @@ -0,0 +1,57 @@ +/* +Copyright 2018 QMK Contributors + +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 <http://www.gnu.org/licenses/>. +*/ +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x1209 +#define PRODUCT_ID 0xB195 +#define DEVICE_VER 0x0001 +#define MANUFACTURER flehrad +#define PRODUCT BigSwitch PCB +#define DESCRIPTION A single key board for Novelkeys Big Switch + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 1 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B5 } +#define MATRIX_COL_PINS { B6 } +#define UNUSED_PINS { } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 50 + +/* key combination for command */ +#define IS_COMMAND() ( \ + false \ +) + + +#ifdef RGBLIGHT_ENABLE +#define RGB_DI_PIN D3 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 8 +#endif + +#endif diff --git a/keyboards/flehrad/bigswitch/info.json b/keyboards/flehrad/bigswitch/info.json new file mode 100644 index 000000000..8d3d746f5 --- /dev/null +++ b/keyboards/flehrad/bigswitch/info.json @@ -0,0 +1,13 @@ +{ + "keyboard_name": "Bigswitch PCB", + "url": "", + "maintainer": "qmk", + "bootloader": "", + "width": 4, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0, "w":4, "h":4}] + } + } +} diff --git a/keyboards/flehrad/bigswitch/keymaps/333fred/config.h b/keyboards/flehrad/bigswitch/keymaps/333fred/config.h new file mode 100644 index 000000000..76f13f08b --- /dev/null +++ b/keyboards/flehrad/bigswitch/keymaps/333fred/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2018 Fredric Silberberg (333fred) + +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 <http://www.gnu.org/licenses/>. +*/ +#pragma once + +// Long tapping term on the big switch, because it takes so long to press +#define TAPPING_TERM 500 diff --git a/keyboards/flehrad/bigswitch/keymaps/333fred/keymap.c b/keyboards/flehrad/bigswitch/keymaps/333fred/keymap.c new file mode 100644 index 000000000..be40fecb2 --- /dev/null +++ b/keyboards/flehrad/bigswitch/keymaps/333fred/keymap.c @@ -0,0 +1,123 @@ +#include QMK_KEYBOARD_H + +typedef enum { + SINGLE_TAP, SINGLE_HOLD, DOUBLE, TRIPLE, QUAD +} tap_dance_state_enum; + +enum { + TD_KEY = 0 +}; + +static tap_dance_state_enum tap_dance_state; +static bool tap_dance_active = false; +static uint16_t timer; + +void dance_cycle(bool override_timer) { + if (tap_dance_active) + { + if (timer_elapsed(timer) > 100 || override_timer) + { + switch (tap_dance_state) + { + case SINGLE_HOLD: + { + rgblight_increase_hue_noeeprom(); + break; + } + + case DOUBLE: + { + rgblight_step_noeeprom(); + break; + } + + case TRIPLE: + { + rgblight_toggle_noeeprom(); + break; + } + + default: + // Not needed + break; + } + + timer = timer_read(); + } + } +} + +void dance_finished(qk_tap_dance_state_t *state, void* user_data) { + // Determine the current state + switch (state->count) + { + case 1: + { + if (state->interrupted || state->pressed == 0) tap_dance_state = SINGLE_TAP; + else tap_dance_state = SINGLE_HOLD; + break; + } + case 2: + { + tap_dance_state = DOUBLE; + break; + } + case 3: + { + tap_dance_state = TRIPLE; + break; + } + default: + { + tap_dance_state = QUAD; + break; + } + } + + switch (tap_dance_state) + { + case SINGLE_TAP: + { + // VS Build: CTRL+SHIFT+B + send_string_with_delay_P(PSTR(SS_DOWN(X_LCTRL) SS_DOWN(X_LSHIFT) "b" SS_UP(X_LSHIFT) SS_UP(X_LCTRL)), 10); + tap_dance_active = false; + break; + } + + case SINGLE_HOLD: + case DOUBLE: + case TRIPLE: + { + // These are handled by the matrix_scan, which will register the appropriate rgb + // functions every scan + tap_dance_active = true; + timer = timer_read(); + dance_cycle(true); + break; + } + + case QUAD: + { + // Reprogram + reset_keyboard(); + break; + } + } +} + +void dance_reset(qk_tap_dance_state_t *state, void* user_data) +{ + tap_dance_active = false; +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_KEY] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_finished, dance_reset) +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT(TD(TD_KEY)) +}; + +void matrix_scan_user(void) { + dance_cycle(false); +} diff --git a/keyboards/flehrad/bigswitch/keymaps/333fred/rules.mk b/keyboards/flehrad/bigswitch/keymaps/333fred/rules.mk new file mode 100644 index 000000000..20aaadacb --- /dev/null +++ b/keyboards/flehrad/bigswitch/keymaps/333fred/rules.mk @@ -0,0 +1,5 @@ +# I'm not using things from my userpace in this one +USER_NAME = disable + +RGBLIGHT_ENABLE = yes +TAP_DANCE_ENABLE = yes diff --git a/keyboards/flehrad/bigswitch/keymaps/default/keymap.c b/keyboards/flehrad/bigswitch/keymaps/default/keymap.c new file mode 100644 index 000000000..210d00123 --- /dev/null +++ b/keyboards/flehrad/bigswitch/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* +Copyright 2018 QMK Contributors + +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 <http://www.gnu.org/licenses/>. +*/ + +#include QMK_KEYBOARD_H +#define KC_OSX_EJECT 0x66 +#define LOCK_OSX LSFT(LCTL(KC_OSX_EJECT)) +#define SLEEP_OSX LALT(LGUI(KC_OSX_EJECT)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +LAYOUT(SLEEP_OSX), + +}; diff --git a/keyboards/flehrad/bigswitch/keymaps/wanleg/config.h b/keyboards/flehrad/bigswitch/keymaps/wanleg/config.h new file mode 100644 index 000000000..54abb9a6c --- /dev/null +++ b/keyboards/flehrad/bigswitch/keymaps/wanleg/config.h @@ -0,0 +1,42 @@ +/* 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 <http://www.gnu.org/licenses/>. + */ + +#pragma once + +// place overrides here +#undef MATRIX_ROW_PINS +#define MATRIX_ROW_PINS { B4 } +#undef MATRIX_COL_PINS +#define MATRIX_COL_PINS { B6 } + +/* COL2ROW, ROW2COL*/ +#undef DIODE_DIRECTION +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B5 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 3 +#define BREATHING_PERIOD 5 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#undef DEBOUNCE +#define DEBOUNCE 5 + +// set flashing LED with QMK DFU +#define QMK_LED B0 + +// set audio pin +#define C6_AUDIO diff --git a/keyboards/flehrad/bigswitch/keymaps/wanleg/keymap.c b/keyboards/flehrad/bigswitch/keymaps/wanleg/keymap.c new file mode 100644 index 000000000..76d0808fd --- /dev/null +++ b/keyboards/flehrad/bigswitch/keymaps/wanleg/keymap.c @@ -0,0 +1,26 @@ +/* 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 <http://www.gnu.org/licenses/>. + */ +#include QMK_KEYBOARD_H +#include "wanleg.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT( /* Base */ +TD(CAD_TD) \ +), +[1] = LAYOUT( /*Secondary*/ +TD(BSW_TAP_DANCE) \ +), +};
\ No newline at end of file diff --git a/keyboards/flehrad/bigswitch/keymaps/wanleg/rules.mk b/keyboards/flehrad/bigswitch/keymaps/wanleg/rules.mk new file mode 100644 index 000000000..75da67fa4 --- /dev/null +++ b/keyboards/flehrad/bigswitch/keymaps/wanleg/rules.mk @@ -0,0 +1,15 @@ +#If using a ProMicro and it has the QMK DFU bootloader instead of Caterina, +#run "make <keyboard>:<keymap> dfu=qmk" when compiling to ensure it is flagged properly after being flashed +ifeq ($(strip $(dfu)), qmk) + BOOTLOADER = qmk-dfu +endif + +AUDIO_ENABLE = yes # Audio output on port C6 +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches diff --git a/keyboards/flehrad/bigswitch/rules.mk b/keyboards/flehrad/bigswitch/rules.mk new file mode 100644 index 000000000..88844733f --- /dev/null +++ b/keyboards/flehrad/bigswitch/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# ATmega32A bootloadHID +# ATmega328P USBasp +BOOTLOADER = caterina + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled +AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below +RGBLIGHT_ENABLE = yes # This can be enabled if a ws2812 strip is connected to the expansion port. + |