From 89399b54949fdbbd6198ba87b7a05d1f44777499 Mon Sep 17 00:00:00 2001 From: yiancar Date: Mon, 12 Dec 2022 23:47:08 +0000 Subject: [Keyboard] Crypt Macro (#19279) Co-authored-by: yiancar --- keyboards/crypt_macro/config.h | 92 +++++++++++++++++++++++++ keyboards/crypt_macro/crypt_macro.c | 16 +++++ keyboards/crypt_macro/crypt_macro.h | 28 ++++++++ keyboards/crypt_macro/halconf.h | 21 ++++++ keyboards/crypt_macro/info.json | 16 +++++ keyboards/crypt_macro/keymaps/default/keymap.c | 26 +++++++ keyboards/crypt_macro/keymaps/default/readme.md | 1 + keyboards/crypt_macro/keymaps/via/keymap.c | 34 +++++++++ keyboards/crypt_macro/keymaps/via/readme.md | 1 + keyboards/crypt_macro/keymaps/via/rules.mk | 1 + keyboards/crypt_macro/mcuconf.h | 22 ++++++ keyboards/crypt_macro/readme.md | 32 +++++++++ keyboards/crypt_macro/rules.mk | 27 ++++++++ 13 files changed, 317 insertions(+) create mode 100644 keyboards/crypt_macro/config.h create mode 100644 keyboards/crypt_macro/crypt_macro.c create mode 100644 keyboards/crypt_macro/crypt_macro.h create mode 100644 keyboards/crypt_macro/halconf.h create mode 100644 keyboards/crypt_macro/info.json create mode 100644 keyboards/crypt_macro/keymaps/default/keymap.c create mode 100644 keyboards/crypt_macro/keymaps/default/readme.md create mode 100644 keyboards/crypt_macro/keymaps/via/keymap.c create mode 100644 keyboards/crypt_macro/keymaps/via/readme.md create mode 100644 keyboards/crypt_macro/keymaps/via/rules.mk create mode 100644 keyboards/crypt_macro/mcuconf.h create mode 100644 keyboards/crypt_macro/readme.md create mode 100644 keyboards/crypt_macro/rules.mk diff --git a/keyboards/crypt_macro/config.h b/keyboards/crypt_macro/config.h new file mode 100644 index 0000000000..4f1862b14f --- /dev/null +++ b/keyboards/crypt_macro/config.h @@ -0,0 +1,92 @@ +/* +Copyright 2022 Yiancar-Designs + +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" + +#define MATRIX_ROWS 2 +#define MATRIX_COLS 3 + +#define DIRECT_PINS { \ + { B12, B6, B7 }, \ + { NO_PIN, B5, NO_PIN} \ +} + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */ +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE + +/* RGB Light */ +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 1 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM3 +#define WS2812_DMA_CHANNEL 3 +#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_RGB + +#define RGB_DI_PIN B4 +#define RGBLED_NUM 11 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/crypt_macro/crypt_macro.c b/keyboards/crypt_macro/crypt_macro.c new file mode 100644 index 0000000000..32f8d0bf28 --- /dev/null +++ b/keyboards/crypt_macro/crypt_macro.c @@ -0,0 +1,16 @@ +/* Copyright 2022 Yiancar-Designs + * + * 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 "crypt_macro.h" diff --git a/keyboards/crypt_macro/crypt_macro.h b/keyboards/crypt_macro/crypt_macro.h new file mode 100644 index 0000000000..d128db4dff --- /dev/null +++ b/keyboards/crypt_macro/crypt_macro.h @@ -0,0 +1,28 @@ +/* Copyright 2022 Yiancar-Designs + * + * 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 + +#define XXX KC_NO + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, \ + K11 \ +) { \ + { K00, K01, K02 }, \ + { XXX, K11, XXX } \ +} diff --git a/keyboards/crypt_macro/halconf.h b/keyboards/crypt_macro/halconf.h new file mode 100644 index 0000000000..4abd83bd3b --- /dev/null +++ b/keyboards/crypt_macro/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2022 Yiancar-Designs + * + * 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 + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/crypt_macro/info.json b/keyboards/crypt_macro/info.json new file mode 100644 index 0000000000..f423ffade2 --- /dev/null +++ b/keyboards/crypt_macro/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "Crypt Macro", + "manufacturer": "Yiancar-Designs", + "url": "https://yiancar-designs.com", + "maintainer": "Yiancar-Designs", + "usb": { + "vid": "0x8968", + "pid": "0x434D", + "device_version": "0.0.1" + }, + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":0.5, "y":1, "w":2}] + } + } +} diff --git a/keyboards/crypt_macro/keymaps/default/keymap.c b/keyboards/crypt_macro/keymaps/default/keymap.c new file mode 100644 index 0000000000..a5a0f5b8ab --- /dev/null +++ b/keyboards/crypt_macro/keymaps/default/keymap.c @@ -0,0 +1,26 @@ +/* Copyright 2022 Yiancar-Designs + * + * 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( /* Base */ + KC_VOLU, KC_VOLD, KC_MPLY, + MO(1) ), + +[1] = LAYOUT( /* FN */ + LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), + KC_TRNS ) +}; diff --git a/keyboards/crypt_macro/keymaps/default/readme.md b/keyboards/crypt_macro/keymaps/default/readme.md new file mode 100644 index 0000000000..a72af1220a --- /dev/null +++ b/keyboards/crypt_macro/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Crypt Macro. VIA support disabled. diff --git a/keyboards/crypt_macro/keymaps/via/keymap.c b/keyboards/crypt_macro/keymaps/via/keymap.c new file mode 100644 index 0000000000..551dfe76e6 --- /dev/null +++ b/keyboards/crypt_macro/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2022 Yiancar-Designs + * + * 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( /* Base */ + KC_VOLU, KC_VOLD, KC_MPLY, + MO(1) ), + +[1] = LAYOUT( /* FN */ + LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), + KC_TRNS ), + +[2] = LAYOUT( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS ), + +[3] = LAYOUT( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS ) +}; diff --git a/keyboards/crypt_macro/keymaps/via/readme.md b/keyboards/crypt_macro/keymaps/via/readme.md new file mode 100644 index 0000000000..e6edc49fe7 --- /dev/null +++ b/keyboards/crypt_macro/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default keymap for Crypt Macro. VIA support enabled. diff --git a/keyboards/crypt_macro/keymaps/via/rules.mk b/keyboards/crypt_macro/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/crypt_macro/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/crypt_macro/mcuconf.h b/keyboards/crypt_macro/mcuconf.h new file mode 100644 index 0000000000..6b3ae79e8b --- /dev/null +++ b/keyboards/crypt_macro/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2022 Yiancar-Designs + * + * 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_next + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/crypt_macro/readme.md b/keyboards/crypt_macro/readme.md new file mode 100644 index 0000000000..287f236e51 --- /dev/null +++ b/keyboards/crypt_macro/readme.md @@ -0,0 +1,32 @@ +# Crypt Macro + +This is a macropad PCB. It supports VIA. + +* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A macropad with STM32F072CB +* Hardware Availability: https://www.nzcaps.com/ + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make crypt_macro:default + +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). + +### Reset + +- Unplug +- Hold top left key +- Plug In +- Unplug +- Release Escape + +### Flash + +- Unplug +- Hold top left key +- Plug In +- Flash using QMK Toolbox or CLI (`make crypt_macro::flash`) diff --git a/keyboards/crypt_macro/rules.mk b/keyboards/crypt_macro/rules.mk new file mode 100644 index 0000000000..a53d7daeb0 --- /dev/null +++ b/keyboards/crypt_macro/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + +# Do not put the microcontroller into power saving mode +# when we get USB suspend event. We want it to keep updating +# backlight effects. +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +WS2812_DRIVER = pwm # Driver for RGB uderglow +AUDIO_ENABLE = no # Audio output -- cgit v1.2.3