From 706995c044061ea0a6f703735b3c948e5d3b9412 Mon Sep 17 00:00:00 2001 From: JX <572673807@qq.com> Date: Sun, 21 Aug 2022 04:21:07 +0800 Subject: [Keyboard] Add yandrstudio/nz67v2 keyboard. (#17591) * add yr nz67v2 by jiaxin96 --- keyboards/yandrstudio/nz67v2/board.h | 22 ++ keyboards/yandrstudio/nz67v2/config.h | 109 ++++++ keyboards/yandrstudio/nz67v2/halconf.h | 22 ++ keyboards/yandrstudio/nz67v2/info.json | 382 +++++++++++++++++++++ .../yandrstudio/nz67v2/keymaps/default/keymap.c | 33 ++ keyboards/yandrstudio/nz67v2/keymaps/via/keymap.c | 76 ++++ keyboards/yandrstudio/nz67v2/keymaps/via/rules.mk | 1 + keyboards/yandrstudio/nz67v2/mcuconf.h | 25 ++ keyboards/yandrstudio/nz67v2/nz67v2.c | 118 +++++++ keyboards/yandrstudio/nz67v2/nz67v2.h | 42 +++ keyboards/yandrstudio/nz67v2/readme.md | 23 ++ keyboards/yandrstudio/nz67v2/rules.mk | 19 + 12 files changed, 872 insertions(+) create mode 100644 keyboards/yandrstudio/nz67v2/board.h create mode 100644 keyboards/yandrstudio/nz67v2/config.h create mode 100644 keyboards/yandrstudio/nz67v2/halconf.h create mode 100644 keyboards/yandrstudio/nz67v2/info.json create mode 100644 keyboards/yandrstudio/nz67v2/keymaps/default/keymap.c create mode 100644 keyboards/yandrstudio/nz67v2/keymaps/via/keymap.c create mode 100644 keyboards/yandrstudio/nz67v2/keymaps/via/rules.mk create mode 100644 keyboards/yandrstudio/nz67v2/mcuconf.h create mode 100644 keyboards/yandrstudio/nz67v2/nz67v2.c create mode 100644 keyboards/yandrstudio/nz67v2/nz67v2.h create mode 100644 keyboards/yandrstudio/nz67v2/readme.md create mode 100644 keyboards/yandrstudio/nz67v2/rules.mk diff --git a/keyboards/yandrstudio/nz67v2/board.h b/keyboards/yandrstudio/nz67v2/board.h new file mode 100644 index 0000000000..a667bee461 --- /dev/null +++ b/keyboards/yandrstudio/nz67v2/board.h @@ -0,0 +1,22 @@ +/* Copyright 2022 JasonRen(biu) + * + * 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 "board.h" + +#undef STM32_HSECLK +#define STM32_HSECLK 16000000 diff --git a/keyboards/yandrstudio/nz67v2/config.h b/keyboards/yandrstudio/nz67v2/config.h new file mode 100644 index 0000000000..5d0aa382de --- /dev/null +++ b/keyboards/yandrstudio/nz67v2/config.h @@ -0,0 +1,109 @@ +/* Copyright 2022 JasonRen(biu) + * + * 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" + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* key matrix pins */ +#define MATRIX_COL_PINS { B9, A3, A4, A5, A6, A7, B0, B2, B10, B11, B12, B13, B14, B15, A8 } +#define MATRIX_ROW_PINS { B3, B4, B6, B7, B8 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define TAP_CODE_DELAY 15 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#ifdef ENCODER_ENABLE + +# define ENCODERS_PAD_A { A9 } +# define ENCODERS_PAD_B { A10 } + +#endif + +/* RGB Matrix */ +#ifdef RGB_MATRIX_ENABLE + +# define RGB_DI_PIN B5 +# define RGBLED_NUM 86 +# define DRIVER_LED_TOTAL RGBLED_NUM + +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 +# define RGBLIGHT_VAL_STEP 5 +# define RGB_DISABLE_WHEN_USB_SUSPENDED +# define RGB_MATRIX_CENTER { 112, 32 } +# define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS + +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +/* enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined */ +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +/* enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined */ +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define WS2812_PWM_DRIVER PWMD3 // default: PWMD2 +# define WS2812_PWM_CHANNEL 2 // default: 2 +# define WS2812_DMA_STREAM STM32_DMA1_STREAM3 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. +# define WS2812_DMA_CHANNEL 3 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. + +#endif diff --git a/keyboards/yandrstudio/nz67v2/halconf.h b/keyboards/yandrstudio/nz67v2/halconf.h new file mode 100644 index 0000000000..93a0f05126 --- /dev/null +++ b/keyboards/yandrstudio/nz67v2/halconf.h @@ -0,0 +1,22 @@ +/* Copyright 2022 JasonRen(biu) + * + * 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 HAL_USE_PWM +#define HAL_USE_PWM TRUE + diff --git a/keyboards/yandrstudio/nz67v2/info.json b/keyboards/yandrstudio/nz67v2/info.json new file mode 100644 index 0000000000..3e5e2b4afa --- /dev/null +++ b/keyboards/yandrstudio/nz67v2/info.json @@ -0,0 +1,382 @@ +{ + "keyboard_name": "nz67v2", + "processor": "STM32F103", + "bootloader": "stm32duino", + "usb": { + "pid": "0xAA83", + "device_version": "1.0.0" + }, + "layouts": { + "LAYOUT": { + "layout": [ + { + "label": "EC", + "x": 16, + "y": 0 + }, + { + "label": "~", + "x": 0, + "y": 0.5 + }, + { + "label": "!", + "x": 1, + "y": 0.5 + }, + { + "label": "@", + "x": 2, + "y": 0.5 + }, + { + "label": "#", + "x": 3, + "y": 0.5 + }, + { + "label": "$", + "x": 4, + "y": 0.5 + }, + { + "label": "%", + "x": 5, + "y": 0.5 + }, + { + "label": "^", + "x": 6, + "y": 0.5 + }, + { + "label": "&", + "x": 7, + "y": 0.5 + }, + { + "label": "*", + "x": 8, + "y": 0.5 + }, + { + "label": "(", + "x": 9, + "y": 0.5 + }, + { + "label": ")", + "x": 10, + "y": 0.5 + }, + { + "label": "_", + "x": 11, + "y": 0.5 + }, + { + "label": "+", + "x": 12, + "y": 0.5 + }, + { + "label": "Backspace", + "x": 13, + "y": 0.5, + "w": 2 + }, + { + "label": "Insert", + "x": 15, + "y": 0.5 + }, + { + "label": "EC", + "x": 16, + "y": 1 + }, + { + "label": "Tab", + "x": 0, + "y": 1.5, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 1.5 + }, + { + "label": "W", + "x": 2.5, + "y": 1.5 + }, + { + "label": "E", + "x": 3.5, + "y": 1.5 + }, + { + "label": "R", + "x": 4.5, + "y": 1.5 + }, + { + "label": "T", + "x": 5.5, + "y": 1.5 + }, + { + "label": "Y", + "x": 6.5, + "y": 1.5 + }, + { + "label": "U", + "x": 7.5, + "y": 1.5 + }, + { + "label": "I", + "x": 8.5, + "y": 1.5 + }, + { + "label": "O", + "x": 9.5, + "y": 1.5 + }, + { + "label": "P", + "x": 10.5, + "y": 1.5 + }, + { + "label": "{", + "x": 11.5, + "y": 1.5 + }, + { + "label": "}", + "x": 12.5, + "y": 1.5 + }, + { + "label": "|", + "x": 13.5, + "y": 1.5, + "w": 1.5 + }, + { + "label": "PgUp", + "x": 15, + "y": 1.5 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 2.5, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 2.5 + }, + { + "label": "S", + "x": 2.75, + "y": 2.5 + }, + { + "label": "D", + "x": 3.75, + "y": 2.5 + }, + { + "label": "F", + "x": 4.75, + "y": 2.5 + }, + { + "label": "G", + "x": 5.75, + "y": 2.5 + }, + { + "label": "H", + "x": 6.75, + "y": 2.5 + }, + { + "label": "J", + "x": 7.75, + "y": 2.5 + }, + { + "label": "K", + "x": 8.75, + "y": 2.5 + }, + { + "label": "L", + "x": 9.75, + "y": 2.5 + }, + { + "label": ":", + "x": 10.75, + "y": 2.5 + }, + { + "label": "\"", + "x": 11.75, + "y": 2.5 + }, + { + "label": "Enter", + "x": 12.75, + "y": 2.5, + "w": 2.25 + }, + { + "label": "PgDn", + "x": 15, + "y": 2.5 + }, + { + "label": "Shift", + "x": 0, + "y": 3.5, + "w": 2.25 + }, + { + "label": "Z", + "x": 2.25, + "y": 3.5 + }, + { + "label": "X", + "x": 3.25, + "y": 3.5 + }, + { + "label": "C", + "x": 4.25, + "y": 3.5 + }, + { + "label": "V", + "x": 5.25, + "y": 3.5 + }, + { + "label": "B", + "x": 6.25, + "y": 3.5 + }, + { + "label": "N", + "x": 7.25, + "y": 3.5 + }, + { + "label": "M", + "x": 8.25, + "y": 3.5 + }, + { + "label": "<", + "x": 9.25, + "y": 3.5 + }, + { + "label": ">", + "x": 10.25, + "y": 3.5 + }, + { + "label": "?", + "x": 11.25, + "y": 3.5 + }, + { + "label": "Shift", + "x": 12.25, + "y": 3.5, + "w": 1.75 + }, + { + "label": "\u2191", + "x": 14, + "y": 3.5 + }, + { + "label": "Delete", + "x": 15, + "y": 3.5 + }, + { + "label": "Ctrl", + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "label": "Win", + "x": 1.25, + "y": 4.5, + "w": 1.25 + }, + { + "label": "Alt", + "x": 2.5, + "y": 4.5, + "w": 1.25 + }, + { + "x": 3.75, + "y": 4.5, + "w": 2.25 + }, + { + "x": 6, + "y": 4.5, + "w": 1.75 + }, + { + "x": 7.75, + "y": 4.5, + "w": 2.25 + }, + { + "label": "Alt", + "x": 10, + "y": 4.5, + "w": 1.25 + }, + { + "label": "Fn", + "x": 11.25, + "y": 4.5, + "w": 1.25 + }, + { + "label": "\u2190", + "x": 13, + "y": 4.5 + }, + { + "label": "\u2193", + "x": 14, + "y": 4.5 + }, + { + "label": "\u2192", + "x": 15, + "y": 4.5 + } + ] + } + } +} diff --git a/keyboards/yandrstudio/nz67v2/keymaps/default/keymap.c b/keyboards/yandrstudio/nz67v2/keymaps/default/keymap.c new file mode 100644 index 0000000000..7416296d5d --- /dev/null +++ b/keyboards/yandrstudio/nz67v2/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2022 JasonRen(biu) + * + * 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_VOLD,KC_SPC, KC_VOLU, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, URGB_K, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, LOCK_GUI,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/yandrstudio/nz67v2/keymaps/via/keymap.c b/keyboards/yandrstudio/nz67v2/keymaps/via/keymap.c new file mode 100644 index 0000000000..c93b321727 --- /dev/null +++ b/keyboards/yandrstudio/nz67v2/keymaps/via/keymap.c @@ -0,0 +1,76 @@ +/* Copyright 2022 JasonRen(biu) + * + * 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_VOLD,KC_SPC, KC_VOLU, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, URGB_K, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, LOCK_GUI,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; +#ifdef ENCODER_ENABLE +keyevent_t encoder1_ccw = {.key = (keypos_t){.row = 4, .col = 4}, .pressed = false}; + +keyevent_t encoder1_cw = {.key = (keypos_t){.row = 4, .col = 6}, .pressed = false}; + +void matrix_scan_user(void) { + if (IS_PRESSED(encoder1_ccw)) { + encoder1_ccw.pressed = false; + encoder1_ccw.time = (timer_read() | 1); + action_exec(encoder1_ccw); + } + + if (IS_PRESSED(encoder1_cw)) { + encoder1_cw.pressed = false; + encoder1_cw.time = (timer_read() | 1); + action_exec(encoder1_cw); + } +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + encoder1_cw.pressed = true; + encoder1_cw.time = (timer_read() | 1); + action_exec(encoder1_cw); + } else { + encoder1_ccw.pressed = true; + encoder1_ccw.time = (timer_read() | 1); + action_exec(encoder1_ccw); + } + return true; +} +#endif diff --git a/keyboards/yandrstudio/nz67v2/keymaps/via/rules.mk b/keyboards/yandrstudio/nz67v2/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/yandrstudio/nz67v2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/yandrstudio/nz67v2/mcuconf.h b/keyboards/yandrstudio/nz67v2/mcuconf.h new file mode 100644 index 0000000000..3ec9c20128 --- /dev/null +++ b/keyboards/yandrstudio/nz67v2/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright 2022 JasonRen(biu) + * + * 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 + +#undef STM32_PLLXTPRE +#define STM32_PLLXTPRE STM32_PLLXTPRE_DIV2 diff --git a/keyboards/yandrstudio/nz67v2/nz67v2.c b/keyboards/yandrstudio/nz67v2/nz67v2.c new file mode 100644 index 0000000000..b8caa96bc0 --- /dev/null +++ b/keyboards/yandrstudio/nz67v2/nz67v2.c @@ -0,0 +1,118 @@ +/* Copyright 2022 JasonRen(biu) + * + * 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 "nz67v2.h" + +#ifdef RGB_MATRIX_ENABLE + +/* globol var store in eeprom for key and underground rgb switch */ +typedef union { + uint32_t raw; + uint8_t underground_rgb_sw :8; +} kb_cums_t; +kb_cums_t kb_cums; + +led_config_t g_led_config = { + { + {54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68}, + {53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39}, + {25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, NO_LED, 37, 38}, + {24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, NO_LED, 13, 12, 11}, + {0, 1, 2, 3, NO_LED, 4, NO_LED, 5, NO_LED, 6, 7, NO_LED, 8, 9, 10} + }, + { + {0,64},{16,64},{32,64},{48,64}, {80,64}, {112,64}, {144,64},{160,64}, {192,64},{208,64},{224,64}, + {224,48},{208,48},{192,48}, {160,48},{144,48},{128,48},{112,48},{96,48},{80,48},{64,48},{48,48},{32,48},{16,48},{0,48}, + {0,32},{16,32},{32,32},{48,32},{64,32},{80,32},{96,32},{112,32},{128,32},{144,32},{160,32},{176,32}, {208,32},{224,32}, + {224,16},{208,16},{192,16},{176,16},{160,16},{144,16},{128,16},{112,16},{96,16},{80,16},{64,16},{48,16},{32,16},{16,16},{0,16}, + {0,0},{16,0},{32,0},{48,0},{64,0},{80,0},{96,0},{112,0},{128,0},{144,0},{160,0},{176,0},{192,0},{208,0},{224,0}, + {224,0},{196,0},{168,0},{140,0},{112,0},{84,0},{56,0},{28,0},{0,0}, + {224,64},{196,64},{168,64},{140,64},{112,64},{84,64},{56,64},{28,64} + }, + { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2 + } +}; + +void rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { + if (rgb_matrix_is_enabled()) { + if (kb_cums.underground_rgb_sw == 1) { + for (uint8_t i = led_min; i < led_max; ++i) { + if ((g_led_config.flags[i] == 4)) { + rgb_matrix_set_color(i, 0, 0, 0); + } + } + } else if (kb_cums.underground_rgb_sw == 2) { + for (uint8_t i = led_min; i < led_max; ++i) { + if ((g_led_config.flags[i] == 2)) { + rgb_matrix_set_color(i, 0, 0, 0); + } + } + } + } else { + rgb_matrix_set_color_all(0,0,0); + } + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(25, rgblight_get_val(), rgblight_get_val(), rgblight_get_val()); + } +} + + +void eeconfig_init_kb(void) { + kb_cums.raw = 0; + eeconfig_update_kb(kb_cums.raw); +} + +void keyboard_post_init_kb(void) { + kb_cums.underground_rgb_sw = eeconfig_read_kb(); +} + +#endif + + + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { return false; } + + switch(keycode) { +#ifdef RGB_MATRIX_ENABLE + case URGB_K: + if (rgb_matrix_config.enable && record->event.pressed) { + kb_cums.underground_rgb_sw += 1; + kb_cums.underground_rgb_sw %= 3; + } + eeconfig_update_kb(kb_cums.raw); + return false; +#endif + case LOCK_GUI: + process_magic(GUI_TOG, record); + return false; + default: + break; + } + return true; +} + +void board_init(void) { + AFIO->MAPR |= AFIO_MAPR_TIM3_REMAP_PARTIALREMAP; +} diff --git a/keyboards/yandrstudio/nz67v2/nz67v2.h b/keyboards/yandrstudio/nz67v2/nz67v2.h new file mode 100644 index 0000000000..d60abef4f1 --- /dev/null +++ b/keyboards/yandrstudio/nz67v2/nz67v2.h @@ -0,0 +1,42 @@ +/* Copyright 2020 zvecr + * + * 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" + +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, K314, \ + K400, K401, K402, K403, K404, K405, K406, K407, K409, K410, K412, K413, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, KC_NO, K312, K313, K314 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, KC_NO, K409, K410, KC_NO, K412, K413, K414 } \ +} + + + +#ifdef RGB_MATRIX_ENABLE +# define URGB_K KC_F24 +#else +# define URGB_K KC_TRNS +#endif + +#define LOCK_GUI KC_F23 diff --git a/keyboards/yandrstudio/nz67v2/readme.md b/keyboards/yandrstudio/nz67v2/readme.md new file mode 100644 index 0000000000..1e75395fde --- /dev/null +++ b/keyboards/yandrstudio/nz67v2/readme.md @@ -0,0 +1,23 @@ +# nz67v2 + +![nz67v2](https://i.imgur.com/AHmBuAqh.png) + +A 67 keys keyboard with rgb (key and underground). +This keyboard use 16mhz HSE and APM32F103 as MCU. + +- Keyboard Maintainer: https://github.com/jiaxin96 +- Hardware Supported: nz67v2 +- Hardware Availability: [Y&R Works](https://shop417111022.taobao.com/?spm=2013.1.1000126.2.6aea6fa3Uxufe5), [5162](https://shop294487007.taobao.com/?spm=a230r.7195193.1997079397.2.763853eeeaoRl4) + +Make example for this keyboard (after setting up your build environment): + + make yandrstudio/nz67v2:default + +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. + +## Bootloader + +Enter the bootloader in 2 ways: + +- **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key which is Escape in this keyboard) and plug in the keyboard +- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. diff --git a/keyboards/yandrstudio/nz67v2/rules.mk b/keyboards/yandrstudio/nz67v2/rules.mk new file mode 100644 index 0000000000..a5923514e3 --- /dev/null +++ b/keyboards/yandrstudio/nz67v2/rules.mk @@ -0,0 +1,19 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF + +# 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 = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix functionality +RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support +WS2812_DRIVER = pwm # WS2812 RGB Driver +ENCODER_ENABLE = yes # Rotary encoder support -- cgit v1.2.3