From 40f7981395f4225c48084c005af981bda2f94d50 Mon Sep 17 00:00:00 2001 From: carlxia Date: Mon, 24 Feb 2020 11:04:26 +0800 Subject: [PATCH] [Keyboard] Add zfrontier/big_switch (#8205) * add zfrontier/big_switch * Update keyboards/zfrontier/big_switch/config.h Co-Authored-By: Ryan * Update keyboards/zfrontier/big_switch/config.h Co-Authored-By: Ryan * Update keyboards/zfrontier/big_switch/keymaps/longtap/keymap.c Co-Authored-By: Ryan * add overriding keymap makefile * Update keyboards/zfrontier/big_switch/keymaps/longtap/keymap.c Co-Authored-By: Drashna Jaelre * Update keyboards/zfrontier/big_switch/keymaps/default/keymap.c Co-Authored-By: Drashna Jaelre * remove redundant defines * taplong no longer needed Co-authored-by: Ryan Co-authored-by: Drashna Jaelre --- keyboards/zfrontier/big_switch/big_switch.c | 17 +++ keyboards/zfrontier/big_switch/big_switch.h | 34 +++++ keyboards/zfrontier/big_switch/config.h | 54 ++++++++ .../big_switch/keymaps/default/keymap.c | 31 +++++ .../big_switch/keymaps/default/readme.md | 1 + .../big_switch/keymaps/longtap/keymap.c | 118 ++++++++++++++++++ .../big_switch/keymaps/longtap/readme.md | 4 + .../big_switch/keymaps/longtap/rules.mk | 1 + keyboards/zfrontier/big_switch/readme.md | 15 +++ keyboards/zfrontier/big_switch/rules.mk | 33 +++++ 10 files changed, 308 insertions(+) create mode 100644 keyboards/zfrontier/big_switch/big_switch.c create mode 100644 keyboards/zfrontier/big_switch/big_switch.h create mode 100644 keyboards/zfrontier/big_switch/config.h create mode 100644 keyboards/zfrontier/big_switch/keymaps/default/keymap.c create mode 100644 keyboards/zfrontier/big_switch/keymaps/default/readme.md create mode 100644 keyboards/zfrontier/big_switch/keymaps/longtap/keymap.c create mode 100644 keyboards/zfrontier/big_switch/keymaps/longtap/readme.md create mode 100644 keyboards/zfrontier/big_switch/keymaps/longtap/rules.mk create mode 100644 keyboards/zfrontier/big_switch/readme.md create mode 100644 keyboards/zfrontier/big_switch/rules.mk diff --git a/keyboards/zfrontier/big_switch/big_switch.c b/keyboards/zfrontier/big_switch/big_switch.c new file mode 100644 index 000000000..53c3e34e7 --- /dev/null +++ b/keyboards/zfrontier/big_switch/big_switch.c @@ -0,0 +1,17 @@ +/* Copyright 2020 zFrontier + * + * 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 "big_switch.h" diff --git a/keyboards/zfrontier/big_switch/big_switch.h b/keyboards/zfrontier/big_switch/big_switch.h new file mode 100644 index 000000000..d12184932 --- /dev/null +++ b/keyboards/zfrontier/big_switch/big_switch.h @@ -0,0 +1,34 @@ +/* Copyright 2020 zFrontier + * + * 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 + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K00 \ +) \ +{ \ + { K00 } \ +} diff --git a/keyboards/zfrontier/big_switch/config.h b/keyboards/zfrontier/big_switch/config.h new file mode 100644 index 000000000..6b4111c05 --- /dev/null +++ b/keyboards/zfrontier/big_switch/config.h @@ -0,0 +1,54 @@ +/* +Copyright 2020 zFrontier + +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 + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0A01 +#define DEVICE_VER 0x0005 +#define MANUFACTURER zFrontier +#define PRODUCT Red Comet Big Switch +#define DESCRIPTION Big Switch + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 1 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { F0 } +#define MATRIX_COL_PINS { F1 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* RGB light config */ +#define RGB_DI_PIN B6 +#define RGBLED_NUM 4 +#define RGBLIGHT_VAL_STEP 17 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_EFFECT_BREATHE_CENTER 2.0 +#define RGBLIGHT_EFFECT_BREATHE_MAX 255 + +/* long tapping config */ +#define TAPPING_TERM 500 diff --git a/keyboards/zfrontier/big_switch/keymaps/default/keymap.c b/keyboards/zfrontier/big_switch/keymaps/default/keymap.c new file mode 100644 index 000000000..a30690a39 --- /dev/null +++ b/keyboards/zfrontier/big_switch/keymaps/default/keymap.c @@ -0,0 +1,31 @@ +/* Copyright 2020 zFrontier + * + * 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 + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT(KC_ENTER), +}; + + + +void keyboard_post_init_user(void) { + rgblight_enable_noeeprom(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING); + rgblight_sethsv_noeeprom(0,0,128); +} + diff --git a/keyboards/zfrontier/big_switch/keymaps/default/readme.md b/keyboards/zfrontier/big_switch/keymaps/default/readme.md new file mode 100644 index 000000000..fea7a92a5 --- /dev/null +++ b/keyboards/zfrontier/big_switch/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for big_switch diff --git a/keyboards/zfrontier/big_switch/keymaps/longtap/keymap.c b/keyboards/zfrontier/big_switch/keymaps/longtap/keymap.c new file mode 100644 index 000000000..a475421a3 --- /dev/null +++ b/keyboards/zfrontier/big_switch/keymaps/longtap/keymap.c @@ -0,0 +1,118 @@ +/* Copyright 2020 zFrontier + * + * 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 + + +enum { + TD_ENTER = 0, +}; + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT( TD(TD_ENTER) ), +}; + + + +void keyboard_post_init_user(void) { + print("zFrontier S01.6 boot...\n"); + rgblight_enable_noeeprom(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING); + rgblight_sethsv_noeeprom(0,0,128); +} + + +void zf_switch_rgb_mode(void) { + switch (rgblight_get_mode() ) { + case RGBLIGHT_MODE_BREATHING: + rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD); + break; + case RGBLIGHT_MODE_RAINBOW_MOOD: + rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL); + break; + case RGBLIGHT_MODE_RAINBOW_SWIRL: + rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE); + break; + case RGBLIGHT_MODE_SNAKE: + rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT); + break; + case RGBLIGHT_MODE_KNIGHT: + rgblight_mode_noeeprom(RGBLIGHT_MODE_CHRISTMAS); + break; + case RGBLIGHT_MODE_CHRISTMAS: + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_GRADIENT); + break; + case RGBLIGHT_MODE_STATIC_GRADIENT: + rgblight_mode_noeeprom(RGBLIGHT_MODE_RGB_TEST); + break; + case RGBLIGHT_MODE_RGB_TEST: + default: + rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING); + break; + } +} + +void zf_send_random_string(void) { + uint8_t tmpu8 = (timer_read() & 0x7); + switch (tmpu8) { + case 0: + case 1: + SEND_STRING("Sazabi, launching!"); + break; + case 2: + case 3: + SEND_STRING("I, Char Aznable, will purge them, Amuro!"); + break; + case 4: + case 5: + SEND_STRING("Their souls are weighted down by gravity!"); + break; + case 6: + SEND_STRING("Go, Axis! With my unpleasant memories!"); + break; + case 7: + SEND_STRING("Hello from zFrontier!"); + break; + } + + tap_code(KC_ENT); +} + +void dance_finished(qk_tap_dance_state_t *state, void *user_data) { + switch (state->count) { + case 1: + register_code(KC_ENTER); + break; + case 2: + zf_switch_rgb_mode(); + break; + default: + zf_send_random_string(); + break; + } +} + +void dance_reset(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + unregister_code(KC_ENTER); + } +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_ENTER] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_finished, dance_reset) +}; diff --git a/keyboards/zfrontier/big_switch/keymaps/longtap/readme.md b/keyboards/zfrontier/big_switch/keymaps/longtap/readme.md new file mode 100644 index 000000000..a94e5c32c --- /dev/null +++ b/keyboards/zfrontier/big_switch/keymaps/longtap/readme.md @@ -0,0 +1,4 @@ +# The longtap keymap for big_switch, the single switch keyboard, +- tap once : send ENTER +- tap twice : change RGB backlight mode +- tap three times : send a pesudo-random string diff --git a/keyboards/zfrontier/big_switch/keymaps/longtap/rules.mk b/keyboards/zfrontier/big_switch/keymaps/longtap/rules.mk new file mode 100644 index 000000000..e5ddcae8d --- /dev/null +++ b/keyboards/zfrontier/big_switch/keymaps/longtap/rules.mk @@ -0,0 +1 @@ +TAP_DANCE_ENABLE = yes diff --git a/keyboards/zfrontier/big_switch/readme.md b/keyboards/zfrontier/big_switch/readme.md new file mode 100644 index 000000000..d0009cfec --- /dev/null +++ b/keyboards/zfrontier/big_switch/readme.md @@ -0,0 +1,15 @@ +# zFrontier Big Switch + +![big_switch](https://img.zfrontier.com/cover/20180808/FiuL_XSz1WCP4tm2Q25I-JLtheK3) + +A keyboard designed by zFrontier with RGB backlight and only one switch. + +* Keyboard Maintainer: [carlxia](https://github.com/carlxia) +* Hardware Supported: zFrontier Big Switch +* Hardware Availability: [zFrontier page](https://en.zfrontier.com/products/redcomet-bigswitch-combo) + +Make example for this keyboard (after setting up your build environment): + + make zfrontier/big_switch:longtap + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/zfrontier/big_switch/rules.mk b/keyboards/zfrontier/big_switch/rules.mk new file mode 100644 index 000000000..17be8a47a --- /dev/null +++ b/keyboards/zfrontier/big_switch/rules.mk @@ -0,0 +1,33 @@ +# 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 = atmel-dfu + +# Build Options +# change yes to no to disable +# +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 = no # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +MIDI_ENABLE = no # MIDI support +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 +FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches +HD44780_ENABLE = no # Enable support for HD44780 based LCDs +TAP_DANCE_ENABLE = no