From a030e8094f5e374461d61d0899a5e74c23fbe570 Mon Sep 17 00:00:00 2001 From: Shane Dowling Date: Sun, 2 Apr 2023 09:27:04 +0100 Subject: [PATCH 01/73] [Keymap] Add md40 ckrbd keymap (#19931) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Drashna Jaelre --- keyboards/crkbd/keymaps/md40/config.h | 41 ++++++++++++++++++++++++++ keyboards/crkbd/keymaps/md40/keymap.c | 38 ++++++++++++++++++++++++ keyboards/crkbd/keymaps/md40/readme.md | 19 ++++++++++++ keyboards/crkbd/keymaps/md40/rules.mk | 8 +++++ 4 files changed, 106 insertions(+) create mode 100644 keyboards/crkbd/keymaps/md40/config.h create mode 100644 keyboards/crkbd/keymaps/md40/keymap.c create mode 100644 keyboards/crkbd/keymaps/md40/readme.md create mode 100644 keyboards/crkbd/keymaps/md40/rules.mk diff --git a/keyboards/crkbd/keymaps/md40/config.h b/keyboards/crkbd/keymaps/md40/config.h new file mode 100644 index 000000000000..c1ef28df50ec --- /dev/null +++ b/keyboards/crkbd/keymaps/md40/config.h @@ -0,0 +1,41 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +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 TAPPING_FORCE_HOLD +#define TAPPING_TERM 300 + +#undef RGBLED_NUM +#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 RGBLED_NUM 27 +#define RGBLIGHT_LIMIT_VAL 120 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 diff --git a/keyboards/crkbd/keymaps/md40/keymap.c b/keyboards/crkbd/keymaps/md40/keymap.c new file mode 100644 index 000000000000..39ae0bb4e0ba --- /dev/null +++ b/keyboards/crkbd/keymaps/md40/keymap.c @@ -0,0 +1,38 @@ +// Copyright 2021 Shane Dowling (@shano) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#define KC_ESCC MT(MOD_LCTL, KC_ESC) +#define KC_ENTS MT(MOD_LSFT, KC_ENT) +#define KC_FN MO(_FN) + +enum layers { + _QWERTY, + _FN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_BSPC, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, + //|----+----+----+----+----+----+ |----+----+----+----+----+----| + KC_ESCC, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_ESC , + //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' + KC_LALT,KC_LGUI,KC_SPC , KC_ENTS,KC_FN,KC_FN + // `----+----+----' `+---+----+----'c + ), + [_FN] = LAYOUT( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + _______,KC_1, KC_2 ,KC_3, KC_4,KC_5, KC_6,KC_7,KC_8,KC_9,KC_0,KC_BSPC, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + _______,KC_EXCLAIM,KC_AT,KC_HASH,KC_DOLLAR,KC_PERCENT, KC_LEFT,KC_DOWN, KC_UP ,KC_RIGHT,KC_LBRC,KC_RBRC, + //|----+----+----+----+----+----+ |----+----+----+----+----+----| + _______, KC_CIRCUMFLEX , KC_AMPR , KC_ASTERISK , KC_LEFT_PAREN , KC_RIGHT_PAREN , KC_MINUS,KC_PLUS,KC_EQL,KC_PIPE,KC_GRAVE,KC_BACKSLASH, + //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' + _______,_______,_______ , _______,_______,_______ + // `----+----+----' `----+----+----' + ) +}; + diff --git a/keyboards/crkbd/keymaps/md40/readme.md b/keyboards/crkbd/keymaps/md40/readme.md new file mode 100644 index 000000000000..ee1e14a0165a --- /dev/null +++ b/keyboards/crkbd/keymaps/md40/readme.md @@ -0,0 +1,19 @@ +# MD40: Minimally Disruptive 40% Keymap + +This keymap is an attempt to go from a standard keyboard layout to a 40% keyboard with minimal disruption. + +Some aims: +- Two layers only +- Existing keyboard positions where possible +- Exceptions where it's not possible +- Exceptions where it makes sense + +Supports crkbd only. + +## Base Layer + +![Base Layer](https://i.imgur.com/hXLP6ush.png) + +## Fn Layer + +![Base Layer](https://i.imgur.com/Sozd1p8h.png) diff --git a/keyboards/crkbd/keymaps/md40/rules.mk b/keyboards/crkbd/keymaps/md40/rules.mk new file mode 100644 index 000000000000..86f4f1e11c01 --- /dev/null +++ b/keyboards/crkbd/keymaps/md40/rules.mk @@ -0,0 +1,8 @@ + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +NKRO_ENABLE = no # Enable N-Key Rollover From c402bac023b7cc71fb4d72de9bed997c076badd3 Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Sun, 2 Apr 2023 16:28:00 +0800 Subject: [PATCH 02/73] [Keymap] Ferris - Add split USB detection directive (#20213) --- keyboards/ferris/keymaps/via/config.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/keyboards/ferris/keymaps/via/config.h b/keyboards/ferris/keymaps/via/config.h index 5539c55f1d3a..0d822891d139 100644 --- a/keyboards/ferris/keymaps/via/config.h +++ b/keyboards/ferris/keymaps/via/config.h @@ -7,3 +7,7 @@ #define TAPPING_TERM 230 #define IGNORE_MOD_TAP_INTERRUPT +// Handle master/slave detection on low cost Promicro +#ifdef __AVR__ +# define SPLIT_USB_DETECT +#endif From b53356f7ab051c7ef208e8cd2927b7671e731db8 Mon Sep 17 00:00:00 2001 From: Cameron Varley Date: Sun, 2 Apr 2023 04:34:54 -0400 Subject: [PATCH 03/73] [Keyboard] Add GMMK Numpad (#20067) Co-authored-by: Sergey Vlasov Co-authored-by: Drashna Jaelre --- keyboards/gmmk/numpad/config.h | 84 +++++++++++ keyboards/gmmk/numpad/halconf.h | 26 ++++ keyboards/gmmk/numpad/info.json | 51 +++++++ .../gmmk/numpad/keymaps/default/keymap.c | 60 ++++++++ keyboards/gmmk/numpad/keymaps/via/keymap.c | 79 ++++++++++ keyboards/gmmk/numpad/keymaps/via/rules.mk | 2 + keyboards/gmmk/numpad/matrix.c | 133 +++++++++++++++++ keyboards/gmmk/numpad/mcuconf.h | 26 ++++ keyboards/gmmk/numpad/numpad.c | 136 ++++++++++++++++++ keyboards/gmmk/numpad/post_config.h | 21 +++ keyboards/gmmk/numpad/readme.md | 40 ++++++ keyboards/gmmk/numpad/rules.mk | 26 ++++ 12 files changed, 684 insertions(+) create mode 100644 keyboards/gmmk/numpad/config.h create mode 100644 keyboards/gmmk/numpad/halconf.h create mode 100644 keyboards/gmmk/numpad/info.json create mode 100644 keyboards/gmmk/numpad/keymaps/default/keymap.c create mode 100644 keyboards/gmmk/numpad/keymaps/via/keymap.c create mode 100644 keyboards/gmmk/numpad/keymaps/via/rules.mk create mode 100644 keyboards/gmmk/numpad/matrix.c create mode 100644 keyboards/gmmk/numpad/mcuconf.h create mode 100644 keyboards/gmmk/numpad/numpad.c create mode 100644 keyboards/gmmk/numpad/post_config.h create mode 100644 keyboards/gmmk/numpad/readme.md create mode 100644 keyboards/gmmk/numpad/rules.mk diff --git a/keyboards/gmmk/numpad/config.h b/keyboards/gmmk/numpad/config.h new file mode 100644 index 000000000000..6aa0a6c0160f --- /dev/null +++ b/keyboards/gmmk/numpad/config.h @@ -0,0 +1,84 @@ +/* Copyright 2021 Glorious, LLC + * Modified 2022 by rustedaperture for qmk_firmware + * + * 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 SLIDER_PIN B0 +#define MIDI_ADVANCED + +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE + +#define SPI_DRIVER SPIDQ +#define SPI_SCK_PIN B3 +#define SPI_MOSI_PIN B5 +#define SPI_MISO_PIN B4 + +#define DRIVER_1_CS B12 +#define DRIVER_1_EN A15 +#define DRIVER_1_PW_EN B13 + +#define DRIVER_COUNT 1 + +#define RGB_MATRIX_LED_COUNT 31 + +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B6 +#define WEAR_LEVELING_BACKING_SIZE 2048 + +#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 +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +#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 \ No newline at end of file diff --git a/keyboards/gmmk/numpad/halconf.h b/keyboards/gmmk/numpad/halconf.h new file mode 100644 index 000000000000..b6b68a4e6336 --- /dev/null +++ b/keyboards/gmmk/numpad/halconf.h @@ -0,0 +1,26 @@ +/* Copyright 2021 Glorious, LLC + * Modified 2022 by rustedaperture for qmk_firmware + * + * 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_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD +#define HAL_USE_ADC TRUE + + +#include_next \ No newline at end of file diff --git a/keyboards/gmmk/numpad/info.json b/keyboards/gmmk/numpad/info.json new file mode 100644 index 000000000000..d5ea534b67e1 --- /dev/null +++ b/keyboards/gmmk/numpad/info.json @@ -0,0 +1,51 @@ +{ + "keyboard_name": "GMMK Numpad", + "manufacturer": "Glorious", + "url": "https://www.gloriousgaming.com/products/gmmk-numpad", + "maintainer": "GloriousThrall", + "usb": { + "vid": "0x320F", + "pid": "0x5088", + "device_version": "0.0.1" + }, + "encoder": { + "rotary": [ + {"pin_a": "A2", "pin_b": "A1"} + ] + }, + "processor": "WB32F3G71", + "bootloader": "wb32-dfu", + "diode_direction": "ROW2COL", + "matrix_pins": { + "rows": ["A3", "A4", "A5", "A6", "A7"], + "cols": ["B7", "B1", "B10", "B11"] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "NUM", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "/", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "*", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "-", "matrix": [0, 3], "x": 3, "y": 0}, + + {"label": "7", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "8", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "9", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "+", "matrix": [1, 3], "x": 3, "y": 1, "h": 2}, + + {"label": "4", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "5", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "6", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "CALC", "matrix": [2, 3], "x": 3, "y": 2}, + + {"label": "1", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "2", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "3", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "RET", "matrix": [3, 3], "x": 3, "y": 3, "h": 2}, + + {"label": "0", "matrix": [4, 0], "x": 0, "y": 4, "w": 2}, + {"label": ".", "matrix": [4, 3], "x": 3, "y": 4} + ] + } + } +} diff --git a/keyboards/gmmk/numpad/keymaps/default/keymap.c b/keyboards/gmmk/numpad/keymaps/default/keymap.c new file mode 100644 index 000000000000..aa1829cdd419 --- /dev/null +++ b/keyboards/gmmk/numpad/keymaps/default/keymap.c @@ -0,0 +1,60 @@ +/* Copyright 2021 Glorious, LLC + * Modified 2022 by rustedaperture for qmk_firmware + +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 "analog.h" +#include "qmk_midi.h" + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// NUM / * - +// 7 8 9 + +// 4 5 6 ENCODER +// 1 2 3 RET +// 0 . + + [0] = LAYOUT( + MO(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_CALC, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT + ), + [1] = LAYOUT( + _______, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, RGB_VAI, KC_P9, KC_PPLS, + RGB_RMOD, KC_P5, RGB_MOD, KC_CALC, + KC_P1, RGB_VAD, KC_P3, KC_PENT, + RGB_TOG, QK_BOOT + ) +}; + +// Potentiometer Slider, MIDI Control + +uint8_t divisor = 0; + +void slider(void) { + if (divisor++) { /* only run the slider function 1/256 times it's called */ + return; + } + midi_send_cc(&midi_device, 2, 0x3E, 0x7F + (analogReadPin(SLIDER_PIN) >> 3)); +} + +void housekeeping_task_user(void) { + slider(); +} \ No newline at end of file diff --git a/keyboards/gmmk/numpad/keymaps/via/keymap.c b/keyboards/gmmk/numpad/keymaps/via/keymap.c new file mode 100644 index 000000000000..aa7730acdd14 --- /dev/null +++ b/keyboards/gmmk/numpad/keymaps/via/keymap.c @@ -0,0 +1,79 @@ +/* Copyright 2021 Glorious, LLC +Modified 2022 by rustedaperture for qmk_firmware +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 "analog.h" +#include "qmk_midi.h" + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// NUM / * - +// 7 8 9 + +// 4 5 6 ENCODER +// 1 2 3 RET +// 0 . + + [0] = LAYOUT( + MO(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_CALC, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT + ), + [1] = LAYOUT( + _______, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, RGB_VAI, KC_P9, KC_PPLS, + RGB_RMOD, KC_P5, RGB_MOD, KC_CALC, + KC_P1, RGB_VAD, KC_P3, KC_PENT, + RGB_TOG, QK_BOOT + ), + [2] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______ + ), +}; +// clang-format on + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [2] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } +}; + +// Potentiometer Slider, MIDI Control + +uint8_t divisor = 0; + +void slider(void) { + if (divisor++) { /* only run the slider function 1/256 times it's called */ + return; + } + midi_send_cc(&midi_device, 2, 0x3E, 0x7F + (analogReadPin(SLIDER_PIN) >> 3)); +} + +void housekeeping_task_user(void) { + slider(); +} \ No newline at end of file diff --git a/keyboards/gmmk/numpad/keymaps/via/rules.mk b/keyboards/gmmk/numpad/keymaps/via/rules.mk new file mode 100644 index 000000000000..49d34e41fd4b --- /dev/null +++ b/keyboards/gmmk/numpad/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE=yes +ENCODER_MAP_ENABLE=yes diff --git a/keyboards/gmmk/numpad/matrix.c b/keyboards/gmmk/numpad/matrix.c new file mode 100644 index 000000000000..99adb38f1843 --- /dev/null +++ b/keyboards/gmmk/numpad/matrix.c @@ -0,0 +1,133 @@ +// Copyright 2023 Cameron Varley (@RustedAperture) +// SPDX-License-Identifier: GPL-2.0-or-later + +/* + * scan matrix + */ +#include +#include +#include "wait.h" +#include "print.h" +#include "debug.h" +#include "util.h" +#include "matrix.h" +#include "debounce.h" +#include "quantum.h" + +/* matrix state(1:on, 0:off) */ +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values + +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; +#define MATRIX_ROW_SHIFTER ((matrix_row_t)1) + +static inline void setPinOutput_writeLow(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + setPinOutput(pin); + writePinLow(pin); + } +} + +static inline void setPinOutput_writeHigh(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + setPinOutput(pin); + writePinHigh(pin); + } +} + +static inline void setPinInputHigh_atomic(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + setPinInputHigh(pin); + } +} + +static inline uint8_t readMatrixPin(pin_t pin) { + if (pin != NO_PIN) { + return readPin(pin); + } else { + return 1; + } +} + +static bool select_col(uint8_t col) { + pin_t pin = col_pins[col]; + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + return true; + } + return false; +} + +static void unselect_col(uint8_t col) { + pin_t pin = col_pins[col]; + if (pin != NO_PIN) { +# ifdef MATRIX_UNSELECT_DRIVE_HIGH + setPinOutput_writeHigh(pin); +# else + setPinInputHigh_atomic(pin); +# endif + } +} + +static void unselect_cols(void) { + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + unselect_col(x); + } +} + + +__attribute__((weak)) void matrix_init_custom(void) { + unselect_cols(); + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + if (row_pins[x] != NO_PIN) { + setPinInputHigh_atomic(row_pins[x]); + } + } + setPinInputHigh_atomic(B8); +} + +__attribute__((weak)) void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) { // Start with a clear matrix row + bool key_pressed = false; + + // Select col + if (!select_col(current_col)) { // select col + return; // skip NO_PIN col + } + matrix_output_select_delay(); + + // For each row... + for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { + // Check row pin state + if (current_col == 3 && row_index == 2 && readMatrixPin(B8) == 1) { + current_matrix[row_index] |= row_shifter; + key_pressed = !readMatrixPin(B8); + } else if (readMatrixPin(row_pins[row_index]) == 0) { + // Pin LO, set col bit + current_matrix[row_index] |= row_shifter; + key_pressed = true; + } else { + // Pin HI, clear col bit + current_matrix[row_index] &= ~row_shifter; + } + } + + // Unselect col + unselect_col(current_col); + matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + static matrix_row_t temp_matrix[MATRIX_ROWS] = {0}; + + matrix_row_t row_shifter = MATRIX_ROW_SHIFTER; + for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { + matrix_read_rows_on_col(temp_matrix, current_col, row_shifter); + } + + bool changed = memcmp(current_matrix, temp_matrix, sizeof(temp_matrix)) != 0; + if (changed) { + memcpy(current_matrix, temp_matrix, sizeof(temp_matrix)); + } + return changed; +} diff --git a/keyboards/gmmk/numpad/mcuconf.h b/keyboards/gmmk/numpad/mcuconf.h new file mode 100644 index 000000000000..a07efdbffb8c --- /dev/null +++ b/keyboards/gmmk/numpad/mcuconf.h @@ -0,0 +1,26 @@ +/* Copyright 2021 Glorious, LLC + * Modified 2022 by rustedaperture for qmk_firmware + * + * 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 WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE + +// #undef WB32_ADC_USE_ADC1 +#define WB32_ADC_USE_ADC1 TRUE \ No newline at end of file diff --git a/keyboards/gmmk/numpad/numpad.c b/keyboards/gmmk/numpad/numpad.c new file mode 100644 index 000000000000..ed4fed266782 --- /dev/null +++ b/keyboards/gmmk/numpad/numpad.c @@ -0,0 +1,136 @@ +/* Copyright 2021 Glorious, LLC + * Modified 2022 by rustedaperture for qmk_firmware + * + * 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 "quantum.h" + +#ifdef RGB_MATRIX_ENABLE + +const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { +/* Each AW20216 channel is controlled by a register at some offset between 0x00 + * and 0xD7 inclusive. + * See drivers/awinic/aw20216.h for the mapping between register offsets and + * driver pin locations. + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, CS4_SW1, CS5_SW1, CS6_SW1 }, // 0 NUM + {0, CS4_SW2, CS5_SW2, CS6_SW2 }, // 1 / + {0, CS7_SW1, CS8_SW1, CS9_SW1 }, // 2 * + {0, CS7_SW2, CS8_SW2, CS9_SW2 }, // 3 - + {0, CS4_SW3, CS5_SW3, CS6_SW3 }, // 4 7 + {0, CS4_SW4, CS5_SW4, CS6_SW4 }, // 5 8 + {0, CS7_SW3, CS8_SW3, CS9_SW3 }, // 6 9 + {0, CS7_SW4, CS8_SW4, CS9_SW4 }, // 7 + + {0, CS4_SW5, CS5_SW5, CS6_SW5 }, // 8 4 + {0, CS4_SW6, CS5_SW6, CS6_SW6 }, // 9 5 + {0, CS7_SW5, CS8_SW5, CS9_SW5 }, // 10 6 + {0, CS4_SW7, CS5_SW7, CS6_SW7 }, // 11 1 + {0, CS4_SW8, CS5_SW8, CS6_SW8 }, // 12 2 + {0, CS7_SW7, CS8_SW7, CS9_SW7 }, // 13 3 + {0, CS7_SW8, CS8_SW8, CS9_SW8 }, // 14 ENTER + {0, CS4_SW9, CS5_SW9, CS6_SW9 }, // 15 0 + {0, CS7_SW9, CS8_SW9, CS9_SW9 }, // 16 . + {0, CS1_SW1, CS2_SW1, CS3_SW1 }, // 17 LED18 + {0, CS1_SW2, CS2_SW2, CS3_SW2 }, // 18 LED19 + {0, CS1_SW3, CS2_SW3, CS3_SW3 }, // 19 LED20 + {0, CS1_SW4, CS2_SW4, CS3_SW4 }, // 20 LED21 + {0, CS1_SW5, CS2_SW5, CS3_SW5 }, // 21 LED22 + {0, CS1_SW6, CS2_SW6, CS3_SW6 }, // 22 LED23 + {0, CS1_SW7, CS2_SW7, CS3_SW7 }, // 23 LED24 + {0, CS10_SW1, CS11_SW1, CS12_SW1 }, // 24 LED27 + {0, CS10_SW2, CS11_SW2, CS12_SW2 }, // 25 LED28 + {0, CS10_SW3, CS11_SW3, CS12_SW3 }, // 26 LED29 + {0, CS10_SW4, CS11_SW4, CS12_SW4 }, // 27 LED30 + {0, CS10_SW5, CS11_SW5, CS12_SW5 }, // 28 LED31 + {0, CS10_SW6, CS11_SW6, CS12_SW6 }, // 29 LED32 + {0, CS10_SW7, CS11_SW7, CS12_SW7 }, // 30 LED33 +}; + +led_config_t g_led_config = {{ + { 0, 1, 2, 3 }, + { 4, 5, 6, 7 }, + { 8, 9, 10, NO_LED}, + { 11, 12, 13, 14 }, + { 15, NO_LED, NO_LED, 16 } +}, { + {45, 0 }, // 0 NUM + {90, 0 }, // 1 / + {134, 0 }, // 2 * + {179, 0 }, // 3 - + {45, 16 }, // 4 7 + {90, 16 }, // 5 8 + {134, 16 }, // 6 9 + {179, 24 }, // 7 + + {45, 32 }, // 8 4 + {90, 32 }, // 9 5 + {134, 32 }, // 10 6 + {45, 48 }, // 11 1 + {90, 48 }, // 12 2 + {134, 48 }, // 13 3 + {179, 56 }, // 14 ENTER + {67, 64 }, // 15 0 + {134, 64 }, // 16 . + {0, 0 }, // 17 LED18 + {0, 11 }, // 18 LED19 + {0, 21 }, // 19 LED20 + {0, 32 }, // 20 LED21 + {0, 43 }, // 21 LED22 + {0, 53 }, // 22 LED23 + {0, 64 }, // 23 LED24 + {224, 0 }, // 24 LED27 + {224, 11 }, // 25 LED28 + {224, 21 }, // 26 LED29 + {224, 32 }, // 27 LED30 + {224, 43 }, // 28 LED31 + {224, 53 }, // 29 LED32 + {224, 64 } // 30 LED33 +}, { + 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 +} }; + +# ifdef DRIVER_1_PW_EN + +void keyboard_pre_init_user(void) { + wait_ms(2000); + setPinOutput(DRIVER_1_PW_EN); + writePinHigh(DRIVER_1_PW_EN); +} +# endif + +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + return true; +} +#endif diff --git a/keyboards/gmmk/numpad/post_config.h b/keyboards/gmmk/numpad/post_config.h new file mode 100644 index 000000000000..6ee57f4439ef --- /dev/null +++ b/keyboards/gmmk/numpad/post_config.h @@ -0,0 +1,21 @@ +/* Copyright 2022 by rustedaperture + * + * 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 + +#ifndef TAP_CODE_DELAY +# define TAP_CODE_DELAY 10 +#endif \ No newline at end of file diff --git a/keyboards/gmmk/numpad/readme.md b/keyboards/gmmk/numpad/readme.md new file mode 100644 index 000000000000..d40b2b8c5871 --- /dev/null +++ b/keyboards/gmmk/numpad/readme.md @@ -0,0 +1,40 @@ +# GMMK NUMPAD + +![GMMK NUMPAD](https://i.imgur.com/JV4C5os.png) + +A 17 Key macropad made and sold by Glorious LLC, equipped with a WB32 microcontroller, with support for a rotary encoder. + +* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall) +* Hardware Supported: GMMK Numpad +* Hardware Availability: [GloriousPCGaming.com](https://www.gloriousgaming.com/products/gmmk-numpad) + +Make example for this keyboard (after setting up your build environment): + + make gmmk/numpad:default + +Flashing example for this keyboard: + + make gmmk/numpad:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the Num key and plug in the keyboard +* **Keycode in layout**: Press the Num+Del key which is mapped to `QK_BOOT` +* **Physical switch**: Pinhole located ubnde the zero key press while inserting the USB +* **From Glorious Core Firmware**: Press Enter+Plus at the same time while plugging in the USB + +## Slider + +The slider is currently compatible with [Midi2Vol](https://github.com/jesusvallejo/Midi2Vol), [Midi Mixer (Windows)](https://github.com/jpwilliams/midi-mixer-releases/releases), [Midi2Lightroom (Mac)](https://rsjaffe.github.io/MIDI2LR/), and [ControllerMate (Mac)](https://www.orderedbytes.com/controllermate/) + +## Encoder Button + +The Button is set to KC_CALC by default and is located at 2,3 on the matrix + +## Broken + +* Bluetooth functionality \ No newline at end of file diff --git a/keyboards/gmmk/numpad/rules.mk b/keyboards/gmmk/numpad/rules.mk new file mode 100644 index 000000000000..4d23ffbfaf30 --- /dev/null +++ b/keyboards/gmmk/numpad/rules.mk @@ -0,0 +1,26 @@ +# 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 +ENCODER_ENABLE = yes +KEYBOARD_SHARED_EP = yes +MIDI_ENABLE = yes + +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = AW20216 + +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = spi_flash + +LTO_ENABLE = yes + +SRC += analog.c \ + matrix.c \ No newline at end of file From be9f6e679b7eccb830ee7b953f7f9fbdc550db42 Mon Sep 17 00:00:00 2001 From: Alexander Kagno Date: Sun, 2 Apr 2023 03:57:54 -0500 Subject: [PATCH 04/73] [Keymap] update arkag keymap, add hitbox layout (#20271) Co-authored-by: Alex Kagno --- keyboards/preonic/keymaps/arkag/keymap.c | 19 +++-- users/arkag/arkag.c | 89 +----------------------- users/arkag/arkag.h | 19 ++--- 3 files changed, 21 insertions(+), 106 deletions(-) diff --git a/keyboards/preonic/keymaps/arkag/keymap.c b/keyboards/preonic/keymaps/arkag/keymap.c index a35592589545..e1277117919f 100644 --- a/keyboards/preonic/keymaps/arkag/keymap.c +++ b/keyboards/preonic/keymaps/arkag/keymap.c @@ -20,11 +20,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT_preonic_grid( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, M_OS, KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, - KC_LCTL, KC_LGUI, KC_LALT, MEDIA, SYMBOL, KC_SPC, QK_LEAD, ARROW, FUNCT, XXXXXXX, KC_RALT, QK_LEAD), + KC_LCTL, KC_LGUI, KC_LALT, MEDIA, SYMBOL, KC_SPC, QK_LEAD, ARROW, FUNCT, KC_RALT, XXXXXXX, HITBOX), [_SYMBOL] = LAYOUT_preonic_grid( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -47,15 +47,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + [_HITBOX] = LAYOUT_preonic_grid( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_U, KC_I, KC_O, KC_P, XXXXXXX, + XXXXXXX, XXXXXXX, KC_A, KC_S, KC_D, XXXXXXX, XXXXXXX, KC_J, KC_K, KC_L, KC_SCLN, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ENT, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_W, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, HITBOX), + [_FUNCT] = LAYOUT_preonic_grid( - 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, _______, _______, _______, _______, _______, - M_SFTY, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, - _______, _______, _______, _______, _______, _______, M_AEST, _______, _______, _______, _______, M_OS ), + _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), [_KEEB] = LAYOUT_preonic_grid( - CK_TOGG, AU_TOGG, MU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, + CK_TOGG, AU_TOGG, MU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, HITBOX, M_USSR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP, BL_UP, BL_DOWN, BL_BRTG, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, diff --git a/users/arkag/arkag.c b/users/arkag/arkag.c index 4e80b318a718..7af06acdf1ef 100644 --- a/users/arkag/arkag.c +++ b/users/arkag/arkag.c @@ -41,7 +41,6 @@ uint8_t velocikey_match_speed(uint8_t minValue, uint8_t maxValue) { } // End: Written by Chris Lewis -static int shift_int = 0; uint8_t current_os, mod_primary_mask, fade_interval, @@ -53,8 +52,6 @@ Color underglow, flashState flash_state = no_flash; fadeState fade_state = add_fade; activityState state = boot; -bool aesthetic = false, - shifty = false; float song_ussr[][2] = SONG(USSR_ANTHEM); @@ -208,7 +205,7 @@ void set_os (uint8_t os, bool update) { flash_color = underglow; flash_state = flash_off; state = boot; - num_extra_flashes_off = 1; + num_extra_flashes_off = 3; } // register GUI if Mac or Ctrl if other @@ -245,17 +242,6 @@ void sec_mod(bool press) { } } -// register Meh if Win or Hyper if other -// KC_MEH/HYPR registers both sides, causes issues with some apps -// I'll do it myself, then -void meh_hyper(bool press) { - if (current_os == OS_WIN) { - (press) ? register_mods(L_BIT_MEH) : unregister_mods(L_BIT_MEH); - } else { - (press) ? register_mods(L_BIT_HYPR) : unregister_mods(L_BIT_HYPR); - } -} - void multi_tap(uint8_t num_of_chars, uint16_t keycode, bool use_shift) { if (use_shift) { register_code(KC_LSFT); @@ -441,56 +427,6 @@ void matrix_scan_user(void) { } bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (aesthetic) { - switch (keycode) { - case KC_A ... KC_0: - case KC_SPACE ... KC_SLASH: - if (record->event.pressed) { - state = active; - velocikey_accelerate(); - tap_code(keycode); - tap_code(KC_SPACE); - } - return false; - - case KC_BACKSPACE: - if (record->event.pressed) { - state = active; - velocikey_accelerate(); - tap_code(keycode); - tap_code(keycode); - } - return false; - default: // Do nothing - break; - } - } - - if (shifty) { - switch (keycode) { - case KC_A ... KC_Z: - if (record->event.pressed) { - shift_int += (rand() % 5); - int shift = ((shift_int % 2) == 1) ? true : false; - state = active; - velocikey_accelerate(); - (shift) ? register_code(KC_LSFT) : NULL; - tap_code(keycode); - (shift) ? unregister_code(KC_LSFT) : NULL; - } - return false; - case KC_SPC: - if (record->event.pressed) { - state = active; - velocikey_accelerate(); - tap_code(keycode); - } - return false; - default: // Do nothing - break; - } - } - switch (keycode) { #ifdef AUDIO_ENABLE case M_USSR: @@ -509,29 +445,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_unicode(0x2014); // — } return false; - case M_LMHYP: - case M_EHYPR: - (keycode = M_LMHYP) ? (record->event.pressed) ? layer_on(_ARROW) : layer_off(_ARROW) : NULL; - meh_hyper(record->event.pressed); - return false; - - case M_SFTY: - if(record->event.pressed){ - num_extra_flashes_off = (shifty) ? 1 : 0; - shifty = !shifty; - flash_color = underglow; - flash_state = flash_off; - return false; - } - - case M_AEST: - if(record->event.pressed){ - num_extra_flashes_off = (aesthetic) ? 1 : 0; - aesthetic = !aesthetic; - flash_color = underglow; - flash_state = flash_off; - return false; - } default: if (record->event.pressed) { diff --git a/users/arkag/arkag.h b/users/arkag/arkag.h index d4bec6598f3a..e127702e94cb 100644 --- a/users/arkag/arkag.h +++ b/users/arkag/arkag.h @@ -4,14 +4,12 @@ #define EECONFIG_USERSPACE (uint8_t *)20 -#define SYMBOL MO(1) -#define MEDIA MO(2) -#define ARROW MO(3) -#define FUNCT MO(4) -#define KEEB MO(5) - -#define L_BIT_MEH MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT) | MOD_BIT(KC_LSFT) -#define L_BIT_HYPR MOD_BIT(KC_LCTL) | MOD_BIT(KC_LGUI) | MOD_BIT(KC_LALT) | MOD_BIT(KC_LSFT) +#define SYMBOL MO(_SYMBOL) +#define MEDIA MO(_MEDIA) +#define ARROW MO(_ARROW) +#define FUNCT MO(_FUNCT) +#define KEEB MO(_KEEB) +#define HITBOX TT(_HITBOX) #define LED_FLASH_DELAY 150 @@ -30,6 +28,7 @@ enum { _ARROW, _FUNCT, _KEEB, + _HITBOX, }; typedef enum { @@ -68,10 +67,6 @@ enum custom_keycodes { M_OS, M_DASH, M_USSR, - M_EHYPR, - M_LMHYP, - M_SFTY, - M_AEST, }; void velocikey_accelerate(void); From fd56a2a1dcdda8cf4504c715ce86e6d2d2d0d26e Mon Sep 17 00:00:00 2001 From: Vertex-kb <102476474+Vertex-kb@users.noreply.github.com> Date: Mon, 3 Apr 2023 01:08:53 +0800 Subject: [PATCH 05/73] Add angle65 (#19986) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Ryan --- keyboards/vertex/angle65/chconf.h | 28 ++++++ keyboards/vertex/angle65/config.h | 21 ++++ keyboards/vertex/angle65/halconf.h | 28 ++++++ keyboards/vertex/angle65/info.json | 97 +++++++++++++++++++ .../vertex/angle65/keymaps/default/keymap.c | 35 +++++++ keyboards/vertex/angle65/keymaps/via/keymap.c | 51 ++++++++++ keyboards/vertex/angle65/keymaps/via/rules.mk | 2 + keyboards/vertex/angle65/mcuconf.h | 27 ++++++ keyboards/vertex/angle65/readme.md | 22 +++++ keyboards/vertex/angle65/rules.mk | 17 ++++ 10 files changed, 328 insertions(+) create mode 100644 keyboards/vertex/angle65/chconf.h create mode 100644 keyboards/vertex/angle65/config.h create mode 100644 keyboards/vertex/angle65/halconf.h create mode 100644 keyboards/vertex/angle65/info.json create mode 100644 keyboards/vertex/angle65/keymaps/default/keymap.c create mode 100644 keyboards/vertex/angle65/keymaps/via/keymap.c create mode 100644 keyboards/vertex/angle65/keymaps/via/rules.mk create mode 100644 keyboards/vertex/angle65/mcuconf.h create mode 100644 keyboards/vertex/angle65/readme.md create mode 100644 keyboards/vertex/angle65/rules.mk diff --git a/keyboards/vertex/angle65/chconf.h b/keyboards/vertex/angle65/chconf.h new file mode 100644 index 000000000000..343afe57a617 --- /dev/null +++ b/keyboards/vertex/angle65/chconf.h @@ -0,0 +1,28 @@ +/* Copyright 2022 vertex + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/bt66tech/bt66tech60/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/vertex/angle65/config.h b/keyboards/vertex/angle65/config.h new file mode 100644 index 000000000000..33235010ac9a --- /dev/null +++ b/keyboards/vertex/angle65/config.h @@ -0,0 +1,21 @@ +/* Copyright 2022 vertex + +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 SOLENOID_PIN A2 + +#define FORCE_NKRO diff --git a/keyboards/vertex/angle65/halconf.h b/keyboards/vertex/angle65/halconf.h new file mode 100644 index 000000000000..7fb6be528fd8 --- /dev/null +++ b/keyboards/vertex/angle65/halconf.h @@ -0,0 +1,28 @@ +/* Copyright 2022 vertex + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/bt66tech/bt66tech60/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/vertex/angle65/info.json b/keyboards/vertex/angle65/info.json new file mode 100644 index 000000000000..cb017b7f8163 --- /dev/null +++ b/keyboards/vertex/angle65/info.json @@ -0,0 +1,97 @@ +{ + "keyboard_name": "ANGLE65", + "manufacturer": "vertex", + "url": "", + "maintainer": "EasonQian1, Vertex-kb", + "usb": { + "vid": "0x7374", + "pid": "0x9770", + "device_version": "0.0.1" + }, + "processor": "STM32F103", + "bootloader": "stm32duino", + "matrix_pins": { + "rows": ["B10", "B1", "B0", "A7", "A6"], + "cols": ["B9", "B8", "B7", "B6", "B5", "B4", "B3", "B11", "A15", "A10", "A9", "B14", "B13", "B12", "A5"] + }, + "diode_direction": "COL2ROW", + "indicators": { + "caps_lock": "C13", + "on_state": 0 + }, + "layouts": { + "LAYOUT": { + "layout":[ + {"label": "K00 (B10,B9)", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01 (B10,B8)", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02 (B10,B7)", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03 (B10,B6)", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K04 (B10,B5)", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "K05 (B10,B4)", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "K06 (B10,B3)", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "K07 (B10,B11)", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "K08 (B10,A15)", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "K09 (B10,A10)", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "K0A (B10,A9)", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "K0B (B10,B14)", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "K0C (B10,B13)", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "K0D (B10,B12)", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "K0E (B10,A5)", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "K10 (B1,B9)", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "K11 (B1,B8)", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "K12 (B1,B7)", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "K13 (B1,B6)", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "K14 (B1,B5)", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "K15 (B1,B4)", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "K16 (B1,B3)", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "K17 (B1,B11)", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "K18 (B1,A15)", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "K19 (B1,A10)", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "K1A (B1,A9)", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "K1B (B1,B14)", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "K1C (B1,B13)", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "K1D (B1,B12)", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "K1E (B1,A5)", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "K20 (B0,B9)", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "K21 (B0,B8)", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "K22 (B0,B7)", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "K23 (B0,B6)", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "K24 (B0,B5)", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "K25 (B0,B4)", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "K26 (B0,B3)", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "K27 (B0,B11)", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K28 (B0,A15)", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "K29 (B0,A10)", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "K2A (B0,A9)", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "K2B (B0,B14)", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "K2C (B0,B13)", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "K2D (B0,B12)", "matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25}, + {"label": "K2E (B0,A5)", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "K30 (A7,B9)", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "K31 (A7,B8)", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "K32 (A7,B7)", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "K33 (A7,B6)", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "K34 (A7,B5)", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "K35 (A7,B4)", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "K36 (A7,B3)", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "K37 (A7,B11)", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "K38 (A7,A15)", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "K39 (A7,A10)", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "K3A (A7,A9)", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "K3B (A7,B14)", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "K3C (A7,B13)", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "K3D (A7,B12)", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "K3E (A7,A5)", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "K40 (A6,B9)", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "K41 (A6,B8)", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "K42 (A6,B7)", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "K46 (A6,B3)", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "K4A (A6,A9)", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "K4B (A6,B14)", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "K4C (A6,B13)", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "K4D (A6,B12)", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "K4E (A6,A5)", "matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/vertex/angle65/keymaps/default/keymap.c b/keyboards/vertex/angle65/keymaps/default/keymap.c new file mode 100644 index 000000000000..5c19a6404b42 --- /dev/null +++ b/keyboards/vertex/angle65/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2022 vertex + * + * 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_1, KC_BSPC, + 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_DEL, + 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_BSLS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, 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, MO(1), KC_RGUI, 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, _______,_______, + _______, HF_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______,_______ + ), +}; diff --git a/keyboards/vertex/angle65/keymaps/via/keymap.c b/keyboards/vertex/angle65/keymaps/via/keymap.c new file mode 100644 index 000000000000..06158dffc4f9 --- /dev/null +++ b/keyboards/vertex/angle65/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2022 vertex + * + * 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_1, KC_BSPC, + 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_DEL, + 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_BSLS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, 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, MO(1), KC_RGUI, 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, _______,_______, + _______, HF_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______,_______ + ), + + [2] = 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, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______,_______ + ), + + [3] = 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, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, + _______, _______, _______, _______, _______, _______, _______, _______,_______ + ), +}; diff --git a/keyboards/vertex/angle65/keymaps/via/rules.mk b/keyboards/vertex/angle65/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/vertex/angle65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/vertex/angle65/mcuconf.h b/keyboards/vertex/angle65/mcuconf.h new file mode 100644 index 000000000000..659e21d83b58 --- /dev/null +++ b/keyboards/vertex/angle65/mcuconf.h @@ -0,0 +1,27 @@ +/* Copyright 2022 vertex + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/bt66tech/bt66tech60/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/keyboards/vertex/angle65/readme.md b/keyboards/vertex/angle65/readme.md new file mode 100644 index 000000000000..33bd975510f4 --- /dev/null +++ b/keyboards/vertex/angle65/readme.md @@ -0,0 +1,22 @@ +# angle65 + +* A customizable soldering 60% keyboard. + +* Keyboard Maintainer: [EASON](https://github.com/EasonQian1) +* Hardware Supported: angle65 +* Hardware Availability: [vertex-kb](https://github.com/Vertex-kb) + +Make example for this keyboard (after setting up your build environment): + + make vertex/angle65:default + +Flashing example for this keyboard: + + make vertex/angle65:default:flash + +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). + +## Bootloader Enter the bootloader in 3 ways: +* **Bootmagic reset**: Hold down Enter in the keyboard then replug +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` diff --git a/keyboards/vertex/angle65/rules.mk b/keyboards/vertex/angle65/rules.mk new file mode 100644 index 000000000000..c36e3ade8261 --- /dev/null +++ b/keyboards/vertex/angle65/rules.mk @@ -0,0 +1,17 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # 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 + +HAPTIC_ENABLE = yes +HAPTIC_DRIVER += SOLENOID + +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From 5b8dae0d6117ddc227c5791a81c4765adb55f72a Mon Sep 17 00:00:00 2001 From: Raphael Mangubat <16827478+raphkris@users.noreply.github.com> Date: Sun, 2 Apr 2023 12:23:26 -0500 Subject: [PATCH 06/73] Enable encoder mapping in VIA for Keebio KBO-5000 (#20272) --- keyboards/keebio/kbo5000/keymaps/via/keymap.c | 8 ++++++++ keyboards/keebio/kbo5000/keymaps/via/rules.mk | 1 + 2 files changed, 9 insertions(+) diff --git a/keyboards/keebio/kbo5000/keymaps/via/keymap.c b/keyboards/keebio/kbo5000/keymaps/via/keymap.c index 2a0bbe6cd313..0050229b225d 100644 --- a/keyboards/keebio/kbo5000/keymaps/via/keymap.c +++ b/keyboards/keebio/kbo5000/keymaps/via/keymap.c @@ -34,3 +34,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_UP, KC_DOWN) }, + [1] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_UP, KC_DOWN) }, + [2] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_UP, KC_DOWN) } +}; +#endif diff --git a/keyboards/keebio/kbo5000/keymaps/via/rules.mk b/keyboards/keebio/kbo5000/keymaps/via/rules.mk index 36b7ba9cbc98..aaf0497be139 100644 --- a/keyboards/keebio/kbo5000/keymaps/via/rules.mk +++ b/keyboards/keebio/kbo5000/keymaps/via/rules.mk @@ -1,2 +1,3 @@ VIA_ENABLE = yes LTO_ENABLE = yes +ENCODER_MAP_ENABLE = yes \ No newline at end of file From b0dc99fbd87e62b1ae84177eea1266cd067bf7da Mon Sep 17 00:00:00 2001 From: mechlovin <57231893+mechlovin@users.noreply.github.com> Date: Mon, 3 Apr 2023 00:47:07 +0700 Subject: [PATCH 07/73] [Keyboard] Add Mechlovin9 rev.3 (#20119) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/mechlovin/mechlovin9/rev1/info.json | 3 +++ keyboards/mechlovin/mechlovin9/rev2/info.json | 3 +++ keyboards/mechlovin/mechlovin9/rev3/info.json | 22 ++++++++++++++++++ keyboards/mechlovin/mechlovin9/rev3/readme.md | 23 +++++++++++++++++++ keyboards/mechlovin/mechlovin9/rev3/rules.mk | 0 keyboards/mechlovin/mechlovin9/rules.mk | 1 - 6 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 keyboards/mechlovin/mechlovin9/rev3/info.json create mode 100644 keyboards/mechlovin/mechlovin9/rev3/readme.md create mode 100644 keyboards/mechlovin/mechlovin9/rev3/rules.mk diff --git a/keyboards/mechlovin/mechlovin9/rev1/info.json b/keyboards/mechlovin/mechlovin9/rev1/info.json index 66b4a3c2ed3e..aa8e9e94e376 100644 --- a/keyboards/mechlovin/mechlovin9/rev1/info.json +++ b/keyboards/mechlovin/mechlovin9/rev1/info.json @@ -4,6 +4,9 @@ "pid": "0x6509", "device_version": "0.0.1" }, + "features": { + "backlight": true + }, "backlight": { "pin": "B8", "breathing": true diff --git a/keyboards/mechlovin/mechlovin9/rev2/info.json b/keyboards/mechlovin/mechlovin9/rev2/info.json index c0e94e763807..85a20210b2df 100644 --- a/keyboards/mechlovin/mechlovin9/rev2/info.json +++ b/keyboards/mechlovin/mechlovin9/rev2/info.json @@ -4,6 +4,9 @@ "pid": "0x6509", "device_version": "0.0.2" }, + "features": { + "backlight": true + }, "backlight": { "pin": "D4", "breathing": true diff --git a/keyboards/mechlovin/mechlovin9/rev3/info.json b/keyboards/mechlovin/mechlovin9/rev3/info.json new file mode 100644 index 000000000000..d5da28d3eddf --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/rev3/info.json @@ -0,0 +1,22 @@ +{ + "keyboard_name": "Mechlovin9 Rev3", + "processor": "STM32F103", + "bootloader": "stm32duino", + "usb": { + "pid": "0x6509", + "device_version": "0.0.3" + }, + "features": { + "backlight": false + }, + "bootmagic": { + "matrix": [0, 13] + }, + "matrix_pins": { + "rows": ["B12", "B13", "B14", "B15", "A1"], + "cols": ["B11", "B10", "B2", "B1", "B0", "A6", "A5", "A4", "A3", "C13", "B7", "B6", "B5", "B4", "B3"] + }, + "indicators": { + "caps_lock": "B9" + } +} diff --git a/keyboards/mechlovin/mechlovin9/rev3/readme.md b/keyboards/mechlovin/mechlovin9/rev3/readme.md new file mode 100644 index 000000000000..3b98b5383d9f --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/rev3/readme.md @@ -0,0 +1,23 @@ +# mechlovin9 + +![mechlovin9](https://i.imgur.com/T5Lm6OYlh.png) + +A 65% PCB, compatible with Kyuu. + +* Keyboard Maintainer: [Team Mechlovin](https://github.com/mechlovin) +* Hardware Supported: Kyuu Keyboard. +* Hardware Availability: [Reddit GB](https://www.reddit.com/r/mechmarket/comments/i61par/gb_mechlovin_9_a_kyuu_65_keyboard_compatible_pcb/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/mechlovin9/rev3:default + +Flashing example for this keyboard: + + make mechlovin/mechlovin9/rev3:default:flash + +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). + +## Bootloader + +**Reset Key:** To put the mechlovin9 PCB into bootloader, hold ESC and plug cable. \ No newline at end of file diff --git a/keyboards/mechlovin/mechlovin9/rev3/rules.mk b/keyboards/mechlovin/mechlovin9/rev3/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/mechlovin/mechlovin9/rules.mk b/keyboards/mechlovin/mechlovin9/rules.mk index c32039871cff..3c4e38888c44 100644 --- a/keyboards/mechlovin/mechlovin9/rules.mk +++ b/keyboards/mechlovin/mechlovin9/rules.mk @@ -7,7 +7,6 @@ EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Enable N-Key Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output From d0e0b9e583447fe3e8cc3d6dde3b839ceb1972b3 Mon Sep 17 00:00:00 2001 From: Thomaz Peres <58439854+Thomaz-Peres@users.noreply.github.com> Date: Sun, 2 Apr 2023 14:49:05 -0300 Subject: [PATCH 08/73] [Keyboard] Add Royal Kludge RKG-68 (#20138) --- keyboards/rkg68/info.json | 105 +++++++++++++++++++++++ keyboards/rkg68/keymaps/default/keymap.c | 34 ++++++++ keyboards/rkg68/keymaps/via/keymap.c | 34 ++++++++ keyboards/rkg68/keymaps/via/rules.mk | 1 + keyboards/rkg68/readme.md | 31 +++++++ keyboards/rkg68/rules.mk | 1 + 6 files changed, 206 insertions(+) create mode 100644 keyboards/rkg68/info.json create mode 100644 keyboards/rkg68/keymaps/default/keymap.c create mode 100644 keyboards/rkg68/keymaps/via/keymap.c create mode 100644 keyboards/rkg68/keymaps/via/rules.mk create mode 100644 keyboards/rkg68/readme.md create mode 100644 keyboards/rkg68/rules.mk diff --git a/keyboards/rkg68/info.json b/keyboards/rkg68/info.json new file mode 100644 index 000000000000..f318019dd6ec --- /dev/null +++ b/keyboards/rkg68/info.json @@ -0,0 +1,105 @@ +{ + "manufacturer": "Royal Kludge", + "keyboard_name": "rkg68", + "maintainer": "Thomaz-Peres", + "bootloader": "atmel-dfu", + "processor": "atmega32u4", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "cols": [ "F0", "F1", "E6", "C7", "C6", "B6", "D4", "B1", "B7", "B5", "B4", "D7", "D6", "B3", "F4" ], + "rows": [ "D0", "D1", "D2", "D3", "D5" ] + }, + "rgblight": { + "animations": { + "knight": true, + "rainbow_swirl": true + }, + "led_count": 4, + "pin": "B3" + }, + "url": "http://en.rkgaming.com/", + "usb": { + "device_version": "1.0.0", + "pid": "0x0049", + "vid": "0x0049" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2}, + {"matrix": [3, 1], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 9], "x": 10, "y": 4}, + {"matrix": [4, 10], "x": 11, "y": 4}, + {"matrix": [4, 11], "x": 12, "y": 4}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/rkg68/keymaps/default/keymap.c b/keyboards/rkg68/keymaps/default/keymap.c new file mode 100644 index 000000000000..2631452b5ba6 --- /dev/null +++ b/keyboards/rkg68/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2022 DeskDaily + * + * 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_GRV, + 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_DEL, + 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_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_TRNS, 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_TRNS, KC_PSCR, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, RGB_MOD, KC_INS, + 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_BRK, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_SCRL, + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_VAD, RGB_SPD + ) +}; \ No newline at end of file diff --git a/keyboards/rkg68/keymaps/via/keymap.c b/keyboards/rkg68/keymaps/via/keymap.c new file mode 100644 index 000000000000..2631452b5ba6 --- /dev/null +++ b/keyboards/rkg68/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2022 DeskDaily + * + * 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_GRV, + 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_DEL, + 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_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_TRNS, 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_TRNS, KC_PSCR, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, RGB_MOD, KC_INS, + 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_BRK, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_SCRL, + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_VAD, RGB_SPD + ) +}; \ No newline at end of file diff --git a/keyboards/rkg68/keymaps/via/rules.mk b/keyboards/rkg68/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/rkg68/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/rkg68/readme.md b/keyboards/rkg68/readme.md new file mode 100644 index 000000000000..8069a53169eb --- /dev/null +++ b/keyboards/rkg68/readme.md @@ -0,0 +1,31 @@ +# RK G68 + +![Keyboard picture](https://imgur.com/UnOJPZrh.jpg) + +* Keyboard Maintainer: [Royal Kludge](https://rkgamingstore.com/) +* Hardware Supported: Royal Kludge RK G68 +* Hardware Availability: [RKG 68](http://en.rkgaming.com/download/1/) + +After setting up your build environment, you can compile the default keymap by using: + + make rkg68:default + +Flashing example for this keyboard: + + make rkg68:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +- **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +- **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +- **Keycode in layout**: Press the key `FN` and `Left CTRL`. + +## Layouts + +- ANSI layout; + +![Imgur](https://i.imgur.com/l7ka1gkh.png) diff --git a/keyboards/rkg68/rules.mk b/keyboards/rkg68/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/rkg68/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From b5d0c4469067ca81e3a8a60fc349f5ad6d92c363 Mon Sep 17 00:00:00 2001 From: butterkeebs <124812866+butterkeebs@users.noreply.github.com> Date: Sun, 2 Apr 2023 18:50:14 +0100 Subject: [PATCH 09/73] [Keyboard] Add pocketpad (#20229) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/butterkeebs/pocketpad/info.json | 56 +++++++++++++++++++ .../pocketpad/keymaps/default/keymap.c | 14 +++++ keyboards/butterkeebs/pocketpad/readme.md | 27 +++++++++ keyboards/butterkeebs/pocketpad/rules.mk | 1 + 4 files changed, 98 insertions(+) create mode 100644 keyboards/butterkeebs/pocketpad/info.json create mode 100644 keyboards/butterkeebs/pocketpad/keymaps/default/keymap.c create mode 100644 keyboards/butterkeebs/pocketpad/readme.md create mode 100644 keyboards/butterkeebs/pocketpad/rules.mk diff --git a/keyboards/butterkeebs/pocketpad/info.json b/keyboards/butterkeebs/pocketpad/info.json new file mode 100644 index 000000000000..96adda2cee01 --- /dev/null +++ b/keyboards/butterkeebs/pocketpad/info.json @@ -0,0 +1,56 @@ +{ + "manufacturer": "ButterKeebs", + "keyboard_name": "PocketPad", + "maintainer": "qmk", + "diode_direction": "ROW2COL", + + "usb": { + "device_version": "1.0.0", + "pid": "0x1475", + "vid": "0xFEED" + }, + + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["F1", "C7", "D5", "B7"], + "rows": ["F7", "F6", "F5", "F4", "B1"] + }, + + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0, "matrix": [0,0]}, + {"x": 1, "y": 0, "matrix": [0,1]}, + {"x": 2, "y": 0, "matrix": [0,2]}, + {"x": 3, "y": 0, "matrix": [0,3]}, + + {"x": 0, "y": 1, "matrix": [1,0]}, + {"x": 1, "y": 1, "matrix": [1,1]}, + {"x": 2, "y": 1, "matrix": [1,2]}, + {"x": 3, "y": 1, "matrix": [1,3]}, + + {"x": 0, "y": 2, "matrix": [2,0]}, + {"x": 1, "y": 2, "matrix": [2,1]}, + {"x": 2, "y": 2, "matrix": [2,2]}, + {"x": 3, "y": 2, "matrix": [2,3]}, + + {"x": 0, "y": 3, "matrix": [3,0]}, + {"x": 1, "y": 3, "matrix": [3,1]}, + {"x": 2, "y": 3, "matrix": [3,2]}, + {"x": 3, "y": 3, "matrix": [3,3]}, + + {"x": 0, "y": 4, "matrix": [4,0]}, + {"x": 1, "y": 4, "matrix": [4,1]} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/butterkeebs/pocketpad/keymaps/default/keymap.c b/keyboards/butterkeebs/pocketpad/keymaps/default/keymap.c new file mode 100644 index 000000000000..0591fde1406c --- /dev/null +++ b/keyboards/butterkeebs/pocketpad/keymaps/default/keymap.c @@ -0,0 +1,14 @@ +// ButterKeebs +// SPDX-License-Identifier: GPL-2.0+ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_NUM_LOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, + KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, + KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ENTER, + KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_DOT, + KC_F, KC_KP_0) +}; \ No newline at end of file diff --git a/keyboards/butterkeebs/pocketpad/readme.md b/keyboards/butterkeebs/pocketpad/readme.md new file mode 100644 index 000000000000..0af8b7a3c6d4 --- /dev/null +++ b/keyboards/butterkeebs/pocketpad/readme.md @@ -0,0 +1,27 @@ +# PocketPad + +![PocketPad](https://tinyurl.com/2hffvnvb) + +*The PocketPad is a tiny 18 key macropad/numpad using 6mm tactile switches.* + +* Keyboard Maintainer: [ButterKeebs](https://github.com/butterkeebs) +* Hardware Supported: *Supports current V1.0.0 PocketPad PCB and Elite C / pin compatible MCU boards.* +* Hardware Availability: *Currently not for sale* + +Make example for this keyboard (after setting up your build environment): + + make butterkeebs/pocketpad:default + +Flashing example for this keyboard: + + make butterkeebs/pocketpad:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB. (Not available on Revision 1.0.0 PCB) +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/butterkeebs/pocketpad/rules.mk b/keyboards/butterkeebs/pocketpad/rules.mk new file mode 100644 index 000000000000..f886ea2e8ecd --- /dev/null +++ b/keyboards/butterkeebs/pocketpad/rules.mk @@ -0,0 +1 @@ +# This file intentionally blank \ No newline at end of file From 6b205c30648a3d5334eeb027daab6f1de3f196f7 Mon Sep 17 00:00:00 2001 From: cttt <57359810+ctt-t@users.noreply.github.com> Date: Mon, 3 Apr 2023 01:55:20 +0800 Subject: [PATCH 10/73] [Keyboard] Add Erdnuss 65 (#20202) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/citrus/erdnuss65/config.h | 23 ++++ keyboards/citrus/erdnuss65/erdnuss65.c | 28 +++++ keyboards/citrus/erdnuss65/info.json | 109 ++++++++++++++++++ .../citrus/erdnuss65/keymaps/default/keymap.c | 23 ++++ .../citrus/erdnuss65/keymaps/via/keymap.c | 39 +++++++ .../citrus/erdnuss65/keymaps/via/rules.mk | 1 + keyboards/citrus/erdnuss65/readme.md | 22 ++++ keyboards/citrus/erdnuss65/rules.mk | 2 + keyboards/citrus/readme.md | 2 + 9 files changed, 249 insertions(+) create mode 100644 keyboards/citrus/erdnuss65/config.h create mode 100644 keyboards/citrus/erdnuss65/erdnuss65.c create mode 100644 keyboards/citrus/erdnuss65/info.json create mode 100644 keyboards/citrus/erdnuss65/keymaps/default/keymap.c create mode 100644 keyboards/citrus/erdnuss65/keymaps/via/keymap.c create mode 100644 keyboards/citrus/erdnuss65/keymaps/via/rules.mk create mode 100644 keyboards/citrus/erdnuss65/readme.md create mode 100644 keyboards/citrus/erdnuss65/rules.mk create mode 100644 keyboards/citrus/readme.md diff --git a/keyboards/citrus/erdnuss65/config.h b/keyboards/citrus/erdnuss65/config.h new file mode 100644 index 000000000000..5e4a88b9e23f --- /dev/null +++ b/keyboards/citrus/erdnuss65/config.h @@ -0,0 +1,23 @@ +/* Copyright 2023 Citrus Lab + * + * 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 + +// The pin connected to the data pin of the LEDs +#define RGBLIGHT_LAYERS//允许您定义可打开或关闭的照明层。非常适合显示当前键盘层或大写锁定状态。 +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF//如果已定义,则即使 RGB 光源处于关闭状态,也会显示照明图层。 + +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE//尝试使开关状态与键盘指示灯状态保持一致 \ No newline at end of file diff --git a/keyboards/citrus/erdnuss65/erdnuss65.c b/keyboards/citrus/erdnuss65/erdnuss65.c new file mode 100644 index 000000000000..d10f476c66d1 --- /dev/null +++ b/keyboards/citrus/erdnuss65/erdnuss65.c @@ -0,0 +1,28 @@ +/* Copyright 2023 Citrus Lab + * + * 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 "quantum.h" + +//Indicator light function +bool led_update_kb(led_t led_state) { + if (led_update_user(led_state)) { + if (led_state.caps_lock) { + rgblight_setrgb_at(255, 255, 255, 0); //white + } else { + rgblight_setrgb_at(0, 0, 0, 0); + } + } + return true; +} \ No newline at end of file diff --git a/keyboards/citrus/erdnuss65/info.json b/keyboards/citrus/erdnuss65/info.json new file mode 100644 index 000000000000..a33d44561dc9 --- /dev/null +++ b/keyboards/citrus/erdnuss65/info.json @@ -0,0 +1,109 @@ +{ + "keyboard_name": "Erdnuss65", + "manufacturer": "Citrus Lab", + "processor": "STM32F103", + "bootloader": "stm32duino", + "maintainer": "ctt", + "usb": { + "vid": "0x636C", + "pid": "0x6374", + "device_version": "0.0.1" + }, + + "matrix_pins": { + "rows": + ["B10","B1", "B0","A7","A6"], + "cols": + ["B12","B14","B15","A8","B13","B3","B4","B5","A1","A2","A0","A3","A4","A5","B11"] + }, + + "diode_direction": "COL2ROW", + + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "backlight": false, + "rgblight": true, + "audio": false + }, + "rgblight": { + "pin": "A15", + "led_count": 1 + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "ESC K00 (B10,B12)", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1 K01 (B10,B14)", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2 K02 (B10,B15)", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3 K03 (B10,A8)", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4 K04 (B10,B13)", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5 K05 (B10,B3)", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6 K06 (B10,B4)", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7 K07 (B10,B5)", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8 K08 (B10,A1)", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9 K09 (B10,A2)", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0 K0A (B10,A0)", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "- K0B (B10,A3)", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "= K0C (B10,A4)", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "BACKSPACE K0D (B10,A5)", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "INS (B10,B11)", "matrix": [0, 14], "x": 15, "y": 0}, + {"label": "TAB (B1,B12)", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q (B1,B14)", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W (B1,B15)", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E (B1,A8)", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R (B1,B13)", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T (B1,B3)", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y (B1,B4)", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U (B1,B5)", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I (B1,A1)", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O (B1,A2)", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P (B1,A0)", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[ (B1,A3)", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "] (B1,A4)", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "\" (B1,A5)", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "DEL (B1,B11)", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "CAPSLOCK (B0,B12)", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.25}, + {"label": "A (B0,B14)", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S (B0,B15)", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D (B0,A8)", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F (B0,B13)", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G (B0,B3)", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H (B0,B4)", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J (B0,B5)", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K (B0,A1)", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L (B0,A2)", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "; (B0,A0)", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "' (B0,A3)", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "ENTER (B0,A5)", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "PGUP (B0,B11)", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "LSHIFT (A7,B12)", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z (A7,B14)", "matrix": [3, 1], "x": 2.25, "y": 3}, + {"label": "X (A7,B15)", "matrix": [3, 2], "x": 3.25, "y": 3}, + {"label": "C (A7,A8)", "matrix": [3, 3], "x": 4.25, "y": 3}, + {"label": "V (A7,B13)", "matrix": [3, 4], "x": 5.25, "y": 3}, + {"label": "B (A7,B3)", "matrix": [3, 5], "x": 6.25, "y": 3}, + {"label": "N (A7,B4)", "matrix": [3, 6], "x": 7.25, "y": 3}, + {"label": "M (A7,B5)", "matrix": [3, 7], "x": 8.25, "y": 3}, + {"label": ", (A7,A1)", "matrix": [3, 8], "x": 9.25, "y": 3}, + {"label": ". (A7,A2)", "matrix": [3, 9], "x": 10.25, "y": 3}, + {"label": "/ (A7,A0)", "matrix": [3, 10], "x": 11.25, "y": 3}, + {"label": "RSHIFT (A7,A4)", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "UP (A7,A5)", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "PGDN (A7,B11)", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "LCTRL (A6,B12)", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "WIN (A6,B14)", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "ALT (A6,B15)", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "SPACE (A6,A8)", "matrix": [4, 3], "x": 4, "y": 4, "w": 7}, + {"label": "FN (A6,A0)", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"label": "LEFT (A6,A4)", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "DOWN (A6,A5)", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "RIGHT (A6,B11)", "matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/citrus/erdnuss65/keymaps/default/keymap.c b/keyboards/citrus/erdnuss65/keymaps/default/keymap.c new file mode 100644 index 000000000000..0daef5af6461 --- /dev/null +++ b/keyboards/citrus/erdnuss65/keymaps/default/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2023 Citrus Lab +// SPDX-License-Identifier: GPL-2.0 +#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_INS, + 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_DEL, + 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_LSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, 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_MPRV, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, RESET, KC_MNXT, + _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, KC_HOME, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MYCM, KC_VOLU, KC_END, + _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_MPLY + ) +}; + diff --git a/keyboards/citrus/erdnuss65/keymaps/via/keymap.c b/keyboards/citrus/erdnuss65/keymaps/via/keymap.c new file mode 100644 index 000000000000..0f1bf9525e66 --- /dev/null +++ b/keyboards/citrus/erdnuss65/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +// Copyright 2023 Citrus Lab +// SPDX-License-Identifier: GPL-2.0 +#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_INS, + 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_DEL, + 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_LSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, 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_MPRV, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, RESET, KC_MNXT, + _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, KC_HOME, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MYCM, KC_VOLU, KC_END, + _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_MPLY + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/citrus/erdnuss65/keymaps/via/rules.mk b/keyboards/citrus/erdnuss65/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/citrus/erdnuss65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/citrus/erdnuss65/readme.md b/keyboards/citrus/erdnuss65/readme.md new file mode 100644 index 000000000000..0bb952c1115f --- /dev/null +++ b/keyboards/citrus/erdnuss65/readme.md @@ -0,0 +1,22 @@ +# Erdnuss65 + +* Keyboard Maintainer: [Citrus Lab](https://github.com/ctt-t) +* Hardware Supported: STM32F103C8T6 + +Make example for this keyboard (after setting up your build environment): + + make citrus/erdnuss65:default + +Flashing example for this keyboard: + + make citrus/erdnuss65:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/citrus/erdnuss65/rules.mk b/keyboards/citrus/erdnuss65/rules.mk new file mode 100644 index 000000000000..80b5a0b8f5a5 --- /dev/null +++ b/keyboards/citrus/erdnuss65/rules.mk @@ -0,0 +1,2 @@ +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE \ No newline at end of file diff --git a/keyboards/citrus/readme.md b/keyboards/citrus/readme.md new file mode 100644 index 000000000000..bde8a9620f88 --- /dev/null +++ b/keyboards/citrus/readme.md @@ -0,0 +1,2 @@ +# Citrus Lab +QMK folders for PCB commissions. \ No newline at end of file From ebe36ea83c860fc26e4e8344a133eb0355b411f0 Mon Sep 17 00:00:00 2001 From: Travis Reed Date: Sun, 2 Apr 2023 11:01:06 -0700 Subject: [PATCH 11/73] [Keymap] Add dancxjo hotdox76v2 keymap (#20016) --- keyboards/hotdox76v2/keymaps/dancxjo/config.h | 6 + keyboards/hotdox76v2/keymaps/dancxjo/keymap.c | 177 ++++++++++++++++++ keyboards/hotdox76v2/keymaps/dancxjo/rules.mk | 4 + 3 files changed, 187 insertions(+) create mode 100644 keyboards/hotdox76v2/keymaps/dancxjo/config.h create mode 100644 keyboards/hotdox76v2/keymaps/dancxjo/keymap.c create mode 100644 keyboards/hotdox76v2/keymaps/dancxjo/rules.mk diff --git a/keyboards/hotdox76v2/keymaps/dancxjo/config.h b/keyboards/hotdox76v2/keymaps/dancxjo/config.h new file mode 100644 index 000000000000..fac328091d30 --- /dev/null +++ b/keyboards/hotdox76v2/keymaps/dancxjo/config.h @@ -0,0 +1,6 @@ +// Copyright 2023 Travis Reed (@dancxjo) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 +#define EE_HANDS diff --git a/keyboards/hotdox76v2/keymaps/dancxjo/keymap.c b/keyboards/hotdox76v2/keymaps/dancxjo/keymap.c new file mode 100644 index 000000000000..1f55685de060 --- /dev/null +++ b/keyboards/hotdox76v2/keymaps/dancxjo/keymap.c @@ -0,0 +1,177 @@ +// Copyright 2023 Travis Reed (@dancxjo) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layer { + _ENGRAM = 0, + _QWERTY, + _ENGRAM_SHIFT, + _FUNCTION, + _MEDIA +}; + +/* Combines the compose key (right super) and the AltGr */ +#define KC_COMP MT(MOD_RALT, KC_RGUI) +#define KC_SCMP MT(MOD_RSFT | MOD_RALT, KC_RGUI) + +#define KC_STAB MT(MOD_LSFT, KC_TAB) + +/* Use a fake shift layer since Engram switches level 2 assignments */ +#define KC_PSFT MO(_ENGRAM_SHIFT) + +#define KC_FUNC TT(_FUNCTION) +#define KC_MEDI TT(_MEDIA) + +/* Easily switch between MacOS & other OSes*/ +#define KC_HLM1 LM(1, MOD_LCTL) +#define KC_HLM2 LM(1, MOD_LGUI) +#define KC_SHM1 LM(1, MOD_LCTL | MOD_LSFT) +#define KC_SHM2 LM(1, MOD_LGUI | MOD_LSFT) +#define KC_STRN RSFT(KC_TRNS) + +#define KC_FORW LGUI(KC_TAB) +#define KC_BACK LGUI(LSFT(KC_TAB)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Differs slightly from official Engram in that {} are the level 1 and [] are the level 2 */ + [_ENGRAM] = LAYOUT_ergodox_pretty( + KC_LCBR, KC_1, KC_2, KC_3, KC_4, KC_5, CG_NORM, KC_PAUSE, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RCBR, + KC_TAB, KC_B, KC_Y, KC_O, KC_U, KC_QUOT, KC_AT, KC_HASH, KC_DQUO, KC_L, KC_D, KC_W, KC_V, KC_Z, + KC_CAPS, KC_C, KC_I, KC_E, KC_A, KC_COMM, KC_DOT, KC_H, KC_T, KC_S, KC_N, KC_Q, + KC_PSFT, KC_G, KC_X, KC_J, KC_K, KC_MINS, KC_SLSH, KC_PSCR, KC_QUES, KC_R, KC_M, KC_F, KC_P, KC_PSFT, + KC_HLM1, KC_FUNC, KC_MEDI, KC_LALT, KC_HLM2, KC_RGUI, KC_RALT, KC_MEDI, KC_FUNC,KC_HLM1, + KC_INS, KC_HOME, KC_END, KC_DEL, + KC_PGUP, KC_PGDN, + KC_ENT, KC_ESC, KC_LSFT, KC_RSFT, KC_BSPC, KC_SPC + ), + [_ENGRAM_SHIFT] = LAYOUT_ergodox_pretty( + KC_LBRC, KC_PIPE, KC_EQL, KC_TILD, KC_PLUS, KC_LT, CG_SWAP, KC_STRN, KC_GT, KC_CIRC, KC_AMPR, KC_PERC, KC_ASTR, KC_RBRC, + KC_STRN, RSFT(KC_B), RSFT(KC_Y), RSFT(KC_O), RSFT(KC_U), KC_LPRN, KC_GRV, KC_DLR, KC_RPRN, RSFT(KC_L), RSFT(KC_D), RSFT(KC_W), RSFT(KC_V), RSFT(KC_Z), + KC_STRN, RSFT(KC_C), RSFT(KC_I), RSFT(KC_E), RSFT(KC_A), KC_SCLN, KC_COLN, RSFT(KC_H), RSFT(KC_T), RSFT(KC_S), RSFT(KC_N), RSFT(KC_Q), + KC_TRNS, RSFT(KC_G), RSFT(KC_X), RSFT(KC_J), RSFT(KC_K), KC_UNDS, KC_BSLS, KC_STRN, KC_EXLM, RSFT(KC_R), RSFT(KC_M), RSFT(KC_F), RSFT(KC_P), KC_TRNS, + KC_SHM1, KC_STRN, KC_STRN, KC_STRN, KC_SHM2, KC_STRN, KC_STRN, KC_STRN, KC_STRN, KC_SHM1, + KC_STRN, KC_STRN, KC_HYPR, KC_STRN, + KC_STRN, KC_STRN, + KC_SHM1, KC_STRN, KC_STRN, KC_SHM2, KC_STRN, KC_STRN + ), + [_QWERTY] = LAYOUT_ergodox_pretty( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_EQL, KC_TRNS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + 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 + ), + [_FUNCTION] = LAYOUT_ergodox_pretty( + KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_BRID, KC_BRIU, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PWR, + KC_APP, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, TG(1), TG(1), KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_SLEP, + KC_SCRL, KC_F21, KC_F22, KC_F23, KC_F24, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WAKE, + KC_PAUS, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, KC_NO, CG_SWAP, CG_NORM, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_SAD, RGB_HUD, RGB_HUI, RGB_SAI, + RGB_RMOD, RGB_MOD, + RGB_SPD, RGB_VAD, KC_TRNS, KC_TRNS, RGB_VAI, RGB_SPI + ), + [_MEDIA] = LAYOUT_ergodox_pretty( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WREF, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_WREF, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_UP, KC_PGDN, KC_MSEL, KC_NO, + KC_NO, KC_NO, KC_WSTP, KC_MYCM, KC_WSCH, KC_FIND, KC_WHOM, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_NO, + KC_LSFT, KC_NO, KC_NO, KC_CALC, KC_NO, KC_WFAV, KC_NO, KC_NO, KC_NO, KC_HOME, KC_MAIL, KC_END, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MUTE, KC_EJCT, KC_MSTP, KC_MPLY, + KC_MPRV, KC_MNXT, + KC_MRWD, KC_VOLD, KC_TRNS, KC_TRNS, KC_VOLU, KC_MFFD + ) +}; + +char* get_layer_name(uint8_t layer, bool capitalized) { + char *layer_name = "Unknown "; + + switch (layer) { + case _ENGRAM: + case _ENGRAM_SHIFT: + if (capitalized) { + layer_name = "ENGRAM "; + } else { + layer_name = "engram "; + } + break; + case _QWERTY: + if (capitalized) { + layer_name = "QWERTY "; + } else { + layer_name = "qwerty "; + } + break; + case _MEDIA: + layer_name = "Media+ "; + break; + case _FUNCTION: + layer_name = "Function"; + break; + } + return layer_name; +} + +void render_locks(led_t led_state) { + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + +void render_mods(uint8_t modifiers, uint8_t layer) { + oled_write_P(modifiers & MOD_MASK_GUI ? PSTR("Super") : PSTR(" "), false); + oled_write_P(PSTR(" "), false); + oled_write_P(modifiers & MOD_MASK_ALT ? PSTR("Alt") : PSTR(" "), false); + oled_write_P(PSTR(" "), false); + oled_write_P(modifiers & MOD_MASK_CTRL ? PSTR("Ctl") : PSTR(" "), false); + oled_write_P(PSTR(" "), false); + + if (layer == _ENGRAM_SHIFT) { + oled_write_P(PSTR("Pseudo"), false); + } else { + oled_write_P(modifiers & MOD_MASK_SHIFT ? PSTR("Shift ") : PSTR(" "), false); + } +} + +char* get_helm_key(void) { + if (keymap_config.swap_lctl_lgui) { + return "Super"; + } else { + return "Control"; + } +} + +bool oled_task_user(void) { + uint8_t layer = get_highest_layer(layer_state); + uint8_t modifiers = get_mods()|get_oneshot_mods(); + led_t led_state = host_keyboard_led_state(); + + bool real_shifted = modifiers & MOD_MASK_SHIFT; + bool pseudo_shifted = layer == _ENGRAM_SHIFT; + bool shifted = real_shifted || pseudo_shifted; + bool caps = led_state.caps_lock; + bool capitalized = (caps && !shifted) || (!caps && shifted); + + oled_write_P(PSTR("Layer: "), false); + oled_write(get_layer_name(layer, capitalized), false); + oled_write_P(PSTR("\n"), false); + + // Only the master knows if we've swapped the gui and ctl key + if (is_keyboard_master()) { + oled_write_P(PSTR(" Helm: "), false); + oled_write(get_helm_key(), false); + } + + oled_write_P(PSTR("\n"), false); + + render_mods(modifiers, layer); + oled_write_P(PSTR("\n"), false); + + render_locks(led_state); + + return false; +} diff --git a/keyboards/hotdox76v2/keymaps/dancxjo/rules.mk b/keyboards/hotdox76v2/keymaps/dancxjo/rules.mk new file mode 100644 index 000000000000..bc20eb20b7ce --- /dev/null +++ b/keyboards/hotdox76v2/keymaps/dancxjo/rules.mk @@ -0,0 +1,4 @@ +COMMAND_ENABLE = yes +VIA_ENABLE = yes +EXTRAKEY_ENABLE = no +MOUSEKEY_ENABLE = no From 5687fc76468803db27dd9f04a72766f80141c6cd Mon Sep 17 00:00:00 2001 From: Moritz Plattner Date: Sun, 2 Apr 2023 20:02:20 +0200 Subject: [PATCH 12/73] Add support for Geistmaschine Macropod (#20116) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com> --- keyboards/geistmaschine/macropod/config.h | 21 +++++ keyboards/geistmaschine/macropod/info.json | 41 +++++++++ .../macropod/keymaps/default/keymap.c | 35 ++++++++ .../macropod/keymaps/default/rules.mk | 1 + .../macropod/keymaps/via/keymap.c | 35 ++++++++ .../macropod/keymaps/via/rules.mk | 2 + keyboards/geistmaschine/macropod/macropod.c | 21 +++++ keyboards/geistmaschine/macropod/matrix.c | 87 +++++++++++++++++++ keyboards/geistmaschine/macropod/readme.md | 25 ++++++ keyboards/geistmaschine/macropod/rules.mk | 5 ++ 10 files changed, 273 insertions(+) create mode 100644 keyboards/geistmaschine/macropod/config.h create mode 100644 keyboards/geistmaschine/macropod/info.json create mode 100644 keyboards/geistmaschine/macropod/keymaps/default/keymap.c create mode 100644 keyboards/geistmaschine/macropod/keymaps/default/rules.mk create mode 100644 keyboards/geistmaschine/macropod/keymaps/via/keymap.c create mode 100644 keyboards/geistmaschine/macropod/keymaps/via/rules.mk create mode 100644 keyboards/geistmaschine/macropod/macropod.c create mode 100644 keyboards/geistmaschine/macropod/matrix.c create mode 100644 keyboards/geistmaschine/macropod/readme.md create mode 100644 keyboards/geistmaschine/macropod/rules.mk diff --git a/keyboards/geistmaschine/macropod/config.h b/keyboards/geistmaschine/macropod/config.h new file mode 100644 index 000000000000..f6dad6ebe034 --- /dev/null +++ b/keyboards/geistmaschine/macropod/config.h @@ -0,0 +1,21 @@ +/* + * 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 + +/* key matrix size, only 1x4 are used in current state. + IO expander setup would allow up to 1x16 + 1 from the MCU */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 17 diff --git a/keyboards/geistmaschine/macropod/info.json b/keyboards/geistmaschine/macropod/info.json new file mode 100644 index 000000000000..c2a77905b192 --- /dev/null +++ b/keyboards/geistmaschine/macropod/info.json @@ -0,0 +1,41 @@ +{ + "manufacturer": "Geistmaschine", + "keyboard_name": "Macropod", + "maintainer": "ebastler", + "bootloader": "atmel-dfu", + "processor": "atmega32u4", + "url": "https://geistmaschine.io/", + "usb": { + "device_version": "1.0.0", + "pid": "0x0004", + "vid": "0x676D" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": false, + "encoder": true + }, + "encoder": { + "rotary": [ + { + "pin_a": "D3", + "pin_b": "D5", + "resolution": 2 + } + ] + }, + "layouts": { + "LAYOUT_fourkey": { + "layout": [ + {"x":0, "y":0, "matrix":[0,0] }, + {"x":0, "y":1.25, "matrix":[0,1] }, + {"x":0, "y":2.25, "matrix":[0,2] }, + {"x":0, "y":3.25, "matrix":[0,3] } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/keymaps/default/keymap.c b/keyboards/geistmaschine/macropod/keymaps/default/keymap.c new file mode 100644 index 000000000000..fb2d971202c2 --- /dev/null +++ b/keyboards/geistmaschine/macropod/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2023 Moritz Plattner + * + * 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_fourkey ( + LT(1, KC_MUTE), KC_MPRV, KC_MPLY, KC_MNXT + ), + + [1] = LAYOUT_fourkey ( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_MRWD, KC_MFFD) }, +}; +#endif \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/keymaps/default/rules.mk b/keyboards/geistmaschine/macropod/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/geistmaschine/macropod/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/geistmaschine/macropod/keymaps/via/keymap.c b/keyboards/geistmaschine/macropod/keymaps/via/keymap.c new file mode 100644 index 000000000000..fb2d971202c2 --- /dev/null +++ b/keyboards/geistmaschine/macropod/keymaps/via/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2023 Moritz Plattner + * + * 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_fourkey ( + LT(1, KC_MUTE), KC_MPRV, KC_MPLY, KC_MNXT + ), + + [1] = LAYOUT_fourkey ( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_MRWD, KC_MFFD) }, +}; +#endif \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/keymaps/via/rules.mk b/keyboards/geistmaschine/macropod/keymaps/via/rules.mk new file mode 100644 index 000000000000..6ccd6d91943d --- /dev/null +++ b/keyboards/geistmaschine/macropod/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +ENCODER_MAP_ENABLE = yes +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/macropod.c b/keyboards/geistmaschine/macropod/macropod.c new file mode 100644 index 000000000000..2f6825e2ee13 --- /dev/null +++ b/keyboards/geistmaschine/macropod/macropod.c @@ -0,0 +1,21 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +// This will be overridden by encoder map in all default keymaps, but serves as a catch-all for user keymaps that may omit the map. +#if defined (ENCODER_ENABLE) && !defined (ENCODER_MAP_ENABLE) +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; /* Don't process further events if user function exists and returns false */ + } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } + return true; +} +#endif \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/matrix.c b/keyboards/geistmaschine/macropod/matrix.c new file mode 100644 index 000000000000..60b1dafe6371 --- /dev/null +++ b/keyboards/geistmaschine/macropod/matrix.c @@ -0,0 +1,87 @@ +/* Copyright 2023 ebastler and elpekenin + * + * 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 "pca9555.h" +#include "quantum.h" + +// PCA9555 i2c address, 0x20: A0 = 0, A1 = 0, A2 = 0 +#define IC1 0x20 + +// Define how long to wait to reach the IO expander after connection loss again +// Since this board is modular, it should not spam unnecessary i2c requests if used without a module +#define RETRY_TIMESPAN 2000 + +typedef enum { + PLUGGED, + DOUBTFUL, + UNPLUGGED +} expander_status_t; + +void pca9555_setup(void) { + // Initialize the expander, no need to set ports to inputs as that is the default behavior + pca9555_init(IC1); +} + +void matrix_init_custom(void) { + // Encoder pushbutton on the MCU is connected to PD2 + setPinInputHigh(D2); + pca9555_setup(); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + static expander_status_t status = DOUBTFUL; + static uint32_t retry_timer = 0; + + // initialize one byte filled with 1 + uint8_t pin_states = 0xFF; + + + if (status != UNPLUGGED || timer_elapsed32(retry_timer) > RETRY_TIMESPAN) { + // If the chip was unplugged before, it needs to be re-initialized + if(status==UNPLUGGED) { + pca9555_setup(); + } + // Read the entire port into this byte, 1 = not pressed, 0 = pressed + bool ret = pca9555_readPins(IC1, PCA9555_PORT0, &pin_states); + + // Update state + if (ret) { + status = PLUGGED; + } else { + switch (status) { + case PLUGGED: + status = DOUBTFUL; + break; + + case DOUBTFUL: + status = UNPLUGGED; + break; + + // If we've diagnosed as unplugged, update timer to not read I2C + case UNPLUGGED: + retry_timer = timer_read32(); + } + } + } + + // Shift pin states by 1 to make room for the switch connected to the MCU, then OR them together and invert (as QMK uses inverted logic compared to the electrical levels) + matrix_row_t data = ~(pin_states << 1 | readPin(D2)); + + bool changed = current_matrix[0] != data; + current_matrix[0] = data; + + return changed; +} \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/readme.md b/keyboards/geistmaschine/macropod/readme.md new file mode 100644 index 000000000000..5d074437cbad --- /dev/null +++ b/keyboards/geistmaschine/macropod/readme.md @@ -0,0 +1,25 @@ +# Geistmaschine Macropod + +![macropod](https://i.imgur.com/lAsCslA.png) + +Macropod is a modular macropad, designed around a central big encoder with a magnetic connector for modularity. The default module uses three MX style keys. +* Keyboard Maintainer: [ebastler](https://github.com/ebastler) +* Hardware Supported: Macropod rev1 +* Hardware Availability: [geistmaschine.io](https://geistmaschine.io/) + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb geistmaschine/macropod -km default + +Flashing example for this keyboard: + + qmk flash -kb geistmaschine/macropod -km 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). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the knob on the main module) and plug in the keyboard +* **Physical reset button**: Briefly tap the button marked "RST" on the back of the main module PCB diff --git a/keyboards/geistmaschine/macropod/rules.mk b/keyboards/geistmaschine/macropod/rules.mk new file mode 100644 index 000000000000..cf2b38601e67 --- /dev/null +++ b/keyboards/geistmaschine/macropod/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_MATRIX = lite + +VPATH += drivers/gpio +SRC += pca9555.c matrix.c +QUANTUM_LIB_SRC += i2c_master.c \ No newline at end of file From 27e6e27d3a2ff9d91bcf0f189cdc39509bef0335 Mon Sep 17 00:00:00 2001 From: Jay Greco Date: Sun, 2 Apr 2023 12:12:06 -0700 Subject: [PATCH 13/73] [Keyboard] Add nullbits SNAP keyboard (#18916) Co-authored-by: Ryan --- keyboards/nullbitsco/snap/config.h | 87 +++++ keyboards/nullbitsco/snap/info.json | 24 ++ .../snap/keymaps/bongo_reactive/bongo.h | 121 ++++++ .../keymaps/bongo_reactive/bongo_graphics.h | 262 +++++++++++++ .../snap/keymaps/bongo_reactive/config.h | 35 ++ .../snap/keymaps/bongo_reactive/keymap.c | 133 +++++++ .../snap/keymaps/bongo_reactive/rules.mk | 4 + .../bongo_reactive_single_oled/bongo.h | 121 ++++++ .../bongo_graphics.h | 262 +++++++++++++ .../bongo_reactive_single_oled/config.h | 29 ++ .../bongo_reactive_single_oled/keymap.c | 87 +++++ .../bongo_reactive_single_oled/rules.mk | 5 + .../nullbitsco/snap/keymaps/default/keymap.c | 105 ++++++ .../nullbitsco/snap/keymaps/iso/keymap.c | 104 ++++++ .../nullbitsco/snap/keymaps/oled/config.h | 27 ++ .../nullbitsco/snap/keymaps/oled/keymap.c | 163 ++++++++ .../snap/keymaps/oled/oled_graphics.h | 82 ++++ .../nullbitsco/snap/keymaps/oled/rules.mk | 5 + .../nullbitsco/snap/keymaps/typehud/config.h | 46 +++ .../nullbitsco/snap/keymaps/typehud/keymap.c | 157 ++++++++ .../nullbitsco/snap/keymaps/typehud/readme.md | 51 +++ .../nullbitsco/snap/keymaps/typehud/rules.mk | 7 + .../nullbitsco/snap/keymaps/typehud/typehud.c | 349 ++++++++++++++++++ .../nullbitsco/snap/keymaps/typehud/typehud.h | 87 +++++ .../nullbitsco/snap/keymaps/via/config.h | 20 + .../nullbitsco/snap/keymaps/via/keymap.c | 59 +++ .../nullbitsco/snap/keymaps/via/rules.mk | 2 + keyboards/nullbitsco/snap/matrix.c | 126 +++++++ keyboards/nullbitsco/snap/readme.md | 26 ++ keyboards/nullbitsco/snap/rules.mk | 23 ++ keyboards/nullbitsco/snap/snap.c | 127 +++++++ keyboards/nullbitsco/snap/snap.h | 106 ++++++ 32 files changed, 2842 insertions(+) create mode 100644 keyboards/nullbitsco/snap/config.h create mode 100644 keyboards/nullbitsco/snap/info.json create mode 100644 keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo.h create mode 100644 keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo_graphics.h create mode 100644 keyboards/nullbitsco/snap/keymaps/bongo_reactive/config.h create mode 100644 keyboards/nullbitsco/snap/keymaps/bongo_reactive/keymap.c create mode 100644 keyboards/nullbitsco/snap/keymaps/bongo_reactive/rules.mk create mode 100644 keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo.h create mode 100644 keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo_graphics.h create mode 100644 keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/config.h create mode 100644 keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/keymap.c create mode 100644 keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/rules.mk create mode 100644 keyboards/nullbitsco/snap/keymaps/default/keymap.c create mode 100644 keyboards/nullbitsco/snap/keymaps/iso/keymap.c create mode 100644 keyboards/nullbitsco/snap/keymaps/oled/config.h create mode 100644 keyboards/nullbitsco/snap/keymaps/oled/keymap.c create mode 100644 keyboards/nullbitsco/snap/keymaps/oled/oled_graphics.h create mode 100644 keyboards/nullbitsco/snap/keymaps/oled/rules.mk create mode 100644 keyboards/nullbitsco/snap/keymaps/typehud/config.h create mode 100644 keyboards/nullbitsco/snap/keymaps/typehud/keymap.c create mode 100644 keyboards/nullbitsco/snap/keymaps/typehud/readme.md create mode 100644 keyboards/nullbitsco/snap/keymaps/typehud/rules.mk create mode 100644 keyboards/nullbitsco/snap/keymaps/typehud/typehud.c create mode 100644 keyboards/nullbitsco/snap/keymaps/typehud/typehud.h create mode 100644 keyboards/nullbitsco/snap/keymaps/via/config.h create mode 100644 keyboards/nullbitsco/snap/keymaps/via/keymap.c create mode 100644 keyboards/nullbitsco/snap/keymaps/via/rules.mk create mode 100644 keyboards/nullbitsco/snap/matrix.c create mode 100644 keyboards/nullbitsco/snap/readme.md create mode 100644 keyboards/nullbitsco/snap/rules.mk create mode 100644 keyboards/nullbitsco/snap/snap.c create mode 100644 keyboards/nullbitsco/snap/snap.h diff --git a/keyboards/nullbitsco/snap/config.h b/keyboards/nullbitsco/snap/config.h new file mode 100644 index 000000000000..ae0a5018becd --- /dev/null +++ b/keyboards/nullbitsco/snap/config.h @@ -0,0 +1,87 @@ +/* Copyright 2021 Jay Greco + * + * 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 . + */ +// clang-format off +#pragma once + +/* Used to set host for remote KB if VUSB detect doesn't work. */ +// #define KEYBOARD_HOST // Force host mode +// #define KEYBOARD_REMOTE // Force remote mode + +// Workarounds for sleep/wake issues +#define USB_SUSPEND_WAKEUP_DELAY 250 + +// NOTE: There is a bug in AVR deep sleep, which +// causes the MCU to stop responding in some cases. +// Disabling the watchdog prevents the MCU from entering +// power down, while still turning off LEDs, audio, etc. +// See qmk_firmware/issues/20087 for background +#undef WDT_vect + +/* split config */ +// #define SPLIT_USB_DETECT // Enable if you have issues with USB +#define SOFT_SERIAL_PIN E6 +#define SPLIT_HAND_PIN B6 +#define DISABLE_SYNC_TIMER +#define SPLIT_HAND_PIN_LOW_IS_LEFT + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 +#define MATRIX_MUX_COLS 3 + +/* + * Keyboard Matrix Assignments + * The snap uses a demultiplexer for the cols. + * to free up more IOs for awesomeness! + * See matrix.c for more details. +*/ +// Left side +#define MATRIX_ROW_PINS { D4, C6, D7, F4, B4, B5 } +#define MATRIX_COL_MUX_PINS { F7, F6, F5 } + +//Right side +#define MATRIX_ROW_PINS_RIGHT { F4, F5, F6, F7, B1, B3 } +#define MATRIX_COL_MUX_PINS_RIGHT { D7, C6, D4 } +#define MATRIX_EXT_PIN_RIGHT B6 + +/* Optional SMT LED pins */ +#define RGB_DI_PIN B2 +#define RGBLED_NUM 10 +#define RGBLED_SPLIT { 5, 5 } +#define RGBLIGHT_LED_MAP { 8, 9, 0, 1, 2, 6, 7, 3, 4, 5 } +#define RGBLIGHT_SLEEP +#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 + +/* Optional encoder pins */ +#define ENCODERS_PAD_A { B3 } +#define ENCODERS_PAD_B { B1 } +#define ENCODERS_PAD_A_RIGHT { B4 } +#define ENCODERS_PAD_B_RIGHT { B5 } + +/* Optional speaker pin */ +#define AUDIO_PIN B6 + +/* Optional split transactions */ +#define SPLIT_OLED_ENABLE diff --git a/keyboards/nullbitsco/snap/info.json b/keyboards/nullbitsco/snap/info.json new file mode 100644 index 000000000000..6567ccde85a3 --- /dev/null +++ b/keyboards/nullbitsco/snap/info.json @@ -0,0 +1,24 @@ +{ + "keyboard_name": "SNAP", + "manufacturer": "nullbits", + "url": "https://nullbits.co/snap/", + "usb": { + "vid": "0x6E61", + "pid": "0x6063", + "device_version": "0.0.1" + }, + "debounce": 10, + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"Esc", "x":1, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":7, "y":0}, {"label":"F7", "x":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"PrtSc", "x":14, "y":0}, {"label":"Pause", "x":15, "y":0}, {"label":"M", "x":0, "y":1}, {"label":"~", "x":1, "y":1}, {"label":"!", "x":2, "y":1}, {"label":"@", "x":3, "y":1}, {"label":"#", "x":4, "y":1}, {"label":"$", "x":5, "y":1}, {"label":"%", "x":6, "y":1}, {"label":"^", "x":7, "y":1}, {"label":"&", "x":8, "y":1}, {"label":"*", "x":9, "y":1}, {"label":"(", "x":10, "y":1}, {"label":")", "x":11, "y":1}, {"label":"_", "x":12, "y":1}, {"label":"+", "x":13, "y":1}, {"label":"Bksp1", "x":14, "y":1}, {"label":"Bksp2", "x":15, "y":1}, {"label":"Home", "x":16, "y":1}, {"label":"M", "x":0, "y":2}, {"label":"Tab", "x":1, "y":2, "w":1.5}, {"label":"Q", "x":2.5, "y":2}, {"label":"W", "x":3.5, "y":2}, {"label":"E", "x":4.5, "y":2}, {"label":"R", "x":5.5, "y":2}, {"label":"T", "x":6.5, "y":2}, {"label":"Y", "x":7.5, "y":2}, {"label":"U", "x":8.5, "y":2}, {"label":"I", "x":9.5, "y":2}, {"label":"O", "x":10.5, "y":2}, {"label":"P", "x":11.5, "y":2}, {"label":"{", "x":12.5, "y":2}, {"label":"}", "x":13.5, "y":2}, {"label":"|", "x":14.5, "y":2, "w":1.5}, {"label":"End", "x":16, "y":2}, {"label":"M", "x":0, "y":3}, {"label":"Caps Lock", "x":1, "y":3, "w":1.75}, {"label":"A", "x":2.75, "y":3}, {"label":"S", "x":3.75, "y":3}, {"label":"D", "x":4.75, "y":3}, {"label":"F", "x":5.75, "y":3}, {"label":"G", "x":6.75, "y":3}, {"label":"H", "x":7.75, "y":3}, {"label":"J", "x":8.75, "y":3}, {"label":"K", "x":9.75, "y":3}, {"label":"L", "x":10.75, "y":3}, {"label":":", "x":11.75, "y":3}, {"label":"\"", "x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":3, "w":2.25}, {"label":"Page Up", "x":16, "y":3}, {"label":"M", "x":0, "y":4}, {"label":"Shift", "x":1, "y":4, "w":1.25}, {"label":"#", "x":2.25, "y":4}, {"label":"Z", "x":3.25, "y":4}, {"label":"X", "x":4.25, "y":4}, {"label":"C", "x":5.25, "y":4}, {"label":"V", "x":6.25, "y":4}, {"label":"B", "x":7.25, "y":4}, {"label":"N", "x":8.25, "y":4}, {"label":"M", "x":9.25, "y":4}, {"label":"<", "x":10.25, "y":4}, {"label":">", "x":11.25, "y":4}, {"label":"?", "x":12.25, "y":4}, {"label":"Shift", "x":13.25, "y":4, "w":1.75}, {"label":"\u2191", "x":15, "y":4}, {"label":"Page Down", "x":16, "y":4}, {"label":"M", "x":0, "y":5}, {"label":"Ctrl", "x":1, "y":5, "w":1.25}, {"label":"Win", "x":2.25, "y":5, "w":1.25}, {"label":"Alt", "x":3.5, "y":5, "w":1.25}, {"label":"Fn", "x":4.75, "y":5, "w":1.25}, {"label":"Space", "x":6, "y":5, "w":2.25}, {"label":"Space", "x":8.25, "y":5, "w":2.75}, {"label":"Alt", "x":11, "y":5}, {"label":"Fn", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"label":"\u2190", "x":14, "y":5}, {"label":"\u2193", "x":15, "y":5}, {"label":"\u2192", "x":16, "y":5}] + }, + "LAYOUT_ansi": { + "layout": [{"label":"Esc", "x":1, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":7, "y":0}, {"label":"F7", "x":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"PrtSc", "x":14, "y":0}, {"label":"Pause", "x":15, "y":0}, {"label":"M", "x":0, "y":1}, {"label":"~", "x":1, "y":1}, {"label":"!", "x":2, "y":1}, {"label":"@", "x":3, "y":1}, {"label":"#", "x":4, "y":1}, {"label":"$", "x":5, "y":1}, {"label":"%", "x":6, "y":1}, {"label":"^", "x":7, "y":1}, {"label":"&", "x":8, "y":1}, {"label":"*", "x":9, "y":1}, {"label":"(", "x":10, "y":1}, {"label":")", "x":11, "y":1}, {"label":"_", "x":12, "y":1}, {"label":"+", "x":13, "y":1}, {"label":"Bksp", "x":14, "y":1, "w":2}, {"label":"Home", "x":16, "y":1}, {"label":"M", "x":0, "y":2}, {"label":"Tab", "x":1, "y":2, "w":1.5}, {"label":"Q", "x":2.5, "y":2}, {"label":"W", "x":3.5, "y":2}, {"label":"E", "x":4.5, "y":2}, {"label":"R", "x":5.5, "y":2}, {"label":"T", "x":6.5, "y":2}, {"label":"Y", "x":7.5, "y":2}, {"label":"U", "x":8.5, "y":2}, {"label":"I", "x":9.5, "y":2}, {"label":"O", "x":10.5, "y":2}, {"label":"P", "x":11.5, "y":2}, {"label":"{", "x":12.5, "y":2}, {"label":"}", "x":13.5, "y":2}, {"label":"|", "x":14.5, "y":2, "w":1.5}, {"label":"End", "x":16, "y":2}, {"label":"M", "x":0, "y":3}, {"label":"Caps Lock", "x":1, "y":3, "w":1.75}, {"label":"A", "x":2.75, "y":3}, {"label":"S", "x":3.75, "y":3}, {"label":"D", "x":4.75, "y":3}, {"label":"F", "x":5.75, "y":3}, {"label":"G", "x":6.75, "y":3}, {"label":"H", "x":7.75, "y":3}, {"label":"J", "x":8.75, "y":3}, {"label":"K", "x":9.75, "y":3}, {"label":"L", "x":10.75, "y":3}, {"label":":", "x":11.75, "y":3}, {"label":"\"", "x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":3, "w":2.25}, {"label":"Page Up", "x":16, "y":3}, {"label":"M", "x":0, "y":4}, {"label":"Shift", "x":1, "y":4, "w":2.25}, {"label":"Z", "x":3.25, "y":4}, {"label":"X", "x":4.25, "y":4}, {"label":"C", "x":5.25, "y":4}, {"label":"V", "x":6.25, "y":4}, {"label":"B", "x":7.25, "y":4}, {"label":"N", "x":8.25, "y":4}, {"label":"M", "x":9.25, "y":4}, {"label":"<", "x":10.25, "y":4}, {"label":">", "x":11.25, "y":4}, {"label":"?", "x":12.25, "y":4}, {"label":"Shift", "x":13.25, "y":4, "w":1.75}, {"label":"\u2191", "x":15, "y":4}, {"label":"Page Down", "x":16, "y":4}, {"label":"M", "x":0, "y":5}, {"label":"Ctrl", "x":1, "y":5, "w":1.25}, {"label":"Win", "x":2.25, "y":5, "w":1.25}, {"label":"Alt", "x":3.5, "y":5, "w":1.25}, {"label":"Fn", "x":4.75, "y":5, "w":1.25}, {"label":"Space", "x":6, "y":5, "w":2.25}, {"label":"Space", "x":8.25, "y":5, "w":2.75}, {"label":"Alt", "x":11, "y":5}, {"label":"Fn", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"label":"\u2190", "x":14, "y":5}, {"label":"\u2193", "x":15, "y":5}, {"label":"\u2192", "x":16, "y":5}] + }, + "LAYOUT_iso": { + "layout": [{"label":"Esc", "x":1, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":7, "y":0}, {"label":"F7", "x":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"PrtSc", "x":14, "y":0}, {"label":"Pause", "x":15, "y":0}, {"label":"M", "x":0, "y":1}, {"label":"~", "x":1, "y":1}, {"label":"!", "x":2, "y":1}, {"label":"@", "x":3, "y":1}, {"label":"#", "x":4, "y":1}, {"label":"$", "x":5, "y":1}, {"label":"%", "x":6, "y":1}, {"label":"^", "x":7, "y":1}, {"label":"&", "x":8, "y":1}, {"label":"*", "x":9, "y":1}, {"label":"(", "x":10, "y":1}, {"label":")", "x":11, "y":1}, {"label":"_", "x":12, "y":1}, {"label":"+", "x":13, "y":1}, {"label":"Bksp", "x":14, "y":1, "w":2}, {"label":"Home", "x":16, "y":1}, {"label":"M", "x":0, "y":2}, {"label":"Tab", "x":1, "y":2, "w":1.5}, {"label":"Q", "x":2.5, "y":2}, {"label":"W", "x":3.5, "y":2}, {"label":"E", "x":4.5, "y":2}, {"label":"R", "x":5.5, "y":2}, {"label":"T", "x":6.5, "y":2}, {"label":"Y", "x":7.5, "y":2}, {"label":"U", "x":8.5, "y":2}, {"label":"I", "x":9.5, "y":2}, {"label":"O", "x":10.5, "y":2}, {"label":"P", "x":11.5, "y":2}, {"label":"{", "x":12.5, "y":2}, {"label":"}", "x":13.5, "y":2}, {"label":"Enter", "x":14.75, "y":2, "w":1.25, "h":2}, {"label":"End", "x":16, "y":2}, {"label":"M", "x":0, "y":3}, {"label":"Caps Lock", "x":1, "y":3, "w":1.75}, {"label":"A", "x":2.75, "y":3}, {"label":"S", "x":3.75, "y":3}, {"label":"D", "x":4.75, "y":3}, {"label":"F", "x":5.75, "y":3}, {"label":"G", "x":6.75, "y":3}, {"label":"H", "x":7.75, "y":3}, {"label":"J", "x":8.75, "y":3}, {"label":"K", "x":9.75, "y":3}, {"label":"L", "x":10.75, "y":3}, {"label":":", "x":11.75, "y":3}, {"label":"\"", "x":12.75, "y":3}, {"label":"\"", "x":13.75, "y":3}, {"label":"Page Up", "x":16, "y":3}, {"label":"M", "x":0, "y":4}, {"label":"Shift", "x":1, "y":4, "w":1.25}, {"label":"#", "x":2.25, "y":4}, {"label":"Z", "x":3.25, "y":4}, {"label":"X", "x":4.25, "y":4}, {"label":"C", "x":5.25, "y":4}, {"label":"V", "x":6.25, "y":4}, {"label":"B", "x":7.25, "y":4}, {"label":"N", "x":8.25, "y":4}, {"label":"M", "x":9.25, "y":4}, {"label":"<", "x":10.25, "y":4}, {"label":">", "x":11.25, "y":4}, {"label":"?", "x":12.25, "y":4}, {"label":"Shift", "x":13.25, "y":4, "w":1.75}, {"label":"\u2191", "x":15, "y":4}, {"label":"Page Down", "x":16, "y":4}, {"label":"M", "x":0, "y":5}, {"label":"Ctrl", "x":1, "y":5, "w":1.25}, {"label":"Win", "x":2.25, "y":5, "w":1.25}, {"label":"Alt", "x":3.5, "y":5, "w":1.25}, {"label":"Fn", "x":4.75, "y":5, "w":1.25}, {"label":"Space", "x":6, "y":5, "w":2.25}, {"label":"Space", "x":8.25, "y":5, "w":2.75}, {"label":"Alt", "x":11, "y":5}, {"label":"Fn", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"label":"\u2190", "x":14, "y":5}, {"label":"\u2193", "x":15, "y":5}, {"label":"\u2192", "x":16, "y":5}] + } + } +} diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo.h new file mode 100644 index 000000000000..0cf1de3045bc --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo.h @@ -0,0 +1,121 @@ +/* Copyright 2021 Chris Tanaka + * + * 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 "bongo_graphics.h" +#include QMK_KEYBOARD_H + +#define _IDLE_FRAMES 5 +#define _PREP_FRAMES 1 +#define _TAP_FRAMES 2 +#define _ANIM_BYTES 512 // Number of bytes in array (max is 1024) +#define _IDLE_FRAME_DURATION 175 +#define _TAP_FRAME_DURATION 75 +#define _PREP_TIMEOUT 750 + +enum anim_states +{ + Idle, + Prep, + Tap +}; + +static uint8_t anim_state = Idle; +static uint8_t anim_duration = _IDLE_FRAME_DURATION; +static uint32_t anim_timer = 0; + +static uint8_t idle_frame = 0; +static uint8_t tap_frame = 0; + +static uint32_t prep_timer = 0; + +// Decompress and write a precompressed bitmap frame to the OLED. +// Documentation and python compression script available at: +// https://github.com/nullbitsco/squeez-o +#ifdef USE_OLED_BITMAP_COMPRESSION +static void oled_write_compressed_P(const char* input_block_map, const char* input_block_list) { + uint16_t block_index = 0; + for (uint16_t i = 0; i < NUM_OLED_BYTES; i++) { + uint8_t bit = i % 8; + uint8_t map_index = i / 8; + uint8_t _block_map = (uint8_t)pgm_read_byte_near(input_block_map + map_index); + uint8_t nonzero_byte = (_block_map & (1 << bit)); + if (nonzero_byte) { + const char data = (const char)pgm_read_byte_near(input_block_list + block_index++); + oled_write_raw_byte(data, i); + } else { + const char data = (const char)0x00; + oled_write_raw_byte(data, i); + } + } +} +#endif + +static void animate(uint8_t x, uint8_t y) { + oled_set_cursor(x, y); + + // Update frame + switch (anim_state) { + case Idle: + idle_frame = (idle_frame + 1) % _IDLE_FRAMES; + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(idle_block_map[abs(1 - idle_frame)], idle[abs(1 - idle_frame)]); + #else + oled_write_raw_P(idle[abs(1 - idle_frame)], sizeof(idle[abs(1 - idle_frame)])); + #endif + break; + case Prep: + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(prep_block_map[0], prep[0]); + #else + oled_write_raw_P(prep[0], sizeof(prep[0])); + #endif + break; + case Tap: + tap_frame = (tap_frame + 1) % _TAP_FRAMES; + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(tap_block_map[abs(1 - tap_frame)], tap[abs(1 - tap_frame)]); + #else + oled_write_raw_P(tap[abs(1 - tap_frame)], sizeof(tap[abs(1 - tap_frame)])); + #endif + break; + default: + break; + } +} + +void bongo_render(uint8_t x, uint8_t y) { + if (timer_elapsed32(anim_timer) > anim_duration) { + anim_timer = timer_read32(); + animate(x, y); + } + + if (anim_state == Prep && timer_elapsed32(prep_timer) > _PREP_TIMEOUT) { + anim_state = Idle; + anim_duration = _IDLE_FRAME_DURATION; + } +} + +void bongo_process_record(keyrecord_t *record) { + if (record->event.pressed) { + anim_state = Tap; + anim_duration = _TAP_FRAME_DURATION; + } else { + if (anim_state == Tap) { + anim_state = Prep; + prep_timer = timer_read32(); + } + } +} diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo_graphics.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo_graphics.h new file mode 100644 index 000000000000..0b7915ea720a --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/bongo_graphics.h @@ -0,0 +1,262 @@ +/* Copyright 2022 Jay Greco + * + * 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 _IDLE_FRAMES 5 +#define _PREP_FRAMES 1 +#define _TAP_FRAMES 2 +#define _ANIM_BYTES 512 + +#define NUM_OLED_BYTES 512 +#define USE_OLED_BITMAP_COMPRESSION + +#ifdef USE_OLED_BITMAP_COMPRESSION +static const char PROGMEM idle_block_map[_IDLE_FRAMES][64] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x48, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x48, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x79, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM idle[_IDLE_FRAMES][164] = +{ + { + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x02, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, + 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, + 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, + 0x01, 0x01 + }, + { + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, + 0x01, 0x01, 0x80, 0x80, 0x60, 0x60, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, + 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, + 0x01, 0xc0, 0x30, 0x0c, 0x03, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, + 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, + 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, + 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, + 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, 0x01, 0x01 + }, + { + 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, + 0x80, 0x80, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, + 0x01, 0x80, 0x80, 0x60, 0x60, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, + 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, + 0x01, 0xc0, 0x30, 0x0c, 0x03, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, + 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, + 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, + 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, + 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, 0x01, 0x01 + }, + { + 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, + 0x80, 0x80, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, + 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, + 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, + 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, + 0x01, 0x01 + }, + { + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, + 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, + 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, + 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, + 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, + 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, + 0x18, 0x01, 0x01, 0x01 + } +}; + +static const char PROGMEM prep_block_map[_PREP_FRAMES][64] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xbb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM prep[_PREP_FRAMES][158] = +{ + { + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, + 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, + 0x82, 0x01, 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x64, 0x18, 0x04, + 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x0c, 0x03, 0x02, 0x18, 0x19, 0x05, 0xfe, 0x80, + 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x80, 0x80, + 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01 + } +}; + +static const char PROGMEM tap_block_map[_TAP_FRAMES][64] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xbb, 0xff, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM tap[_TAP_FRAMES][179] = +{ + { + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, + 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x64, 0x18, 0x04, + 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, + 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, + 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, + 0x9c, 0x1c, 0x1e, 0x0e, 0x06 + }, + { + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, + 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, + 0x82, 0x01, 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x04, 0x04, 0x08, + 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x0c, 0x03, 0x02, 0x18, 0x19, 0x05, 0xfe, 0x80, + 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, + 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, + 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, + 0xf8, 0xf0, 0x70 + } +}; + +#else +static const char PROGMEM idle[_IDLE_FRAMES][_ANIM_BYTES] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM prep[_PREP_FRAMES][_ANIM_BYTES] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM tap[_TAP_FRAMES][_ANIM_BYTES] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; +#endif diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive/config.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/config.h new file mode 100644 index 000000000000..49590197aed3 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/config.h @@ -0,0 +1,35 @@ +/* Copyright 2021 Jay Greco + * + * 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 + +/* space savers */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT +#define TAPPING_FORCE_HOLD + +#define OLED_BRIGHTNESS 128 +#define OLED_TIMEOUT 30000 + +// Selectively undefine to save space +// VIA support won't fit otherwise +#ifdef RGBLIGHT_ENABLE +#undef RGBLIGHT_EFFECT_TWINKLE +#endif //RGB LIGHT_ENABLE + +// Split Options +#define SPLIT_TRANSPORT_MIRROR diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive/keymap.c b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/keymap.c new file mode 100644 index 000000000000..4ffa21f9ee17 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/keymap.c @@ -0,0 +1,133 @@ +/* Copyright 2021 Jay Greco + * + * 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 "bongo.h" + +// NOTE: +// In order to get the slave oled to receive keypresses: +// See: https://zenn.dev/teppeis/articles/2021-05-qmk-fire-process-record-in-slave + +// clang-format off +enum layers { + _BASE, + _VIA1, + _VIA2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_ESC, 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_PSCR, KC_PAUS, + KC_F13, KC_GRV, 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_DEL, KC_HOME, + KC_F14, 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_F15, 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_F16, KC_LSFT, KC_NUHS, 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_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_VIA1), KC_SPC, KC_SPC, MO(_VIA1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_VIA1] = LAYOUT_all( + QK_BOOT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [_VIA2] = LAYOUT_all( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; +// clang-format on + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_VIA1] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) }, + [_VIA2] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) } +}; +#endif + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_left()) + return OLED_ROTATION_0; + else + return OLED_ROTATION_180; +} + +static void render_status(void) { + oled_set_cursor(0, 0); + oled_write_P(PSTR("SNAP75 "), false); + oled_write_P(PSTR("Layer "), false); + switch (get_highest_layer(layer_state)) { + case _VIA1: + oled_write_P(PSTR("FN1 "), false); + break; + case _VIA2: + oled_write_P(PSTR("FN2 "), false); + break; + default: // use BASE case as default + oled_write_P(PSTR("Base"), false); + } + + // Host Keyboard LED Status + oled_set_cursor(0, 1); + static uint8_t persistent_led_state = 0; + uint8_t led_usb_state = host_keyboard_leds(); + + // Only update if the LED state has changed + // Otherwise, the OLED will not turn off if an LED is on. + if (persistent_led_state != led_usb_state) { + persistent_led_state = led_usb_state; + + oled_write_ln_P(PSTR(""), false); + + if (IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK)) { + oled_set_cursor(0, 1); + oled_write_P(PSTR("CAPS"), false); + } + + if (IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK)) { + oled_set_cursor(5, 1); + oled_write_P(PSTR("NUM"), true); + } + + if (IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK)) { + oled_set_cursor(9, 1); + oled_write_P(PSTR("SCR"), false); + } + } +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); + } else { + bongo_render(0, 0); + } + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + bongo_process_record(record); + return true; +} + +bool should_process_keypress(void) { + return true; +} diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive/rules.mk b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/rules.mk new file mode 100644 index 000000000000..7e580bfd7490 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive/rules.mk @@ -0,0 +1,4 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo.h new file mode 100644 index 000000000000..0cf1de3045bc --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo.h @@ -0,0 +1,121 @@ +/* Copyright 2021 Chris Tanaka + * + * 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 "bongo_graphics.h" +#include QMK_KEYBOARD_H + +#define _IDLE_FRAMES 5 +#define _PREP_FRAMES 1 +#define _TAP_FRAMES 2 +#define _ANIM_BYTES 512 // Number of bytes in array (max is 1024) +#define _IDLE_FRAME_DURATION 175 +#define _TAP_FRAME_DURATION 75 +#define _PREP_TIMEOUT 750 + +enum anim_states +{ + Idle, + Prep, + Tap +}; + +static uint8_t anim_state = Idle; +static uint8_t anim_duration = _IDLE_FRAME_DURATION; +static uint32_t anim_timer = 0; + +static uint8_t idle_frame = 0; +static uint8_t tap_frame = 0; + +static uint32_t prep_timer = 0; + +// Decompress and write a precompressed bitmap frame to the OLED. +// Documentation and python compression script available at: +// https://github.com/nullbitsco/squeez-o +#ifdef USE_OLED_BITMAP_COMPRESSION +static void oled_write_compressed_P(const char* input_block_map, const char* input_block_list) { + uint16_t block_index = 0; + for (uint16_t i = 0; i < NUM_OLED_BYTES; i++) { + uint8_t bit = i % 8; + uint8_t map_index = i / 8; + uint8_t _block_map = (uint8_t)pgm_read_byte_near(input_block_map + map_index); + uint8_t nonzero_byte = (_block_map & (1 << bit)); + if (nonzero_byte) { + const char data = (const char)pgm_read_byte_near(input_block_list + block_index++); + oled_write_raw_byte(data, i); + } else { + const char data = (const char)0x00; + oled_write_raw_byte(data, i); + } + } +} +#endif + +static void animate(uint8_t x, uint8_t y) { + oled_set_cursor(x, y); + + // Update frame + switch (anim_state) { + case Idle: + idle_frame = (idle_frame + 1) % _IDLE_FRAMES; + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(idle_block_map[abs(1 - idle_frame)], idle[abs(1 - idle_frame)]); + #else + oled_write_raw_P(idle[abs(1 - idle_frame)], sizeof(idle[abs(1 - idle_frame)])); + #endif + break; + case Prep: + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(prep_block_map[0], prep[0]); + #else + oled_write_raw_P(prep[0], sizeof(prep[0])); + #endif + break; + case Tap: + tap_frame = (tap_frame + 1) % _TAP_FRAMES; + #ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(tap_block_map[abs(1 - tap_frame)], tap[abs(1 - tap_frame)]); + #else + oled_write_raw_P(tap[abs(1 - tap_frame)], sizeof(tap[abs(1 - tap_frame)])); + #endif + break; + default: + break; + } +} + +void bongo_render(uint8_t x, uint8_t y) { + if (timer_elapsed32(anim_timer) > anim_duration) { + anim_timer = timer_read32(); + animate(x, y); + } + + if (anim_state == Prep && timer_elapsed32(prep_timer) > _PREP_TIMEOUT) { + anim_state = Idle; + anim_duration = _IDLE_FRAME_DURATION; + } +} + +void bongo_process_record(keyrecord_t *record) { + if (record->event.pressed) { + anim_state = Tap; + anim_duration = _TAP_FRAME_DURATION; + } else { + if (anim_state == Tap) { + anim_state = Prep; + prep_timer = timer_read32(); + } + } +} diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo_graphics.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo_graphics.h new file mode 100644 index 000000000000..0b7915ea720a --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/bongo_graphics.h @@ -0,0 +1,262 @@ +/* Copyright 2022 Jay Greco + * + * 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 _IDLE_FRAMES 5 +#define _PREP_FRAMES 1 +#define _TAP_FRAMES 2 +#define _ANIM_BYTES 512 + +#define NUM_OLED_BYTES 512 +#define USE_OLED_BITMAP_COMPRESSION + +#ifdef USE_OLED_BITMAP_COMPRESSION +static const char PROGMEM idle_block_map[_IDLE_FRAMES][64] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x48, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x48, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x79, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM idle[_IDLE_FRAMES][164] = +{ + { + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x02, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, + 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, + 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, + 0x01, 0x01 + }, + { + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, + 0x01, 0x01, 0x80, 0x80, 0x60, 0x60, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, + 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, + 0x01, 0xc0, 0x30, 0x0c, 0x03, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, + 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, + 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, + 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, + 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, 0x01, 0x01 + }, + { + 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, + 0x80, 0x80, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, + 0x01, 0x80, 0x80, 0x60, 0x60, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, + 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, + 0x01, 0xc0, 0x30, 0x0c, 0x03, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, + 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, + 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, + 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, + 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, 0x01, 0x01 + }, + { + 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, + 0x80, 0x80, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, + 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, + 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, + 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x01, + 0x01, 0x01 + }, + { + 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, + 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, + 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, + 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, 0x80, 0x80, 0x80, 0x80, + 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, + 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, + 0x18, 0x01, 0x01, 0x01 + } +}; + +static const char PROGMEM prep_block_map[_PREP_FRAMES][64] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xbb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM prep[_PREP_FRAMES][158] = +{ + { + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, + 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, + 0x82, 0x01, 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x64, 0x18, 0x04, + 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x0c, 0x03, 0x02, 0x18, 0x19, 0x05, 0xfe, 0x80, + 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x80, 0x80, + 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01 + } +}; + +static const char PROGMEM tap_block_map[_TAP_FRAMES][64] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x79, 0x86, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xbb, 0xff, 0xff, 0xff, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM tap[_TAP_FRAMES][179] = +{ + { + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, + 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x64, 0x18, 0x04, + 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, + 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, + 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, + 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, + 0x9c, 0x1c, 0x1e, 0x0e, 0x06 + }, + { + 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, + 0x20, 0x40, 0x40, 0x80, 0x80, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, + 0x82, 0x01, 0x01, 0x01, 0x80, 0x40, 0x80, 0x80, 0x40, 0x30, 0x30, 0x01, 0x02, 0x04, 0x04, 0x08, + 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x01, 0x01, 0x01, 0xe0, 0x18, 0x06, 0x01, 0x0c, 0x03, 0x02, 0x18, 0x19, 0x05, 0xfe, 0x80, + 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x01, 0x86, 0x98, 0x60, + 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, + 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, + 0xf8, 0xf0, 0x70 + } +}; + +#else +static const char PROGMEM idle[_IDLE_FRAMES][_ANIM_BYTES] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM prep[_PREP_FRAMES][_ANIM_BYTES] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static const char PROGMEM tap[_TAP_FRAMES][_ANIM_BYTES] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; +#endif diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/config.h b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/config.h new file mode 100644 index 000000000000..8cfcb4d0e8a2 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/config.h @@ -0,0 +1,29 @@ +/* Copyright 2021 Jay Greco + * + * 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 OLED_BRIGHTNESS 128 +#define OLED_TIMEOUT 30000 + +/* space savers */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT +#define TAPPING_FORCE_HOLD + +// Split Options +#define SPLIT_TRANSPORT_MIRROR diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/keymap.c b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/keymap.c new file mode 100644 index 000000000000..07d01e606a24 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/keymap.c @@ -0,0 +1,87 @@ +/* Copyright 2021 Jay Greco + * + * 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 "bongo.h" + +// NOTE: +// In order to get the slave oled to receive keypresses: +// See: https://zenn.dev/teppeis/articles/2021-05-qmk-fire-process-record-in-slave + +// clang-format off +enum layers { + _BASE, + _VIA1, + _VIA2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_ESC, 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_PSCR, KC_PAUS, + KC_F13, KC_GRV, 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_DEL, KC_HOME, + KC_F14, 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_F15, 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_F16, KC_LSFT, KC_NUHS, 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_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_VIA1), KC_SPC, KC_SPC, MO(_VIA1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_VIA1] = LAYOUT_all( + QK_BOOT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [_VIA2] = LAYOUT_all( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; +// clang-format on + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_VIA1] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) }, + [_VIA2] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) } +}; +#endif + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_left()) + return OLED_ROTATION_0; + else + return OLED_ROTATION_180; +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + bongo_render(0, 0); + } + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + bongo_process_record(record); + return true; +} + +bool should_process_keypress(void) { + return true; +} diff --git a/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/rules.mk b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/rules.mk new file mode 100644 index 000000000000..d0a184e961f1 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/bongo_reactive_single_oled/rules.mk @@ -0,0 +1,5 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +WPM_ENABLE = yes +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/nullbitsco/snap/keymaps/default/keymap.c b/keyboards/nullbitsco/snap/keymaps/default/keymap.c new file mode 100644 index 000000000000..5178b503496e --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/default/keymap.c @@ -0,0 +1,105 @@ +/* Copyright 2021 Jay Greco + * + * 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 "common/remote_kb.h" + +// clang-format off +enum layers { + _BASE = 0, + _FUNC +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_ansi( + KC_ESC, 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_PSCR, KC_PAUS, + KC_F13, KC_GRV, 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_F14, 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_F15, 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_F16, 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_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_FUNC), KC_SPC, KC_BSPC, MO(_FUNC), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FUNC] = LAYOUT_ansi( + QK_BOOT, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + RGB_TOG, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_MPRV, KC_MPLY, KC_MNXT + ), +}; +// clang-format on + +// RGB config, for changing RGB settings on non-VIA firmware +#ifdef RGBLIGHT_ENABLE +void change_RGB(bool clockwise) { + bool shift = get_mods() & MOD_MASK_SHIFT; + bool alt = get_mods() & MOD_MASK_ALT; + bool ctrl = get_mods() & MOD_MASK_CTRL; + +#ifdef CONSOLE_ENABLE + dprintf("Mods: %u\n", get_mods()); +#endif + + if (clockwise) { + if (alt) { + rgblight_increase_hue(); + } else if (ctrl) { + rgblight_increase_val(); + } else if (shift) { + rgblight_increase_sat(); + } else { + rgblight_step(); + } + + } else { + if (alt) { + rgblight_decrease_hue(); + } else if (ctrl) { + rgblight_decrease_val(); + } else if (shift) { + rgblight_decrease_sat(); + } else { + rgblight_step_reverse(); + } + } +} +#endif + +bool encoder_update_user(uint8_t index, bool clockwise) { + // change RGB settings and don't do anything else + if (!layer_state_is(_BASE)) { + #ifdef RGBLIGHT_ENABLE + change_RGB(clockwise); + #endif + return false; + } + /* Left encoder */ + if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + /* Right encoder */ + } else if (index == 1) { + if (clockwise) { + tap_code_delay(KC_MNXT, 10); + } else { + tap_code_delay(KC_MPRV, 10); + } + } + return true; +} diff --git a/keyboards/nullbitsco/snap/keymaps/iso/keymap.c b/keyboards/nullbitsco/snap/keymaps/iso/keymap.c new file mode 100644 index 000000000000..3c3b828263ee --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/iso/keymap.c @@ -0,0 +1,104 @@ +/* Copyright 2021 Jay Greco + * + * 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 + +// clang-format off +enum layers { + _BASE = 0, + _FUNC +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_iso( + KC_ESC, 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_PSCR, KC_PAUS, + KC_F13, KC_GRV, 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_F14, 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_ENT, KC_END, + KC_F15, 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_BSLS, KC_PGUP, + KC_F16, KC_LSFT, KC_NUHS, 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_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_FUNC), KC_SPC, KC_SPC, MO(_FUNC), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FUNC] = LAYOUT_iso( + QK_BOOT, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + RGB_TOG, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_MPRV, KC_MPLY, KC_MNXT + ), +}; +// clang-format on + +// RGB config, for changing RGB settings on non-VIA firmwares +#ifdef RGBLIGHT_ENABLE +void change_RGB(bool clockwise) { + bool shift = get_mods() & MOD_MASK_SHIFT; + bool alt = get_mods() & MOD_MASK_ALT; + bool ctrl = get_mods() & MOD_MASK_CTRL; + +#ifdef CONSOLE_ENABLE + dprintf("Mods: %u\n", get_mods()); +#endif + + if (clockwise) { + if (alt) { + rgblight_increase_hue(); + } else if (ctrl) { + rgblight_increase_val(); + } else if (shift) { + rgblight_increase_sat(); + } else { + rgblight_step(); + } + + } else { + if (alt) { + rgblight_decrease_hue(); + } else if (ctrl) { + rgblight_decrease_val(); + } else if (shift) { + rgblight_decrease_sat(); + } else { + rgblight_step_reverse(); + } + } +} +#endif + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (layer_state_is(1)) { + // change RGB settings + #ifdef RGBLIGHT_ENABLE + change_RGB(clockwise); + #endif + } else { + if (index == 0) { + // Left encoder: Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + // Right encoder: skip forward/back + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + } + } + return true; +} diff --git a/keyboards/nullbitsco/snap/keymaps/oled/config.h b/keyboards/nullbitsco/snap/keymaps/oled/config.h new file mode 100644 index 000000000000..d2000ce58981 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/oled/config.h @@ -0,0 +1,27 @@ +/* Copyright 2021 Jay Greco + * + * 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 + +/* space savers */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT +#define TAPPING_FORCE_HOLD + +#define OLED_BRIGHTNESS 128 +#define OLED_TIMEOUT 30000 +#define OLED_UPDATE_INTERVAL 250 diff --git a/keyboards/nullbitsco/snap/keymaps/oled/keymap.c b/keyboards/nullbitsco/snap/keymaps/oled/keymap.c new file mode 100644 index 000000000000..4e566fa3ee15 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/oled/keymap.c @@ -0,0 +1,163 @@ +/* Copyright 2021 Jay Greco + * + * 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 "oled_graphics.h" + +// clang-format off +enum layers { + _BASE, + _VIA1, + _VIA2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_ESC, 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_PSCR, KC_PAUS, + KC_F13, KC_GRV, 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_DEL, KC_HOME, + KC_F14, 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_F15, 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_F16, KC_LSFT, KC_NUHS, 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_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_VIA1), KC_SPC, KC_SPC, MO(_VIA1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_VIA1] = LAYOUT_all( + QK_BOOT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [_VIA2] = LAYOUT_all( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; +// clang-format on + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_VIA1] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) }, + [_VIA2] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) } +}; +#endif + + +// Decompress and write a precompressed bitmap frame to the OLED. +// Documentation and python compression script available at: +// https://github.com/nullbitsco/squeez-o +#ifdef USE_OLED_BITMAP_COMPRESSION +static void oled_write_compressed_P(const char* input_block_map, const char* input_block_list) { + uint16_t block_index = 0; + for (uint16_t i = 0; i < NUM_OLED_BYTES; i++) { + uint8_t bit = i % 8; + uint8_t map_index = i / 8; + uint8_t _block_map = (uint8_t)pgm_read_byte_near(input_block_map + map_index); + uint8_t nonzero_byte = (_block_map & (1 << bit)); + if (nonzero_byte) { + const char data = (const char)pgm_read_byte_near(input_block_list + block_index++); + oled_write_raw_byte(data, i); + } else { + const char data = (const char)0x00; + oled_write_raw_byte(data, i); + } + } +} +#endif + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_left()) + return OLED_ROTATION_0; + else + return OLED_ROTATION_180; +} + +static void render_nullbits_logo(void) { +#ifdef USE_OLED_BITMAP_COMPRESSION + oled_write_compressed_P(nullbits_logo_block_map, nullbits_logo_bmp); +#else + oled_write_raw_P(nullbits_logo, sizeof(nullbits_logo)); +#endif +} + +static void render_status(void) { + oled_set_cursor(0, 0); + oled_write_P(PSTR("SNAP75 "), false); + oled_write_P(PSTR("Layer "), false); + switch (get_highest_layer(layer_state)) { + case _VIA1: + oled_write_P(PSTR("FN1 "), false); + break; + case _VIA2: + oled_write_P(PSTR("FN2 "), false); + break; + default: // use BASE case as default + oled_write_P(PSTR("Base"), false); + } + + // Host Keyboard LED Status + oled_set_cursor(0, 1); + static uint8_t persistent_led_state = 0; + uint8_t led_usb_state = host_keyboard_leds(); + + // Only update if the LED state has changed + // Otherwise, the OLED will not turn off if an LED is on. + if (persistent_led_state != led_usb_state) { + persistent_led_state = led_usb_state; + + oled_write_ln_P(PSTR(""), false); + + if (IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK)) { + oled_set_cursor(0, 1); + oled_write_P(PSTR("CAPS"), false); + } + + if (IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK)) { + oled_set_cursor(5, 1); + oled_write_P(PSTR("NUM"), true); + } + + if (IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK)) { + oled_set_cursor(9, 1); + oled_write_P(PSTR("SCR"), false); + } + } + + // WPM and max WPM + oled_set_cursor(0, 2); + oled_write_P(PSTR("WPM "), false); + uint8_t current_wpm = get_current_wpm(); + oled_write(get_u8_str(current_wpm, '0'), true); + + oled_set_cursor(8, 2); + oled_write_P(PSTR("MAX "), false); + static uint8_t max_wpm; + max_wpm = MAX(max_wpm, current_wpm); + oled_write(get_u8_str(max_wpm, '0'), true); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); + } else { + render_nullbits_logo(); + } + return true; +} diff --git a/keyboards/nullbitsco/snap/keymaps/oled/oled_graphics.h b/keyboards/nullbitsco/snap/keymaps/oled/oled_graphics.h new file mode 100644 index 000000000000..487bb5974eaf --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/oled/oled_graphics.h @@ -0,0 +1,82 @@ +/* Copyright 2022 Jay Greco + * + * 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 NUM_OLED_BYTES 512 +#define USE_OLED_BITMAP_COMPRESSION + +#ifdef USE_OLED_BITMAP_COMPRESSION +static const char PROGMEM nullbits_logo_block_map[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x78, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xf7, 0x0f, 0x1e, 0x3c, 0x3c, 0x7c, 0xf8, 0x3f, 0xf0, 0xf9, 0x3f, 0xff, 0x0f, 0x00, + 0x00, 0x80, 0xf7, 0x1f, 0x1e, 0x3c, 0x3c, 0x7c, 0xf8, 0xff, 0xe1, 0xf9, 0xbf, 0xff, 0x0f, 0x00, + 0x00, 0x80, 0x07, 0x1e, 0xfe, 0x3f, 0x3c, 0x7c, 0xf8, 0xff, 0xe1, 0xc1, 0x83, 0xff, 0x0f, 0x00 +}; + +static const char PROGMEM nullbits_logo_bmp[] = { + 0xf6, 0xff, 0xff, 0xfe, 0xe4, 0xfe, 0xff, 0xfe, 0xf4, 0xfe, 0xff, 0xfe, 0xfe, 0xc0, 0xe0, 0xe0, + 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0xe0, + 0xe0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0x80, 0x01, 0xc3, 0xe3, 0xe3, 0xc3, 0xc0, + 0xe0, 0xe0, 0xfe, 0xfe, 0xff, 0xfe, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, + 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x03, 0x03, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0f, 0xff, 0xff, + 0xfe, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, + 0x01, 0x1e, 0x3f, 0x7f, 0xff, 0xfb, 0xf3, 0xf1, 0xe1, 0xe1, 0xe1, 0xc1, 0x81, 0x01, 0x7f, 0xff, + 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x0f, 0x3f, 0x7f, 0xff, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, + 0x7f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff, 0xff, 0x7f, + 0xf0, 0xf0, 0xf0, 0xf8, 0x78, 0x7e, 0x3f, 0x3f, 0x1f, 0x07, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff, + 0xff, 0xff, 0x70, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xfb, 0x7f, 0x7f, 0x3f, 0x1f +}; + +#else +static const char PROGMEM nullbits_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf6, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xfe, 0xff, 0xfe, 0xf4, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0xe0, 0xe0, 0xe0, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xe3, 0xe3, 0xc3, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xfe, 0xfe, + 0xff, 0xfe, 0xe0, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, + 0xc0, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0xff, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0f, 0xff, 0xff, 0xfe, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x00, 0x1e, 0x3f, 0x7f, 0xff, 0xfb, 0xf3, 0xf1, 0xe1, 0xe1, + 0xe1, 0xc1, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x0f, 0x3f, 0x7f, 0xff, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0x7f, 0x3f, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x7f, 0xf0, 0xf0, 0xf0, 0xf8, 0x78, 0x7e, 0x3f, 0x3f, 0x1f, + 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xfb, + 0x7f, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#endif diff --git a/keyboards/nullbitsco/snap/keymaps/oled/rules.mk b/keyboards/nullbitsco/snap/keymaps/oled/rules.mk new file mode 100644 index 000000000000..d0a184e961f1 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/oled/rules.mk @@ -0,0 +1,5 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +WPM_ENABLE = yes +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/nullbitsco/snap/keymaps/typehud/config.h b/keyboards/nullbitsco/snap/keymaps/typehud/config.h new file mode 100644 index 000000000000..62c11709a23c --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/typehud/config.h @@ -0,0 +1,46 @@ +/* Copyright 2022 Chris Tanaka + * + * 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 + +/* space savers */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT +#define TAPPING_FORCE_HOLD + +// Old configuration +#define OLED_BRIGHTNESS 128 +#define OLED_TIMEOUT 30000 +#define OLED_UPDATE_INTERVAL 200 + +// Selectively undefine to save space +// VIA support won't fit otherwise +#ifdef RGBLIGHT_ENABLE +#undef RGBLIGHT_EFFECT_TWINKLE +#endif //RGB LIGHT_ENABLE + +// Split configuration +#define SPLIT_TRANSPORT_MIRROR +#define SPLIT_WPM_ENABLE + +// Typehud configuration +#define TYPEHUD_FILLGRAPH +#define TYPEHUD_MATRIX_COLS 16 +// #define TYPEHUD_MASTER +// #define TYPEHUD_MATRIX_ROTATE_90 +// #define TYPEHUD_MATRIX_ROTATE_180 +// #define TYPEHUD_MATRIX_ROTATE_270 diff --git a/keyboards/nullbitsco/snap/keymaps/typehud/keymap.c b/keyboards/nullbitsco/snap/keymaps/typehud/keymap.c new file mode 100644 index 000000000000..ea3fc2e8ebfb --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/typehud/keymap.c @@ -0,0 +1,157 @@ +/* Copyright 2022 Chris Tanaka + * + * 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 "typehud.h" + +// clang-format off +enum layers { + _BASE, + _VIA1, + _VIA2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_ESC, 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_PSCR, KC_PAUS, + KC_F13, KC_GRV, 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_DEL, KC_HOME, + KC_F14, 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_F15, 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_F16, KC_LSFT, KC_NUHS, 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_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_VIA1), KC_SPC, KC_SPC, MO(_VIA1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_VIA1] = LAYOUT_all( + QK_BOOT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [_VIA2] = LAYOUT_all( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; +// clang-format on + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_VIA1] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) }, + [_VIA2] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) } +}; +#endif + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + oled_clear(); + +#ifdef TYPEHUD_MASTER + if (is_keyboard_master()) { +#else + if (!is_keyboard_master()) { +#endif + typehud_init(); + } + + if (is_keyboard_left()) + return OLED_ROTATION_0; + else + return OLED_ROTATION_180; +} + +static void render_status(void) { + oled_set_cursor(0, 0); + oled_write_P(PSTR("SNAP75 "), false); + oled_write_P(PSTR("Layer "), false); + switch (get_highest_layer(layer_state)) { + case _VIA1: + oled_write_P(PSTR("FN1 "), false); + break; + case _VIA2: + oled_write_P(PSTR("FN2 "), false); + break; + default: // use BASE case as default + oled_write_P(PSTR("Base"), false); + } + + // Host Keyboard LED Status + oled_set_cursor(0, 1); + static uint8_t persistent_led_state = 0; + uint8_t led_usb_state = host_keyboard_leds(); + + // Only update if the LED state has changed + // Otherwise, the OLED will not turn off if an LED is on. + if (persistent_led_state != led_usb_state) { + persistent_led_state = led_usb_state; + + oled_write_ln_P(PSTR(" "), false); + + if (IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK)) { + oled_set_cursor(0, 1); + oled_write_P(PSTR("CAPS"), false); + } + + if (IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK)) { + oled_set_cursor(5, 1); + oled_write_P(PSTR("NUM"), true); + } + + if (IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK)) { + oled_set_cursor(9, 1); + oled_write_P(PSTR("SCR"), false); + } + } + + // WPM and max WPM + oled_set_cursor(0, 2); + oled_write_P(PSTR("WPM "), false); + uint8_t current_wpm = get_current_wpm(); + oled_write(get_u8_str(current_wpm, '0'), true); + + oled_set_cursor(8, 2); + oled_write_P(PSTR("MAX "), false); + static uint8_t max_wpm; + max_wpm = MAX(max_wpm, current_wpm); + oled_write(get_u8_str(max_wpm, '0'), true); +} + +bool oled_task_user(void) { +#ifdef TYPEHUD_MASTER + if (is_keyboard_master()) { +#else + if (!is_keyboard_master()) { +#endif + typehud_render(); + } else { + render_status(); + } + + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + typehud_process_record(record); + return true; +} + +bool should_process_keypress(void) { + return true; +} diff --git a/keyboards/nullbitsco/snap/keymaps/typehud/readme.md b/keyboards/nullbitsco/snap/keymaps/typehud/readme.md new file mode 100644 index 000000000000..d5f50f310c80 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/typehud/readme.md @@ -0,0 +1,51 @@ +# Typehud Keymap + +VIA compatible keymap that displays a live wpm HUD on your OLED. + + + +## Configuration + +Configuration options (other than the keymap itself) can be found in `typehud/config.h`. + +### Graph Type + +By default the graph is filled. For a non-filled graph remove or comment out the following line: + +```c +#define TYPEHUD_FILLGRAPH +``` + +### Keyboard Matrix Orientation + +To change the keyboard matrix orientation add one of the following: + +- `TYPEHUD_MATRIX_ROTATE_90` +- `TYPEHUD_MATRIX_ROTATE_180` +- `TYPEHUD_MATRIX_ROTATE_270` + +### Keyboard Matrix Key Overrides + +If the number of physical keys doesn't match the keyboard matrix rows/columns you can override it: + +```c +#define TYPEHUD_MATRIX_ROWS 6 +#define TYPEHUD_MATRIX_COLS 16 +``` + +In addition if the position of the physical keys doesn't match the matrix you can override it. Negative numbers will shift the keys left/up and positive numbers will shift the keys right/down: + +```c +#define TYPEHUD_MATRIX_ROW_SHIFT -1 +#define TYPEHUD_MATRIX_COL_SHIFT -2 +``` + +### Split Keyboard Side + +For split keyboards, the keymap assumes it will be rendered to the slave side. + +To render to master instead, add the following configuration line: + +```c +#define TYPEHUD_MASTER +``` diff --git a/keyboards/nullbitsco/snap/keymaps/typehud/rules.mk b/keyboards/nullbitsco/snap/keymaps/typehud/rules.mk new file mode 100644 index 000000000000..151e44f4aac8 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/typehud/rules.mk @@ -0,0 +1,7 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +WPM_ENABLE = yes +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes + +SRC += typehud.c diff --git a/keyboards/nullbitsco/snap/keymaps/typehud/typehud.c b/keyboards/nullbitsco/snap/keymaps/typehud/typehud.c new file mode 100644 index 000000000000..ad884f843b8e --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/typehud/typehud.c @@ -0,0 +1,349 @@ +/* Copyright 2023 Jay Greco + * + * 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 "typehud.h" + +static bool is_initialized; +static uint16_t timer; +static int8_t bar_height; +static uint8_t wpm_arr[_GRAPH_WIDTH]; +static uint8_t point_arr[_GRAPH_WIDTH]; + + +static void + render_graph(uint8_t wpm), + render_caret(void), + render_axis(void), + render_bar(void), + render_init(void); + +/* + * Renders the wpm counter. + */ +static void render_wpm(uint8_t wpm) { + oled_set_cursor(0, 0); + oled_write("WPM", false); + oled_set_cursor(0, 1); + oled_write(get_u8_str(wpm, '0'), false); +} + +/* + * Renders the keyboard matrix. + */ +static void render_matrix(keyrecord_t *record) { + uint8_t x = _MATRIX_X; + uint8_t y = _MATRIX_Y; + uint8_t width = _MATRIX_WIDTH; + uint8_t height = _MATRIX_HEIGHT; +#ifdef SPLIT_KEYBOARD + uint8_t rows = _NML_MATRIX_ROWS; + uint8_t cols = _NML_MATRIX_COLS; +#endif + + // On initial render draw the matrix outline + if (!is_initialized) { + for (uint8_t i = 1; i <= width - 2; i++) { + oled_write_pixel(x + i, y, true); + oled_write_pixel(x + i, y + height - 1, true); + } + for (uint8_t j = 1; j <= height - 2; j++) { + oled_write_pixel(x, y + j, true); + oled_write_pixel(x + width - 1, y + j, true); + } + return; + } + + // Determine position based on matrix rotation + // For split keyboards the keys on the right half get appended as additional rows and + // have their columns reset at 0 +#ifdef SPLIT_KEYBOARD + uint8_t row = (record->event.key.row % rows); + uint8_t col = record->event.key.col; + if (record->event.key.row >= rows) { + col += (cols / 2); + } +#else + uint8_t row = record->event.key.row; + uint8_t col = record->event.key.col; +#endif + +#ifdef TYPEHUD_MATRIX_ROW_SHIFT + row += TYPEHUD_MATRIX_ROW_SHIFT; +#endif +#ifdef TYPEHUD_MATRIX_COL_SHIFT + col += TYPEHUD_MATRIX_COL_SHIFT; +#endif + + // Scale position to key size + uint8_t size = _MATRIX_SIZE; + row *= size; + col *= size; + + // Render key in matrix + for (int i = 0; i < size; i++) { + for (int j = 0; j < size; j++) { +#if defined(TYPEHUD_MATRIX_ROTATE_90) + uint8_t key_x = x + width - 1 - size - row; + uint8_t key_y = y + 1 + col; +#elif defined(TYPEHUD_MATRIX_ROTATE_180) + uint8_t key_x = x + width - 1 - size - col; + uint8_t key_y = y + height - 1 - size - row; +#elif defined(TYPEHUD_MATRIX_ROTATE_270) + uint8_t key_x = x + 1 + row; + uint8_t key_y = y + height - 1 - size - col; +#else + uint8_t key_x = x + 1 + col; + uint8_t key_y = y + 1 + row; +#endif + oled_write_pixel(key_x + i, key_y + j, record->event.pressed); + } + } +} + +/* + * Renders the graph. + */ +static void render_graph(uint8_t wpm) { + uint8_t x = _GRAPH_X; + uint8_t y = _GRAPH_Y + _GRAPH_HEIGHT; + uint8_t width = _GRAPH_WIDTH; + uint8_t height = _GRAPH_HEIGHT; + + // Handle intial graph render + if (!is_initialized) { + for (uint8_t i = 0; i < width; i++) { + oled_write_pixel(x + i, y, true); + } + return; + } + + uint8_t i = 0; + + // Shift all graph points except last to the left and re-render + for (; i < width - 1; i++) { + int8_t point_delta = point_arr[i + 1] - point_arr[i]; + +#ifdef TYPEHUD_FILLGRAPH + if (point_delta < 0) { +#else + if (point_delta != 0) { +#endif + oled_write_pixel(x + i, y - point_arr[i], false); + } + + wpm_arr[i] = wpm_arr[i + 1]; + point_arr[i] = point_arr[i + 1]; + + if (point_delta != 0) { + oled_write_pixel(x + i, y - point_arr[i], true); + } + } + + // Clear last graph point + if (wpm > wpm_arr[i] && point_arr[i] + 1 <= height) { +#ifndef TYPEHUD_FILLGRAPH + oled_write_pixel(x + i, y - point_arr[i], false); +#endif + point_arr[i] = point_arr[i] + 1; + } else if ((wpm < wpm_arr[i] && point_arr[i] - 1 >= 0) || (wpm <= 0 && point_arr[i] > 0)) { + oled_write_pixel(x + i, y - point_arr[i], false); + point_arr[i] = point_arr[i] - 1; + } + + // Render last graph point + wpm_arr[i] = wpm; + + if (point_arr[i] != point_arr[i - 1]) { + oled_write_pixel(x + i, y - point_arr[i], true); + } +} + +/* + * Renders the caret. + */ +static void render_caret(void) { + uint8_t x = _GRAPH_X + _GRAPH_WIDTH + _GRAPH_RPAD + _CARET_WIDTH; + uint8_t y = 0; + uint8_t width = _CARET_WIDTH; + uint8_t height = _CARET_HEIGHT; + uint8_t g_width = _GRAPH_WIDTH; + uint8_t g_height = _GRAPH_HEIGHT; + + // Handle initial caret render + if (!is_initialized) { + y = g_height - point_arr[g_width - 1]; + + for (uint8_t i = 0; i < width; i++) { + for (uint8_t j = i; j < height - i; j++) { + oled_write_pixel(x - i, y - j, true); + } + } + return; + } + + // Handle caret updates and re-render + int8_t point_delta = point_arr[g_width - 1] - point_arr[g_width - 2]; + if (point_delta > 0) { + y = g_height - point_arr[g_width - 2]; + if (y - height + 1 > 0) { + for (uint8_t i = 0; i < width; i++) { + oled_write_pixel(x - i, y - i, false); + oled_write_pixel(x - i, y - height + i, true); + } + } + } else if (point_delta < 0) { + y = g_height - point_arr[g_width - 1]; + if (y - height + 1 > 0) { + for (uint8_t i = 0; i < width; i++) { + oled_write_pixel(x - i, y - height + i, false); + oled_write_pixel(x - i, y - i, true); + } + } + } +} + +/* + * Renders the axis. + */ +static void render_axis(void) { + uint8_t x = _AXIS_X; + uint8_t y = _AXIS_HEIGHT; + uint8_t width = _AXIS_WIDTH; + uint8_t height = _AXIS_HEIGHT; + uint8_t tick_width = _AXIS_TICK_WIDTH; + uint8_t subtick_width = _AXIS_SUBTICK_WIDTH; + uint8_t interval = _AXIS_INTERVAL; + uint8_t tick_interval = _AXIS_TICK_INTERVAL; + + for (uint8_t j = 0; j <= height; j += interval) { + uint8_t curr_tick_width = 0; + + // Determine tick width and draw extra point if at interval + if (j % tick_interval == 0) { + curr_tick_width = tick_width; + oled_write_pixel(x, y - j, true); + } else { + curr_tick_width = subtick_width; + } + + // Draw tick + for (uint8_t i = 0; i < curr_tick_width; i++) { + oled_write_pixel(x + width - i, y - j, true); + } + } +} + +/* + * Renders the input bar. + */ +static void render_bar(void) { + uint8_t x = _BAR_X; + uint8_t width = _BAR_WIDTH; + uint8_t height = _BAR_HEIGHT; + + // Increment bar height + bar_height = (bar_height + 1) % height; + + // When bar resets back to 0, clear bar pixels + if (bar_height % height == 0) { + for (uint8_t i = 0; i < width; i++) { + for (uint8_t j = 0; j < height; j++) { + oled_write_pixel(x + i, j, false); + } + } + } + + // Draw new bar pixels + for (uint8_t i = 0; i < width; i++) { + oled_write_pixel(x + i, height - bar_height, true); + } +} + +/* + * Renders the initial frame for all components. + */ +static void render_init(void) { + render_graph(0); + render_caret(); + render_matrix(NULL); + render_axis(); +} + +/* + * Initializes and resets the typehud. + */ +void typehud_init(void) { + // Reset variables + is_initialized = false; + timer = 0; + bar_height = -1; + + for (uint8_t i = 0; i < _GRAPH_WIDTH; i++) { + wpm_arr[i] = 0; + point_arr[i] = 0; + } + + // Draw the initial graph + for (uint8_t i = 0; i < _GRAPH_WIDTH; i++) { + oled_write_pixel(_GRAPH_X + i, _GRAPH_HEIGHT, true); + } +} + +/* + * Renders the typehud. + */ +void typehud_render(void) { + uint8_t wpm = get_current_wpm(); + + // Run initial rendering once + if (!is_initialized) { + render_init(); + is_initialized = true; + } + + // Render wpm + render_wpm(wpm); + + // Render next graph and caret frame when timer reaches refresh rate + if (timer_elapsed(timer) > _GRAPH_REFRESH) { + render_graph(wpm); + render_caret(); + timer = timer_read(); + } +} + +/* + * Handles keypresses for the typehud. + */ +void typehud_process_record(keyrecord_t *record) { + // For split keyboards, only draw on correct side +#ifdef SPLIT_KEYBOARD +# ifdef TYPEHUD_MASTER + if (!is_keyboard_master()) { +# else + if (is_keyboard_master()) { +# endif + return; + } +#endif + // Render/update matrix + render_matrix(record); + + // Render/update input bar on keypress + if (record->event.pressed) { + render_bar(); + } +} diff --git a/keyboards/nullbitsco/snap/keymaps/typehud/typehud.h b/keyboards/nullbitsco/snap/keymaps/typehud/typehud.h new file mode 100644 index 000000000000..c3ed876c422a --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/typehud/typehud.h @@ -0,0 +1,87 @@ +/* Copyright 2022 Chris Tanaka + * + * 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 + +// clang-format off +#define _OLED_WIDTH (OLED_DISPLAY_WIDTH - 1) +#define _OLED_HEIGHT (OLED_DISPLAY_HEIGHT - 1) + +#ifdef SPLIT_KEYBOARD +#define _PHYSICAL_PARTS 2 +#else +#define _PHYSICAL_PARTS 1 +#endif + +#ifdef TYPEHUD_MATRIX_ROWS +#define _NML_MATRIX_ROWS TYPEHUD_MATRIX_ROWS +#else +# ifdef SPLIT_KEYBOARD +#define _NML_MATRIX_ROWS (MATRIX_ROWS / 2) +# else +#define _NML_MATRIX_ROWS MATRIX_ROWS +# endif +#endif + +#ifdef TYPEHUD_MATRIX_COLS +#define _NML_MATRIX_COLS TYPEHUD_MATRIX_COLS +#else +#define _NML_MATRIX_COLS (MATRIX_COLS * _PHYSICAL_PARTS) +#endif + +#define _MATRIX_SIZE 2 +#if defined(TYPEHUD_MATRIX_ROTATE_90) || defined(TYPEHUD_MATRIX_ROTATE_270) +#define _MATRIX_WIDTH (_NML_MATRIX_ROWS * _MATRIX_SIZE + 2) +#define _MATRIX_HEIGHT (_NML_MATRIX_COLS * _MATRIX_SIZE + 2) +#else +#define _MATRIX_WIDTH (_NML_MATRIX_COLS * _MATRIX_SIZE + 2) +#define _MATRIX_HEIGHT (_NML_MATRIX_ROWS * _MATRIX_SIZE + 2) +#endif +#define _MATRIX_X 0 +#define _MATRIX_Y (_OLED_HEIGHT - _MATRIX_HEIGHT + 1) +#define _MATRIX_RPAD 2 +#define _MATRIX_PAD_WIDTH (_MATRIX_WIDTH + _MATRIX_RPAD) + +#define _BAR_WIDTH 3 +#define _BAR_HEIGHT _OLED_HEIGHT +#define _BAR_X (_OLED_WIDTH - _BAR_WIDTH) + +#define _AXIS_WIDTH 5 +#define _AXIS_HEIGHT _OLED_HEIGHT +#define _AXIS_TICK_WIDTH 3 +#define _AXIS_SUBTICK_WIDTH 2 +#define _AXIS_INTERVAL 3 +#define _AXIS_TICK_INTERVAL 15 +#define _AXIS_RPAD 2 +#define _AXIS_PAD_WIDTH (_AXIS_WIDTH + _AXIS_RPAD) +#define _AXIS_X (_OLED_WIDTH - _BAR_WIDTH - _AXIS_PAD_WIDTH) + +#define _CARET_WIDTH 3 +#define _CARET_HEIGHT 5 + +#define _GRAPH_RPAD 2 +#define _GRAPH_MAX_WIDTH (_OLED_WIDTH - _BAR_WIDTH - _AXIS_PAD_WIDTH - _CARET_WIDTH - _GRAPH_RPAD - _MATRIX_PAD_WIDTH) +#define _GRAPH_WIDTH (_GRAPH_MAX_WIDTH - 4) +#define _GRAPH_HEIGHT 31 +#define _GRAPH_REFRESH 300 +#define _GRAPH_X (_MATRIX_WIDTH + _MATRIX_RPAD) +#define _GRAPH_Y 0 +// clang-format on + +void + typehud_init(void), + typehud_render(void), + typehud_process_record(keyrecord_t *record); diff --git a/keyboards/nullbitsco/snap/keymaps/via/config.h b/keyboards/nullbitsco/snap/keymaps/via/config.h new file mode 100644 index 000000000000..578a939d5454 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 Jay Greco + * + * 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 . + */ +// clang-format off +#pragma once + +/* space savers */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/nullbitsco/snap/keymaps/via/keymap.c b/keyboards/nullbitsco/snap/keymaps/via/keymap.c new file mode 100644 index 000000000000..291c4c6f165c --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/via/keymap.c @@ -0,0 +1,59 @@ +/* Copyright 2021 Jay Greco + * + * 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 + +// clang-format off +enum layers { + _BASE, + _VIA1, + _VIA2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_ESC, 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_PSCR, KC_PAUS, + KC_F13, KC_GRV, 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_DEL, KC_HOME, + KC_F14, 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_F15, 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_F16, KC_LSFT, KC_NUHS, 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_F17, KC_LCTL, KC_LGUI, KC_LALT, MO(_VIA1), KC_SPC, KC_SPC, MO(_VIA1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_VIA1] = LAYOUT_all( + QK_BOOT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [_VIA2] = LAYOUT_all( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; +// clang-format on + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [_VIA1] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) }, + [_VIA2] = { ENCODER_CCW_CW(KC_NO, KC_NO), ENCODER_CCW_CW(KC_NO, KC_NO) } +}; +#endif diff --git a/keyboards/nullbitsco/snap/keymaps/via/rules.mk b/keyboards/nullbitsco/snap/keymaps/via/rules.mk new file mode 100644 index 000000000000..f1adcab005e8 --- /dev/null +++ b/keyboards/nullbitsco/snap/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/nullbitsco/snap/matrix.c b/keyboards/nullbitsco/snap/matrix.c new file mode 100644 index 000000000000..ceb9cd89841b --- /dev/null +++ b/keyboards/nullbitsco/snap/matrix.c @@ -0,0 +1,126 @@ +/* Copyright 2021 Jay Greco + * + * 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 +#include +#include +#include "util.h" +#include "matrix.h" +#include "split_util.h" +#include "quantum.h" + +#define VIRT_COLS_PER_HAND 1 +#define PHYS_COLS_PER_HAND (MATRIX_COLS - VIRT_COLS_PER_HAND) +#define ROWS_PER_HAND (MATRIX_ROWS / 2) +#define COL_SHIFTER ((uint32_t)1) +#define EXT_PIN_ROW 2 +#define EXT_PIN_COL 8 + +// Row & column pins +static uint8_t row_pins_left[MATRIX_ROWS] = MATRIX_ROW_PINS; +static uint8_t col_pins_left[MATRIX_MUX_COLS] = MATRIX_COL_MUX_PINS; +static uint8_t row_pins_right[MATRIX_ROWS] = MATRIX_ROW_PINS_RIGHT; +static uint8_t col_pins_right[MATRIX_MUX_COLS] = MATRIX_COL_MUX_PINS_RIGHT; +static uint8_t* row_pins = row_pins_left; +static uint8_t* col_pins = col_pins_left; + +// Internal functions +static void init_pins(void) { + // Set cols to outputs, low + for (uint8_t pin = 0; pin < MATRIX_MUX_COLS; pin++) { + setPinOutput(col_pins[pin]); + } + + // Unselect cols + for (uint8_t bit = 0; bit < MATRIX_MUX_COLS; bit++) { + writePinLow(col_pins[bit]); + } + + // Set rows to input, pullup + for (uint8_t pin = 0; pin < ROWS_PER_HAND; pin++) { + setPinInputHigh(row_pins[pin]); + } + + // Set extended pin (only on right side) + if (!isLeftHand) { + // Set extended pin to input, pullup + setPinInputHigh(MATRIX_EXT_PIN_RIGHT); + } +} + +static void select_col(uint8_t col) { + // Drive demux with correct column address + for (uint8_t bit = 0; bit < MATRIX_MUX_COLS; bit++) { + uint8_t state = (col & (0b1 << bit)) >> bit; + writePin(col_pins[bit], !state); + } +} + +static void read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { + select_col(current_col % PHYS_COLS_PER_HAND); + wait_us(5); + + // Read each row sequentially + for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) { + if (readPin(row_pins[row_index]) == 0) { + current_matrix[row_index] |= (COL_SHIFTER << current_col); + } else { + current_matrix[row_index] &= ~(COL_SHIFTER << current_col); + } + } +} + +static void read_ext_pin(matrix_row_t current_matrix[]) { + // Read the state of the extended matrix pin + if (!isLeftHand) { + if (readPin(MATRIX_EXT_PIN_RIGHT) == 0) { + current_matrix[EXT_PIN_ROW] |= (COL_SHIFTER << EXT_PIN_COL); + } else { + current_matrix[EXT_PIN_ROW] &= ~(COL_SHIFTER << EXT_PIN_COL); + } + } +} + +void matrix_init_custom(void) { + if (!isLeftHand) { + row_pins = row_pins_right; + col_pins = col_pins_right; + } + + init_pins(); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + matrix_row_t last_matrix[MATRIX_ROWS]; + memcpy(last_matrix, current_matrix, sizeof(last_matrix)); + + #ifdef DEBUG_SLOW_MATRIX + // Slow for debugging + wait_ms(1000); + #endif + + // Set col, read rows + for (uint8_t current_col = 0; current_col < PHYS_COLS_PER_HAND; current_col++) { + read_rows_on_col(current_matrix, current_col); + } + + // Read extended pin and store in matrix + read_ext_pin(current_matrix); + + // Check if the matrix changed + bool changed = memcmp(last_matrix, current_matrix, sizeof(last_matrix)) != 0; + + return changed; +} diff --git a/keyboards/nullbitsco/snap/readme.md b/keyboards/nullbitsco/snap/readme.md new file mode 100644 index 000000000000..e1b95faec6f8 --- /dev/null +++ b/keyboards/nullbitsco/snap/readme.md @@ -0,0 +1,26 @@ +# SNAP + +![SNAP](https://nullbits.co/static/img/snap10.jpg) + +A unique, tweakable split 75% keyboard kit built by nullbits. [More info at nullbits.co](https://nullbits.co/snap/) + +* Keyboard Maintainer: [Jay Greco](https://github.com/jaygreco) +* Hardware Supported: SNAP Rev1, Pro Micro comaptible MCUs. +* Hardware Availability: [nullbits.co](https://nullbits.co/) + +Note: If you are seeing issues with MacOS and keyboard hangs after sleep, make sure `NO_USB_STARTUP_CHECK = yes` is set in your rules.mk. + +Adds experimental "Remote Keyboard" functionality, which forwards keystrokes from an external macropad, keyboard, or numpad over UART/TRRS, removing the need for an additional USB connection. + +Make example for this keyboard (after setting up your build environment): + + make nullbitsco/snap:default + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical reset button**: Briefly press the reset button located near the MCU on the the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + +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/nullbitsco/snap/rules.mk b/keyboards/nullbitsco/snap/rules.mk new file mode 100644 index 000000000000..79ba7d6eb6fe --- /dev/null +++ b/keyboards/nullbitsco/snap/rules.mk @@ -0,0 +1,23 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # 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 = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes # Split common +LTO_ENABLE = yes # Use Link Time Optimization +ENCODER_ENABLE = yes # Enables the use of one or more encoders +SPACE_CADET_ENABLE = no # Enables the use of Space Cadet +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +CUSTOM_MATRIX = lite # Split custom matrix + +# Project specific files +SRC += common/bitc_led.c \ + common/remote_kb.c \ + matrix.c \ + uart.c diff --git a/keyboards/nullbitsco/snap/snap.c b/keyboards/nullbitsco/snap/snap.c new file mode 100644 index 000000000000..1ec6e5cf0095 --- /dev/null +++ b/keyboards/nullbitsco/snap/snap.c @@ -0,0 +1,127 @@ +/* Copyright 2021 Jay Greco + * + * 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 + +// Macro variables +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; +bool muted = false; + +void matrix_init_kb(void) { + set_bitc_LED(LED_OFF); + matrix_init_remote_kb(); + matrix_init_user(); +} + +void keyboard_post_init_kb(void) { + #ifdef CONSOLE_ENABLE + debug_enable = true; + debug_matrix = true; + #endif + keyboard_post_init_user(); +} + +void matrix_scan_kb(void) { + matrix_scan_remote_kb(); + matrix_scan_user(); + + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1000) { + unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } +} + +// Use Bit-C LED to show CAPS LOCK and NUM LOCK status +void led_update_ports(led_t led_state) { + set_bitc_LED(led_state.caps_lock ? LED_DIM : LED_OFF); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed + #ifdef CONSOLE_ENABLE + dprintf("kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time); + #endif + + process_record_remote_kb(keycode, record); + if (!process_record_user(keycode, record)) return false; + + switch (keycode) { + case QK_BOOT: + if (record->event.pressed) { + set_bitc_LED(LED_DIM); + #ifdef RGBLIGHT_ENABLE + rgblight_disable_noeeprom(); + #endif + #ifdef OLED_ENABLE + oled_off(); + #endif + bootloader_jump(); // jump to bootloader + } + return false; + + case DISC_MUTE: + if (record->event.pressed) { + tap_code(KC_F23); + #ifdef RGBLIGHT_ENABLE + if (!rgblight_is_enabled()) break; + + if (muted) { + rgblight_enable_noeeprom(); + } else { + rgblight_timer_disable(); + uint8_t val = rgblight_get_val(); + rgblight_sethsv_range(255, 255, val, 1, 5); + } + #endif + muted = !muted; + } + break; + + case SUPER_ALT_TAB: + if (record->event.pressed) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + + default: + break; + } + + return true; +} + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } + return true; +} +#endif diff --git a/keyboards/nullbitsco/snap/snap.h b/keyboards/nullbitsco/snap/snap.h new file mode 100644 index 000000000000..00dacc3d8f01 --- /dev/null +++ b/keyboards/nullbitsco/snap/snap.h @@ -0,0 +1,106 @@ +/* Copyright 2021 Jay Greco + * + * 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 _____ KC_NO + +#include "quantum.h" +#include "common/remote_kb.h" +#include "common/bitc_led.h" + +#ifdef VIA_ENABLE +enum custom_keycodes { + DISC_MUTE = QK_USER_0, + SUPER_ALT_TAB +}; +#else +enum custom_keycodes { + DISC_MUTE = SAFE_RANGE, + SUPER_ALT_TAB +}; +#endif + +// clang-format off +#define LAYOUT_all( \ + R1C7L, R1C6L, R1C5L, R1C4L, R1C3L, R1C2L, R1C1L, R1C8R, R1C7R, R1C6R, R1C5R, R1C4R, R1C3R, R1C2R, R1C1R, \ +R2C8L, R2C7L, R2C6L, R2C5L, R2C4L, R2C3L, R2C2L, R2C1L, R2C8R, R2C7R, R2C6R, R2C5R, R2C4R, R2C3R, R2C2R, R2C1R, R3CXR, \ +R3C8L, R3C7L, R3C6L, R3C5L, R3C4L, R3C3L, R3C1L, R3C8R, R3C7R, R3C6R, R3C5R, R3C4R, R3C3R, R3C2R, R4C1R, R3C1R, \ +R4C8L, R4C7L, R4C6L, R4C5L, R4C4L, R4C3L, R4C1L, R4C8R, R4C7R, R4C6R, R4C5R, R4C4R, R4C3R, R4C2R, R5C1R, \ +R5C8L, R5C7L, R5C6L, R5C5L, R5C4L, R5C3L, R5C2L, R5C1L, R5C8R, R5C7R, R5C6R, R5C5R, R5C4R, R5C3R, R5C2R, R6C1R, \ +R6C8L, R6C7L, R6C6L, R6C5L, R6C3L, R6C1L, R6C8R, R6C7R, R6C6R, R6C5R, R6C4R, R6C3R, R6C2R \ +) { \ + /* Left */ \ + {_____, R1C7L, R1C6L, R1C5L, R1C4L, R1C3L, R1C2L, R1C1L, _____}, \ + {R2C8L, R2C7L, R2C6L, R2C5L, R2C4L, R2C3L, R2C2L, R2C1L, _____}, \ + {R3C8L, R3C7L, R3C6L, R3C5L, R3C4L, R3C3L, _____, R3C1L, _____}, \ + {R4C8L, R4C7L, R4C6L, R4C5L, R4C4L, R4C3L, _____, R4C1L, _____}, \ + {R5C8L, R5C7L, R5C6L, R5C5L, R5C4L, R5C3L, R5C2L, R5C1L, _____}, \ + {R6C8L, R6C7L, R6C6L, R6C5L, _____, R6C3L, _____, R6C1L, _____}, \ + /* Right */ \ + {R1C8R, R1C7R, R1C6R, R1C5R, R1C4R, R1C3R, R1C2R, R1C1R, _____}, \ + {R2C8R, R2C7R, R2C6R, R2C5R, R2C4R, R2C3R, R2C2R, R2C1R, _____}, \ + {R3C8R, R3C7R, R3C6R, R3C5R, R3C4R, R3C3R, R3C2R, R3C1R, R3CXR}, \ + {R4C8R, R4C7R, R4C6R, R4C5R, R4C4R, R4C3R, R4C2R, R4C1R, _____}, \ + {R5C8R, R5C7R, R5C6R, R5C5R, R5C4R, R5C3R, R5C2R, R5C1R, _____}, \ + {R6C8R, R6C7R, R6C6R, R6C5R, R6C4R, R6C3R, R6C2R, R6C1R, _____} \ +} + +#define LAYOUT_iso( \ + R1C7L, R1C6L, R1C5L, R1C4L, R1C3L, R1C2L, R1C1L, R1C8R, R1C7R, R1C6R, R1C5R, R1C4R, R1C3R, R1C2R, R1C1R, \ +R2C8L, R2C7L, R2C6L, R2C5L, R2C4L, R2C3L, R2C2L, R2C1L, R2C8R, R2C7R, R2C6R, R2C5R, R2C4R, R2C3R, R2C2R, R3CXR, \ +R3C8L, R3C7L, R3C6L, R3C5L, R3C4L, R3C3L, R3C1L, R3C8R, R3C7R, R3C6R, R3C5R, R3C4R, R3C3R, R3C2R, R4C1R, R3C1R, \ +R4C8L, R4C7L, R4C6L, R4C5L, R4C4L, R4C3L, R4C1L, R4C8R, R4C7R, R4C6R, R4C5R, R4C4R, R4C3R, R4C2R, R5C1R, \ +R5C8L, R5C7L, R5C6L, R5C5L, R5C4L, R5C3L, R5C2L, R5C1L, R5C8R, R5C7R, R5C6R, R5C5R, R5C4R, R5C3R, R5C2R, R6C1R, \ +R6C8L, R6C7L, R6C6L, R6C5L, R6C3L, R6C1L, R6C8R, R6C7R, R6C6R, R6C5R, R6C4R, R6C3R, R6C2R \ +) { /* Left */ \ + {_____, R1C7L, R1C6L, R1C5L, R1C4L, R1C3L, R1C2L, R1C1L, _____}, \ + {R2C8L, R2C7L, R2C6L, R2C5L, R2C4L, R2C3L, R2C2L, R2C1L, _____}, \ + {R3C8L, R3C7L, R3C6L, R3C5L, R3C4L, R3C3L, _____, R3C1L, _____}, \ + {R4C8L, R4C7L, R4C6L, R4C5L, R4C4L, R4C3L, _____, R4C1L, _____}, \ + {R5C8L, R5C7L, R5C6L, R5C5L, R5C4L, R5C3L, R5C2L, R5C1L ,_____}, \ + {R6C8L, R6C7L, R6C6L, R6C5L, _____, R6C3L, _____, R6C1L, _____}, \ + /* Right */ \ + {R1C8R, R1C7R, R1C6R, R1C5R, R1C4R, R1C3R, R1C2R, R1C1R, _____}, \ + {R2C8R, R2C7R, R2C6R, R2C5R, R2C4R, R2C3R, R2C2R, _____, _____}, \ + {R3C8R, R3C7R, R3C6R, R3C5R, R3C4R, R3C3R, R3C2R, R3C1R, R3CXR}, \ + {R4C8R, R4C7R, R4C6R, R4C5R, R4C4R, R4C3R, R4C2R, R4C1R, _____}, \ + {R5C8R, R5C7R, R5C6R, R5C5R, R5C4R, R5C3R, R5C2R, R5C1R, _____}, \ + {R6C8R, R6C7R, R6C6R, R6C5R, R6C4R, R6C3R, R6C2R, R6C1R, _____} \ +} + +#define LAYOUT_ansi( \ + R1C7L, R1C6L, R1C5L, R1C4L, R1C3L, R1C2L, R1C1L, R1C8R, R1C7R, R1C6R, R1C5R, R1C4R, R1C3R, R1C2R, R1C1R, \ +R2C8L, R2C7L, R2C6L, R2C5L, R2C4L, R2C3L, R2C2L, R2C1L, R2C8R, R2C7R, R2C6R, R2C5R, R2C4R, R2C3R, R2C2R, R3CXR, \ +R3C8L, R3C7L, R3C6L, R3C5L, R3C4L, R3C3L, R3C1L, R3C8R, R3C7R, R3C6R, R3C5R, R3C4R, R3C3R, R3C2R, R4C1R, R3C1R, \ +R4C8L, R4C7L, R4C6L, R4C5L, R4C4L, R4C3L, R4C1L, R4C8R, R4C7R, R4C6R, R4C5R, R4C4R, R4C3R, R4C2R, R5C1R, \ +R5C8L, R5C7L, R5C5L, R5C4L, R5C3L, R5C2L, R5C1L, R5C8R, R5C7R, R5C6R, R5C5R, R5C4R, R5C3R, R5C2R, R6C1R, \ +R6C8L, R6C7L, R6C6L, R6C5L, R6C3L, R6C1L, R6C8R, R6C7R, R6C6R, R6C5R, R6C4R, R6C3R, R6C2R \ +) { /* Left */ \ + {_____, R1C7L, R1C6L, R1C5L, R1C4L, R1C3L, R1C2L, R1C1L, _____}, \ + {R2C8L, R2C7L, R2C6L, R2C5L, R2C4L, R2C3L, R2C2L, R2C1L, _____}, \ + {R3C8L, R3C7L, R3C6L, R3C5L, R3C4L, R3C3L, _____, R3C1L, _____}, \ + {R4C8L, R4C7L, R4C6L, R4C5L, R4C4L, R4C3L, _____, R4C1L, _____}, \ + {R5C8L, R5C7L, _____, R5C5L, R5C4L, R5C3L, R5C2L, R5C1L, _____}, \ + {R6C8L, R6C7L, R6C6L, R6C5L, _____, R6C3L, _____, R6C1L, _____}, \ + /* Right */ \ + {R1C8R, R1C7R, R1C6R, R1C5R, R1C4R, R1C3R, R1C2R, R1C1R, _____}, \ + {R2C8R, R2C7R, R2C6R, R2C5R, R2C4R, R2C3R, R2C2R, _____, _____}, \ + {R3C8R, R3C7R, R3C6R, R3C5R, R3C4R, R3C3R, R3C2R, R3C1R, R3CXR}, \ + {R4C8R, R4C7R, R4C6R, R4C5R, R4C4R, R4C3R, R4C2R, R4C1R, _____}, \ + {R5C8R, R5C7R, R5C6R, R5C5R, R5C4R, R5C3R, R5C2R, R5C1R, _____}, \ + {R6C8R, R6C7R, R6C6R, R6C5R, R6C4R, R6C3R, R6C2R, R6C1R, _____} \ +} +// clang-format on From d3008110096db2ac098db9b5cb47ad77582c01d9 Mon Sep 17 00:00:00 2001 From: HorrorTroll Date: Mon, 3 Apr 2023 05:24:04 +0700 Subject: [PATCH 14/73] Add user horrortroll in userspace (#19769) --- keyboards/gopolar/gg86/gg86.c | 63 +++- .../gopolar/gg86/keymaps/bongocat/keymap.c | 111 +------ .../gopolar/gg86/keymaps/bongocat/readme.md | 2 - .../gopolar/gg86/keymaps/default/keymap.c | 111 +------ .../gopolar/gg86/keymaps/horrortroll/config.h | 52 --- .../gopolar/gg86/keymaps/horrortroll/keymap.c | 5 +- .../gg86/keymaps/horrortroll/keymap_stuff.h | 305 ------------------ .../keymaps/horrortroll/led/cool_diagonal.c | 22 -- .../keymaps/horrortroll/led/custom_gradient.c | 74 ----- .../led/flower_blooming/flower_blooming.h | 20 -- .../gg86/keymaps/horrortroll/led/kitt.c | 68 ---- .../rainbow_reactive_simple.h | 45 --- .../horrortroll/led/random_breath_rainbow.c | 55 ---- .../gg86/keymaps/horrortroll/readme.md | 12 - .../keymaps/horrortroll/rgb_matrix_user.inc | 17 - .../gopolar/gg86/keymaps/horrortroll/rules.mk | 3 - keyboards/gopolar/gg86/keymaps/via/keymap.c | 111 +------ .../pila87/keymaps/default/keymap.c | 26 +- .../pila87/keymaps/horrortroll/config.h | 26 -- .../pila87/keymaps/horrortroll/keymap.c | 33 +- .../led/flower_blooming/flower_blooming.c | 27 -- .../pila87/keymaps/horrortroll/led/kitt.c | 68 ---- .../pila87/keymaps/horrortroll/readme.md | 9 - .../pila87/keymaps/horrortroll/rules.mk | 3 - .../phage_studio/pila87/keymaps/via/keymap.c | 26 +- keyboards/phage_studio/pila87/pila87.c | 31 +- users/horrortroll/config.h | 64 ++++ .../horrortroll/horrortroll.c | 77 +---- users/horrortroll/horrortroll.h | 49 +++ .../horrortroll/led/cool_diagonal.c | 0 .../horrortroll/led/custom_gradient.c | 0 .../led/flower_blooming/flower_blooming.c | 0 .../led/flower_blooming/flower_blooming.h | 0 .../horrortroll/led/random_breath_rainbow.c | 0 .../horrortroll/readme.md | 15 +- .../horrortroll/rgb_matrix_user.inc | 2 - users/horrortroll/rules.mk | 6 + 37 files changed, 258 insertions(+), 1280 deletions(-) delete mode 100644 keyboards/gopolar/gg86/keymaps/horrortroll/config.h delete mode 100644 keyboards/gopolar/gg86/keymaps/horrortroll/keymap_stuff.h delete mode 100644 keyboards/gopolar/gg86/keymaps/horrortroll/led/cool_diagonal.c delete mode 100644 keyboards/gopolar/gg86/keymaps/horrortroll/led/custom_gradient.c delete mode 100644 keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.h delete mode 100644 keyboards/gopolar/gg86/keymaps/horrortroll/led/kitt.c delete mode 100644 keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h delete mode 100644 keyboards/gopolar/gg86/keymaps/horrortroll/led/random_breath_rainbow.c delete mode 100644 keyboards/gopolar/gg86/keymaps/horrortroll/readme.md delete mode 100644 keyboards/gopolar/gg86/keymaps/horrortroll/rgb_matrix_user.inc delete mode 100644 keyboards/gopolar/gg86/keymaps/horrortroll/rules.mk delete mode 100644 keyboards/phage_studio/pila87/keymaps/horrortroll/config.h delete mode 100644 keyboards/phage_studio/pila87/keymaps/horrortroll/led/flower_blooming/flower_blooming.c delete mode 100644 keyboards/phage_studio/pila87/keymaps/horrortroll/led/kitt.c delete mode 100644 keyboards/phage_studio/pila87/keymaps/horrortroll/readme.md delete mode 100644 keyboards/phage_studio/pila87/keymaps/horrortroll/rules.mk create mode 100644 users/horrortroll/config.h rename keyboards/phage_studio/pila87/keymaps/horrortroll/keymap_stuff.h => users/horrortroll/horrortroll.c (69%) create mode 100644 users/horrortroll/horrortroll.h rename {keyboards/phage_studio/pila87/keymaps => users}/horrortroll/led/cool_diagonal.c (100%) rename {keyboards/phage_studio/pila87/keymaps => users}/horrortroll/led/custom_gradient.c (100%) rename {keyboards/gopolar/gg86/keymaps => users}/horrortroll/led/flower_blooming/flower_blooming.c (100%) rename {keyboards/phage_studio/pila87/keymaps => users}/horrortroll/led/flower_blooming/flower_blooming.h (100%) rename {keyboards/phage_studio/pila87/keymaps => users}/horrortroll/led/random_breath_rainbow.c (100%) rename keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c => users/horrortroll/readme.md (55%) rename {keyboards/phage_studio/pila87/keymaps => users}/horrortroll/rgb_matrix_user.inc (89%) create mode 100644 users/horrortroll/rules.mk diff --git a/keyboards/gopolar/gg86/gg86.c b/keyboards/gopolar/gg86/gg86.c index 3e790cd61e65..814ee5ec3e46 100644 --- a/keyboards/gopolar/gg86/gg86.c +++ b/keyboards/gopolar/gg86/gg86.c @@ -1,4 +1,4 @@ -/* Copyright 2021 Gopolar +/* Copyright 2023 Gopolar * * 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 @@ -20,6 +20,11 @@ #include "lib/logo.h" #ifdef RGB_MATRIX_ENABLE + +#include +#include +#include + led_config_t g_led_config = { { { 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, NO_LED, 74, 73, 72 }, { 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71 }, @@ -50,6 +55,62 @@ led_config_t g_led_config = { { // Underglow (88 -> 99) 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 } }; + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case (LED_FLAG_UNDERGLOW): { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + } + break; + } + } + return false; + } + return process_record_user(keycode, record); +} + +bool rgb_matrix_indicators_kb(void) { + if (!rgb_matrix_indicators_user()) { + return false; + } + + HSV hsv = rgb_matrix_config.hsv; + uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); + hsv.h = time; + RGB rgb = hsv_to_rgb(hsv); + + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); + } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { + rgb_matrix_set_color(25, 0, 0, 0); + } + + if (host_keyboard_led_state().scroll_lock) { + rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); + } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { + rgb_matrix_set_color(73, 0, 0, 0); + } + return true; +} #endif #ifdef OLED_ENABLE diff --git a/keyboards/gopolar/gg86/keymaps/bongocat/keymap.c b/keyboards/gopolar/gg86/keymaps/bongocat/keymap.c index 454d346f1810..e0c17f868a71 100644 --- a/keyboards/gopolar/gg86/keymaps/bongocat/keymap.c +++ b/keyboards/gopolar/gg86/keymaps/bongocat/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 HorrorTroll +/* Copyright 2023 HorrorTroll * * 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 @@ -19,11 +19,6 @@ // OLED animation #include "oled/bongocat.h" -#include -#include - -#include - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -34,22 +29,6 @@ enum layer_names { _FN, }; -enum user_rgb_mode { - RGB_MODE_ALL, - RGB_MODE_KEYLIGHT, - RGB_MODE_UNDERGLOW, - RGB_MODE_NONE, -}; - -typedef union { - uint32_t raw; - struct { - uint8_t rgb_mode :8; - }; -} user_config_t; - -user_config_t user_config; - // enum layer_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -121,94 +100,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -void keyboard_post_init_user(void) { - user_config.raw = eeconfig_read_user(); - switch (user_config.rgb_mode) { - case RGB_MODE_ALL: - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - break; - case RGB_MODE_KEYLIGHT: - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_UNDERGLOW: - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_NONE: - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - break; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_KEYLIGHT; - } - break; - case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_UNDERGLOW; - } - break; - case (LED_FLAG_UNDERGLOW): { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_NONE; - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - user_config.rgb_mode = RGB_MODE_ALL; - } - break; - } - eeconfig_update_user(user_config.raw); - } - return false; - } - - return true; -} - -bool rgb_matrix_indicators_user(void) { - HSV hsv = rgb_matrix_config.hsv; - uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); - hsv.h = time; - RGB rgb = hsv_to_rgb(hsv); - - if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } - } else { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(25, 0, 0, 0); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(73, 0, 0, 0); - } - } - return false; -} - #ifdef OLED_ENABLE bool oled_task_user(void) { led_t led_usb_state = host_keyboard_led_state(); diff --git a/keyboards/gopolar/gg86/keymaps/bongocat/readme.md b/keyboards/gopolar/gg86/keymaps/bongocat/readme.md index 632f9c67e292..9e02220c4ce7 100644 --- a/keyboards/gopolar/gg86/keymaps/bongocat/readme.md +++ b/keyboards/gopolar/gg86/keymaps/bongocat/readme.md @@ -1,3 +1 @@ # Keymap with VIA and Bongo Cat on OLED - -Keymap is default 87 qwerty, with TKL 7u-spacebar layout diff --git a/keyboards/gopolar/gg86/keymaps/default/keymap.c b/keyboards/gopolar/gg86/keymaps/default/keymap.c index 1d043a95d852..e192d46a802e 100644 --- a/keyboards/gopolar/gg86/keymaps/default/keymap.c +++ b/keyboards/gopolar/gg86/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 Gopolar +/* Copyright 2023 Gopolar * * 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 @@ -19,11 +19,6 @@ // OLED animation #include "lib/wave.h" -#include -#include - -#include - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -31,22 +26,6 @@ // enum layer_names { }; -enum user_rgb_mode { - RGB_MODE_ALL, - RGB_MODE_KEYLIGHT, - RGB_MODE_UNDERGLOW, - RGB_MODE_NONE, -}; - -typedef union { - uint32_t raw; - struct { - uint8_t rgb_mode :8; - }; -} user_config_t; - -user_config_t user_config; - // enum layer_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -170,94 +149,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -void keyboard_post_init_user(void) { - user_config.raw = eeconfig_read_user(); - switch (user_config.rgb_mode) { - case RGB_MODE_ALL: - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - break; - case RGB_MODE_KEYLIGHT: - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_UNDERGLOW: - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_NONE: - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - break; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_KEYLIGHT; - } - break; - case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_UNDERGLOW; - } - break; - case (LED_FLAG_UNDERGLOW): { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_NONE; - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - user_config.rgb_mode = RGB_MODE_ALL; - } - break; - } - eeconfig_update_user(user_config.raw); - } - return false; - } - - return true; -} - -bool rgb_matrix_indicators_user(void) { - HSV hsv = rgb_matrix_config.hsv; - uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); - hsv.h = time; - RGB rgb = hsv_to_rgb(hsv); - - if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } - } else { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(25, 0, 0, 0); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(73, 0, 0, 0); - } - } - return false; -} - #ifdef OLED_ENABLE static void render_layer_info(void) { switch (get_highest_layer(layer_state)) { diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/config.h b/keyboards/gopolar/gg86/keymaps/horrortroll/config.h deleted file mode 100644 index 246f36bb94f4..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/config.h +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 DYNAMIC_KEYMAP_LAYER_COUNT 2 -#define NO_ACTION_ONESHOT - -#ifdef RGB_MATRIX_ENABLE - /* RGB Matrix effect */ - #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN - #undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT - #undef ENABLE_RGB_MATRIX_BAND_SAT - #undef ENABLE_RGB_MATRIX_BAND_VAL - #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT - #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL - #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT - #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL - #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN - #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON - #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL - #undef ENABLE_RGB_MATRIX_DUAL_BEACON - #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON - #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS - #undef ENABLE_RGB_MATRIX_RAINDROPS - #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS - #undef ENABLE_RGB_MATRIX_HUE_WAVE - #undef ENABLE_RGB_MATRIX_PIXEL_RAIN - - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS - #undef ENABLE_RGB_MATRIX_SPLASH - #undef ENABLE_RGB_MATRIX_SOLID_SPLASH - #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -#endif diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c b/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c index 65d473639d08..fc725ad3f0a2 100644 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c +++ b/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 HorrorTroll +/* Copyright 2023 HorrorTroll * * 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 @@ -16,7 +16,8 @@ #include QMK_KEYBOARD_H -#include "keymap_stuff.h" +#include "horrortroll.h" +#include "oled/oled_stuff.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/keymap_stuff.h b/keyboards/gopolar/gg86/keymaps/horrortroll/keymap_stuff.h deleted file mode 100644 index 9003cd5e6b0c..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/keymap_stuff.h +++ /dev/null @@ -1,305 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 "oled/oled_stuff.h" -#include -#include - -#include - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. - -enum layer_names { - _BASE, - _FN, -}; - -// For CUSTOM_GRADIENT -HSV gradient_0 = {205, 250, 255}; -HSV gradient_100 = {140, 215, 125}; -bool reflected_gradient = false; -uint8_t gp_i = 0; - -typedef struct { - HSV gradient_0; - HSV gradient_1; - bool reflected; -} CUSTOM_PRESETS; - -enum user_rgb_mode { - RGB_MODE_ALL, - RGB_MODE_KEYLIGHT, - RGB_MODE_UNDERGLOW, - RGB_MODE_NONE, -}; - -typedef union { - uint32_t raw; - struct { - uint8_t rgb_mode :8; - }; -} user_config_t; - -user_config_t user_config; - -enum layer_keycodes { - //Custom Gradient control keycode - G1_HUI = SAFE_RANGE, //Custom gradient color 1 hue increase - G1_HUD, //Custom gradient color 1 hue decrease - G1_SAI, //Custom gradient color 1 saturation increase - G1_SAD, //Custom gradient color 1 saturation decrease - G1_VAI, //Custom gradient color 1 value increase - G1_VAD, //Custom gradient color 1 value decrease - G2_HUI, //Custom gradient color 2 hue increase - G2_HUD, //Custom gradient color 2 hue decrease - G2_SAI, //Custom gradient color 2 saturation increase - G2_SAD, //Custom gradient color 2 saturation decrease - G2_VAI, //Custom gradient color 2 value increase - G2_VAD, //Custom gradient color 2 value decrease - G_PRE, //Gradient presets - REF_G, //Toggle between linear and reflected gradient - G_FLIP, //Flip the gradient colors - - //Custom led effect keycode - RGB_C_E, //Cycle user effect -}; - -void keyboard_post_init_user(void) { - user_config.raw = eeconfig_read_user(); - switch (user_config.rgb_mode) { - case RGB_MODE_ALL: - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - break; - case RGB_MODE_KEYLIGHT: - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_UNDERGLOW: - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_NONE: - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - break; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - process_record_user_oled(keycode, record); - - uint8_t color_adj_step = 5; - - CUSTOM_PRESETS gradient_presets[] = { - {{41 , 255, 255}, {233, 245, 255}, false }, - {{45 , 245, 155}, {160, 255, 80}, false }, - {{173, 245, 40}, {41 , 255, 205}, true }, - {{32 , 255, 165}, {217, 185, 70}, false }, - {{240, 255, 145}, {115, 255, 245}, true }, - {{118, 255, 255}, {242, 255, 255}, false }, - {{212, 0 , 0}, {223, 235, 165}, true }, - {{205, 250, 255}, {140, 215, 125}, false }, - }; - - uint8_t gp_length = ARRAY_SIZE(gradient_presets); - - switch (keycode) { - case G1_HUI: - if (record->event.pressed) { - gradient_0.h += color_adj_step; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_HUD: - if (record->event.pressed) { - gradient_0.h -= color_adj_step; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_SAI: - if (record->event.pressed) { - gradient_0.s = (gradient_0.s + color_adj_step * 2 <= 255) ? gradient_0.s + color_adj_step * 2 : 255; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_SAD: - if (record->event.pressed) { - gradient_0.s = (gradient_0.s - color_adj_step * 2 >= 0) ? gradient_0.s - color_adj_step * 2 : 0; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_VAI: - if (record->event.pressed) { - gradient_0.v = (gradient_0.v + color_adj_step * 2 <= 255) ? gradient_0.v + color_adj_step * 2 : 255; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G1_VAD: - if (record->event.pressed) { - gradient_0.v = (gradient_0.v - color_adj_step * 2 >= 0) ? gradient_0.v - color_adj_step * 2 : 0; - dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v); - } - return false; - case G2_HUI: - if (record->event.pressed) { - gradient_100.h += color_adj_step; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_HUD: - if (record->event.pressed) { - gradient_100.h -= color_adj_step; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_SAI: - if (record->event.pressed) { - gradient_100.s = (gradient_100.s + color_adj_step * 2 <= 255) ? gradient_100.s + color_adj_step * 2 : 255; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_SAD: - if (record->event.pressed) { - gradient_100.s = (gradient_100.s - color_adj_step * 2 >= 0) ? gradient_100.s - color_adj_step * 2 : 0; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_VAI: - if (record->event.pressed) { - gradient_100.v = (gradient_100.v + color_adj_step * 2 <= 255) ? gradient_100.v + color_adj_step * 2 : 255; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G2_VAD: - if (record->event.pressed) { - gradient_100.v = (gradient_100.v - color_adj_step * 2 >= 0) ? gradient_100.v - color_adj_step * 2 : 0; - dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v); - } - return false; - case G_PRE: - if (record->event.pressed) { - gp_i = (gp_i + gp_length ) % gp_length; - - gradient_0 = gradient_presets[gp_i].gradient_0; - gradient_100 = gradient_presets[gp_i].gradient_1; - reflected_gradient = gradient_presets[gp_i].reflected; - - gp_i += 1; - } - return false; - case REF_G: - if (record->event.pressed) { - reflected_gradient = !reflected_gradient; - } - return false; - case G_FLIP: - if (record->event.pressed) { - HSV temp_color = gradient_0; - gradient_0 = gradient_100; - gradient_100 = temp_color; - } - return false; - case RGB_C_E: - if (record->event.pressed) { - switch (rgb_matrix_get_mode()) { - case RGB_MATRIX_CUSTOM_CUSTOM_GRADIENT: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_COOL_DIAGONAL); - return false; - case RGB_MATRIX_CUSTOM_COOL_DIAGONAL: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_FLOWER_BLOOMING); - return false; - case RGB_MATRIX_CUSTOM_FLOWER_BLOOMING: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_RAINBOW_REACTIVE_SIMPLE); - return false; - case RGB_MATRIX_CUSTOM_RAINBOW_REACTIVE_SIMPLE: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_KITT); - return false; - case RGB_MATRIX_CUSTOM_KITT: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_RANDOM_BREATH_RAINBOW); - return false; - default: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_CUSTOM_GRADIENT); - return false; - } - } - return false; - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_KEYLIGHT; - } - break; - case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_UNDERGLOW; - } - break; - case (LED_FLAG_UNDERGLOW): { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_NONE; - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - user_config.rgb_mode = RGB_MODE_ALL; - } - break; - } - eeconfig_update_user(user_config.raw); - } - return false; - } - - return true; -} - -bool rgb_matrix_indicators_user(void) { - HSV hsv = rgb_matrix_config.hsv; - uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); - hsv.h = time; - RGB rgb = hsv_to_rgb(hsv); - - if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } - } else { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(25, 0, 0, 0); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(73, 0, 0, 0); - } - } - return false; -} diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/cool_diagonal.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/cool_diagonal.c deleted file mode 100644 index 2c518a543102..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/cool_diagonal.c +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 . - */ - -static HSV COOL_DIAGONAL_math(HSV hsv, uint8_t i, uint8_t time) { - hsv.h = (g_led_config.point[i].x / 4) - g_led_config.point[i].y - time; - return hsv; -} - -bool COOL_DIAGONAL(effect_params_t* params) { return effect_runner_i(params, &COOL_DIAGONAL_math); } \ No newline at end of file diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/custom_gradient.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/custom_gradient.c deleted file mode 100644 index 951884b45698..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/custom_gradient.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 . - */ - -extern HSV gradient_0; -extern HSV gradient_100; -extern bool reflected_gradient; - -static HSV INTERPOLATE_HSV(float step, HSV gradient_0, HSV gradient_100) { - uint8_t cw, ccw; - HSV color; - - cw = (gradient_0.h >= gradient_100.h) ? 255 + gradient_100.h - gradient_0.h : gradient_100.h - gradient_0.h; // Hue range is 0 to 255. - ccw = (gradient_0.h >= gradient_100.h) ? gradient_0.h - gradient_100.h : 255 + gradient_0.h - gradient_100.h; - - if( cw < ccw ) { // going clockwise - color.h = gradient_0.h + (uint8_t)(step * cw); - } else { // Going counter clockwise - color.h = gradient_0.h - (uint8_t)(step * ccw); - } - - color.s = gradient_0.s + step * (gradient_100.s - gradient_0.s); - - // Scale V with global RGB Matrix's V, so users can still control overall brightness with RGB_VAI & RGB_VAD0 - color.v = round((gradient_0.v + step * (gradient_100.v - gradient_0.v)) * ((float)rgb_matrix_config.hsv.v / 255)); - - return color; -} - -static HSV CUSTOM_GRADIENT_math(uint8_t led_x, uint8_t min_x, uint8_t max_x) { - float step = (float)led_x / (max_x - min_x); - float mid_gradient_pos = 0.5; - - if( reflected_gradient ) { - if( step <= mid_gradient_pos ) { - return INTERPOLATE_HSV(step * (1/mid_gradient_pos), gradient_0, gradient_100); - } else { - return INTERPOLATE_HSV((step - mid_gradient_pos) * (1/(1-mid_gradient_pos)), gradient_100, gradient_0); - } - - } else { - return INTERPOLATE_HSV(step, gradient_0, gradient_100); - } -} - -static bool CUSTOM_GRADIENT(effect_params_t* params) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t min_x = 0; // X coordinate of the left-most LED - uint8_t max_x = 224; // X coordinate of the right-most LED - - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - - HSV hsv_orig = CUSTOM_GRADIENT_math(g_led_config.point[i].x, min_x, max_x); - RGB rgb = hsv_to_rgb(hsv_orig); - - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - - return led_max < RGB_MATRIX_LED_COUNT; -} \ No newline at end of file diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.h b/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.h deleted file mode 100644 index 941dab975a61..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -typedef HSV (*flower_blooming_f)(HSV hsv, uint8_t i, uint8_t time); - -bool effect_runner_bloom(effect_params_t* params, flower_blooming_f effect_func) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 10, 1)); - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - if (g_led_config.point[i].y > k_rgb_matrix_center.y) { - RGB bgr = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); - rgb_matrix_set_color(i, bgr.b, bgr.g, bgr.r); - } else { - RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - } - return rgb_matrix_check_finished_leds(led_max); -} diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/kitt.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/kitt.c deleted file mode 100644 index bfc32ce04075..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/kitt.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 . - */ - -// variable for startup animation -bool BASE_EFFECT_NOT_STARTED_YET = true; -uint8_t base_effect_startup_counter = 255; - -uint8_t led_count = 11; -uint8_t led_first = 41; - -static uint8_t time_to_led(uint8_t time, uint8_t led_behind) { - uint16_t led_time = led_count * time; - uint16_t step = ((2 * led_count + (led_time / 128)) - led_behind) % (2 * led_count); - uint8_t led; - - if (step < led_count) { - led = step; - } else { - led = led_count - 1 - (step - led_count); - } - - return led; -} - -static HSV KITT_math(HSV hsv, uint8_t i, uint8_t time) { - - // reset base effect startup - if (i == 0) { - BASE_EFFECT_NOT_STARTED_YET = true; - } - - hsv.h = 0; - hsv.s = 255; - - if (i >= led_first && i < led_first + led_count) { - uint8_t j = i - led_first; - if (j == time_to_led(time, 0)) { - hsv.v = hsv.v; - } else if (j == time_to_led(time, 1)) { - hsv.v = hsv.v/2; - } else if (j == time_to_led(time, 2)) { - hsv.v = hsv.v/4; - } else if (j == time_to_led(time, 3)) { - hsv.v = hsv.v/8; - } else { - hsv.v = 0; - } - } else { - hsv.v = 0; - } - - return hsv; -} - -bool KITT(effect_params_t* params) { return effect_runner_i(params, &KITT_math); } \ No newline at end of file diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h b/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h deleted file mode 100644 index 9fff344664e5..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 - -typedef HSV (*rainbow_reactive_f)(HSV hsv, uint8_t i, uint8_t time, uint16_t offset); - -bool effect_rainbow_reactive(effect_params_t* params, rainbow_reactive_f effect_func) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); - uint16_t max_tick = 65535 / rgb_matrix_config.speed; - - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - uint16_t tick = max_tick; - - // Reverse search to find most recent key hit - for (int8_t j = g_last_hit_tracker.count - 1; j >= 0; j--) { - if (g_last_hit_tracker.index[j] == i && g_last_hit_tracker.tick[j] < tick) { - tick = g_last_hit_tracker.tick[j]; - break; - } - } - - uint16_t offset = scale16by8(tick, rgb_matrix_config.speed); - RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time, offset)); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - - return led_max < RGB_MATRIX_LED_COUNT; -} \ No newline at end of file diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/random_breath_rainbow.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/random_breath_rainbow.c deleted file mode 100644 index b5ffef665f87..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/random_breath_rainbow.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * 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 . - */ - -static uint8_t offset[RGB_MATRIX_LED_COUNT]; - -static void doRandom_breath_rainbow(int i, effect_params_t* params) { - if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return; - uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 6); - - if (rand() * 50 == 1) { - if (rand() * 2 == 1) { - offset[i]++; - } - else { - offset[i]--; - } - } - - //float val = (((float)sin8(time + offset[i]) / 256)/2.1) + .05; - HSV hsv = {0, 255, 255}; - hsv.h = scale16by8(g_rgb_timer + offset[i], rgb_matrix_config.speed / 4) + (offset[i]*2); - hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); - RGB rgb = rgb_matrix_hsv_to_rgb(hsv); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); -} - -bool RANDOM_BREATH_RAINBOW(effect_params_t* params) { - - if (!params->init) { - // Change one LED every tick, make sure speed is not 0 - doRandom_breath_rainbow(rand() % RGB_MATRIX_LED_COUNT, params); - return false; - } - - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - for (uint8_t i = led_min; i < led_max; i++) { - doRandom_breath_rainbow(i, params); - } - - return led_max < RGB_MATRIX_LED_COUNT; -} \ No newline at end of file diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/readme.md b/keyboards/gopolar/gg86/keymaps/horrortroll/readme.md deleted file mode 100644 index 363330e98f19..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/readme.md +++ /dev/null @@ -1,12 +0,0 @@ -# My personal keymap with VIA and custom LED / OLED - -Keymap is default 87 qwerty, with TKL 7u-spacebar layout - -It have new LED effect: - -- Custom gradient (ported from SirTimmyTimbit code [https://github.com/SirTimmyTimbit/customizable-gradient-effect-for-drop-alt]) -- Cool diagonal (ported from pleasuretek code [https://github.com/pleasuretek/qmk_firmware]) -- Flower Blooming -- Rainbow reactive simple -- Knight Rider (ported from jumper149 code [https://github.com/jumper149/qmk_firmware/blob/jumper149/keyboards/dztech/dz65rgb/keymaps/jumper149/]) -- Random breath rainbow (based from daed code [https://github.com/daed/qmk_firmware/blob/master/keyboards/massdrop/alt/keymaps/daed] and modify by me) diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/rgb_matrix_user.inc b/keyboards/gopolar/gg86/keymaps/horrortroll/rgb_matrix_user.inc deleted file mode 100644 index 7a319910275f..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/rgb_matrix_user.inc +++ /dev/null @@ -1,17 +0,0 @@ -RGB_MATRIX_EFFECT(CUSTOM_GRADIENT) -RGB_MATRIX_EFFECT(COOL_DIAGONAL) -RGB_MATRIX_EFFECT(FLOWER_BLOOMING) -RGB_MATRIX_EFFECT(RAINBOW_REACTIVE_SIMPLE) -RGB_MATRIX_EFFECT(KITT) -RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) - -#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -#include "led/custom_gradient.c" -#include "led/cool_diagonal.c" -#include "led/flower_blooming/flower_blooming.c" -#include "led/rainbow_reactive_simple/rainbow_reactive_simple.c" -#include "led/kitt.c" -#include "led/random_breath_rainbow.c" - -#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/rules.mk b/keyboards/gopolar/gg86/keymaps/horrortroll/rules.mk deleted file mode 100644 index d475530c871c..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -VIA_ENABLE = yes - -RGB_MATRIX_CUSTOM_USER = yes diff --git a/keyboards/gopolar/gg86/keymaps/via/keymap.c b/keyboards/gopolar/gg86/keymaps/via/keymap.c index 1d043a95d852..e192d46a802e 100644 --- a/keyboards/gopolar/gg86/keymaps/via/keymap.c +++ b/keyboards/gopolar/gg86/keymaps/via/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 Gopolar +/* Copyright 2023 Gopolar * * 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 @@ -19,11 +19,6 @@ // OLED animation #include "lib/wave.h" -#include -#include - -#include - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -31,22 +26,6 @@ // enum layer_names { }; -enum user_rgb_mode { - RGB_MODE_ALL, - RGB_MODE_KEYLIGHT, - RGB_MODE_UNDERGLOW, - RGB_MODE_NONE, -}; - -typedef union { - uint32_t raw; - struct { - uint8_t rgb_mode :8; - }; -} user_config_t; - -user_config_t user_config; - // enum layer_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -170,94 +149,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -void keyboard_post_init_user(void) { - user_config.raw = eeconfig_read_user(); - switch (user_config.rgb_mode) { - case RGB_MODE_ALL: - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - break; - case RGB_MODE_KEYLIGHT: - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_UNDERGLOW: - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - break; - case RGB_MODE_NONE: - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - break; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_KEYLIGHT; - } - break; - case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_UNDERGLOW; - } - break; - case (LED_FLAG_UNDERGLOW): { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - user_config.rgb_mode = RGB_MODE_NONE; - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - user_config.rgb_mode = RGB_MODE_ALL; - } - break; - } - eeconfig_update_user(user_config.raw); - } - return false; - } - - return true; -} - -bool rgb_matrix_indicators_user(void) { - HSV hsv = rgb_matrix_config.hsv; - uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); - hsv.h = time; - RGB rgb = hsv_to_rgb(hsv); - - if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } - } else { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(25, 0, 0, 0); - } - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b); - } else { - rgb_matrix_set_color(73, 0, 0, 0); - } - } - return false; -} - #ifdef OLED_ENABLE static void render_layer_info(void) { switch (get_highest_layer(layer_state)) { diff --git a/keyboards/phage_studio/pila87/keymaps/default/keymap.c b/keyboards/phage_studio/pila87/keymaps/default/keymap.c index f2de085ca6fc..10f01dbae51b 100644 --- a/keyboards/phage_studio/pila87/keymaps/default/keymap.c +++ b/keyboards/phage_studio/pila87/keymaps/default/keymap.c @@ -1,5 +1,5 @@ -/* Copyright 2022 Phage Studio - * Copyright 2022 HorrorTroll +/* Copyright 2023 Phage Studio + * Copyright 2023 HorrorTroll * * 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 @@ -151,25 +151,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - } - break; - } - } - return false; - } - return true; -} diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/config.h b/keyboards/phage_studio/pila87/keymaps/horrortroll/config.h deleted file mode 100644 index 04ddd591a588..000000000000 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/config.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright 2022 HorrorTroll - * - * 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 - -/* Forcing to use NKRO instead 6KRO */ -#define FORCE_NKRO - -#define DYNAMIC_KEYMAP_LAYER_COUNT 2 - -#ifdef RGB_MATRIX_ENABLE - #define RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE -#endif diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/keymap.c b/keyboards/phage_studio/pila87/keymaps/horrortroll/keymap.c index 5528e2805547..28de8ad449b5 100644 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/keymap.c +++ b/keyboards/phage_studio/pila87/keymaps/horrortroll/keymap.c @@ -16,7 +16,7 @@ #include QMK_KEYBOARD_H -#include "keymap_stuff.h" +#include "horrortroll.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -55,8 +55,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS, KC_GRV, 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_INS, KC_HOME, KC_PGUP, 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_DEL, KC_END, KC_PGDN, - 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_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_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), @@ -86,3 +86,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI ), }; + +#ifdef RGB_MATRIX_ENABLE + +#include +#include +#include + +bool rgb_matrix_indicators_user(void) { + HSV hsv = rgb_matrix_config.hsv; + uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); + hsv.h = time; + RGB rgb = hsv_to_rgb(hsv); + + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(40, rgb.r, rgb.g, rgb.b); + } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { + rgb_matrix_set_color(40, 0, 0, 0); + } + + if (host_keyboard_led_state().scroll_lock) { + rgb_matrix_set_color(89, rgb.r, rgb.g, rgb.b); + } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { + rgb_matrix_set_color(89, 0, 0, 0); + } + return false; +} +#endif diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/flower_blooming/flower_blooming.c b/keyboards/phage_studio/pila87/keymaps/horrortroll/led/flower_blooming/flower_blooming.c deleted file mode 100644 index add83149ccc5..000000000000 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/flower_blooming/flower_blooming.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2022 HorrorTroll - * - * 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 "led/flower_blooming/flower_blooming.h" - -static HSV FLOWER_BLOOMING_math(HSV hsv, uint8_t i, uint8_t time) { - if (g_led_config.point[i].y > k_rgb_matrix_center.y) - hsv.h = g_led_config.point[i].x * 3 - g_led_config.point[i].y * 3 + time; - else - hsv.h = g_led_config.point[i].x * 3 - g_led_config.point[i].y * 3 - time; - return hsv; -} - -bool FLOWER_BLOOMING(effect_params_t* params) { return effect_runner_bloom(params, &FLOWER_BLOOMING_math); } diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/kitt.c b/keyboards/phage_studio/pila87/keymaps/horrortroll/led/kitt.c deleted file mode 100644 index 432eb117f2f8..000000000000 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/kitt.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright 2022 HorrorTroll - * - * 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 . - */ - -// variable for startup animation -bool BASE_EFFECT_NOT_STARTED_YET = true; -uint8_t base_effect_startup_counter = 255; - -uint8_t led_count = 11; -uint8_t led_first = 29; - -static uint8_t time_to_led(uint8_t time, uint8_t led_behind) { - uint16_t led_time = led_count * time; - uint16_t step = ((2 * led_count + (led_time / 128)) - led_behind) % (2 * led_count); - uint8_t led; - - if (step < led_count) { - led = step; - } else { - led = led_count - 1 - (step - led_count); - } - - return led; -} - -static HSV KITT_math(HSV hsv, uint8_t i, uint8_t time) { - - // reset base effect startup - if (i == 0) { - BASE_EFFECT_NOT_STARTED_YET = true; - } - - hsv.h = 0; - hsv.s = 255; - - if (i >= led_first && i < led_first + led_count) { - uint8_t j = i - led_first; - if (j == time_to_led(time, 0)) { - hsv.v = hsv.v; - } else if (j == time_to_led(time, 1)) { - hsv.v = hsv.v/2; - } else if (j == time_to_led(time, 2)) { - hsv.v = hsv.v/4; - } else if (j == time_to_led(time, 3)) { - hsv.v = hsv.v/8; - } else { - hsv.v = 0; - } - } else { - hsv.v = 0; - } - - return hsv; -} - -bool KITT(effect_params_t* params) { return effect_runner_i(params, &KITT_math); } diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/readme.md b/keyboards/phage_studio/pila87/keymaps/horrortroll/readme.md deleted file mode 100644 index 8e0d1974faa9..000000000000 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# My personal keymap with VIA and custom LED - -### Custom LED effect list: - -- Custom gradient ([ported from SirTimmyTimbit code](https://github.com/SirTimmyTimbit/customizable-gradient-effect-for-drop-alt)) -- Cool diagonal ([ported from pleasuretek code](https://github.com/pleasuretek/qmk_firmware)) -- Flower Blooming -- Knight Rider ([ported from jumper149 code](https://github.com/jumper149/qmk_firmware/blob/jumper149/keyboards/dztech/dz65rgb/keymaps/jumper149/)) -- Random breath rainbow ([based from daed code](https://github.com/daed/qmk_firmware/blob/master/keyboards/massdrop/alt/keymaps/daed) and modify by me) diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/rules.mk b/keyboards/phage_studio/pila87/keymaps/horrortroll/rules.mk deleted file mode 100644 index d475530c871c..000000000000 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -VIA_ENABLE = yes - -RGB_MATRIX_CUSTOM_USER = yes diff --git a/keyboards/phage_studio/pila87/keymaps/via/keymap.c b/keyboards/phage_studio/pila87/keymaps/via/keymap.c index f2de085ca6fc..10f01dbae51b 100644 --- a/keyboards/phage_studio/pila87/keymaps/via/keymap.c +++ b/keyboards/phage_studio/pila87/keymaps/via/keymap.c @@ -1,5 +1,5 @@ -/* Copyright 2022 Phage Studio - * Copyright 2022 HorrorTroll +/* Copyright 2023 Phage Studio + * Copyright 2023 HorrorTroll * * 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 @@ -151,25 +151,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - } - break; - } - } - return false; - } - return true; -} diff --git a/keyboards/phage_studio/pila87/pila87.c b/keyboards/phage_studio/pila87/pila87.c index c379be228ea0..23304c03bbfc 100644 --- a/keyboards/phage_studio/pila87/pila87.c +++ b/keyboards/phage_studio/pila87/pila87.c @@ -1,5 +1,5 @@ -/* Copyright 2022 Phage Studio - * Copyright 2022 HorrorTroll +/* Copyright 2023 Phage Studio + * Copyright 2023 HorrorTroll * * 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 @@ -17,11 +17,12 @@ #include "pila87.h" +#ifdef RGB_MATRIX_ENABLE + #include #include #include -#ifdef RGB_MATRIX_ENABLE led_config_t g_led_config = { { { 75, NO_LED, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 }, { 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58 }, @@ -44,7 +45,28 @@ led_config_t g_led_config = { { 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, } }; -#endif + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + } + break; + } + } + return false; + } + return process_record_user(keycode, record); +} bool rgb_matrix_indicators_kb(void) { if (!rgb_matrix_indicators_user()) { @@ -63,3 +85,4 @@ bool rgb_matrix_indicators_kb(void) { } return true; } +#endif diff --git a/users/horrortroll/config.h b/users/horrortroll/config.h new file mode 100644 index 000000000000..50bc7da53784 --- /dev/null +++ b/users/horrortroll/config.h @@ -0,0 +1,64 @@ +/* Copyright 2023 HorrorTroll + * + * 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 + +/* Forcing to use NKRO instead 6KRO */ +#define FORCE_NKRO + +#define DYNAMIC_KEYMAP_LAYER_COUNT 2 + +#if defined(__arm__) + #ifdef RGB_MATRIX_ENABLE + #define RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE + #endif +#endif + +#if defined(__AVR_ATmega32U4__) + #define NO_ACTION_ONESHOT + + #ifdef RGB_MATRIX_ENABLE + /* RGB Matrix effect */ + #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN + #undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT + #undef ENABLE_RGB_MATRIX_BAND_SAT + #undef ENABLE_RGB_MATRIX_BAND_VAL + #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT + #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL + #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT + #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL + #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN + #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON + #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL + #undef ENABLE_RGB_MATRIX_DUAL_BEACON + #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON + #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS + #undef ENABLE_RGB_MATRIX_RAINDROPS + #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS + #undef ENABLE_RGB_MATRIX_HUE_WAVE + #undef ENABLE_RGB_MATRIX_PIXEL_RAIN + + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS + #undef ENABLE_RGB_MATRIX_SPLASH + #undef ENABLE_RGB_MATRIX_SOLID_SPLASH + #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + #endif +#endif diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/keymap_stuff.h b/users/horrortroll/horrortroll.c similarity index 69% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/keymap_stuff.h rename to users/horrortroll/horrortroll.c index e850ccfc2e51..1152b2cc9d06 100644 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/keymap_stuff.h +++ b/users/horrortroll/horrortroll.c @@ -1,4 +1,4 @@ -/* Copyright 2022 HorrorTroll +/* Copyright 2023 HorrorTroll * * 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 @@ -14,19 +14,9 @@ * along with this program. If not, see . */ -#include -#include -#include +#include "horrortroll.h" -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. - -enum layer_names { - _BASE, - _FN, -}; +#include "rgb_matrix.h" // For CUSTOM_GRADIENT HSV gradient_0 = {205, 250, 255}; @@ -40,28 +30,6 @@ typedef struct { bool reflected; } CUSTOM_PRESETS; -enum layer_keycodes { - //Custom Gradient control keycode - G1_HUI = SAFE_RANGE, //Custom gradient color 1 hue increase - G1_HUD, //Custom gradient color 1 hue decrease - G1_SAI, //Custom gradient color 1 saturation increase - G1_SAD, //Custom gradient color 1 saturation decrease - G1_VAI, //Custom gradient color 1 value increase - G1_VAD, //Custom gradient color 1 value decrease - G2_HUI, //Custom gradient color 2 hue increase - G2_HUD, //Custom gradient color 2 hue decrease - G2_SAI, //Custom gradient color 2 saturation increase - G2_SAD, //Custom gradient color 2 saturation decrease - G2_VAI, //Custom gradient color 2 value increase - G2_VAD, //Custom gradient color 2 value decrease - G_PRE, //Gradient presets - REF_G, //Toggle between linear and reflected gradient - G_FLIP, //Flip the gradient colors - - //Custom led effect keycode - RGB_C_E, //Cycle user effect -}; - bool process_record_user(uint16_t keycode, keyrecord_t *record) { uint8_t color_adj_step = 5; @@ -184,9 +152,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { rgb_matrix_mode(RGB_MATRIX_CUSTOM_FLOWER_BLOOMING); return false; case RGB_MATRIX_CUSTOM_FLOWER_BLOOMING: - rgb_matrix_mode(RGB_MATRIX_CUSTOM_KITT); - return false; - case RGB_MATRIX_CUSTOM_KITT: rgb_matrix_mode(RGB_MATRIX_CUSTOM_RANDOM_BREATH_RAINBOW); return false; default: @@ -195,42 +160,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } } return false; - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_set_color_all(0, 0, 0); - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - } - break; - } - } - return false; } return true; } - -bool rgb_matrix_indicators_user(void) { - HSV hsv = rgb_matrix_config.hsv; - uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1)); - hsv.h = time; - RGB rgb = hsv_to_rgb(hsv); - - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(40, rgb.r, rgb.g, rgb.b); - } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { - rgb_matrix_set_color(40, 0, 0, 0); - } - - if (host_keyboard_led_state().scroll_lock) { - rgb_matrix_set_color(89, rgb.r, rgb.g, rgb.b); - } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { - rgb_matrix_set_color(89, 0, 0, 0); - } - return false; -} diff --git a/users/horrortroll/horrortroll.h b/users/horrortroll/horrortroll.h new file mode 100644 index 000000000000..a251f74d6c08 --- /dev/null +++ b/users/horrortroll/horrortroll.h @@ -0,0 +1,49 @@ +/* Copyright 2023 HorrorTroll + * + * 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 "quantum.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +enum layer_names { + _BASE, + _FN, +}; + +enum custom_keycodes { + //Custom Gradient control keycode + G1_HUI = SAFE_RANGE, //Custom gradient color 1 hue increase + G1_HUD, //Custom gradient color 1 hue decrease + G1_SAI, //Custom gradient color 1 saturation increase + G1_SAD, //Custom gradient color 1 saturation decrease + G1_VAI, //Custom gradient color 1 value increase + G1_VAD, //Custom gradient color 1 value decrease + G2_HUI, //Custom gradient color 2 hue increase + G2_HUD, //Custom gradient color 2 hue decrease + G2_SAI, //Custom gradient color 2 saturation increase + G2_SAD, //Custom gradient color 2 saturation decrease + G2_VAI, //Custom gradient color 2 value increase + G2_VAD, //Custom gradient color 2 value decrease + G_PRE, //Gradient presets + REF_G, //Toggle between linear and reflected gradient + G_FLIP, //Flip the gradient colors + + //Custom led effect keycode + RGB_C_E, //Cycle user effect +}; diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/cool_diagonal.c b/users/horrortroll/led/cool_diagonal.c similarity index 100% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/led/cool_diagonal.c rename to users/horrortroll/led/cool_diagonal.c diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/custom_gradient.c b/users/horrortroll/led/custom_gradient.c similarity index 100% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/led/custom_gradient.c rename to users/horrortroll/led/custom_gradient.c diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.c b/users/horrortroll/led/flower_blooming/flower_blooming.c similarity index 100% rename from keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.c rename to users/horrortroll/led/flower_blooming/flower_blooming.c diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/flower_blooming/flower_blooming.h b/users/horrortroll/led/flower_blooming/flower_blooming.h similarity index 100% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/led/flower_blooming/flower_blooming.h rename to users/horrortroll/led/flower_blooming/flower_blooming.h diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/led/random_breath_rainbow.c b/users/horrortroll/led/random_breath_rainbow.c similarity index 100% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/led/random_breath_rainbow.c rename to users/horrortroll/led/random_breath_rainbow.c diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c b/users/horrortroll/readme.md similarity index 55% rename from keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c rename to users/horrortroll/readme.md index ce3fff8ec51e..420c9b098602 100644 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c +++ b/users/horrortroll/readme.md @@ -1,4 +1,4 @@ -/* Copyright 2021 HorrorTroll +/* Copyright 2023 HorrorTroll * * 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 @@ -14,12 +14,11 @@ * along with this program. If not, see . */ -#include "led/rainbow_reactive_simple/rainbow_reactive_simple.h" +# My personal keymap with custom LED -static HSV RAINBOW_REACTIVE_SIMPLE_math(HSV hsv, uint8_t i, uint8_t time, uint16_t offset) { - hsv.h = g_led_config.point[i].x - time; - hsv.v = scale8(255 - offset, hsv.v); - return hsv; -} +### Custom LED effect list: -bool RAINBOW_REACTIVE_SIMPLE(effect_params_t* params) { return effect_rainbow_reactive(params, &RAINBOW_REACTIVE_SIMPLE_math); } \ No newline at end of file +- Custom gradient ([ported from SirTimmyTimbit code](https://github.com/SirTimmyTimbit/customizable-gradient-effect-for-drop-alt)) +- Cool diagonal ([ported from pleasuretek code](https://github.com/pleasuretek/qmk_firmware)) +- Flower Blooming +- Random breath rainbow ([based from daed code](https://github.com/daed/qmk_firmware/blob/master/keyboards/massdrop/alt/keymaps/daed) and modify by me) diff --git a/keyboards/phage_studio/pila87/keymaps/horrortroll/rgb_matrix_user.inc b/users/horrortroll/rgb_matrix_user.inc similarity index 89% rename from keyboards/phage_studio/pila87/keymaps/horrortroll/rgb_matrix_user.inc rename to users/horrortroll/rgb_matrix_user.inc index 1e09e3f0c12d..08c608dc44a5 100644 --- a/keyboards/phage_studio/pila87/keymaps/horrortroll/rgb_matrix_user.inc +++ b/users/horrortroll/rgb_matrix_user.inc @@ -1,7 +1,6 @@ RGB_MATRIX_EFFECT(CUSTOM_GRADIENT) RGB_MATRIX_EFFECT(COOL_DIAGONAL) RGB_MATRIX_EFFECT(FLOWER_BLOOMING) -RGB_MATRIX_EFFECT(KITT) RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) #ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -9,7 +8,6 @@ RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW) #include "led/custom_gradient.c" #include "led/cool_diagonal.c" #include "led/flower_blooming/flower_blooming.c" -#include "led/kitt.c" #include "led/random_breath_rainbow.c" #endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/users/horrortroll/rules.mk b/users/horrortroll/rules.mk new file mode 100644 index 000000000000..579f5fd38b64 --- /dev/null +++ b/users/horrortroll/rules.mk @@ -0,0 +1,6 @@ +VIA_ENABLE = yes +RGB_MATRIX_CUSTOM_USER = yes + +ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) + SRC += $(USER_PATH)/horrortroll.c +endif From ec83c0b1857b596c4b53186804bf4452831b3241 Mon Sep 17 00:00:00 2001 From: Woongbin Kang Date: Sun, 2 Apr 2023 20:05:48 -0400 Subject: [PATCH 15/73] Add recommendations for VSCode intellisense (#19402) --- docs/other_vscode.md | 53 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 10 deletions(-) diff --git a/docs/other_vscode.md b/docs/other_vscode.md index b3fb9948aa46..a10002570bd4 100644 --- a/docs/other_vscode.md +++ b/docs/other_vscode.md @@ -46,16 +46,7 @@ Before starting, you will want to make sure that you have all of the build tools This part is super simple. However, there is some configuration that we need to do to ensure things are configured correctly. -### Configuring VS Code - -First, we need to set up IntelliSense. This isn't strictly required, but it will make your life a LOT easier. To do this, we need to create the `.vscode/c_cpp_properties.json` file in the QMK Firmware folder, You can do this all manually, but I've done most of the work already. - -Grab [this file](https://gist.github.com/drashna/48e2c49ce877be592a1650f91f8473e8) and save it. You may need to edit this file, if you didn't install MSYS2 to the default location, or are using WSL/LxSS. - -Once you have saved this file, you will need to reload VS Code, if it was already running. - -?> You should see an `extensions.json` and `settings.json` file in the `.vscode` folder, as well. - +#### MSYS2 Setup Now, we will set up the MSYS2 window to show up in VSCode as the integrated terminal. This has a number of advantages. Mostly, you can control+click on errors and jump to those files. This makes debugging much easier. It's also nice, in that you don't have to jump to another window. @@ -110,8 +101,50 @@ This installs a bunch of Git related tools that may make using Git with QMK Firm Restart once you've installed any extensions # Configure VS Code for QMK + 1. Click File > Open Folder 2. Open the QMK Firmware folder that you cloned from GitHub. 3. Click File > Save Workspace As... +## Configuring VS Code + +Using the [standard `compile_commands.json` database](https://clang.llvm.org/docs/JSONCompilationDatabase.html), we can get VS code C/C++ extension to use the exact same includes and defines used for your keyboard and keymap. + +1. Run `qmk generate-compilation-database -kb -km ` to generate the `compile_commands.json`. +1. Create `.vscode/c_cpp_properties.json` with the following content: +``` +{ + "configurations": [ + { + "name": "qmk", + "compilerArgs": ["-mmcu=atmega32u4"], + "compilerPath": "/usr/bin/avr-gcc", + "cStandard": "gnu11", + "cppStandard": "gnu++14", + "compileCommands": "${workspaceFolder}/compile_commands.json", + "intelliSenseMode": "linux-gcc-arm", + "browse": { + "path": [ + "${workspaceFolder}" + ], + "limitSymbolsToIncludedHeaders": true, + "databaseFilename": "" + } + } + ], + "version": 4 +} +``` + +Change values in `.vscode/c_cpp_properties.json` for your environment: + +1. Copy the `-mmcu` argument from `compile_commands.json` into your `compilerArgs`. This is to work around a [bug in vscode c/c++ extension](https://github.com/microsoft/vscode-cpptools/issues/6478). +1. Use the `compilerPath` from `compile_commands.json`. +1. Modify `cStandard`, `cppStandard` and `intelliSenseMode` values to the correct values for your platform. See [this section](https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference#_configuration-properties) for reference. For WSL, it should still be gcc-x64. + And now you're ready to code QMK Firmware in VS Code + + +## Troubleshooting VSCode C/C++ extension + +If the defines are not matching what you expect, open the source code and run action `C/C++: Log Diagnostics`. This will list the exact list of defines and include paths defined in `compile_commands.json`, and if it's not part of your compilation database, it will tell you so. \ No newline at end of file From ac9f9f9efbd3d5f25fee64be4de7c525ebab8a70 Mon Sep 17 00:00:00 2001 From: andi4000 <3588439+andi4000@users.noreply.github.com> Date: Mon, 3 Apr 2023 02:06:40 +0200 Subject: [PATCH 16/73] ISO-DE Keymap for Dactyl Manuform 6x7 (#19441) --- .../6x7/keymaps/iso-de/config.h | 29 ++++++++++++++ .../6x7/keymaps/iso-de/keymap.c | 38 +++++++++++++++++++ .../6x7/keymaps/iso-de/readme.md | 19 ++++++++++ 3 files changed, 86 insertions(+) create mode 100644 keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/config.h create mode 100644 keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/keymap.c create mode 100644 keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/readme.md diff --git a/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/config.h b/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/config.h new file mode 100644 index 000000000000..7c0768a5ea64 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/config.h @@ -0,0 +1,29 @@ +/* +Copyright 2022 Yoga Benggolo + +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 + +#undef SOFT_SERIAL_PIN +#define SOFT_SERIAL_PIN D2 // Pin D2 is labeled with RX on the PCB + +// Refers to AVR Pins, not Arduino Pins +#undef MATRIX_COL_PINS +#undef MATRIX_ROW_PINS +#define MATRIX_COL_PINS { D0, D4, C6, D7, E6, B4, B5 } +#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3, B2, B6 } + diff --git a/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/keymap.c b/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/keymap.c new file mode 100644 index 000000000000..0e8436788e6f --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/keymap.c @@ -0,0 +1,38 @@ +// Copyright 2022 Yoga Benggolo +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum custom_layer { + _QWERTZ, + _RAISE, +}; + +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTZ] = LAYOUT_6x7( + KC_ESC , 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_HOME, + KC_GRV , 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_END , + XXXXXXX, 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, + RAISE , 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_NUHS, + KC_LCTL, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_MPLY, + KC_LEFT, KC_RGHT, KC_UP , KC_DOWN, + KC_SPC , KC_LSFT, KC_RALT, KC_ENT , + + KC_LGUI, KC_LALT, KC_BSPC, KC_DEL , + KC_PGDN, KC_PGUP, KC_TAB , KC_INS + ), + + [_RAISE] = LAYOUT_6x7( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_MPRV, KC_MNXT, KC_VOLU, KC_VOLD, + _______, _______, _______, _______, + + _______, _______, _______, _______, + _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/readme.md b/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/readme.md new file mode 100644 index 000000000000..735c3d8f3ac9 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/6x7/keymaps/iso-de/readme.md @@ -0,0 +1,19 @@ +# 6x7 Dactyl Manuform ISO-DE + +Hardware build log: [andi4000/dactyl-keyboard](https://github.com/andi4000/dactyl-keyboard) + +Please note the wiring differences with the default keymap in `config.h`. + + +## Layout + +![Dactyl Manuform 6x7 ISO-DE](https://i.imgur.com/LUlCGVd.png) + + +## Flashing + +To build firmware and flash afterwards: + + qmk flash -kb handwired/dactyl_manuform/6x7 -km iso-de + +Reset the keyboard when prompted to enter bootloader. From 15a106b1ef1bb760d6a48b2fd17bc0ed2606541a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Mart=C3=ADnez?= <58857054+elpekenin@users.noreply.github.com> Date: Mon, 3 Apr 2023 04:42:46 +0200 Subject: [PATCH 17/73] [Bugfix] Check QGF's bpp against display's native_bits_per_pixel (#19995) --- quantum/painter/qp_draw_image.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/quantum/painter/qp_draw_image.c b/quantum/painter/qp_draw_image.c index fa806172420b..073f1da8ebfd 100644 --- a/quantum/painter/qp_draw_image.c +++ b/quantum/painter/qp_draw_image.c @@ -273,6 +273,10 @@ static bool qp_drawimage_recolor_impl(painter_device_t device, uint16_t x, uint1 if (ret && output_state.pixel_write_pos > 0) { ret &= driver->driver_vtable->pixdata(device, qp_internal_global_pixdata_buffer, output_state.pixel_write_pos); } + } else if (frame_info->bpp != driver->native_bits_per_pixel) { + // Prevent stuff like drawing 24bpp images on 16bpp displays + qp_dprintf("Image's bpp doesn't match the target display's native_bits_per_pixel\n"); + return false; } else { // Set up the output state struct qp_internal_byte_output_state output_state = {.device = device, .byte_write_pos = 0, .max_bytes = qp_internal_num_pixels_in_buffer(device) * driver->native_bits_per_pixel / 8}; From 9152928f0205046a585a506596e276c53ff131a9 Mon Sep 17 00:00:00 2001 From: Torsten Schneider <83730717+to-schneider@users.noreply.github.com> Date: Mon, 3 Apr 2023 05:05:48 +0200 Subject: [PATCH 18/73] Adding my keymap (#19964) --- .../preonic/keymaps/to-schneider/keymap.c | 44 +++++++++++++++++++ .../preonic/keymaps/to-schneider/rules.mk | 2 + 2 files changed, 46 insertions(+) create mode 100644 keyboards/preonic/keymaps/to-schneider/keymap.c create mode 100644 keyboards/preonic/keymaps/to-schneider/rules.mk diff --git a/keyboards/preonic/keymaps/to-schneider/keymap.c b/keyboards/preonic/keymaps/to-schneider/keymap.c new file mode 100644 index 000000000000..41433901738c --- /dev/null +++ b/keyboards/preonic/keymaps/to-schneider/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2023 Torsten Schneider (@toschneider) + * + * 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_preonic_1x2uC( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, KC_LALT, KC_LGUI, KC_RALT, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [1] = LAYOUT_preonic_1x2uC( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO, KC_LBRC, KC_RBRC, KC_TRNS, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_LCBR, KC_RCBR, KC_TRNS, + KC_TRNS, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, + KC_TRNS, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_NO, KC_MINS, KC_EQL, KC_BSLS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT + ), + + [2] = LAYOUT_preonic_1x2uC( + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, LCA(KC_T), KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_TRNS, + KC_SLEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_NO, KC_NO, KC_CALC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT + ) +}; diff --git a/keyboards/preonic/keymaps/to-schneider/rules.mk b/keyboards/preonic/keymaps/to-schneider/rules.mk new file mode 100644 index 000000000000..dc1986915a15 --- /dev/null +++ b/keyboards/preonic/keymaps/to-schneider/rules.mk @@ -0,0 +1,2 @@ +AUDIO_ENABLE = no +RGBLIGHT_ENABLE = no From 1d1c407e4ecdd30e05c8f57ac456b0aeb700d1c9 Mon Sep 17 00:00:00 2001 From: Wilba Date: Mon, 3 Apr 2023 13:09:15 +1000 Subject: [PATCH 19/73] Update WT60-H1, WT60-H3 layouts (#20114) --- keyboards/wilba_tech/wt60_h1/config.h | 34 +--- keyboards/wilba_tech/wt60_h1/info.json | 84 +++++++++- .../wt60_h1/keymaps/default/keymap.c | 36 ++--- .../wilba_tech/wt60_h1/keymaps/via/keymap.c | 4 +- keyboards/wilba_tech/wt60_h1/wt60_h1.c | 17 -- keyboards/wilba_tech/wt60_h1/wt60_h1.h | 36 ----- keyboards/wilba_tech/wt60_h3/config.h | 34 +--- keyboards/wilba_tech/wt60_h3/info.json | 146 +++++++++--------- .../wt60_h3/keymaps/default/keymap.c | 34 ++-- .../wilba_tech/wt60_h3/keymaps/via/keymap.c | 4 +- keyboards/wilba_tech/wt60_h3/wt60_h3.c | 17 -- keyboards/wilba_tech/wt60_h3/wt60_h3.h | 35 ----- 12 files changed, 186 insertions(+), 295 deletions(-) delete mode 100644 keyboards/wilba_tech/wt60_h1/wt60_h1.c delete mode 100644 keyboards/wilba_tech/wt60_h1/wt60_h1.h delete mode 100644 keyboards/wilba_tech/wt60_h3/wt60_h3.c delete mode 100644 keyboards/wilba_tech/wt60_h3/wt60_h3.h diff --git a/keyboards/wilba_tech/wt60_h1/config.h b/keyboards/wilba_tech/wt60_h1/config.h index 32645266942d..793d8d8baf95 100644 --- a/keyboards/wilba_tech/wt60_h1/config.h +++ b/keyboards/wilba_tech/wt60_h1/config.h @@ -1,38 +1,8 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 . - */ +// Copyright 2023 Jason Williams (@wilba) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ -#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 } -#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } // D4, B7, B0 - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ diff --git a/keyboards/wilba_tech/wt60_h1/info.json b/keyboards/wilba_tech/wt60_h1/info.json index 928ea8ba8ab6..d037f73761d3 100644 --- a/keyboards/wilba_tech/wt60_h1/info.json +++ b/keyboards/wilba_tech/wt60_h1/info.json @@ -1,8 +1,8 @@ { - "keyboard_name": "WT60-H1", + "keyboard_name": "WT60-H1", "manufacturer": "wilba.tech", - "url": "https://wilba.tech", - "maintainer": "Wilba", + "url": "https://wilba.tech", + "maintainer": "Wilba", "usb": { "vid": "0x6582", "pid": "0x0024", @@ -10,10 +10,82 @@ }, "processor": "atmega32u4", "bootloader": "atmel-dfu", - "community_layouts": ["60_tsangan_hhkb"], + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["F0", "F1", "F4", "F6", "F7"], + "cols": ["F5", "D5", "B1", "B2", "B3", "D3", "D2", "C7", "C6", "B6", "B5", "B4", "D7", "D6"] + }, + "community_layouts": ["60_ansi_split_bs_rshift"], + "layout_aliases": { + "LAYOUT_all": "LAYOUT_60_ansi_split_bs_rshift" + }, "layouts": { - "LAYOUT_60_tsangan_hhkb": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + { "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "matrix": [0, 4], "x": 4.0, "y": 0.0 }, + { "matrix": [0, 5], "x": 5.0, "y": 0.0 }, + { "matrix": [0, 6], "x": 6.0, "y": 0.0 }, + { "matrix": [0, 7], "x": 7.0, "y": 0.0 }, + { "matrix": [0, 8], "x": 8.0, "y": 0.0 }, + { "matrix": [0, 9], "x": 9.0, "y": 0.0 }, + { "matrix": [0, 10], "x": 10.0, "y": 0.0 }, + { "matrix": [0, 11], "x": 11.0, "y": 0.0 }, + { "matrix": [0, 12], "x": 12.0, "y": 0.0 }, + { "matrix": [0, 13], "x": 13.0, "y": 0.0 }, + { "matrix": [2, 13], "x": 14.0, "y": 0.0 }, + { "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 }, + { "matrix": [1, 1], "x": 1.5, "y": 1.0 }, + { "matrix": [1, 2], "x": 2.5, "y": 1.0 }, + { "matrix": [1, 3], "x": 3.5, "y": 1.0 }, + { "matrix": [1, 4], "x": 4.5, "y": 1.0 }, + { "matrix": [1, 5], "x": 5.5, "y": 1.0 }, + { "matrix": [1, 6], "x": 6.5, "y": 1.0 }, + { "matrix": [1, 7], "x": 7.5, "y": 1.0 }, + { "matrix": [1, 8], "x": 8.5, "y": 1.0 }, + { "matrix": [1, 9], "x": 9.5, "y": 1.0 }, + { "matrix": [1, 10], "x": 10.5, "y": 1.0 }, + { "matrix": [1, 11], "x": 11.5, "y": 1.0 }, + { "matrix": [1, 12], "x": 12.5, "y": 1.0 }, + { "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1.0 }, + { "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 }, + { "matrix": [2, 1], "x": 1.75, "y": 2.0 }, + { "matrix": [2, 2], "x": 2.75, "y": 2.0 }, + { "matrix": [2, 3], "x": 3.75, "y": 2.0 }, + { "matrix": [2, 4], "x": 4.75, "y": 2.0 }, + { "matrix": [2, 5], "x": 5.75, "y": 2.0 }, + { "matrix": [2, 6], "x": 6.75, "y": 2.0 }, + { "matrix": [2, 7], "x": 7.75, "y": 2.0 }, + { "matrix": [2, 8], "x": 8.75, "y": 2.0 }, + { "matrix": [2, 9], "x": 9.75, "y": 2.0 }, + { "matrix": [2, 10], "x": 10.75, "y": 2.0 }, + { "matrix": [2, 11], "x": 11.75, "y": 2.0 }, + { "matrix": [2, 12], "w": 2.25, "x": 12.75, "y": 2.0 }, + { "matrix": [3, 0], "w": 2.25, "x": 0.0, "y": 3.0 }, + { "matrix": [3, 2], "x": 2.25, "y": 3.0 }, + { "matrix": [3, 3], "x": 3.25, "y": 3.0 }, + { "matrix": [3, 4], "x": 4.25, "y": 3.0 }, + { "matrix": [3, 5], "x": 5.25, "y": 3.0 }, + { "matrix": [3, 6], "x": 6.25, "y": 3.0 }, + { "matrix": [3, 7], "x": 7.25, "y": 3.0 }, + { "matrix": [3, 8], "x": 8.25, "y": 3.0 }, + { "matrix": [3, 9], "x": 9.25, "y": 3.0 }, + { "matrix": [3, 10], "x": 10.25, "y": 3.0 }, + { "matrix": [3, 11], "x": 11.25, "y": 3.0 }, + { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3.0 }, + { "matrix": [3, 13], "x": 14.0, "y": 3.0 }, + { "matrix": [4, 0], "w": 1.25, "x": 0.0, "y": 4.0 }, + { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4.0 }, + { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4.0 }, + { "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4.0 }, + { "matrix": [4, 10], "w": 1.25, "x": 10.0, "y": 4.0 }, + { "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4.0 }, + { "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4.0 }, + { "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4.0 } + ] } } } diff --git a/keyboards/wilba_tech/wt60_h1/keymaps/default/keymap.c b/keyboards/wilba_tech/wt60_h1/keymaps/default/keymap.c index 5635a1b3e9f5..0f4abc0bb102 100644 --- a/keyboards/wilba_tech/wt60_h1/keymaps/default/keymap.c +++ b/keyboards/wilba_tech/wt60_h1/keymaps/default/keymap.c @@ -1,52 +1,40 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 . - */ +// Copyright 2023 Jason Williams (@wilba) +// SPDX-License-Identifier: GPL-2.0-or-later + // Default layout for WT60-H1 #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Default layer - [0] = LAYOUT_60_tsangan_hhkb( + [0] = LAYOUT_all( 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_BSLS, KC_DEL, 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_BSPC, KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), - MO(1), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + MO(1), KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_RCTL), // Fn1 Layer - [1] = LAYOUT_60_tsangan_hhkb( + [1] = LAYOUT_all( 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_INS, KC_DEL, KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, 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), // Fn2 Layer - [2] = LAYOUT_60_tsangan_hhkb( + [2] = LAYOUT_all( 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), // Fn3 Layer - [3] = LAYOUT_60_tsangan_hhkb( + [3] = LAYOUT_all( 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), +}; \ No newline at end of file diff --git a/keyboards/wilba_tech/wt60_h1/keymaps/via/keymap.c b/keyboards/wilba_tech/wt60_h1/keymaps/via/keymap.c index 1f9d213f05db..7291ae849a03 100644 --- a/keyboards/wilba_tech/wt60_h1/keymaps/via/keymap.c +++ b/keyboards/wilba_tech/wt60_h1/keymaps/via/keymap.c @@ -1 +1,3 @@ -#include "../default/keymap.c" \ No newline at end of file +// Copyright 2023 Jason Williams (@wilba) +// SPDX-License-Identifier: GPL-2.0-or-later +#include "../default/keymap.c" diff --git a/keyboards/wilba_tech/wt60_h1/wt60_h1.c b/keyboards/wilba_tech/wt60_h1/wt60_h1.c deleted file mode 100644 index 5370394e15b5..000000000000 --- a/keyboards/wilba_tech/wt60_h1/wt60_h1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 "wt60_h1.h" diff --git a/keyboards/wilba_tech/wt60_h1/wt60_h1.h b/keyboards/wilba_tech/wt60_h1/wt60_h1.h deleted file mode 100644 index 89b90e7afc37..000000000000 --- a/keyboards/wilba_tech/wt60_h1/wt60_h1.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 ____ KC_NO - -// This is equivalent to LAYOUT_all -#define LAYOUT_60_tsangan_hhkb( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ - K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ - K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ - K400, K401, K402, K406, K411, K412, K413 \ -) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ - { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \ - { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ - { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, ____, K411, K412, K413 } \ -} diff --git a/keyboards/wilba_tech/wt60_h3/config.h b/keyboards/wilba_tech/wt60_h3/config.h index 32645266942d..793d8d8baf95 100644 --- a/keyboards/wilba_tech/wt60_h3/config.h +++ b/keyboards/wilba_tech/wt60_h3/config.h @@ -1,38 +1,8 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 . - */ +// Copyright 2023 Jason Williams (@wilba) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ -#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 } -#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } // D4, B7, B0 - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ diff --git a/keyboards/wilba_tech/wt60_h3/info.json b/keyboards/wilba_tech/wt60_h3/info.json index df002063a37c..57bb26c243a4 100644 --- a/keyboards/wilba_tech/wt60_h3/info.json +++ b/keyboards/wilba_tech/wt60_h3/info.json @@ -1,8 +1,8 @@ { - "keyboard_name": "WT60-H3", + "keyboard_name": "WT60-H3", "manufacturer": "wilba.tech", - "url": "https://wilba.tech", - "maintainer": "Wilba", + "url": "https://wilba.tech", + "maintainer": "Wilba", "usb": { "vid": "0x6582", "pid": "0x002C", @@ -10,78 +10,82 @@ }, "processor": "atmega32u4", "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["F0", "F1", "F4", "F6", "F7"], + "cols": ["F5", "D5", "B1", "B2", "B3", "D3", "D2", "C7", "C6", "B6", "B5", "B4", "D7", "D6"] + }, + "community_layouts": ["60_iso_split_bs_rshift"], "layout_aliases": { - "LAYOUT_all": "LAYOUT_60_iso_tsangan_split_rshift" + "LAYOUT_all": "LAYOUT_60_iso_split_bs_rshift" }, "layouts": { - "LAYOUT_60_iso_tsangan_split_rshift": { + "LAYOUT_60_iso_split_bs_rshift": { "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0, "w":2}, - - {"x":0, "y":1, "w":1.5}, - {"x":1.5, "y":1}, - {"x":2.5, "y":1}, - {"x":3.5, "y":1}, - {"x":4.5, "y":1}, - {"x":5.5, "y":1}, - {"x":6.5, "y":1}, - {"x":7.5, "y":1}, - {"x":8.5, "y":1}, - {"x":9.5, "y":1}, - {"x":10.5, "y":1}, - {"x":11.5, "y":1}, - {"x":12.5, "y":1}, - - {"x":0, "y":2, "w":1.75}, - {"x":1.75, "y":2}, - {"x":2.75, "y":2}, - {"x":3.75, "y":2}, - {"x":4.75, "y":2}, - {"x":5.75, "y":2}, - {"x":6.75, "y":2}, - {"x":7.75, "y":2}, - {"x":8.75, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":12.75, "y":2}, - {"x":13.75, "y":1, "w":1.25, "h":2}, - - {"x":0, "y":3, "w":1.25}, - {"x":1.25, "y":3}, - {"x":2.25, "y":3}, - {"x":3.25, "y":3}, - {"x":4.25, "y":3}, - {"x":5.25, "y":3}, - {"x":6.25, "y":3}, - {"x":7.25, "y":3}, - {"x":8.25, "y":3}, - {"x":9.25, "y":3}, - {"x":10.25, "y":3}, - {"x":11.25, "y":3}, - {"x":12.25, "y":3, "w":1.75}, - {"x":14, "y":3}, - - {"x":0, "y":4, "w":1.5}, - {"x":1.5, "y":4}, - {"x":2.5, "y":4, "w":1.5}, - {"x":4, "y":4, "w":7}, - {"x":11, "y":4, "w":1.5}, - {"x":12.5, "y":4}, - {"x":13.5, "y":4, "w":1.5} + { "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "matrix": [0, 4], "x": 4.0, "y": 0.0 }, + { "matrix": [0, 5], "x": 5.0, "y": 0.0 }, + { "matrix": [0, 6], "x": 6.0, "y": 0.0 }, + { "matrix": [0, 7], "x": 7.0, "y": 0.0 }, + { "matrix": [0, 8], "x": 8.0, "y": 0.0 }, + { "matrix": [0, 9], "x": 9.0, "y": 0.0 }, + { "matrix": [0, 10], "x": 10.0, "y": 0.0 }, + { "matrix": [0, 11], "x": 11.0, "y": 0.0 }, + { "matrix": [0, 12], "x": 12.0, "y": 0.0 }, + { "matrix": [0, 13], "x": 13.0, "y": 0.0 }, + { "matrix": [2, 13], "x": 14.0, "y": 0.0 }, + { "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 }, + { "matrix": [1, 1], "x": 1.5, "y": 1.0 }, + { "matrix": [1, 2], "x": 2.5, "y": 1.0 }, + { "matrix": [1, 3], "x": 3.5, "y": 1.0 }, + { "matrix": [1, 4], "x": 4.5, "y": 1.0 }, + { "matrix": [1, 5], "x": 5.5, "y": 1.0 }, + { "matrix": [1, 6], "x": 6.5, "y": 1.0 }, + { "matrix": [1, 7], "x": 7.5, "y": 1.0 }, + { "matrix": [1, 8], "x": 8.5, "y": 1.0 }, + { "matrix": [1, 9], "x": 9.5, "y": 1.0 }, + { "matrix": [1, 10], "x": 10.5, "y": 1.0 }, + { "matrix": [1, 11], "x": 11.5, "y": 1.0 }, + { "matrix": [1, 12], "x": 12.5, "y": 1.0 }, + { "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 }, + { "matrix": [2, 1], "x": 1.75, "y": 2.0 }, + { "matrix": [2, 2], "x": 2.75, "y": 2.0 }, + { "matrix": [2, 3], "x": 3.75, "y": 2.0 }, + { "matrix": [2, 4], "x": 4.75, "y": 2.0 }, + { "matrix": [2, 5], "x": 5.75, "y": 2.0 }, + { "matrix": [2, 6], "x": 6.75, "y": 2.0 }, + { "matrix": [2, 7], "x": 7.75, "y": 2.0 }, + { "matrix": [2, 8], "x": 8.75, "y": 2.0 }, + { "matrix": [2, 9], "x": 9.75, "y": 2.0 }, + { "matrix": [2, 10], "x": 10.75, "y": 2.0 }, + { "matrix": [2, 11], "x": 11.75, "y": 2.0 }, + { "matrix": [2, 12], "x": 12.75, "y": 2.0 }, + { "matrix": [1, 13], "w": 1.25, "h": 2.0, "x": 13.75, "y": 1.0 }, + { "matrix": [3, 0], "w": 1.25, "x": 0.0, "y": 3.0 }, + { "matrix": [3, 1], "x": 1.25, "y": 3.0 }, + { "matrix": [3, 2], "x": 2.25, "y": 3.0 }, + { "matrix": [3, 3], "x": 3.25, "y": 3.0 }, + { "matrix": [3, 4], "x": 4.25, "y": 3.0 }, + { "matrix": [3, 5], "x": 5.25, "y": 3.0 }, + { "matrix": [3, 6], "x": 6.25, "y": 3.0 }, + { "matrix": [3, 7], "x": 7.25, "y": 3.0 }, + { "matrix": [3, 8], "x": 8.25, "y": 3.0 }, + { "matrix": [3, 9], "x": 9.25, "y": 3.0 }, + { "matrix": [3, 10], "x": 10.25, "y": 3.0 }, + { "matrix": [3, 11], "x": 11.25, "y": 3.0 }, + { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3.0 }, + { "matrix": [3, 13], "x": 14.0, "y": 3.0 }, + { "matrix": [4, 0], "w": 1.25, "x": 0.0, "y": 4.0 }, + { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4.0 }, + { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4.0 }, + { "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4.0 }, + { "matrix": [4, 10], "w": 1.25, "x": 10.0, "y": 4.0 }, + { "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4.0 }, + { "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4.0 }, + { "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4.0 } ] } } diff --git a/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c b/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c index 19236e0a4500..e02b9c561b00 100644 --- a/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c +++ b/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c @@ -1,18 +1,6 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 . - */ +// Copyright 2023 Jason Williams (@wilba) +// SPDX-License-Identifier: GPL-2.0-or-later + // Default layout for WT60-H3 #include QMK_KEYBOARD_H @@ -20,33 +8,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Default layer [0] = LAYOUT_all( - 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_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_BSPC, 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_RCTL), // Fn1 Layer [1] = LAYOUT_all( - 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_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_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, 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), // Fn2 Layer [2] = LAYOUT_all( - 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, 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), // Fn3 Layer [3] = LAYOUT_all( - 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, 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/wilba_tech/wt60_h3/keymaps/via/keymap.c b/keyboards/wilba_tech/wt60_h3/keymaps/via/keymap.c index 1f9d213f05db..7291ae849a03 100644 --- a/keyboards/wilba_tech/wt60_h3/keymaps/via/keymap.c +++ b/keyboards/wilba_tech/wt60_h3/keymaps/via/keymap.c @@ -1 +1,3 @@ -#include "../default/keymap.c" \ No newline at end of file +// Copyright 2023 Jason Williams (@wilba) +// SPDX-License-Identifier: GPL-2.0-or-later +#include "../default/keymap.c" diff --git a/keyboards/wilba_tech/wt60_h3/wt60_h3.c b/keyboards/wilba_tech/wt60_h3/wt60_h3.c deleted file mode 100644 index a6c839b5a42c..000000000000 --- a/keyboards/wilba_tech/wt60_h3/wt60_h3.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 "wt60_h3.h" diff --git a/keyboards/wilba_tech/wt60_h3/wt60_h3.h b/keyboards/wilba_tech/wt60_h3/wt60_h3.h deleted file mode 100644 index 84ca69ffc261..000000000000 --- a/keyboards/wilba_tech/wt60_h3/wt60_h3.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2020 Jason Williams (Wilba) - * - * 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 ____ KC_NO - -#define LAYOUT_60_iso_tsangan_split_rshift( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \ - K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K113, \ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ - K400, K401, K402, K406, K411, K412, K413 \ -) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ - { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____ }, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ - { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, ____, K411, K412, K413 } \ -} From 2d7240f7303bcf5704750480ee619eca84312cd9 Mon Sep 17 00:00:00 2001 From: Sergey Vlasov Date: Mon, 3 Apr 2023 07:28:12 +0300 Subject: [PATCH 20/73] onekey: Fix console output on AVR (#19930) --- keyboards/handwired/onekey/keymaps/adc/keymap.c | 2 +- keyboards/handwired/onekey/keymaps/hardware_id/keymap.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/handwired/onekey/keymaps/adc/keymap.c b/keyboards/handwired/onekey/keymaps/adc/keymap.c index f9302a42b247..57125e01ed97 100644 --- a/keyboards/handwired/onekey/keymaps/adc/keymap.c +++ b/keyboards/handwired/onekey/keymaps/adc/keymap.c @@ -19,7 +19,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { char buffer[50]; sprintf(buffer, "ADC:%u\n", val); #ifdef CONSOLE_ENABLE - printf(buffer); + uprintf("%s", buffer); #else send_string(buffer); #endif diff --git a/keyboards/handwired/onekey/keymaps/hardware_id/keymap.c b/keyboards/handwired/onekey/keymaps/hardware_id/keymap.c index bcec8b3ca1b9..018b9215f87a 100644 --- a/keyboards/handwired/onekey/keymaps/hardware_id/keymap.c +++ b/keyboards/handwired/onekey/keymaps/hardware_id/keymap.c @@ -17,7 +17,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { char buffer[100]; sprintf(buffer, "ID:%lu:%lu:%lu:%lu\n", id.data[0], id.data[1], id.data[2], id.data[3]); #ifdef CONSOLE_ENABLE - printf(buffer); + uprintf("%s", buffer); #else send_string(buffer); #endif From fb6557acf1c5b3753034f8d25e738ae964ea0215 Mon Sep 17 00:00:00 2001 From: 3araht <69518343+3araht@users.noreply.github.com> Date: Mon, 3 Apr 2023 14:12:11 +0900 Subject: [PATCH 21/73] New layer added to giabalanai keyboard (#20118) --- keyboards/giabalanai/config.h | 18 ++--- keyboards/giabalanai/info.json | 12 +++ .../giabalanai/keymaps/2firmware/config.h | 16 ++++ keyboards/giabalanai/keymaps/3araht/keymap.c | 74 ++++++++++++------ .../keymaps/default_giabarinaix2/config.h | 16 ++++ .../keymaps/giabarinaix2led/config.h | 16 ++++ keyboards/giabalanai/keymaps/party/keymap.c | 75 ++++++++++++------- keyboards/giabalanai/keymaps/via/config.h | 16 ++++ keyboards/giabalanai/rules.mk | 10 --- 9 files changed, 183 insertions(+), 70 deletions(-) diff --git a/keyboards/giabalanai/config.h b/keyboards/giabalanai/config.h index 01e84b4cdd82..2a977decedd8 100644 --- a/keyboards/giabalanai/config.h +++ b/keyboards/giabalanai/config.h @@ -1,5 +1,5 @@ /* -Copyright 2020 3araht +Copyright 2023 3araht 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 @@ -36,16 +36,6 @@ along with this program. If not, see . /* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW -#define SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps - // Right side has to be the master since 1, LED data is output from right side, and 2, Audio pin is prepared on right side as a reserve. #define MASTER_RIGHT @@ -227,3 +217,9 @@ along with this program. If not, see . // #define NO_ACTION_TAPPING // NO_ACTION_ONESHOT -388 bytes #define NO_ACTION_ONESHOT +/* + * Encoder options + */ +#ifdef ENCODER_ENABLE +# define ENCODER_RESOLUTIONS_RIGHT { 4 } +#endif // ENCODER_ENABLE diff --git a/keyboards/giabalanai/info.json b/keyboards/giabalanai/info.json index 30bd26159f96..6b474f7398d9 100644 --- a/keyboards/giabalanai/info.json +++ b/keyboards/giabalanai/info.json @@ -8,10 +8,22 @@ "pid": "0xF4B0", "device_version": "0.0.1" }, + "features": { + "midi": true, + "extrakey": true, + "encoder": true, + "bootmagic": false, + "console": false, + "mousekey": false, + "nkro": false, + "rgblight": false, + "audio": false + }, "encoder": { "rotary": [] }, "split": { + "enabled": true, "soft_serial_pin": "D2", "encoder": { "right": { diff --git a/keyboards/giabalanai/keymaps/2firmware/config.h b/keyboards/giabalanai/keymaps/2firmware/config.h index a9c772adefe8..e5ec1d73e28a 100644 --- a/keyboards/giabalanai/keymaps/2firmware/config.h +++ b/keyboards/giabalanai/keymaps/2firmware/config.h @@ -1,3 +1,19 @@ +/* +Copyright 2023 3araht + +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 USE_MATRIX_I2C diff --git a/keyboards/giabalanai/keymaps/3araht/keymap.c b/keyboards/giabalanai/keymaps/3araht/keymap.c index b766d370589e..ca7be05088b5 100644 --- a/keyboards/giabalanai/keymaps/3araht/keymap.c +++ b/keyboards/giabalanai/keymaps/3araht/keymap.c @@ -58,17 +58,18 @@ user_config_t user_config; // Defines names for use in layer keycodes and the keymap enum layer_names { - _C_SYSTEM_BASE, // MIDI C-system - _FAKE_B_SYSTEM, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system. - _C_SYSTEM_BASS2ROW, // counter bass system - _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords. - _C_SYSTEM_FREEBASS, // C-system Free Bass + _C_SYSTEM_BASE, // MIDI C-system + _FAKE_B_SYSTEM, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system. + _C_SYSTEM_BASS2ROW, // counter bass system + _FAKE_B_SYSTEM_BASS2ROW, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system. Counter bass version. + _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords. + _C_SYSTEM_FREEBASS, // C-system Free Bass _CHROMATONE, - _CFLIP_BASS2ROW, // 180 degree flipped layout on right side keyboard + _CFLIP_BASS2ROW, // 180 degree flipped layout on right side keyboard _QWERTY, _COLEMAK, - _ADJUST, // for Fn keys, etc. - _FN // for changing layers, octaves, etc. + _ADJUST, // for Fn keys, etc. + _FN // for changing layers, octaves, etc. }; // Defines the keycodes used by our macros in process_record_user @@ -181,6 +182,7 @@ enum custom_keycodes { CSYSTEM, // C-SYSTEM layout BSYSTEM, // B-SYSTEM layout CNTBASC, // CouNTer BASs C-system layout + CNTBASB, // CouNTer BASs B-system layout CSYSALL, // C-SYStem ALL layout CSYSFBS, // C-SYStem Free BaSs CHRTONE, // CHRomaTONE layout @@ -240,6 +242,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MI_A2, MI_C3, MI_Eb3, MI_Fs3, MI_A3, MI_C4, MI_Eb4, MI_Fs4, MI_A4, MI_C5, MI_Eb5, MI_Fs5 ), + /* fake B-system */ + [_FAKE_B_SYSTEM_BASS2ROW] = LAYOUT( + MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, MI_CH_Csr, MI_CH_Gsr, MI_CH_Dsr, MI_CH_Asr, + MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, + MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs, + MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm, + MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7, + + MI_Ab2, + MI_A2, MI_C3, MI_Eb3, MI_Gb3, MI_A3, MI_C4, MI_Eb4, MI_Gb4, MI_A4, MI_C5, MI_Eb5, MI_Gb5, _______, + MI_G2, MI_Bb2, MI_Db3, MI_E3, MI_G3, MI_Bb3, MI_Db4, MI_E4, MI_G4, MI_Bb4, MI_Db5, MI_E5, MI_G5, + MI_Ab2, MI_B2, MI_D3, MI_F3, MI_Ab3, MI_B3, MI_D4, MI_F4, MI_Ab4, MI_B4, MI_D5, MI_F5 + ), + /* C-system entirely */ [_C_SYSTEM_ENTIRELY] = LAYOUT( MI_BNDU, XXXXXXX, XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db1, MI_E1, MI_G1, MI_Bb1, MI_Db2, @@ -340,7 +356,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Fn */ [_FN] = LAYOUT( - CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, + CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, CNTBASB, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, DF_QWER, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLMICH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -348,24 +364,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXXXXX, MI_OCN2, MI_OCN1, MI_OC0, MI_OC1, MI_OC2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EE_CLR, _______, - CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, MI_VELD, MI_VELU, XXXXXXX, RGB_TOG, + CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, CNTBASB, XXXXXXX, MI_VELD, MI_VELU, XXXXXXX, RGB_TOG, XXXXXXX, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLUVEL, MELDYAL, MELODYS, MELDYAH ) }; #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { - [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_FAKE_B_SYSTEM] = { ENCODER_CCW_CW(_______, _______) }, - [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, - [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) }, - [_C_SYSTEM_FREEBASS] = { ENCODER_CCW_CW(_______, _______) }, - [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) }, - [_CFLIP_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, - [_QWERTY] = { ENCODER_CCW_CW(_______, _______) }, - [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) }, - [_ADJUST] = { ENCODER_CCW_CW(_______, _______) }, - [_FN] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FAKE_B_SYSTEM] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_FAKE_B_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_FREEBASS] = { ENCODER_CCW_CW(_______, _______) }, + [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) }, + [_CFLIP_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_QWERTY] = { ENCODER_CCW_CW(_______, _______) }, + [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) }, + [_ADJUST] = { ENCODER_CCW_CW(_______, _______) }, + [_FN] = { ENCODER_CCW_CW(_______, _______) }, }; #endif @@ -383,7 +400,7 @@ const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, // Light up fn layer keys const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( // left keyboard - {0, 7, HSV_ORANGE}, // MIDI layouts + {0, 8, HSV_ORANGE}, // MIDI layouts {11, 1, HSV_RED}, // RGB_TOG {12, 1, HSV_WHITE}, // DF_QWER {13, 1, HSV_CORAL}, // TGLBASS @@ -410,15 +427,16 @@ const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( {53, 1, HSV_PINK}, #endif // right keyboard - {60, 7, HSV_ORANGE}, // MIDI layouts + {60, 8, HSV_ORANGE}, // MIDI layouts {74, 1, HSV_CORAL}, // TGLBASS {85, 1, HSV_BLUE}, // MIDI Oct {86, 1, HSV_CYAN}, // MIDI Oct {87, 1, HSV_SPRINGGREEN}, // MIDI Oct {88, 1, HSV_GREEN}, // MIDI Oct {89, 1, HSV_CHARTREUSE}, // MIDI Oct + {95, 1, HSV_GOLD}, // VERSION {96, 1, HSV_PINK}, // EE_CLR - {98, 7, HSV_ORANGE}, // MIDI layouts + {98, 8, HSV_ORANGE}, // MIDI layouts {107, 1, HSV_YELLOW}, // MI_VELD {108, 1, HSV_GREEN}, // MI_VELU {110, 1, HSV_RED}, // RGB_TOG @@ -530,6 +548,7 @@ void switch_keylight_color4bass(keyrecord_t *record, uint8_t keylocation){ keylight_manager(record, HSV_ORANGE, keylocation); break; case _C_SYSTEM_BASS2ROW: + case _FAKE_B_SYSTEM_BASS2ROW: keylight_manager(record, HSV_YELLOW, keylocation); break; case _CFLIP_BASS2ROW: @@ -546,6 +565,7 @@ void switch_keylight_color4chords(keyrecord_t *record, uint8_t keylocation){ keylight_manager(record, HSV_YELLOW, keylocation); break; case _C_SYSTEM_BASS2ROW: + case _FAKE_B_SYSTEM_BASS2ROW: keylight_manager(record, HSV_GOLDENROD, keylocation); break; case _CFLIP_BASS2ROW: @@ -596,6 +616,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } break; + case CNTBASB: + if (record->event.pressed) { + set_single_persistent_default_layer(_FAKE_B_SYSTEM_BASS2ROW); + } + break; + case CSYSALL: if (record->event.pressed) { set_single_persistent_default_layer(_C_SYSTEM_ENTIRELY); diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h b/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h index 684287ba98bf..dd10d213a0b6 100644 --- a/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h +++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h @@ -1,3 +1,19 @@ +/* +Copyright 2023 3araht + +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 GIABARINAIX2 diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/config.h b/keyboards/giabalanai/keymaps/giabarinaix2led/config.h index 684287ba98bf..dd10d213a0b6 100644 --- a/keyboards/giabalanai/keymaps/giabarinaix2led/config.h +++ b/keyboards/giabalanai/keymaps/giabarinaix2led/config.h @@ -1,3 +1,19 @@ +/* +Copyright 2023 3araht + +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 GIABARINAIX2 diff --git a/keyboards/giabalanai/keymaps/party/keymap.c b/keyboards/giabalanai/keymaps/party/keymap.c index 913bf056d28d..fdd9c2d52723 100644 --- a/keyboards/giabalanai/keymaps/party/keymap.c +++ b/keyboards/giabalanai/keymaps/party/keymap.c @@ -58,17 +58,18 @@ user_config_t user_config; // Defines names for use in layer keycodes and the keymap enum layer_names { - _C_SYSTEM_BASE, // MIDI C-system - _FAKE_B_SYSTEM, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system. - _C_SYSTEM_BASS2ROW, // counter bass system - _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords. - _C_SYSTEM_FREEBASS, // C-system Free Bass + _C_SYSTEM_BASE, // MIDI C-system + _FAKE_B_SYSTEM, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system. + _C_SYSTEM_BASS2ROW, // counter bass system + _FAKE_B_SYSTEM_BASS2ROW, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system. Counter bass version. + _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords. + _C_SYSTEM_FREEBASS, // C-system Free Bass _CHROMATONE, - _CFLIP_BASS2ROW, // 180 degree flipped layout on right side keyboard + _CFLIP_BASS2ROW, // 180 degree flipped layout on right side keyboard _QWERTY, _COLEMAK, - _ADJUST, // for Fn keys, etc. - _FN // for changing layers, octaves, etc. + _ADJUST, // for Fn keys, etc. + _FN // for changing layers, octaves, etc. }; // Defines the keycodes used by our macros in process_record_user @@ -181,6 +182,7 @@ enum custom_keycodes { CSYSTEM, // C-SYSTEM layout BSYSTEM, // B-SYSTEM layout CNTBASC, // CouNTer BASs C-system layout + CNTBASB, // CouNTer BASs B-system layout CSYSALL, // C-SYStem ALL layout CSYSFBS, // C-SYStem Free BaSs CHRTONE, // CHRomaTONE layout @@ -240,6 +242,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MI_A2, MI_C3, MI_Eb3, MI_Fs3, MI_A3, MI_C4, MI_Eb4, MI_Fs4, MI_A4, MI_C5, MI_Eb5, MI_Fs5 ), + /* fake B-system */ + [_FAKE_B_SYSTEM_BASS2ROW] = LAYOUT( + MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, MI_CH_Csr, MI_CH_Gsr, MI_CH_Dsr, MI_CH_Asr, + MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, + MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs, + MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm, + MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7, + + MI_Ab2, + MI_A2, MI_C3, MI_Eb3, MI_Gb3, MI_A3, MI_C4, MI_Eb4, MI_Gb4, MI_A4, MI_C5, MI_Eb5, MI_Gb5, _______, + MI_G2, MI_Bb2, MI_Db3, MI_E3, MI_G3, MI_Bb3, MI_Db4, MI_E4, MI_G4, MI_Bb4, MI_Db5, MI_E5, MI_G5, + MI_Ab2, MI_B2, MI_D3, MI_F3, MI_Ab3, MI_B3, MI_D4, MI_F4, MI_Ab4, MI_B4, MI_D5, MI_F5 + ), + /* C-system entirely */ [_C_SYSTEM_ENTIRELY] = LAYOUT( MI_BNDU, XXXXXXX, XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db1, MI_E1, MI_G1, MI_Bb1, MI_Db2, @@ -340,7 +356,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Fn */ [_FN] = LAYOUT( - CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_TOG, + CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, CNTBASB, XXXXXXX, XXXXXXX, RGB_MOD, RGB_TOG, DF_QWER, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLMICH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -348,24 +364,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXXXXX, MI_OCN2, MI_OCN1, MI_OC0, MI_OC1, MI_OC2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EE_CLR, _______, - CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, MI_VELD, MI_VELU, RGB_MOD, RGB_TOG, + CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, CNTBASB, XXXXXXX, MI_VELD, MI_VELU, RGB_MOD, RGB_TOG, XXXXXXX, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLUVEL, MELDYAL, MELODYS, MELDYAH ) }; #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { - [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_FAKE_B_SYSTEM] = { ENCODER_CCW_CW(_______, _______) }, - [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, - [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) }, - [_C_SYSTEM_FREEBASS] = { ENCODER_CCW_CW(_______, _______) }, - [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) }, - [_CFLIP_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, - [_QWERTY] = { ENCODER_CCW_CW(_______, _______) }, - [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) }, - [_ADJUST] = { ENCODER_CCW_CW(_______, _______) }, - [_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) }, + [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FAKE_B_SYSTEM] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_FAKE_B_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) }, + [_C_SYSTEM_FREEBASS] = { ENCODER_CCW_CW(_______, _______) }, + [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) }, + [_CFLIP_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) }, + [_QWERTY] = { ENCODER_CCW_CW(_______, _______) }, + [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) }, + [_ADJUST] = { ENCODER_CCW_CW(_______, _______) }, + [_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) }, }; #endif @@ -383,7 +400,7 @@ const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, // Light up fn layer keys const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( // left keyboard - {0, 7, HSV_ORANGE}, // MIDI layouts + {0, 8, HSV_ORANGE}, // MIDI layouts {11, 1, HSV_RED}, // RGB_TOG {12, 1, HSV_WHITE}, // DF_QWER {13, 1, HSV_CORAL}, // TGLBASS @@ -410,15 +427,16 @@ const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( {53, 1, HSV_PINK}, #endif // right keyboard - {60, 7, HSV_ORANGE}, // MIDI layouts + {60, 8, HSV_ORANGE}, // MIDI layouts {74, 1, HSV_CORAL}, // TGLBASS {85, 1, HSV_BLUE}, // MIDI Oct {86, 1, HSV_CYAN}, // MIDI Oct {87, 1, HSV_SPRINGGREEN}, // MIDI Oct {88, 1, HSV_GREEN}, // MIDI Oct {89, 1, HSV_CHARTREUSE}, // MIDI Oct + {95, 1, HSV_GOLD}, // VERSION {96, 1, HSV_PINK}, // EE_CLR - {98, 7, HSV_ORANGE}, // MIDI layouts + {98, 8, HSV_ORANGE}, // MIDI layouts {107, 1, HSV_YELLOW}, // MI_VELD {108, 1, HSV_GREEN}, // MI_VELU {110, 1, HSV_RED}, // RGB_TOG @@ -490,7 +508,7 @@ bool rgb_matrix_indicators_user(void) { // rgb_matrix_set_color(72, RGB_DARKORANGE); break; case _FN: - for (i = 0;i < 7;i++) { + for (i = 0;i < 8;i++) { rgb_matrix_set_color(74 - i, RGB_DARKORANGE); // MIDI layouts // right keyboard rgb_matrix_set_color(i, RGB_DARKORANGE); // MIDI layouts @@ -512,6 +530,7 @@ bool rgb_matrix_indicators_user(void) { rgb_matrix_set_color(28, RGB_DARKSPRINGGREEN); // MIDI Oct rgb_matrix_set_color(29, RGB_DARKGREEN); // MIDI Oct rgb_matrix_set_color(30, RGB_DARKCHARTREUSE); // MIDI Oct + rgb_matrix_set_color(36, RGB_DARKGOLD); // VERSION rgb_matrix_set_color(37, RGB_DARKPINK); // EE_CLR rgb_matrix_set_color(41, RGB_DARKYELLOW); // MI_VELD rgb_matrix_set_color(40, RGB_DARKGREEN); // MI_VELU @@ -645,6 +664,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } break; + case CNTBASB: + if (record->event.pressed) { + set_single_persistent_default_layer(_FAKE_B_SYSTEM_BASS2ROW); + } + break; + case CSYSALL: if (record->event.pressed) { set_single_persistent_default_layer(_C_SYSTEM_ENTIRELY); diff --git a/keyboards/giabalanai/keymaps/via/config.h b/keyboards/giabalanai/keymaps/via/config.h index a3b77a5b4d0b..f225b6534047 100644 --- a/keyboards/giabalanai/keymaps/via/config.h +++ b/keyboards/giabalanai/keymaps/via/config.h @@ -1,3 +1,19 @@ +/* +Copyright 2023 3araht + +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 DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/giabalanai/rules.mk b/keyboards/giabalanai/rules.mk index b676b1da4624..d0e8dc4f2429 100644 --- a/keyboards/giabalanai/rules.mk +++ b/keyboards/giabalanai/rules.mk @@ -1,18 +1,8 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # 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 = no # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -MIDI_ENABLE = yes # MIDI support -ENCODER_ENABLE = yes # encoder on mute button -SPLIT_KEYBOARD = yes # Enables split keyboard support # RGB_MATRIX_ENABLE is not suitable for giabalanai keyboard on the right side (there are dulpicate keys). RGB_MATRIX_ENABLE = no # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.) RGB_MATRIX_DRIVER = WS2812 # 2021/01/23 added. From 8a5e8ed88e818e2a4ccd1349ea63cb35042e674f Mon Sep 17 00:00:00 2001 From: 4pplet Date: Mon, 3 Apr 2023 07:24:49 +0200 Subject: [PATCH 22/73] Adding Unextended Standard PCB (#20190) Co-authored-by: Drashna Jaelre Co-authored-by: 4pplet <4pplet@protonmail.com> Co-authored-by: 4pplet --- .../unextended_std/keymaps/default/keymap.c | 34 +++ .../unextended_std/keymaps/m0116/keymap.c | 40 +++ .../unextended_std/keymaps/m0118/keymap.c | 39 +++ .../unextended_std/keymaps/via/keymap.c | 48 ++++ .../unextended_std/keymaps/via/rules.mk | 1 + keyboards/4pplet/unextended_std/readme.md | 23 ++ .../4pplet/unextended_std/rev_a/config.h | 19 ++ .../4pplet/unextended_std/rev_a/info.json | 262 ++++++++++++++++++ .../4pplet/unextended_std/rev_a/rules.mk | 10 + 9 files changed, 476 insertions(+) create mode 100644 keyboards/4pplet/unextended_std/keymaps/default/keymap.c create mode 100644 keyboards/4pplet/unextended_std/keymaps/m0116/keymap.c create mode 100644 keyboards/4pplet/unextended_std/keymaps/m0118/keymap.c create mode 100644 keyboards/4pplet/unextended_std/keymaps/via/keymap.c create mode 100644 keyboards/4pplet/unextended_std/keymaps/via/rules.mk create mode 100644 keyboards/4pplet/unextended_std/readme.md create mode 100644 keyboards/4pplet/unextended_std/rev_a/config.h create mode 100644 keyboards/4pplet/unextended_std/rev_a/info.json create mode 100644 keyboards/4pplet/unextended_std/rev_a/rules.mk diff --git a/keyboards/4pplet/unextended_std/keymaps/default/keymap.c b/keyboards/4pplet/unextended_std/keymaps/default/keymap.c new file mode 100644 index 000000000000..bac0f0ef58ff --- /dev/null +++ b/keyboards/4pplet/unextended_std/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +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] = { +// main layer +[0] = LAYOUT_all( + 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_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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + MO(1), KC_LALT, KC_LGUI, KC_GRV, KC_SPC, KC_BSLS, KC_LEFT, KC_RIGHT,KC_DOWN, KC_UP), +// basic function layer +[1] = LAYOUT_all( + QK_BOOT, 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_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, 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) +}; diff --git a/keyboards/4pplet/unextended_std/keymaps/m0116/keymap.c b/keyboards/4pplet/unextended_std/keymaps/m0116/keymap.c new file mode 100644 index 000000000000..593e0de2b200 --- /dev/null +++ b/keyboards/4pplet/unextended_std/keymaps/m0116/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +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] = { +// main layer +/* +* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ +* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Delete│ +* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ +* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ +* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴ │ +* │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ +* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───────┤ +* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ +* ├────┬───│───┴┬──┴┬──┴───┴───┴───┴─┬─┴─┬─┴──┬┴───┴┬────┬───┤ +* │Caps│Alt│Gui │ ` │ Space │ \ │Left│Right│Down│ Up│ +* └────┴───┴────┴───┴────────────────┴───┴────┴─────┴────┴───┘ +*/ +[0] = LAYOUT_m0116( + 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_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_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_CAPS, KC_LALT, KC_LGUI, KC_GRV, KC_SPC, KC_BSLS, KC_LEFT, KC_RIGHT,KC_DOWN, KC_UP) +}; diff --git a/keyboards/4pplet/unextended_std/keymaps/m0118/keymap.c b/keyboards/4pplet/unextended_std/keymaps/m0118/keymap.c new file mode 100644 index 000000000000..1343ca2dc294 --- /dev/null +++ b/keyboards/4pplet/unextended_std/keymaps/m0118/keymap.c @@ -0,0 +1,39 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +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] = { +/* +* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ +* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backsp│ +* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ +* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ +* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐Ent│ +* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │ +* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───│───┤ +* │Shft│ ` │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift│ Up│ +* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴┬──┴─┬─┴──┬┴────┬────┤ +* │Ctrl│Alt │GUI │ Space │GUI │Left│Right│Down│ +* └────┴────┴────┴──────────────────────┴────┴────┴─────┴────┘ +*/ +[0] = LAYOUT_m0118( + 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_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_ENT, + 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_NUHS, + KC_LSFT, KC_GRV, 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_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_LEFT, KC_RIGHT,KC_DOWN) +}; diff --git a/keyboards/4pplet/unextended_std/keymaps/via/keymap.c b/keyboards/4pplet/unextended_std/keymaps/via/keymap.c new file mode 100644 index 000000000000..a99489b426e1 --- /dev/null +++ b/keyboards/4pplet/unextended_std/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +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] = { +// main layer +[0] = LAYOUT_all( + 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_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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + MO(1), KC_LALT, KC_LGUI, KC_GRV, KC_SPC, KC_BSLS, KC_LEFT, KC_RIGHT,KC_DOWN, KC_UP), +// basic function layer +[1] = LAYOUT_all( + QK_BOOT, 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_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, 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), +// extra layer for VIA +[2] = LAYOUT_all( + 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), +// extra layer for VIA +[3] = LAYOUT_all( + 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) +}; diff --git a/keyboards/4pplet/unextended_std/keymaps/via/rules.mk b/keyboards/4pplet/unextended_std/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/4pplet/unextended_std/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/4pplet/unextended_std/readme.md b/keyboards/4pplet/unextended_std/readme.md new file mode 100644 index 000000000000..2d276511edea --- /dev/null +++ b/keyboards/4pplet/unextended_std/readme.md @@ -0,0 +1,23 @@ +# Unextended Standard PCB + +PCB for the Unextended Standard Project. The PCB enables use of M0116, M0118, IIc and NeXT keycaps and is designed to fit in the open sourced Unextended case. + +* Keyboard Maintainer: [4pplet](https://github.com/4pplet) +* Hardware Supported: [Unextended Standard PCB](https://github.com/4pplet/Unextended-Standard-PCB) + +Make example for this keyboard (after setting up your build environment): + + make 4pplet/unextended_std/rev_a:default + +Flashing example for this keyboard: + + make 4pplet/unextended_std/rev_a:default:flash + +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). + +## Bootloader +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the Escape-key and plug in the keyboard +* **Physical reset header**: Briefly short the header labled "BL/reset" on the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/4pplet/unextended_std/rev_a/config.h b/keyboards/4pplet/unextended_std/rev_a/config.h new file mode 100644 index 000000000000..eb7d87e083a0 --- /dev/null +++ b/keyboards/4pplet/unextended_std/rev_a/config.h @@ -0,0 +1,19 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +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 WS2812_EXTERNAL_PULLUP diff --git a/keyboards/4pplet/unextended_std/rev_a/info.json b/keyboards/4pplet/unextended_std/rev_a/info.json new file mode 100644 index 000000000000..458439e7b74f --- /dev/null +++ b/keyboards/4pplet/unextended_std/rev_a/info.json @@ -0,0 +1,262 @@ +{ + "keyboard_name": "Unextended Standard Rev A", + "manufacturer": "4pplet", + "url": "https://github.com/4pplet/Unextended", + "maintainer": "4pplet", + "usb": { + "vid": "0x4444", + "pid": "0x0012", + "device_version": "0.0.1" + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + + "matrix_pins": { + "rows": + ["B14","B15","B6","B5","B4"], + "cols": + ["B2","A4","A1","A2","F1","F0","C15","C14","C13","B9","B8","B7","B12","B3"] + }, + + "diode_direction": "COL2ROW", + + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "backlight": false, + "rgblight": true, + "audio": false + }, + + "rgblight": { + "pin": "A8", + "led_count": 16, + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + + "indicators": { + "caps_lock": "A10", + "on_state": 0 + }, + + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "matrix": [0, 0], "x":0, "y":0}, + {"label":"!", "matrix": [0, 1], "x":1, "y":0}, + {"label":"@", "matrix": [0, 2], "x":2, "y":0}, + {"label":"#", "matrix": [0, 3], "x":3, "y":0}, + {"label":"$", "matrix": [0, 4], "x":4, "y":0}, + {"label":"%", "matrix": [0, 5], "x":5, "y":0}, + {"label":"^", "matrix": [0, 6], "x":6, "y":0}, + {"label":"&", "matrix": [0, 7], "x":7, "y":0}, + {"label":"*", "matrix": [0, 8], "x":8, "y":0}, + {"label":"(", "matrix": [0, 9], "x":9, "y":0}, + {"label":")", "matrix": [0, 10], "x":10, "y":0}, + {"label":"_", "matrix": [0, 11], "x":11, "y":0}, + {"label":"+", "matrix": [0, 12], "x":12, "y":0}, + {"label":"Backsp", "matrix": [0, 13], "x":13, "y":0, "w":1.5}, + {"label":"Tab", "matrix": [1, 0], "x":0, "y":1, "w":1.5}, + {"label":"Q", "matrix": [1, 1], "x":1.5, "y":1}, + {"label":"W", "matrix": [1, 2], "x":2.5, "y":1}, + {"label":"E", "matrix": [1, 3], "x":3.5, "y":1}, + {"label":"R", "matrix": [1, 4], "x":4.5, "y":1}, + {"label":"T", "matrix": [1, 5], "x":5.5, "y":1}, + {"label":"Y", "matrix": [1, 6], "x":6.5, "y":1}, + {"label":"U", "matrix": [1, 7], "x":7.5, "y":1}, + {"label":"I", "matrix": [1, 8], "x":8.5, "y":1}, + {"label":"O", "matrix": [1, 9], "x":9.5, "y":1}, + {"label":"P", "matrix": [1, 10], "x":10.5, "y":1}, + {"label":"{", "matrix": [1, 11], "x":11.5, "y":1}, + {"label":"}", "matrix": [1, 12], "x":12.5, "y":1}, + {"label":"|", "matrix": [1, 13], "x":13.5, "y":1}, + {"label":"Caps Lock", "matrix": [2, 0], "x":0, "y":2, "w":1.75}, + {"label":"A", "matrix": [2, 1], "x":1.75, "y":2}, + {"label":"S", "matrix": [2, 2], "x":2.75, "y":2}, + {"label":"D", "matrix": [2, 3], "x":3.75, "y":2}, + {"label":"F", "matrix": [2, 4], "x":4.75, "y":2}, + {"label":"G", "matrix": [2, 5], "x":5.75, "y":2}, + {"label":"H", "matrix": [2, 6], "x":6.75, "y":2}, + {"label":"J", "matrix": [2, 7], "x":7.75, "y":2}, + {"label":"K", "matrix": [2, 8], "x":8.75, "y":2}, + {"label":"L", "matrix": [2, 9], "x":9.75, "y":2}, + {"label":":", "matrix": [2, 10], "x":10.75, "y":2}, + {"label":"\"", "matrix": [2, 11], "x":11.75, "y":2}, + {"label":"nubs", "matrix": [3, 13], "x":12.75, "y":2}, + {"label":"Enter", "matrix": [2, 13], "x":13.75, "y":2, "w":0.75}, + {"label":"Shift", "matrix": [3, 0], "x":0, "y":3, "w":1.25}, + {"label":"nubs", "matrix": [3, 1], "x":1.25, "y":3}, + {"label":"Z", "matrix": [3, 2], "x":2.25, "y":3}, + {"label":"X", "matrix": [3, 3], "x":3.25, "y":3}, + {"label":"C", "matrix": [3, 4], "x":4.25, "y":3}, + {"label":"V", "matrix": [3, 5], "x":5.25, "y":3}, + {"label":"B", "matrix": [3, 6], "x":6.25, "y":3}, + {"label":"N", "matrix": [3, 7], "x":7.25, "y":3}, + {"label":"M", "matrix": [3, 8], "x":8.25, "y":3}, + {"label":"<", "matrix": [3, 9], "x":9.25, "y":3}, + {"label":">", "matrix": [3, 10], "x":10.25, "y":3}, + {"label":"?", "matrix": [3, 11], "x":11.25, "y":3}, + {"label":"Shift", "matrix": [3, 12], "x":12.25, "y":3, "w":1.25}, + {"label":"\u2191", "matrix": [4, 13], "x":13.5, "y":3}, + {"label":"Caps", "matrix": [4, 0], "x":0, "y":4}, + {"label":"opt", "matrix": [4, 1], "x":1, "y":4}, + {"label":"Cmd", "matrix": [4, 2], "x":2, "y":4, "w":1.75}, + {"label":"`", "matrix": [4, 3], "x":3.75, "y":4}, + {"label":"Space", "matrix": [4, 6], "x":4.75, "y":4, "w":4.75}, + {"label":"\\", "matrix": [4, 8], "x":9.5, "y":4}, + {"label":"\u2190", "matrix": [4, 9], "x":10.5, "y":4}, + {"label":"\u2192", "matrix": [4, 10], "x":11.5, "y":4}, + {"label":"\u2193", "matrix": [4, 11], "x":12.5, "y":4}, + {"label":"\u2191", "matrix": [4, 12], "x":13.5, "y":4} + ] + }, + "LAYOUT_m0116": { + "layout": [ + {"label":"Esc", "matrix": [0, 0], "x":0, "y":0}, + {"label":"!", "matrix": [0, 1], "x":1, "y":0}, + {"label":"@", "matrix": [0, 2], "x":2, "y":0}, + {"label":"#", "matrix": [0, 3], "x":3, "y":0}, + {"label":"$", "matrix": [0, 4], "x":4, "y":0}, + {"label":"%", "matrix": [0, 5], "x":5, "y":0}, + {"label":"^", "matrix": [0, 6], "x":6, "y":0}, + {"label":"&", "matrix": [0, 7], "x":7, "y":0}, + {"label":"*", "matrix": [0, 8], "x":8, "y":0}, + {"label":"(", "matrix": [0, 9], "x":9, "y":0}, + {"label":")", "matrix": [0, 10], "x":10, "y":0}, + {"label":"_", "matrix": [0, 11], "x":11, "y":0}, + {"label":"+", "matrix": [0, 12], "x":12, "y":0}, + {"label":"Backsp", "matrix": [0, 13], "x":13, "y":0, "w":1.5}, + {"label":"Tab", "matrix": [1, 0], "x":0, "y":1, "w":1.5}, + {"label":"Q", "matrix": [1, 1], "x":1.5, "y":1}, + {"label":"W", "matrix": [1, 2], "x":2.5, "y":1}, + {"label":"E", "matrix": [1, 3], "x":3.5, "y":1}, + {"label":"R", "matrix": [1, 4], "x":4.5, "y":1}, + {"label":"T", "matrix": [1, 5], "x":5.5, "y":1}, + {"label":"Y", "matrix": [1, 6], "x":6.5, "y":1}, + {"label":"U", "matrix": [1, 7], "x":7.5, "y":1}, + {"label":"I", "matrix": [1, 8], "x":8.5, "y":1}, + {"label":"O", "matrix": [1, 9], "x":9.5, "y":1}, + {"label":"P", "matrix": [1, 10], "x":10.5, "y":1}, + {"label":"{", "matrix": [1, 11], "x":11.5, "y":1}, + {"label":"}", "matrix": [1, 12], "x":12.5, "y":1}, + {"label":"Enter", "matrix": [2, 13], "x":13.5, "y":1, "h":2}, + {"label":"Control", "matrix": [2, 0], "x":0, "y":2, "w":1.75}, + {"label":"A", "matrix": [2, 1], "x":1.75, "y":2}, + {"label":"S", "matrix": [2, 2], "x":2.75, "y":2}, + {"label":"D", "matrix": [2, 3], "x":3.75, "y":2}, + {"label":"F", "matrix": [2, 4], "x":4.75, "y":2}, + {"label":"G", "matrix": [2, 5], "x":5.75, "y":2}, + {"label":"H", "matrix": [2, 6], "x":6.75, "y":2}, + {"label":"J", "matrix": [2, 7], "x":7.75, "y":2}, + {"label":"K", "matrix": [2, 8], "x":8.75, "y":2}, + {"label":"L", "matrix": [2, 9], "x":9.75, "y":2}, + {"label":":", "matrix": [2, 10], "x":10.75, "y":2}, + {"label":"\"", "matrix": [2, 11], "x":11.75, "y":2}, + {"label":"Shift", "matrix": [3, 0], "x":0, "y":3, "w":2.25}, + {"label":"Z", "matrix": [3, 2], "x":2.25, "y":3}, + {"label":"X", "matrix": [3, 3], "x":3.25, "y":3}, + {"label":"C", "matrix": [3, 4], "x":4.25, "y":3}, + {"label":"V", "matrix": [3, 5], "x":5.25, "y":3}, + {"label":"B", "matrix": [3, 6], "x":6.25, "y":3}, + {"label":"N", "matrix": [3, 7], "x":7.25, "y":3}, + {"label":"M", "matrix": [3, 8], "x":8.25, "y":3}, + {"label":"<", "matrix": [3, 9], "x":9.25, "y":3}, + {"label":">", "matrix": [3, 10], "x":10.25, "y":3}, + {"label":"?", "matrix": [3, 11], "x":11.25, "y":3}, + {"label":"Shift", "matrix": [3, 12], "x":12.25, "y":3, "w":2.25}, + {"label":"Caps", "matrix": [4, 0], "x":0, "y":4}, + {"label":"opt", "matrix": [4, 1], "x":1, "y":4}, + {"label":"Cmd", "matrix": [4, 2], "x":2, "y":4, "w":1.75}, + {"label":"`", "matrix": [4, 3], "x":3.75, "y":4}, + {"label":"Space", "matrix": [4, 6],"x":4.75, "y":4, "w":4.75}, + {"label":"\\", "matrix": [4, 8], "x":9.5, "y":4}, + {"label":"\u2190", "matrix": [4, 9], "x":10.5, "y":4}, + {"label":"\u2192", "matrix": [4, 10], "x":11.5, "y":4}, + {"label":"\u2193", "matrix": [4, 11], "x":12.5, "y":4}, + {"label":"\u2191", "matrix": [4, 12], "x":13.5, "y":4} + ] + }, + "LAYOUT_m0118": { + "layout": [ + {"label":"Esc", "matrix": [0, 0], "x":0, "y":0}, + {"label":"!", "matrix": [0, 1], "x":1, "y":0}, + {"label":"@", "matrix": [0, 2], "x":2, "y":0}, + {"label":"#", "matrix": [0, 3], "x":3, "y":0}, + {"label":"$", "matrix": [0, 4], "x":4, "y":0}, + {"label":"%", "matrix": [0, 5], "x":5, "y":0}, + {"label":"^", "matrix": [0, 6], "x":6, "y":0}, + {"label":"&", "matrix": [0, 7], "x":7, "y":0}, + {"label":"*", "matrix": [0, 8], "x":8, "y":0}, + {"label":"(", "matrix": [0, 9], "x":9, "y":0}, + {"label":")", "matrix": [0, 10], "x":10, "y":0}, + {"label":"_", "matrix": [0, 11], "x":11, "y":0}, + {"label":"+", "matrix": [0, 12], "x":12, "y":0}, + {"label":"Backsp", "matrix": [0, 13], "x":13, "y":0, "w":1.5}, + {"label":"Tab", "matrix": [1, 0], "x":0, "y":1, "w":1.5}, + {"label":"Q", "matrix": [1, 1], "x":1.5, "y":1}, + {"label":"W", "matrix": [1, 2], "x":2.5, "y":1}, + {"label":"E", "matrix": [1, 3], "x":3.5, "y":1}, + {"label":"R", "matrix": [1, 4], "x":4.5, "y":1}, + {"label":"T", "matrix": [1, 5], "x":5.5, "y":1}, + {"label":"Y", "matrix": [1, 6], "x":6.5, "y":1}, + {"label":"U", "matrix": [1, 7], "x":7.5, "y":1}, + {"label":"I", "matrix": [1, 8], "x":8.5, "y":1}, + {"label":"O", "matrix": [1, 9], "x":9.5, "y":1}, + {"label":"P", "matrix": [1, 10], "x":10.5, "y":1}, + {"label":"{", "matrix": [1, 11], "x":11.5, "y":1}, + {"label":"}", "matrix": [1, 12], "x":12.5, "y":1}, + {"label":"Enter", "matrix": [2, 13], "x":13.75, "y":1, "w":0.75, "h":2}, + {"label":"Caps Lock", "matrix": [2, 0], "x":0, "y":2, "w":1.75}, + {"label":"A", "matrix": [2, 1], "x":1.75, "y":2}, + {"label":"S", "matrix": [2, 2], "x":2.75, "y":2}, + {"label":"D", "matrix": [2, 3], "x":3.75, "y":2}, + {"label":"F", "matrix": [2, 4], "x":4.75, "y":2}, + {"label":"G", "matrix": [2, 5], "x":5.75, "y":2}, + {"label":"H", "matrix": [2, 6], "x":6.75, "y":2}, + {"label":"J", "matrix": [2, 7], "x":7.75, "y":2}, + {"label":"K", "matrix": [2, 8], "x":8.75, "y":2}, + {"label":"L", "matrix": [2, 9], "x":9.75, "y":2}, + {"label":":", "matrix": [2, 10], "x":10.75, "y":2}, + {"label":"\"", "matrix": [2, 11], "x":11.75, "y":2}, + {"label":"nuhs", "matrix": [3, 13], "x":12.75, "y":2}, + {"label":"Shift", "matrix": [3, 0], "x":0, "y":3, "w":1.25}, + {"label":"nubs", "matrix": [3, 1], "x":1.25, "y":3}, + {"label":"Z", "matrix": [3, 2], "x":2.25, "y":3}, + {"label":"X", "matrix": [3, 3], "x":3.25, "y":3}, + {"label":"C", "matrix": [3, 4], "x":4.25, "y":3}, + {"label":"V", "matrix": [3, 5], "x":5.25, "y":3}, + {"label":"B", "matrix": [3, 6], "x":6.25, "y":3}, + {"label":"N", "matrix": [3, 7], "x":7.25, "y":3}, + {"label":"M", "matrix": [3, 8], "x":8.25, "y":3}, + {"label":"<", "matrix": [3, 9], "x":9.25, "y":3}, + {"label":">", "matrix": [3, 10], "x":10.25, "y":3}, + {"label":"?", "matrix": [3, 11], "x":11.25, "y":3}, + {"label":"Shift", "matrix": [3, 12], "x":12.25, "y":3, "w":1.25}, + {"label":"\u2191", "matrix": [4, 13], "x":13.5, "y":3}, + {"label":"Ctrl", "matrix": [4, 0], "x":0, "y":4, "w":1.25}, + {"label":"Opt", "matrix": [4, 2], "x":1.25, "y":4, "w":1.5}, + {"label":"Cmd", "matrix": [4, 3], "x":2.75, "y":4, "w":1.75}, + {"label":"Space", "matrix": [4, 6], "x":4.5, "y":4, "w":5.25}, + {"label":"Cmd", "matrix": [4, 9], "x":9.75, "y":4, "w":1.75}, + {"label":"\u2190", "matrix": [4, 10], "x":11.5, "y":4}, + {"label":"\u2192", "matrix": [4, 11], "x":12.5, "y":4}, + {"label":"\u2193", "matrix": [4, 12], "x":13.5, "y":4} + ] + } + } +} diff --git a/keyboards/4pplet/unextended_std/rev_a/rules.mk b/keyboards/4pplet/unextended_std/rev_a/rules.mk new file mode 100644 index 000000000000..68bddfc74854 --- /dev/null +++ b/keyboards/4pplet/unextended_std/rev_a/rules.mk @@ -0,0 +1,10 @@ +# Build Options +# change yes to no to disable +# +KEY_LOCK_ENABLE = yes + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From f3f0bf6dbedef705b078a6ee7016b0d2b11c4bc7 Mon Sep 17 00:00:00 2001 From: studiokestra <74369928+studiokestra@users.noreply.github.com> Date: Sun, 2 Apr 2023 23:37:43 -0600 Subject: [PATCH 23/73] Refactor Galatea (#20011) --- keyboards/studiokestra/galatea/config.h | 44 +- keyboards/studiokestra/galatea/galatea.c | 17 - keyboards/studiokestra/galatea/galatea.h | 25 -- .../galatea/keymaps/default/keymap.c | 42 -- .../galatea/keymaps/default/readme.md | 1 - .../studiokestra/galatea/keymaps/via/keymap.c | 51 --- .../galatea/keymaps/via/readme.md | 1 - keyboards/studiokestra/galatea/readme.md | 30 +- keyboards/studiokestra/galatea/rev1/info.json | 418 +++++------------ .../galatea/rev1/keymaps/default/keymap.c | 38 ++ .../galatea/rev1/keymaps/via/keymap.c | 40 ++ .../galatea/{ => rev1}/keymaps/via/rules.mk | 0 keyboards/studiokestra/galatea/rev1/rev1.c | 17 - keyboards/studiokestra/galatea/rev1/rev1.h | 116 ----- keyboards/studiokestra/galatea/rev1/rules.mk | 13 +- keyboards/studiokestra/galatea/rev2/config.h | 22 + keyboards/studiokestra/galatea/rev2/info.json | 419 +++++------------- .../galatea/rev2/keymaps/default/keymap.c | 38 ++ .../galatea/rev2/keymaps/via/keymap.c | 40 ++ .../galatea/rev2/keymaps/via/rules.mk | 1 + keyboards/studiokestra/galatea/rev2/rev2.c | 17 - keyboards/studiokestra/galatea/rev2/rev2.h | 116 ----- keyboards/studiokestra/galatea/rev2/rules.mk | 13 +- keyboards/studiokestra/galatea/rules.mk | 2 +- 24 files changed, 428 insertions(+), 1093 deletions(-) delete mode 100644 keyboards/studiokestra/galatea/galatea.c delete mode 100644 keyboards/studiokestra/galatea/galatea.h delete mode 100644 keyboards/studiokestra/galatea/keymaps/default/keymap.c delete mode 100644 keyboards/studiokestra/galatea/keymaps/default/readme.md delete mode 100644 keyboards/studiokestra/galatea/keymaps/via/keymap.c delete mode 100644 keyboards/studiokestra/galatea/keymaps/via/readme.md create mode 100644 keyboards/studiokestra/galatea/rev1/keymaps/default/keymap.c create mode 100644 keyboards/studiokestra/galatea/rev1/keymaps/via/keymap.c rename keyboards/studiokestra/galatea/{ => rev1}/keymaps/via/rules.mk (100%) delete mode 100644 keyboards/studiokestra/galatea/rev1/rev1.c delete mode 100644 keyboards/studiokestra/galatea/rev1/rev1.h create mode 100644 keyboards/studiokestra/galatea/rev2/config.h create mode 100644 keyboards/studiokestra/galatea/rev2/keymaps/default/keymap.c create mode 100644 keyboards/studiokestra/galatea/rev2/keymaps/via/keymap.c create mode 100644 keyboards/studiokestra/galatea/rev2/keymaps/via/rules.mk delete mode 100644 keyboards/studiokestra/galatea/rev2/rev2.c delete mode 100644 keyboards/studiokestra/galatea/rev2/rev2.h diff --git a/keyboards/studiokestra/galatea/config.h b/keyboards/studiokestra/galatea/config.h index 7c5b4dbb2944..4dbaafd5e40e 100644 --- a/keyboards/studiokestra/galatea/config.h +++ b/keyboards/studiokestra/galatea/config.h @@ -1,47 +1,9 @@ -/* -Copyright 2021 Studio Kestra - -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 . -*/ +// Copyright 2023 studiokestra (@studiokestra) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once - -#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, B2, D5 } -#define MATRIX_ROW_PINS { D1, D0, B0, B7, E6, B3, B6, C6, D6, D7, B4, D3 } -#define DIODE_DIRECTION COL2ROW - -#if defined(KEYBOARD_studiokestra_galatea_rev2) - #define RGB_DI_PIN D4 - #define RGBLED_NUM 24 - #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_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ - #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 -#endif - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE +#define LOCKING_RESYNC_ENABLE \ No newline at end of file diff --git a/keyboards/studiokestra/galatea/galatea.c b/keyboards/studiokestra/galatea/galatea.c deleted file mode 100644 index 30e7939159fc..000000000000 --- a/keyboards/studiokestra/galatea/galatea.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2021 Studio Kestra - * - * 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 "galatea.h" diff --git a/keyboards/studiokestra/galatea/galatea.h b/keyboards/studiokestra/galatea/galatea.h deleted file mode 100644 index a1f2aa77b53a..000000000000 --- a/keyboards/studiokestra/galatea/galatea.h +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright 2021 Studio Kestra - * - * 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" - -#if defined(KEYBOARD_studiokestra_galatea_rev1) - #include "rev1.h" -#elif defined(KEYBOARD_studiokestra_galatea_rev2) - #include "rev2.h" -#endif diff --git a/keyboards/studiokestra/galatea/keymaps/default/keymap.c b/keyboards/studiokestra/galatea/keymaps/default/keymap.c deleted file mode 100644 index e2b187ef9c63..000000000000 --- a/keyboards/studiokestra/galatea/keymaps/default/keymap.c +++ /dev/null @@ -1,42 +0,0 @@ - /* Copyright 2021 Studio Kestra - * - * 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 - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _BASE, - _FN -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_BASE] = LAYOUT_all( - KC_ESC, 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_F13, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, - 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_DEL, KC_END, KC_PGDN, - 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_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), - - [_FN] = LAYOUT_all( - QK_BOOT, 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, 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 ), -}; \ No newline at end of file diff --git a/keyboards/studiokestra/galatea/keymaps/default/readme.md b/keyboards/studiokestra/galatea/keymaps/default/readme.md deleted file mode 100644 index 1dbd94b7bf37..000000000000 --- a/keyboards/studiokestra/galatea/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for Galatea diff --git a/keyboards/studiokestra/galatea/keymaps/via/keymap.c b/keyboards/studiokestra/galatea/keymaps/via/keymap.c deleted file mode 100644 index 504f5b90b0df..000000000000 --- a/keyboards/studiokestra/galatea/keymaps/via/keymap.c +++ /dev/null @@ -1,51 +0,0 @@ - /* Copyright 2021 Studio Kestra - * - * 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 - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _BASE, - _FN1, - _FN2 -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_BASE] = LAYOUT_all( - KC_ESC, 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_F13, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, - 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_DEL, KC_END, KC_PGDN, - 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_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), - - [_FN1] = LAYOUT_all( - QK_BOOT, 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, 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 ), - - [_FN2] = LAYOUT_all( - 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, 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/studiokestra/galatea/keymaps/via/readme.md b/keyboards/studiokestra/galatea/keymaps/via/readme.md deleted file mode 100644 index a54a78203e33..000000000000 --- a/keyboards/studiokestra/galatea/keymaps/via/readme.md +++ /dev/null @@ -1 +0,0 @@ -# Studio Kestra's Galatea keymap for VIA diff --git a/keyboards/studiokestra/galatea/readme.md b/keyboards/studiokestra/galatea/readme.md index 1268c596bf7d..580815fa6304 100644 --- a/keyboards/studiokestra/galatea/readme.md +++ b/keyboards/studiokestra/galatea/readme.md @@ -1,27 +1,29 @@ -# Galatea +# studiokestra/galatea + +![studiokestra/galatea](https://i.imgur.com/juPhV1xh.png) TKL H87/88c compatible PCB with support for the most common layouts. * Keyboard Maintainer: [Studio Kestra](https://github.com/studiokestra/) -* Hardware Supported: [studiokestra.ca/galatea](https://studiokestra.ca/galatea/) -* Hardware Availability: In-Stock Sale (Dec 2021) +* Hardware Supported: Most H87C compatible keyboards +* Hardware Availability: https://RNDKBD.com; https://geon.works/ * Rev1 firmware is used for Galatea PCBs with no RGB underglow. -* Rev2 firmware is used for Galatea PCBs with RGB underglow. +* Rev2 firmware is used for Galatea PCBs with RGB underglow. -## Bootload Sequence +Make example for this keyboard (after setting up your build environment): -There are 3 ways to put the board in bootloader mode: + make studiokestra/galatea/rev1:default -- Hold the top-left key (typically `Esc`) while plugging in the USB cable, OR -- While the PCB is plugged into the PC, press the physical `RESET` button on the back of the board, OR -- With the default layout, toggle Layer 1 and press the `R` key. +Flashing example for this keyboard: -## Compiling Firmware + make studiokestra/galatea/rev1:default:flash -Make example for this keyboard (after setting up your build environment): +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). - make studiokestra/galatea/rev1:default +## Bootloader -If no revision is specified, it will build rev1 firmware by default. +Enter the bootloader in 3 ways: -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). +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/studiokestra/galatea/rev1/info.json b/keyboards/studiokestra/galatea/rev1/info.json index ce1b7f581602..37d3e19cc73b 100644 --- a/keyboards/studiokestra/galatea/rev1/info.json +++ b/keyboards/studiokestra/galatea/rev1/info.json @@ -1,321 +1,129 @@ { - "keyboard_name": "Galatea", "manufacturer": "Studio Kestra", - "url": "https://studiokestra.ca/galatea", + "keyboard_name": "Galatea", "maintainer": "studiokestra", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7", "B2", "D5"], + "rows": ["D1", "D0", "B0", "B7", "E6", "B3", "B6", "C6", "D6", "D7", "B4", "D3"] + }, + "processor": "atmega32u4", + "url": "", "usb": { - "vid": "0x7C10", + "device_version": "1.0.0", "pid": "0x8801", - "device_version": "0.0.1" + "vid": "0x7C10" }, "indicators": { "caps_lock": "B5", "scroll_lock": "D2", "on_state": 0 }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu", "layouts": { - "LAYOUT_all": { - "layout": [ - {"x": 0, "y": 0}, - - {"x": 1.25, "y": 0}, - {"x": 2.25, "y": 0}, - {"x": 3.25, "y": 0}, - {"x": 4.25, "y": 0}, - {"x": 5.5, "y": 0}, - {"x": 6.5, "y": 0}, - {"x": 7.5, "y": 0}, - {"x": 8.5, "y": 0}, - {"x": 9.75, "y": 0}, - {"x": 10.75, "y": 0}, - {"x": 11.75, "y": 0}, - {"x": 12.75, "y": 0}, - {"x": 14, "y": 0}, - - {"x": 15.25, "y": 0}, - {"x": 16.25, "y": 0}, - {"x": 17.25, "y": 0}, - - {"x": 0, "y": 1.25}, - {"x": 1, "y": 1.25}, - {"x": 2, "y": 1.25}, - {"x": 3, "y": 1.25}, - {"x": 4, "y": 1.25}, - {"x": 5, "y": 1.25}, - {"x": 6, "y": 1.25}, - {"x": 7, "y": 1.25}, - {"x": 8, "y": 1.25}, - {"x": 9, "y": 1.25}, - {"x": 10, "y": 1.25}, - {"x": 11, "y": 1.25}, - {"x": 12, "y": 1.25}, - {"x": 13, "y": 1.25}, - {"x": 14, "y": 1.25}, - - {"x": 15.25, "y": 1.25}, - {"x": 16.25, "y": 1.25}, - {"x": 17.25, "y": 1.25}, - - {"x": 0, "y": 2.25, "w": 1.5}, - {"x": 1.5, "y": 2.25}, - {"x": 2.5, "y": 2.25}, - {"x": 3.5, "y": 2.25}, - {"x": 4.5, "y": 2.25}, - {"x": 5.5, "y": 2.25}, - {"x": 6.5, "y": 2.25}, - {"x": 7.5, "y": 2.25}, - {"x": 8.5, "y": 2.25}, - {"x": 9.5, "y": 2.25}, - {"x": 10.5, "y": 2.25}, - {"x": 11.5, "y": 2.25}, - {"x": 12.5, "y": 2.25}, - {"x": 13.5, "y": 2.25, "w": 1.5}, - - {"x": 15.25, "y": 2.25}, - {"x": 16.25, "y": 2.25}, - {"x": 17.25, "y": 2.25}, - - {"x": 0, "y": 3.25, "w": 1.75}, - {"x": 1.75, "y": 3.25}, - {"x": 2.75, "y": 3.25}, - {"x": 3.75, "y": 3.25}, - {"x": 4.75, "y": 3.25}, - {"x": 5.75, "y": 3.25}, - {"x": 6.75, "y": 3.25}, - {"x": 7.75, "y": 3.25}, - {"x": 8.75, "y": 3.25}, - {"x": 9.75, "y": 3.25}, - {"x": 10.75, "y": 3.25}, - {"x": 11.75, "y": 3.25}, - {"x": 12.75, "y": 3.25, "w": 2.25}, - - {"x": 0, "y": 4.25, "w": 1.25}, - {"x": 1.25, "y": 4.25}, - {"x": 2.25, "y": 4.25}, - {"x": 3.25, "y": 4.25}, - {"x": 4.25, "y": 4.25}, - {"x": 5.25, "y": 4.25}, - {"x": 6.25, "y": 4.25}, - {"x": 7.25, "y": 4.25}, - {"x": 8.25, "y": 4.25}, - {"x": 9.25, "y": 4.25}, - {"x": 10.25, "y": 4.25}, - {"x": 11.25, "y": 4.25}, - {"x": 12.25, "y": 4.25, "w": 1.75}, - {"x": 14, "y": 4.25}, - - {"x": 16.25, "y": 4.25}, - - {"x": 0, "y": 5.25, "w": 1.25}, - {"x": 1.25, "y": 5.25, "w": 1.25}, - {"x": 2.5, "y": 5.25, "w": 1.25}, - {"x": 3.75, "y": 5.25, "w": 6.25}, - {"x": 10, "y": 5.25, "w": 1.25}, - {"x": 11.25, "y": 5.25, "w": 1.25}, - {"x": 12.5, "y": 5.25, "w": 1.25}, - {"x": 13.75, "y": 5.25, "w": 1.25}, - - {"x": 15.25, "y": 5.25}, - {"x": 16.25, "y": 5.25}, - {"x": 17.25, "y": 5.25} - ] - }, - "LAYOUT_tkl_f13_ansi": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1.25, "y":0}, - {"label":"F2", "x":2.25, "y":0}, - {"label":"F3", "x":3.25, "y":0}, - {"label":"F4", "x":4.25, "y":0}, - {"label":"F5", "x":5.5, "y":0}, - {"label":"F6", "x":6.5, "y":0}, - {"label":"F7", "x":7.5, "y":0}, - {"label":"F8", "x":8.5, "y":0}, - {"label":"F9", "x":9.75, "y":0}, - {"label":"F10", "x":10.75, "y":0}, - {"label":"F11", "x":11.75, "y":0}, - {"label":"F12", "x":12.75, "y":0}, - {"label":"F13", "x":14, "y":0}, - {"label":"Print Screen", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, - - {"label":"`~", "x":0, "y":1.25}, - {"label":"1!", "x":1, "y":1.25}, - {"label":"2@", "x":2, "y":1.25}, - {"label":"3#", "x":3, "y":1.25}, - {"label":"4$", "x":4, "y":1.25}, - {"label":"5%", "x":5, "y":1.25}, - {"label":"6^", "x":6, "y":1.25}, - {"label":"7&", "x":7, "y":1.25}, - {"label":"8*", "x":8, "y":1.25}, - {"label":"9(", "x":9, "y":1.25}, - {"label":"0)", "x":10, "y":1.25}, - {"label":"-_", "x":11, "y":1.25}, - {"label":"=+", "x":12, "y":1.25}, - {"label":"Backspace", "x":13, "y":1.25, "w":2}, - {"label":"Insert", "x":15.25, "y":1.25}, - {"label":"Home", "x":16.25, "y":1.25}, - {"label":"Page Up", "x":17.25, "y":1.25}, - - {"label":"Tab", "x":0, "y":2.25, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.25}, - {"label":"W", "x":2.5, "y":2.25}, - {"label":"E", "x":3.5, "y":2.25}, - {"label":"R", "x":4.5, "y":2.25}, - {"label":"T", "x":5.5, "y":2.25}, - {"label":"Y", "x":6.5, "y":2.25}, - {"label":"U", "x":7.5, "y":2.25}, - {"label":"I", "x":8.5, "y":2.25}, - {"label":"O", "x":9.5, "y":2.25}, - {"label":"P", "x":10.5, "y":2.25}, - {"label":"[{", "x":11.5, "y":2.25}, - {"label":"]}", "x":12.5, "y":2.25}, - {"label":"\\|", "x":13.5, "y":2.25, "w":1.5}, - {"label":"Delete", "x":15.25, "y":2.25}, - {"label":"End", "x":16.25, "y":2.25}, - {"label":"Page Down", "x":17.25, "y":2.25}, - - {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, - {"label":"A", "x":1.75, "y":3.25}, - {"label":"S", "x":2.75, "y":3.25}, - {"label":"D", "x":3.75, "y":3.25}, - {"label":"F", "x":4.75, "y":3.25}, - {"label":"G", "x":5.75, "y":3.25}, - {"label":"H", "x":6.75, "y":3.25}, - {"label":"J", "x":7.75, "y":3.25}, - {"label":"K", "x":8.75, "y":3.25}, - {"label":"L", "x":9.75, "y":3.25}, - {"label":";:", "x":10.75, "y":3.25}, - {"label":"'\"", "x":11.75, "y":3.25}, - {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, - - {"label":"Shift", "x":0, "y":4.25, "w":2.25}, - {"label":"Z", "x":2.25, "y":4.25}, - {"label":"X", "x":3.25, "y":4.25}, - {"label":"C", "x":4.25, "y":4.25}, - {"label":"V", "x":5.25, "y":4.25}, - {"label":"B", "x":6.25, "y":4.25}, - {"label":"N", "x":7.25, "y":4.25}, - {"label":"M", "x":8.25, "y":4.25}, - {"label":",<", "x":9.25, "y":4.25}, - {"label":".>", "x":10.25, "y":4.25}, - {"label":"/?", "x":11.25, "y":4.25}, - {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, - {"label":"\u2191", "x":16.25, "y":4.25}, - - {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, - {"label":"GUI", "x":1.25, "y":5.25, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, - {"label":"Alt", "x":10, "y":5.25, "w":1.25}, - {"label":"GUI", "x":11.25, "y":5.25, "w":1.25}, - {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, - {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, - {"label":"\u2190", "x":15.25, "y":5.25}, - {"label":"\u2193", "x":16.25, "y":5.25}, - {"label":"\u2192", "x":17.25, "y":5.25} - ] - }, - "LAYOUT_tkl_f13_iso": { + "LAYOUT": { "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1.25, "y":0}, - {"label":"F2", "x":2.25, "y":0}, - {"label":"F3", "x":3.25, "y":0}, - {"label":"F4", "x":4.25, "y":0}, - {"label":"F5", "x":5.5, "y":0}, - {"label":"F6", "x":6.5, "y":0}, - {"label":"F7", "x":7.5, "y":0}, - {"label":"F8", "x":8.5, "y":0}, - {"label":"F9", "x":9.75, "y":0}, - {"label":"F10", "x":10.75, "y":0}, - {"label":"F11", "x":11.75, "y":0}, - {"label":"F12", "x":12.75, "y":0}, - {"label":"F13", "x":14, "y":0}, - {"label":"Print Screen", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, - - {"label":"`~", "x":0, "y":1.25}, - {"label":"1!", "x":1, "y":1.25}, - {"label":"2\"", "x":2, "y":1.25}, - {"label":"3\u00a3", "x":3, "y":1.25}, - {"label":"4$", "x":4, "y":1.25}, - {"label":"5%", "x":5, "y":1.25}, - {"label":"6^", "x":6, "y":1.25}, - {"label":"7&", "x":7, "y":1.25}, - {"label":"8*", "x":8, "y":1.25}, - {"label":"9(", "x":9, "y":1.25}, - {"label":"0)", "x":10, "y":1.25}, - {"label":"-_", "x":11, "y":1.25}, - {"label":"=+", "x":12, "y":1.25}, - {"label":"Backspace", "x":13, "y":1.25, "w":2}, - {"label":"Insert", "x":15.25, "y":1.25}, - {"label":"Home", "x":16.25, "y":1.25}, - {"label":"Page Up", "x":17.25, "y":1.25}, - - {"label":"Tab", "x":0, "y":2.25, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.25}, - {"label":"W", "x":2.5, "y":2.25}, - {"label":"E", "x":3.5, "y":2.25}, - {"label":"R", "x":4.5, "y":2.25}, - {"label":"T", "x":5.5, "y":2.25}, - {"label":"Y", "x":6.5, "y":2.25}, - {"label":"U", "x":7.5, "y":2.25}, - {"label":"I", "x":8.5, "y":2.25}, - {"label":"O", "x":9.5, "y":2.25}, - {"label":"P", "x":10.5, "y":2.25}, - {"label":"[{", "x":11.5, "y":2.25}, - {"label":"]}", "x":12.5, "y":2.25}, - {"label":"Delete", "x":15.25, "y":2.25}, - {"label":"End", "x":16.25, "y":2.25}, - {"label":"Page Down", "x":17.25, "y":2.25}, - - {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, - {"label":"A", "x":1.75, "y":3.25}, - {"label":"S", "x":2.75, "y":3.25}, - {"label":"D", "x":3.75, "y":3.25}, - {"label":"F", "x":4.75, "y":3.25}, - {"label":"G", "x":5.75, "y":3.25}, - {"label":"H", "x":6.75, "y":3.25}, - {"label":"J", "x":7.75, "y":3.25}, - {"label":"K", "x":8.75, "y":3.25}, - {"label":"L", "x":9.75, "y":3.25}, - {"label":";:", "x":10.75, "y":3.25}, - {"label":"'@", "x":11.75, "y":3.25}, - {"label":"#~", "x":12.75, "y":3.25}, - {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, - - {"label":"Shift", "x":0, "y":4.25, "w":1.25}, - {"label":"\\|", "x":1.25, "y":4.25}, - {"label":"Z", "x":2.25, "y":4.25}, - {"label":"X", "x":3.25, "y":4.25}, - {"label":"C", "x":4.25, "y":4.25}, - {"label":"V", "x":5.25, "y":4.25}, - {"label":"B", "x":6.25, "y":4.25}, - {"label":"N", "x":7.25, "y":4.25}, - {"label":"M", "x":8.25, "y":4.25}, - {"label":",<", "x":9.25, "y":4.25}, - {"label":".>", "x":10.25, "y":4.25}, - {"label":"/?", "x":11.25, "y":4.25}, - {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, - {"label":"\u2191", "x":16.25, "y":4.25}, - - {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, - {"label":"GUI", "x":1.25, "y":5.25, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, - {"label":"Alt", "x":10, "y":5.25, "w":1.25}, - {"label":"GUI", "x":11.25, "y":5.25, "w":1.25}, - {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, - {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, - {"label":"\u2190", "x":15.25, "y":5.25}, - {"label":"\u2193", "x":16.25, "y":5.25}, - {"label":"\u2192", "x":17.25, "y":5.25} + + { "matrix": [0,0], "x":0, "y":0}, + { "matrix": [1,0], "x":1.25, "y":0}, + { "matrix": [0,1], "x":2.25, "y":0}, + { "matrix": [0,2], "x":3.25, "y":0}, + { "matrix": [1,2], "x":4.25, "y":0}, + { "matrix": [0,3], "x":5.5, "y":0}, + { "matrix": [1,3], "x":6.5, "y":0}, + { "matrix": [0,4], "x":7.5, "y":0}, + { "matrix": [1,4], "x":8.5, "y":0}, + { "matrix": [0,5], "x":9.75, "y":0}, + { "matrix": [1,5], "x":10.75, "y":0}, + { "matrix": [0,6], "x":11.75, "y":0}, + { "matrix": [1,6], "x":12.75, "y":0}, + { "matrix": [0,7], "x":14, "y":0}, + { "matrix": [1,7], "x":15.25, "y":0}, + { "matrix": [0,8], "x":16.25, "y":0}, + { "matrix": [1,8], "x":17.25, "y":0}, + { "matrix": [2,0], "x":0, "y":1.25}, + { "matrix": [3,0], "x":1, "y":1.25}, + { "matrix": [2,1], "x":2, "y":1.25}, + { "matrix": [3,1], "x":3, "y":1.25}, + { "matrix": [2,2], "x":4, "y":1.25}, + { "matrix": [3,2], "x":5, "y":1.25}, + { "matrix": [2,3], "x":6, "y":1.25}, + { "matrix": [3,3], "x":7, "y":1.25}, + { "matrix": [2,4], "x":8, "y":1.25}, + { "matrix": [3,4], "x":9, "y":1.25}, + { "matrix": [2,5], "x":10, "y":1.25}, + { "matrix": [3,5], "x":11, "y":1.25}, + { "matrix": [2,6], "x":12, "y":1.25}, + { "matrix": [3,6], "x":13, "y":1.25}, + { "matrix": [2,7], "x":14, "y":1.25}, + { "matrix": [3,7], "x":15.25, "y":1.25}, + { "matrix": [2,8], "x":16.25, "y":1.25}, + { "matrix": [3,8], "x":17.25, "y":1.25}, + { "matrix": [4,0], "x":0, "y":2.25, "w":1.5}, + { "matrix": [5,0], "x":1.5, "y":2.25}, + { "matrix": [4,1], "x":2.5, "y":2.25}, + { "matrix": [5,1], "x":3.5, "y":2.25}, + { "matrix": [4,2], "x":4.5, "y":2.25}, + { "matrix": [5,2], "x":5.5, "y":2.25}, + { "matrix": [4,3], "x":6.5, "y":2.25}, + { "matrix": [5,3], "x":7.5, "y":2.25}, + { "matrix": [4,4], "x":8.5, "y":2.25}, + { "matrix": [5,4], "x":9.5, "y":2.25}, + { "matrix": [4,5], "x":10.5, "y":2.25}, + { "matrix": [5,5], "x":11.5, "y":2.25}, + { "matrix": [4,6], "x":12.5, "y":2.25}, + { "matrix": [4,7], "x":13.5, "y":2.25, "w":1.5}, + { "matrix": [5,7], "x":15.25, "y":2.25}, + { "matrix": [4,8], "x":16.25, "y":2.25}, + { "matrix": [5,8], "x":17.25, "y":2.25}, + { "matrix": [6,0], "x":0, "y":3.25, "w":1.75}, + { "matrix": [7,0], "x":1.75, "y":3.25}, + { "matrix": [6,1], "x":2.75, "y":3.25}, + { "matrix": [7,1], "x":3.75, "y":3.25}, + { "matrix": [6,2], "x":4.75, "y":3.25}, + { "matrix": [7,2], "x":5.75, "y":3.25}, + { "matrix": [6,3], "x":6.75, "y":3.25}, + { "matrix": [7,3], "x":7.75, "y":3.25}, + { "matrix": [6,4], "x":8.75, "y":3.25}, + { "matrix": [7,4], "x":9.75, "y":3.25}, + { "matrix": [6,5], "x":10.75, "y":3.25}, + { "matrix": [7,5], "x":11.75, "y":3.25}, + { "matrix": [6,6], "x":12.75, "y":3.25, "w":2.25}, + { "matrix": [8,0], "x":0, "y":4.25, "w":1.25}, + { "matrix": [9,0], "x":1.25, "y":4.25}, + { "matrix": [8,1], "x":2.25, "y":4.25}, + { "matrix": [9,1], "x":3.25, "y":4.25}, + { "matrix": [8,2], "x":4.25, "y":4.25}, + { "matrix": [9,2], "x":5.25, "y":4.25}, + { "matrix": [8,3], "x":6.25, "y":4.25}, + { "matrix": [9,3], "x":7.25, "y":4.25}, + { "matrix": [8,4], "x":8.25, "y":4.25}, + { "matrix": [9,4], "x":9.25, "y":4.25}, + { "matrix": [8,5], "x":10.25, "y":4.25}, + { "matrix": [9,5], "x":11.25, "y":4.25}, + { "matrix": [8,6], "x":12.25, "y":4.25, "w":1.75}, + { "matrix": [8,7], "x":14, "y":4.25}, + { "matrix": [8,8], "x":16.25, "y":4.25}, + { "matrix": [10,0], "x":0, "y":5.25, "w":1.25}, + { "matrix": [11,0], "x":1.25, "y":5.25, "w":1.25}, + { "matrix": [10,1], "x":2.5, "y":5.25, "w":1.25}, + { "matrix": [10,3], "x":3.75, "y":5.25, "w":6.25}, + { "matrix": [10,5], "x":10, "y":5.25, "w":1.25}, + { "matrix": [11,5], "x":11.25, "y":5.25, "w":1.25}, + { "matrix": [10,6], "x":12.5, "y":5.25, "w":1.25}, + { "matrix": [10,7], "x":13.75, "y":5.25, "w":1.25}, + { "matrix": [11,7], "x":15.25, "y":5.25}, + { "matrix": [10,8], "x":16.25, "y":5.25}, + { "matrix": [11,8], "x":17.25, "y":5.25} ] } } -} +} \ No newline at end of file diff --git a/keyboards/studiokestra/galatea/rev1/keymaps/default/keymap.c b/keyboards/studiokestra/galatea/rev1/keymaps/default/keymap.c new file mode 100644 index 000000000000..32db99b386d0 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev1/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +// Copyright 2023 studiokestra (@studiokestra) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │LBk│RBk│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Mo1│ │ ↑ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + [0] = LAYOUT( + KC_ESC, 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_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, + 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_DEL, KC_END, KC_PGDN, + 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_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), + + [1] = LAYOUT( + QK_BOOT, 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, 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/studiokestra/galatea/rev1/keymaps/via/keymap.c b/keyboards/studiokestra/galatea/rev1/keymaps/via/keymap.c new file mode 100644 index 000000000000..c0d093334932 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev1/keymaps/via/keymap.c @@ -0,0 +1,40 @@ +// Copyright 2023 studiokestra (@studiokestra) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │LBk│RBk│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Mo1│ │ ↑ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + + [0] = LAYOUT( + KC_ESC, 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_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, + 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_DEL, KC_END, KC_PGDN, + 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_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), + + [1] = LAYOUT( + QK_BOOT, 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, 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/studiokestra/galatea/keymaps/via/rules.mk b/keyboards/studiokestra/galatea/rev1/keymaps/via/rules.mk similarity index 100% rename from keyboards/studiokestra/galatea/keymaps/via/rules.mk rename to keyboards/studiokestra/galatea/rev1/keymaps/via/rules.mk diff --git a/keyboards/studiokestra/galatea/rev1/rev1.c b/keyboards/studiokestra/galatea/rev1/rev1.c deleted file mode 100644 index f34f9f92002c..000000000000 --- a/keyboards/studiokestra/galatea/rev1/rev1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2021 Studio Kestra - * - * 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 "rev1.h" diff --git a/keyboards/studiokestra/galatea/rev1/rev1.h b/keyboards/studiokestra/galatea/rev1/rev1.h deleted file mode 100644 index c319dfa63ffc..000000000000 --- a/keyboards/studiokestra/galatea/rev1/rev1.h +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright 2021 Studio Kestra - * - * 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 ___ KC_NO - -/* - * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │00 │ │01 │02 │12 │03 │ │13 │04 │14 │05 │ │15 │06 │16 │07 │ │17 │08 │18 │ Standard - * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ - * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ - * │00 ││10 │01 │02 │12 ││03 │13 │04 │14 ││05 │15 │06 │16 ││07 │ │17 │08 │18 │ F13 - * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐ - * │20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │36 │27 │ │37 │28 │38 │ │36 │ 2u Backspace - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤ - * │40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │46 │47 │ │57 │48 │58 │ │ │ - * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐47 │ ISO Enter - * LShift │60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │ │66 │ │ - * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤ - * │80 │ │80 │90 │81 │91 │82 │92 │83 │93 │84 │94 │85 │95 │86 │87 │ │88 │ │86 │ 2.75u RShift - * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ └──────────┘ - * │A0 │B0 │A1 │A3 │A5 │B5 │A6 │A7 │ │B7 │A8 │B8 │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ - * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ - * │A0 │B0 │A1 │A3 │B5 │A6 │A7 │ Tsangan/WKL - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ - * ┌────┬────┬───────────────────────────────────────┬────┬────┐ - * │A0 │B0 │A3 │A6 │A7 │ WK 10u Space - * └────┴────┴───────────────────────────────────────┴────┴────┘ - * ┌─────┐ ┌───────────────────────────────────────┐ ┌─────┐ - * │A0 │ │A3 │ │A7 │ WKL 10u Space - * └─────┘ └───────────────────────────────────────┘ └─────┘ - */ - -#define LAYOUT_all(\ - k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38, \ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, k48, k58, \ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, \ - k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k88, \ - kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \ - { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ - { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \ - { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \ - { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \ - { k80, k81, k82, k83, k84, k85, k86, k87, k88 }, \ - { k90, k91, k92, k93, k94, k95, ___, ___, ___ }, \ - { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \ - { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \ -} - -#define LAYOUT_tkl_f13_ansi(\ - k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, k28, k38, \ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, k48, k58, \ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, \ - k80, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k88, \ - kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \ - { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \ - { k20, k21, k22, k23, k24, k25, k26, ___, k28 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ - { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \ - { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \ - { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \ - { k80, k81, k82, k83, k84, k85, k86, ___, k88 }, \ - { ___, k91, k92, k93, k94, k95, ___, ___, ___ }, \ - { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \ - { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \ -} - -#define LAYOUT_tkl_f13_iso(\ - k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, k28, k38, \ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k57, k48, k58, \ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k47, \ - k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k88, \ - kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \ - { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \ - { k20, k21, k22, k23, k24, k25, k26, ___, k28 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ - { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \ - { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \ - { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \ - { k80, k81, k82, k83, k84, k85, k86, ___, k88 }, \ - { k90, k91, k92, k93, k94, k95, ___, ___, ___ }, \ - { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \ - { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \ -} diff --git a/keyboards/studiokestra/galatea/rev1/rules.mk b/keyboards/studiokestra/galatea/rev1/rules.mk index 6fe874e748be..6e7633bfe015 100644 --- a/keyboards/studiokestra/galatea/rev1/rules.mk +++ b/keyboards/studiokestra/galatea/rev1/rules.mk @@ -1,12 +1 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # 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 = no # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output +# This file intentionally left blank diff --git a/keyboards/studiokestra/galatea/rev2/config.h b/keyboards/studiokestra/galatea/rev2/config.h new file mode 100644 index 000000000000..40c94daf6202 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev2/config.h @@ -0,0 +1,22 @@ +// Copyright 2023 studiokestra (@studiokestra) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define RGB_DI_PIN D4 +#define RGBLED_NUM 24 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +#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_MODE_TWINKLE diff --git a/keyboards/studiokestra/galatea/rev2/info.json b/keyboards/studiokestra/galatea/rev2/info.json index dc3865c584a5..b3af7d934fe0 100644 --- a/keyboards/studiokestra/galatea/rev2/info.json +++ b/keyboards/studiokestra/galatea/rev2/info.json @@ -1,321 +1,130 @@ { - "keyboard_name": "Galatea", "manufacturer": "Studio Kestra", - "url": "https://studiokestra.ca/galatea", + "keyboard_name": "Galatea", "maintainer": "studiokestra", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7", "B2", "D5"], + "rows": ["D1", "D0", "B0", "B7", "E6", "B3", "B6", "C6", "D6", "D7", "B4", "D3"] + }, + "processor": "atmega32u4", + "url": "", "usb": { - "vid": "0x7C10", + "device_version": "1.0.0", "pid": "0x8802", - "device_version": "0.0.2" + "vid": "0x7C10" }, "indicators": { "caps_lock": "B5", "scroll_lock": "D2", "on_state": 0 }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu", "layouts": { - "LAYOUT_all": { - "layout": [ - {"x": 0, "y": 0}, - - {"x": 1.25, "y": 0}, - {"x": 2.25, "y": 0}, - {"x": 3.25, "y": 0}, - {"x": 4.25, "y": 0}, - {"x": 5.5, "y": 0}, - {"x": 6.5, "y": 0}, - {"x": 7.5, "y": 0}, - {"x": 8.5, "y": 0}, - {"x": 9.75, "y": 0}, - {"x": 10.75, "y": 0}, - {"x": 11.75, "y": 0}, - {"x": 12.75, "y": 0}, - {"x": 14, "y": 0}, - - {"x": 15.25, "y": 0}, - {"x": 16.25, "y": 0}, - {"x": 17.25, "y": 0}, - - {"x": 0, "y": 1.25}, - {"x": 1, "y": 1.25}, - {"x": 2, "y": 1.25}, - {"x": 3, "y": 1.25}, - {"x": 4, "y": 1.25}, - {"x": 5, "y": 1.25}, - {"x": 6, "y": 1.25}, - {"x": 7, "y": 1.25}, - {"x": 8, "y": 1.25}, - {"x": 9, "y": 1.25}, - {"x": 10, "y": 1.25}, - {"x": 11, "y": 1.25}, - {"x": 12, "y": 1.25}, - {"x": 13, "y": 1.25}, - {"x": 14, "y": 1.25}, - - {"x": 15.25, "y": 1.25}, - {"x": 16.25, "y": 1.25}, - {"x": 17.25, "y": 1.25}, - - {"x": 0, "y": 2.25, "w": 1.5}, - {"x": 1.5, "y": 2.25}, - {"x": 2.5, "y": 2.25}, - {"x": 3.5, "y": 2.25}, - {"x": 4.5, "y": 2.25}, - {"x": 5.5, "y": 2.25}, - {"x": 6.5, "y": 2.25}, - {"x": 7.5, "y": 2.25}, - {"x": 8.5, "y": 2.25}, - {"x": 9.5, "y": 2.25}, - {"x": 10.5, "y": 2.25}, - {"x": 11.5, "y": 2.25}, - {"x": 12.5, "y": 2.25}, - {"x": 13.5, "y": 2.25, "w": 1.5}, - - {"x": 15.25, "y": 2.25}, - {"x": 16.25, "y": 2.25}, - {"x": 17.25, "y": 2.25}, - - {"x": 0, "y": 3.25, "w": 1.75}, - {"x": 1.75, "y": 3.25}, - {"x": 2.75, "y": 3.25}, - {"x": 3.75, "y": 3.25}, - {"x": 4.75, "y": 3.25}, - {"x": 5.75, "y": 3.25}, - {"x": 6.75, "y": 3.25}, - {"x": 7.75, "y": 3.25}, - {"x": 8.75, "y": 3.25}, - {"x": 9.75, "y": 3.25}, - {"x": 10.75, "y": 3.25}, - {"x": 11.75, "y": 3.25}, - {"x": 12.75, "y": 3.25, "w": 2.25}, - - {"x": 0, "y": 4.25, "w": 1.25}, - {"x": 1.25, "y": 4.25}, - {"x": 2.25, "y": 4.25}, - {"x": 3.25, "y": 4.25}, - {"x": 4.25, "y": 4.25}, - {"x": 5.25, "y": 4.25}, - {"x": 6.25, "y": 4.25}, - {"x": 7.25, "y": 4.25}, - {"x": 8.25, "y": 4.25}, - {"x": 9.25, "y": 4.25}, - {"x": 10.25, "y": 4.25}, - {"x": 11.25, "y": 4.25}, - {"x": 12.25, "y": 4.25, "w": 1.75}, - {"x": 14, "y": 4.25}, - - {"x": 16.25, "y": 4.25}, - - {"x": 0, "y": 5.25, "w": 1.25}, - {"x": 1.25, "y": 5.25, "w": 1.25}, - {"x": 2.5, "y": 5.25, "w": 1.25}, - {"x": 3.75, "y": 5.25, "w": 6.25}, - {"x": 10, "y": 5.25, "w": 1.25}, - {"x": 11.25, "y": 5.25, "w": 1.25}, - {"x": 12.5, "y": 5.25, "w": 1.25}, - {"x": 13.75, "y": 5.25, "w": 1.25}, - - {"x": 15.25, "y": 5.25}, - {"x": 16.25, "y": 5.25}, - {"x": 17.25, "y": 5.25} - ] - }, - "LAYOUT_tkl_f13_ansi": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1.25, "y":0}, - {"label":"F2", "x":2.25, "y":0}, - {"label":"F3", "x":3.25, "y":0}, - {"label":"F4", "x":4.25, "y":0}, - {"label":"F5", "x":5.5, "y":0}, - {"label":"F6", "x":6.5, "y":0}, - {"label":"F7", "x":7.5, "y":0}, - {"label":"F8", "x":8.5, "y":0}, - {"label":"F9", "x":9.75, "y":0}, - {"label":"F10", "x":10.75, "y":0}, - {"label":"F11", "x":11.75, "y":0}, - {"label":"F12", "x":12.75, "y":0}, - {"label":"F13", "x":14, "y":0}, - {"label":"Print Screen", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, - - {"label":"`~", "x":0, "y":1.25}, - {"label":"1!", "x":1, "y":1.25}, - {"label":"2@", "x":2, "y":1.25}, - {"label":"3#", "x":3, "y":1.25}, - {"label":"4$", "x":4, "y":1.25}, - {"label":"5%", "x":5, "y":1.25}, - {"label":"6^", "x":6, "y":1.25}, - {"label":"7&", "x":7, "y":1.25}, - {"label":"8*", "x":8, "y":1.25}, - {"label":"9(", "x":9, "y":1.25}, - {"label":"0)", "x":10, "y":1.25}, - {"label":"-_", "x":11, "y":1.25}, - {"label":"=+", "x":12, "y":1.25}, - {"label":"Backspace", "x":13, "y":1.25, "w":2}, - {"label":"Insert", "x":15.25, "y":1.25}, - {"label":"Home", "x":16.25, "y":1.25}, - {"label":"Page Up", "x":17.25, "y":1.25}, - - {"label":"Tab", "x":0, "y":2.25, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.25}, - {"label":"W", "x":2.5, "y":2.25}, - {"label":"E", "x":3.5, "y":2.25}, - {"label":"R", "x":4.5, "y":2.25}, - {"label":"T", "x":5.5, "y":2.25}, - {"label":"Y", "x":6.5, "y":2.25}, - {"label":"U", "x":7.5, "y":2.25}, - {"label":"I", "x":8.5, "y":2.25}, - {"label":"O", "x":9.5, "y":2.25}, - {"label":"P", "x":10.5, "y":2.25}, - {"label":"[{", "x":11.5, "y":2.25}, - {"label":"]}", "x":12.5, "y":2.25}, - {"label":"\\|", "x":13.5, "y":2.25, "w":1.5}, - {"label":"Delete", "x":15.25, "y":2.25}, - {"label":"End", "x":16.25, "y":2.25}, - {"label":"Page Down", "x":17.25, "y":2.25}, - - {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, - {"label":"A", "x":1.75, "y":3.25}, - {"label":"S", "x":2.75, "y":3.25}, - {"label":"D", "x":3.75, "y":3.25}, - {"label":"F", "x":4.75, "y":3.25}, - {"label":"G", "x":5.75, "y":3.25}, - {"label":"H", "x":6.75, "y":3.25}, - {"label":"J", "x":7.75, "y":3.25}, - {"label":"K", "x":8.75, "y":3.25}, - {"label":"L", "x":9.75, "y":3.25}, - {"label":";:", "x":10.75, "y":3.25}, - {"label":"'\"", "x":11.75, "y":3.25}, - {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, - - {"label":"Shift", "x":0, "y":4.25, "w":2.25}, - {"label":"Z", "x":2.25, "y":4.25}, - {"label":"X", "x":3.25, "y":4.25}, - {"label":"C", "x":4.25, "y":4.25}, - {"label":"V", "x":5.25, "y":4.25}, - {"label":"B", "x":6.25, "y":4.25}, - {"label":"N", "x":7.25, "y":4.25}, - {"label":"M", "x":8.25, "y":4.25}, - {"label":",<", "x":9.25, "y":4.25}, - {"label":".>", "x":10.25, "y":4.25}, - {"label":"/?", "x":11.25, "y":4.25}, - {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, - {"label":"\u2191", "x":16.25, "y":4.25}, - - {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, - {"label":"GUI", "x":1.25, "y":5.25, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, - {"label":"Alt", "x":10, "y":5.25, "w":1.25}, - {"label":"GUI", "x":11.25, "y":5.25, "w":1.25}, - {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, - {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, - {"label":"\u2190", "x":15.25, "y":5.25}, - {"label":"\u2193", "x":16.25, "y":5.25}, - {"label":"\u2192", "x":17.25, "y":5.25} - ] - }, - "LAYOUT_tkl_f13_iso": { + "LAYOUT": { "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1.25, "y":0}, - {"label":"F2", "x":2.25, "y":0}, - {"label":"F3", "x":3.25, "y":0}, - {"label":"F4", "x":4.25, "y":0}, - {"label":"F5", "x":5.5, "y":0}, - {"label":"F6", "x":6.5, "y":0}, - {"label":"F7", "x":7.5, "y":0}, - {"label":"F8", "x":8.5, "y":0}, - {"label":"F9", "x":9.75, "y":0}, - {"label":"F10", "x":10.75, "y":0}, - {"label":"F11", "x":11.75, "y":0}, - {"label":"F12", "x":12.75, "y":0}, - {"label":"F13", "x":14, "y":0}, - {"label":"Print Screen", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, - - {"label":"`~", "x":0, "y":1.25}, - {"label":"1!", "x":1, "y":1.25}, - {"label":"2\"", "x":2, "y":1.25}, - {"label":"3\u00a3", "x":3, "y":1.25}, - {"label":"4$", "x":4, "y":1.25}, - {"label":"5%", "x":5, "y":1.25}, - {"label":"6^", "x":6, "y":1.25}, - {"label":"7&", "x":7, "y":1.25}, - {"label":"8*", "x":8, "y":1.25}, - {"label":"9(", "x":9, "y":1.25}, - {"label":"0)", "x":10, "y":1.25}, - {"label":"-_", "x":11, "y":1.25}, - {"label":"=+", "x":12, "y":1.25}, - {"label":"Backspace", "x":13, "y":1.25, "w":2}, - {"label":"Insert", "x":15.25, "y":1.25}, - {"label":"Home", "x":16.25, "y":1.25}, - {"label":"Page Up", "x":17.25, "y":1.25}, - - {"label":"Tab", "x":0, "y":2.25, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.25}, - {"label":"W", "x":2.5, "y":2.25}, - {"label":"E", "x":3.5, "y":2.25}, - {"label":"R", "x":4.5, "y":2.25}, - {"label":"T", "x":5.5, "y":2.25}, - {"label":"Y", "x":6.5, "y":2.25}, - {"label":"U", "x":7.5, "y":2.25}, - {"label":"I", "x":8.5, "y":2.25}, - {"label":"O", "x":9.5, "y":2.25}, - {"label":"P", "x":10.5, "y":2.25}, - {"label":"[{", "x":11.5, "y":2.25}, - {"label":"]}", "x":12.5, "y":2.25}, - {"label":"Delete", "x":15.25, "y":2.25}, - {"label":"End", "x":16.25, "y":2.25}, - {"label":"Page Down", "x":17.25, "y":2.25}, - - {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, - {"label":"A", "x":1.75, "y":3.25}, - {"label":"S", "x":2.75, "y":3.25}, - {"label":"D", "x":3.75, "y":3.25}, - {"label":"F", "x":4.75, "y":3.25}, - {"label":"G", "x":5.75, "y":3.25}, - {"label":"H", "x":6.75, "y":3.25}, - {"label":"J", "x":7.75, "y":3.25}, - {"label":"K", "x":8.75, "y":3.25}, - {"label":"L", "x":9.75, "y":3.25}, - {"label":";:", "x":10.75, "y":3.25}, - {"label":"'@", "x":11.75, "y":3.25}, - {"label":"#~", "x":12.75, "y":3.25}, - {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, - - {"label":"Shift", "x":0, "y":4.25, "w":1.25}, - {"label":"\\|", "x":1.25, "y":4.25}, - {"label":"Z", "x":2.25, "y":4.25}, - {"label":"X", "x":3.25, "y":4.25}, - {"label":"C", "x":4.25, "y":4.25}, - {"label":"V", "x":5.25, "y":4.25}, - {"label":"B", "x":6.25, "y":4.25}, - {"label":"N", "x":7.25, "y":4.25}, - {"label":"M", "x":8.25, "y":4.25}, - {"label":",<", "x":9.25, "y":4.25}, - {"label":".>", "x":10.25, "y":4.25}, - {"label":"/?", "x":11.25, "y":4.25}, - {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, - {"label":"\u2191", "x":16.25, "y":4.25}, - - {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, - {"label":"GUI", "x":1.25, "y":5.25, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, - {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, - {"label":"Alt", "x":10, "y":5.25, "w":1.25}, - {"label":"GUI", "x":11.25, "y":5.25, "w":1.25}, - {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, - {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, - {"label":"\u2190", "x":15.25, "y":5.25}, - {"label":"\u2193", "x":16.25, "y":5.25}, - {"label":"\u2192", "x":17.25, "y":5.25} + + { "matrix": [0,0], "x":0, "y":0}, + { "matrix": [1,0], "x":1.25, "y":0}, + { "matrix": [0,1], "x":2.25, "y":0}, + { "matrix": [0,2], "x":3.25, "y":0}, + { "matrix": [1,2], "x":4.25, "y":0}, + { "matrix": [0,3], "x":5.5, "y":0}, + { "matrix": [1,3], "x":6.5, "y":0}, + { "matrix": [0,4], "x":7.5, "y":0}, + { "matrix": [1,4], "x":8.5, "y":0}, + { "matrix": [0,5], "x":9.75, "y":0}, + { "matrix": [1,5], "x":10.75, "y":0}, + { "matrix": [0,6], "x":11.75, "y":0}, + { "matrix": [1,6], "x":12.75, "y":0}, + { "matrix": [0,7], "x":14, "y":0}, + { "matrix": [1,7], "x":15.25, "y":0}, + { "matrix": [0,8], "x":16.25, "y":0}, + { "matrix": [1,8], "x":17.25, "y":0}, + { "matrix": [2,0], "x":0, "y":1.25}, + { "matrix": [3,0], "x":1, "y":1.25}, + { "matrix": [2,1], "x":2, "y":1.25}, + { "matrix": [3,1], "x":3, "y":1.25}, + { "matrix": [2,2], "x":4, "y":1.25}, + { "matrix": [3,2], "x":5, "y":1.25}, + { "matrix": [2,3], "x":6, "y":1.25}, + { "matrix": [3,3], "x":7, "y":1.25}, + { "matrix": [2,4], "x":8, "y":1.25}, + { "matrix": [3,4], "x":9, "y":1.25}, + { "matrix": [2,5], "x":10, "y":1.25}, + { "matrix": [3,5], "x":11, "y":1.25}, + { "matrix": [2,6], "x":12, "y":1.25}, + { "matrix": [3,6], "x":13, "y":1.25}, + { "matrix": [2,7], "x":14, "y":1.25}, + { "matrix": [3,7], "x":15.25, "y":1.25}, + { "matrix": [2,8], "x":16.25, "y":1.25}, + { "matrix": [3,8], "x":17.25, "y":1.25}, + { "matrix": [4,0], "x":0, "y":2.25, "w":1.5}, + { "matrix": [5,0], "x":1.5, "y":2.25}, + { "matrix": [4,1], "x":2.5, "y":2.25}, + { "matrix": [5,1], "x":3.5, "y":2.25}, + { "matrix": [4,2], "x":4.5, "y":2.25}, + { "matrix": [5,2], "x":5.5, "y":2.25}, + { "matrix": [4,3], "x":6.5, "y":2.25}, + { "matrix": [5,3], "x":7.5, "y":2.25}, + { "matrix": [4,4], "x":8.5, "y":2.25}, + { "matrix": [5,4], "x":9.5, "y":2.25}, + { "matrix": [4,5], "x":10.5, "y":2.25}, + { "matrix": [5,5], "x":11.5, "y":2.25}, + { "matrix": [4,6], "x":12.5, "y":2.25}, + { "matrix": [4,7], "x":13.5, "y":2.25, "w":1.5}, + { "matrix": [5,7], "x":15.25, "y":2.25}, + { "matrix": [4,8], "x":16.25, "y":2.25}, + { "matrix": [5,8], "x":17.25, "y":2.25}, + { "matrix": [6,0], "x":0, "y":3.25, "w":1.75}, + { "matrix": [7,0], "x":1.75, "y":3.25}, + { "matrix": [6,1], "x":2.75, "y":3.25}, + { "matrix": [7,1], "x":3.75, "y":3.25}, + { "matrix": [6,2], "x":4.75, "y":3.25}, + { "matrix": [7,2], "x":5.75, "y":3.25}, + { "matrix": [6,3], "x":6.75, "y":3.25}, + { "matrix": [7,3], "x":7.75, "y":3.25}, + { "matrix": [6,4], "x":8.75, "y":3.25}, + { "matrix": [7,4], "x":9.75, "y":3.25}, + { "matrix": [6,5], "x":10.75, "y":3.25}, + { "matrix": [7,5], "x":11.75, "y":3.25}, + { "matrix": [6,6], "x":12.75, "y":3.25, "w":2.25}, + { "matrix": [8,0], "x":0, "y":4.25, "w":1.25}, + { "matrix": [9,0], "x":1.25, "y":4.25}, + { "matrix": [8,1], "x":2.25, "y":4.25}, + { "matrix": [9,1], "x":3.25, "y":4.25}, + { "matrix": [8,2], "x":4.25, "y":4.25}, + { "matrix": [9,2], "x":5.25, "y":4.25}, + { "matrix": [8,3], "x":6.25, "y":4.25}, + { "matrix": [9,3], "x":7.25, "y":4.25}, + { "matrix": [8,4], "x":8.25, "y":4.25}, + { "matrix": [9,4], "x":9.25, "y":4.25}, + { "matrix": [8,5], "x":10.25, "y":4.25}, + { "matrix": [9,5], "x":11.25, "y":4.25}, + { "matrix": [8,6], "x":12.25, "y":4.25, "w":1.75}, + { "matrix": [8,7], "x":14, "y":4.25}, + { "matrix": [8,8], "x":16.25, "y":4.25}, + { "matrix": [10,0], "x":0, "y":5.25, "w":1.25}, + { "matrix": [11,0], "x":1.25, "y":5.25, "w":1.25}, + { "matrix": [10,1], "x":2.5, "y":5.25, "w":1.25}, + { "matrix": [10,3], "x":3.75, "y":5.25, "w":6.25}, + { "matrix": [10,5], "x":10, "y":5.25, "w":1.25}, + { "matrix": [11,5], "x":11.25, "y":5.25, "w":1.25}, + { "matrix": [10,6], "x":12.5, "y":5.25, "w":1.25}, + { "matrix": [10,7], "x":13.75, "y":5.25, "w":1.25}, + { "matrix": [11,7], "x":15.25, "y":5.25}, + { "matrix": [10,8], "x":16.25, "y":5.25}, + { "matrix": [11,8], "x":17.25, "y":5.25} ] } } -} +} \ No newline at end of file diff --git a/keyboards/studiokestra/galatea/rev2/keymaps/default/keymap.c b/keyboards/studiokestra/galatea/rev2/keymaps/default/keymap.c new file mode 100644 index 000000000000..32db99b386d0 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev2/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +// Copyright 2023 studiokestra (@studiokestra) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │LBk│RBk│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Mo1│ │ ↑ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + [0] = LAYOUT( + KC_ESC, 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_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, + 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_DEL, KC_END, KC_PGDN, + 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_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), + + [1] = LAYOUT( + QK_BOOT, 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, 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/studiokestra/galatea/rev2/keymaps/via/keymap.c b/keyboards/studiokestra/galatea/rev2/keymaps/via/keymap.c new file mode 100644 index 000000000000..c0d093334932 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev2/keymaps/via/keymap.c @@ -0,0 +1,40 @@ +// Copyright 2023 studiokestra (@studiokestra) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13│ │PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │LBk│RBk│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Mo1│ │ ↑ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + + [0] = LAYOUT( + KC_ESC, 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_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, + 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_DEL, KC_END, KC_PGDN, + 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_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), + + [1] = LAYOUT( + QK_BOOT, 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, 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/studiokestra/galatea/rev2/keymaps/via/rules.mk b/keyboards/studiokestra/galatea/rev2/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/studiokestra/galatea/rev2/rev2.c b/keyboards/studiokestra/galatea/rev2/rev2.c deleted file mode 100644 index 5e7125b0b61f..000000000000 --- a/keyboards/studiokestra/galatea/rev2/rev2.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2021 Studio Kestra - * - * 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 "rev2.h" diff --git a/keyboards/studiokestra/galatea/rev2/rev2.h b/keyboards/studiokestra/galatea/rev2/rev2.h deleted file mode 100644 index c319dfa63ffc..000000000000 --- a/keyboards/studiokestra/galatea/rev2/rev2.h +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright 2021 Studio Kestra - * - * 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 ___ KC_NO - -/* - * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │00 │ │01 │02 │12 │03 │ │13 │04 │14 │05 │ │15 │06 │16 │07 │ │17 │08 │18 │ Standard - * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ - * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ - * │00 ││10 │01 │02 │12 ││03 │13 │04 │14 ││05 │15 │06 │16 ││07 │ │17 │08 │18 │ F13 - * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐ - * │20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │36 │27 │ │37 │28 │38 │ │36 │ 2u Backspace - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤ - * │40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │46 │47 │ │57 │48 │58 │ │ │ - * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐47 │ ISO Enter - * LShift │60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │ │66 │ │ - * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤ - * │80 │ │80 │90 │81 │91 │82 │92 │83 │93 │84 │94 │85 │95 │86 │87 │ │88 │ │86 │ 2.75u RShift - * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ └──────────┘ - * │A0 │B0 │A1 │A3 │A5 │B5 │A6 │A7 │ │B7 │A8 │B8 │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ - * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ - * │A0 │B0 │A1 │A3 │B5 │A6 │A7 │ Tsangan/WKL - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ - * ┌────┬────┬───────────────────────────────────────┬────┬────┐ - * │A0 │B0 │A3 │A6 │A7 │ WK 10u Space - * └────┴────┴───────────────────────────────────────┴────┴────┘ - * ┌─────┐ ┌───────────────────────────────────────┐ ┌─────┐ - * │A0 │ │A3 │ │A7 │ WKL 10u Space - * └─────┘ └───────────────────────────────────────┘ └─────┘ - */ - -#define LAYOUT_all(\ - k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38, \ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, k48, k58, \ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, \ - k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k88, \ - kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \ - { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ - { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \ - { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \ - { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \ - { k80, k81, k82, k83, k84, k85, k86, k87, k88 }, \ - { k90, k91, k92, k93, k94, k95, ___, ___, ___ }, \ - { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \ - { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \ -} - -#define LAYOUT_tkl_f13_ansi(\ - k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, k28, k38, \ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, k48, k58, \ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, \ - k80, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k88, \ - kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \ - { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \ - { k20, k21, k22, k23, k24, k25, k26, ___, k28 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ - { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \ - { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \ - { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \ - { k80, k81, k82, k83, k84, k85, k86, ___, k88 }, \ - { ___, k91, k92, k93, k94, k95, ___, ___, ___ }, \ - { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \ - { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \ -} - -#define LAYOUT_tkl_f13_iso(\ - k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, k28, k38, \ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k57, k48, k58, \ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k47, \ - k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k88, \ - kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \ - { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \ - { k20, k21, k22, k23, k24, k25, k26, ___, k28 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \ - { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ - { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \ - { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \ - { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \ - { k80, k81, k82, k83, k84, k85, k86, ___, k88 }, \ - { k90, k91, k92, k93, k94, k95, ___, ___, ___ }, \ - { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \ - { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \ -} diff --git a/keyboards/studiokestra/galatea/rev2/rules.mk b/keyboards/studiokestra/galatea/rev2/rules.mk index a927de843cb1..6e7633bfe015 100644 --- a/keyboards/studiokestra/galatea/rev2/rules.mk +++ b/keyboards/studiokestra/galatea/rev2/rules.mk @@ -1,12 +1 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # 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 = no # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output +# This file intentionally left blank diff --git a/keyboards/studiokestra/galatea/rules.mk b/keyboards/studiokestra/galatea/rules.mk index c60419c59e68..b5b1db42388c 100644 --- a/keyboards/studiokestra/galatea/rules.mk +++ b/keyboards/studiokestra/galatea/rules.mk @@ -1 +1 @@ -DEFAULT_FOLDER = studiokestra/galatea/rev1 +DEFAULT_FOLDER = studiokestra/galatea/rev1 \ No newline at end of file From 4992df56b8202e206f83ff529033864141e681ed Mon Sep 17 00:00:00 2001 From: Lisa Ugray Date: Mon, 3 Apr 2023 01:39:52 -0400 Subject: [PATCH 24/73] Add an alternate layout definition for Keyboardio Model 01 (#20245) --- keyboards/keyboardio/model01/model01.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/keyboards/keyboardio/model01/model01.h b/keyboards/keyboardio/model01/model01.h index 870cb441f319..8e494cca30d0 100644 --- a/keyboards/keyboardio/model01/model01.h +++ b/keyboards/keyboardio/model01/model01.h @@ -38,6 +38,24 @@ {R30, R31, R32, R33, R34, R35, R36, R37} \ } +#define LAYOUT_thumb_row( \ + L07, L06, L05, L04, L03, L02, R05, R04, R03, R02, R01, R00, \ + L17, L16, L15, L14, L13, L12, L01, R06, R15, R14, R13, R12, R11, R10, \ + L27, L26, L25, L24, L23, L22, L11, R16, R25, R24, R23, R22, R21, R20, \ + L37, L36, L35, L34, L33, L32, L21, R26, R35, R34, R33, R32, R31, R30, \ + L00, L10, L20, L30, R37, R27, R17, R07, \ + L31, R36 \ + ) { \ + {L00, L01, L02, L03, L04, L05, L06, L07}, \ + {L10, L11, L12, L13, L14, L15, L16, L17}, \ + {L20, L21, L22, L23, L24, L25, L26, L27}, \ + {L30, L31, L32, L33, L34, L35, L36, L37}, \ + {R00, R01, R02, R03, R04, R05, R06, R07}, \ + {R10, R11, R12, R13, R14, R15, R16, R17}, \ + {R20, R21, R22, R23, R24, R25, R26, R27}, \ + {R30, R31, R32, R33, R34, R35, R36, R37} \ + } + #include "wire-protocol-constants.h" #define I2C_ADDR_LEFT (0x58 << 1) #define I2C_ADDR_RIGHT (I2C_ADDR_LEFT + 6) From 12de0297edc601be867ea4e32b741967e88a2847 Mon Sep 17 00:00:00 2001 From: Julius Degesys Date: Mon, 3 Apr 2023 01:42:14 -0400 Subject: [PATCH 25/73] Suggest `qmk list-keyboards` when testing build environment (#19471) Co-authored-by: Joel Challis --- docs/newbs_getting_started.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md index 91bfa083102a..b0d28d89d163 100644 --- a/docs/newbs_getting_started.md +++ b/docs/newbs_getting_started.md @@ -172,6 +172,8 @@ For example, to build a firmware for a Clueboard 66% you would use: qmk compile -kb clueboard/66/rev3 -km default +?> The keyboard option is the path relative to the keyboard directory, the above example would be found in `qmk_firmware/keyboards/clueboard/66/rev3`. If you're unsure you can view a full list of supported keyboards with `qmk list-keyboards`. + When it is done you should have a lot of output that ends similar to this: ``` From c58610bea35d3dcf362b11064830f51c97df91a4 Mon Sep 17 00:00:00 2001 From: Purdea Andrei Date: Mon, 3 Apr 2023 08:45:46 +0300 Subject: [PATCH 26/73] Data-driven updates to overnumpad controller keyboards (#20259) --- keyboards/ibm/model_m_4th_gen/info.json | 2561 ++++++++++++++++ .../model_m_4th_gen/overnumpad_1xb/config.h | 35 +- .../model_m_4th_gen/overnumpad_1xb/info.json | 28 +- .../overnumpad_1xb/overnumpad_1xb.c | 24 - .../overnumpad_1xb/overnumpad_1xb.h | 91 - .../classic_ultracl_post_2013/info.json | 2635 +++++++++++++++- .../overnumpad_1xb/config.h | 34 +- .../overnumpad_1xb/info.json | 20 + .../overnumpad_1xb/overnumpad_1xb.c | 24 - .../overnumpad_1xb/overnumpad_1xb.h | 88 - .../overnumpad_1xb/readme.md | 2 +- .../classic_ultracl_pre_2013/info.json | 2646 +++++++++++++++- .../overnumpad_1xb/config.h | 34 +- .../overnumpad_1xb/info.json | 20 + .../overnumpad_1xb/overnumpad_1xb.c | 24 - .../overnumpad_1xb/overnumpad_1xb.h | 88 - .../overnumpad_1xb/readme.md | 2 +- keyboards/unicomp/pc122/info.json | 2001 ++++++++++++- .../unicomp/pc122/overnumpad_1xb/config.h | 34 +- .../unicomp/pc122/overnumpad_1xb/info.json | 20 + .../pc122/overnumpad_1xb/overnumpad_1xb.c | 24 - .../pc122/overnumpad_1xb/overnumpad_1xb.h | 49 - .../unicomp/spacesaver_m_post_2013/info.json | 2647 +++++++++++++++- .../overnumpad_1xb/config.h | 34 +- .../overnumpad_1xb/info.json | 18 + .../overnumpad_1xb/overnumpad_1xb.c | 7 +- .../overnumpad_1xb/overnumpad_1xb.h | 88 - .../unicomp/spacesaver_m_pre_2013/info.json | 2653 ++++++++++++++++- .../overnumpad_1xb/config.h | 34 +- .../overnumpad_1xb/info.json | 18 + .../overnumpad_1xb/overnumpad_1xb.c | 7 +- .../overnumpad_1xb/overnumpad_1xb.h | 88 - 32 files changed, 15220 insertions(+), 858 deletions(-) create mode 100644 keyboards/ibm/model_m_4th_gen/info.json delete mode 100644 keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.c delete mode 100644 keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.h create mode 100644 keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/info.json delete mode 100644 keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.c delete mode 100644 keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.h create mode 100644 keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/info.json delete mode 100644 keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.c delete mode 100644 keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.h create mode 100644 keyboards/unicomp/pc122/overnumpad_1xb/info.json delete mode 100644 keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.c delete mode 100644 keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.h create mode 100644 keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/info.json delete mode 100644 keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.h create mode 100644 keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/info.json delete mode 100644 keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.h diff --git a/keyboards/ibm/model_m_4th_gen/info.json b/keyboards/ibm/model_m_4th_gen/info.json new file mode 100644 index 000000000000..5c8c658607a9 --- /dev/null +++ b/keyboards/ibm/model_m_4th_gen/info.json @@ -0,0 +1,2561 @@ +{ + "matrix_pins": { + "ghost": true + }, + "usb": { + "vid": "0x16C0", + "pid": "0x27DB", + "device_version": "0.0.1" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 2, + 15 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 1, + 14 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 1, + 4 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 3, + 14 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 3, + 4 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 13, + "y": 1.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 14, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 15 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 1 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 1 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 4 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 13.75, + "y": 3.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 0, + 15 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 15 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 1 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 1 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 12.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 13.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 21.5, + "y": 4.5 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 15 + ], + "x": 4, + "y": 5.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 5.5, + "w": 6 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 18.5, + "y": 5.5 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 19.5, + "y": 5.5 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 20.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 21.5, + "y": 5.5 + } + ] + }, + "LAYOUT_ansi": { + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 2, + 15 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 1, + 14 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 1, + 4 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 3, + 14 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 3, + 4 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 15 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 1 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 1 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 21.5, + "y": 2.5, + "h": 2 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 4 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 12.75, + "y": 3.5, + "w": 2.25 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 0, + "y": 4.5, + "w": 2.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 15 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 1 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 1 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 4, + "y": 5.5, + "w": 7 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 20.5, + "y": 5.5 + } + ] + }, + "LAYOUT_iso": { + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 2, + 15 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 1, + 14 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 1, + 4 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 3, + 14 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 3, + 4 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 15 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 1 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 1 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 13.75, + "y": 2.5, + "w": 1.25, + "h": 2 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 21.5, + "y": 2.5, + "h": 2 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 4 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 0, + 15 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 15 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 1 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 1 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 4, + "y": 5.5, + "w": 7 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 20.5, + "y": 5.5 + } + ] + } + } +} diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h index 37e578dfea7c..71e60e9cfe65 100644 --- a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h +++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h @@ -15,42 +15,17 @@ */ #pragma once +#define DEF_SERIAL_NUMBER "purdea.ro:overnumpad_controller" -#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ - -// All pins in order from left-to-right, as seen on the keyboard: -// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, -// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. - -// On this keyboard the right-most pin is not used, A10 can be ignored. -// On this keyboard the pins are ordered in the following way: (top/bottom meaning where the trace is routed on the membranes) -// top, top, top, top, top, top, top, top, bottom, top, bottom, top, bottom, top, bottom, top, bottom, bottom, top, top, top, top, bottom, bottom - -#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, C4, B0, B10, B13, C6, C7, C8, C9 } -#define MATRIX_ROW_PINS { A7, C5, B1, B12, B14, B15, A8, A9 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -#define MATRIX_HAS_GHOST +#ifndef SERIAL_NUMBER +#define SERIAL_NUMBER DEF_SERIAL_NUMBER +#endif #define STM32_HSECLK 16000000 #define SOLENOID_PIN B5 #define HAPTIC_ENABLE_PIN C13 -#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_DEFAULT_DWELL 20 #define SOLENOID_MIN_DWELL 4 #define HAPTIC_OFF_IN_LOW_POWER 1 #define NO_HAPTIC_MOD diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/info.json b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/info.json index 2aebd925ee50..e87eb4f3c313 100644 --- a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/info.json +++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/info.json @@ -1,13 +1,8 @@ { - "keyboard_name": "IBM Model M (4th generation)", + "keyboard_name": "IBM Model M (4th generation)", "manufacturer": "IBM/Purdea Andrei", - "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", - "maintainer": "purdeaandrei", - "usb": { - "vid": "0x16C0", - "pid": "0x27DB", - "device_version": "0.0.1" - }, + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", "indicators": { "caps_lock": "C11", "num_lock": "C12", @@ -15,15 +10,12 @@ }, "processor": "STM32F446", // RET6 "bootloader": "stm32-dfu", - "layouts": { - "LAYOUT_all": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":6}, {"x":11, "y":5.5, "w":1.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] - }, - "LAYOUT_ansi": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] - }, - "LAYOUT_iso": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] - } + "diode_direction": "ROW2COL", + "matrix_pins": { + // All pins in order from left-to-right, as seen on the keyboard: + // C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, + // On this keyboard columns and rows are staggered: + "cols": ["C3", "C2", "C1", "C0", "A3", "A4", "A5", "A6", "C4", "B0", "B10", "B13", "C6", "C7", "C8", "C9"], + "rows": ["A7", "C5", "B1", "B12", "B14", "B15", "A8", "A9"] } } diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.c b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.c deleted file mode 100644 index cb5ec3dc124e..000000000000 --- a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * 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 "overnumpad_1xb.h" - -void keyboard_post_init_kb(void) -{ - //debug_enable=true; - //debug_matrix=true; -} - diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.h b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.h deleted file mode 100644 index 4e210c53ac7c..000000000000 --- a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.h +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * 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_all( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lalt, k_code, k_space, k_ralt, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_g, k_h, k_f6, KC_NO, k_singlequote, k_f5, KC_NO, kp_0_hidden, kp_0, kp_dot, k_up, k_lalt, KC_NO, k_f4, k_nubs }, \ - /* 1 */ { k_tab, k_t, k_y, k_squarebrcl, k_f7, k_squarebrop, k_backspace, k_lshift, kp_4, kp_5, kp_6, kp_plus_hidden, KC_NO, KC_NO, k_f3, k_caps }, \ - /* 2 */ { k_tild, k_5, k_6, k_equals, k_f8, k_minus, k_f9, KC_NO, k_del, k_ins, k_pgup, k_home, KC_NO, k_lctrl, k_f2, k_f1 }, \ - /* 3 */ { k_1, k_4, k_7, k_8, k_9, k_0, k_f10, KC_NO, k_f11, k_f12, k_pgdn, k_end, k_prscr, KC_NO, k_3, k_2 }, \ - /* 4 */ { k_q, k_r, k_u, k_i, k_o, k_p, k_bsp_hidden, KC_NO, kp_7, kp_8, kp_9, kp_plus, k_scrl, KC_NO, k_e, k_w }, \ - /* 5 */ { k_a, k_f, k_j, k_k, k_l, k_semicolon, k_backsl, KC_NO, kp_1, kp_2, kp_3, kp_enter, kp_enter_hidden, KC_NO, k_d, k_s }, \ - /* 6 */ { k_z, k_v, k_m, k_cm, k_period, k_nuhs, k_return, k_rshift, kp_nl, kp_div, kp_mult, k_pause, KC_NO, k_rctrl, k_c, k_x }, \ - /* 7 */ { KC_NO, k_b, k_n, k_rshift_hidden, KC_NO, k_fwslash, k_space, KC_NO, k_down, k_right, kp_minus, k_left, k_ralt, KC_NO, KC_NO, k_code } \ -} - -// the following three key mappings are informed guesses, based on similarity of the gen4 membrane to previous-gen membranes: kp_plus, k_ins, kp_0_hidden - -#define LAYOUT_ansi( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, \ - k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lalt, k_space, k_ralt, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_g, k_h, k_f6, KC_NO, k_singlequote, k_f5, KC_NO, KC_NO, kp_0, kp_dot, k_up, k_lalt, KC_NO, k_f4, KC_NO }, \ - /* 1 */ { k_tab, k_t, k_y, k_squarebrcl, k_f7, k_squarebrop, k_backspace, k_lshift, kp_4, kp_5, kp_6, KC_NO, KC_NO, KC_NO, k_f3, k_caps }, \ - /* 2 */ { k_tild, k_5, k_6, k_equals, k_f8, k_minus, k_f9, KC_NO, k_del, k_ins, k_pgup, k_home, KC_NO, k_lctrl, k_f2, k_f1 }, \ - /* 3 */ { k_1, k_4, k_7, k_8, k_9, k_0, k_f10, KC_NO, k_f11, k_f12, k_pgdn, k_end, k_prscr, KC_NO, k_3, k_2 }, \ - /* 4 */ { k_q, k_r, k_u, k_i, k_o, k_p, KC_NO, KC_NO, kp_7, kp_8, kp_9, kp_plus, k_scrl, KC_NO, k_e, k_w }, \ - /* 5 */ { k_a, k_f, k_j, k_k, k_l, k_semicolon, k_backsl, KC_NO, kp_1, kp_2, kp_3, kp_enter, KC_NO, KC_NO, k_d, k_s }, \ - /* 6 */ { k_z, k_v, k_m, k_cm, k_period, KC_NO, k_return, k_rshift, kp_nl, kp_div, kp_mult, k_pause, KC_NO, k_rctrl, k_c, k_x }, \ - /* 7 */ { KC_NO, k_b, k_n, KC_NO, KC_NO, k_fwslash, k_space, KC_NO, k_down, k_right, kp_minus, k_left, k_ralt, KC_NO, KC_NO, KC_NO } \ -} - -#define LAYOUT_iso( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_return, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs, kp_4, kp_5, kp_6, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lalt, k_space, k_ralt, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_g, k_h, k_f6, KC_NO, k_singlequote, k_f5, KC_NO, KC_NO, kp_0, kp_dot, k_up, k_lalt, KC_NO, k_f4, k_nubs }, \ - /* 1 */ { k_tab, k_t, k_y, k_squarebrcl, k_f7, k_squarebrop, k_backspace, k_lshift, kp_4, kp_5, kp_6, KC_NO, KC_NO, KC_NO, k_f3, k_caps }, \ - /* 2 */ { k_tild, k_5, k_6, k_equals, k_f8, k_minus, k_f9, KC_NO, k_del, k_ins, k_pgup, k_home, KC_NO, k_lctrl, k_f2, k_f1 }, \ - /* 3 */ { k_1, k_4, k_7, k_8, k_9, k_0, k_f10, KC_NO, k_f11, k_f12, k_pgdn, k_end, k_prscr, KC_NO, k_3, k_2 }, \ - /* 4 */ { k_q, k_r, k_u, k_i, k_o, k_p, KC_NO, KC_NO, kp_7, kp_8, kp_9, kp_plus, k_scrl, KC_NO, k_e, k_w }, \ - /* 5 */ { k_a, k_f, k_j, k_k, k_l, k_semicolon, KC_NO, KC_NO, kp_1, kp_2, kp_3, kp_enter, KC_NO, KC_NO, k_d, k_s }, \ - /* 6 */ { k_z, k_v, k_m, k_cm, k_period, k_nuhs, k_return, k_rshift, kp_nl, kp_div, kp_mult, k_pause, KC_NO, k_rctrl, k_c, k_x }, \ - /* 7 */ { KC_NO, k_b, k_n, KC_NO, KC_NO, k_fwslash, k_space, KC_NO, k_down, k_right, kp_minus, k_left, k_ralt, KC_NO, KC_NO, KC_NO } \ -} diff --git a/keyboards/unicomp/classic_ultracl_post_2013/info.json b/keyboards/unicomp/classic_ultracl_post_2013/info.json index dee9f85acc1a..693250310d38 100644 --- a/keyboards/unicomp/classic_ultracl_post_2013/info.json +++ b/keyboards/unicomp/classic_ultracl_post_2013/info.json @@ -1,29 +1,2636 @@ { - "keyboard_name": "Unicomp Classic / Ultra Classic (post-2013)", - "manufacturer": "Unicomp/Purdea Andrei", - "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", - "maintainer": "purdeaandrei", + "matrix_pins": { + "ghost": true + }, "usb": { "vid": "0x16C0", "pid": "0x27DB", "device_version": "0.0.1" }, - "indicators": { - "caps_lock": "C11", - "num_lock": "C12", - "scroll_lock": "C10" - }, - "processor": "STM32F446", - "bootloader": "stm32-dfu", "layouts": { "LAYOUT_all": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 13, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 14, + "y": 1.5 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 3.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 13 + ], + "x": 12.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 13.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 4, + "y": 5.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 5, + "y": 5.5, + "w": 4.75 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 18.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 19.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 21.5, + "y": 5.5 + } + ] }, "LAYOUT_ansi": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5, + "h": 2 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 12.75, + "y": 3.5, + "w": 2.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 2.25 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] }, "LAYOUT_iso": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 2.5, + "w": 1.25, + "h": 2 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5, + "h": 2 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] } } } diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h index 88eb8c2c513a..71e60e9cfe65 100644 --- a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h +++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h @@ -15,41 +15,17 @@ */ #pragma once +#define DEF_SERIAL_NUMBER "purdea.ro:overnumpad_controller" -#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ - -// All pins in order from left-to-right, as seen on the keyboard: -// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, -// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. - -// On this keyboard the right-most pin is not used, so that is A10. -// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. - -#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } -#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -#define MATRIX_HAS_GHOST +#ifndef SERIAL_NUMBER +#define SERIAL_NUMBER DEF_SERIAL_NUMBER +#endif #define STM32_HSECLK 16000000 #define SOLENOID_PIN B5 #define HAPTIC_ENABLE_PIN C13 -#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_DEFAULT_DWELL 20 #define SOLENOID_MIN_DWELL 4 #define HAPTIC_OFF_IN_LOW_POWER 1 #define NO_HAPTIC_MOD diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/info.json b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/info.json new file mode 100644 index 000000000000..13615db22d43 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "Unicomp Classic / Ultra Classic / New M (post-2013)", + "manufacturer": "Unicomp/Purdea Andrei", + "maintainer": "purdeaandrei", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "indicators": { + "caps_lock": "C11", + "num_lock": "C12", + "scroll_lock": "C10" + }, + "processor": "STM32F446", + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "matrix_pins": { + // The controller to membrane interface has pads left-to-right, as seen on the keyboard, matching + // the order listed below: all columns followed by all rows, (also followed by unused gpio "A10"): + "cols": ["C3", "C2", "C1", "C0", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B10", "B12", "B13"], + "rows": ["B14", "B15", "C6", "C7", "C8", "C9", "A8", "A9"] + } +} diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.c deleted file mode 100644 index cb5ec3dc124e..000000000000 --- a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * 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 "overnumpad_1xb.h" - -void keyboard_post_init_kb(void) -{ - //debug_enable=true; - //debug_matrix=true; -} - diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.h deleted file mode 100644 index a62e8cfbab21..000000000000 --- a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.h +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * 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_all( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_code, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, k_bsp_hidden, kp_nl, k_pgup, k_code, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_rshift_hidden, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, kp_0_hidden, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, kp_enter_hidden, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_ansi( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, \ - k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, KC_NO, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { KC_NO, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, KC_NO, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_iso( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_return, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs, kp_4, kp_5, kp_6, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, KC_NO, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, KC_NO, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/readme.md b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/readme.md index fe8fc769e499..7889bf6d8299 100644 --- a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/readme.md +++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/readme.md @@ -2,7 +2,7 @@ ![unicomp/classic_ultracl_post_2013/overnumpad_1xb](https://www.pckeyboard.com/mm5/graphics/00000001/UB4ZPHA_800x343.jpg) -Will support the following Unicomp Classic and Ultra Classic keyboards: +Will support the following Unicomp Classic, Ultra Classic, and New Model M keyboards: * 104-key ANSI and 105-key ISO keyboards with post-2013 bottom row are supported. * It will likely also support 103-key ANSI or 104-key ISO keyboard variants (not tested) (these are the keyboards with no menu key) * At this point in time it's unclear if it supports 101-key keyboard variants built after 2013. diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/info.json b/keyboards/unicomp/classic_ultracl_pre_2013/info.json index aa28ce85c896..3230af60245e 100644 --- a/keyboards/unicomp/classic_ultracl_pre_2013/info.json +++ b/keyboards/unicomp/classic_ultracl_pre_2013/info.json @@ -1,30 +1,2646 @@ { - "keyboard_name": "Unicomp Classic / Ultra Classic (pre-2013)", - "manufacturer": "Unicomp/Purdea Andrei", - "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", - "maintainer": "purdeaandrei", + "matrix_pins": { + "ghost": true + }, "usb": { "vid": "0x16C0", "pid": "0x27DB", "device_version": "0.0.1" }, - "indicators": { - "caps_lock": "C11", - "num_lock": "C12", - "scroll_lock": "C10" - }, - "processor": "STM32F446", // RET6 - "bootloader": "stm32-dfu", - "community_layouts": ["fullsize_ansi", "fullsize_iso"], + "community_layouts": [ + "fullsize_ansi", + "fullsize_iso" + ], "layouts": { "LAYOUT_all": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 13, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 14, + "y": 1.5 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 3.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 13 + ], + "x": 12.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 13.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 4, + "y": 5.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 5, + "y": 5.5, + "w": 4.75 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 11, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 18.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 19.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 21.5, + "y": 5.5 + } + ] }, "LAYOUT_fullsize_ansi": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5, + "h": 2 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 12.75, + "y": 3.5, + "w": 2.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 2.25 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 11, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] }, "LAYOUT_fullsize_iso": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5, + "h": 2 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 2.5, + "w": 1.25, + "h": 2 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 11, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] } } } diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h index 88eb8c2c513a..71e60e9cfe65 100644 --- a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h +++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h @@ -15,41 +15,17 @@ */ #pragma once +#define DEF_SERIAL_NUMBER "purdea.ro:overnumpad_controller" -#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ - -// All pins in order from left-to-right, as seen on the keyboard: -// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, -// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. - -// On this keyboard the right-most pin is not used, so that is A10. -// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. - -#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } -#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -#define MATRIX_HAS_GHOST +#ifndef SERIAL_NUMBER +#define SERIAL_NUMBER DEF_SERIAL_NUMBER +#endif #define STM32_HSECLK 16000000 #define SOLENOID_PIN B5 #define HAPTIC_ENABLE_PIN C13 -#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_DEFAULT_DWELL 20 #define SOLENOID_MIN_DWELL 4 #define HAPTIC_OFF_IN_LOW_POWER 1 #define NO_HAPTIC_MOD diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/info.json b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/info.json new file mode 100644 index 000000000000..1c2f5b300bdd --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "Unicomp Classic / Ultra Classic (pre-2013)", + "manufacturer": "Unicomp/Purdea Andrei", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "indicators": { + "caps_lock": "C11", + "num_lock": "C12", + "scroll_lock": "C10" + }, + "processor": "STM32F446", // RET6 + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "matrix_pins": { + // The controller to membrane interface has pads left-to-right, as seen on the keyboard, matching + // the order listed below: all columns followed by all rows, (also followed by unused gpio "A10"): + "cols": ["C3", "C2", "C1", "C0", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B10", "B12", "B13"], + "rows": ["B14", "B15", "C6", "C7", "C8", "C9", "A8", "A9"] + } +} diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.c deleted file mode 100644 index cb5ec3dc124e..000000000000 --- a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * 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 "overnumpad_1xb.h" - -void keyboard_post_init_kb(void) -{ - //debug_enable=true; - //debug_matrix=true; -} - diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.h deleted file mode 100644 index a939e986dd30..000000000000 --- a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.h +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * 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_all( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_code, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, k_bsp_hidden, kp_nl, k_pgup, k_code, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_rshift_hidden, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, kp_0_hidden, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, kp_enter_hidden, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_fullsize_ansi( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, \ - k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, KC_NO, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { KC_NO, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, KC_NO, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_fullsize_iso( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, KC_NO, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, KC_NO, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/readme.md b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/readme.md index c25024b4772e..b972de30749c 100644 --- a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/readme.md +++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/readme.md @@ -3,7 +3,7 @@ ![unicomp/classic_ultracl_pre_2013/overnumpad_1xb](https://www.pckeyboard.com/mm5/graphics/00000001/UB4ZPHA_800x343.jpg) Will support the following Unicomp Classic and Ultra Classic keyboards: - * 104-key ANSI and 105-key ISO keyboards with post-2013 bottom row are supported. + * 104-key ANSI and 105-key ISO keyboards with pre-2013 bottom row are supported. * Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) * Hardware Supported: OverNumpad controller v1.Xb diff --git a/keyboards/unicomp/pc122/info.json b/keyboards/unicomp/pc122/info.json index f1d47ef1b001..0c580e729f78 100644 --- a/keyboards/unicomp/pc122/info.json +++ b/keyboards/unicomp/pc122/info.json @@ -1,23 +1,2000 @@ { - "keyboard_name": "Unicomp PC122", - "manufacturer": "Unicomp/Purdea Andrei", - "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", - "maintainer": "purdeaandrei", + "matrix_pins": { + "ghost": true + }, "usb": { "vid": "0x16C0", "pid": "0x27DB", "device_version": "0.0.1" }, - "indicators": { - "caps_lock": "C11", - "num_lock": "C12", - "scroll_lock": "C10" - }, - "processor": "STM32F446", // RET6 - "bootloader": "stm32-dfu", "layouts": { "LAYOUT_all": { - "layout": [{"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":8.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":3.25, "y":1}, {"x":4.25, "y":1}, {"x":5.25, "y":1}, {"x":6.25, "y":1}, {"x":7.25, "y":1}, {"x":8.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1}, {"x":11.25, "y":1}, {"x":12.25, "y":1}, {"x":13.25, "y":1}, {"x":14.25, "y":1}, {"x":0, "y":2.5}, {"x":1, "y":2.5}, {"x":2.25, "y":2.5}, {"x":3.25, "y":2.5}, {"x":4.25, "y":2.5}, {"x":5.25, "y":2.5}, {"x":6.25, "y":2.5}, {"x":7.25, "y":2.5}, {"x":8.25, "y":2.5}, {"x":9.25, "y":2.5}, {"x":10.25, "y":2.5}, {"x":11.25, "y":2.5}, {"x":12.25, "y":2.5}, {"x":13.25, "y":2.5}, {"x":14.25, "y":2.5}, {"x":15.25, "y":2.5, "w":2}, {"x":17.75, "y":2.5}, {"x":18.75, "y":2.5}, {"x":19.75, "y":2.5}, {"x":21.25, "y":2.5}, {"x":22.25, "y":2.5}, {"x":23.25, "y":2.5}, {"x":24.25, "y":2.5}, {"x":0, "y":3.5}, {"x":1, "y":3.5}, {"x":2.25, "y":3.5, "w":1.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5}, {"x":14.75, "y":3.5}, {"x":15.75, "y":3.5, "w":1.5}, {"x":17.75, "y":3.5}, {"x":18.75, "y":3.5}, {"x":19.75, "y":3.5}, {"x":21.25, "y":3.5}, {"x":22.25, "y":3.5}, {"x":23.25, "y":3.5}, {"x":24.25, "y":3.5}, {"x":0, "y":4.5}, {"x":1, "y":4.5}, {"x":2.25, "y":4.5, "w":1.75}, {"x":4, "y":4.5}, {"x":5, "y":4.5}, {"x":6, "y":4.5}, {"x":7, "y":4.5}, {"x":8, "y":4.5}, {"x":9, "y":4.5}, {"x":10, "y":4.5}, {"x":11, "y":4.5}, {"x":12, "y":4.5}, {"x":13, "y":4.5}, {"x":14, "y":4.5}, {"x":15, "y":4.5}, {"x":16, "y":4.5, "w":1.25}, {"x":18.75, "y":4.5}, {"x":21.25, "y":4.5}, {"x":22.25, "y":4.5}, {"x":23.25, "y":4.5}, {"x":24.25, "y":4.5}, {"x":0, "y":5.5}, {"x":1, "y":5.5}, {"x":2.25, "y":5.5, "w":1.25}, {"x":3.5, "y":5.5}, {"x":4.5, "y":5.5}, {"x":5.5, "y":5.5}, {"x":6.5, "y":5.5}, {"x":7.5, "y":5.5}, {"x":8.5, "y":5.5}, {"x":9.5, "y":5.5}, {"x":10.5, "y":5.5}, {"x":11.5, "y":5.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5}, {"x":14.5, "y":5.5, "w":2.75}, {"x":17.75, "y":5.5}, {"x":18.75, "y":5.5}, {"x":19.75, "y":5.5}, {"x":21.25, "y":5.5}, {"x":22.25, "y":5.5}, {"x":23.25, "y":5.5}, {"x":24.25, "y":5.5, "h":2}, {"x":0, "y":6.5}, {"x":1, "y":6.5}, {"x":2.25, "y":6.5, "w":1.5}, {"x":4.75, "y":6.5, "w":1.5}, {"x":6.25, "y":6.5, "w":7}, {"x":13.25, "y":6.5, "w":1.5}, {"x":15.75, "y":6.5, "w":1.5}, {"x":18.75, "y":6.5}, {"x":21.25, "y":6.5, "w":2}, {"x":23.25, "y":6.5}] + "layout": [ + { + "matrix": [ + 3, + 14 + ], + "x": 3.25, + "y": 0 + }, + { + "matrix": [ + 1, + 14 + ], + "x": 4.25, + "y": 0 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 5.25, + "y": 0 + }, + { + "matrix": [ + 2, + 15 + ], + "x": 6.25, + "y": 0 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 7.25, + "y": 0 + }, + { + "matrix": [ + 7, + 1 + ], + "x": 8.25, + "y": 0 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 9.25, + "y": 0 + }, + { + "matrix": [ + 4, + 13 + ], + "x": 10.25, + "y": 0 + }, + { + "matrix": [ + 1, + 1 + ], + "x": 11.25, + "y": 0 + }, + { + "matrix": [ + 1, + 4 + ], + "x": 12.25, + "y": 0 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 13.25, + "y": 0 + }, + { + "matrix": [ + 3, + 13 + ], + "x": 14.25, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 3.25, + "y": 1 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 4.25, + "y": 1 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 5.25, + "y": 1 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 6.25, + "y": 1 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 7.25, + "y": 1 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 8.25, + "y": 1 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 9.25, + "y": 1 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 10.25, + "y": 1 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11.25, + "y": 1 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12.25, + "y": 1 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13.25, + "y": 1 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14.25, + "y": 1 + }, + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 2.5 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 1, + "y": 2.5 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 2.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 3.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 4.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 5.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 6.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 7.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 8.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 9.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 10.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 11.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 12.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 13.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 14.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 15.25, + "y": 2.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 17.75, + "y": 2.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 18.75, + "y": 2.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 19.75, + "y": 2.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 21.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 22.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 23.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 24.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 0, + "y": 3.5 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 1, + "y": 3.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 2.25, + "y": 3.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 13.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 14.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 15.75, + "y": 3.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 17.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 18.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 19.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 21.25, + "y": 3.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 22.25, + "y": 3.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 23.25, + "y": 3.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 24.25, + "y": 3.5 + }, + { + "matrix": [ + 7, + 15 + ], + "x": 0, + "y": 4.5 + }, + { + "matrix": [ + 0, + 15 + ], + "x": 1, + "y": 4.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 2.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 4, + "y": 4.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 5, + "y": 4.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 6, + "y": 4.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 7, + "y": 4.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 8, + "y": 4.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 9, + "y": 4.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 10, + "y": 4.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 11, + "y": 4.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 12, + "y": 4.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 13, + "y": 4.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 14, + "y": 4.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 15, + "y": 4.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 16, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 18.75, + "y": 4.5 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 21.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 22.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 23.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 24.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 0, + "y": 5.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 1, + "y": 5.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 2.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 3.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 4.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 5.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 6.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 7.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 8.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 9.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 10.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 11.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 13.5, + "y": 5.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 14.5, + "y": 5.5, + "w": 2.75 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 17.75, + "y": 5.5 + }, + { + "matrix": [ + 5, + 13 + ], + "x": 18.75, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 19.75, + "y": 5.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 21.25, + "y": 5.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 22.25, + "y": 5.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 23.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 24.25, + "y": 5.5, + "h": 2 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 0, + "y": 6.5 + }, + { + "matrix": [ + 4, + 15 + ], + "x": 1, + "y": 6.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 2.25, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 4.75, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 6.25, + "y": 6.5, + "w": 7 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 13.25, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 15.75, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 18.75, + "y": 6.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 21.25, + "y": 6.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 23.25, + "y": 6.5 + } + ] + }, + "LAYOUT_ansi": { + "layout": [ + { + "matrix": [ + 3, + 14 + ], + "x": 3.25, + "y": 0 + }, + { + "matrix": [ + 1, + 14 + ], + "x": 4.25, + "y": 0 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 5.25, + "y": 0 + }, + { + "matrix": [ + 2, + 15 + ], + "x": 6.25, + "y": 0 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 7.25, + "y": 0 + }, + { + "matrix": [ + 7, + 1 + ], + "x": 8.25, + "y": 0 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 9.25, + "y": 0 + }, + { + "matrix": [ + 4, + 13 + ], + "x": 10.25, + "y": 0 + }, + { + "matrix": [ + 1, + 1 + ], + "x": 11.25, + "y": 0 + }, + { + "matrix": [ + 1, + 4 + ], + "x": 12.25, + "y": 0 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 13.25, + "y": 0 + }, + { + "matrix": [ + 3, + 13 + ], + "x": 14.25, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 3.25, + "y": 1 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 4.25, + "y": 1 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 5.25, + "y": 1 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 6.25, + "y": 1 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 7.25, + "y": 1 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 8.25, + "y": 1 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 9.25, + "y": 1 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 10.25, + "y": 1 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11.25, + "y": 1 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12.25, + "y": 1 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13.25, + "y": 1 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14.25, + "y": 1 + }, + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 2.5 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 1, + "y": 2.5 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 2.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 3.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 4.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 5.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 6.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 7.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 8.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 9.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 10.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 11.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 12.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 13.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 14.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 15.25, + "y": 2.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 17.75, + "y": 2.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 18.75, + "y": 2.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 19.75, + "y": 2.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 21.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 22.25, + "y": 2.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 23.25, + "y": 2.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 24.25, + "y": 2.5 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 0, + "y": 3.5 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 1, + "y": 3.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 2.25, + "y": 3.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 13.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 14.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 15.75, + "y": 3.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 17.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 18.75, + "y": 3.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 19.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 21.25, + "y": 3.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 22.25, + "y": 3.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 23.25, + "y": 3.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 24.25, + "y": 3.5 + }, + { + "matrix": [ + 7, + 15 + ], + "x": 0, + "y": 4.5 + }, + { + "matrix": [ + 0, + 15 + ], + "x": 1, + "y": 4.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 2.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 4, + "y": 4.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 5, + "y": 4.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 6, + "y": 4.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 7, + "y": 4.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 8, + "y": 4.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 9, + "y": 4.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 10, + "y": 4.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 11, + "y": 4.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 12, + "y": 4.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 13, + "y": 4.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 14, + "y": 4.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 15, + "y": 4.5, + "w": 2.25 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 18.75, + "y": 4.5 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 21.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 22.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 23.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 24.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 0, + "y": 5.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 1, + "y": 5.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 2.25, + "y": 5.5, + "w": 2.25 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 4.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 5.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 6.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 7.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 8.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 9.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 10.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 11.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 13.5, + "y": 5.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 14.5, + "y": 5.5, + "w": 2.75 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 17.75, + "y": 5.5 + }, + { + "matrix": [ + 5, + 13 + ], + "x": 18.75, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 19.75, + "y": 5.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 21.25, + "y": 5.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 22.25, + "y": 5.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 23.25, + "y": 5.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 24.25, + "y": 5.5, + "h": 2 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 0, + "y": 6.5 + }, + { + "matrix": [ + 4, + 15 + ], + "x": 1, + "y": 6.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 2.25, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 4.75, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 6.25, + "y": 6.5, + "w": 7 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 13.25, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 15.75, + "y": 6.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 18.75, + "y": 6.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 21.25, + "y": 6.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 23.25, + "y": 6.5 + } + ] } } } diff --git a/keyboards/unicomp/pc122/overnumpad_1xb/config.h b/keyboards/unicomp/pc122/overnumpad_1xb/config.h index 88eb8c2c513a..71e60e9cfe65 100644 --- a/keyboards/unicomp/pc122/overnumpad_1xb/config.h +++ b/keyboards/unicomp/pc122/overnumpad_1xb/config.h @@ -15,41 +15,17 @@ */ #pragma once +#define DEF_SERIAL_NUMBER "purdea.ro:overnumpad_controller" -#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ - -// All pins in order from left-to-right, as seen on the keyboard: -// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, -// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. - -// On this keyboard the right-most pin is not used, so that is A10. -// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. - -#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } -#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -#define MATRIX_HAS_GHOST +#ifndef SERIAL_NUMBER +#define SERIAL_NUMBER DEF_SERIAL_NUMBER +#endif #define STM32_HSECLK 16000000 #define SOLENOID_PIN B5 #define HAPTIC_ENABLE_PIN C13 -#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_DEFAULT_DWELL 20 #define SOLENOID_MIN_DWELL 4 #define HAPTIC_OFF_IN_LOW_POWER 1 #define NO_HAPTIC_MOD diff --git a/keyboards/unicomp/pc122/overnumpad_1xb/info.json b/keyboards/unicomp/pc122/overnumpad_1xb/info.json new file mode 100644 index 000000000000..16e391682319 --- /dev/null +++ b/keyboards/unicomp/pc122/overnumpad_1xb/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "Unicomp PC122", + "manufacturer": "Unicomp/Purdea Andrei", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "indicators": { + "caps_lock": "C11", + "num_lock": "C12", + "scroll_lock": "C10" + }, + "processor": "STM32F446", // RET6 + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "matrix_pins": { + // The controller to membrane interface has pads left-to-right, as seen on the keyboard, matching + // the order listed below: all columns followed by all rows, (also followed by unused gpio "A10"): + "cols": ["C3", "C2", "C1", "C0", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B10", "B12", "B13"], + "rows": ["B14", "B15", "C6", "C7", "C8", "C9", "A8", "A9"] + } +} diff --git a/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.c deleted file mode 100644 index cb5ec3dc124e..000000000000 --- a/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * 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 "overnumpad_1xb.h" - -void keyboard_post_init_kb(void) -{ - //debug_enable=true; - //debug_matrix=true; -} - diff --git a/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.h deleted file mode 100644 index e0dc0d8f33f1..000000000000 --- a/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.h +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * 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_all( \ - k_f13, k_f14, k_f15, k_f16, k_f17, k_f18, k_f19, k_f20, k_f21, k_f22, k_f23, k_f24, \ - k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, \ -k_lb1, k_lb2, k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ -k_lb3, k_lb4, k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ -k_lb5, k_lb6, k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, k_up, kp_4, kp_5, kp_6, kp_plus_hidden, \ -k_lb7, k_lb8, k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_left, k_navmid, k_right, kp_1, kp_2, kp_3, kp_enter, \ -k_lb9, k_lb10, k_lctrl, k_lalt, k_space, k_ralt, k_rctrl, k_down, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_lb1, k_lb4, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_lb3, k_right, k_lb2, k_lb6 }, \ - /* 1 */ { k_tab, k_f21, k_del, k_pgdn, k_f22, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_f23, k_f14, k_caps }, \ - /* 2 */ { k_1, k_f19, kp_nl, k_pgup, k_f17, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lb9, k_f16 }, \ - /* 3 */ { k_q, k_rshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, k_f24, k_f13, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_f20, k_f15, k_lb10 }, \ - /* 5 */ { k_z, k_lshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, k_navmid, kp_plus_hidden, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_ralt, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, k_lb7, KC_NO }, \ - /* 7 */ { k_tild, k_f18, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_lb8, k_space, kp_enter, k_lb5 } \ -} diff --git a/keyboards/unicomp/spacesaver_m_post_2013/info.json b/keyboards/unicomp/spacesaver_m_post_2013/info.json index c484553e8998..fc91057391fe 100644 --- a/keyboards/unicomp/spacesaver_m_post_2013/info.json +++ b/keyboards/unicomp/spacesaver_m_post_2013/info.json @@ -1,27 +1,2650 @@ { - "keyboard_name": "Unicomp Spacesaver M", - "manufacturer": "Unicomp/Purdea Andrei", - "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", - "maintainer": "purdeaandrei", + "matrix_pins": { + "ghost": true + }, "usb": { "vid": "0x16C0", "pid": "0x27DB", "device_version": "0.0.1" }, - "indicators": { - "caps_lock": "C12" - }, - "processor": "STM32F446", // RET6 - "bootloader": "stm32-dfu", "layouts": { "LAYOUT_all": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 13, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 14, + "y": 1.5 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 3.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 13 + ], + "x": 12.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 13.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 4, + "y": 5.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 5, + "y": 5.5, + "w": 4.75 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 18.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 19.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 21.5, + "y": 5.5 + } + ] }, "LAYOUT_ansi": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 12.75, + "y": 3.5, + "w": 2.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 2.25 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] }, "LAYOUT_iso": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 2.5, + "w": 1.25, + "h": 2 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] } } } diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h index 88eb8c2c513a..71e60e9cfe65 100644 --- a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h +++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h @@ -15,41 +15,17 @@ */ #pragma once +#define DEF_SERIAL_NUMBER "purdea.ro:overnumpad_controller" -#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ - -// All pins in order from left-to-right, as seen on the keyboard: -// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, -// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. - -// On this keyboard the right-most pin is not used, so that is A10. -// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. - -#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } -#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -#define MATRIX_HAS_GHOST +#ifndef SERIAL_NUMBER +#define SERIAL_NUMBER DEF_SERIAL_NUMBER +#endif #define STM32_HSECLK 16000000 #define SOLENOID_PIN B5 #define HAPTIC_ENABLE_PIN C13 -#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_DEFAULT_DWELL 20 #define SOLENOID_MIN_DWELL 4 #define HAPTIC_OFF_IN_LOW_POWER 1 #define NO_HAPTIC_MOD diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/info.json b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/info.json new file mode 100644 index 000000000000..cf25addc9e28 --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "Unicomp Spacesaver M (post-2013)", + "manufacturer": "Unicomp/Purdea Andrei", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "indicators": { + "caps_lock": "C12" + }, + "processor": "STM32F446", // RET6 + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "matrix_pins": { + // The controller to membrane interface has pads left-to-right, as seen on the keyboard, matching + // the order listed below: all columns followed by all rows, (also followed by unused gpio "A10"): + "cols": ["C3", "C2", "C1", "C0", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B10", "B12", "B13"], + "rows": ["B14", "B15", "C6", "C7", "C8", "C9", "A8", "A9"] + } +} diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.c index eda367804d0f..f0c1161cfe38 100644 --- a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.c +++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.c @@ -14,18 +14,15 @@ * along with this program. If not, see . */ -#include "overnumpad_1xb.h" +#include "quantum.h" void keyboard_post_init_kb(void) { // Led pins: - // C12 is the left-most led, normally Num Lock, but on Spacesaver M it's Caps Lock. Configured in config.h + // C12 is the left-most led, normally Num Lock, but on Spacesaver M it's Caps Lock. Configured in info.json setPinOutput(C11); // middle led, always off on Spacesaver M writePin(C11, 0); setPinOutput(C10); // right-most led, normally Scroll Lock, but on Spacesaver M indicates function layer - - //debug_enable=true; - //debug_matrix=true; } diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.h deleted file mode 100644 index faffbcd4ec57..000000000000 --- a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.h +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * 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_all( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_code, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, k_bsp_hidden, kp_nl, k_pgup, k_code, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_rshift_hidden, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, kp_0_hidden, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, kp_enter_hidden, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_ansi( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { KC_NO, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, KC_NO, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_iso( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_return, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, KC_NO, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/info.json b/keyboards/unicomp/spacesaver_m_pre_2013/info.json index 249b33fdd24b..57ac811dd9f0 100644 --- a/keyboards/unicomp/spacesaver_m_pre_2013/info.json +++ b/keyboards/unicomp/spacesaver_m_pre_2013/info.json @@ -1,27 +1,2656 @@ { - "keyboard_name": "Unicomp Spacesaver M", - "manufacturer": "Unicomp/Purdea Andrei", - "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", - "maintainer": "purdeaandrei", + "matrix_pins": { + "ghost": true + }, "usb": { "vid": "0x16C0", "pid": "0x27DB", "device_version": "0.0.1" }, - "indicators": { - "caps_lock": "C12" - }, - "processor": "STM32F446", // RET6 - "bootloader": "stm32-dfu", "layouts": { "LAYOUT_all": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 2, + 1 + ], + "x": 13, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 14, + "y": 1.5 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 3.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 4, + 13 + ], + "x": 12.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 13.25, + "y": 4.5, + "w": 1.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 2, + 4 + ], + "x": 4, + "y": 5.5 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 5, + "y": 5.5, + "w": 4.75 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 11, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 14 + ], + "x": 18.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 19.5, + "y": 5.5 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + }, + { + "matrix": [ + 6, + 14 + ], + "x": 21.5, + "y": 5.5 + } + ] }, "LAYOUT_ansi": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 8 + ], + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 12.75, + "y": 3.5, + "w": 2.25 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 2.25 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 11, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] }, "LAYOUT_iso": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + "layout": [ + { + "matrix": [ + 0, + 0 + ], + "x": 0, + "y": 0 + }, + { + "matrix": [ + 0, + 3 + ], + "x": 2, + "y": 0 + }, + { + "matrix": [ + 7, + 3 + ], + "x": 3, + "y": 0 + }, + { + "matrix": [ + 0, + 2 + ], + "x": 4, + "y": 0 + }, + { + "matrix": [ + 7, + 4 + ], + "x": 5, + "y": 0 + }, + { + "matrix": [ + 0, + 8 + ], + "x": 6.5, + "y": 0 + }, + { + "matrix": [ + 7, + 8 + ], + "x": 7.5, + "y": 0 + }, + { + "matrix": [ + 0, + 9 + ], + "x": 8.5, + "y": 0 + }, + { + "matrix": [ + 7, + 9 + ], + "x": 9.5, + "y": 0 + }, + { + "matrix": [ + 0, + 10 + ], + "x": 11, + "y": 0 + }, + { + "matrix": [ + 7, + 10 + ], + "x": 12, + "y": 0 + }, + { + "matrix": [ + 0, + 11 + ], + "x": 13, + "y": 0 + }, + { + "matrix": [ + 7, + 11 + ], + "x": 14, + "y": 0 + }, + { + "matrix": [ + 0, + 12 + ], + "x": 15.25, + "y": 0 + }, + { + "matrix": [ + 0, + 14 + ], + "x": 16.25, + "y": 0 + }, + { + "matrix": [ + 0, + 1 + ], + "x": 17.25, + "y": 0 + }, + { + "matrix": [ + 7, + 0 + ], + "x": 0, + "y": 1.5 + }, + { + "matrix": [ + 2, + 0 + ], + "x": 1, + "y": 1.5 + }, + { + "matrix": [ + 3, + 3 + ], + "x": 2, + "y": 1.5 + }, + { + "matrix": [ + 0, + 5 + ], + "x": 3, + "y": 1.5 + }, + { + "matrix": [ + 0, + 6 + ], + "x": 4, + "y": 1.5 + }, + { + "matrix": [ + 7, + 6 + ], + "x": 5, + "y": 1.5 + }, + { + "matrix": [ + 0, + 7 + ], + "x": 6, + "y": 1.5 + }, + { + "matrix": [ + 7, + 7 + ], + "x": 7, + "y": 1.5 + }, + { + "matrix": [ + 7, + 5 + ], + "x": 8, + "y": 1.5 + }, + { + "matrix": [ + 2, + 9 + ], + "x": 9, + "y": 1.5 + }, + { + "matrix": [ + 2, + 10 + ], + "x": 10, + "y": 1.5 + }, + { + "matrix": [ + 1, + 9 + ], + "x": 11, + "y": 1.5 + }, + { + "matrix": [ + 2, + 8 + ], + "x": 12, + "y": 1.5 + }, + { + "matrix": [ + 1, + 8 + ], + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "matrix": [ + 0, + 4 + ], + "x": 15.25, + "y": 1.5 + }, + { + "matrix": [ + 1, + 12 + ], + "x": 16.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 3 + ], + "x": 17.25, + "y": 1.5 + }, + { + "matrix": [ + 2, + 2 + ], + "x": 18.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 12 + ], + "x": 19.5, + "y": 1.5 + }, + { + "matrix": [ + 2, + 11 + ], + "x": 20.5, + "y": 1.5 + }, + { + "matrix": [ + 7, + 2 + ], + "x": 21.5, + "y": 1.5 + }, + { + "matrix": [ + 1, + 0 + ], + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "matrix": [ + 3, + 0 + ], + "x": 1.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 3 + ], + "x": 2.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 5 + ], + "x": 3.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 6 + ], + "x": 4.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 6 + ], + "x": 5.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 7 + ], + "x": 6.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 7 + ], + "x": 7.5, + "y": 2.5 + }, + { + "matrix": [ + 2, + 5 + ], + "x": 8.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 9 + ], + "x": 9.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 10 + ], + "x": 10.5, + "y": 2.5 + }, + { + "matrix": [ + 4, + 9 + ], + "x": 11.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 8 + ], + "x": 12.5, + "y": 2.5 + }, + { + "matrix": [ + 5, + 8 + ], + "x": 13.75, + "y": 2.5, + "w": 1.25, + "h": 2 + }, + { + "matrix": [ + 1, + 2 + ], + "x": 15.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 11 + ], + "x": 16.25, + "y": 2.5 + }, + { + "matrix": [ + 1, + 3 + ], + "x": 17.25, + "y": 2.5 + }, + { + "matrix": [ + 3, + 12 + ], + "x": 18.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 11 + ], + "x": 19.5, + "y": 2.5 + }, + { + "matrix": [ + 3, + 2 + ], + "x": 20.5, + "y": 2.5 + }, + { + "matrix": [ + 6, + 12 + ], + "x": 21.5, + "y": 2.5 + }, + { + "matrix": [ + 1, + 15 + ], + "x": 0, + "y": 3.5, + "w": 1.75 + }, + { + "matrix": [ + 4, + 0 + ], + "x": 1.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 3 + ], + "x": 2.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 5 + ], + "x": 3.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 6 + ], + "x": 4.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 6 + ], + "x": 5.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 7 + ], + "x": 6.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 7 + ], + "x": 7.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 5 + ], + "x": 8.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 9 + ], + "x": 9.75, + "y": 3.5 + }, + { + "matrix": [ + 3, + 10 + ], + "x": 10.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 10 + ], + "x": 11.75, + "y": 3.5 + }, + { + "matrix": [ + 6, + 13 + ], + "x": 12.75, + "y": 3.5 + }, + { + "matrix": [ + 4, + 12 + ], + "x": 18.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 11 + ], + "x": 19.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 2 + ], + "x": 20.5, + "y": 3.5 + }, + { + "matrix": [ + 4, + 14 + ], + "x": 21.5, + "y": 3.5 + }, + { + "matrix": [ + 3, + 1 + ], + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "matrix": [ + 6, + 0 + ], + "x": 1.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 0 + ], + "x": 2.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 3 + ], + "x": 3.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 5 + ], + "x": 4.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 6 + ], + "x": 5.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 6 + ], + "x": 6.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 7 + ], + "x": 7.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 7 + ], + "x": 8.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 5 + ], + "x": 9.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 9 + ], + "x": 10.25, + "y": 4.5 + }, + { + "matrix": [ + 6, + 10 + ], + "x": 11.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 1 + ], + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "matrix": [ + 2, + 13 + ], + "x": 16.25, + "y": 4.5 + }, + { + "matrix": [ + 5, + 12 + ], + "x": 18.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 11 + ], + "x": 19.5, + "y": 4.5 + }, + { + "matrix": [ + 6, + 2 + ], + "x": 20.5, + "y": 4.5 + }, + { + "matrix": [ + 7, + 14 + ], + "x": 21.5, + "y": 4.5, + "h": 2 + }, + { + "matrix": [ + 3, + 15 + ], + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 2, + 14 + ], + "x": 1.5, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 4, + 4 + ], + "x": 2.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 13 + ], + "x": 4, + "y": 5.5, + "w": 5.75 + }, + { + "matrix": [ + 6, + 4 + ], + "x": 9.75, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 1, + 13 + ], + "x": 11, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 7, + 12 + ], + "x": 12.25, + "y": 5.5, + "w": 1.25 + }, + { + "matrix": [ + 5, + 15 + ], + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "matrix": [ + 6, + 8 + ], + "x": 15.25, + "y": 5.5 + }, + { + "matrix": [ + 1, + 10 + ], + "x": 16.25, + "y": 5.5 + }, + { + "matrix": [ + 0, + 13 + ], + "x": 17.25, + "y": 5.5 + }, + { + "matrix": [ + 5, + 11 + ], + "x": 18.5, + "y": 5.5, + "w": 2 + }, + { + "matrix": [ + 5, + 2 + ], + "x": 20.5, + "y": 5.5 + } + ] } } } diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h index 88eb8c2c513a..71e60e9cfe65 100644 --- a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h +++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h @@ -15,41 +15,17 @@ */ #pragma once +#define DEF_SERIAL_NUMBER "purdea.ro:overnumpad_controller" -#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ - -// All pins in order from left-to-right, as seen on the keyboard: -// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, -// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. - -// On this keyboard the right-most pin is not used, so that is A10. -// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. - -#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } -#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -#define MATRIX_HAS_GHOST +#ifndef SERIAL_NUMBER +#define SERIAL_NUMBER DEF_SERIAL_NUMBER +#endif #define STM32_HSECLK 16000000 #define SOLENOID_PIN B5 #define HAPTIC_ENABLE_PIN C13 -#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_DEFAULT_DWELL 20 #define SOLENOID_MIN_DWELL 4 #define HAPTIC_OFF_IN_LOW_POWER 1 #define NO_HAPTIC_MOD diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/info.json b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/info.json new file mode 100644 index 000000000000..31fc97a527fa --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "Unicomp Spacesaver M (pre-2013)", + "manufacturer": "Unicomp/Purdea Andrei", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "indicators": { + "caps_lock": "C12" + }, + "processor": "STM32F446", // RET6 + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "matrix_pins": { + // The controller to membrane interface has pads left-to-right, as seen on the keyboard, matching + // the order listed below: all columns followed by all rows, (also followed by unused gpio "A10"): + "cols": ["C3", "C2", "C1", "C0", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B10", "B12", "B13"], + "rows": ["B14", "B15", "C6", "C7", "C8", "C9", "A8", "A9"] + } +} diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.c index b7e3fd9632e2..517df0035a3b 100644 --- a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.c +++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.c @@ -14,18 +14,15 @@ * along with this program. If not, see . */ -#include "overnumpad_1xb.h" +#include "quantum.h" void keyboard_post_init_kb(void) { // Led pins: - // C12 is the left-most led, normally Num Lock, but on Spacesaver M it's Caps Lock. Configured in config.h + // C12 is the left-most led, normally Num Lock, but on Spacesaver M it's Caps Lock. Configured in info.json setPinOutput(C11); // middle led, always off on Spacesaver M writePin(C11, 0); setPinOutput(C10); // right-most led, normally Scroll Lock, but on Spacesaver M indicates function layer - - //debug_enable=true; - //debug_matrix=true; } layer_state_t layer_state_set_kb(layer_state_t state) { diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.h deleted file mode 100644 index 0938d456d10f..000000000000 --- a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.h +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright 2020 Purdea Andrei - * - * 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_all( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_code, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, k_bsp_hidden, kp_nl, k_pgup, k_code, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_rshift_hidden, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, kp_0_hidden, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, kp_enter_hidden, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_ansi( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { KC_NO, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, KC_NO, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} - -#define LAYOUT_iso( \ - k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ - k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ - k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_return, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ - k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs, kp_4, kp_5, kp_6, kp_plus_hidden, \ - k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ - k_lctrl, k_lwin, k_lalt, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ -) \ -{ \ - /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ - /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ - /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ - /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ - /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ - /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, KC_NO, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, kp_plus_hidden, KC_NO }, \ - /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ - /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, KC_NO, KC_NO }, \ - /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ -} From d06ce0153bd4b608a20698c4a9e1d559b4c05683 Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 3 Apr 2023 16:34:03 +1000 Subject: [PATCH 27/73] PR checklist: keyboard updates must go to `develop` (#20323) --- docs/pr_checklist.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/pr_checklist.md b/docs/pr_checklist.md index bacb9480dae3..6dc6c0000d9a 100644 --- a/docs/pr_checklist.md +++ b/docs/pr_checklist.md @@ -53,6 +53,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - keyboard moves within the repository *must* go through the `develop` branch instead of `master`, so as to ensure compatibility for users - `data/mappings/keyboard_aliases.hjson` must be updated to reflect the move, so users with pre-created configurator keymap.json files continue to detect the correct keyboard +- keyboard updates and refactors (eg. to data driven) *must* go through `develop` to reduce `master` -> `develop` merge conflicts - PR submissions from a `kbfirmware` export (or equivalent) will not be accepted unless converted to new QMK standards -- try `qmk import-kbfirmware` first - `info.json` - With the move to [data driven](https://docs.qmk.fm/#/data_driven_config) keyboard configuration, we encourage contributors to utilise as many features as possible of the info.json [schema](https://github.com/qmk/qmk_firmware/blob/master/data/schemas/keyboard.jsonschema). From a5272a15754e5e5ca68918628b635858d19ad1fa Mon Sep 17 00:00:00 2001 From: Danny Date: Mon, 3 Apr 2023 14:49:21 -0400 Subject: [PATCH 28/73] Modify default encoder mappings, change PID, enable mousekeys (#20329) --- keyboards/keebio/kbo5000/keymaps/via/keymap.c | 12 +++--------- keyboards/keebio/kbo5000/keymaps/via/rules.mk | 3 ++- keyboards/keebio/kbo5000/rev1/info.json | 2 +- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/keyboards/keebio/kbo5000/keymaps/via/keymap.c b/keyboards/keebio/kbo5000/keymaps/via/keymap.c index 0050229b225d..bb4e94ca6684 100644 --- a/keyboards/keebio/kbo5000/keymaps/via/keymap.c +++ b/keyboards/keebio/kbo5000/keymaps/via/keymap.c @@ -1,11 +1,5 @@ #include QMK_KEYBOARD_H -enum encoder_names { - LEFT_HALF_ENC, - RIGHT_HALF_ENC1, - RIGHT_HALF_ENC2, -}; - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_all( KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS, @@ -37,8 +31,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { - [0] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_UP, KC_DOWN) }, - [1] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_UP, KC_DOWN) }, - [2] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_UP, KC_DOWN) } + [0] = { ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_DOWN, KC_UP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [2] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, }; #endif diff --git a/keyboards/keebio/kbo5000/keymaps/via/rules.mk b/keyboards/keebio/kbo5000/keymaps/via/rules.mk index aaf0497be139..dda17970a5a5 100644 --- a/keyboards/keebio/kbo5000/keymaps/via/rules.mk +++ b/keyboards/keebio/kbo5000/keymaps/via/rules.mk @@ -1,3 +1,4 @@ VIA_ENABLE = yes LTO_ENABLE = yes -ENCODER_MAP_ENABLE = yes \ No newline at end of file +ENCODER_MAP_ENABLE = yes +MOUSEKEY_ENABLE = yes diff --git a/keyboards/keebio/kbo5000/rev1/info.json b/keyboards/keebio/kbo5000/rev1/info.json index 5df36178e7cc..f8e1c046c7a8 100644 --- a/keyboards/keebio/kbo5000/rev1/info.json +++ b/keyboards/keebio/kbo5000/rev1/info.json @@ -5,7 +5,7 @@ "maintainer": "nooges", "usb": { "vid": "0xCB10", - "pid": "0x126A", + "pid": "0x136A", "device_version": "1.0.0" }, "encoder": { From eb52984a94f70b95811fbc0853c158c68c40ea4f Mon Sep 17 00:00:00 2001 From: Anjheos <69339386+Anjheos@users.noreply.github.com> Date: Mon, 3 Apr 2023 13:18:08 -0700 Subject: [PATCH 29/73] Adding Oceanographer to QMK. (#20324) --- keyboards/prototypist/oceanographer/config.h | 20 ++ keyboards/prototypist/oceanographer/info.json | 212 ++++++++++++++++++ .../oceanographer/keymaps/default/keymap.c | 89 ++++++++ .../oceanographer/keymaps/default/rules.mk | 2 + .../keymaps/default_625/keymap.c | 89 ++++++++ .../keymaps/default_625/rules.mk | 2 + .../keymaps/split_225_2/keymap.c | 89 ++++++++ .../keymaps/split_225_2/rules.mk | 2 + .../oceanographer/keymaps/via/keymap.c | 89 ++++++++ .../oceanographer/keymaps/via/rules.mk | 3 + .../prototypist/oceanographer/oceanographer.c | 54 +++++ keyboards/prototypist/oceanographer/readme.md | 27 +++ keyboards/prototypist/oceanographer/rules.mk | 7 + 13 files changed, 685 insertions(+) create mode 100644 keyboards/prototypist/oceanographer/config.h create mode 100644 keyboards/prototypist/oceanographer/info.json create mode 100644 keyboards/prototypist/oceanographer/keymaps/default/keymap.c create mode 100644 keyboards/prototypist/oceanographer/keymaps/default/rules.mk create mode 100644 keyboards/prototypist/oceanographer/keymaps/default_625/keymap.c create mode 100644 keyboards/prototypist/oceanographer/keymaps/default_625/rules.mk create mode 100644 keyboards/prototypist/oceanographer/keymaps/split_225_2/keymap.c create mode 100644 keyboards/prototypist/oceanographer/keymaps/split_225_2/rules.mk create mode 100644 keyboards/prototypist/oceanographer/keymaps/via/keymap.c create mode 100644 keyboards/prototypist/oceanographer/keymaps/via/rules.mk create mode 100644 keyboards/prototypist/oceanographer/oceanographer.c create mode 100644 keyboards/prototypist/oceanographer/readme.md create mode 100644 keyboards/prototypist/oceanographer/rules.mk diff --git a/keyboards/prototypist/oceanographer/config.h b/keyboards/prototypist/oceanographer/config.h new file mode 100644 index 000000000000..a557c9aa8312 --- /dev/null +++ b/keyboards/prototypist/oceanographer/config.h @@ -0,0 +1,20 @@ +// Copyright 2023 Anjheos (@Anjheos) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// RGB Light settings +#define RGBLIGHT_LAYERS + +#define RGBLIGHT_MAX_LAYERS 4 +#define RGBLIGHT_LIMIT_VAL 155 +#define RGBLIGHT_DEFAULT_VAL 155 + +// Audio Settings +#ifdef AUDIO_ENABLE + +#define AUDIO_PIN C6 + +#define AUDIO_INIT_DELAY + +#endif diff --git a/keyboards/prototypist/oceanographer/info.json b/keyboards/prototypist/oceanographer/info.json new file mode 100644 index 000000000000..1f589a540be9 --- /dev/null +++ b/keyboards/prototypist/oceanographer/info.json @@ -0,0 +1,212 @@ +{ + "manufacturer": "Proto[Typist]", + "keyboard_name": "Oceanographer", + "maintainer": "Anjheos", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true + }, + + "encoder":{ + "rotary": [ + {"pin_a": "B2", "pin_b": "B1", "resolution": 2} + ] + }, + + "rgblight" : { + "led_count": 3, + "pin": "B3", + "sleep": true, + "hue_steps": 10, + "saturation_steps": 17, + "brightness_steps": 17, + "animations" : { + "alternating": true, + "breathing": true + } + }, + + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7", "B6", "B5", "B4", "D7", "D6", "D4"], + "rows": ["B0", "D5", "D3", "D2"] + }, + + "processor": "atmega32u4", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0002", + "vid": "0x4A46" + }, + "layouts": { + "LAYOUT_225_1": { + "layout": [ + { "matrix": [0, 0], "label": "Esc", "x": 0, "y": 0 }, + { "matrix": [0, 1], "label": "Q", "x": 1, "y": 0 }, + { "matrix": [0, 2], "label": "W", "x": 2, "y": 0 }, + { "matrix": [0, 3], "label": "E", "x": 3, "y": 0 }, + { "matrix": [0, 4], "label": "R", "x": 4, "y": 0 }, + { "matrix": [0, 5], "label": "T", "x": 5, "y": 0 }, + { "matrix": [0, 6], "label": "Y", "x": 6, "y": 0 }, + { "matrix": [0, 7], "label": "U", "x": 7, "y": 0 }, + { "matrix": [0, 8], "label": "I", "x": 8, "y": 0 }, + { "matrix": [0, 9], "label": "O", "x": 9, "y": 0 }, + { "matrix": [0, 10], "label": "P", "x": 10, "y": 0 }, + { "matrix": [0, 11], "label": "Backspace", "w": 1.75, "x": 11, "y": 0 }, + + { "matrix": [1, 0], "label": "Tab", "w": 1.25, "x": 0, "y": 1 }, + { "matrix": [1, 1], "label": "A", "x": 1.25, "y": 1 }, + { "matrix": [1, 2], "label": "S", "x": 2.25, "y": 1 }, + { "matrix": [1, 3], "label": "D", "x": 3.25, "y": 1 }, + { "matrix": [1, 4], "label": "F", "x": 4.25, "y": 1 }, + { "matrix": [1, 5], "label": "G", "x": 5.25, "y": 1 }, + { "matrix": [1, 6], "label": "H", "x": 6.25, "y": 1 }, + { "matrix": [1, 7], "label": "J", "x": 7.25, "y": 1 }, + { "matrix": [1, 8], "label": "K", "x": 8.25, "y": 1 }, + { "matrix": [1, 9], "label": "L", "x": 9.25, "y": 1 }, + { "matrix": [1, 10], "label": ":", "x": 10.25, "y": 1 }, + { "matrix": [1, 11], "label": "Enter", "w": 1.5, "x": 11.25, "y": 1 }, + + { "matrix": [2, 0], "label": "Shift", "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "label": "Z", "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "label": "X", "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "label": "C", "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "label": "V", "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "label": "B", "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "label": "N", "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "label": "M", "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "label": "<", "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "label": ">", "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "label": "?", "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "label": "\u2191", "x": 11.75, "y": 2 }, + { "matrix": [2, 12], "label": "\u2191", "x": 12.75, "y": 2 }, + + { "matrix": [3, 0], "label": "Ctrl", "x": 0, "y": 3 }, + { "matrix": [3, 1], "label": "Win", "x": 1, "y": 3 }, + { "matrix": [3, 2], "label": "Alt", "x": 2, "y": 3 }, + { "matrix": [3, 3], "label": "Fn", "x": 3, "y": 3 }, + { "matrix": [3, 5], "w": 2.25, "x": 4, "y": 3 }, + { "matrix": [3, 6], "w": 2, "x": 6.25, "y": 3 }, + { "matrix": [3, 7], "label": "Alt", "x": 8.25, "y": 3 }, + { "matrix": [3, 8], "label": "Ctrl", "x": 9.25, "y": 3 }, + { "matrix": [3, 10], "label": "\u2190", "x": 10.75, "y": 3 }, + { "matrix": [3, 11], "label": "\u2193", "x": 11.75, "y": 3 }, + { "matrix": [3, 12], "label": "\u2192", "x": 12.75, "y": 3 } + ] + }, + + "LAYOUT_225_2": { + "layout": [ + { "matrix": [0, 0], "label": "Esc", "x": 0, "y": 0 }, + { "matrix": [0, 1], "label": "Q", "x": 1, "y": 0 }, + { "matrix": [0, 2], "label": "W", "x": 2, "y": 0 }, + { "matrix": [0, 3], "label": "E", "x": 3, "y": 0 }, + { "matrix": [0, 4], "label": "R", "x": 4, "y": 0 }, + { "matrix": [0, 5], "label": "T", "x": 5, "y": 0 }, + { "matrix": [0, 6], "label": "Y", "x": 6, "y": 0 }, + { "matrix": [0, 7], "label": "U", "x": 7, "y": 0 }, + { "matrix": [0, 8], "label": "I", "x": 8, "y": 0 }, + { "matrix": [0, 9], "label": "O", "x": 9, "y": 0 }, + { "matrix": [0, 10], "label": "P", "x": 10, "y": 0 }, + { "matrix": [0, 11], "label": "Backspace", "w": 1.75, "x": 11, "y": 0 }, + + { "matrix": [1, 0], "label": "Tab", "w": 1.25, "x": 0, "y": 1 }, + { "matrix": [1, 1], "label": "A", "x": 1.25, "y": 1 }, + { "matrix": [1, 2], "label": "S", "x": 2.25, "y": 1 }, + { "matrix": [1, 3], "label": "D", "x": 3.25, "y": 1 }, + { "matrix": [1, 4], "label": "F", "x": 4.25, "y": 1 }, + { "matrix": [1, 5], "label": "G", "x": 5.25, "y": 1 }, + { "matrix": [1, 6], "label": "H", "x": 6.25, "y": 1 }, + { "matrix": [1, 7], "label": "J", "x": 7.25, "y": 1 }, + { "matrix": [1, 8], "label": "K", "x": 8.25, "y": 1 }, + { "matrix": [1, 9], "label": "L", "x": 9.25, "y": 1 }, + { "matrix": [1, 10], "label": ":", "x": 10.25, "y": 1 }, + { "matrix": [1, 11], "label": "Enter", "w": 1.5, "x": 11.25, "y": 1 }, + + { "matrix": [2, 0], "label": "Shift", "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "label": "Z", "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "label": "X", "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "label": "C", "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "label": "V", "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "label": "B", "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "label": "N", "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "label": "M", "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "label": "<", "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "label": ">", "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "label": "?", "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "label": "\u2191", "x": 11.75, "y": 2 }, + { "matrix": [2, 12], "label": "\u2191", "x": 12.75, "y": 2 }, + + { "matrix": [3, 0], "label": "Ctrl", "w": 1.25, "x": 0, "y": 3 }, + { "matrix": [3, 1], "label": "Win", "x": 1.25, "y": 3 }, + { "matrix": [3, 2], "label": "Alt", "w": 1.25, "x": 2.25, "y": 3 }, + { "matrix": [3, 5], "w": 2.25, "x": 3.5, "y": 3 }, + { "matrix": [3, 6], "w": 2, "x": 5.75, "y": 3 }, + { "matrix": [3, 7], "label": "Alt", "w": 1.5, "x": 7.75, "y": 3 }, + { "matrix": [3, 8], "label": "Ctrl", "x": 9.25, "y": 3 }, + { "matrix": [3, 10], "label": "\u2190", "x": 10.75, "y": 3 }, + { "matrix": [3, 11], "label": "\u2193", "x": 11.75, "y": 3 }, + { "matrix": [3, 12], "label": "\u2192", "x": 12.75, "y": 3 } + ] + }, + + "LAYOUT_625": { + "layout": [ + { "matrix": [0, 0], "label": "Esc", "x": 0, "y": 0 }, + { "matrix": [0, 1], "label": "Q", "x": 1, "y": 0 }, + { "matrix": [0, 2], "label": "W", "x": 2, "y": 0 }, + { "matrix": [0, 3], "label": "E", "x": 3, "y": 0 }, + { "matrix": [0, 4], "label": "R", "x": 4, "y": 0 }, + { "matrix": [0, 5], "label": "T", "x": 5, "y": 0 }, + { "matrix": [0, 6], "label": "Y", "x": 6, "y": 0 }, + { "matrix": [0, 7], "label": "U", "x": 7, "y": 0 }, + { "matrix": [0, 8], "label": "I", "x": 8, "y": 0 }, + { "matrix": [0, 9], "label": "O", "x": 9, "y": 0 }, + { "matrix": [0, 10], "label": "P", "x": 10, "y": 0 }, + { "matrix": [0, 11], "label": "Backspace", "w": 1.75, "x": 11, "y": 0 }, + + { "matrix": [1, 0], "label": "Tab", "w": 1.25, "x": 0, "y": 1 }, + { "matrix": [1, 1], "label": "A", "x": 1.25, "y": 1 }, + { "matrix": [1, 2], "label": "S", "x": 2.25, "y": 1 }, + { "matrix": [1, 3], "label": "D", "x": 3.25, "y": 1 }, + { "matrix": [1, 4], "label": "F", "x": 4.25, "y": 1 }, + { "matrix": [1, 5], "label": "G", "x": 5.25, "y": 1 }, + { "matrix": [1, 6], "label": "H", "x": 6.25, "y": 1 }, + { "matrix": [1, 7], "label": "J", "x": 7.25, "y": 1 }, + { "matrix": [1, 8], "label": "K", "x": 8.25, "y": 1 }, + { "matrix": [1, 9], "label": "L", "x": 9.25, "y": 1 }, + { "matrix": [1, 10], "label": ":", "x": 10.25, "y": 1 }, + { "matrix": [1, 11], "label": "Enter", "w": 1.5, "x": 11.25, "y": 1 }, + + { "matrix": [2, 0], "label": "Shift", "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "label": "Z", "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "label": "X", "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "label": "C", "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "label": "V", "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "label": "B", "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "label": "N", "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "label": "M", "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "label": "<", "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "label": ">", "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "label": "?", "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "label": "\u2191", "x": 11.75, "y": 2 }, + { "matrix": [2, 12], "label": "\u2191", "x": 12.75, "y": 2 }, + + { "matrix": [3, 0], "label": "Ctrl", "x": 0, "y": 3 }, + { "matrix": [3, 1], "label": "Win", "x": 1, "y": 3 }, + { "matrix": [3, 2], "label": "Alt", "x": 2, "y": 3 }, + { "matrix": [3, 5], "w":6.25, "x": 3, "y": 3 }, + { "matrix": [3, 8], "label": "Ctrl", "x": 9.25, "y": 3 }, + { "matrix": [3, 10], "label": "\u2190", "x": 10.75, "y": 3 }, + { "matrix": [3, 11], "label": "\u2193", "x": 11.75, "y": 3 }, + { "matrix": [3, 12], "label": "\u2192", "x": 12.75, "y": 3 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/prototypist/oceanographer/keymaps/default/keymap.c b/keyboards/prototypist/oceanographer/keymaps/default/keymap.c new file mode 100644 index 000000000000..6e1a9b11b344 --- /dev/null +++ b/keyboards/prototypist/oceanographer/keymaps/default/keymap.c @@ -0,0 +1,89 @@ +// Copyright 2023 Anjheos (@Anjheos) +// SPDX-License-Identifier: GPL-2.0-or-later + + +#include QMK_KEYBOARD_H + +enum layer_names { + _QWERTY, + _FN1, + _FN2, + _FN3 + +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_225_1( + QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_UP, RGB_MOD, + KC_LCTL, KC_LALT, KC_LGUI, MO(_FN1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT_225_1( + 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_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + KC_SCRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, CK_TOGG, RGB_SAI, RGB_TOG, + KC_NUM, KC_LALT, MO(_FN2), _______, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, RGB_HUD, RGB_SAD, RGB_HUI + ), + [2] = LAYOUT_225_1( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, MO(_FN3), _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_225_1( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [_FN2] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP)}, + [_FN3] = { ENCODER_CCW_CW(KC_LEFT, KC_RIGHT)} +}; +#endif + +const rgblight_segment_t PROGMEM _caps_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 3, HSV_CYAN} +); + +const rgblight_segment_t PROGMEM _fn1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,1, HSV_RED} +); + +const rgblight_segment_t PROGMEM _fn2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_PURPLE} +); + +const rgblight_segment_t PROGMEM _fn3_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {2, 1, HSV_YELLOW} +); + +const rgblight_segment_t* const PROGMEM _rgb_layers[] = RGBLIGHT_LAYERS_LIST( + _caps_layer, + _fn1_layer, + _fn2_layer, + _fn3_layer +); + +void keyboard_post_init_user (void) { + rgblight_layers = _rgb_layers; + rgblight_sethsv_noeeprom(HSV_BLACK); +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.caps_lock); + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(1, layer_state_cmp(state, _FN1)); + rgblight_set_layer_state(2, layer_state_cmp(state, _FN2)); + rgblight_set_layer_state(3, layer_state_cmp(state, _FN3)); + return state; +} \ No newline at end of file diff --git a/keyboards/prototypist/oceanographer/keymaps/default/rules.mk b/keyboards/prototypist/oceanographer/keymaps/default/rules.mk new file mode 100644 index 000000000000..9c538186fac9 --- /dev/null +++ b/keyboards/prototypist/oceanographer/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +ENCODER_MAP_ENABLE = yes + diff --git a/keyboards/prototypist/oceanographer/keymaps/default_625/keymap.c b/keyboards/prototypist/oceanographer/keymaps/default_625/keymap.c new file mode 100644 index 000000000000..3cc50104db35 --- /dev/null +++ b/keyboards/prototypist/oceanographer/keymaps/default_625/keymap.c @@ -0,0 +1,89 @@ +// Copyright 2023 Anjheos (@Anjheos) +// SPDX-License-Identifier: GPL-2.0-or-later + + +#include QMK_KEYBOARD_H + +enum layer_names { + _QWERTY, + _FN1, + _FN2, + _FN3 + +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_625( + QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_UP, RGB_MOD, + KC_LCTL, KC_LALT, MO(_FN1), KC_SPC, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT_625( + 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_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + KC_SCRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, CK_TOGG, RGB_SAI, RGB_TOG, + KC_NUM, MO(_FN2), _______, KC_SPC, KC_RCTL, RGB_HUD, RGB_SAD, RGB_HUI + ), + [2] = LAYOUT_625( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + MO(_FN3), _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_625( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [_FN2] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP)}, + [_FN3] = { ENCODER_CCW_CW(KC_LEFT, KC_RIGHT)} +}; +#endif + +const rgblight_segment_t PROGMEM _caps_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 3, HSV_CYAN} +); + +const rgblight_segment_t PROGMEM _fn1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,1, HSV_RED} +); + +const rgblight_segment_t PROGMEM _fn2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_PURPLE} +); + +const rgblight_segment_t PROGMEM _fn3_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {2, 1, HSV_YELLOW} +); + +const rgblight_segment_t* const PROGMEM _rgb_layers[] = RGBLIGHT_LAYERS_LIST( + _caps_layer, + _fn1_layer, + _fn2_layer, + _fn3_layer +); + +void keyboard_post_init_user (void) { + rgblight_layers = _rgb_layers; + rgblight_sethsv_noeeprom(HSV_BLACK); +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.caps_lock); + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(1, layer_state_cmp(state, _FN1)); + rgblight_set_layer_state(2, layer_state_cmp(state, _FN2)); + rgblight_set_layer_state(3, layer_state_cmp(state, _FN3)); + return state; +} \ No newline at end of file diff --git a/keyboards/prototypist/oceanographer/keymaps/default_625/rules.mk b/keyboards/prototypist/oceanographer/keymaps/default_625/rules.mk new file mode 100644 index 000000000000..9c538186fac9 --- /dev/null +++ b/keyboards/prototypist/oceanographer/keymaps/default_625/rules.mk @@ -0,0 +1,2 @@ +ENCODER_MAP_ENABLE = yes + diff --git a/keyboards/prototypist/oceanographer/keymaps/split_225_2/keymap.c b/keyboards/prototypist/oceanographer/keymaps/split_225_2/keymap.c new file mode 100644 index 000000000000..d41183dffb73 --- /dev/null +++ b/keyboards/prototypist/oceanographer/keymaps/split_225_2/keymap.c @@ -0,0 +1,89 @@ +// Copyright 2023 Anjheos (@Anjheos) +// SPDX-License-Identifier: GPL-2.0-or-later + + +#include QMK_KEYBOARD_H + +enum layer_names { + _QWERTY, + _FN1, + _FN2, + _FN3 + +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_225_2( + QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_UP, RGB_MOD, + KC_LCTL, KC_LALT, MO(_FN1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT_225_2( + 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_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + KC_SCRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, CK_TOGG, RGB_SAI, RGB_TOG, + KC_NUM, MO(_FN2), _______, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, RGB_HUD, RGB_SAD, RGB_HUI + ), + [2] = LAYOUT_225_2( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + MO(_FN3), _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_225_2( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [_FN2] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP)}, + [_FN3] = { ENCODER_CCW_CW(KC_LEFT, KC_RIGHT)} +}; +#endif + +const rgblight_segment_t PROGMEM _caps_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 3, HSV_CYAN} +); + +const rgblight_segment_t PROGMEM _fn1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,1, HSV_RED} +); + +const rgblight_segment_t PROGMEM _fn2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_PURPLE} +); + +const rgblight_segment_t PROGMEM _fn3_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {2, 1, HSV_YELLOW} +); + +const rgblight_segment_t* const PROGMEM _rgb_layers[] = RGBLIGHT_LAYERS_LIST( + _caps_layer, + _fn1_layer, + _fn2_layer, + _fn3_layer +); + +void keyboard_post_init_user (void) { + rgblight_layers = _rgb_layers; + rgblight_sethsv_noeeprom(HSV_BLACK); +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.caps_lock); + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(1, layer_state_cmp(state, _FN1)); + rgblight_set_layer_state(2, layer_state_cmp(state, _FN2)); + rgblight_set_layer_state(3, layer_state_cmp(state, _FN3)); + return state; +} \ No newline at end of file diff --git a/keyboards/prototypist/oceanographer/keymaps/split_225_2/rules.mk b/keyboards/prototypist/oceanographer/keymaps/split_225_2/rules.mk new file mode 100644 index 000000000000..9c538186fac9 --- /dev/null +++ b/keyboards/prototypist/oceanographer/keymaps/split_225_2/rules.mk @@ -0,0 +1,2 @@ +ENCODER_MAP_ENABLE = yes + diff --git a/keyboards/prototypist/oceanographer/keymaps/via/keymap.c b/keyboards/prototypist/oceanographer/keymaps/via/keymap.c new file mode 100644 index 000000000000..10a7fc75cf28 --- /dev/null +++ b/keyboards/prototypist/oceanographer/keymaps/via/keymap.c @@ -0,0 +1,89 @@ +// Copyright 2023 Anjheos (@Anjheos) +// SPDX-License-Identifier: GPL-2.0-or-later + + +#include QMK_KEYBOARD_H + +enum layer_names { + _QWERTY, + _FN1, + _FN2, + _FN3 + +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_225_1( + QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_UP, RGB_MOD, + KC_LCTL, KC_LALT, KC_LGUI, MO(_FN1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT_225_1( + 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_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, + KC_SCRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, CK_TOGG, RGB_SAI, RGB_TOG, + KC_NUM, KC_LALT, MO(_FN2), _______, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, RGB_HUD, RGB_SAD, RGB_HUI + ), + [2] = LAYOUT_225_1( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, MO(_FN3), _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_225_1( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [_FN2] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP)}, + [_FN3] = { ENCODER_CCW_CW(KC_LEFT, KC_RIGHT)} +}; +#endif + +const rgblight_segment_t PROGMEM _caps_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 3, HSV_CYAN} +); + +const rgblight_segment_t PROGMEM _fn1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,1, HSV_RED} +); + +const rgblight_segment_t PROGMEM _fn2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_PURPLE} +); + +const rgblight_segment_t PROGMEM _fn3_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {2, 1, HSV_YELLOW} +); + +const rgblight_segment_t* const PROGMEM _rgb_layers[] = RGBLIGHT_LAYERS_LIST( + _caps_layer, + _fn1_layer, + _fn2_layer, + _fn3_layer +); + +void keyboard_post_init_user (void) { + rgblight_layers = _rgb_layers; + rgblight_sethsv_noeeprom(HSV_BLACK); +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.caps_lock); + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(1, layer_state_cmp(state, _FN1)); + rgblight_set_layer_state(2, layer_state_cmp(state, _FN2)); + rgblight_set_layer_state(3, layer_state_cmp(state, _FN3)); + return state; +} \ No newline at end of file diff --git a/keyboards/prototypist/oceanographer/keymaps/via/rules.mk b/keyboards/prototypist/oceanographer/keymaps/via/rules.mk new file mode 100644 index 000000000000..65e46e3aa3ae --- /dev/null +++ b/keyboards/prototypist/oceanographer/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes + diff --git a/keyboards/prototypist/oceanographer/oceanographer.c b/keyboards/prototypist/oceanographer/oceanographer.c new file mode 100644 index 000000000000..ad9378b75cd3 --- /dev/null +++ b/keyboards/prototypist/oceanographer/oceanographer.c @@ -0,0 +1,54 @@ +// Copyright 2023 Anjheos (@Anjheos) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_90; +} + +bool oled_task_kb(void) { + if (!oled_task_user()){ + return false; + } + + oled_write_ln_P(PSTR("LAYER"), false); + + switch (get_highest_layer(layer_state)) { + + case 0: + oled_write_ln_P(PSTR("L1"), false); + break; + + case 1: + oled_write_ln_P(PSTR("L2"), false); + break; + + case 2: + oled_write_ln_P(PSTR("L3"), false); + break; + + case 3: + oled_write_ln_P(PSTR("L4"), false); + break; + + default: + oled_write_ln_P(PSTR(" "), false); + + } + + oled_write_ln_P(PSTR(" "), false); + + oled_write_ln_P(PSTR("LOCK:"), false); + + led_t led_state = host_keyboard_led_state(); + + oled_write_P(led_state.caps_lock ? PSTR ("CAPS ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR ("SCROL") : PSTR(" "), false); + oled_write_ln_P(led_state.num_lock ? PSTR ("NUM ") : PSTR(" "), false); + + return false; +} + +#endif \ No newline at end of file diff --git a/keyboards/prototypist/oceanographer/readme.md b/keyboards/prototypist/oceanographer/readme.md new file mode 100644 index 000000000000..63f57c16e9d9 --- /dev/null +++ b/keyboards/prototypist/oceanographer/readme.md @@ -0,0 +1,27 @@ +# prototypist/oceanographer + +![prototypist/oceanographer](https://i.imgur.com/loDNEHM.png) + +*PCB for the Oceanographer keyboard designed by Hedgey.* + +* Keyboard Maintainer: [Josh @ Prototypist](https://github.com/Anjheos) +* Hardware Supported: **Oceanographer** +* Hardware Availability: *TBD* + +Make example for this keyboard (after setting up your build environment): + + make prototypist/oceanographer:default + +Flashing example for this keyboard: + + make prototypist/oceanographer:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix and plug in the keyboard. +* **Physical reset button**: Briefly press the button on the back of the PCB marked `SWRST1`. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. diff --git a/keyboards/prototypist/oceanographer/rules.mk b/keyboards/prototypist/oceanographer/rules.mk new file mode 100644 index 000000000000..07ce0fe6c515 --- /dev/null +++ b/keyboards/prototypist/oceanographer/rules.mk @@ -0,0 +1,7 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +AUDIO_ENABLE = yes +LTO_ENABLE = yes +RGBLIGHT_ENABLE = yes +RGBLIGHT_DRIVER = WS2812 +ENCODER_ENABLE = yes From 246cf99b4b029b6d36e82a0c4c3aed11abb2ff5e Mon Sep 17 00:00:00 2001 From: Cameron Larsen <44081018+cameronjlarsen@users.noreply.github.com> Date: Mon, 3 Apr 2023 15:43:12 -0700 Subject: [PATCH 30/73] Personal keymaps for crkbd and kyria (#20009) --- .../crkbd/keymaps/cameronjlarsen/config.h | 48 +++ .../crkbd/keymaps/cameronjlarsen/keymap.c | 360 ++++++++++++++++++ .../crkbd/keymaps/cameronjlarsen/rules.mk | 15 + .../kyria/keymaps/cameronjlarsen/config.h | 49 +++ .../kyria/keymaps/cameronjlarsen/keymap.c | 360 ++++++++++++++++++ .../kyria/keymaps/cameronjlarsen/readme.md | 249 ++++++++++++ .../kyria/keymaps/cameronjlarsen/rules.mk | 14 + users/cameronjlarsen/features/oneshot.c | 66 ++++ users/cameronjlarsen/features/oneshot.h | 41 ++ users/cameronjlarsen/rules.mk | 5 + 10 files changed, 1207 insertions(+) create mode 100644 keyboards/crkbd/keymaps/cameronjlarsen/config.h create mode 100644 keyboards/crkbd/keymaps/cameronjlarsen/keymap.c create mode 100644 keyboards/crkbd/keymaps/cameronjlarsen/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/cameronjlarsen/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/cameronjlarsen/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/cameronjlarsen/readme.md create mode 100644 keyboards/splitkb/kyria/keymaps/cameronjlarsen/rules.mk create mode 100644 users/cameronjlarsen/features/oneshot.c create mode 100644 users/cameronjlarsen/features/oneshot.h create mode 100644 users/cameronjlarsen/rules.mk diff --git a/keyboards/crkbd/keymaps/cameronjlarsen/config.h b/keyboards/crkbd/keymaps/cameronjlarsen/config.h new file mode 100644 index 000000000000..f0f4fb14db41 --- /dev/null +++ b/keyboards/crkbd/keymaps/cameronjlarsen/config.h @@ -0,0 +1,48 @@ +/* Copyright 2022 Cameron Larsen <@cameronjlarsen> + * + * 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 + + +/* Select hand configuration */ +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 135 + +#define IGNORE_MOD_TAP_INTERRUPT +#define CAPS_WORD_IDLE_TIMEOUT 5000 // Turn off Caps Word after 5 seconds. + +#ifdef RGBLIGHT_ENABLE + #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 RGBLIGHT_LIMIT_VAL 120 + #define RGBLIGHT_HUE_STEP 10 + #define RGBLIGHT_SAT_STEP 17 + #define RGBLIGHT_VAL_STEP 17 +#endif + +#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/cameronjlarsen/keymap.c b/keyboards/crkbd/keymaps/cameronjlarsen/keymap.c new file mode 100644 index 000000000000..e7bccb5c73d5 --- /dev/null +++ b/keyboards/crkbd/keymaps/cameronjlarsen/keymap.c @@ -0,0 +1,360 @@ +/* Copyright 2022 Cameron Larsen <@cameronjlarsen> + * + * 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 3 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 +#include "features/oneshot.h" + +enum layers { + _QWERTY = 0, + SYM, + NAV, + FUN, +}; +// Aliases for readability +#define QWERTY DF(_QWERTY) +#define LA_SYM LT(SYM, KC_TAB) +#define LA_NAV MO(NAV) + +// One shot mods +enum keycodes { + OS_SHFT = QK_USER, + OS_CTRL, + OS_ALT, + OS_GUI, +}; + +// Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter. +// The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and +// produces the key `tap` when tapped (i.e. pressed and released). + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY + * + * Inspiration: + * + * https://github.com/serebrov/qmk_firmware/blob/custom/keyboards/kyria/keymaps/kyria-mini/keymap.c + * + * Notes: + * - F & J enables CAPSWORD, disables after 5 seconds + * - Left thumb CTRL and SHIFT are one shot + * - Enter is moved to ; location and ; is moved to Sym layer + * - ESC can be accessed by NAV and G + * - BKSP is accessed by NAV and Enter + * - Tab is accessed by tapping SYM layer + * - FUN layer is accessed by holding NAV and SYM layers at the same time + * + * ,----------------------------------. ,----------------------------------. + * | Q | W | E | R | T | | Y | U | I | O | P | + * |------+------+------+------+------| |------+------+------+------+------| + * | A | S | D | F | G | | H | J | K | L | Enter| + * |------+------+------+------+------. ,------+------+------+------+------| + * | Z | X | C | V | B | | N | M | , < | . > | / ? | + * `------+------+------+------+------+------. ,------+------+------+------+-------------' + * | OSM | OSM | Nav | | Sym | Space| GUI | + * | Ctrl | Shift| | | Tab | | | + * `---------------------' `--------------------' + */ + [_QWERTY] = LAYOUT_split_3x5_3( + KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , + KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_ENT , + KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N, KC_M ,KC_COMM, KC_DOT , KC_SLSH, + OS_CTRL, OS_SHFT, LA_NAV , LA_SYM , KC_SPC, OS_GUI + ), + +/* + * Sym Layer: Numbers and symbols + * + * Notes: + * - Symbols are grouped together and shifted symbols from middle row are on bottom row + * - Exception is angle brackets + * + * ,----------------------------------. ,----------------------------------. + * | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | + * |------+------+------+------+------| |------+------+------+------+------| + * | ` | ( | ) | ' | = | | \ | - | [ | ] | ; | + * |------+------+------+------+------+ +------+------+------+------+------| + * | ~ | < | > | " | + | | | | _ | { | } | : | + * `-------------+------+------+------+------. ,------+------+------+------+-------------' + * | | | | | | | | + * | | | | | | | | + * `--------------------' `--------------------' + */ + [SYM] = LAYOUT_split_3x5_3( + KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , + KC_GRV , KC_LPRN, KC_RPRN, KC_QUOT, KC_EQL , KC_BSLS, KC_MINS, KC_LBRC, KC_RBRC, KC_SCLN, + KC_TILD, KC_LABK, KC_RABK, KC_DQUO, KC_PLUS, KC_PIPE, KC_UNDS, KC_LCBR, KC_RCBR, KC_COLN, + _______, _______, _______, _______, _______, _______ + ), + +/* + * Nav Layer: Navigation, Media + * + * Notes: + * - Vim style navigation keys + * - Volume and Media Keys + * - BKSP on Enter + * - DEL on / + * - Esc on G + * + * ,----------------------------------. ,----------------------------------. + * | | | | BriUp| BriDn| | Home | PgDn | PgUp | End |PrtScr| + * |------+------+------+------+------| |------+------+------+------+------| + * | GUI | Alt | Ctrl | Shift| Esc | | ← | ↓ | ↑ | → | Bksp | + * |------+------+------+------+------+ +------+------+------+------+------| + * | | Vol- | Mute | Vol+ |NumLck| | MPrev| MPlay| MStop| MNext|Delete| + * `-------------+------+------+------+------. ,------+------+------+------+-------------' + * | | | | | | | | + * | | | | | | | | + * `--------------------' `--------------------' + */ + [NAV] = LAYOUT_split_3x5_3( + _______, _______, _______, KC_BRIU, KC_BRID, KC_HOME, KC_PGDN, KC_PGUP, KC_END , KC_PSCR, + OS_GUI , OS_ALT , OS_CTRL, OS_SHFT, KC_ESC , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_BSPC, + _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_NUM , KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, KC_DEL , + _______, _______, _______, _______, _______, _______ + ), + +/* + * Function Layer: Function keys + * + * Notes: + * - F1-F10 on bottom row + * - F11-F12 on index finger inner row + * - Homerow mods + * - Num keys on top row + * + * ,----------------------------------. ,----------------------------------. + * | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | + * |------+------+------+------+------| |------+------+------+------+------| + * | GUI | Alt | Ctrl | Shift| F11 | | F12 | Shift| Ctrl | Alt | GUI | + * |------+------+------+------+------+ +------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | + * `-------------+------+------+------+------. ,------+------+------+------+-------------' + * | | | | | | | | + * | | | | | | | | + * `--------------------' `--------------------' + */ + [FUN] = LAYOUT_split_3x5_3( + KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , + OS_GUI , OS_ALT , OS_CTRL, OS_SHFT, KC_F11 , KC_F12 , OS_SHFT, OS_CTRL, OS_ALT , OS_GUI , + KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , + _______, _______, _______, _______, _______, _______ + ), + +}; + +enum combo_events { + CAPS_COMBO, + // Other combos... + COMBO_LENGTH +}; +uint16_t COMBO_LEN = COMBO_LENGTH; + +const uint16_t PROGMEM caps_combo[] = {KC_F, KC_J, COMBO_END}; + +combo_t key_combos[] = { + [CAPS_COMBO] = COMBO_ACTION(caps_combo), + // Other combos...C +}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + switch(combo_index) { + case CAPS_COMBO: + if (pressed) { + caps_word_on(); // Activate Caps Word! + } + break; + + // Other combos... + } +} + +bool is_oneshot_cancel_key(uint16_t keycode){ + switch (keycode) { + case LA_NAV: + return true; + default: + return false; + } +} + +bool is_oneshot_ignored_key(uint16_t keycode){ + switch (keycode) { + case LA_NAV: + case LA_SYM: + case OS_SHFT: + case OS_CTRL: + case OS_ALT: + case OS_GUI: + return true; + default: + return false; + } +} + +oneshot_state os_shft_state = os_up_unqueued; +oneshot_state os_ctrl_state = os_up_unqueued; +oneshot_state os_alt_state = os_up_unqueued; +oneshot_state os_cmd_state = os_up_unqueued; + + + +bool caps_word_press_user(uint16_t keycode) { + switch (keycode) { + // Keycodes that continue Caps Word, with shift applied. + case KC_A ... KC_Z: + case KC_MINS: + add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to the next key. + return true; + + // Keycodes that continue Caps Word, without shifting. + case KC_1 ... KC_0: + case KC_BSPC: + case KC_DEL: + case KC_UNDS: + return true; + + default: + return false; // Deactivate Caps Word. + } +} + + +layer_state_t layer_state_set_user(layer_state_t state){ + return update_tri_layer_state(state, SYM, NAV, FUN); +} + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (!is_keyboard_master()) { + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + } + return rotation; +} + +void oled_render_layer_state(void) { + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state | default_layer_state)) { + case _QWERTY: + oled_write_ln_P(PSTR("QWERTY"), false); + break; + case SYM: + oled_write_ln_P(PSTR("Sym"), false); + break; + case NAV: + oled_write_ln_P(PSTR("Nav"), false); + break; + case FUN: + oled_write_ln_P(PSTR("Function"), false); + break; + default: + oled_write_ln_P(PSTR("Undefined"), false); + } +} + +char keylog_str[24] = {}; + +const char code_to_name[60] = { + ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', + 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', + '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; + +void set_keylog(uint16_t keycode, keyrecord_t *record) { + char name = ' '; + if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || + (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; } + if (keycode < 60) { + name = code_to_name[keycode]; + } + + // update keylog + snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c", + record->event.key.row, record->event.key.col, + keycode, name); +} + +void oled_render_keylog(void) { + oled_write(keylog_str, false); +} + +void render_bootmagic_status(bool status) { + /* Show Ctrl-Gui Swap options */ + static const char PROGMEM logo[][2][3] = { + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, + }; + if (status) { + oled_write_ln_P(logo[0][0], false); + oled_write_ln_P(logo[0][1], false); + } else { + oled_write_ln_P(logo[1][0], false); + oled_write_ln_P(logo[1][1], false); + } +} + +void oled_render_logo(void) { + static const char PROGMEM crkbd_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, + 0}; + oled_write_P(crkbd_logo, false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + oled_render_layer_state(); + oled_render_keylog(); + } else { + oled_render_logo(); + } + return false; +} + +bool process_record_user(uint16_t keycode, keyrecord_t* record) { + if (!process_caps_word(keycode, record)) { return false; } + // Your macros ... + update_oneshot( + &os_shft_state, KC_LSFT, OS_SHFT, + keycode, record + ); + + update_oneshot( + &os_ctrl_state, KC_LCTL, OS_CTRL, + keycode, record + ); + + update_oneshot( + &os_alt_state, KC_LALT, OS_ALT, + keycode, record + ); + + update_oneshot( + &os_cmd_state, KC_LGUI, OS_GUI, + keycode, record + ); + if (record->event.pressed) { + set_keylog(keycode, record); + } + return true; +} + +#endif diff --git a/keyboards/crkbd/keymaps/cameronjlarsen/rules.mk b/keyboards/crkbd/keymaps/cameronjlarsen/rules.mk new file mode 100644 index 000000000000..f5998494482a --- /dev/null +++ b/keyboards/crkbd/keymaps/cameronjlarsen/rules.mk @@ -0,0 +1,15 @@ +BOOTMAGIC_ENABLE = no +BOOLOADER = atmel-dfu +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +COMMAND_ENABLE = no # Disables the command feature +COMBO_ENABLE = yes +MOUSEKEY_ENABLE = no +CONSOLE_ENABLE = no +AUDIO_ENABLE = no +MIDI_ENABLE = no +BLUETOOTH_ENABLE = no +BACKLIGHT_ENABLE = no +CAPS_WORD_ENABLE = yes +CUSTOM_ONESHOT_ENABLE = yes \ No newline at end of file diff --git a/keyboards/splitkb/kyria/keymaps/cameronjlarsen/config.h b/keyboards/splitkb/kyria/keymaps/cameronjlarsen/config.h new file mode 100644 index 000000000000..efd8c8fe24dd --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/cameronjlarsen/config.h @@ -0,0 +1,49 @@ +/* Copyright 2022 Cameron Larsen + * + * 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 + +#ifdef RGBLIGHT_ENABLE +# 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 RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 150 +#endif + +// Lets you roll mod-tap keys +#define IGNORE_MOD_TAP_INTERRUPT +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +#define TAPPING_FORCE_HOLD +// Configure the global tapping term (default: 200ms) +#define TAPPING_TERM 135 +#define TAPPING_TOGGLE 2 +#define ENCODER_DIRECTION_FLIP + +#define CAPS_WORD_IDLE_TIMEOUT 5000 // Turn off Caps Word after 5 seconds. + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +// #define SPLIT_USB_DETECT +// #define NO_USB_STARTUP_CHECK diff --git a/keyboards/splitkb/kyria/keymaps/cameronjlarsen/keymap.c b/keyboards/splitkb/kyria/keymaps/cameronjlarsen/keymap.c new file mode 100644 index 000000000000..294d6a278f79 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/cameronjlarsen/keymap.c @@ -0,0 +1,360 @@ +/* Copyright 2022 Cameron Larsen + * + * 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 "features/oneshot.h" + +enum layers { + _QWERTY = 0, + SYM, + NAV, + FUN, +}; +// Aliases for readability +#define QWERTY DF(_QWERTY) +#define LA_SYM LT(SYM, KC_TAB) +#define LA_NAV MO(NAV) + +// One shot mods +enum keycodes { + OS_SHFT = QK_USER, + OS_CTRL, + OS_ALT, + OS_GUI, +}; + +// Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter. +// The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and +// produces the key `tap` when tapped (i.e. pressed and released). + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY + * + * Inspiration: + * + * https://github.com/serebrov/qmk_firmware/blob/custom/keyboards/kyria/keymaps/kyria-mini/keymap.c + * + * Notes: + * - F & J enables CAPSWORD, disables after 5 seconds + * - Left thumb CTRL and SHIFT are one shot + * - Enter is moved to ; location and ; is moved to Sym layer + * - ESC can be accessed by NAV and G + * - BKSP is accessed by NAV and Enter + * - Tab is accessed by tapping SYM layer + * - FUN layer is accessed by holding NAV and SYM layers at the same time + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | Q | W | E | R | T | | Y | U | I | O | P | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | A | S | D | F | G | | H | J | K | L | Enter| | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | Mute | | Ctrl |Shift | Nav | | Sym | Space| GUI | | Menu | + * | | | | | | | Tab | | | | | + * `----------------------------------' `----------------------------------' + */ + [_QWERTY] = LAYOUT( + XXXXXXX , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , XXXXXXX, + XXXXXXX , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_ENT , XXXXXXX, + XXXXXXX , KC_Z , KC_X , KC_C , KC_V , KC_B , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_N, KC_M ,KC_COMM, KC_DOT , KC_SLSH, XXXXXXX, + KC_MUTE, XXXXXXX, OS_CTRL, OS_SHFT, LA_NAV , LA_SYM , KC_SPC , OS_GUI,XXXXXXX, KC_APP + ), + +/* + * Sym Layer: Numbers and symbols + * + * Notes: + * - Symbols are grouped together and shifted symbols from middle row are on bottom row + * - Exception is angle brackets + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | ` | ( | ) | ' | = | | \ | - | [ | ] | ; | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | ~ | < | > | " | + | | | | | | | | _ | { | } | : | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [SYM] = LAYOUT( + _______ , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, + _______ , KC_GRV , KC_LPRN, KC_RPRN, KC_QUOT, KC_EQL , KC_BSLS, KC_MINS, KC_LBRC, KC_RBRC, KC_SCLN, _______, + _______ , KC_TILD, KC_LABK, KC_RABK, KC_DQUO, KC_PLUS, _______, _______, _______, _______, KC_PIPE, KC_UNDS, KC_LCBR, KC_RCBR, KC_COLN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Nav Layer: Navigation, editing + * + * Notes: + * - Vim style navigation keys + * - BKSP on Enter + * - DEL on / + * - Esc on G + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | BriUp| BriDn| | Home | PgDn | PgUp | End |PrtScr| | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | GUI | Alt | Ctrl | Shift| Esc | | ← | ↓ | ↑ | → | Bksp | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | |NumLck| | | | | | MPrev| MPlay| MStop| MNext|Delete| | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [NAV] = LAYOUT( + _______, _______, _______, _______, KC_BRIU, KC_BRID, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_PSCR, _______, + _______, OS_GUI , OS_ALT , OS_CTRL, OS_SHFT, KC_ESC, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_BSPC, _______, + _______, _______, _______, _______, _______, KC_NUM, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, KC_DEL , _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Function Layer: Function keys + * + * Notes: + * - F1-F10 on bottom row + * - F11-F12 on index finger inner row + * - Homerow mods + * - Num keys on top row + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | GUI | Alt | Ctrl | Shift| F11 | | F12 | Shift| Ctrl | Alt | GUI | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | F1 | F2 | F3 | F4 | F5 | | | | | | F6 | F7 | F8 | F9 | F10 | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [FUN] = LAYOUT( + _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, + _______, OS_GUI , OS_ALT , OS_CTRL, OS_SHFT, KC_F11 , KC_F12 , OS_SHFT, OS_CTRL, OS_ALT , OS_GUI , _______, + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , _______, _______, _______, _______, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +enum combo_events { + CAPS_COMBO, + // Other combos... + COMBO_LENGTH +}; +uint16_t COMBO_LEN = COMBO_LENGTH; + +const uint16_t PROGMEM caps_combo[] = {KC_F, KC_J, COMBO_END}; + +combo_t key_combos[] = { + [CAPS_COMBO] = COMBO_ACTION(caps_combo), + // Other combos...C +}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + switch(combo_index) { + case CAPS_COMBO: + if (pressed) { + caps_word_on(); // Activate Caps Word! + } + break; + + // Other combos... + } +} + +bool is_oneshot_cancel_key(uint16_t keycode){ + switch (keycode) { + case LA_NAV: + return true; + default: + return false; + } +} + +bool is_oneshot_ignored_key(uint16_t keycode){ + switch (keycode) { + case LA_NAV: + case LA_SYM: + case OS_SHFT: + case OS_CTRL: + case OS_ALT: + case OS_GUI: + return true; + default: + return false; + } +} + +oneshot_state os_shft_state = os_up_unqueued; +oneshot_state os_ctrl_state = os_up_unqueued; +oneshot_state os_alt_state = os_up_unqueued; +oneshot_state os_cmd_state = os_up_unqueued; + + +bool process_record_user(uint16_t keycode, keyrecord_t* record) { + if (!process_caps_word(keycode, record)) { return false; } + // Your macros ... + update_oneshot( + &os_shft_state, KC_LSFT, OS_SHFT, + keycode, record + ); + + update_oneshot( + &os_ctrl_state, KC_LCTL, OS_CTRL, + keycode, record + ); + + update_oneshot( + &os_alt_state, KC_LALT, OS_ALT, + keycode, record + ); + + update_oneshot( + &os_cmd_state, KC_LGUI, OS_GUI, + keycode, record + ); + + return true; +} + +bool caps_word_press_user(uint16_t keycode) { + switch (keycode) { + // Keycodes that continue Caps Word, with shift applied. + case KC_A ... KC_Z: + case KC_MINS: + add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to the next key. + return true; + + // Keycodes that continue Caps Word, without shifting. + case KC_1 ... KC_0: + case KC_BSPC: + case KC_DEL: + case KC_UNDS: + return true; + + default: + return false; // Deactivate Caps Word. + } +} + + +layer_state_t layer_state_set_user(layer_state_t state){ + return update_tri_layer_state(state, SYM, NAV, FUN); +} + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } + +bool oled_task_user(void) { + if (is_keyboard_master()) { + // QMK Logo and version information + // clang-format off + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + // clang-format on + oled_write_P(qmk_logo, false); + oled_write_P(PSTR("Kyria rev1.0\n\n"), false); + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state | default_layer_state)) { + case _QWERTY: + oled_write_P(PSTR("QWERTY\n"), false); + break; + case SYM: + oled_write_P(PSTR("Sym\n"), false); + break; + case NAV: + oled_write_P(PSTR("Nav\n"), false); + break; + case FUN: + oled_write_P(PSTR("Function\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + // Write host Keyboard LED Status to OLEDs + led_t led_usb_state = host_keyboard_led_state(); + oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); + oled_write_P(is_caps_word_on() ? PSTR("CAPS") : PSTR(" "), false); + } else { + // clang-format off + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + // clang-format on + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + // Page up/Page down + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + return false; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/cameronjlarsen/readme.md b/keyboards/splitkb/kyria/keymaps/cameronjlarsen/readme.md new file mode 100644 index 000000000000..7401609f356b --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/cameronjlarsen/readme.md @@ -0,0 +1,249 @@ +# Kyria's Default Keymap + +![KLE render of the default Kyria keymap with QWERTY as the base layer. Layers are shown in sublegends.](https://i.ibb.co/RQZx2dY/default-kyria2.jpg) + + +The default keymap contains 5 layers which allows it to include all keys found on an ANSI layout TKL keyboard plus media keys. +Hardware features of the Kyria such as OLEDs, rotary encoders and underglow are also supported. + +The five different layers are the following: +1. Base layer (QWERTY, Colemak-DH or Dvorak) +2. Navigation layer +3. Symbols/Numbers layer +4. Function layer +5. Adjust layer + +## Base layer(s) +``` +Base Layer: - + +,-------------------------------------------. ,-------------------------------------------. +| Tab | - | - | - | - | - | | - | - | - | - | - | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| - | - | - | - | - | | - | - | - | - | - |Ctrl/ - | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | - | - | - | - | - | [ { |CapsLk| |F-Keys| ] } | - | - | - | - | - | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | Enter| | | | | | | | | + `----------------------------------' `----------------------------------' +``` +Three different well-known keyboard layouts are provided to fill in the placeholder `-` keys: QWERTY, Colemak-DH, and Dvorak. The default layer can be changed at runtime, more info on that in the section on the [adjust layer](#adjust-layer). + +For the rest of this write-up, the base layer will be assumed to be QWERTY and will be used as a reference to describe physical keys, e.g. “B key” vs, the much more verbose, “lower inner index key”. + +``` +Base Layer: QWERTY + +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "| +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | Enter| | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +Aside from variations in the alpha cluster, the rest of the base keys remain the same and are designed to feel familiar. + +![Step-by-step animation of the transformation of an ortholinear TKL to a Kyria](https://i.imgur.com/uVDCOek.gif) + +
+After making transformations to the classic ANSI US QWERTY TKL 60% to arrive to the layout of the Kyria, as illustrated in the animation above, the result looks like this: + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| Cap Lk | A | S | D | F | G | | H | J | K | L | ; : | ' " | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | LCtrl| LGUI | LAlt | Space| | | | Space| AltGr| RGUI | Menu | + | | | | | | | | | | | | + `----------------------------------' '----------------------------------' +``` + +First thing to notice is the presence of blank keys. To fill in the blank keys above the Space keys, we can take inspiration from other split keyboards featuring an extra inner index column on each half. A common mapping for those kind of keys are the bracket keys that got removed in the fourth step of the animated transformation. The thumb keys besides Spaces is prime real estate for dedicated layer-switching keys. It doesn't matter on which side is assigned the sym-layer-switch key but it helps to keep the nav-layer-switch on the left in order to keep the arrow keys on the right side like on a classic keyboard, so we'll put nav on the left and sym on the right. We'll address the remaining blank thumb keys later. + +The base layer is starting to form but there remains some flaws. One glaring issue is the position of Control. Control is a very commonly used function but the key on which it sits right now is way too tucked in under the hand to be able to press it comfortably with either the thumb or the pinky from resting position. In fact, installing a rotary encoder there is a common move among Kyria users and I guarantee you that activating Control by holding down a rotary encoder does not spark joy. Instead, let's employ a popular trick that involves remapping the current Caps Lock key, which is positioned at a comfortable position on the keyboard, to Control. + +We can go further though; a variant of this trick makes the Control key produce Escape when tapped. This is called a “modtap”. There is no use to tapping Control by itself without chording it with another key and there is no use to holding down the Esc key so why not combine the two into a single key? + +All of this leaves us with three blank keys. + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : | ' " | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { | | | | ] } | N | M | , < | . > | / ? | RShift | +`--------+-------------+--------------------+------+------| |------+------+--------------------+------+---------------' + | | LGUI | LAlt | Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | | | | | | | | | | + `----------------------------------' '----------------------------------' +``` + +These keys are not easily reachable while touch typing (that is, not reachable without picking up your hand) and should thus be associated with functions that you are not likely to be typed within a stream of text. The idea is that if you have to pick up your hand to hit a key, you want it to be at a time when you are likely to be pausing your interaction with the machine, rather than in the midst of a flurry of typing. They're thus well suited for accessing the adjust layer and the function layer. We can also toss in Caps Lock even though it is an editing-type function that gets used within a stream of text because shouting in ALL-CAPS should be a deliberate action. + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : | ' " | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt | Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +The next glaring issue is the absence of an Enter key on the current base layer this far. Enter is a very frequently used key so it deserves to be placed at a good spot in the keymap. The best way to insert it in the keymap with minimal changes to the current layout is to use modtaps. A tempting solution is to turn the RShift key into a RShift/Enter modtap but that can result in chat messages sent too frustratingly early when you're not used to it. Using GUI is also sub-optimal because tapping the GUI modifier actually has a use as opposed to taps of the Control or the Shift key. Pressing and releasing the GUI key by itself opens the App menu in many desktop environments. The natural choice is thus LAlt/Enter. That way, Enter is 1u away from resting thumb position and is unlikely to get accidentally activated because Alt is very rarely used in the midst of prose. + +Finally, we're one Quality-Of-Life update away from the actual base layer. Ctrl/' " not only preserves symmetry in the keymap with Ctrl/Esc but also helps balance the load between your pinkies and invites you to use both hands instead of contortions. Perhaps more importantly, it also frees you from the necessity of picking up your hand, breaking touch typing position and pressing a pinky key with your ring finger in order to execute Ctrl+A or Ctrl+Z. That becomes even more important on a board with such an aggressive pinky columnar stagger like the Kyria. + + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "| +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | Enter| | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +
+ +## Navigation layer + +``` +Nav Layer: Media, navigation + +,-------------------------------------------. ,-------------------------------------------. +| | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| | GUI | Alt | Ctrl | Shift| | | PgDn | ← | ↓ | → | VolDn| Insert | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +This is where you'll find all the keys that are generally between the main block of a classic keyboard and the numpad in addition to media controls and modifiers on easy access on the home row for fast and comfortable chording with navigation keys. + +Useful mnemonics: +- “GACS” to remember the order of the modifiers on the left-hand home row +- Scroll Lock is on the same key as Caps Lock because they're both locks +- Delete is on the same key as Backspace because they both erase characters +- Home is the leftmost position on the current line so it is above . Same logic applies for End. +- Media Previous = ⏮, Media Next = ⏭ +- Page Up, Page Down and Volume Up, Volume Down are positioned like the main Up and Down keys. + +## Sym layer +``` +Sym Layer: Numbers, symbols + +,-------------------------------------------. ,-------------------------------------------. +| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | | \ | : | ; | - | [ | { | | | | } | ] | _ | , | . | / | ? | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` +The top row is the unshifted num row, the home row of the layer is the shifted num row and the bottom row contains the hyphen `-` and the underscore `_` on the best lower row spot because of how frequent they are as well as redundant symbols that are already present on the base layer but are reproduced here to avoid juggling back and forth between base, shift, and sym when typing a string of symbols. + +The layout of the first two rows needs no introduction, you're already used to them but it's worth looking into the structure of the bottom row. + +The two halves are mirrored in a sense. On the right, you can find , . / at their usual spots with the addition of Shift+/=? to the right of the / key to remove the need to press simultaneously Sym and a Shift key to access `?`. + +Now, if you look at the left side, you'll notice that the mirror of , is ;, the mirror of . is : and the mirror of / is \\. The same logic used for Shift+/=? also applies to Shift+\\=|. + +In case you wish to combine Shift with a symbol key anyways, you can hold down Shift on the base layer with your pinky, activate Sym with your right thumb and while still holding down the Shift key, tap your desired symbol key. Same thing if you need Ctrl+Digit. + +## Function layer +``` +Function Layer: Function keys + +,-------------------------------------------. ,-------------------------------------------. +| | F9 | F10 | F11 | F12 | | | | | | | | | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| | F5 | F6 | F7 | F8 | | | | Shift| Ctrl | Alt | GUI | | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | F1 | F2 | F3 | F4 | | | | | | | | | | | | | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` +In a similar fashion to the nav layer, pressing down `FKEYS` with the right thumb enables a numpad of function keys on the opposite hand and modifiers on the right-hand home row. Once again, mirror symmetry is leveraged in this keymap for the order of the right-hand modifiers. + +The Alt modifier, despite being situated on the right half of the keyboard is *not* `KC_RALT`, it is `KC_LALT`. `KC_RALT` is actually the AltGr key which generally acts very differently to the left Alt key. Keyboard shortcuts involving AltGr+F# are rare and infrequent as opposed to the much more common Alt+F# shortcuts. Consequently, `KC_LALT` was chosen for the function layer. + +Since there are more than 10 function keys, the cluster of F-keys does not follow the usual 3×3+1 numpad arrangement. + + +## Adjust layer +``` +Adjust Layer: Default layer settings, RGB + +,-------------------------------------------. ,-------------------------------------------. +| | | |QWERTY| | | | | | | | | | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +Default layer settings on the left and various RGB underglow controls on the right. + +The default layer settings are lined up on the middle finger column because the home middle finger key is D on QWERTY (like the “D” in “Dvorak”) and the lower middle finger key is C on QWERTY (like the “C” in “Colemak”). I can hear you say that “QWERTY” doesn't start with “E” but Dvorak and Colemak were already aligned in a column so the QWERTY may as well join the formation. + +NOTE: The default layer settings set by those keys are *NOT* stored in EEPROM and thus do not persist through boots. If you wish to change the default layer in a non-volatile manner, either change the order of the layers in the firmware, for example like so if you want to set Dvorak as the new default: +```c +enum layers { + _DVORAK = 0, + _QWERTY, + _COLEMAK_DH, + _NAV, + _SYM, + _FUNCTION, + _ADJUST +}; +``` +or re-define the `QWERTY`, `COLEMAK` and `DVORAK` keys to point to custom keycodes starting on `SAFE_RANGE` and calling the `set_single_persistent_default_layer` function inside of `process_record_user`. + +## Hardware Features + +### Rotary Encoder +The left rotary encoder is programmed to control the volume whereas the right encoder sends PgUp or PgDn on every turn. + +### OLEDs +The OLEDs display the current layer at the top of the active layers stack, the Kyria logo and lock status (caps lock, num lock, scroll lock). + +### Underglow +The underglow LEDs should be red. + +## Going further… + +This default keymap can be used as is, unchanged, as a daily driver for your Kyria but you're invited to treat your keymap like a bonsai. At the beginning, it's just like the default keymap but from time to time, you can tweak it a little. Cut a little key here, let another combo grow there. Slowly but surely it will be a unique keymap that will fit you like a glove. + +Check out the #keymap-ideas channel on the official SplitKB Discord server for inspiration. diff --git a/keyboards/splitkb/kyria/keymaps/cameronjlarsen/rules.mk b/keyboards/splitkb/kyria/keymaps/cameronjlarsen/rules.mk new file mode 100644 index 000000000000..e7146a164072 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/cameronjlarsen/rules.mk @@ -0,0 +1,14 @@ +BOOTMAGIC_ENABLE = no +BOOTLOADER = atmel-dfu +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +COMMAND_ENABLE = no # Disables the command feature +COMBO_ENABLE = yes +MOUSEKEY_ENABLE = no +CONSOLE_ENABLE = no +AUDIO_ENABLE = no +CAPS_WORD_ENABLE = yes +CUSTOM_ONESHOT_ENABLE = yes + diff --git a/users/cameronjlarsen/features/oneshot.c b/users/cameronjlarsen/features/oneshot.c new file mode 100644 index 000000000000..799b7c1aa2af --- /dev/null +++ b/users/cameronjlarsen/features/oneshot.c @@ -0,0 +1,66 @@ +/* Copyright 2022 Cameron Larsen + * + * 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 "oneshot.h" + +void update_oneshot(oneshot_state *state, uint16_t mod, uint16_t trigger, uint16_t keycode, keyrecord_t *record) { + if (keycode == trigger) { + if (record->event.pressed) { + // Trigger keydown + if (*state == os_up_unqueued) { + register_code(mod); + } + *state = os_down_unused; + } else { + // Trigger keyup + switch (*state) { + case os_down_unused: + // If we didn't use the mod while trigger was held, queue it. + *state = os_up_queued; + break; + case os_down_used: + // If we did use the mod while trigger was held, unregister it. + *state = os_up_unqueued; + unregister_code(mod); + break; + default: + break; + } + } + } else { + if (record->event.pressed) { + if (is_oneshot_cancel_key(keycode) && *state != os_up_unqueued) { + // Cancel oneshot on designated cancel keydown. + *state = os_up_unqueued; + unregister_code(mod); + } + } else { + if (!is_oneshot_ignored_key(keycode)) { + // On non-ignored keyup, consider the oneshot used. + switch (*state) { + case os_down_unused: + *state = os_down_used; + break; + case os_up_queued: + *state = os_up_unqueued; + unregister_code(mod); + break; + default: + break; + } + } + } + } +} diff --git a/users/cameronjlarsen/features/oneshot.h b/users/cameronjlarsen/features/oneshot.h new file mode 100644 index 000000000000..7fac7b5d58bd --- /dev/null +++ b/users/cameronjlarsen/features/oneshot.h @@ -0,0 +1,41 @@ +// The GPLv2 License (GPLv2) +// +// Copyright (c) 2022 Cameron Larsen +// +// 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 QMK_KEYBOARD_H + +// Represents the four states a oneshot key can be in +typedef enum { + os_up_unqueued, + os_up_queued, + os_down_unused, + os_down_used, +} oneshot_state; + +// Custom oneshot mod implementation that doesn't rely on timers. If a mod is +// used while it is held it will be unregistered on keyup as normal, otherwise +// it will be queued and only released after the next non-mod keyup. +void update_oneshot(oneshot_state *state, uint16_t mod, uint16_t trigger, uint16_t keycode, keyrecord_t *record); + +// To be implemented by the consumer. Defines keys to cancel oneshot mods. +bool is_oneshot_cancel_key(uint16_t keycode); + +// To be implemented by the consumer. Defines keys to ignore when determining +// whether a oneshot mod has been used. Setting this to modifiers and layer +// change keys allows stacking multiple oneshot modifiers, and carrying them +// between layers. +bool is_oneshot_ignored_key(uint16_t keycode); diff --git a/users/cameronjlarsen/rules.mk b/users/cameronjlarsen/rules.mk new file mode 100644 index 000000000000..59d14ca61f95 --- /dev/null +++ b/users/cameronjlarsen/rules.mk @@ -0,0 +1,5 @@ +CUSTOM_ONESHOT_ENABLE ?= no +ifeq ($(strip $(CUSTOM_ONESHOT_ENABLE)), yes) + SRC += $(USER_PATH)/features/oneshot.c + OPT_DEFS += -DCUSTOM_ONESHOT_ENABLE +endif From ee8c86702ea09bfbf4bf8daf015d79362293bb41 Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Mon, 3 Apr 2023 18:55:38 -0400 Subject: [PATCH 31/73] Add Ripple TKL Hotswap Firmware (#20302) Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> --- keyboards/cannonkeys/ripple_hs/info.json | 125 ++++++++++++++++++ .../ripple_hs/keymaps/default/keymap.c | 41 ++++++ .../cannonkeys/ripple_hs/keymaps/via/keymap.c | 59 +++++++++ .../cannonkeys/ripple_hs/keymaps/via/rules.mk | 1 + keyboards/cannonkeys/ripple_hs/readme.md | 24 ++++ keyboards/cannonkeys/ripple_hs/rules.mk | 5 + 6 files changed, 255 insertions(+) create mode 100644 keyboards/cannonkeys/ripple_hs/info.json create mode 100644 keyboards/cannonkeys/ripple_hs/keymaps/default/keymap.c create mode 100644 keyboards/cannonkeys/ripple_hs/keymaps/via/keymap.c create mode 100644 keyboards/cannonkeys/ripple_hs/keymaps/via/rules.mk create mode 100644 keyboards/cannonkeys/ripple_hs/readme.md create mode 100644 keyboards/cannonkeys/ripple_hs/rules.mk diff --git a/keyboards/cannonkeys/ripple_hs/info.json b/keyboards/cannonkeys/ripple_hs/info.json new file mode 100644 index 000000000000..01a044102943 --- /dev/null +++ b/keyboards/cannonkeys/ripple_hs/info.json @@ -0,0 +1,125 @@ +{ + "keyboard_name": "Ripple HS", + "manufacturer": "CannonKeys", + "url": "https://cannonkeys.com", + "maintainer": "awkannan", + "usb": { + "vid": "0xCA04", + "pid": "0x0026", + "device_version": "0.0.1" + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["B1", "B2", "B10", "B11", "B12", "B14", "A8", "A9", "A10", "A3", "B0", "A2", "A1", "A7", "A0", "B4", "B6", "B7"], + "rows": ["A15", "B3", "B5", "A4", "A5", "F1"] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B9", + "scroll_lock": "F0", + "on_state": 0 + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "community_layouts": [ "tkl_f13_ansi_tsangan" ], + "layouts": { + "LAYOUT_tkl_f13_ansi_tsangan": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1.25, "y": 0 }, + { "matrix": [0, 2], "x": 2.25, "y": 0 }, + { "matrix": [0, 3], "x": 3.25, "y": 0 }, + { "matrix": [0, 4], "x": 4.25, "y": 0 }, + { "matrix": [0, 5], "x": 5.5, "y": 0 }, + { "matrix": [0, 6], "x": 6.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.75, "y": 0 }, + { "matrix": [0, 10], "x": 10.75, "y": 0 }, + { "matrix": [0, 11], "x": 11.75, "y": 0 }, + { "matrix": [0, 12], "x": 12.75, "y": 0 }, + { "matrix": [0, 14], "x": 14, "y": 0 }, + { "matrix": [0, 15], "x": 15.25, "y": 0 }, + { "matrix": [0, 16], "x": 16.25, "y": 0 }, + { "matrix": [0, 17], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "x": 2, "y": 1.25 }, + { "matrix": [1, 3], "x": 3, "y": 1.25 }, + { "matrix": [1, 4], "x": 4, "y": 1.25 }, + { "matrix": [1, 5], "x": 5, "y": 1.25 }, + { "matrix": [1, 6], "x": 6, "y": 1.25 }, + { "matrix": [1, 7], "x": 7, "y": 1.25 }, + { "matrix": [1, 8], "x": 8, "y": 1.25 }, + { "matrix": [1, 9], "x": 9, "y": 1.25 }, + { "matrix": [1, 10], "x": 10, "y": 1.25 }, + { "matrix": [1, 11], "x": 11, "y": 1.25 }, + { "matrix": [1, 12], "x": 12, "y": 1.25 }, + { "matrix": [1, 14], "w": 2, "x": 13, "y": 1.25 }, + { "matrix": [1, 15], "x": 15.25, "y": 1.25 }, + { "matrix": [1, 16], "x": 16.25, "y": 1.25 }, + { "matrix": [1, 17], "x": 17.25, "y": 1.25 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.25 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.25 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.25 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.25 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.25 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.25 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.25 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.25 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.25 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.25 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.25 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.25 }, + { "matrix": [2, 14], "w": 1.5, "x": 13.5, "y": 2.25 }, + { "matrix": [2, 15], "x": 15.25, "y": 2.25 }, + { "matrix": [2, 16], "x": 16.25, "y": 2.25 }, + { "matrix": [2, 17], "x": 17.25, "y": 2.25 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.25 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.25 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.25 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.25 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.25 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.25 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.25 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.25 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.25 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.25 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.25 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.25 }, + { "matrix": [3, 14], "w": 2.25, "x": 12.75, "y": 3.25 }, + { "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.25 }, + { "matrix": [4, 2], "x": 2.25, "y": 4.25 }, + { "matrix": [4, 3], "x": 3.25, "y": 4.25 }, + { "matrix": [4, 4], "x": 4.25, "y": 4.25 }, + { "matrix": [4, 5], "x": 5.25, "y": 4.25 }, + { "matrix": [4, 6], "x": 6.25, "y": 4.25 }, + { "matrix": [4, 7], "x": 7.25, "y": 4.25 }, + { "matrix": [4, 8], "x": 8.25, "y": 4.25 }, + { "matrix": [4, 9], "x": 9.25, "y": 4.25 }, + { "matrix": [4, 10], "x": 10.25, "y": 4.25 }, + { "matrix": [4, 11], "x": 11.25, "y": 4.25 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.25 }, + { "matrix": [4, 16], "x": 16.25, "y": 4.25 }, + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.25 }, + { "matrix": [5, 1], "x": 1.5, "y": 5.25 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.25 }, + { "matrix": [5, 6], "w": 7, "x": 4, "y": 5.25 }, + { "matrix": [5, 11], "w": 1.5, "x": 11, "y": 5.25 }, + { "matrix": [5, 12], "x": 12.5, "y": 5.25 }, + { "matrix": [5, 14], "w": 1.5, "x": 13.5, "y": 5.25 }, + { "matrix": [5, 15], "x": 15.25, "y": 5.25 }, + { "matrix": [5, 16], "x": 16.25, "y": 5.25 }, + { "matrix": [5, 17], "x": 17.25, "y": 5.25 } + ] + } + } +} diff --git a/keyboards/cannonkeys/ripple_hs/keymaps/default/keymap.c b/keyboards/cannonkeys/ripple_hs/keymaps/default/keymap.c new file mode 100644 index 000000000000..3c6410edc567 --- /dev/null +++ b/keyboards/cannonkeys/ripple_hs/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* +Copyright 2012,2013 Jun Wako + +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 +enum layer_names { + _BASE, + _FN1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_tkl_f13_ansi_tsangan( + KC_ESC, 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_MPLY, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, 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_INS, KC_HOME, KC_PGUP, + 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_DEL, KC_END, KC_PGDN, + 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [_FN1] = LAYOUT_tkl_f13_ansi_tsangan( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, BL_TOGG, BL_DOWN, BL_UP, + 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_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + 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) + +}; diff --git a/keyboards/cannonkeys/ripple_hs/keymaps/via/keymap.c b/keyboards/cannonkeys/ripple_hs/keymaps/via/keymap.c new file mode 100644 index 000000000000..a2e37ae772a2 --- /dev/null +++ b/keyboards/cannonkeys/ripple_hs/keymaps/via/keymap.c @@ -0,0 +1,59 @@ +/* +Copyright 2012,2013 Jun Wako + +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 +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_tkl_f13_ansi_tsangan( + KC_ESC, 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_MPLY, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, 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_INS, KC_HOME, KC_PGUP, + 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_DEL, KC_END, KC_PGDN, + 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [_FN1] = LAYOUT_tkl_f13_ansi_tsangan( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, BL_TOGG, BL_DOWN, BL_UP, + 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_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + 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), + + [_FN2] = LAYOUT_tkl_f13_ansi_tsangan( + 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, 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), + + [_FN3] = LAYOUT_tkl_f13_ansi_tsangan( + 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, 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/cannonkeys/ripple_hs/keymaps/via/rules.mk b/keyboards/cannonkeys/ripple_hs/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cannonkeys/ripple_hs/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cannonkeys/ripple_hs/readme.md b/keyboards/cannonkeys/ripple_hs/readme.md new file mode 100644 index 000000000000..f919f46c6f7d --- /dev/null +++ b/keyboards/cannonkeys/ripple_hs/readme.md @@ -0,0 +1,24 @@ +# CannonKeys Ripple HS + +Ripple Keyboard by Upas + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/ripple_hs:default + +Flashing example for this keyboard: + + make cannonkeys/ripple_hs:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard +* **Physical reset button**: Toggle the switch on the back of the pcb to "1" and briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. In the pre-supplied keymaps it is on the second layer, replacing the R key. diff --git a/keyboards/cannonkeys/ripple_hs/rules.mk b/keyboards/cannonkeys/ripple_hs/rules.mk new file mode 100644 index 000000000000..2a5031cd3205 --- /dev/null +++ b/keyboards/cannonkeys/ripple_hs/rules.mk @@ -0,0 +1,5 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From a434507ab4dcdf437678587e92bab18323d7d3c5 Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Mon, 3 Apr 2023 18:56:12 -0400 Subject: [PATCH 32/73] Add Ripple TKL Keyboard firmware (#20301) --- keyboards/cannonkeys/ripple/config.h | 18 +++ keyboards/cannonkeys/ripple/halconf.h | 29 ++++ keyboards/cannonkeys/ripple/info.json | 150 ++++++++++++++++++ .../ripple/keymaps/default/keymap.c | 41 +++++ .../cannonkeys/ripple/keymaps/via/keymap.c | 59 +++++++ .../cannonkeys/ripple/keymaps/via/rules.mk | 1 + keyboards/cannonkeys/ripple/mcuconf.h | 31 ++++ keyboards/cannonkeys/ripple/readme.md | 24 +++ keyboards/cannonkeys/ripple/rules.mk | 7 + 9 files changed, 360 insertions(+) create mode 100644 keyboards/cannonkeys/ripple/config.h create mode 100644 keyboards/cannonkeys/ripple/halconf.h create mode 100644 keyboards/cannonkeys/ripple/info.json create mode 100644 keyboards/cannonkeys/ripple/keymaps/default/keymap.c create mode 100644 keyboards/cannonkeys/ripple/keymaps/via/keymap.c create mode 100644 keyboards/cannonkeys/ripple/keymaps/via/rules.mk create mode 100644 keyboards/cannonkeys/ripple/mcuconf.h create mode 100644 keyboards/cannonkeys/ripple/readme.md create mode 100644 keyboards/cannonkeys/ripple/rules.mk diff --git a/keyboards/cannonkeys/ripple/config.h b/keyboards/cannonkeys/ripple/config.h new file mode 100644 index 000000000000..68745474c9ba --- /dev/null +++ b/keyboards/cannonkeys/ripple/config.h @@ -0,0 +1,18 @@ +// Copyright 2022 Andrew Kannan (@awkannan) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PAL_MODE 1 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define WS2812_SPI SPID2 +#define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/ripple/halconf.h b/keyboards/cannonkeys/ripple/halconf.h new file mode 100644 index 000000000000..7a5b2d4de49c --- /dev/null +++ b/keyboards/cannonkeys/ripple/halconf.h @@ -0,0 +1,29 @@ +/* Copyright 2020 QMK + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/cannonkeys/devastatingtkl/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SPI TRUE + +#include_next + diff --git a/keyboards/cannonkeys/ripple/info.json b/keyboards/cannonkeys/ripple/info.json new file mode 100644 index 000000000000..63564ae7cea4 --- /dev/null +++ b/keyboards/cannonkeys/ripple/info.json @@ -0,0 +1,150 @@ +{ + "keyboard_name": "Ripple", + "manufacturer": "CannonKeys", + "url": "https://cannonkeys.com", + "maintainer": "awkannan", + "usb": { + "vid": "0xCA04", + "pid": "0x0025", + "device_version": "0.0.1" + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["B1", "B2", "B10", "B11", "B12", "B14", "A8", "A9", "A10", "A3", "B0", "A2", "A1", "A7", "A0", "B4", "B6", "B7"], + "rows": ["A15", "B3", "B5", "A4", "A5", "F1"] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "backlight": true, + "rgblight": true + }, + "rgblight": { + "led_count": 20, + "pin": "B15", + "hue_steps": 17, + "saturation_steps": 17, + "brightness_steps": 17, + "animations": { + "static_gradient": true, + "twinkle": true, + "rainbow_mood": true, + "rainbow_swirl": true + } + }, + "backlight": { + "pin": "A6", + "levels": 15, + "breathing": true, + "breathing_period": 5 + }, + "indicators": { + "caps_lock": "B9", + "scroll_lock": "F0", + "on_state": 0 + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1.25, "y": 0 }, + { "matrix": [0, 2], "x": 2.25, "y": 0 }, + { "matrix": [0, 3], "x": 3.25, "y": 0 }, + { "matrix": [0, 4], "x": 4.25, "y": 0 }, + { "matrix": [0, 5], "x": 5.5, "y": 0 }, + { "matrix": [0, 6], "x": 6.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.75, "y": 0 }, + { "matrix": [0, 10], "x": 10.75, "y": 0 }, + { "matrix": [0, 11], "x": 11.75, "y": 0 }, + { "matrix": [0, 12], "x": 12.75, "y": 0 }, + { "matrix": [0, 14], "x": 14, "y": 0 }, + { "matrix": [0, 15], "x": 15.25, "y": 0 }, + { "matrix": [0, 16], "x": 16.25, "y": 0 }, + { "matrix": [0, 17], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "x": 2, "y": 1.25 }, + { "matrix": [1, 3], "x": 3, "y": 1.25 }, + { "matrix": [1, 4], "x": 4, "y": 1.25 }, + { "matrix": [1, 5], "x": 5, "y": 1.25 }, + { "matrix": [1, 6], "x": 6, "y": 1.25 }, + { "matrix": [1, 7], "x": 7, "y": 1.25 }, + { "matrix": [1, 8], "x": 8, "y": 1.25 }, + { "matrix": [1, 9], "x": 9, "y": 1.25 }, + { "matrix": [1, 10], "x": 10, "y": 1.25 }, + { "matrix": [1, 11], "x": 11, "y": 1.25 }, + { "matrix": [1, 12], "x": 12, "y": 1.25 }, + { "matrix": [1, 13], "x": 13, "y": 1.25 }, + { "matrix": [1, 14], "x": 14, "y": 1.25 }, + { "matrix": [1, 15], "x": 15.25, "y": 1.25 }, + { "matrix": [1, 16], "x": 16.25, "y": 1.25 }, + { "matrix": [1, 17], "x": 17.25, "y": 1.25 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.25 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.25 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.25 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.25 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.25 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.25 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.25 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.25 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.25 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.25 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.25 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.25 }, + { "matrix": [2, 14], "w": 1.5, "x": 13.5, "y": 2.25 }, + { "matrix": [2, 15], "x": 15.25, "y": 2.25 }, + { "matrix": [2, 16], "x": 16.25, "y": 2.25 }, + { "matrix": [2, 17], "x": 17.25, "y": 2.25 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.25 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.25 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.25 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.25 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.25 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.25 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.25 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.25 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.25 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.25 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.25 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.25 }, + { "matrix": [3, 12], "x": 12.75, "y": 3.25 }, + { "matrix": [3, 14], "w": 1.25, "x": 13.75, "y": 3.25 }, + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4.25 }, + { "matrix": [4, 1], "x": 1.25, "y": 4.25 }, + { "matrix": [4, 2], "x": 2.25, "y": 4.25 }, + { "matrix": [4, 3], "x": 3.25, "y": 4.25 }, + { "matrix": [4, 4], "x": 4.25, "y": 4.25 }, + { "matrix": [4, 5], "x": 5.25, "y": 4.25 }, + { "matrix": [4, 6], "x": 6.25, "y": 4.25 }, + { "matrix": [4, 7], "x": 7.25, "y": 4.25 }, + { "matrix": [4, 8], "x": 8.25, "y": 4.25 }, + { "matrix": [4, 9], "x": 9.25, "y": 4.25 }, + { "matrix": [4, 10], "x": 10.25, "y": 4.25 }, + { "matrix": [4, 11], "x": 11.25, "y": 4.25 }, + { "matrix": [4, 12], "w": 1.75, "x": 12.25, "y": 4.25 }, + { "matrix": [4, 14], "x": 14, "y": 4.25 }, + { "matrix": [4, 16], "x": 16.25, "y": 4.25 }, + { "matrix": [5, 0], "w": 1.25, "x": 0, "y": 5.25 }, + { "matrix": [5, 1], "w": 1.25, "x": 1.25, "y": 5.25 }, + { "matrix": [5, 2], "w": 1.25, "x": 2.5, "y": 5.25 }, + { "matrix": [5, 6], "w": 6.25, "x": 3.75, "y": 5.25 }, + { "matrix": [5, 10], "w": 1.25, "x": 10, "y": 5.25 }, + { "matrix": [5, 11], "w": 1.25, "x": 11.25, "y": 5.25 }, + { "matrix": [5, 12], "w": 1.25, "x": 12.5, "y": 5.25 }, + { "matrix": [5, 14], "w": 1.25, "x": 13.75, "y": 5.25 }, + { "matrix": [5, 15], "x": 15.25, "y": 5.25 }, + { "matrix": [5, 16], "x": 16.25, "y": 5.25 }, + { "matrix": [5, 17], "x": 17.25, "y": 5.25 } + ] + } + } +} diff --git a/keyboards/cannonkeys/ripple/keymaps/default/keymap.c b/keyboards/cannonkeys/ripple/keymaps/default/keymap.c new file mode 100644 index 000000000000..9b6d73b5bcde --- /dev/null +++ b/keyboards/cannonkeys/ripple/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* +Copyright 2012,2013 Jun Wako + +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 +enum layer_names { + _BASE, + _FN1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT( + KC_ESC, 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_MPLY, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, + 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_DEL, KC_END, KC_PGDN, + 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_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [_FN1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, BL_TOGG, BL_DOWN, BL_UP, + 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_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + 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) + +}; diff --git a/keyboards/cannonkeys/ripple/keymaps/via/keymap.c b/keyboards/cannonkeys/ripple/keymaps/via/keymap.c new file mode 100644 index 000000000000..17c5f13e8591 --- /dev/null +++ b/keyboards/cannonkeys/ripple/keymaps/via/keymap.c @@ -0,0 +1,59 @@ +/* +Copyright 2012,2013 Jun Wako + +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 +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT( + KC_ESC, 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_MPLY, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, 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_BSPC, KC_INS, KC_HOME, KC_PGUP, + 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_DEL, KC_END, KC_PGDN, + 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_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [_FN1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, BL_TOGG, BL_DOWN, BL_UP, + 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_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + 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), + + [_FN2] = 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, 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), + + [_FN3] = 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, 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/cannonkeys/ripple/keymaps/via/rules.mk b/keyboards/cannonkeys/ripple/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cannonkeys/ripple/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cannonkeys/ripple/mcuconf.h b/keyboards/cannonkeys/ripple/mcuconf.h new file mode 100644 index 000000000000..d0920a66601b --- /dev/null +++ b/keyboards/cannonkeys/ripple/mcuconf.h @@ -0,0 +1,31 @@ +/* Copyright 2020 QMK + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/cannonkeys/devastatingtkl/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE + diff --git a/keyboards/cannonkeys/ripple/readme.md b/keyboards/cannonkeys/ripple/readme.md new file mode 100644 index 000000000000..23a31b4a431a --- /dev/null +++ b/keyboards/cannonkeys/ripple/readme.md @@ -0,0 +1,24 @@ +# CannonKeys Ripple + +Ripple Keyboard by Upas + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/ripple:default + +Flashing example for this keyboard: + + make cannonkeys/ripple:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Toggle the switch on the back of the pcb to "1" and briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cannonkeys/ripple/rules.mk b/keyboards/cannonkeys/ripple/rules.mk new file mode 100644 index 000000000000..2f5938630cc4 --- /dev/null +++ b/keyboards/cannonkeys/ripple/rules.mk @@ -0,0 +1,7 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + +WS2812_DRIVER = spi + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From 26e0bfd494b4de0505cf4c5c0bcf811aae19adbb Mon Sep 17 00:00:00 2001 From: blindassassin111 <38090555+blindassassin111@users.noreply.github.com> Date: Mon, 3 Apr 2023 18:05:13 -0500 Subject: [PATCH 33/73] [keyboard] Adding OSAv2 numpad (#20209) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/viktus/osav2_numpad/info.json | 242 ++++++++++++++++++ .../osav2_numpad/keymaps/default/keymap.c | 27 ++ .../viktus/osav2_numpad/keymaps/via/keymap.c | 27 ++ .../viktus/osav2_numpad/keymaps/via/rules.mk | 1 + keyboards/viktus/osav2_numpad/readme.md | 27 ++ keyboards/viktus/osav2_numpad/rules.mk | 1 + 6 files changed, 325 insertions(+) create mode 100644 keyboards/viktus/osav2_numpad/info.json create mode 100644 keyboards/viktus/osav2_numpad/keymaps/default/keymap.c create mode 100644 keyboards/viktus/osav2_numpad/keymaps/via/keymap.c create mode 100644 keyboards/viktus/osav2_numpad/keymaps/via/rules.mk create mode 100644 keyboards/viktus/osav2_numpad/readme.md create mode 100644 keyboards/viktus/osav2_numpad/rules.mk diff --git a/keyboards/viktus/osav2_numpad/info.json b/keyboards/viktus/osav2_numpad/info.json new file mode 100644 index 000000000000..ed1c03c19ff9 --- /dev/null +++ b/keyboards/viktus/osav2_numpad/info.json @@ -0,0 +1,242 @@ +{ + "manufacturer": "Viktus Design LLC", + "keyboard_name": "OSAv2 Numpad", + "maintainer": "BlindAssassin111", + "url": "https://viktus.design", + "usb": { + "device_version": "1.0.0", + "vid": "0x5644", + "pid": "0x4F4E" + }, + "bootloader": "atmel-dfu", + "processor": "atmega32u4", + "features": { + "rgblight": true, + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["F5", "F0", "D3", "D5"], + "rows": ["F1", "F4", "D4", "D7", "D6"] + }, + "rgblight": { + "led_count": 9, + "pin": "C7", + "max_brightness": 191, + "animations": { + "breathing": true, + "rainbow_swirl": true, + "twinkle": true + } + }, + "layouts": { + "LAYOUT_all_split": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "x": 1, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 3, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "x": 1, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 3, "y": 2 }, + { "label": "K30", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "K31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "K40", "matrix": [4, 0], "x": 0, "y": 4 }, + { "label": "K41", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "x": 2, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "x": 3, "y": 4 } + ] + }, + "LAYOUT_2u_enter": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "x": 1, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 3, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "x": 1, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 3, "y": 2 }, + { "label": "K30", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "K31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "K40", "matrix": [4, 0], "x": 0, "y": 4 }, + { "label": "K41", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "x": 2, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "h": 2, "x": 3, "y": 3 } + ] + }, + "LAYOUT_2u_plus_2u_enter": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "x": 1, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "x": 1, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "h": 2, "x": 3, "y": 1 }, + { "label": "K30", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "K31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "K40", "matrix": [4, 0], "x": 0, "y": 4 }, + { "label": "K41", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "x": 2, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "h": 2, "x": 3, "y": 3 } + ] + }, + "LAYOUT_2u_enter_2u_zero": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "x": 1, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 3, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "x": 1, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 3, "y": 2 }, + { "label": "K30", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "K31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "h": 2, "x": 0, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "x": 2, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "h": 2, "x": 3, "y": 3 } + ] + }, + "LAYOUT_2u_plus_2u_enter_2u_zero": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "x": 1, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "x": 1, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "h": 2, "x": 3, "y": 1 }, + { "label": "K30", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "K31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "h": 2, "x": 0, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "x": 2, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "h": 2, "x": 3, "y": 3 } + ] + }, + "LAYOUT_mirrored_2u_enter": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "x": 1, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 3, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "x": 1, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 3, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "K40", "matrix": [4, 0], "h": 2, "x": 0, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "x": 2, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "x": 3, "y": 4 } + ] + }, + "LAYOUT_mirrored_2u_plus_2u_enter": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "K11", "matrix": [1, 1], "x": 1, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 3, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "h": 2, "x": 0, "y": 1 }, + { "label": "K21", "matrix": [2, 1], "x": 1, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 3, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "K40", "matrix": [4, 0], "h": 2, "x": 0, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "x": 2, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "x": 3, "y": 4 } + ] + }, + "LAYOUT_mirrored_2u_enter_2u_zero": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "x": 1, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 3, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "x": 1, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 3, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "K40", "matrix": [4, 0], "h": 2, "x": 0, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "w": 2, "x": 2, "y": 4 } + ] + }, + "LAYOUT_mirrored_2u_plus_2u_enter_2u_zero": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "K11", "matrix": [1, 1], "x": 1, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 3, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "h": 2, "x": 0, "y": 1 }, + { "label": "K21", "matrix": [2, 1], "x": 1, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 3, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "K40", "matrix": [4, 0], "h": 2, "x": 0, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "w": 2, "x": 2, "y": 4 }, + ] + } + } +} diff --git a/keyboards/viktus/osav2_numpad/keymaps/default/keymap.c b/keyboards/viktus/osav2_numpad/keymaps/default/keymap.c new file mode 100644 index 000000000000..ce8a1d277417 --- /dev/null +++ b/keyboards/viktus/osav2_numpad/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2022 Viktus Design LLC + * + * 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_all_split( + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_PEQL, + KC_P1, KC_P2, KC_P3, KC_DEL, + KC_P0, KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/viktus/osav2_numpad/keymaps/via/keymap.c b/keyboards/viktus/osav2_numpad/keymaps/via/keymap.c new file mode 100644 index 000000000000..ce8a1d277417 --- /dev/null +++ b/keyboards/viktus/osav2_numpad/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2022 Viktus Design LLC + * + * 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_all_split( + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_PEQL, + KC_P1, KC_P2, KC_P3, KC_DEL, + KC_P0, KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/viktus/osav2_numpad/keymaps/via/rules.mk b/keyboards/viktus/osav2_numpad/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/viktus/osav2_numpad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/viktus/osav2_numpad/readme.md b/keyboards/viktus/osav2_numpad/readme.md new file mode 100644 index 000000000000..6cf2686283e1 --- /dev/null +++ b/keyboards/viktus/osav2_numpad/readme.md @@ -0,0 +1,27 @@ +# OSAv2 Numpad + +![osav2_numpad](https://i.imgur.com/G6yNtJMh.png) + +A OSAv2 Numpad in MX flavor. + +- Keyboard Maintainer: BlindAssassin111 +- Hardware Supported: OSAv2 Numpad PCB +- Hardware Availability: Viktus Design LLC + +Make example for this keyboard (after setting up your build environment): + + make viktus/osav2_numpad:default + +Flashing example for this keyboard: + + make viktus/osav2_numpad:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/viktus/osav2_numpad/rules.mk b/keyboards/viktus/osav2_numpad/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/viktus/osav2_numpad/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 37f205ec1a0c5cc359fda442ca9e591b65e0900a Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Tue, 4 Apr 2023 07:06:33 +0800 Subject: [PATCH 34/73] Use table for debounce algorithm description (#20322) --- docs/feature_debounce_type.md | 56 +++++++++++++++-------------------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/docs/feature_debounce_type.md b/docs/feature_debounce_type.md index 9cd736a24aca..8012037b6f60 100644 --- a/docs/feature_debounce_type.md +++ b/docs/feature_debounce_type.md @@ -89,46 +89,38 @@ susceptible to noise, you must choose a debounce method that will also mitigate * Per-key and per-row algorithms consume more resources (in terms of performance, and ram usage), but fast typists might prefer them over global. -## Debounce algorithms supported by QMK +## Supported Debounce Algorithms QMK supports multiple debounce algorithms through its debounce API. ### Debounce selection -| DEBOUNCE_TYPE | Description | What else is needed | -| ------------- | --------------------------------------------------- | ----------------------------- | -| Not defined | Use the default algorithm, currently sym_defer_g | Nothing | -| custom | Use your own debounce code | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | -| Anything Else | Use another algorithm from quantum/debounce/* | Nothing | - -**Regarding split keyboards**: -The debounce code is compatible with split keyboards. - -### Selecting an included debouncing method -Keyboards may select one of the already implemented debounce methods, by adding to ```rules.mk``` the following line: +Keyboards may select one of the core debounce methods by adding the following line into ```rules.mk```: ``` DEBOUNCE_TYPE = ``` -Where name of algorithm is one of: -* ```sym_defer_g``` - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE``` milliseconds of no changes has occurred, all input changes are pushed. - * This is the current default algorithm. This is the highest performance algorithm with lowest memory usage, and it's also noise-resistant. -* ```sym_eager_pr``` - debouncing per row. On any state change, response is immediate, followed by locking the row ```DEBOUNCE``` milliseconds of no further input for that row. -For use in keyboards where refreshing ```NUM_KEYS``` 8-bit counters is computationally expensive / low scan rate, and fingers usually only hit one row at a time. This could be -appropriate for the ErgoDox models; the matrix is rotated 90°, and hence its "rows" are really columns, and each finger only hits a single "row" at a time in normal use. -* ```sym_eager_pk``` - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key -* ```sym_defer_pr``` - debouncing per row. On any state change, a per-row timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that row, the entire row is pushed. Can improve responsiveness over `sym_defer_g` while being less susceptible than per-key debouncers to noise. -* ```sym_defer_pk``` - debouncing per key. On any state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key status change is pushed. -* ```asym_eager_defer_pk``` - debouncing per key. On a key-down state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key-up status change is pushed. - -### A couple algorithms that could be implemented in the future: -* ```sym_defer_pr``` -* ```sym_eager_g``` - -### Use your own debouncing code -You have the option to implement you own debouncing algorithm. To do this: +Name of algorithm is one of: + +| Algorithm | Description | +| ------------------------- | ----------- | +| ```sym_defer_g``` | Debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE``` milliseconds of no changes has occurred, all input changes are pushed. This is the highest performance algorithm with lowest memory usage and is noise-resistant. | +| ```sym_defer_pr``` | Debouncing per row. On any state change, a per-row timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that row, the entire row is pushed. This can improve responsiveness over `sym_defer_g` while being less susceptible to noise than per-key algorithm. | +| ```sym_defer_pk``` | Debouncing per key. On any state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key status change is pushed. | +| ```sym_eager_pr``` | Debouncing per row. On any state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that row. | +| ```sym_eager_pk``` | Debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key. | +| ```asym_eager_defer_pk``` | Debouncing per key. On a key-down state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key-up status change is pushed. | + +?> ```sym_defer_g``` is the default if ```DEBOUNCE_TYPE``` is undefined + +?> ```sym_eager_pr``` is suitable for use in keyboards where refreshing ```NUM_KEYS``` 8-bit counters is computationally expensive or has low scan rate while fingers usually hit one row at a time. This could be appropriate for the ErgoDox models where the matrix is rotated 90°. Hence its "rows" are really columns and each finger only hits a single "row" at a time with normal usage. + +### Implementing your own debouncing code + +You have the option to implement you own debouncing algorithm with the following steps: + * Set ```DEBOUNCE_TYPE = custom``` in ```rules.mk```. * Add ```SRC += debounce.c``` in ```rules.mk``` -* Add your own ```debounce.c```. Look at current implementations in ```quantum/debounce``` for examples. +* Implement your own ```debounce.c```. See ```quantum/debounce``` for examples. * Debouncing occurs after every raw matrix scan. -* Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly. -* If the algorithm might be applicable to other keyboards, please consider adding it to ```quantum/debounce``` +* Use num_rows instead of MATRIX_ROWS to support split keyboards correctly. +* If your custom algorithm is applicable to other keyboards, please consider making a pull request. From 1fd30b3391434db1f1c3d2dbe17fe40752e40a2b Mon Sep 17 00:00:00 2001 From: Alex Paulescu Date: Tue, 4 Apr 2023 02:13:42 +0300 Subject: [PATCH 35/73] Manibus keyboard, update pinout (#20309) --- keyboards/blank_tehnologii/manibus/config.h | 8 +- .../manibus/keymaps/samurai/keymap.c | 110 ++---------------- 2 files changed, 16 insertions(+), 102 deletions(-) diff --git a/keyboards/blank_tehnologii/manibus/config.h b/keyboards/blank_tehnologii/manibus/config.h index afe48b150c63..81e7ce637d5a 100644 --- a/keyboards/blank_tehnologii/manibus/config.h +++ b/keyboards/blank_tehnologii/manibus/config.h @@ -20,10 +20,10 @@ #define EE_HANDS /* define pins */ -#define MATRIX_ROW_PINS { F6, F5, F4, B6, D3 } -#define MATRIX_COL_PINS { B5, B4, D7, D6, F0, F1, C6 } -#define MATRIX_ROW_PINS_RIGHT { D6, D7, B4, F7, E6 } -#define MATRIX_COL_PINS_RIGHT { B1, B2, B3, F1, F4, F5, F6 } +#define MATRIX_ROW_PINS { F4, F5, F6, D3, C6 } +#define MATRIX_COL_PINS { D7, B4, B5, B6, F0, D4, D6 } +#define MATRIX_ROW_PINS_RIGHT { F5, F1, B2, B1, C6 } +#define MATRIX_COL_PINS_RIGHT { B6, B5, D6, D5, D3, D7, B4 } /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/blank_tehnologii/manibus/keymaps/samurai/keymap.c b/keyboards/blank_tehnologii/manibus/keymaps/samurai/keymap.c index db43291a3ce7..5c2d29f197e8 100644 --- a/keyboards/blank_tehnologii/manibus/keymaps/samurai/keymap.c +++ b/keyboards/blank_tehnologii/manibus/keymaps/samurai/keymap.c @@ -21,24 +21,16 @@ enum custom_layers { _LOWER, _UPPER, _MOUSE, - _MEDIA, + _MEDIA, }; #define MD_SPC MT(MOD_LSFT, KC_SPC) -#define MD_ENT MT(MOD_RALT, KC_ENT) -#define LT_SPC LT(_LOWER, KC_SPC) enum custom_keycodes { QWERTY = SAFE_RANGE, LOWER, UPPER, MOUSE, - MEDIA, - KC_CTB, - KC_CSTB, - KC_QUIT, - KC_CTLW, - KC_CTLT, - KC_CST + MEDIA }; /* L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, @@ -75,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, // ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - UPPER, KC_HOME, MOUSE, KC_RALT, KC_LCTL, MD_SPC, KC_LALT, KC_ENT, KC_BSPC, LOWER, KC_DEL, KC_INS, KC_END, MEDIA + TG(MOUSE), KC_HOME, MO(UPPER),KC_RALT, KC_LCTL, MD_SPC, KC_LALT, KC_ENT, KC_BSPC, MO(LOWER), KC_DEL, KC_INS, KC_END, MO(MEDIA) // └────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘ ), @@ -85,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, KC_LBRC, KC_RBRC, KC_F12, // ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT,_______, _______, + _______, _______, KC_LCTL, KC_RCTL, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT,_______, _______, // ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, // ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ @@ -111,9 +103,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // ┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, // ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_CAPS, KC_WH_U, KC_MS_U, _______, _______, _______, // ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN2, KC_BTN3, + _______, KC_NUM, KC_BTN3, KC_BTN2, KC_BTN1, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN2, KC_BTN3, // ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ _______, _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN2, _______, _______, _______, // ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ @@ -136,88 +128,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -// Automatically sets the numlock on at startup -void led_set_keymap(uint8_t usb_led) { - if (!(usb_led & (1<event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } - return false; - case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - } else { - layer_off(_LOWER); - } - return false; - case UPPER: - if(record->event.pressed) { - layer_on(_UPPER); - } else { - layer_off(_UPPER); - } - return false; - case MOUSE: - if (record->event.pressed) { - layer_on(_MOUSE); - } else { - layer_off(_MOUSE); - } - return false; - case MEDIA: - if(record->event.pressed) { - layer_on(_MEDIA); - } else { - layer_off(_MEDIA); - } - return false; - case KC_CTB: - if(record->event.pressed) { - tap_code16(C(KC_TAB)); - } - return false; - case KC_CSTB: - if(record->event.pressed) { - tap_code16(C(S(KC_TAB))); - } - return false; - case KC_QUIT: - if(record->event.pressed) { - tap_code16(A(KC_F4)); - } - return false; - case KC_CTLW: - if(record->event.pressed) { - tap_code16(C(KC_W)); - } - return false; - case KC_CTLT: - if(record->event.pressed) { - tap_code16(C(KC_T)); - } - return false; - case KC_CST: - if(record->event.pressed) { - tap_code16(C(S(KC_T))); - } - return false; - case KC_ENT: - if(record->event.pressed) { - if(get_mods() & MOD_BIT(KC_LSFT)){ - tap_code(KC_SPC); - } - else { - tap_code(KC_ENT); - } - } - return false; - } - return true; +//nano to manibus communcation +bool led_update_user(led_t state) { + if (state.caps_lock != layer_state_is(_MOUSE)) { + layer_invert(_MOUSE); + } + return true; } From f56cf93fa13ede82612cd6507b3512786b8f4933 Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Tue, 4 Apr 2023 10:15:00 +0800 Subject: [PATCH 36/73] Add debounce time description (#20333) --- docs/feature_debounce_type.md | 64 ++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/docs/feature_debounce_type.md b/docs/feature_debounce_type.md index 8012037b6f60..807b902a6cc3 100644 --- a/docs/feature_debounce_type.md +++ b/docs/feature_debounce_type.md @@ -57,70 +57,78 @@ susceptible to noise, you must choose a debounce method that will also mitigate if the scanning is slow, and you are using a timestamp-based algorithm, you might end up making a debouncing decision based on only two sampled values, which will limit the noise-resistance of the algorithm. * Currently all built-in debounce algorithms support timestamp-based debouncing only. In the future we might - implement cycles-based debouncing, and it will be selectable via a ```config.h``` macro. + implement cycles-based debouncing, and it will be selectable via a `config.h` macro. 2) Symmetric vs Asymmetric * Symmetric - apply the same debouncing algorithm, to both key-up and key-down events. - * Recommended naming convention: ```sym_*``` + * Recommended naming convention: `sym_*` * Asymmetric - apply different debouncing algorithms to key-down and key-up events. E.g. Eager key-down, Defer key-up. - * Recommended naming convention: ```asym_*``` followed by details of the type of algorithm in use, in order, for key-down and then key-up + * Recommended naming convention: `asym_*` followed by details of the type of algorithm in use, in order, for key-down and then key-up 3) Eager vs Defer * Eager - any key change is reported immediately. All further inputs for DEBOUNCE ms are ignored. * Eager algorithms are not noise-resistant. * Recommended naming conventions: - * ```sym_eager_*``` - * ```asym_eager_*_*```: key-down is using eager algorithm - * ```asym_*_eager_*```: key-up is using eager algorithm + * `sym_eager_*` + * `asym_eager_*_*`: key-down is using eager algorithm + * `asym_*_eager_*`: key-up is using eager algorithm * Defer - wait for no changes for DEBOUNCE ms before reporting change. * Defer algorithms are noise-resistant * Recommended naming conventions: - * ```sym_defer_*``` - * ```asym_defer_*_*```: key-down is using defer algorithm - * ```asym_*_defer_*```: key-up is using defer algorithm + * `sym_defer_*` + * `asym_defer_*_*`: key-down is using defer algorithm + * `asym_*_defer_*`: key-up is using defer algorithm 4) Global vs Per-Key vs Per-Row * Global - one timer for all keys. Any key change state affects global timer - * Recommended naming convention: ```*_g``` + * Recommended naming convention: `*_g` * Per-key - one timer per key - * Recommended naming convention: ```*_pk``` + * Recommended naming convention: `*_pk` * Per-row - one timer per row - * Recommended naming convention: ```*_pr``` + * Recommended naming convention: `*_pr` * Per-key and per-row algorithms consume more resources (in terms of performance, and ram usage), but fast typists might prefer them over global. ## Supported Debounce Algorithms -QMK supports multiple debounce algorithms through its debounce API. +QMK supports multiple algorithms through its debounce API. -### Debounce selection +### Debounce Time -Keyboards may select one of the core debounce methods by adding the following line into ```rules.mk```: +Default debounce time is 5 milliseconds and it can be changed with the following line in `config.h`: +``` +#define DEBOUNCE 10 +``` +?> Setting `DEBOUNCE` to `0` will disable this feature. + +### Debounce Method + +Keyboards may select one of the core debounce methods by adding the following line into `rules.mk`: ``` DEBOUNCE_TYPE = ``` Name of algorithm is one of: -| Algorithm | Description | -| ------------------------- | ----------- | -| ```sym_defer_g``` | Debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE``` milliseconds of no changes has occurred, all input changes are pushed. This is the highest performance algorithm with lowest memory usage and is noise-resistant. | -| ```sym_defer_pr``` | Debouncing per row. On any state change, a per-row timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that row, the entire row is pushed. This can improve responsiveness over `sym_defer_g` while being less susceptible to noise than per-key algorithm. | -| ```sym_defer_pk``` | Debouncing per key. On any state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key status change is pushed. | -| ```sym_eager_pr``` | Debouncing per row. On any state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that row. | -| ```sym_eager_pk``` | Debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key. | -| ```asym_eager_defer_pk``` | Debouncing per key. On a key-down state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key-up status change is pushed. | +| Algorithm | Description | +| --------------------- | ----------- | +| `sym_defer_g` | Debouncing per keyboard. On any state change, a global timer is set. When `DEBOUNCE` milliseconds of no changes has occurred, all input changes are pushed. This is the highest performance algorithm with lowest memory usage and is noise-resistant. | +| `sym_defer_pr` | Debouncing per row. On any state change, a per-row timer is set. When `DEBOUNCE` milliseconds of no changes have occurred on that row, the entire row is pushed. This can improve responsiveness over `sym_defer_g` while being less susceptible to noise than per-key algorithm. | +| `sym_defer_pk` | Debouncing per key. On any state change, a per-key timer is set. When `DEBOUNCE` milliseconds of no changes have occurred on that key, the key status change is pushed. | +| `sym_eager_pr` | Debouncing per row. On any state change, response is immediate, followed by `DEBOUNCE` milliseconds of no further input for that row. | +| `sym_eager_pk` | Debouncing per key. On any state change, response is immediate, followed by `DEBOUNCE` milliseconds of no further input for that key. | +| `asym_eager_defer_pk` | Debouncing per key. On a key-down state change, response is immediate, followed by `DEBOUNCE` milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When `DEBOUNCE` milliseconds of no changes have occurred on that key, the key-up status change is pushed. | -?> ```sym_defer_g``` is the default if ```DEBOUNCE_TYPE``` is undefined +?> `sym_defer_g` is the default if `DEBOUNCE_TYPE` is undefined. -?> ```sym_eager_pr``` is suitable for use in keyboards where refreshing ```NUM_KEYS``` 8-bit counters is computationally expensive or has low scan rate while fingers usually hit one row at a time. This could be appropriate for the ErgoDox models where the matrix is rotated 90°. Hence its "rows" are really columns and each finger only hits a single "row" at a time with normal usage. +?> `sym_eager_pr` is suitable for use in keyboards where refreshing `NUM_KEYS` 8-bit counters is computationally expensive or has low scan rate while fingers usually hit one row at a time. This could be appropriate for the ErgoDox models where the matrix is rotated 90°. Hence its "rows" are really columns and each finger only hits a single "row" at a time with normal usage. ### Implementing your own debouncing code You have the option to implement you own debouncing algorithm with the following steps: -* Set ```DEBOUNCE_TYPE = custom``` in ```rules.mk```. -* Add ```SRC += debounce.c``` in ```rules.mk``` -* Implement your own ```debounce.c```. See ```quantum/debounce``` for examples. +* Set `DEBOUNCE_TYPE = custom` in `rules.mk`. +* Add `SRC += debounce.c` in `rules.mk` +* Implement your own `debounce.c`. See `quantum/debounce` for examples. * Debouncing occurs after every raw matrix scan. * Use num_rows instead of MATRIX_ROWS to support split keyboards correctly. * If your custom algorithm is applicable to other keyboards, please consider making a pull request. From 687883cf7d68deedfd1678af1195c4d6f35456df Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 4 Apr 2023 15:09:55 +1000 Subject: [PATCH 37/73] Resolve keyboard names for `qmk mass-compile`. (#20335) --- lib/python/qmk/cli/mass_compile.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/python/qmk/cli/mass_compile.py b/lib/python/qmk/cli/mass_compile.py index 909118790c8d..52c1cae4c2d9 100755 --- a/lib/python/qmk/cli/mass_compile.py +++ b/lib/python/qmk/cli/mass_compile.py @@ -9,6 +9,7 @@ from qmk.constants import QMK_FIRMWARE from qmk.commands import _find_make, get_make_parallel_args +from qmk.keyboard import resolve_keyboard from qmk.search import search_keymap_targets @@ -39,7 +40,7 @@ def mass_compile(cli): makefile = builddir / 'parallel_kb_builds.mk' if len(cli.args.builds) > 0: - targets = [(e[0], e[1]) for e in [b.split(':') for b in cli.args.builds]] + targets = list(sorted(set([(resolve_keyboard(e[0]), e[1]) for e in [b.split(':') for b in cli.args.builds]]))) else: targets = search_keymap_targets(cli.args.keymap, cli.args.filter) From f7176f070fd2b1cd6df25774f4de842200a7a342 Mon Sep 17 00:00:00 2001 From: Alex Miller <39163867+doesntfazer@users.noreply.github.com> Date: Tue, 4 Apr 2023 17:36:23 -0400 Subject: [PATCH 38/73] [Keyboard] Add Budgy and Crowboard Keyboards (#19141) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Ryan Co-authored-by: Drashna Jaelre --- keyboards/budgy/config.h | 14 ++++ keyboards/budgy/info.json | 81 ++++++++++++++++++++ keyboards/budgy/keymaps/default/keymap.c | 25 ++++++ keyboards/budgy/readme.md | 27 +++++++ keyboards/budgy/rules.mk | 2 + keyboards/crowboard/info.json | 66 ++++++++++++++++ keyboards/crowboard/keymaps/default/config.h | 6 ++ keyboards/crowboard/keymaps/default/keymap.c | 60 +++++++++++++++ keyboards/crowboard/keymaps/default/rules.mk | 1 + keyboards/crowboard/readme.md | 28 +++++++ keyboards/crowboard/rules.mk | 1 + 11 files changed, 311 insertions(+) create mode 100644 keyboards/budgy/config.h create mode 100644 keyboards/budgy/info.json create mode 100644 keyboards/budgy/keymaps/default/keymap.c create mode 100644 keyboards/budgy/readme.md create mode 100644 keyboards/budgy/rules.mk create mode 100644 keyboards/crowboard/info.json create mode 100644 keyboards/crowboard/keymaps/default/config.h create mode 100644 keyboards/crowboard/keymaps/default/keymap.c create mode 100644 keyboards/crowboard/keymaps/default/rules.mk create mode 100644 keyboards/crowboard/readme.md create mode 100644 keyboards/crowboard/rules.mk diff --git a/keyboards/budgy/config.h b/keyboards/budgy/config.h new file mode 100644 index 000000000000..4543a048be10 --- /dev/null +++ b/keyboards/budgy/config.h @@ -0,0 +1,14 @@ +// Copyright 2022 KeyboardDweebs (@doesntfazer) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U + + +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP1 +#define SERIAL_USART_RX_PIN GP0 + +// #define SERIAL_USART_PIN_SWAP diff --git a/keyboards/budgy/info.json b/keyboards/budgy/info.json new file mode 100644 index 000000000000..631d2be9d1ad --- /dev/null +++ b/keyboards/budgy/info.json @@ -0,0 +1,81 @@ +{ + "manufacturer": "KeyboardDweebs", + "keyboard_name": "budgy", + "maintainer": "doesntfazer", + "bootloader": "rp2040", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0117", + "vid": "0xFABE" + }, + "matrix_pins": { + "direct": [ + ["GP6", "GP5", "GP4", "GP3", "GP2"], + ["GP11", "GP10", "GP9", "GP8", "GP7"], + ["GP15", "GP14", "GP13", "GP12", "GP16"], + ["GP17", "GP18", null, null, null] + ] + }, + "split": { + "matrix_pins": { + "right": { + "direct": [ + ["GP2", "GP3", "GP4", "GP5", "GP6"], + ["GP7", "GP8", "GP9", "GP10", "GP11"], + ["GP16", "GP12", "GP13", "GP14", "GP15"], + ["GP18", "GP17", null, null, null] + ] + } + } + }, + "layouts": { + "LAYOUT_split_3x5_2": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0.25 }, + { "matrix": [0, 1], "x": 1, "y": 0.25 }, + { "matrix": [0, 2], "x": 2, "y": 0.125 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0.125 }, + { "matrix": [4, 0], "x": 8, "y": 0.25 }, + { "matrix": [4, 1], "x": 9, "y": 0.125 }, + { "matrix": [4, 2], "x": 10, "y": 0 }, + { "matrix": [4, 3], "x": 11, "y": 0.125 }, + { "matrix": [4, 4], "x": 12, "y": 0.25 }, + { "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "x": 2, "y": 1.125 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1.125 }, + { "matrix": [5, 0], "x": 8, "y": 1.25 }, + { "matrix": [5, 1], "x": 9, "y": 1.125 }, + { "matrix": [5, 2], "x": 10, "y": 1 }, + { "matrix": [5, 3], "x": 11, "y": 1.125 }, + { "matrix": [5, 4], "x": 12, "y": 1.25 }, + { "matrix": [2, 0], "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "x": 1, "y": 2.25 }, + { "matrix": [2, 2], "x": 2, "y": 2.125 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2.125 }, + { "matrix": [6, 0], "x": 8, "y": 2.25 }, + { "matrix": [6, 1], "x": 9, "y": 2.125 }, + { "matrix": [6, 2], "x": 10, "y": 2 }, + { "matrix": [6, 3], "x": 11, "y": 2.125 }, + { "matrix": [6, 4], "x": 12, "y": 2.25 }, + { "matrix": [3, 0], "x": 3.5, "y": 3.25 }, + { "matrix": [3, 1], "x": 4.5, "y": 3.5 }, + { "matrix": [7, 0], "x": 7.5, "y": 3.75 }, + { "matrix": [7, 1], "x": 8.5, "y": 3.5 } + ] + } + } +} diff --git a/keyboards/budgy/keymaps/default/keymap.c b/keyboards/budgy/keymaps/default/keymap.c new file mode 100644 index 000000000000..3bdf3735989b --- /dev/null +++ b/keyboards/budgy/keymaps/default/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2021 Keyboard Dweebs (@doesntfazer) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + * │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │ + * └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + * ┌───┐ ┌───┐ + * │Bsp├───┐ ┌───┤Ent│ + * └───┤Tab│ │Spc├───┘ + * └───┘ └───┘ + */ + [0] = LAYOUT_split_3x5_2( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_BSPC, KC_TAB, KC_SPC, KC_ENT + ) +}; diff --git a/keyboards/budgy/readme.md b/keyboards/budgy/readme.md new file mode 100644 index 000000000000..a164a87acfc3 --- /dev/null +++ b/keyboards/budgy/readme.md @@ -0,0 +1,27 @@ +# budgy + +![budgy](https://i.imgur.com/6kjxmSMh.jpeg) + +34 key, diodeless, RP2040 based, budget keyboard. + +* Keyboard Maintainer: [KeyboardDweebs](https://github.com/doesntfazer) +* Hardware Supported: Raspberry Pi Pico +* Hardware Availability: [Github Page](https://github.com/doesntfazer/Budgy) Buy Directly from [Keyboard Dweebs](https://keyboarddweebs.net/) + +Make example for this keyboard (after setting up your build environment): + + make budgy:default + +Flashing example for this keyboard: + + make budgy:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/budgy/rules.mk b/keyboards/budgy/rules.mk new file mode 100644 index 000000000000..95546c6ef58a --- /dev/null +++ b/keyboards/budgy/rules.mk @@ -0,0 +1,2 @@ +SPLIT_KEYBOARD = yes +SERIAL_DRIVER = vendor diff --git a/keyboards/crowboard/info.json b/keyboards/crowboard/info.json new file mode 100644 index 000000000000..7744907fa73a --- /dev/null +++ b/keyboards/crowboard/info.json @@ -0,0 +1,66 @@ +{ + "manufacturer": "KeyboardDweebs", + "keyboard_name": "crowboard", + "maintainer": "doesntfazer", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP6", "GP7", "GP8", "GP9", "GP10", "GP18", "GP19", "GP20", "GP21", "GP22"], + "rows": ["GP14", "GP15", "GP16", "GP17"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 7], "x": 7, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 7], "x": 7, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 } + ] + } + } +} diff --git a/keyboards/crowboard/keymaps/default/config.h b/keyboards/crowboard/keymaps/default/config.h new file mode 100644 index 000000000000..a50d8483dc6c --- /dev/null +++ b/keyboards/crowboard/keymaps/default/config.h @@ -0,0 +1,6 @@ +// Copyright 2022 doesntfazer (@doesntfazer) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY diff --git a/keyboards/crowboard/keymaps/default/keymap.c b/keyboards/crowboard/keymaps/default/keymap.c new file mode 100644 index 000000000000..f6d51dc37c5d --- /dev/null +++ b/keyboards/crowboard/keymaps/default/keymap.c @@ -0,0 +1,60 @@ +// Copyright 2021 Keyboard Dweebs (@doesntfazer) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +#define CTLA LCTL(KC_A) +#define CAE LCTL(LALT(KC_END)) +#define CAD LCTL(LALT(KC_DEL)) + +enum crow_layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT ( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + LCTL_T(KC_A), KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_LCTL, TL_LOWR, KC_SPACE, KC_BSPC, TL_UPPR, KC_RALT + ), + + [_LOWER] = LAYOUT ( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_MINUS, KC_EQUAL, KC_LBRC, KC_RBRC, + KC_LCTL, KC_GRAVE, KC_LGUI, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_SCLN, + KC_TRNS, TL_LOWR, KC_TRNS, KC_ENTER, TL_UPPR, KC_TRNS + ), + [_RAISE] = LAYOUT ( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + KC_ESC, KC_DEL, CTLA, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, + KC_CAPS, KC_TILDE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PIPE, KC_COLN, + KC_TRNS, TL_LOWR, KC_TRNS, KC_TRNS, TL_UPPR, KC_TRNS + ), + [_ADJUST] = LAYOUT ( + 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CAD, CAE, CAD, CAD, + 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 + ), +}; + + +bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LCTL_T(KC_A): + // Do not force the mod-tap key press to be handled as a modifier + // if any other key was pressed while the mod-tap key is held down. + return false; + default: + // Force the mod-tap key press to be handled as a modifier if any + // other key was pressed while the mod-tap key is held down. + return true; + } +} + + + diff --git a/keyboards/crowboard/keymaps/default/rules.mk b/keyboards/crowboard/keymaps/default/rules.mk new file mode 100644 index 000000000000..7c9bf212a6f5 --- /dev/null +++ b/keyboards/crowboard/keymaps/default/rules.mk @@ -0,0 +1 @@ +TRI_LAYER_ENABLE = yes diff --git a/keyboards/crowboard/readme.md b/keyboards/crowboard/readme.md new file mode 100644 index 000000000000..4603562626f7 --- /dev/null +++ b/keyboards/crowboard/readme.md @@ -0,0 +1,28 @@ +# crowboard + +![crowboard](https://i.imgur.com/Rg7IYPwh.jpg) + +RP2040 based 36 key keyboard + +* Keyboard Maintainer: [doesntfazer](https://github.com/doesntfazer) +* Hardware Supported: Raspberry Pi Pico +* Hardware Availability: keyboarddweebs.net + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical reset button**: Hold the button down on the raspberry pi pico while plugging it in. There is no reset button on the pcb. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + +Make example for this keyboard (after setting up your build environment): + + make crowboard:default + +Flashing example for this keyboard: + + make crowboard:default:flash + +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/crowboard/rules.mk b/keyboards/crowboard/rules.mk new file mode 100644 index 000000000000..37ad1d4c6070 --- /dev/null +++ b/keyboards/crowboard/rules.mk @@ -0,0 +1 @@ +PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS! From 1d045e854b7adbe8a60ce5aeb16438c4652949da Mon Sep 17 00:00:00 2001 From: Dane Skalski Date: Wed, 5 Apr 2023 01:06:24 -0700 Subject: [PATCH 39/73] Add Junco Keyboard (#19516) --- keyboards/junco/info.json | 107 ++++++ keyboards/junco/keymaps/default/config.h | 38 ++ keyboards/junco/keymaps/default/keymap.c | 161 +++++++++ keyboards/junco/keymaps/default/readme.md | 57 +++ keyboards/junco/keymaps/default/rules.mk | 16 + keyboards/junco/keymaps/deluxe/config.h | 58 +++ keyboards/junco/keymaps/deluxe/keymap.c | 329 ++++++++++++++++++ keyboards/junco/keymaps/deluxe/readme.md | 43 +++ .../junco/keymaps/deluxe/rgb_matrix_user.inc | 48 +++ keyboards/junco/keymaps/deluxe/rules.mk | 20 ++ keyboards/junco/keymaps/via/config.h | 87 +++++ keyboards/junco/keymaps/via/keymap.c | 161 +++++++++ keyboards/junco/keymaps/via/rules.mk | 19 + keyboards/junco/readme.md | 41 +++ keyboards/junco/rev1/config.h | 43 +++ keyboards/junco/rev1/post_config.h | 15 + keyboards/junco/rev1/rev1.c | 126 +++++++ keyboards/junco/rev1/rules.mk | 3 + keyboards/junco/rules.mk | 9 + 19 files changed, 1381 insertions(+) create mode 100644 keyboards/junco/info.json create mode 100644 keyboards/junco/keymaps/default/config.h create mode 100644 keyboards/junco/keymaps/default/keymap.c create mode 100644 keyboards/junco/keymaps/default/readme.md create mode 100644 keyboards/junco/keymaps/default/rules.mk create mode 100644 keyboards/junco/keymaps/deluxe/config.h create mode 100644 keyboards/junco/keymaps/deluxe/keymap.c create mode 100644 keyboards/junco/keymaps/deluxe/readme.md create mode 100644 keyboards/junco/keymaps/deluxe/rgb_matrix_user.inc create mode 100644 keyboards/junco/keymaps/deluxe/rules.mk create mode 100644 keyboards/junco/keymaps/via/config.h create mode 100644 keyboards/junco/keymaps/via/keymap.c create mode 100644 keyboards/junco/keymaps/via/rules.mk create mode 100644 keyboards/junco/readme.md create mode 100644 keyboards/junco/rev1/config.h create mode 100644 keyboards/junco/rev1/post_config.h create mode 100644 keyboards/junco/rev1/rev1.c create mode 100644 keyboards/junco/rev1/rules.mk create mode 100644 keyboards/junco/rules.mk diff --git a/keyboards/junco/info.json b/keyboards/junco/info.json new file mode 100644 index 000000000000..72e0d5c92a55 --- /dev/null +++ b/keyboards/junco/info.json @@ -0,0 +1,107 @@ +{ + "manufacturer": "Dane Skalski", + "keyboard_name": "Junco", + "url": "https://github.com/Daneski13/Junco", + "maintainer": "Daneski13", + "usb": { + "vid": "0x4413", + "pid": "0x4A13", + "device_version": "1.0.0" + }, + "processor": "RP2040", + "bootloader": "rp2040", + "layouts": { + "LAYOUT_split4x6_r1": { + "layout": [ + { "label": "`", "matrix": [0, 0], "x": 0, "y": 0.7 }, + { "label": "1", "matrix": [0, 1], "x": 1, "y": 0.7 }, + { "label": "2", "matrix": [0, 2], "x": 2, "y": 0.3 }, + { "label": "3", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "4", "matrix": [0, 4], "x": 4, "y": 0.3 }, + { "label": "5", "matrix": [0, 5], "x": 5, "y": 0.45 }, + { "label": "6", "matrix": [5, 5], "x": 9, "y": 0.45 }, + { "label": "7", "matrix": [5, 4], "x": 10, "y": 0.3 }, + { "label": "8", "matrix": [5, 3], "x": 11, "y": 0 }, + { "label": "9", "matrix": [5, 2], "x": 12, "y": 0.3 }, + { "label": "0", "matrix": [5, 1], "x": 13, "y": 0.7 }, + { "label": "-", "matrix": [5, 0], "x": 14, "y": 0.7 }, + + { "label": "Tab", "matrix": [1, 0], "x": 0, "y": 1.7 }, + { "label": "Q", "matrix": [1, 1], "x": 1, "y": 1.7 }, + { "label": "W", "matrix": [1, 2], "x": 2, "y": 1.3 }, + { "label": "E", "matrix": [1, 3], "x": 3, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4, "y": 1.3 }, + { "label": "T", "matrix": [1, 5], "x": 5, "y": 1.45 }, + { "label": "Y", "matrix": [6, 5], "x": 9, "y": 1.45 }, + { "label": "U", "matrix": [6, 4], "x": 10, "y": 1.3 }, + { "label": "I", "matrix": [6, 3], "x": 11, "y": 1 }, + { "label": "O", "matrix": [6, 2], "x": 12, "y": 1.3 }, + { "label": "P", "matrix": [6, 1], "x": 13, "y": 1.7 }, + { "label": "Enter", "matrix": [6, 0], "x": 14, "y": 1.7 }, + + { "label": "Esc", "matrix": [2, 0], "x": 0, "y": 2.7 }, + { "label": "A", "matrix": [2, 1], "x": 1, "y": 2.7 }, + { "label": "S", "matrix": [2, 2], "x": 2, "y": 2.3 }, + { "label": "D", "matrix": [2, 3], "x": 3, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4, "y": 2.3 }, + { "label": "G", "matrix": [2, 5], "x": 5, "y": 2.45 }, + { "label": "H", "matrix": [7, 5], "x": 9, "y": 2.45 }, + { "label": "J", "matrix": [7, 4], "x": 10, "y": 2.3 }, + { "label": "K", "matrix": [7, 3], "x": 11, "y": 2 }, + { "label": "L", "matrix": [7, 2], "x": 12, "y": 2.3 }, + { "label": ";", "matrix": [7, 1], "x": 13, "y": 2.7 }, + { "label": "'", "matrix": [7, 0], "x": 14, "y": 2.7 }, + + { "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3.7 }, + { "label": "Z", "matrix": [3, 1], "x": 1, "y": 3.7 }, + { "label": "X", "matrix": [3, 2], "x": 2, "y": 3.3 }, + { "label": "C", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "V", "matrix": [3, 4], "x": 4, "y": 3.3 }, + { "label": "B", "matrix": [3, 5], "x": 5, "y": 3.45 }, + { "label": "Mute", "matrix": [4, 5], "x": 6.2, "y": 3.45 }, + { "label": "XXX", "matrix": [9, 5], "x": 7.8, "y": 3.45 }, + { "label": "N", "matrix": [8, 5], "x": 9, "y": 3.45 }, + { "label": "M", "matrix": [8, 4], "x": 10, "y": 3.3 }, + { "label": ",", "matrix": [8, 3], "x": 11, "y": 3 }, + { "label": ".", "matrix": [8, 2], "x": 12, "y": 3.3 }, + { "label": "/", "matrix": [8, 1], "x": 13, "y": 3.7 }, + { "label": "Shift", "matrix": [8, 0], "x": 14, "y": 3.7 }, + + { "label": "Ctrl", "matrix": [4, 0], "x": 2, "y": 4.3 }, + { "label": "Win", "matrix": [4, 1], "x": 3, "y": 4 }, + { "label": "Alt", "matrix": [4, 2], "x": 4, "y": 4.3 }, + { + "label": "Del", + "matrix": [4, 3], + "x": 5.1, + "y": 4.5, + "h": 1.5 + }, + { + "label": "Spc", + "matrix": [4, 4], + "x": 6.1, + "y": 4.5, + "h": 1.5 + }, + { + "label": "Shift", + "matrix": [9, 3], + "x": 7.9, + "y": 4.5, + "h": 1.5 + }, + { + "label": "Bspc", + "matrix": [9, 4], + "x": 8.9, + "y": 4.5, + "h": 1.5 + }, + { "label": "Alt", "matrix": [9, 2], "x": 10, "y": 4.3 }, + { "label": "Win", "matrix": [9, 1], "x": 11, "y": 4 }, + { "label": "Ctrl", "matrix": [9, 0], "x": 12, "y": 4.3 } + ] + } + } +} diff --git a/keyboards/junco/keymaps/default/config.h b/keyboards/junco/keymaps/default/config.h new file mode 100644 index 000000000000..43c47b9122a1 --- /dev/null +++ b/keyboards/junco/keymaps/default/config.h @@ -0,0 +1,38 @@ +// Copyright 2022 Dane Skalski (@Daneski13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* - Encoder settings - */ +#ifdef ENCODER_ENABLE +# define ENCODER_RESOLUTION 4 +#endif +#ifdef ENCODER_MAP_ENABLE +// Key delay for encoders (necessary for some keycodes) +# define ENCODER_MAP_KEY_DELAY 10 +#endif + +/* + - RGB Stuff - + All effects can be found in the QMK docs: + https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +*/ +#ifdef RGB_MATRIX_ENABLE + +// Default effect when EEPROM cleared +# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINBOW_MOVING_CHEVRON + +// Turns off RGB effects when there is no longer a USB connection +# define RGB_DISABLE_WHEN_USB_SUSPENDED + +// Key press reactive animations +# define SPLIT_TRANSPORT_MIRROR // Necessary setting for key press animations +# define RGB_MATRIX_KEYPRESSES // Enables key press effects +# define ENABLE_RGB_MATRIX_MULTISPLASH + +// Normal effects +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#endif diff --git a/keyboards/junco/keymaps/default/keymap.c b/keyboards/junco/keymaps/default/keymap.c new file mode 100644 index 000000000000..dc607477e2fe --- /dev/null +++ b/keyboards/junco/keymaps/default/keymap.c @@ -0,0 +1,161 @@ +// Copyright 2022 Dane Skalski (@Daneski13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +// Layers enum +enum junco_layers { _QWERTY, _COLEMAK_DH, _SYMB, _EXT, _ADJUST }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + /* + Traditional QWERTY + ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Tab│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │Ent│ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Esc│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │ + ├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤ + │Sft│ Z │ X │ C │ V │ B │Mut│ │XXX│ N │ M │ , │ . │ / │Sft│ + └───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │Ctr│Win│Alt│Del│Spc│ │Sft│Bsp│Alt│Win│Ctr│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + For macOS - GUI (cmd) and Alt (opt) swapped + */ + [_QWERTY] = LAYOUT_split4x6_r1( + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENTER, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, LT(_EXT, KC_DEL), KC_SPC, KC_RSFT, LT(_SYMB, KC_BSPC), KC_RALT, KC_RGUI, KC_RCTL + ), + + /* + Colemak-DH + ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Tab│ Q │ W │ F │ P │ B │ │ J │ L │ U │ Y │ ; │Ent│ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Esc│ A │ R │ S │ T │ G │ │ M │ N │ E │ I │ O │ ' │ + ├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤ + │Sft│ Z │ X │ C │ D │ V │Mut│ │XXX│ K │ H │ , │ . │ / │Sft│ + └───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │Ctr│Win│Alt│Del│Spc│ │Sft│Bsp│Alt│Win│Ctr│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + For macOS - GUI (cmd) and Alt (opt) swapped + */ + [_COLEMAK_DH] = LAYOUT_split4x6_r1( + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SEMICOLON, KC_ENTER, + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOTE, + KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_MUTE, KC_NO, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, LT(_EXT, KC_DEL), KC_SPC, KC_RSFT, LT(_SYMB, KC_BSPC), KC_RALT, KC_RGUI, KC_RCTL + ), + + /* + Symbols/Numpad Layer + ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + │F1 │F2 │F3 │F4 │F5 │F6 │ │F7 │F8 │F9 │F10│F11│F12│ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Tab│ ! │ @ │ # │ $ │ % │ │ * │ 7 │ 8 │ 9 │ + │Ent│ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │ \ │ _ │ [ │ { │ ( │ ^ │ │ = │ 4 │ 5 │ 6 │ 0 │NUM│ + ├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤ + │___│ | │ ] │ } │ ) │ & │___│ │___│ / │ 1 │ 2 │ 3 │ - │___│ + └───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │___│___│___│___│___│ │___│___│___│___│___│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + */ + [_SYMB] = LAYOUT_split4x6_r1( + 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_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PAST, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_ENTER, + KC_BSLS, KC_UNDS, KC_LBRC, KC_LCBR, KC_LPRN, KC_CIRC, KC_PEQL, KC_P4, KC_P5, KC_P6, KC_P0, KC_NUM, + _______, KC_PIPE, KC_RBRC, KC_RCBR, KC_RPRN, KC_AMPR, _______, _______, KC_PSLS, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, + _______, _______, _______, MO(_ADJUST), _______, _______, _______, _______, _______, _______ + ), + + /* + Extension/Function Layer + ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐ + │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10│ F11│ F12│ + ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ + │ ⇤ │PGUP│End │ ↑ │Home│ │ │BRIU│ F7 │ F8 │ F9 │ F10│____│ + ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ + │Cps │PGDN│ ← │ ↓ │ → │ │ │BRID│ F4 │ F5 │ F6 │ F11│____│ + ├────┼────┼────┼────┼────┼────┼────┐ ┌────┼────┼────┼────┼────┼────┼────┤ + │____│ │ │ │ │ │____│ │ ▶⏸ │ │ F1 │ F2 │ F3 │ F12│____│ + └────┴────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┴────┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │___│___│___│___│___│ │___│___│___│___│___│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + */ + [_EXT] = LAYOUT_split4x6_r1( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + S(KC_TAB), KC_PGUP, KC_END, KC_UP, KC_HOME, _______, KC_BRIU, KC_F7, KC_F8, KC_F9, KC_F10, _______, + KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, _______, KC_BRID, KC_F4, KC_F5, KC_F6, KC_F11, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______, KC_F1, KC_F2, KC_F3, KC_F12, _______, + _______, _______, _______, _______, _______, _______, MO(_ADJUST), _______, _______, _______ + ), + + /* + Adjust Layer, Keyboard Settings + ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ + ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ + │SpdU│HueU│SatU│ValU│Rnxt│ │ │ │EClr│Rbt │DBUG│BOOT│ │ + ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ + │SpdD│HueD│SatD│ValD│Rprv│RTgl│ │ │QWRT│COLE│ │ │ │ + ├────┼────┼────┼────┼────┼────┼────┐ ┌────┼────┼────┼────┼────┼────┼────┤ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + └────┴────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┴────┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │___│___│___│___│___│ │___│___│___│___│___│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + */ + [_ADJUST] = LAYOUT_split4x6_r1( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, KC_NO, KC_NO, EE_CLR, QK_RBT, DB_TOGG, QK_BOOT, KC_NO, + RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, RGB_TOG, KC_NO, DF(_QWERTY), DF(_COLEMAK_DH), KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; + +/* + --- Rotary Encoder Mappings --- + + Encoder mappings go from leftmost encoder to rightmost encoder on the physical board. + index 0 is the the optional leftmost encoder on the left half, index 1 is the right encoder + on the left half (by the thumb keys), index 2 is the left encoder on the right half (by the + thumb keys), and index 3 is the optional rightmost encoder on the right half. + + If you are only using the 2 required encoders by the thumb keys, you only need to worry about + index 1 and index 2. + + Note that the keycode for counter-clockwise rotation (CCW) goes first and then the key for + clockwise (CW) within ENCODER_CCW_CW. +*/ +#ifdef ENCODER_MAP_ENABLE +// clang-format off + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + // Base layer encoder mappings: + // index 0: mouse wheel up (CCW)/down (CW) index 1: volume down/up index 2: mouse wheel up/down index 3: mouse wheel left/right + [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_WH_L, KC_WH_R) }, + [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + + // Passes through to base layers + [_SYMB] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + // On the extension layer, the right side's left encoder by the thumb keys (mouse wheel up/down) is traded for media previous/next + [_EXT] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + // Passes through + [_ADJUST] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + // clang-format on +}; + +#endif diff --git a/keyboards/junco/keymaps/default/readme.md b/keyboards/junco/keymaps/default/readme.md new file mode 100644 index 000000000000..e37bf97ac7f5 --- /dev/null +++ b/keyboards/junco/keymaps/default/readme.md @@ -0,0 +1,57 @@ +# Default Junco Keymap + +This is the default layout for Junco. For the most part it's a normal QWERTY layout. The exceptions being the thumb keys, rotary encoders, and lack of caps lock (which is replaced by escape). + +One of the biggest features of QMK is it brings layers into the mix which can give you access to even more keys. There are 4 layers: the default/base layer (QWERTY), a symbol layer, an extension layer, and an adjust layer. + +Layers are very similar to Shift on a normal keyboard, where "a" becomes "A" when holding down shift. With a custom layer, you can have "j" become "4" for example and make an entire side of the keyboard become a number pad. + +The [symbol layer](#symbol-layer) is accessed by holding down backspace, the [extension layer](#extension-layer) is accessed by holding down delete, and the [adjust layer](#adjust-layer) is accessed by holding down both delete and backspace. + +## Default Base Layer (QWERTY) + +Grey keys are rotary encoders (the ones on far left and far right are optional). Middle legend is pressing down the encoder, bottom left legend is counter-clockwise turn, and bottom right legend is clockwise turn of the encoder. + +Those arrows for the bottom legends on the encoders are mouse scroll directions. + +Red legends are the layer activated by holding down a key. + +![Junco's QWERTY Layout](https://i.imgur.com/fXGt5Jh.png) + +## Symbol Layer + +This layer is accessed by holding down backspace on the base layer, thus that key is blacked out. + +On the symbol layer, the right side is a number pad, and the left side contains all the typical symbols (geared for programming). + +Holding down delete within the symbol layer will take you to the adjust layer. + +![Junco's Symbol Layer](https://i.imgur.com/6F35Z4Wh.png) + +## Extension Layer + +This layer's theme is navigation/extras, its accessed by holding down delete on the base layer, thus that key is blacked out. + +On the extension layer, the right side is the function keys in a number-pad-esque layout with screen brightness up/down, and the left side has navigation keys and caps lock. Also, the rotary on the right side encoder becomes media controls. + +Holding down backspace within the extension layer will take you to the adjust layer. + +![Junco's Extension Layer](https://i.imgur.com/FETcqkCh.png) + +## Adjust Layer + +This layer's theme is adjusting the keyboard's settings, it's accessed by holding down both delete and backspace on the base layer. + +On the adjust layer, the right side is the keyboard's settings: clear data, reboot, toggle debug mode, enter the bootloader, and change the base layer between QWERTY and [Colemak-DH](#colemak-dh). The left side adjusts the RGB lighting. + +![Junco's Adjust Layer](https://i.imgur.com/fRsdlt3h.png) + +## Colemak-DH + +This keymap offers Colemak-DH as an alternative base layer to QWERTY. + +QWERTY is default when flashing your keyboard, but you can change it to Colemak-DH by selecting it's key on the adjust layer. + +If you've never heard of it, Colemak is a keyboard layout that was designed to be a more ergonomic, modern, efficient, and comfortable replacement to QWERTY. Colemak was designed to place the most common letters in english on the home row along with many of the most common bigrams together (two letters typed in a row). Colemak-DH is a variant of Colemak that moves D and H to beneath the index fingers rather than the home row since most people find it easier and faster to reach the keys that way rather than the middle of the home row. + +![Junco's Colemak-DH Layout](https://i.imgur.com/8biZfn2h.png) diff --git a/keyboards/junco/keymaps/default/rules.mk b/keyboards/junco/keymaps/default/rules.mk new file mode 100644 index 000000000000..2304032cba58 --- /dev/null +++ b/keyboards/junco/keymaps/default/rules.mk @@ -0,0 +1,16 @@ +# Change from yes to no to disable features + +# Enables Audio control and System control Keycodes +EXTRAKEY_ENABLE = yes +# Enables Mousekeys +MOUSEKEY_ENABLE = yes +# Encoder Support +ENCODER_ENABLE = yes +# Use Enocoder Mapping +ENCODER_MAP_ENABLE = yes + +# Enables RGB Lighting Effects +RGB_MATRIX_ENABLE = yes + +# Allows use of `qmk console` for debugging +CONSOLE_ENABLE = yes diff --git a/keyboards/junco/keymaps/deluxe/config.h b/keyboards/junco/keymaps/deluxe/config.h new file mode 100644 index 000000000000..bec55fbd4c30 --- /dev/null +++ b/keyboards/junco/keymaps/deluxe/config.h @@ -0,0 +1,58 @@ +// Copyright 2022 Dane Skalski (@Daneski13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Indicator LEDs */ +// LED index for caps lock key on the extension layer +#define CAPS_LOCK_LED_INDEX 25 +// LED index for num lock key on the symbol layer +#define NUM_LOCK_LED_INDEX 62 +// LED index for key that sticks the adjust layer +#define ADJST_LED_INDEX 19 + +// Number of Layers that can be used by VIA. +// Change this if you want more layers +#define DYNAMIC_KEYMAP_LAYER_COUNT 6 + +/* - Encoder settings - */ +#ifdef ENCODER_ENABLE +# define ENCODER_RESOLUTION 4 +#endif +#ifdef ENCODER_MAP_ENABLE +// Key delay for encoders (necessary for some keycodes) +# define ENCODER_MAP_KEY_DELAY 10 +#endif + +/* + - RGB Stuff - + All effects can be found in the QMK docs: + https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +*/ +#ifdef RGB_MATRIX_ENABLE + +// Allows the indicator LEDs to work +# define SPLIT_LED_STATE_ENABLE +# define SPLIT_LAYER_STATE_ENABLE + +// Default effect when EEPROM cleared +# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINBOW_MOVING_CHEVRON + +// Turns off RGB effects when there is no longer a USB connection +# define RGB_DISABLE_WHEN_USB_SUSPENDED + +// Throttling of RGB to increase keyboard responsiveness, set to 1.5x the default limits +# define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 6 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) +# define RGB_MATRIX_LED_FLUSH_LIMIT 24 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms), the default, is equivalent to limiting to 60fps + +// Key press reactive animations +# define SPLIT_TRANSPORT_MIRROR // Necessary setting for key press animations +# define RGB_MATRIX_KEYPRESSES // Enables key press effects +# define ENABLE_RGB_MATRIX_MULTISPLASH + +// Normal effects +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#endif diff --git a/keyboards/junco/keymaps/deluxe/keymap.c b/keyboards/junco/keymaps/deluxe/keymap.c new file mode 100644 index 000000000000..e4dcb97faed2 --- /dev/null +++ b/keyboards/junco/keymaps/deluxe/keymap.c @@ -0,0 +1,329 @@ +// Copyright 2022 Dane Skalski (@Daneski13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Layers enum +enum junco_layers { _QWERTY, _COLEMAK_DH, _SYMB, _EXT, _ADJUST }; + +// Custom keycodes +enum custom_keycodes { + // Keycode for toggling between macOS and Windows key mappings + // Actually just an alias to the GUI and Alt swap Magic keycode + KC_OS = MAGIC_TOGGLE_ALT_GUI, + // Keycode for swapping the base layer between QWERTY and Colemak-DH + KC_TOGGLE_BASE = SAFE_RANGE, + // Keycode for redo action (Ctrl + Y on windows, Ctrl + Shift + Z on macOS) + KC_REDO, + // Keycodes for next/previous word + KC_WNXT, + KC_WPRV, + // Keycode for sticking/unsticking the adjust layer + KC_ADJST +}; + +/* LED indicators */ +bool is_caps_lock_enabled(void) { // Caps lock + return (host_keyboard_led_state().caps_lock); +} +bool is_num_lock_enabled(void) { // Num lock + return (host_keyboard_led_state().num_lock); +} +bool is_adjust_layer_sticky(layer_state_t state) { // Adjust layer sticky + // Checks if the state is equal to just the adjust layer being active. + // Doing it this way can leverage SPLIT_LAYER_STATE_ENABLE + return (state == (1UL << _ADJUST)) ? true : false; +} +// Indicator color based on the RGB Matrix mode +RGB indicator_color(void) { + RGB rgb; + // Normally the indicator color is white to stand out in the RGB rainbow. + // When using the custom RGB mode that already is white, the indicator color + // is green to stand out. + if (rgb_matrix_config.mode == RGB_MATRIX_CUSTOM_WHITE_UNDERGLOW_CYCLE) { + // Green + rgb.r = 0; + rgb.g = 255; + rgb.b = 0; + } else { + // White + rgb.r = 255; + rgb.g = 255; + rgb.b = 255; + } + return rgb; +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + /* + Traditional QWERTY + ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Tab│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │Ent│ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Esc│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │ + ├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤ + │Sft│ Z │ X │ C │ V │ B │Mut│ │▶⏸ │ N │ M │ , │ . │ / │Sft│ + └───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │Ctr│Win│Alt│Del│Spc│ │Sft│Bsp│Alt│Win│Ctr│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + For macOS - GUI (cmd) and Alt (opt) swapped + */ + [_QWERTY] = LAYOUT_split4x6_r1( + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENTER, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_MPLY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, LT(_EXT, KC_DEL), KC_SPC, KC_RSFT, LT(_SYMB, KC_BSPC), KC_RALT, KC_RGUI, KC_RCTL + ), + + /* + Colemak-DH + ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Tab│ Q │ W │ F │ P │ B │ │ J │ L │ U │ Y │ ; │Ent│ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Esc│ A │ R │ S │ T │ G │ │ M │ N │ E │ I │ O │ ' │ + ├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤ + │Sft│ Z │ X │ C │ D │ V │Mut│ │▶⏸ │ K │ H │ , │ . │ / │Sft│ + └───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │Ctr│Win│Alt│Del│Spc│ │Sft│Bsp│Alt│Win│Ctr│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + For macOS - GUI/Win (cmd) and Alt (opt) swapped + */ + [_COLEMAK_DH] = LAYOUT_split4x6_r1( + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SEMICOLON, KC_ENTER, + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOTE, + KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_MUTE, KC_MPLY, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, LT(_EXT, KC_DEL), KC_SPC, KC_RSFT, LT(_SYMB, KC_BSPC), KC_RALT, KC_RGUI, KC_RCTL + ), + + /* + Symbols/Numpad Layer + ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + │F1 │F2 │F3 │F4 │F5 │F6 │ │F7 │F8 │F9 │F10│F11│F12│ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Tab│ ! │ @ │ # │ $ │ % │ │ * │ 7 │ 8 │ 9 │ + │Ent│ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │ \ │ _ │ [ │ { │ ( │ ^ │ │ = │ 4 │ 5 │ 6 │ 0 │NUM│ + ├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤ + │___│ | │ ] │ } │ ) │ & │___│ │___│ / │ 1 │ 2 │ 3 │ - │___│ + └───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │___│___│___│___│___│ │___│___│___│___│___│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + */ + [_SYMB] = LAYOUT_split4x6_r1( + 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_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PAST, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_ENTER, + KC_BSLS, KC_UNDS, KC_LBRC, KC_LCBR, KC_LPRN, KC_CIRC, KC_PEQL, KC_P4, KC_P5, KC_P6, KC_P0, KC_NUM, + _______, KC_PIPE, KC_RBRC, KC_RCBR, KC_RPRN, KC_AMPR, _______, _______, KC_PSLS, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* + Extension/Function Layer + ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐ + │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10│ F11│ F12│ + ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ + │ ⇤ │PGUP│End │ ↑ │Home│ │ │BRIU│ F7 │ F8 │ F9 │ F10│____│ + ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ + │Cps │PGDN│ ← │ ↓ │ → │ │ │BRID│ F4 │ F5 │ F6 │ F11│____│ + ├────┼────┼────┼────┼────┼────┼────┐ ┌────┼────┼────┼────┼────┼────┼────┤ + │____│ │ │ │ │ │____│ │____│ │ F1 │ F2 │ F3 │ F12│____│ + └────┴────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┴────┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │___│___│___│___│___│ │___│___│___│___│___│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + */ + [_EXT] = LAYOUT_split4x6_r1( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + S(KC_TAB), KC_PGUP, KC_END, KC_UP, KC_HOME, _______, KC_BRIU, KC_F7, KC_F8, KC_F9, KC_F10, _______, + KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, _______, KC_BRID, KC_F4, KC_F5, KC_F6, KC_F11, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* + Adjust Layer, Keyboard Settings + ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ + ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ + │SpdU│HueU│SatU│ValU│Rnxt│Stck│ │ │EClr│Rbt │DBUG│BOOT│ │ + ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ + │SpdD│HueD│SatD│ValD│Rprv│RTgl│ │ │LOUT│ OS │ │ │ │ + ├────┼────┼────┼────┼────┼────┼────┐ ┌────┼────┼────┼────┼────┼────┼────┤ + │ │ │ │ │ │ │RTgl│ │ │ │ │ │ │ │ │ + └────┴────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┴────┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │___│___│___│___│___│ │___│___│___│___│___│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + */ + [_ADJUST] = LAYOUT_split4x6_r1( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, KC_ADJST, KC_NO, EE_CLR, QK_RBT, DB_TOGG, QK_BOOT, KC_NO, + RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, RGB_TOG, KC_NO, KC_TOGGLE_BASE, KC_OS, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; + +/* + --- Rotary Encoder Mappings --- + + Encoder mappings go from leftmost encoder to rightmost encoder on the physical board. + index 0 is the the optional leftmost encoder on the left half, index 1 is the right encoder + on the left half (by the thumb keys), index 2 is the left encoder on the right half (by the + thumb keys), and index 3 is the optional rightmost encoder on the right half. + + If you are only using the 2 required encoders by the thumb keys, you only need to worry about + index 1 and index 2. + + Note that the key to be sent for counter-clockwise rotation (CCW) goes first and then the key for + clockwise (CW) within ENCODER_CCW_CW. +*/ +#ifdef ENCODER_MAP_ENABLE +// clang-format off + +// Base layer encoder mappings: +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + // Base layers + // index 0: mouse wheel up (CCW)/down (CW) index 1: volume up/down index 2: media prev/next index 3: mouse wheel left/right + [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_WH_L, KC_WH_R) }, + [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + + // Passes through to base layer + [_SYMB] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + // undo/redo previous word/next word + [_EXT] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_UNDO, KC_REDO), ENCODER_CCW_CW(KC_WPRV, KC_WNXT) }, + // RGB Speed down/up RGB previous mode/next mode RGB brightness down/up + [_ADJUST] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + // clang-format on +}; + +#endif + +// Called whenever a layer is changed +layer_state_t layer_state_set_user(layer_state_t state) { + // Make sure the adjust layer isn't sticky + if (is_adjust_layer_sticky(state)) return state; + + // When both the symbol and extension layer keys are held, the Adjust layer is active. + return update_tri_layer_state(state, _SYMB, _EXT, _ADJUST); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // Toggle base layer + case KC_TOGGLE_BASE: + if (record->event.pressed) { + // Toggle swapping base layers between Colemak-DH and QWERTY. + // When base layer is QWERTY, swap to Colemak-DH and vice-versa + if (get_highest_layer(default_layer_state) == _QWERTY) { + default_layer_set(1UL << _COLEMAK_DH); + } else { + default_layer_set(1UL << _QWERTY); + } + } + return false; + + // Override undo in favor of the more modern undo action + case KC_UNDO: + if (record->event.pressed) { + // Use the correct modifier for macOS or Windows + uint16_t mod = keymap_config.swap_lalt_lgui ? KC_LGUI : KC_LCTL; + // Send Ctrl+Z/Cmd+Z + register_code(mod); + tap_code_delay(KC_Z, 10); + unregister_code(mod); + } + return false; + + // Redo action + case KC_REDO: + if (record->event.pressed) { + // Whether or not macOS mapping is enabled + if (keymap_config.swap_lalt_lgui) { + // macOS - Send Cmd+Shift+Z + register_code(KC_LGUI); + register_code(KC_LSFT); + tap_code_delay(KC_Z, 10); + unregister_code(KC_LSFT); + unregister_code(KC_LGUI); + } else { + // Windows - Send Ctrl+Y + register_code(KC_LCTL); + tap_code_delay(KC_Y, 10); + unregister_code(KC_LCTL); + } + } + return false; + + // Next word + case KC_WNXT: + if (record->event.pressed) { + // Use the correct modifier for macOS or Windows + uint16_t mod = keymap_config.swap_lalt_lgui ? KC_LALT : KC_LCTL; + // Send Ctrl+Right/Option+Right + register_code(mod); + tap_code_delay(KC_RGHT, 10); + unregister_code(mod); + } + return false; + + // Previous word + case KC_WPRV: + if (record->event.pressed) { + // Use the correct modifier for macOS or Windows + uint16_t mod = keymap_config.swap_lalt_lgui ? KC_LALT : KC_LCTL; + // Send Ctrl+Left/Option+Left + register_code(mod); + tap_code_delay(KC_LEFT, 10); + unregister_code(mod); + } + return false; + + // Stick / Unstick the adjust layer + case KC_ADJST: + if (record->event.pressed) { + // If currently not sticky, we want only the adjust layer to be active to make it stick. + // Otherwise we want the default layer, un-stick. + is_adjust_layer_sticky(layer_state) ? layer_state_set(default_layer_state) : layer_move(_ADJUST); + dprintf("Adjust layer is now %s\n", is_adjust_layer_sticky(layer_state) ? "stuck" : "un-stuck"); + } + return false; + default: + return true; + } +} + +/* Indicators (Caps Lock / Num Lock / Adjust Layer Sticky) */ +bool rgb_matrix_indicators_user(void) { + layer_state_t curr_layer_state = layer_state; + layer_state_t layer = get_highest_layer(curr_layer_state); + RGB rgb = indicator_color(); + + /* Only show the indicator on their respective layers */ + // Caps Lock is only on the extension layer + if (is_caps_lock_enabled() && layer == _EXT) { + rgb_matrix_set_color(CAPS_LOCK_LED_INDEX, rgb.r, rgb.g, rgb.b); + } + + // Num Lock is only on the symbol layer + if (is_num_lock_enabled() && layer == _SYMB) { + rgb_matrix_set_color(NUM_LOCK_LED_INDEX, rgb.r, rgb.g, rgb.b); + } + + // If the adjust layer is stuck/sticky, light it up. Don't need to care about + // checking the layer since it can only be active on the adjust layer anyway + if (is_adjust_layer_sticky(curr_layer_state)) rgb_matrix_set_color(ADJST_LED_INDEX, rgb.r, rgb.g, rgb.b); + + return false; +} diff --git a/keyboards/junco/keymaps/deluxe/readme.md b/keyboards/junco/keymaps/deluxe/readme.md new file mode 100644 index 000000000000..d52d315f7d41 --- /dev/null +++ b/keyboards/junco/keymaps/deluxe/readme.md @@ -0,0 +1,43 @@ +# Deluxe Junco Keymap + +This is my personal keymap for Junco at time of writing. It departs from the [default layout](../default/README.md) with the encoder mappings and some extra keycodes. This keymap also adds indicators when caps lock and num lock are enabled. When enabled, that key will become a static white (green on the white backlight mode) but only when the layer that respective key is on is active. + +I wanted that classic rainbow barf RGB effect for the underglow even if the per-key lighting is something else, so I added 2 custom RGB matrix animations: white per-key lighting with rainbow underglow and pixel rain with rainbow underglow. + +Here are some gifs of the animations: + +![White + Underglow Animation](https://i.imgur.com/2vCiZz0.gif) + +![Pixel Rain + Underglow Animation](https://i.imgur.com/f6t0OfD.gif) + +## Base Layers + +The base layers are the same as the default layout, except the right side's left encoder (by the thumb keys) is now media controls. Since I am using all 4 encoders it doesn't make sense to have 2 mouse scroll up/down, but for someone with just 2 encoders it may make sense to have media controls on a layer. + +QWERTY: + +![QWERTY Layer](https://i.imgur.com/vkS9Tceh.png) + +Colemak-DH: + +![Colemak-DH Layer](https://i.imgur.com/5YYgaUAh.png) + +## Symbol Layer + +Symbol layer is identical to the default layout. + +![Symbol Layer](https://i.imgur.com/6F35Z4Wh.png) + +## Extension Layer + +Encoders on the right side become undo/redo and scrolling horizontally by word. + +![Extension Layer](https://i.imgur.com/0VCStS8h.png) + +## Adjust Layer + +Pressing "Stick Adj Layer" will "stick" the adjust layer so you can use the rotary encoders for RGB settings rather than holding down both backspace and delete. To go back to the default layer, press that stick key again or press and release either Del or Backspace. When the adjust layer is currently "sticky" the sticky key will become the indicator color mentioned earlier. + +"Toggle Base" will toggle between QWERTY and Colemak-DH and toggle OS will toggle between macOS and Windows key-mappings (swapping WIN/Command with Alt/Option by the thumb keys and properly mapping redo/word scrolling). + +![Adjust layer](https://i.imgur.com/71ftNoNh.png) diff --git a/keyboards/junco/keymaps/deluxe/rgb_matrix_user.inc b/keyboards/junco/keymaps/deluxe/rgb_matrix_user.inc new file mode 100644 index 000000000000..3efe5067497c --- /dev/null +++ b/keyboards/junco/keymaps/deluxe/rgb_matrix_user.inc @@ -0,0 +1,48 @@ +// Copyright 2022 Dane Skalski (@Daneski13) +// SPDX-License-Identifier: GPL-2.0-or-later + +RGB_MATRIX_EFFECT(WHITE_UNDERGLOW_CYCLE) +RGB_MATRIX_EFFECT(PIXEL_RAIN_UNDERGLOW_CYCLE) + +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +// This is a modified version of the effect_runner_dx_dy_dist function from rgb_matrix +// that only applies the effect to the underglow LEDs of this keyboard +static bool underglow_effect_runner(effect_params_t* params, dx_dy_dist_f underglow_effect_func, bool backlight_white) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + HSV hsv = rgb_matrix_config.hsv; + HSV white = {0, 0, hsv.v}; + RGB rgb = rgb_matrix_hsv_to_rgb(white); + uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + // Underglow LEDs are indicies 0 - 7 and 37 - 44 + if ((i <= 7) || (37 <= i && i <= 44)) { + // Apply the maths and colors to the underglow LEDs + RGB_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; + uint8_t dist = sqrt16(dx * dx + dy * dy); + RGB rgb = rgb_matrix_hsv_to_rgb(underglow_effect_func(hsv, dx, dy, dist, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } else { + // Set the backlight to white if needed + if (!backlight_white) continue; + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + } + return rgb_matrix_check_finished_leds(led_max); +} + +// Solid white but the underglow is a rainbow spiral +static bool WHITE_UNDERGLOW_CYCLE(effect_params_t* params) { + return underglow_effect_runner(params, &CYCLE_SPIRAL_math, true); +} + +// Pixel rain effect but the underglow is a rainbow spiral +static bool PIXEL_RAIN_UNDERGLOW_CYCLE(effect_params_t* params) { + PIXEL_RAIN(params); + return underglow_effect_runner(params, &CYCLE_SPIRAL_math, false); +} + +#endif diff --git a/keyboards/junco/keymaps/deluxe/rules.mk b/keyboards/junco/keymaps/deluxe/rules.mk new file mode 100644 index 000000000000..b788c6155b42 --- /dev/null +++ b/keyboards/junco/keymaps/deluxe/rules.mk @@ -0,0 +1,20 @@ +# Enables Audio control and System control Keycodes +EXTRAKEY_ENABLE = yes +# Enables Mousekeys +MOUSEKEY_ENABLE = yes +# Encoder Support +ENCODER_ENABLE = yes +# Use Enocoder Mapping +ENCODER_MAP_ENABLE = yes + +# Enables RGB Lighting Effects +RGB_MATRIX_ENABLE = yes + +# Allows use of `qmk console` for debugging +CONSOLE_ENABLE = yes + +# Enables VIA +VIA_ENABLE = yes + +# Custom RGB Matrix Effect +RGB_MATRIX_CUSTOM_USER = yes diff --git a/keyboards/junco/keymaps/via/config.h b/keyboards/junco/keymaps/via/config.h new file mode 100644 index 000000000000..c4ce821594d5 --- /dev/null +++ b/keyboards/junco/keymaps/via/config.h @@ -0,0 +1,87 @@ +// Copyright 2022 Dane Skalski (@Daneski13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Number of Layers that can be used by VIA. +// Change this if you want more layers +#define DYNAMIC_KEYMAP_LAYER_COUNT 6 + +/* - Encoder settings - */ +#ifdef ENCODER_ENABLE +# define ENCODER_RESOLUTION 4 +#endif +#ifdef ENCODER_MAP_ENABLE +// Key delay for encoders (necessary for some keycodes) +# define ENCODER_MAP_KEY_DELAY 10 +#endif + +/* + - RGB - + Defines all effects so VIA can properly select them via index +*/ +#ifdef RGB_MATRIX_ENABLE + +// Default effect when EEPROM cleared +# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINBOW_MOVING_CHEVRON + +// Turns off RGB effects when there is no longer a USB connection +# define RGB_DISABLE_WHEN_USB_SUSPENDED + +// Allow keypress reactive animations +# define SPLIT_TRANSPORT_MIRROR // Necessary setting for key press animations on a split +# define RGB_MATRIX_KEYPRESSES // Enables key press effects + +// Allow frame buffer effects +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Enables frame buffer effects + +// All effect definitions +# define ENABLE_RGB_MATRIX_ALPHAS_MODS // Enables RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Enables RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Enables RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING // Enables RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT // Enables RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL // Enables RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Enables RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Enables RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Enables RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Enables RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL // Enables RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Enables RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Enables RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Enables RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Enables RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Enables RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Enables RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Enables RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON // Enables RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Enables RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Enables RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS // Enables RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Enables RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING // Enables RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM // Enables RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE // Enables RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // Enables RGB_MATRIX_PIXEL_FRACTAL +# define ENABLE_RGB_MATRIX_PIXEL_FLOW // Enables RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_RAIN // Enables RGB_MATRIX_PIXEL_RAIN + +// Following need RGB_MATRIX_FRAMEBUFFER_EFFECTS +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP // Enables RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN // Enables RGB_MATRIX_DIGITAL_RAIN + +// Following need RGB_MATRIX_KEYPRESSES +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Enables RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Enables RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Enables RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Enables RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Enables RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Enables RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Enables RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Enables RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH // Enables RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH // Enables RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH // Enables RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Enables RGB_MATRIX_SOLID_MULTISPLASH + +#endif diff --git a/keyboards/junco/keymaps/via/keymap.c b/keyboards/junco/keymaps/via/keymap.c new file mode 100644 index 000000000000..b50332be284e --- /dev/null +++ b/keyboards/junco/keymaps/via/keymap.c @@ -0,0 +1,161 @@ +// Copyright 2022 Dane Skalski (@Daneski13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +// Layers enum +enum junco_layers { _QWERTY, _COLEMAK_DH, _SYMB, _EXT, _ADJUST }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + /* + Traditional QWERTY + ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Tab│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │Ent│ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Esc│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │ + ├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤ + │Sft│ Z │ X │ C │ V │ B │Mut│ │XXX│ N │ M │ , │ . │ / │Sft│ + └───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │Ctr│Win│Alt│Del│Spc│ │Sft│Bsp│Alt│Win│Ctr│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + For macOS - GUI (cmd) and Alt (opt) swapped + */ + [_QWERTY] = LAYOUT_split4x6_r1( + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENTER, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, LT(_EXT, KC_DEL), KC_SPC, KC_RSFT, LT(_SYMB, KC_BSPC), KC_RALT, KC_RGUI, KC_RCTL + ), + + /* + Colemak-DH + ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Tab│ Q │ W │ F │ P │ B │ │ J │ L │ U │ Y │ ; │Ent│ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Esc│ A │ R │ S │ T │ G │ │ M │ N │ E │ I │ O │ ' │ + ├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤ + │Sft│ Z │ X │ C │ D │ V │Mut│ │XXX│ K │ H │ , │ . │ / │Sft│ + └───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │Ctr│Win│Alt│Del│Spc│ │Sft│Bsp│Alt│Win│Ctr│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + For macOS - GUI (cmd) and Alt (opt) swapped + */ + [_COLEMAK_DH] = LAYOUT_split4x6_r1( + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SEMICOLON, KC_ENTER, + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOTE, + KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_MUTE, KC_NO, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, LT(_EXT, KC_DEL), KC_SPC, KC_RSFT, LT(_SYMB, KC_BSPC), KC_RALT, KC_RGUI, KC_RCTL + ), + + /* + Symbols/Numpad Layer + ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + │F1 │F2 │F3 │F4 │F5 │F6 │ │F7 │F8 │F9 │F10│F11│F12│ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │Tab│ ! │ @ │ # │ $ │ % │ │ * │ 7 │ 8 │ 9 │ + │Ent│ + ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + │ \ │ _ │ [ │ { │ ( │ ^ │ │ = │ 4 │ 5 │ 6 │ 0 │NUM│ + ├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤ + │___│ | │ ] │ } │ ) │ & │___│ │___│ / │ 1 │ 2 │ 3 │ - │___│ + └───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │___│___│___│___│___│ │___│___│___│___│___│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + */ + [_SYMB] = LAYOUT_split4x6_r1( + 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_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PAST, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_ENTER, + KC_BSLS, KC_UNDS, KC_LBRC, KC_LCBR, KC_LPRN, KC_CIRC, KC_PEQL, KC_P4, KC_P5, KC_P6, KC_P0, KC_NUM, + _______, KC_PIPE, KC_RBRC, KC_RCBR, KC_RPRN, KC_AMPR, _______, _______, KC_PSLS, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, + _______, _______, _______, MO(_ADJUST), _______, _______, _______, _______, _______, _______ + ), + + /* + Extension/Function Layer + ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐ + │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10│ F11│ F12│ + ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ + │ ⇤ │PGUP│End │ ↑ │Home│ │ │BRIU│ F7 │ F8 │ F9 │ F10│____│ + ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ + │Cps │PGDN│ ← │ ↓ │ → │ │ │BRID│ F4 │ F5 │ F6 │ F11│____│ + ├────┼────┼────┼────┼────┼────┼────┐ ┌────┼────┼────┼────┼────┼────┼────┤ + │____│ │ │ │ │ │____│ │ ▶⏸ │ │ F1 │ F2 │ F3 │ F12│____│ + └────┴────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┴────┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │___│___│___│___│___│ │___│___│___│___│___│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + */ + [_EXT] = LAYOUT_split4x6_r1( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + S(KC_TAB), KC_PGUP, KC_END, KC_UP, KC_HOME, _______, KC_BRIU, KC_F7, KC_F8, KC_F9, KC_F10, _______, + KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, _______, KC_BRID, KC_F4, KC_F5, KC_F6, KC_F11, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______, KC_F1, KC_F2, KC_F3, KC_F12, _______, + _______, _______, _______, _______, _______, _______, MO(_ADJUST), _______, _______, _______ + ), + + /* + Adjust Layer, Keyboard Settings + ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ + ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ + │SpdU│HueU│SatU│ValU│Rnxt│ │ │ │EClr│Rbt │DBUG│BOOT│ │ + ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤ + │SpdD│HueD│SatD│ValD│Rprv│RTgl│ │ │QWRT│COLE│ │ │ │ + ├────┼────┼────┼────┼────┼────┼────┐ ┌────┼────┼────┼────┼────┼────┼────┤ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + └────┴────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┴────┘ + ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + │___│___│___│___│___│ │___│___│___│___│___│ + └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + */ + [_ADJUST] = LAYOUT_split4x6_r1( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, KC_NO, KC_NO, EE_CLR, QK_RBT, DB_TOGG, QK_BOOT, KC_NO, + RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, RGB_TOG, KC_NO, DF(_QWERTY), DF(_COLEMAK_DH), KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; + +/* + --- Rotary Encoder Mappings --- + + Encoder mappings go from leftmost encoder to rightmost encoder on the physical board. + index 0 is the the optional leftmost encoder on the left half, index 1 is the right encoder + on the left half (by the thumb keys), index 2 is the left encoder on the right half (by the + thumb keys), and index 3 is the optional rightmost encoder on the right half. + + If you are only using the 2 required encoders by the thumb keys, you only need to worry about + index 1 and index 2. + + Note that the key to be sent for counter-clockwise rotation (CCW) goes first and then the key for + clockwise (CW) within ENCODER_CCW_CW. +*/ +#ifdef ENCODER_MAP_ENABLE +// clang-format off + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + // Base layer encoder mappings: + // index 0: mouse wheel up (CCW)/down (CW) index 1: volume down/up index 2: mouse wheel up/down index 3: mouse wheel left/right + [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_WH_L, KC_WH_R) }, + [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + + // Passes through to base layers + [_SYMB] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + // On the extension layer, the right side's left encoder by the thumb keys (mouse wheel up/down) is traded for media previous/next + [_EXT] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + // Passes through + [_ADJUST] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + // clang-format on +}; + +#endif diff --git a/keyboards/junco/keymaps/via/rules.mk b/keyboards/junco/keymaps/via/rules.mk new file mode 100644 index 000000000000..fd9cd98bcb4c --- /dev/null +++ b/keyboards/junco/keymaps/via/rules.mk @@ -0,0 +1,19 @@ +# Change from yes to no to disable features + +# Enables Audio control and System control Keycodes +EXTRAKEY_ENABLE = yes +# Enables Mousekeys +MOUSEKEY_ENABLE = yes +# Encoder Support +ENCODER_ENABLE = yes +# Use Enocoder Mapping +ENCODER_MAP_ENABLE = yes + +# Enables RGB Matrix +RGB_MATRIX_ENABLE = yes + +# Allows use of `qmk console` for debugging +# CONSOLE_ENABLE = yes + +# Enables VIA +VIA_ENABLE = yes diff --git a/keyboards/junco/readme.md b/keyboards/junco/readme.md new file mode 100644 index 000000000000..b5817ff7e760 --- /dev/null +++ b/keyboards/junco/readme.md @@ -0,0 +1,41 @@ +# Junco + +![Junco](https://i.imgur.com/WzZaIgQh.jpg) + +Junco is a 60% Raspberry Pi Pico powered split keyboard boasting a 4x6 layout with an aggressive columnar stagger. It has 5 "thumb" keys on either side, support for 2-4 rotary encoders, and per-key RGB lighting. + +- Keyboard Maintainer: [Dane Skalski](https://github.com/Daneski13) +- Hardware Supported: Junco PCB, Raspberry Pi Pico +- Hardware Availability: [PCB, Case, Parts List](https://github.com/Daneski13/Junco) + +Remember you have to flash both halves of the keyboard for it to work! + +Make example for this keyboard (after setting up your build environment): + + make junco:default + +Flashing example for this keyboard: + +```bash +# For flashing the left half... +make junco:default:uf2-split-left +# or the qmk cli equivalent: +qmk flash -kb junco --keymap default -bl uf2-split-left + +# For flashing the right half... +make junco:default:uf2-split-right +# or the qmk cli equivalent: +qmk flash -kb junco --keymap default -bl uf2-split-right +``` + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +- **Bootmagic reset** (works after you have flashed once): Hold down the top far corner key while plugging in the keyboard (`~` left half, `-` right half). This will also clear the EEPROM. +- **Physical reset button**: Hold the `BOOT` button on the Pico and press the `RST` button on the Pico, release the the `RST` button before the `BOOT` button. +- **Keycode in layout**: In the default layout, the `Bootloader` keycode is above home row pinky on the right side's adjust layer. + +Once you enter the bootloader, the keyboard will show up as a USB device on your computer, you could drag and drop a firmware file to flash it, but I recommend using the flash commands for the respective side. diff --git a/keyboards/junco/rev1/config.h b/keyboards/junco/rev1/config.h new file mode 100644 index 000000000000..d9c0556cdfec --- /dev/null +++ b/keyboards/junco/rev1/config.h @@ -0,0 +1,43 @@ +// Copyright 2022 Dane Skalski (@Daneski13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Electrical Wiring Stuff +#define MATRIX_ROW_PINS \ + { GP8, GP9, GP10, GP11, GP12 } +#define MATRIX_COL_PINS \ + { GP2, GP3, GP4, GP5, GP6, GP7 } +#define DIODE_DIRECTION COL2ROW + +// Split Keyboard Stuff +#define EE_HANDS // Sets the keyboard’s handedness using EEPROM +#define SERIAL_USART_FULL_DUPLEX // Use full duplex communication (TRRS) +#define SERIAL_USART_TX_PIN GP0 // USART TX pin +#define SERIAL_USART_RX_PIN GP1 // USART RX pin + +/* RGB Stuff */ +#ifdef RGB_MATRIX_ENABLE + +# define RGB_DI_PIN GP15 // Pin for RGB logic +# define RGB_MATRIX_LED_COUNT 74 +# define RGB_MATRIX_SPLIT \ + { 37, 37 } // 37 LEDs on each side + +#endif + +/* Rotary Encoders Definition */ +// Indexing goes from physical leftmost to rightmost +// 0: left-half left | 1: left-half right | 2: right-half left | 3: right-half right +#ifdef ENCODER_ENABLE + +# define ENCODERS_PAD_A \ + { GP16, GP14 } +# define ENCODERS_PAD_B \ + { GP17, GP13 } +# define ENCODERS_PAD_A_RIGHT \ + { GP14, GP16 } +# define ENCODERS_PAD_B_RIGHT \ + { GP13, GP17 } + +#endif diff --git a/keyboards/junco/rev1/post_config.h b/keyboards/junco/rev1/post_config.h new file mode 100644 index 000000000000..bcc15a941a03 --- /dev/null +++ b/keyboards/junco/rev1/post_config.h @@ -0,0 +1,15 @@ +// Copyright 2022 Dane Skalski (@Daneski13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Default Bootmagic lite */ +// Top left for left side is default in core + +// Top right for right side +#ifndef BOOTMAGIC_LITE_ROW_RIGHT +# define BOOTMAGIC_LITE_ROW_RIGHT 5 +#endif +#ifndef BOOTMAGIC_LITE_COLUMN_RIGHT +# define BOOTMAGIC_LITE_COLUMN_RIGHT 0 +#endif diff --git a/keyboards/junco/rev1/rev1.c b/keyboards/junco/rev1/rev1.c new file mode 100644 index 000000000000..d1346b82e215 --- /dev/null +++ b/keyboards/junco/rev1/rev1.c @@ -0,0 +1,126 @@ +// Copyright 2022 Dane Skalski (@Daneski13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +// Hand swap +#ifdef SWAP_HANDS_ENABLE +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + // Left + {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}, {6, 5}}, + {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6, 6}}, + {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}, {6, 7}}, + {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}, {6, 8}}, + {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}, {6, 9}}, + // Right + {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}}, + {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {6, 1}}, + {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {6, 2}}, + {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {6, 3}}, + {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}, {6, 4}} +}; +#endif + +/* RGB LED matrix */ +#ifdef RGB_MATRIX_ENABLE +/* + Key Matrix Physical + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, + L30, L31, L32, L33, L34, L35, L45, R40, R30, R31, R32, R33, R34, R35, + L40, L41, L42, L43, L44, R42, R41, R43, R44, R45 + + Key Electrical + Left: + { L00, L01, L02, L03, L04, L05 }, + { L10, L11, L12, L13, L14, L15 }, + { L20, L21, L22, L23, L24, L25 }, + { L30, L31, L32, L33, L34, L35 }, + { L40, L41, L42, L43, L44, L45 }, + Right: + { R05, R04, R03, R02, R01, R00 }, + { R15, R14, R13, R12, R11, R10 }, + { R25, R24, R23, R22, R21, R20 }, + { R35, R34, R33, R32, R31, R30 }, + { R45, R44, R43, R42, R41, R40 } + + Key matrix physical filled with LED electrical indexes, count starting at 1 + + Col + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Row + + 14 13 12 11 10 9 46 47 48 49 50 51 0 + 6 7 8 45 44 43 + 15 16 17 18 19 20 57 56 55 54 53 52 1 + + 26 25 24 23 22 21 58 59 60 61 62 63 2 + 5 4 3 40 41 42 + 27 28 29 30 31 32 NO NO 69 68 67 66 65 64 3 + + 37 36 35 34 33 70 71 72 73 74 4 + 2 1 38 39 +*/ + +// clang-format off +led_config_t g_led_config = { + { // Key Electrical Matrix to LED Index (count start at 0, so 8 is the first non-underglow key) + + // Left Half + { 13, 12, 11, 10, 9, 8 }, + { 14, 15, 16, 17, 18, 19 }, + { 25, 24, 23, 22, 21, 20 }, + { 26, 27, 28, 29, 30, 31 }, + { 36, 35, 34, 33, 32, NO_LED }, + + // Right Half + { 50, 49, 48, 47, 46, 45 }, + { 51, 52, 53, 54, 55, 56 }, + { 62, 61, 60, 59, 58, 57 }, + { 63, 64, 65, 66, 67, 68 }, + { 73, 72, 71, 70, 69, NO_LED } + }, + { // LED Index to LED Physical Position (mirrored on right half) + + // Left Underglow (indicies 1 - 8) + { 95, 72 }, { 52, 72 }, { 86, 40 }, { 52, 40 }, { 9, 40 }, { 9, 8 }, { 52, 8 }, { 86, 8 }, + // Left Matrix (indicies 9 - 37) + { 86, 0 }, { 69, 0 }, { 52, 0 }, { 34, 0 }, { 17, 0 }, { 0, 0 }, + { 0, 16 }, { 17, 16 }, { 34, 16 }, { 52, 16 }, { 69, 16 }, { 86, 16 }, + { 86, 32 }, { 69, 32 }, { 52, 32 }, { 34, 32 }, { 17, 32 }, { 0, 32 }, + { 0, 48 }, { 17, 48 }, { 34, 48 }, { 52, 48 }, { 69, 48 }, { 86, 48 }, /* No Led */ + { 103, 64 }, { 86, 64 }, { 69, 64 }, { 52, 64 }, { 34, 64 }, + + // Right Underglow (indicies 38 - 45) + { 129, 72 }, { 172, 72 }, { 138, 40 }, { 172, 40 }, { 215, 40 }, { 215, 8 }, { 172, 8 }, { 138, 8 }, + // Right Matrix (indicies 46 - 74) + { 138, 0 }, { 155, 0 }, { 172, 0 }, { 190, 0 }, { 207, 0 }, { 224, 0 }, + { 224, 16 }, { 207, 16 }, { 190, 16 }, { 172, 16 }, { 155, 16 }, { 138, 16 }, + { 138, 32 }, { 155, 32 }, { 172, 32 }, { 190, 32 }, { 207, 32 }, { 224, 32 }, + /* No Led */ { 224, 48 }, { 207, 48 }, { 190, 48 }, { 172, 48 }, { 155, 48 }, { 138, 48 }, + { 121, 64 }, { 138, 64 }, { 155, 64 }, { 172, 64 }, { 190, 64 } + }, + { // LED Index to Flag (2 - Underglow, 4 - Key Backlight) + + // Left Underglow + 2, 2, 2, 2, 2, 2, 2, 2, + // Left Matrix + 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, + + // Right Underglow + 2, 2, 2, 2, 2, 2, 2, 2, + // Right Matrix + 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 + } +}; + +#endif diff --git a/keyboards/junco/rev1/rules.mk b/keyboards/junco/rev1/rules.mk new file mode 100644 index 000000000000..feb836dbe1e0 --- /dev/null +++ b/keyboards/junco/rev1/rules.mk @@ -0,0 +1,3 @@ +# RGB Stuff +RGB_MATRIX_DRIVER = WS2812 +WS2812_DRIVER = vendor diff --git a/keyboards/junco/rules.mk b/keyboards/junco/rules.mk new file mode 100644 index 000000000000..a04c7822f91e --- /dev/null +++ b/keyboards/junco/rules.mk @@ -0,0 +1,9 @@ +# Split Keyboard Stuff +SPLIT_KEYBOARD = yes +SERIAL_DRIVER = vendor + +# Enable Bootmagic Lite +BOOTMAGIC_ENABLE = yes + +# Default Folder +DEFAULT_FOLDER = junco/rev1 From 4d17fe2a995470ae265a418a0b1c5818a55c9c1d Mon Sep 17 00:00:00 2001 From: DeskDaily <65656486+DeskDaily@users.noreply.github.com> Date: Thu, 6 Apr 2023 02:25:21 +0800 Subject: [PATCH 40/73] [Keyboard] Add lxxt (#19935) Co-authored-by: Neil Brian Ramirez Co-authored-by: Neil Brian Ramirez --- keyboards/lxxt/config.h | 19 ++++ keyboards/lxxt/info.json | 133 ++++++++++++++++++++++++ keyboards/lxxt/keymaps/default/keymap.c | 28 +++++ keyboards/lxxt/keymaps/via/keymap.c | 60 +++++++++++ keyboards/lxxt/keymaps/via/rules.mk | 3 + keyboards/lxxt/lxxt.c | 42 ++++++++ keyboards/lxxt/readme.md | 24 +++++ keyboards/lxxt/rules.mk | 3 + 8 files changed, 312 insertions(+) create mode 100644 keyboards/lxxt/config.h create mode 100644 keyboards/lxxt/info.json create mode 100644 keyboards/lxxt/keymaps/default/keymap.c create mode 100644 keyboards/lxxt/keymaps/via/keymap.c create mode 100644 keyboards/lxxt/keymaps/via/rules.mk create mode 100644 keyboards/lxxt/lxxt.c create mode 100644 keyboards/lxxt/readme.md create mode 100644 keyboards/lxxt/rules.mk diff --git a/keyboards/lxxt/config.h b/keyboards/lxxt/config.h new file mode 100644 index 000000000000..03ef56622c0c --- /dev/null +++ b/keyboards/lxxt/config.h @@ -0,0 +1,19 @@ +/* Copyright 2023 DeskDaily + * + * 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 WS2812_PIO_USE_PIO1 \ No newline at end of file diff --git a/keyboards/lxxt/info.json b/keyboards/lxxt/info.json new file mode 100644 index 000000000000..0a90b3e00bca --- /dev/null +++ b/keyboards/lxxt/info.json @@ -0,0 +1,133 @@ +{ + "keyboard_name": "LXXT", + "manufacturer": "DeskDaily", + "url": "", + "maintainer": "DeskDaily", + "usb": { + "vid": "0x5003", + "pid": "0x0001", + "device_version": "0.0.1" + }, + "encoder": { + "rotary": [ + {"pin_a": "GP27", "pin_b": "GP28"}, + {"pin_a": "GP8", "pin_b": "GP9"} + ] + }, + "processor": "RP2040", + "bootloader": "rp2040", + "matrix_pins": { + "rows": ["GP29", "GP26", "GP22", "GP24", "GP17"], + "cols": ["GP25", "GP23", "GP7", "GP0", "GP15", "GP14", "GP13", "GP12", "GP11", "GP10", "GP6", "GP5", "GP4", "GP3", "GP2", "GP1"] + }, + "rgblight": { + "pin": "GP21", + "led_count": 16, + "hue_steps": 8, + "saturation_steps": 8, + "brightness_steps": 8, + "max_brightness": 255, + "sleep": true, + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "rgblight": true + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.25, "y": 0}, + {"matrix": [0, 6], "x": 6.25, "y": 0}, + {"matrix": [0, 7], "x": 7.25, "y": 0}, + {"matrix": [0, 8], "x": 8.25, "y": 0}, + {"matrix": [0, 9], "x": 9.25, "y": 0}, + {"matrix": [0, 10], "x": 10.25, "y": 0}, + {"matrix": [0, 11], "x": 11.25, "y": 0}, + {"matrix": [0, 12], "x": 12.25, "y": 0}, + {"matrix": [0, 13], "x": 13.25, "y": 0}, + {"matrix": [0, 14], "x": 14.25, "y": 0}, + {"matrix": [1, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.5, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [1, 3], "x": 3.75, "y": 1}, + {"matrix": [1, 4], "x": 4.75, "y": 1}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 7.75, "y": 1}, + {"matrix": [1, 8], "x": 8.75, "y": 1}, + {"matrix": [1, 9], "x": 9.75, "y": 1}, + {"matrix": [1, 10], "x": 10.75, "y": 1}, + {"matrix": [1, 11], "x": 11.75, "y": 1}, + {"matrix": [1, 12], "x": 12.75, "y": 1}, + {"matrix": [1, 13], "x": 13.75, "y": 1}, + {"matrix": [2, 14], "x": 14.75, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 16.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3, "y": 2}, + {"matrix": [2, 3], "x": 4, "y": 2}, + {"matrix": [2, 4], "x": 5, "y": 2}, + {"matrix": [2, 5], "x": 6, "y": 2}, + {"matrix": [2, 6], "x": 7, "y": 2}, + {"matrix": [2, 7], "x": 8, "y": 2}, + {"matrix": [2, 8], "x": 9, "y": 2}, + {"matrix": [2, 9], "x": 10, "y": 2}, + {"matrix": [2, 10], "x": 11, "y": 2}, + {"matrix": [2, 11], "x": 12, "y": 2}, + {"matrix": [2, 12], "x": 13, "y": 2}, + {"matrix": [2, 13], "x": 14, "y": 2, "w": 2.25}, + {"matrix": [2, 15], "x": 16.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 8], "x": 8.5, "y": 3}, + {"matrix": [3, 9], "x": 9.5, "y": 3}, + {"matrix": [3, 10], "x": 10.5, "y": 3}, + {"matrix": [3, 11], "x": 11.5, "y": 3}, + {"matrix": [3, 12], "x": 12.5, "y": 3}, + {"matrix": [3, 13], "x": 13.5, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 15.25, "y": 3}, + {"matrix": [3, 15], "x": 16.5, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 4], "x": 3.75, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 5, "y": 4, "w": 6.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 15, "y": 4, "w": 1.25}, + {"matrix": [4, 15], "x": 16.5, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/lxxt/keymaps/default/keymap.c b/keyboards/lxxt/keymaps/default/keymap.c new file mode 100644 index 000000000000..d9d74d27418d --- /dev/null +++ b/keyboards/lxxt/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2023 DeskDaily + * + * 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_TRNS, 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_BSPC, KC_TRNS, + KC_TRNS, 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_TRNS, + KC_TRNS, 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_TRNS, + KC_TRNS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_TRNS, + KC_TRNS, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_RGUI, KC_APP, KC_LCTL, KC_TRNS + ), +}; + diff --git a/keyboards/lxxt/keymaps/via/keymap.c b/keyboards/lxxt/keymaps/via/keymap.c new file mode 100644 index 000000000000..c2b6c2f59d0d --- /dev/null +++ b/keyboards/lxxt/keymaps/via/keymap.c @@ -0,0 +1,60 @@ +/* Copyright 2023 DeskDaily + * + * 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_TRNS, 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_BSPC, KC_TRNS, + KC_TRNS, 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_TRNS, + KC_TRNS, 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_TRNS, + KC_TRNS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_TRNS, + KC_TRNS, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_RGUI, KC_APP, KC_LCTL, KC_TRNS + ), + + [1] = 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, 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, 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, KC_TRNS, KC_TRNS + ), +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_BRID, KC_BRIU) }, + [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + }; +#endif \ No newline at end of file diff --git a/keyboards/lxxt/keymaps/via/rules.mk b/keyboards/lxxt/keymaps/via/rules.mk new file mode 100644 index 000000000000..aaf0497be139 --- /dev/null +++ b/keyboards/lxxt/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/lxxt/lxxt.c b/keyboards/lxxt/lxxt.c new file mode 100644 index 000000000000..0c4401c32b15 --- /dev/null +++ b/keyboards/lxxt/lxxt.c @@ -0,0 +1,42 @@ +/* Copyright 2023 DeskDaily + * + * 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 "quantum.h" + +#if defined(ENCODER_ENABLE) + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_kb(index, clockwise)) { + return false; /* Don't process further events if user function exists and returns false */ + } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code_delay(KC_BRIU, 10); + } else { + tap_code_delay(KC_BRID, 10); + } + } + return true; +} + +#endif \ No newline at end of file diff --git a/keyboards/lxxt/readme.md b/keyboards/lxxt/readme.md new file mode 100644 index 000000000000..4edfee278742 --- /dev/null +++ b/keyboards/lxxt/readme.md @@ -0,0 +1,24 @@ +# LXXT + +A 60% pcb with extra columns on the left and right part (Extended 60%) + +* Keyboard Maintainer: [DeskDaily](https://github.com/DeskDaily) +* Hardware Supported: RP2040 + +Make example for this keyboard (after setting up your build environment): + + make lxxt:default + +Flashing example for this keyboard: + + make lxxt:default:flash + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the upper left key/esc) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + +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/lxxt/rules.mk b/keyboards/lxxt/rules.mk new file mode 100644 index 000000000000..7fbf8d36abf3 --- /dev/null +++ b/keyboards/lxxt/rules.mk @@ -0,0 +1,3 @@ +ENCODER_ENABLE = yes + +WS2812_DRIVER = vendor From 596319c92fb8d61918a89133804ba232158e2323 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20A=2E=20Volpato?= Date: Wed, 5 Apr 2023 15:28:27 -0300 Subject: [PATCH 41/73] Add Iron160 I160-S and I160-H PCBs support (#20077) Co-authored-by: Ryan Co-authored-by: jack <0x6a73@protonmail.com> --- .../smithrune/iron160/iron160_h/config.h | 18 ++++ .../smithrune/iron160/iron160_h/halconf.h | 26 +++++ .../smithrune/iron160/iron160_h/info.json | 90 +++++++++++++++++ .../smithrune/iron160/iron160_h/iron160_h.c | 29 ++++++ .../iron160_h/keymaps/default/keymap.c | 35 +++++++ .../iron160/iron160_h/keymaps/via/keymap.c | 49 ++++++++++ .../iron160/iron160_h/keymaps/via/rules.mk | 1 + .../smithrune/iron160/iron160_h/mcuconf.h | 23 +++++ .../smithrune/iron160/iron160_h/rules.mk | 20 ++++ .../smithrune/iron160/iron160_s/config.h | 26 +++++ .../smithrune/iron160/iron160_s/halconf.h | 26 +++++ .../smithrune/iron160/iron160_s/info.json | 98 +++++++++++++++++++ .../iron160_s/keymaps/default/keymap.c | 35 +++++++ .../iron160/iron160_s/keymaps/via/keymap.c | 49 ++++++++++ .../iron160/iron160_s/keymaps/via/rules.mk | 1 + .../smithrune/iron160/iron160_s/mcuconf.h | 23 +++++ .../smithrune/iron160/iron160_s/rules.mk | 20 ++++ keyboards/smithrune/iron160/readme.md | 34 +++++++ 18 files changed, 603 insertions(+) create mode 100644 keyboards/smithrune/iron160/iron160_h/config.h create mode 100644 keyboards/smithrune/iron160/iron160_h/halconf.h create mode 100644 keyboards/smithrune/iron160/iron160_h/info.json create mode 100644 keyboards/smithrune/iron160/iron160_h/iron160_h.c create mode 100755 keyboards/smithrune/iron160/iron160_h/keymaps/default/keymap.c create mode 100755 keyboards/smithrune/iron160/iron160_h/keymaps/via/keymap.c create mode 100644 keyboards/smithrune/iron160/iron160_h/keymaps/via/rules.mk create mode 100644 keyboards/smithrune/iron160/iron160_h/mcuconf.h create mode 100644 keyboards/smithrune/iron160/iron160_h/rules.mk create mode 100644 keyboards/smithrune/iron160/iron160_s/config.h create mode 100644 keyboards/smithrune/iron160/iron160_s/halconf.h create mode 100644 keyboards/smithrune/iron160/iron160_s/info.json create mode 100755 keyboards/smithrune/iron160/iron160_s/keymaps/default/keymap.c create mode 100755 keyboards/smithrune/iron160/iron160_s/keymaps/via/keymap.c create mode 100644 keyboards/smithrune/iron160/iron160_s/keymaps/via/rules.mk create mode 100644 keyboards/smithrune/iron160/iron160_s/mcuconf.h create mode 100644 keyboards/smithrune/iron160/iron160_s/rules.mk create mode 100644 keyboards/smithrune/iron160/readme.md diff --git a/keyboards/smithrune/iron160/iron160_h/config.h b/keyboards/smithrune/iron160/iron160_h/config.h new file mode 100644 index 000000000000..4edf24a4d9d0 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_h/config.h @@ -0,0 +1,18 @@ +/* +Copyright 2022 Gondolindrim +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 + +/* Defining RGB default brightness to zero */ +#define RGBLIGHT_DEFAULT_VAL 0 diff --git a/keyboards/smithrune/iron160/iron160_h/halconf.h b/keyboards/smithrune/iron160/iron160_h/halconf.h new file mode 100644 index 000000000000..d4123d91eeb8 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_h/halconf.h @@ -0,0 +1,26 @@ +/* Copyright 2022 Gondolindrim + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/iron180/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/smithrune/iron160/iron160_h/info.json b/keyboards/smithrune/iron160/iron160_h/info.json new file mode 100644 index 000000000000..0c2886206814 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_h/info.json @@ -0,0 +1,90 @@ +{ + "keyboard_name": "I160-H", + "manufacturer": "SmithRune", + "url": "", + "maintainer": "Gondolindrim", + "usb": { + "vid": "0x8384", + "pid": "0x1648", + "device_version": "0.0.1" + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "matrix_pins": { + "cols": ["A3" , "B9" , "B8" , "B5" , "B4", "B3" , "A6" , "A5" , "A4" , "A2" , "A1" , "A0" , "C15" , "C14"], + "rows": ["A10", "A15", "C13", "A7" , "B0"] + }, + "rgblight": { + "led_count": 1, + "pin": "B15" + }, + "diode_direction": "COL2ROW", + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "Esc", "matrix": [0, 0 ], "w": 1, "x": 0, "y": 0 }, + { "label": "1", "matrix": [0, 1 ], "w": 1, "x": 1, "y": 0 }, + { "label": "2", "matrix": [0, 2 ], "w": 1, "x": 2, "y": 0 }, + { "label": "3", "matrix": [0, 3 ], "w": 1, "x": 3, "y": 0 }, + { "label": "4", "matrix": [0, 4 ], "w": 1, "x": 4, "y": 0 }, + { "label": "5", "matrix": [0, 5 ], "w": 1, "x": 5, "y": 0 }, + { "label": "6", "matrix": [0, 6 ], "w": 1, "x": 6, "y": 0 }, + { "label": "7", "matrix": [0, 7 ], "w": 1, "x": 7, "y": 0 }, + { "label": "8", "matrix": [0, 8 ], "w": 1, "x": 8, "y": 0 }, + { "label": "9", "matrix": [0, 9 ], "w": 1, "x": 9, "y": 0 }, + { "label": "0", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 }, + { "label": "Bspc", "matrix": [0, 13], "w": 1, "x": 13, "y": 0 }, + { "label": "Bspc", "matrix": [4, 13], "w": 1, "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0 ], "w": 1.5, "x": 0, "y": 1 }, + { "label": "Q", "matrix": [1, 1 ], "w": 1, "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2 ], "w": 1, "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3 ], "w": 1, "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4 ], "w": 1, "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5 ], "w": 1, "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6 ], "w": 1, "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7 ], "w": 1, "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8 ], "w": 1, "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9 ], "w": 1, "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [1, 12], "w": 1, "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps", "matrix": [2, 0 ], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1 ], "w": 1, "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2 ], "w": 1, "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3 ], "w": 1, "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4 ], "w": 1, "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5 ], "w": 1, "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6 ], "w": 1, "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7 ], "w": 1, "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8 ], "w": 1, "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9 ], "w": 1, "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0 ], "w": 1.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2 ], "w": 1, "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3 ], "w": 1, "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4 ], "w": 1, "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5 ], "w": 1, "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6 ], "w": 1, "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7 ], "w": 1, "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8 ], "w": 1, "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9 ], "w": 1, "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "MO(1)", "matrix": [3, 13], "w": 1, "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0 ], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1 ], "w": 1, "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 2 ], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 6 ], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 10], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 11], "w": 1, "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 12], "w": 1.5, "x": 13.5, "y": 4 } + ] + } + } +} diff --git a/keyboards/smithrune/iron160/iron160_h/iron160_h.c b/keyboards/smithrune/iron160/iron160_h/iron160_h.c new file mode 100644 index 000000000000..d87d4cbf3bc4 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_h/iron160_h.c @@ -0,0 +1,29 @@ +/* +Copyright 2022 Gondolindrim + +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 "quantum.h" + +// Defining indicator colors +uint8_t caps_color[3] = {0x33,0x33,0x33}; + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + led_state.caps_lock ? rgblight_setrgb_at(caps_color[0], caps_color[1], caps_color[2], 0) : rgblight_setrgb_at(0x00,0x00,0x00,0); + } + return res; +} diff --git a/keyboards/smithrune/iron160/iron160_h/keymaps/default/keymap.c b/keyboards/smithrune/iron160/iron160_h/keymaps/default/keymap.c new file mode 100755 index 000000000000..b39e8d72eb40 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_h/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2022 Gondolindrim + +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( + QK_GESC, 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_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_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_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC , KC_RALT, KC_RWIN, MO(1) , KC_RCTL + ), + [1] = LAYOUT( + QK_BOOT , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/smithrune/iron160/iron160_h/keymaps/via/keymap.c b/keyboards/smithrune/iron160/iron160_h/keymaps/via/keymap.c new file mode 100755 index 000000000000..5a700c2ee870 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_h/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* +Copyright 2022 Gondolindrim + +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( + QK_GESC, 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_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_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_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC , KC_RALT, KC_RWIN, KC_RCTL, KC_BSPC + ), + [1] = LAYOUT( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/smithrune/iron160/iron160_h/keymaps/via/rules.mk b/keyboards/smithrune/iron160/iron160_h/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_h/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/smithrune/iron160/iron160_h/mcuconf.h b/keyboards/smithrune/iron160/iron160_h/mcuconf.h new file mode 100644 index 000000000000..357bfe1c6c7d --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_h/mcuconf.h @@ -0,0 +1,23 @@ +/* Copyright 2022 Gondolindrim + * + * 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_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/smithrune/iron160/iron160_h/rules.mk b/keyboards/smithrune/iron160/iron160_h/rules.mk new file mode 100644 index 000000000000..4c6ba89ef9d0 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_h/rules.mk @@ -0,0 +1,20 @@ +# 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 = yes # Commands for debug and configuration +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = no +LTO_ENABLE = no + +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = legacy + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/smithrune/iron160/iron160_s/config.h b/keyboards/smithrune/iron160/iron160_s/config.h new file mode 100644 index 000000000000..e5da34f31218 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_s/config.h @@ -0,0 +1,26 @@ +/* +Copyright 2022 Gondolindrim + +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 BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 2 +#define BACKLIGHT_PAL_MODE 1 +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/smithrune/iron160/iron160_s/halconf.h b/keyboards/smithrune/iron160/iron160_s/halconf.h new file mode 100644 index 000000000000..8fcc53fced12 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_s/halconf.h @@ -0,0 +1,26 @@ +/* Copyright 2022 Gondolindrim + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/iron180/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/smithrune/iron160/iron160_s/info.json b/keyboards/smithrune/iron160/iron160_s/info.json new file mode 100644 index 000000000000..5eda7443b431 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_s/info.json @@ -0,0 +1,98 @@ +{ + "keyboard_name": "I160-S", + "manufacturer": "SmithRune", + "url": "", + "maintainer": "Gondolindrim", + "usb": { + "vid": "0x8384", + "pid": "0x1653", + "device_version": "0.0.1" + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "matrix_pins": { + "cols": ["A3", "B9", "B8", "B5", "B4", "B3", "A6", "A5", "A4", "A2", "A1", "A0", "C15", "C14"], + "rows": ["A10", "A15", "C13", "B1", "B10"] + }, + "diode_direction": "COL2ROW", + "backlight": { + "pin": "A7", + "levels": 20, + "breathing": true, + "breathing_period": 3 + }, + "indicators": { + "caps_lock": "B0" + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "~", "matrix": [0, 0 ], "w": 1, "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1 ], "w": 1, "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2 ], "w": 1, "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3 ], "w": 1, "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4 ], "w": 1, "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5 ], "w": 1, "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6 ], "w": 1, "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7 ], "w": 1, "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8 ], "w": 1, "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9 ], "w": 1, "x": 9, "y": 0 }, + { "label": ")", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 }, + { "label": "Bspc", "matrix": [0, 13], "w": 1, "x": 13, "y": 0 }, + { "label": "Bspc", "matrix": [4, 13], "w": 1, "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0 ], "w": 1.5, "x": 0, "y": 1 }, + { "label": "Q", "matrix": [1, 1 ], "w": 1, "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2 ], "w": 1, "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3 ], "w": 1, "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4 ], "w": 1, "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5 ], "w": 1, "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6 ], "w": 1, "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7 ], "w": 1, "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8 ], "w": 1, "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9 ], "w": 1, "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1 }, + { "label": "]", "matrix": [1, 11], "w": 1, "x": 11.5, "y": 1 }, + { "label": "[", "matrix": [1, 12], "w": 1, "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps", "matrix": [2, 0 ], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1 ], "w": 1, "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2 ], "w": 1, "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3 ], "w": 1, "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4 ], "w": 1, "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5 ], "w": 1, "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6 ], "w": 1, "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7 ], "w": 1, "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8 ], "w": 1, "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9 ], "w": 1, "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 }, + { "label": "~", "matrix": [2, 12], "w": 1, "x": 12.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0 ], "w": 1.25, "x": 0, "y": 3 }, + { "label": "|", "matrix": [3, 1 ], "w": 1, "x": 1.25, "y": 3 }, + { "label": "Z", "matrix": [3, 2 ], "w": 1, "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3 ], "w": 1, "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4 ], "w": 1, "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5 ], "w": 1, "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6 ], "w": 1, "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7 ], "w": 1, "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8 ], "w": 1, "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9 ], "w": 1, "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "w": 1, "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "w": 1, "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "MO(1)", "matrix": [3, 13 ], "w": 1, "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0 ], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1 ], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 2 ], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 6 ], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 9 ], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 10], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 11], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 12], "w": 1.25, "x": 13.75, "y": 4 } + ] + } + } +} diff --git a/keyboards/smithrune/iron160/iron160_s/keymaps/default/keymap.c b/keyboards/smithrune/iron160/iron160_s/keymaps/default/keymap.c new file mode 100755 index 000000000000..1cc3dea2f6da --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_s/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2022 Gondolindrim + +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( + QK_GESC, 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_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_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , + KC_LSFT, KC_BSLS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC , KC_RALT, KC_RWIN, MO(1) , KC_RCTL, KC_BSPC + ), + [1] = LAYOUT( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/smithrune/iron160/iron160_s/keymaps/via/keymap.c b/keyboards/smithrune/iron160/iron160_s/keymaps/via/keymap.c new file mode 100755 index 000000000000..f8790cc60076 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_s/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* +Copyright 2022 Gondolindrim + +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( + QK_GESC, 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_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_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , + KC_LSFT, KC_BSLS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC , KC_RALT, KC_RWIN, MO(1) , KC_RCTL, KC_BSPC + ), + [1] = LAYOUT( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/smithrune/iron160/iron160_s/keymaps/via/rules.mk b/keyboards/smithrune/iron160/iron160_s/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_s/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/smithrune/iron160/iron160_s/mcuconf.h b/keyboards/smithrune/iron160/iron160_s/mcuconf.h new file mode 100644 index 000000000000..c9bd9ded2679 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_s/mcuconf.h @@ -0,0 +1,23 @@ +/* +Copyright 2022 Gondolindrim + +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/smithrune/iron160/iron160_s/rules.mk b/keyboards/smithrune/iron160/iron160_s/rules.mk new file mode 100644 index 000000000000..b7824fcbdf74 --- /dev/null +++ b/keyboards/smithrune/iron160/iron160_s/rules.mk @@ -0,0 +1,20 @@ +# 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 = yes # Commands for debug and configuration +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = no +LTO_ENABLE = no + +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = legacy + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/smithrune/iron160/readme.md b/keyboards/smithrune/iron160/readme.md new file mode 100644 index 000000000000..2c4fe63d461d --- /dev/null +++ b/keyboards/smithrune/iron160/readme.md @@ -0,0 +1,34 @@ +# Iron 160 QMK folder + +![Iron160](https://i.imgur.com/8B2l2pnh.jpg) + +## Introduction + +This is the QMK Firmware repository for the Iron160 PCB, a keyboard designed by [Smith and Rune](https://smithrune.com/) and PCB designed by [Gondolindrim](http://github.com/Gondolindrim), who is also the firwmare maintainer. + +There are two variants of the PCB: a solderable (I160-S) and a hotswap (I160-H) PCB. Both support a myriad of alternative layouts, as well as RGB LEDs for underglow light. + +## How to flash + +### Enter bootloader + +The DFU state in the bootloader can be accessed in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key, escape in the default keymap) and plug in the keyboard; +* **Physical reset button**: press the button on the front of the PCB, next to caps lock, for at least five seconds; +* **Keycode in layout**: Press the key mapped to `QK_BOOT`; in the default layout, that is top left key ('escape') in layer 1. + +### How to compile and flash + +After checking what PCB you own and setting up your build environment, you can compile the Iron 165R2 default keymap by using one of the options below. + + make smithrune/iron160/iron160_s:default + make smithrune/iron160/iron160_h:default + +And use dfu-util in the command line or through a GUI like QMK toolbox to upload the firmware to the PCB. To directly flash the PCB after it is put into a DFU state, use: + + + make smithrune/iron160/iron160_s:default:flash + make smithrune/iron160/iron160_h:default:flash + +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). From d058091d0b2f98791d37c4a77779a8202592284f Mon Sep 17 00:00:00 2001 From: Luis Garcia Date: Wed, 5 Apr 2023 12:35:34 -0600 Subject: [PATCH 42/73] Add peterfalken userspace & keymaps (#19897) Co-authored-by: Peter.Falken --- .../macropad/keymaps/peterfalken/keymap.c | 98 +++++++++++++++ .../macropad/keymaps/peterfalken/rules.mk | 3 + keyboards/planck/keymaps/peterfalken/config.h | 49 ++++++++ keyboards/planck/keymaps/peterfalken/keymap.c | 80 +++++++++++++ .../planck/keymaps/peterfalken/readme.md | 14 +++ keyboards/planck/keymaps/peterfalken/rules.mk | 8 ++ .../preonic/keymaps/peterfalken/config.h | 49 ++++++++ .../preonic/keymaps/peterfalken/keymap.c | 92 ++++++++++++++ .../preonic/keymaps/peterfalken/readme.md | 14 +++ .../preonic/keymaps/peterfalken/rules.mk | 8 ++ .../launch_1/keymaps/peterfalken/config.h | 43 +++++++ .../launch_1/keymaps/peterfalken/keymap.c | 90 ++++++++++++++ .../launch_1/keymaps/peterfalken/readme.md | 14 +++ .../micro/keymaps/peterfalken/config.h | 7 ++ .../micro/keymaps/peterfalken/keymap.c | 113 ++++++++++++++++++ .../micro/keymaps/peterfalken/readme.md | 14 +++ .../micro/keymaps/peterfalken/rules.mk | 3 + .../work_board/keymaps/peterfalken/keymap.c | 88 ++++++++++++++ .../work_board/keymaps/peterfalken/readme.md | 14 +++ .../work_board/keymaps/peterfalken/rules.mk | 3 + users/peterfalken/config.h | 22 ++++ users/peterfalken/peterfalken.c | 11 ++ users/peterfalken/peterfalken.h | 27 +++++ users/peterfalken/readme.md | 14 +++ users/peterfalken/rules.mk | 18 +++ 25 files changed, 896 insertions(+) create mode 100644 keyboards/adafruit/macropad/keymaps/peterfalken/keymap.c create mode 100644 keyboards/adafruit/macropad/keymaps/peterfalken/rules.mk create mode 100644 keyboards/planck/keymaps/peterfalken/config.h create mode 100644 keyboards/planck/keymaps/peterfalken/keymap.c create mode 100644 keyboards/planck/keymaps/peterfalken/readme.md create mode 100644 keyboards/planck/keymaps/peterfalken/rules.mk create mode 100644 keyboards/preonic/keymaps/peterfalken/config.h create mode 100644 keyboards/preonic/keymaps/peterfalken/keymap.c create mode 100644 keyboards/preonic/keymaps/peterfalken/readme.md create mode 100644 keyboards/preonic/keymaps/peterfalken/rules.mk create mode 100644 keyboards/system76/launch_1/keymaps/peterfalken/config.h create mode 100644 keyboards/system76/launch_1/keymaps/peterfalken/keymap.c create mode 100644 keyboards/system76/launch_1/keymaps/peterfalken/readme.md create mode 100644 keyboards/work_louder/micro/keymaps/peterfalken/config.h create mode 100644 keyboards/work_louder/micro/keymaps/peterfalken/keymap.c create mode 100644 keyboards/work_louder/micro/keymaps/peterfalken/readme.md create mode 100644 keyboards/work_louder/micro/keymaps/peterfalken/rules.mk create mode 100644 keyboards/work_louder/work_board/keymaps/peterfalken/keymap.c create mode 100644 keyboards/work_louder/work_board/keymaps/peterfalken/readme.md create mode 100644 keyboards/work_louder/work_board/keymaps/peterfalken/rules.mk create mode 100644 users/peterfalken/config.h create mode 100644 users/peterfalken/peterfalken.c create mode 100644 users/peterfalken/peterfalken.h create mode 100644 users/peterfalken/readme.md create mode 100644 users/peterfalken/rules.mk diff --git a/keyboards/adafruit/macropad/keymaps/peterfalken/keymap.c b/keyboards/adafruit/macropad/keymaps/peterfalken/keymap.c new file mode 100644 index 000000000000..f93126334717 --- /dev/null +++ b/keyboards/adafruit/macropad/keymaps/peterfalken/keymap.c @@ -0,0 +1,98 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "peterfalken.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_MUTE, + KC_7, KC_8, KC_9, + KC_4, KC_5, KC_6, + KC_1, KC_2, KC_3, + KC_ENT, KC_0, KC_BSPC + ) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, +}; +#endif + +#ifdef OLED_ENABLE +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, + 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x81, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x81, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x07, 0x1f, 0x3f, 0x7f, 0x7e, 0xf8, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff, + 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf8, 0x7e, 0x7f, 0x3f, 0x1f, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + oled_write_raw_P(qmk_logo, sizeof(qmk_logo)); +} + +bool oled_task_user(void) { + render_qmk_logo(); + return true; +} +#endif // OLED_ENABLE diff --git a/keyboards/adafruit/macropad/keymaps/peterfalken/rules.mk b/keyboards/adafruit/macropad/keymaps/peterfalken/rules.mk new file mode 100644 index 000000000000..59ffb099c24b --- /dev/null +++ b/keyboards/adafruit/macropad/keymaps/peterfalken/rules.mk @@ -0,0 +1,3 @@ +# Setup QMK features +ENCODER_MAP_ENABLE = yes +RGB_MATRIX_ENABLE = no # Disable RGB key matrix diff --git a/keyboards/planck/keymaps/peterfalken/config.h b/keyboards/planck/keymaps/peterfalken/config.h new file mode 100644 index 000000000000..4b14b7756b8e --- /dev/null +++ b/keyboards/planck/keymaps/peterfalken/config.h @@ -0,0 +1,49 @@ +/* Copyright 2015-2021 Jack Humbert + * + * 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 + +#ifdef AUDIO_ENABLE +# define STARTUP_SONG SONG(PLANCK_SOUND) +// #define STARTUP_SONG SONG(NO_SOUND) + +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) } +#endif + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/planck/keymaps/peterfalken/keymap.c b/keyboards/planck/keymaps/peterfalken/keymap.c new file mode 100644 index 000000000000..140149c47233 --- /dev/null +++ b/keyboards/planck/keymaps/peterfalken/keymap.c @@ -0,0 +1,80 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "muse.h" +#include "peterfalken.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | A | S | D | F | G | H | J | K | L | ; | ' | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | Ctrl | Opt | Cmd | LWR | Space | RSE | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_planck_grid( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + _______, KC_LCTL, KC_LOPT, KC_LCMD, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | ▽ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ ▽ | ▽ | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_planck_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | ▽ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ ▽ | ▽ | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_planck_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | RSET | ▽ | M.AP | M.AL | LPAD | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | SLEP | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | CPWD | UN | CU | CO | PA | MV | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_planck_grid( + QK_BOOT, _______, CK_M1, KC_MCTL, KC_LPAD, _______, _______, _______, _______, _______, _______, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CK_SLP, + CK_CW, _______, CK_CU, CK_CO, CK_PA, CK_MV, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; diff --git a/keyboards/planck/keymaps/peterfalken/readme.md b/keyboards/planck/keymaps/peterfalken/readme.md new file mode 100644 index 000000000000..f64d682a51ed --- /dev/null +++ b/keyboards/planck/keymaps/peterfalken/readme.md @@ -0,0 +1,14 @@ +Copyright 2023 LEG @PeterFalken + +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 . diff --git a/keyboards/planck/keymaps/peterfalken/rules.mk b/keyboards/planck/keymaps/peterfalken/rules.mk new file mode 100644 index 000000000000..a33c6c1ddb85 --- /dev/null +++ b/keyboards/planck/keymaps/peterfalken/rules.mk @@ -0,0 +1,8 @@ +# Setup keymap QMK features +# TODO: Check for space optimizations +AUDIO_ENABLE = yes # Enable Audio Output +ENCODER_ENABLE = no # Disable encoder + +ifeq ($(strip $(AUDIO_ENABLE)), yes) + SRC += muse.c +endif diff --git a/keyboards/preonic/keymaps/peterfalken/config.h b/keyboards/preonic/keymaps/peterfalken/config.h new file mode 100644 index 000000000000..797bd2c78db2 --- /dev/null +++ b/keyboards/preonic/keymaps/peterfalken/config.h @@ -0,0 +1,49 @@ +/* Copyright 2015-2021 Jack Humbert + * + * 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 + +#ifdef AUDIO_ENABLE +# define STARTUP_SONG SONG(PREONIC_SOUND) +// #define STARTUP_SONG SONG(NO_SOUND) + +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) } +#endif + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/preonic/keymaps/peterfalken/keymap.c b/keyboards/preonic/keymaps/peterfalken/keymap.c new file mode 100644 index 000000000000..7123ba766971 --- /dev/null +++ b/keyboards/preonic/keymaps/peterfalken/keymap.c @@ -0,0 +1,92 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "muse.h" +#include "peterfalken.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_preonic_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | ▽ | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | ▽ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ ▽ | ▽ | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_preonic_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | ▽ | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | Pg Up| Pg Dn| ▽ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ ▽ | ▽ | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_preonic_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | RSET | ▽ | M.AP | M.AL | LPAD | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | SLEP | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | CPWD | UN | CU | CO | PA | MV | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_preonic_grid( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + QK_BOOT, _______, CK_M1, KC_MCTL, KC_LPAD, _______, _______, _______, _______, _______, _______, KC_BSPC, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CK_SLP, + CK_CW, _______, CK_CU, CK_CO, CK_PA, CK_MV, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; diff --git a/keyboards/preonic/keymaps/peterfalken/readme.md b/keyboards/preonic/keymaps/peterfalken/readme.md new file mode 100644 index 000000000000..f64d682a51ed --- /dev/null +++ b/keyboards/preonic/keymaps/peterfalken/readme.md @@ -0,0 +1,14 @@ +Copyright 2023 LEG @PeterFalken + +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 . diff --git a/keyboards/preonic/keymaps/peterfalken/rules.mk b/keyboards/preonic/keymaps/peterfalken/rules.mk new file mode 100644 index 000000000000..a33c6c1ddb85 --- /dev/null +++ b/keyboards/preonic/keymaps/peterfalken/rules.mk @@ -0,0 +1,8 @@ +# Setup keymap QMK features +# TODO: Check for space optimizations +AUDIO_ENABLE = yes # Enable Audio Output +ENCODER_ENABLE = no # Disable encoder + +ifeq ($(strip $(AUDIO_ENABLE)), yes) + SRC += muse.c +endif diff --git a/keyboards/system76/launch_1/keymaps/peterfalken/config.h b/keyboards/system76/launch_1/keymaps/peterfalken/config.h new file mode 100644 index 000000000000..565698b7b512 --- /dev/null +++ b/keyboards/system76/launch_1/keymaps/peterfalken/config.h @@ -0,0 +1,43 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Custom RGB_MATRIX settings +#ifdef RGB_MATRIX_ENABLE + // Remove predefined values + #undef RGB_DISABLE_TIMEOUT + #undef RGB_MATRIX_MAXIMUM_BRIGHTNESS + #undef RGB_MATRIX_DEFAULT_MODE + #undef RGB_MATRIX_DEFAULT_HUE + #undef RGB_MATRIX_DEFAULT_SAT + #undef RGB_MATRIX_DEFAULT_VAL + + // Redefine values + // Number of milliseconds to wait until RGB automatically turns off + #define RGB_MATRIX_TIMEOUT 5000 + // Limits maximum brightness of LEDs to 120 out of 255 + #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 + // Sets the default startup mode + #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CUSTOM_active_keys + // Sets the default hue, saturation & brightness values + #define RGB_MATRIX_DEFAULT_HUE 0 + #define RGB_MATRIX_DEFAULT_SAT 0 + #define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS/3 +#endif // RGB_MATRIX_ENABLE + +// Custom definition +// Disable RGB_MATRIX_ANIMATIONS to free up space +#ifdef DISABLE_RGB_MATRIX_ANIMATIONS + #undef ENABLE_RGB_MATRIX_CYCLE_ALL + #undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT + #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN + #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN + #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL + #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON + #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL + #undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL + #undef ENABLE_RGB_MATRIX_RAINDROPS + #undef ENABLE_RGB_MATRIX_SPLASH + #undef ENABLE_RGB_MATRIX_MULTISPLASH +#endif // DISABLE_RGB_MATRIX_ANIMATIONS diff --git a/keyboards/system76/launch_1/keymaps/peterfalken/keymap.c b/keyboards/system76/launch_1/keymaps/peterfalken/keymap.c new file mode 100644 index 000000000000..2c5c8bf8625e --- /dev/null +++ b/keyboards/system76/launch_1/keymaps/peterfalken/keymap.c @@ -0,0 +1,90 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "peterfalken.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layer 0, default layer + _________________________________________________________________________________________________________________________________ ________ +| | | | | | | | | | | | | | || | +| ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DELETE || HOME | +|________|________|________|________|________|________|________|________|________|________|________|________|________|____________||________| +| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | _ | + | || | +| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSPACE || PGUP | +|________|________|________|________|________|________|________|________|________|________|________|________|________|____________||________| +| | | | | | | | | | | | [ | ] | | || | +| TAB | Q | W | E | R | T | Y | U | I | O | P | { | } | \ || PGDN | +|____________|________|________|________|________|________|________|________|________|________|________|________|________|________||________| + | | | | | | | | | | | : | " | | | | + | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | | END | + |____________|________|________|________|________|________|________|________|________|________|________|________|____________|___|________| + | | | | | | | | | < | > | ? | | | + | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | + |________________|________|________|________|________|________|________|________|________|________|________|____________|________|________ + | | | | | | | | | | | | | | + | MO.1 | RCTL | LALT | LGUI | SPACE | SPACE | RGUI | RALT | RCTRL | | LEFT | DOWN | RIGHT | + |____________|________|_______|________|_________________|_________________|________|________|_____________| |________|________|________| + */ + + [_QWERTY] = LAYOUT( + KC_ESC, 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_HOME, + KC_GRV, 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_PGUP, + 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_PGDN, + CK_CW, 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_END, + 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, + MO(1), KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Layer 1, function layer + _________________________________________________________________________________________________________________________________ ________ +| | | | | | | | | | | | | | || PLAY/ | +| ▽ | ▽ | M.AP | M.AL | LPAD | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ || PAUSE | +|________|________|________|________|________|________|________|________|________|________|________|________|________|____________||________| +| | | | | | | | | | | LED | LED | LED | || VOLUME | +| TO.0 | TO.1 | TO.2 | TO.3 | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | TOGGLE | DOWN | UP | ▽ || UP | +|________|________|________|________|________|________|________|________|________|________|________|________|________|____________||________| +| | | | | | | | | | | | | | || VOLUME | +|PRINT SCREEN| ▽ | ▽ | ▽ | ▽ | ▽ | HOME | PGDN | PGUP | END | ▽ | ▽ | ▽ | SLEP || DOWN | +|____________|________|________|________|________|________|________|________|________|________|________|________|________|________||________| + | | | | | | | | | | | | | | | | + | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | LEFT | DOWN | UP | RIGHT | ▽ | ▽ | ▽ | | MUTE | + |____________|________|________|________|________|________|________|________|________|________|________|________|____________|___|________| + | | | | | | | | | | | | | | + | ▽ | UN | CU | CO | PA | MV | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | PGUP | + |________________|________|________|________|________|________|________|________|________|________|________|____________|________|________ + | | | | | | | | | | | | | | + | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | TO.0 | | HOME | PGDN | END | + |____________|________|_______|________|_________________|_________________|________|________|_____________| |________|________|________| + + * `QK_BOOT' resets the controller and puts the board into firmware flashing mode. + * If this key is hit accidentally, just unplug the board and plug it back in. + */ + + [_LOWER] = LAYOUT( + KC_TRNS, KC_TRNS, CK_M1, KC_MCTL, KC_LPAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + TO(0), TO(1), TO(2), TO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAD, RGB_VAI, KC_TRNS, KC_VOLU, + KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, CK_SLP, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, + KC_TRNS, KC_TRNS, CK_CU, CK_CO, CK_PA, CK_MV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(0), KC_HOME, KC_PGDN, KC_END + ), + + [_RAISE] = LAYOUT( + QK_BOOT, 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, + TO(0), TO(1), TO(2), TO(3), 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, TO(0), KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_ADJUST] = LAYOUT( + QK_BOOT, 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, + TO(0), TO(1), TO(2), TO(3), 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, TO(0), KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/system76/launch_1/keymaps/peterfalken/readme.md b/keyboards/system76/launch_1/keymaps/peterfalken/readme.md new file mode 100644 index 000000000000..f64d682a51ed --- /dev/null +++ b/keyboards/system76/launch_1/keymaps/peterfalken/readme.md @@ -0,0 +1,14 @@ +Copyright 2023 LEG @PeterFalken + +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 . diff --git a/keyboards/work_louder/micro/keymaps/peterfalken/config.h b/keyboards/work_louder/micro/keymaps/peterfalken/config.h new file mode 100644 index 000000000000..dc1dd935a970 --- /dev/null +++ b/keyboards/work_louder/micro/keymaps/peterfalken/config.h @@ -0,0 +1,7 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define CUSTOM_KEYMAP_LAYERS +#define CUSTOM_LAYER_STATE diff --git a/keyboards/work_louder/micro/keymaps/peterfalken/keymap.c b/keyboards/work_louder/micro/keymaps/peterfalken/keymap.c new file mode 100644 index 000000000000..8ef9a4eb97df --- /dev/null +++ b/keyboards/work_louder/micro/keymaps/peterfalken/keymap.c @@ -0,0 +1,113 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "peterfalken.h" + +enum keymap_layers { + _L0, + _L1, + _L2, + _L3, + _L4, + _L5, + _L6, + _ADJUST +}; + +// Shorter custom keycodes +#define CK_UNDO LGUI(KC_Z) // UNDO = CMD + Z +#define CK_REDO SGUI(KC_Z) // REDO = CMD + SHIFT + Z + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_L0] = LAYOUT( + KC_MPLY, KC_9, KC_0, KC_NO, + KC_5, KC_6, KC_7, KC_8, + KC_1, KC_2, KC_3, KC_4, + TO(1), KC_DOT, KC_COMM, _______ + ), + [_L1] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8, + KC_9, KC_0, KC_A, KC_B, + TO(2), KC_C, KC_D, KC_E + ), + [_L2] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + TO(3), _______, _______, _______ + ), + [_L3] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + TO(4), _______, _______, _______ + ), + [_L4] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + TO(5), _______, _______, _______ + ), + [_L5] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + TO(6), _______, _______, _______ + ), + [_L6] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + TO(7), _______, _______, _______ + ), + [_ADJUST] = LAYOUT( + QK_BOOT, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + TO(0), _______, _______, _______ + ), +}; + +typedef union { + uint32_t raw; + struct { + uint8_t led_level : 3; + }; +} work_louder_config_t; + +work_louder_config_t work_louder_config; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(CK_UNDO, CK_REDO) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, +}; +#endif // defined(ENCODER_MAP_ENABLE) + +layer_state_t layer_state_set_user(layer_state_t state) { + // Get highest layer as number + int layer = get_highest_layer(state); + // Toggle leds based on binary layer number [1 2 3] + layer & 0x04 ? work_louder_micro_led_1_on(): work_louder_micro_led_1_off(); + layer & 0x02 ? work_louder_micro_led_2_on(): work_louder_micro_led_2_off(); + layer & 0x01 ? work_louder_micro_led_3_on(): work_louder_micro_led_3_off(); + return state; +} + +void eeconfig_init_user(void) { + work_louder_config.raw = 0; + work_louder_config.led_level = 1; + eeconfig_update_user(work_louder_config.raw); +} + +void matrix_init_user(void) { + work_louder_config.raw = eeconfig_read_user(); + work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * 255 / 4)); +} diff --git a/keyboards/work_louder/micro/keymaps/peterfalken/readme.md b/keyboards/work_louder/micro/keymaps/peterfalken/readme.md new file mode 100644 index 000000000000..f64d682a51ed --- /dev/null +++ b/keyboards/work_louder/micro/keymaps/peterfalken/readme.md @@ -0,0 +1,14 @@ +Copyright 2023 LEG @PeterFalken + +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 . diff --git a/keyboards/work_louder/micro/keymaps/peterfalken/rules.mk b/keyboards/work_louder/micro/keymaps/peterfalken/rules.mk new file mode 100644 index 000000000000..59ffb099c24b --- /dev/null +++ b/keyboards/work_louder/micro/keymaps/peterfalken/rules.mk @@ -0,0 +1,3 @@ +# Setup QMK features +ENCODER_MAP_ENABLE = yes +RGB_MATRIX_ENABLE = no # Disable RGB key matrix diff --git a/keyboards/work_louder/work_board/keymaps/peterfalken/keymap.c b/keyboards/work_louder/work_board/keymaps/peterfalken/keymap.c new file mode 100644 index 000000000000..5cbe25322a99 --- /dev/null +++ b/keyboards/work_louder/work_board/keymaps/peterfalken/keymap.c @@ -0,0 +1,88 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "peterfalken.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | A | S | D | F | G | H | J | K | L | ; | ' | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | Ctrl | Opt | Cmd | LWR | Space | RSE | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, _______, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + _______, KC_LCTL, KC_LOPT, KC_LCMD, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | ▽ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ ▽ | ▽ | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, _______, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | ▽ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ ▽ | ▽ | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, _______, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | RSET | ▽ | M.AP | M.AL | LPAD | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | SLEP | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | CPWD | UN | CU | CO | PA | MV | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ▽ | ▽ | ▽ | ▽ | ▽ | ▽ ▽ | ▽ | ▽ | ▽ | ▽ | ▽ | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT( + QK_BOOT, _______, CK_M1, KC_MCTL, KC_LPAD, _______, _______, _______, _______, _______, _______, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CK_SLP, + CK_CW, _______, CK_CU, CK_CO, CK_PA, CK_MV, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_QWERTY] = { { KC_VOLU, KC_VOLD } }, + [_RAISE] = { { _______, _______ } }, + [_LOWER] = { { _______, _______ } }, + [_ADJUST] = { { _______, _______ } }, +}; +#endif // ENCODER_ENABLE diff --git a/keyboards/work_louder/work_board/keymaps/peterfalken/readme.md b/keyboards/work_louder/work_board/keymaps/peterfalken/readme.md new file mode 100644 index 000000000000..f64d682a51ed --- /dev/null +++ b/keyboards/work_louder/work_board/keymaps/peterfalken/readme.md @@ -0,0 +1,14 @@ +Copyright 2023 LEG @PeterFalken + +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 . diff --git a/keyboards/work_louder/work_board/keymaps/peterfalken/rules.mk b/keyboards/work_louder/work_board/keymaps/peterfalken/rules.mk new file mode 100644 index 000000000000..e2a6e1084e3d --- /dev/null +++ b/keyboards/work_louder/work_board/keymaps/peterfalken/rules.mk @@ -0,0 +1,3 @@ +# Setup QMK features +ENCODER_MAP_ENABLE = yes +RGB_MATRIX_ENABLE = no # Disable RGB key matrix diff --git a/users/peterfalken/config.h b/users/peterfalken/config.h new file mode 100644 index 000000000000..5295923ec66f --- /dev/null +++ b/users/peterfalken/config.h @@ -0,0 +1,22 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Fix warning - "Attached USB accessory uses too much power." +#ifndef USB_MAX_POWER_CONSUMPTION + #define USB_MAX_POWER_CONSUMPTION 100 +#endif + +// Fix unresponsiveness on wake from sleep +#ifndef USB_SUSPEND_WAKEUP_DELAY + #define USB_SUSPEND_WAKEUP_DELAY 200 +#endif + +// Space optimizations +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE + +// Disable animations for RGB underglow & key matrix +#define DISABLE_RGB_LIGHT_ANIMATIONS +#define DISABLE_RGB_MATRIX_ANIMATIONS diff --git a/users/peterfalken/peterfalken.c b/users/peterfalken/peterfalken.c new file mode 100644 index 000000000000..5041f29da6d4 --- /dev/null +++ b/users/peterfalken/peterfalken.c @@ -0,0 +1,11 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "peterfalken.h" + +// Switch layer +#ifndef CUSTOM_LAYER_STATE +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} +#endif // CUSTOM_LAYER_STATE diff --git a/users/peterfalken/peterfalken.h b/users/peterfalken/peterfalken.h new file mode 100644 index 000000000000..1f978c49e852 --- /dev/null +++ b/users/peterfalken/peterfalken.h @@ -0,0 +1,27 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once +#include QMK_KEYBOARD_H + +#ifndef CUSTOM_KEYMAP_LAYERS + enum default_layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST + }; +#endif // CUSTOM_KEYMAP_LAYERS + +// Custom definitions for keys +#define CK_CW CW_TOGG // CAPS_WORD for Caps Word feature +#define CK_SLP KC_SLEP // System Sleep +#define CK_M1 C(KC_DOWN) // Mission Control - One apps +#define CK_CO KC_COPY // COPY = CMD + C +#define CK_CU KC_CUT // CUT = CMD + X +#define CK_MV LAG(KC_V) // MOVE = CMD + OPT + V +#define CK_PA KC_PASTE // PASTE = CMD + V + +// Layer activation +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) diff --git a/users/peterfalken/readme.md b/users/peterfalken/readme.md new file mode 100644 index 000000000000..f64d682a51ed --- /dev/null +++ b/users/peterfalken/readme.md @@ -0,0 +1,14 @@ +Copyright 2023 LEG @PeterFalken + +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 . diff --git a/users/peterfalken/rules.mk b/users/peterfalken/rules.mk new file mode 100644 index 000000000000..dfa5d574aa0c --- /dev/null +++ b/users/peterfalken/rules.mk @@ -0,0 +1,18 @@ +# Setup QMK features +BOOTMAGIC_ENABLE = yes # Enable QMK_Boot on plug-in +CAPS_WORD_ENABLE = yes # Enable Caps Word +COMMAND_ENABLE = no # Won't use for now +CONSOLE_ENABLE = no # Won't use for now +DIP_SWITCH_ENABLE = no # Won't use for now +GRAVE_ESC_ENABLE = no # Won't use for now +MAGIC_ENABLE = no # Won't use for now +MOUSEKEY_ENABLE = no # Won't use for now +RAW_ENABLE = no # Disable raw HID commands +RGBLIGHT_ENABLE = no # Disable RGB underglow +SPACE_CADET_ENABLE = no # Free up space + +# Enable Link Time Optimizations +LTO_ENABLE = yes + +# Include userspace files +SRC += $(USER_PATH)/peterfalken.c From eab2b8faa0ab1acfe51aeedd0214763da2ec4824 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Apr 2023 23:34:35 +0100 Subject: [PATCH 43/73] Bump peter-evans/create-pull-request from 4 to 5 (#20346) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v5) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/format_push.yml | 2 +- .github/workflows/regen_push.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/format_push.yml b/.github/workflows/format_push.yml index 26e9f4edfb02..0a34245ac0dd 100644 --- a/.github/workflows/format_push.yml +++ b/.github/workflows/format_push.yml @@ -47,7 +47,7 @@ jobs: git config user.email 'hello@qmk.fm' - name: Create Pull Request - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v5 if: ${{ github.repository == 'qmk/qmk_firmware'}} with: token: ${{ secrets.QMK_BOT_TOKEN }} diff --git a/.github/workflows/regen_push.yml b/.github/workflows/regen_push.yml index c56bc48a690c..2d77f6fdf2da 100644 --- a/.github/workflows/regen_push.yml +++ b/.github/workflows/regen_push.yml @@ -34,7 +34,7 @@ jobs: git config user.email 'hello@qmk.fm' - name: Create Pull Request - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v5 if: ${{ github.repository == 'qmk/qmk_firmware'}} with: token: ${{ secrets.QMK_BOT_TOKEN }} From 655c24d29d656b5cea8f7de3605193d692d8f4c6 Mon Sep 17 00:00:00 2001 From: lalalademaxiya1 <66767061+lalalademaxiya1@users.noreply.github.com> Date: Fri, 7 Apr 2023 02:02:24 +0800 Subject: [PATCH 44/73] [Keyboard] Add Keychron Q11 (#20125) Co-authored-by: Drashna Jaelre Co-authored-by: adophoxia <100170946+adophoxia@users.noreply.github.com> Co-authored-by: Ryan --- .../keychron/q11/ansi_encoder/ansi_encoder.c | 244 ++++++++++++++++++ keyboards/keychron/q11/ansi_encoder/config.h | 20 ++ keyboards/keychron/q11/ansi_encoder/info.json | 166 ++++++++++++ .../q11/ansi_encoder/keymaps/default/keymap.c | 71 +++++ .../q11/ansi_encoder/keymaps/default/rules.mk | 1 + .../ansi_encoder/keymaps/keychron/keymap.c | 84 ++++++ .../ansi_encoder/keymaps/keychron/rules.mk | 5 + .../q11/ansi_encoder/keymaps/via/keymap.c | 72 ++++++ .../q11/ansi_encoder/keymaps/via/rules.mk | 2 + keyboards/keychron/q11/ansi_encoder/rules.mk | 9 + keyboards/keychron/q11/config.h | 110 ++++++++ keyboards/keychron/q11/halconf.h | 23 ++ keyboards/keychron/q11/mcuconf.h | 28 ++ keyboards/keychron/q11/q11.c | 102 ++++++++ keyboards/keychron/q11/readme.md | 21 ++ 15 files changed, 958 insertions(+) create mode 100755 keyboards/keychron/q11/ansi_encoder/ansi_encoder.c create mode 100755 keyboards/keychron/q11/ansi_encoder/config.h create mode 100755 keyboards/keychron/q11/ansi_encoder/info.json create mode 100755 keyboards/keychron/q11/ansi_encoder/keymaps/default/keymap.c create mode 100755 keyboards/keychron/q11/ansi_encoder/keymaps/default/rules.mk create mode 100755 keyboards/keychron/q11/ansi_encoder/keymaps/keychron/keymap.c create mode 100755 keyboards/keychron/q11/ansi_encoder/keymaps/keychron/rules.mk create mode 100755 keyboards/keychron/q11/ansi_encoder/keymaps/via/keymap.c create mode 100755 keyboards/keychron/q11/ansi_encoder/keymaps/via/rules.mk create mode 100755 keyboards/keychron/q11/ansi_encoder/rules.mk create mode 100755 keyboards/keychron/q11/config.h create mode 100755 keyboards/keychron/q11/halconf.h create mode 100755 keyboards/keychron/q11/mcuconf.h create mode 100755 keyboards/keychron/q11/q11.c create mode 100644 keyboards/keychron/q11/readme.md diff --git a/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c new file mode 100755 index 000000000000..0d4fd2cd98a8 --- /dev/null +++ b/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c @@ -0,0 +1,244 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * 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 "quantum.h" + +#ifdef RGB_MATRIX_ENABLE + +// clang-format off + +const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, A_2, C_2, B_2}, // ESC + {0, A_3, C_3, B_3}, // F1 + {0, A_4, C_4, B_4}, // F2 + {0, A_5, C_5, B_5}, // F3 + {0, A_6, C_6, B_6}, // F4 + {0, A_7, C_7, B_7}, // F5 + {0, A_8, C_8, B_8}, // F6 + + {0, D_1, F_1, E_1}, // M1 + {0, D_2, F_2, E_2}, // `~ + {0, D_3, F_3, E_3}, // 1! + {0, D_4, F_4, E_4}, // 2@ + {0, D_5, F_5, E_5}, // 3# + {0, D_6, F_6, E_6}, // 4$ + {0, D_7, F_7, E_7}, // 5% + {0, D_8, F_8, E_8}, // 6^ + + {0, G_1, I_1, H_1}, // M2 + {0, G_2, I_2, H_2}, // TAB + {0, G_3, I_3, H_3}, // Q + {0, G_4, I_4, H_4}, // W + {0, G_5, I_5, H_5}, // E + {0, G_6, I_6, H_6}, // R + {0, G_7, I_7, H_7}, // T + + {0, J_1, L_1, K_1}, // M3 + {0, J_2, L_2, K_2}, // CapsJock + {0, J_3, L_3, K_3}, // A + {0, J_4, L_4, K_4}, // S + {0, J_5, L_5, K_5}, // D + {0, J_6, L_6, K_6}, // F + {0, J_7, L_7, K_7}, // G + + {0, J_9, L_9, K_9}, // M4 + {0, J_11, L_11, K_11}, // Shift_J + {0, J_12, L_12, K_12}, // Z + {0, J_13, L_13, K_13}, // X + {0, J_14, L_14, K_14}, // C + {0, J_15, L_15, K_15}, // V + {0, J_16, L_16, K_16}, // B + + {0, G_9, I_9, H_9}, // M5 + {0, G_10, I_10, H_10}, // Ctrl_L + {0, G_11, I_11, H_11}, // WGn_L + {0, G_12, I_12, H_12}, // Alt_L + {0, G_13, I_13, H_13}, // Fn + {0, G_15, I_15, H_15}, // Space + + {0, A_16, C_16, B_16}, // F7 + {0, A_15, C_15, B_15}, // F8 + {0, A_14, C_14, B_14}, // F9 + {0, A_13, C_13, B_13}, // F11 + {0, A_12, C_12, B_12}, // F11 + {0, A_11, C_11, B_11}, // F12 + {0, A_10, C_10, B_10}, // INS + {0, A_9, C_9, B_9}, // DEL + + {0, D_16, F_16, E_16}, // 7& + {0, D_15, F_15, E_15}, // 8* + {0, D_14, F_14, E_14}, // 9( + {0, D_13, F_13, E_13}, // 1) + {0, D_12, F_12, E_12}, // -_ + {0, D_11, F_11, E_11}, // =+ + {0, D_10, F_10, E_10}, // BackSpace + {0, D_8, F_8, E_8}, // PgUp + + {0, G_16, I_16, H_16}, // Y + {0, G_15, I_15, H_15}, // U + {0, G_14, I_14, H_14}, // G + {0, G_13, I_13, H_13}, // O + {0, G_12, I_12, H_12}, // P + {0, G_11, I_11, H_11}, // [ + {0, G_10, I_10, H_10}, // ] + {0, G_9, I_9, H_9}, // \|| + {0, G_8, I_8, H_8}, // PgDn + + {0, J_16, L_16, K_16}, // H + {0, J_15, L_15, K_15}, // J + {0, J_14, L_14, K_14}, // KKEY_PRESS_HOME + {0, J_13, L_13, K_13}, // J + {0, J_12, L_12, K_12}, // ;: + {0, J_11, L_11, K_11}, // '" + {0, J_9, L_9, K_9}, // Enter + {0, J_8, L_8, K_8}, // Home + + {0, J_7, L_7, K_7}, // N + {0, J_6, L_6, K_6}, // M + {0, J_5, L_5, K_5}, // ,< + {0, J_4, L_4, K_4}, // .> + {0, J_3, L_3, K_3}, // ?/ + {0, J_2, L_2, K_2}, // Shift_R + {0, J_1, L_1, K_1}, // Up + + {0, G_6, I_6, H_6}, // Space + {0, G_5, I_5, H_5}, // Win_R + {0, G_4, I_4, H_4}, // Fn + {0, G_3, I_3, H_3}, // Ctrl_R + {0, G_2, I_2, H_2}, // Left + {0, G_1, I_1, H_1}, // Down + {0, G_7, I_7, H_7}, // Right +}; + +#define __ NO_LED + +led_config_t g_led_config = { + { + // Key Matrix to LED Index + { __, 0, 1, 2, 3, 4, 5, 6, __ }, + { 7, 8, 9, 10, 11, 12, 13, 14, __ }, + { 15, 16, 17, 18, 19, __, 20, 21, __ }, + { 22, 23, 24, 25, 26, 27, 28, __, __ }, + { 29, __, 30, 31, 32, 33, 34, 35, __ }, + { 36, 37, 38, 39, 40, __, 41, __, __ }, + { 42, 43, 44, 45, 46, 47, 48, 49, __ }, + { 50, 51, 52, 53, 54, 55, 56, __, 57 }, + { 58, 59, 60, 61, 62, 63, 64, 65, 66 }, + { 67, 68, 69, 70, 71, 72, __, 73, 74 }, + { 75, 76, 77, 78, 79, 80, __, 81, __ }, + { __, 82, 83, 84, 85, __, 86, 87, 88 }, + }, + { + // LED Index to Physical Position + {17,0}, {31,0}, {45,0}, {59,0}, {72,0}, {86,0}, {100,0}, + {0,15}, {17,15}, {31,15}, {45,15}, {59,15}, {72,15}, {86,15}, {100,15}, + {0,27}, {21,27}, {38,27}, {52,27}, {66,27}, {79,27}, {93,27}, + {0,40}, {22,40}, {41,40}, {55,40}, {69,40}, {83,40}, {97,40}, + {0,52}, {26,52}, {48,52}, {61,52}, {76,52}, {90,52}, {102,52}, + {0,64}, {19,64}, {36,64}, {53,64}, {70,64}, {94,64}, + {110,0}, {124,0}, {138,0}, {152,0}, {165,0}, {179,0}, {193,0}, {207,0}, + {110,15}, {124,15}, {138,15}, {152,15}, {165,15}, {179,15}, {200,15}, {224,15}, + {104,27}, {117,27}, {131,27}, {145,27}, {158,27}, {172,27}, {186,27}, {203,27}, {224,27}, + {107,40}, {121,40}, {134,40}, {148,40}, {162,40}, {176,40}, {198,40}, {224,40}, + {114,52}, {127,52}, {141,52}, {155,52}, {169,52}, {188,52}, {210,52}, + {126,64}, {152,64}, {166,64}, {180,64}, {196,64}, {210,64}, {224,64}, + }, + { + // RGB LED Index to Flag + 1, 1, 1, 1, 1, 1, 1, + 1, 1, 4, 4, 4, 4, 4, 4, + 1, 1, 4, 4, 4, 4, 4, + 1, 8, 4, 4, 4, 4, 4, + 1, 1, 4, 4, 4, 4, 4, + 1, 1, 1, 1, 1, 4, + 1, 1, 1, 1, 1, 1, 1, 1, + 4, 4, 4, 4, 4, 4, 1, 1, + 4, 4, 4, 4, 4, 4, 4, 4, 1, + 4, 4, 4, 4, 4, 4, 1, 1, + 4, 4, 4, 4, 4, 1, 1, + 4, 1, 1, 1, 1, 1, 1, + } +}; + +// clang-format on + +#endif + +#define ADC_BUFFER_DEPTH 1 +#define ADC_NUM_CHANNELS 1 +#define ADC_SAMPLING_RATE ADC_SMPR_SMP_12P5 +#define ADC_RESOLUTION ADC_CFGR_RES_10BITS + +static int16_t analogReadPin_my(pin_t pin) { + ADCConfig adcCfg = {}; + adcsample_t sampleBuffer[ADC_NUM_CHANNELS*ADC_BUFFER_DEPTH]; + ADCDriver* targetDriver = &ADCD1; + ADCConversionGroup adcConversionGroup = { + .circular = FALSE, + .num_channels = (uint16_t)(ADC_NUM_CHANNELS), + .cfgr = ADC_RESOLUTION, + }; + + palSetLineMode(pin, PAL_MODE_INPUT_ANALOG); + switch (pin) { + case B0: + adcConversionGroup.smpr[2] = ADC_SMPR2_SMP_AN15(ADC_SAMPLING_RATE); + adcConversionGroup.sqr[0] = ADC_SQR1_SQ1_N(ADC_CHANNEL_IN15); + sampleBuffer[0] = 0; + break; + case B1: + adcConversionGroup.smpr[2] = ADC_SMPR2_SMP_AN16(ADC_SAMPLING_RATE); + adcConversionGroup.sqr[0] = ADC_SQR1_SQ1_N(ADC_CHANNEL_IN16); + sampleBuffer[0] = 0; + break; + default: + return 0; + } + adcStart(targetDriver, &adcCfg); + if (adcConvert(targetDriver, &adcConversionGroup, &sampleBuffer[0], ADC_BUFFER_DEPTH) != MSG_OK) { + return 0; + } + + return *sampleBuffer; +} + +void keyboard_post_init_kb(void) { + // 1. The pin A5/B5 of the USB C interface in the left hand is connected to the pin A0 of MCU, + // A0 will be set to output and write high when keyboard initial. + // 2. The same pin in the right hand is connected to the pin B0 and B1 of MCU respectively, + // and the ADC function of B0 and B1 will be enabled when keyboard initial. + // 3. because the serial usart RXD and TXD is multiplexed on USB's D+ and D- in the right hand. + // So detect the voltage on the pin A5/B5 of the USB C interface by ADC, + // and disable USB connectivity when the ADC value exceeds 1000, + // to avoid affecting the serial usart communication between the left hand and the right hand. + if (is_keyboard_left()) { + setPinOutput(A0); + writePinHigh(A0); + } else { + if ((analogReadPin_my(B0) > 1000) || (analogReadPin_my(B1) > 1000)) { + setPinInput(A11); + setPinInput(A12); + } + } + + keyboard_post_init_user(); +} diff --git a/keyboards/keychron/q11/ansi_encoder/config.h b/keyboards/keychron/q11/ansi_encoder/config.h new file mode 100755 index 000000000000..08632f0ce726 --- /dev/null +++ b/keyboards/keychron/q11/ansi_encoder/config.h @@ -0,0 +1,20 @@ +/* Copyright 2023 @ Keychron(https://www.keychron.com) + * + * 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 + +/* Enable caps-lock LED */ +#define CAPS_LOCK_LED_INDEX 23 diff --git a/keyboards/keychron/q11/ansi_encoder/info.json b/keyboards/keychron/q11/ansi_encoder/info.json new file mode 100755 index 000000000000..50d1260a09cb --- /dev/null +++ b/keyboards/keychron/q11/ansi_encoder/info.json @@ -0,0 +1,166 @@ +{ + "keyboard_name": "Keychron Q11", + "manufacturer": "Keychron", + "url": "https://github.com/Keychron", + "maintainer": "lalalademaxiya1", + "bootloader": "stm32-dfu", + "bootmagic": { + "matrix": [0, 1] + }, + "features": { + "audio": false, + "backlight": false, + "bootmagic": true, + "command": false, + "console": false, + "dip_switch": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true, + "rgblight": false + }, + "diode_direction": "ROW2COL", + "encoder": { + "rotary": [ + {"pin_a": "B0", "pin_b": "B1"} + ] + }, + "matrix_pins": { + "cols": ["A7", "A6", "A5", "A4", "A3", "A2", "A1", "C15", null], + "rows": ["A13", "A14", "A15", "B3", "B4", "B5"] + }, + "processor": "STM32L432", + "rgb_matrix": { + "driver": "CKLED2001", + "split_count": [42, 47] + }, + "split": { + "enabled": true, + "encoder": { + "right": { + "rotary": [ + {"pin_a": "C14", "pin_b": "C15"} + ] + } + }, + "matrix_pins": { + "right": { + "cols": ["A8", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0"], + "rows": ["B5", "B4", "B3", "A15", "A14", "A13"] + } + }, + "transport": { + "protocol": "serial_usart", + "sync_matrix_state": false + } + }, + "usb": { + "vid": "0x3434", + "pid": "0x01E0", + "device_version": "1.0.0" + }, + "layouts": { + "LAYOUT_ansi_91": { + "layout": [ + {"matrix":[0,0], "x":0, "y":0}, + {"matrix":[0,1], "x":1.25, "y":0}, + {"matrix":[0,2], "x":2.25, "y":0}, + {"matrix":[0,3], "x":3.25, "y":0}, + {"matrix":[0,4], "x":4.25, "y":0}, + {"matrix":[0,5], "x":5.25, "y":0}, + {"matrix":[0,6], "x":6.25, "y":0}, + {"matrix":[0,7], "x":7.25, "y":0}, + {"matrix":[6,0], "x":8.25, "y":0}, + {"matrix":[6,1], "x":9.25, "y":0}, + {"matrix":[6,2], "x":10.25, "y":0}, + {"matrix":[6,3], "x":11.25, "y":0}, + {"matrix":[6,4], "x":12.25, "y":0}, + {"matrix":[6,5], "x":13.25, "y":0}, + {"matrix":[6,6], "x":14.25, "y":0}, + {"matrix":[6,7], "x":15.25, "y":0}, + {"matrix":[6,8], "x":16.5, "y":0}, + + {"matrix":[1,0], "x":0, "y":1.25}, + {"matrix":[1,1], "x":1.25, "y":1.25}, + {"matrix":[1,2], "x":2.25, "y":1.25}, + {"matrix":[1,3], "x":3.25, "y":1.25}, + {"matrix":[1,4], "x":4.25, "y":1.25}, + {"matrix":[1,5], "x":5.25, "y":1.25}, + {"matrix":[1,6], "x":6.25, "y":1.25}, + {"matrix":[1,7], "x":7.25, "y":1.25}, + {"matrix":[7,0], "x":8.25, "y":1.25}, + {"matrix":[7,1], "x":9.25, "y":1.25}, + {"matrix":[7,2], "x":10.25, "y":1.25}, + {"matrix":[7,3], "x":11.25, "y":1.25}, + {"matrix":[7,4], "x":12.25, "y":1.25}, + {"matrix":[7,5], "x":13.25, "y":1.25}, + {"matrix":[7,6], "x":14.25, "y":1.25, "w":2}, + {"matrix":[7,8], "x":16.5, "y":1.25}, + + {"matrix":[2,0], "x":0, "y":2.25}, + {"matrix":[2,1], "x":1.25, "y":2.25, "w":1.5}, + {"matrix":[2,2], "x":2.75, "y":2.25}, + {"matrix":[2,3], "x":3.75, "y":2.25}, + {"matrix":[2,4], "x":4.75, "y":2.25}, + {"matrix":[2,6], "x":5.75, "y":2.25}, + {"matrix":[2,7], "x":6.75, "y":2.25}, + {"matrix":[8,0], "x":7.75, "y":2.25}, + {"matrix":[8,1], "x":8.75, "y":2.25}, + {"matrix":[8,2], "x":9.75, "y":2.25}, + {"matrix":[8,3], "x":10.75, "y":2.25}, + {"matrix":[8,4], "x":11.75, "y":2.25}, + {"matrix":[8,5], "x":12.75, "y":2.25}, + {"matrix":[8,6], "x":13.75, "y":2.25}, + {"matrix":[8,7], "x":14.75, "y":2.25, "w":1.5}, + {"matrix":[8,8], "x":16.5, "y":2.25}, + + {"matrix":[3,0], "x":0, "y":3.25}, + {"matrix":[3,1], "x":1.25, "y":3.25, "w":1.75}, + {"matrix":[3,2], "x":3, "y":3.25}, + {"matrix":[3,3], "x":4, "y":3.25}, + {"matrix":[3,4], "x":5, "y":3.25}, + {"matrix":[3,5], "x":6, "y":3.25}, + {"matrix":[3,6], "x":7, "y":3.25}, + {"matrix":[9,0], "x":8, "y":3.25}, + {"matrix":[9,1], "x":9, "y":3.25}, + {"matrix":[9,2], "x":10, "y":3.25}, + {"matrix":[9,3], "x":11, "y":3.25}, + {"matrix":[9,4], "x":12, "y":3.25}, + {"matrix":[9,5], "x":13, "y":3.25}, + {"matrix":[9,7], "x":14, "y":3.25, "w":2.25}, + {"matrix":[9,8], "x":16.5, "y":3.25}, + + {"matrix":[4,0], "x":0, "y":4.25}, + {"matrix":[4,2], "x":1.25, "y":4.25, "w":2.25}, + {"matrix":[4,3], "x":3.5, "y":4.25}, + {"matrix":[4,4], "x":4.5, "y":4.25}, + {"matrix":[4,5], "x":5.5, "y":4.25}, + {"matrix":[4,6], "x":6.5, "y":4.25}, + {"matrix":[4,7], "x":7.5, "y":4.25}, + {"matrix":[10,0], "x":8.5, "y":4.25}, + {"matrix":[10,1], "x":9.5, "y":4.25}, + {"matrix":[10,2], "x":10.5, "y":4.25}, + {"matrix":[10,3], "x":11.5, "y":4.25}, + {"matrix":[10,4], "x":12.5, "y":4.25}, + {"matrix":[10,5], "x":13.5, "y":4.25, "w":1.75}, + {"matrix":[10,7], "x":15.5, "y":4.25}, + + {"matrix":[5,0], "x":0, "y":5.25}, + {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25}, + {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25}, + {"matrix":[5,3], "x":3.75, "y":5.25, "w":1.25}, + {"matrix":[5,4], "x":5, "y":5.25, "w":1.25}, + {"matrix":[5,6], "x":6.25, "y":5.25, "w":2.25}, + {"matrix":[11,1], "x":8.5, "y":5.25, "w":2.75}, + {"matrix":[11,2], "x":11.25, "y":5.25}, + {"matrix":[11,3], "x":12.25, "y":5.25}, + {"matrix":[11,4], "x":13.25, "y":5.25}, + {"matrix":[11,6], "x":14.5, "y":5.25}, + {"matrix":[11,7], "x":15.5, "y":5.25}, + {"matrix":[11,8], "x":16.5, "y":5.25} + ] + } + } +} diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q11/ansi_encoder/keymaps/default/keymap.c new file mode 100755 index 000000000000..b2c3ec24c0ab --- /dev/null +++ b/keyboards/keychron/q11/ansi_encoder/keymaps/default/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * 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 + +// clang-format off + +enum layers{ + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN +}; + +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_ansi_91( + KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE, + _______, KC_GRV, 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_PGUP, + _______, 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_PGDN, + _______, 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_HOME, + _______, 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_LCTL, KC_LOPT, KC_LCMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [MAC_FN] = LAYOUT_ansi_91( + RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [WIN_BASE] = LAYOUT_ansi_91( + KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE, + _______, KC_GRV, 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_PGUP, + _______, 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_PGDN, + _______, 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_HOME, + _______, 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_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_FN] = LAYOUT_ansi_91( + RGB_TOG, _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, + [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) } +}; +#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/default/rules.mk b/keyboards/keychron/q11/ansi_encoder/keymaps/default/rules.mk new file mode 100755 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/keychron/q11/ansi_encoder/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/keymap.c new file mode 100755 index 000000000000..710292232309 --- /dev/null +++ b/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/keymap.c @@ -0,0 +1,84 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * 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 "keychron_common.h" + +// clang-format off + +enum layers{ + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_ansi_91( + KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE, + MC_1, KC_GRV, 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_PGUP, + MC_2, 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_PGDN, + MC_3, 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_HOME, + MC_4, 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, + MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [MAC_FN] = LAYOUT_ansi_91( + RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [WIN_BASE] = LAYOUT_ansi_91( + KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE, + MC_1, KC_GRV, 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_PGUP, + MC_2, 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_PGDN, + MC_3, 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_HOME, + MC_4, 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, + MC_5, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_FN] = LAYOUT_ansi_91( + RGB_TOG, _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; + +#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI)} +}; +#endif // ENCODER_MAP_ENABLE + +// clang-format on + +void housekeeping_task_user(void) { + housekeeping_task_keychron(); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (!process_record_keychron(keycode, record)) { + return false; + } + + return true; +} diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/rules.mk new file mode 100755 index 000000000000..9cf1a9b56cba --- /dev/null +++ b/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/rules.mk @@ -0,0 +1,5 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes + +VPATH += keyboards/keychron/common +SRC += keychron_common.c diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q11/ansi_encoder/keymaps/via/keymap.c new file mode 100755 index 000000000000..7ba9886ef876 --- /dev/null +++ b/keyboards/keychron/q11/ansi_encoder/keymaps/via/keymap.c @@ -0,0 +1,72 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * 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 + +// clang-format off + +enum layers{ + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN +}; + +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_ansi_91( + KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE, + MC_1, KC_GRV, 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_PGUP, + MC_2, 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_PGDN, + MC_3, 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_HOME, + MC_4, 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, + MC_5, KC_LCTL, KC_LOPT, KC_LCMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [MAC_FN] = LAYOUT_ansi_91( + RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [WIN_BASE] = LAYOUT_ansi_91( + KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE, + MC_1, KC_GRV, 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_PGUP, + MC_2, 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_PGDN, + MC_3, 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_HOME, + MC_4, 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, + MC_5, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_FN] = LAYOUT_ansi_91( + RGB_TOG, _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; + +#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, + [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) } +}; +#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/via/rules.mk b/keyboards/keychron/q11/ansi_encoder/keymaps/via/rules.mk new file mode 100755 index 000000000000..f1adcab005e8 --- /dev/null +++ b/keyboards/keychron/q11/ansi_encoder/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/keychron/q11/ansi_encoder/rules.mk b/keyboards/keychron/q11/ansi_encoder/rules.mk new file mode 100755 index 000000000000..567ea30a2a8d --- /dev/null +++ b/keyboards/keychron/q11/ansi_encoder/rules.mk @@ -0,0 +1,9 @@ +# Build Options +# change yes to no to disable +# +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = embedded_flash +SERIAL_DRIVER = usart + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/keychron/q11/config.h b/keyboards/keychron/q11/config.h new file mode 100755 index 000000000000..604ec142b869 --- /dev/null +++ b/keyboards/keychron/q11/config.h @@ -0,0 +1,110 @@ +/* Copyright 2023 @ Keychron(https://www.keychron.com) + * + * 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 + +// Connects each switch in the dip switch to the GPIO pin of the MCU +#define DIP_SWITCH_PINS \ + { A8 } + +/* handedness */ +#define SPLIT_HAND_MATRIX_GRID A2, A15 +#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT + +#define MATRIX_MASKED // actual mask is defined by `matrix_mask` in `q11.c` + +/* RGB Matrix Configuration */ +#define DRIVER_COUNT 1 +#define DRIVER_ADDR_1 0b1110100 +#define DRIVER_1_LED_TOTAL 89 +#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL +#define SPLIT_TRANSPORT_MIRROR + +/* Increase I2C speed to 1000 KHz */ +#define I2C1_TIMINGR_PRESC 0U +#define I2C1_TIMINGR_SCLDEL 3U +#define I2C1_TIMINGR_SDADEL 0U +#define I2C1_TIMINGR_SCLH 15U +#define I2C1_TIMINGR_SCLL 51U + +#define CKLED2001_CURRENT_TUNE \ + { 0x80, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0x80, 0xFF, 0xFF } // 300mA + +/* EEPROM Driver Configuration */ +#define WEAR_LEVELING_LOGICAL_SIZE 2048 +#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2) + +/* Split Keyboard specific options. */ +#define SERIAL_USART_TX_PIN A9 // USART TX pin + +/* Encoder Configuration */ +#define ENCODER_DEFAULT_POS 0x3 + +/* Disable RGB lighting when PC is in suspend */ +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-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 + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define RGB_MATRIX_KEYPRESSES +// 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 diff --git a/keyboards/keychron/q11/halconf.h b/keyboards/keychron/q11/halconf.h new file mode 100755 index 000000000000..028285a1f3e1 --- /dev/null +++ b/keyboards/keychron/q11/halconf.h @@ -0,0 +1,23 @@ +/* Copyright 2020 QMK + * + * 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_I2C TRUE +#define HAL_USE_SERIAL TRUE +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/keychron/q11/mcuconf.h b/keyboards/keychron/q11/mcuconf.h new file mode 100755 index 000000000000..209b3f6fb576 --- /dev/null +++ b/keyboards/keychron/q11/mcuconf.h @@ -0,0 +1,28 @@ +/* Copyright 2020 QMK + * + * 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_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_SERIAL_USE_USART1 +#define STM32_SERIAL_USE_USART1 TRUE + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/keychron/q11/q11.c b/keyboards/keychron/q11/q11.c new file mode 100755 index 000000000000..8cfbb38fff0a --- /dev/null +++ b/keyboards/keychron/q11/q11.c @@ -0,0 +1,102 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * 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 "quantum.h" + +// Mask out handedness diode to prevent it +// from keeping the keyboard awake +// - just mirroring `KC_NO` in the `LAYOUT` +// macro to keep it simple +const matrix_row_t matrix_mask[] = { + 0b011111111, + 0b011111111, + 0b011111111, + 0b001111111, + 0b011111101, + 0b001011111, + 0b111111111, + 0b101111111, + 0b111111111, + 0b110111111, + 0b010111111, + 0b111011110, +}; + +#ifdef DIP_SWITCH_ENABLE +bool dip_switch_update_kb(uint8_t index, bool active) { + if (!dip_switch_update_user(index, active)) { + return false; + } + if (index == 0) { + default_layer_set(1UL << (active ? 0 : 2)); + } + return true; +} +#endif + +#if defined(RGB_MATRIX_ENABLE) && (defined(CAPS_LOCK_LED_INDEX) || defined(NUM_LOCK_LED_INDEX)) +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { + return false; + } + switch (keycode) { + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_set_color_all(0, 0, 0); + } break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + } break; + } + } + if (!rgb_matrix_is_enabled()) { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable(); + } + return false; + } + return true; +} + +bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { + if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { + return false; + } + // RGB_MATRIX_INDICATOR_SET_COLOR(index, red, green, blue); +# if defined(CAPS_LOCK_LED_INDEX) + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 255, 255, 255); + } else { + if (!rgb_matrix_get_flags()) { + RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 0, 0, 0); + } + } +# endif // CAPS_LOCK_LED_INDEX +# if defined(NUM_LOCK_LED_INDEX) + if (host_keyboard_led_state().num_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 255, 255, 255); + } else { + if (!rgb_matrix_get_flags()) { + RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 0, 0, 0); + } + } +# endif // NUM_LOCK_LED_INDEX + return true; +} +#endif diff --git a/keyboards/keychron/q11/readme.md b/keyboards/keychron/q11/readme.md new file mode 100644 index 000000000000..3dad920e04e3 --- /dev/null +++ b/keyboards/keychron/q11/readme.md @@ -0,0 +1,21 @@ +# Keychron Q11 + +![Keychron Q11](https://i.imgur.com/FPTNqKj.jpg) + +A customizable 75% split keyboard. + +* Keyboard Maintainer: [Keychron](https://github.com/keychron) +* Hardware Supported: Keychron Q11 +* Hardware Availability: [Keychron Q11 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q11-qmk-custom-mechanical-keyboard) + +Make example for this keyboard (after setting up your build environment): + + make keychron/q11/ansi_encoder:default + +Flashing example for this keyboard: + + make keychron/q11/ansi_encoder:default:flash + +**Reset Key**: Hold down the key located at *K01*, which programmed as *Esc* while plugging in the keyboard. + +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). From 4ba3fdfad2bd52e2807d18606db1c12192304fd5 Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Fri, 7 Apr 2023 12:27:51 +0800 Subject: [PATCH 45/73] Move a_dux to data-driven (#20043) --- keyboards/a_dux/a_dux.c | 25 +++--------- keyboards/a_dux/config.h | 26 +++---------- keyboards/a_dux/info.json | 82 ++++++++++++++++++++------------------- keyboards/a_dux/rules.mk | 15 +------ 4 files changed, 54 insertions(+), 94 deletions(-) diff --git a/keyboards/a_dux/a_dux.c b/keyboards/a_dux/a_dux.c index 16c3406f4878..e4d831f91417 100644 --- a/keyboards/a_dux/a_dux.c +++ b/keyboards/a_dux/a_dux.c @@ -1,22 +1,9 @@ -/* Copyright 2018-2020 - * ENDO Katsuhiro - * David Philip Barr <@davidphilipbarr> - * Pierre Chevalier - * @filterpaper - * - * 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 . - */ +// Copyright 2018-2020 +// ENDO Katsuhiro +// David Philip Barr <@davidphilipbarr> +// Pierre Chevalier +// SPDX-License-Identifier: GPL-2.0+ + #include "quantum.h" #ifdef SWAP_HANDS_ENABLE diff --git a/keyboards/a_dux/config.h b/keyboards/a_dux/config.h index b929e02b8f2b..35cf8d41514d 100644 --- a/keyboards/a_dux/config.h +++ b/keyboards/a_dux/config.h @@ -1,25 +1,9 @@ -/* Copyright 2018-2020 ENDO Katsuhiro David Philip Barr <@davidphilipbarr> Pierre Chevalier - -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 . -*/ +// Copyright 2018-2020 +// ENDO Katsuhiro +// David Philip Barr <@davidphilipbarr> +// Pierre Chevalier +// SPDX-License-Identifier: GPL-2.0+ #pragma once -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE - -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - #define EE_HANDS diff --git a/keyboards/a_dux/info.json b/keyboards/a_dux/info.json index 29259a180c13..7392adda0b98 100644 --- a/keyboards/a_dux/info.json +++ b/keyboards/a_dux/info.json @@ -8,8 +8,13 @@ "pid": "0x3939", "device_version": "0.0.1" }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu", + "development_board": "promicro", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "unicode": true + }, "matrix_pins": { "direct": [ ["C6", "D2", "F7", "B2", "F4"], @@ -19,6 +24,7 @@ ] }, "split": { + "enabled": true, "soft_serial_pin": "D1", "bootmagic": { "matrix": [4, 4] @@ -41,47 +47,43 @@ "layouts": { "LAYOUT_split_3x5_2": { "layout": [ - {"x": 0, "y": 1.33, "matrix": [0, 0]}, - {"x": 1, "y": 0.31, "matrix": [0, 1]}, - {"x": 2, "y": 0, "matrix": [0, 2]}, - {"x": 3, "y": 0.28, "matrix": [0, 3]}, - {"x": 4, "y": 0.42, "matrix": [0, 4]}, - - {"x": 8, "y": 0.42, "matrix": [4, 0]}, - {"x": 9, "y": 0.28, "matrix": [4, 1]}, - {"x": 10, "y": 0, "matrix": [4, 2]}, - {"x": 11, "y": 0.31, "matrix": [4, 3]}, - {"x": 12, "y": 1.33, "matrix": [4, 4]}, - - {"x": 0, "y": 2.33, "matrix": [1, 0]}, - {"x": 1, "y": 1.31, "matrix": [1, 1]}, - {"x": 2, "y": 1, "matrix": [1, 2]}, - {"x": 3, "y": 1.28, "matrix": [1, 3]}, - {"x": 4, "y": 1.42, "matrix": [1, 4]}, - - {"x": 8, "y": 1.42, "matrix": [5, 0]}, - {"x": 9, "y": 1.28, "matrix": [5, 1]}, - {"x": 10, "y": 1, "matrix": [5, 2]}, - {"x": 11, "y": 1.31, "matrix": [5, 3]}, - {"x": 12, "y": 2.33, "matrix": [5, 4]}, - - {"x": 0, "y": 3.33, "matrix": [2, 0]}, - {"x": 1, "y": 2.31, "matrix": [2, 1]}, - {"x": 2, "y": 2, "matrix": [2, 2]}, - {"x": 3, "y": 2.28, "matrix": [2, 3]}, - {"x": 4, "y": 2.42, "matrix": [2, 4]}, + { "label": "L01", "matrix": [0, 0], "x": 0, "y": 1.33 }, + { "label": "L02", "matrix": [0, 1], "x": 1, "y": 0.31 }, + { "label": "L03", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "L04", "matrix": [0, 3], "x": 3, "y": 0.28 }, + { "label": "L05", "matrix": [0, 4], "x": 4, "y": 0.42 }, + { "label": "R01", "matrix": [4, 0], "x": 8, "y": 0.42 }, + { "label": "R02", "matrix": [4, 1], "x": 9, "y": 0.28 }, + { "label": "R03", "matrix": [4, 2], "x": 10, "y": 0 }, + { "label": "R04", "matrix": [4, 3], "x": 11, "y": 0.31 }, + { "label": "R05", "matrix": [4, 4], "x": 12, "y": 1.33 }, - {"x": 8, "y": 2.42, "matrix": [6, 0]}, - {"x": 9, "y": 2.28, "matrix": [6, 1]}, - {"x": 10, "y": 2, "matrix": [6, 2]}, - {"x": 11, "y": 2.31, "matrix": [6, 3]}, - {"x": 12, "y": 3.33, "matrix": [6, 4]}, + { "label": "L06", "matrix": [1, 0], "x": 0, "y": 2.33 }, + { "label": "L07", "matrix": [1, 1], "x": 1, "y": 1.31 }, + { "label": "L08", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "L09", "matrix": [1, 3], "x": 3, "y": 1.28 }, + { "label": "L10", "matrix": [1, 4], "x": 4, "y": 1.42 }, + { "label": "R06", "matrix": [5, 0], "x": 8, "y": 1.42 }, + { "label": "R07", "matrix": [5, 1], "x": 9, "y": 1.28 }, + { "label": "R08", "matrix": [5, 2], "x": 10, "y": 1 }, + { "label": "R09", "matrix": [5, 3], "x": 11, "y": 1.31 }, + { "label": "R10", "matrix": [5, 4], "x": 12, "y": 2.33 }, - {"x": 4, "y": 3.75, "matrix": [3, 0]}, - {"x": 5, "y": 4, "matrix": [3, 1]}, + { "label": "L11", "matrix": [2, 0], "x": 0, "y": 3.33 }, + { "label": "L12", "matrix": [2, 1], "x": 1, "y": 2.31 }, + { "label": "L13", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "L14", "matrix": [2, 3], "x": 3, "y": 2.28 }, + { "label": "L15", "matrix": [2, 4], "x": 4, "y": 2.42 }, + { "label": "R11", "matrix": [6, 0], "x": 8, "y": 2.42 }, + { "label": "R12", "matrix": [6, 1], "x": 9, "y": 2.28 }, + { "label": "R13", "matrix": [6, 2], "x": 10, "y": 2 }, + { "label": "R14", "matrix": [6, 3], "x": 11, "y": 2.31 }, + { "label": "R15", "matrix": [6, 4], "x": 12, "y": 3.33 }, - {"x": 7, "y": 4, "matrix": [7, 0]}, - {"x": 8, "y": 3.75, "matrix": [7, 1]} + { "label": "L16", "matrix": [3, 0], "x": 4, "y": 3.75 }, + { "label": "L17", "matrix": [3, 1], "x": 5, "y": 4 }, + { "label": "R16", "matrix": [7, 0], "x": 7, "y": 4 }, + { "label": "R17", "matrix": [7, 1], "x": 8, "y": 3.75 } ] } } diff --git a/keyboards/a_dux/rules.mk b/keyboards/a_dux/rules.mk index 935483d83925..6e7633bfe015 100644 --- a/keyboards/a_dux/rules.mk +++ b/keyboards/a_dux/rules.mk @@ -1,14 +1 @@ -# 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 -UNICODE_ENABLE = yes # Unicode -AUDIO_ENABLE = no # Audio output -SPLIT_KEYBOARD = yes # Use shared split_common code +# This file intentionally left blank From 2e766a9c7a0888a96ed9108f09a085f4298af0b3 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Fri, 7 Apr 2023 16:37:06 +1000 Subject: [PATCH 46/73] Add Discord webhook at end of each CI run. (#20355) --- .github/workflows/ci_builds.yml | 12 +++++-- lib/python/qmk/cli/format/python.py | 2 +- util/ci/discord-results.py | 49 +++++++++++++++++++++++++++++ util/ci/requirements.txt | 1 + 4 files changed, 61 insertions(+), 3 deletions(-) create mode 100755 util/ci/discord-results.py create mode 100644 util/ci/requirements.txt diff --git a/.github/workflows/ci_builds.yml b/.github/workflows/ci_builds.yml index ce2d0b509e7b..366b5e0ddee8 100644 --- a/.github/workflows/ci_builds.yml +++ b/.github/workflows/ci_builds.yml @@ -10,12 +10,11 @@ on: jobs: ci_builds: + if: github.repository == 'qmk/qmk_firmware' name: "CI Build" runs-on: self-hosted timeout-minutes: 1380 - if: github.repository == 'qmk/qmk_firmware' - strategy: fail-fast: false matrix: @@ -58,3 +57,12 @@ jobs: *.hex *.uf2 .build/failed.* + + - name: 'CI Discord Notification' + if: always() + working-directory: util/ci/ + env: + DISCORD_WEBHOOK: ${{ secrets.CI_DISCORD_WEBHOOK }} + run: | + python3 -m pip install -r requirements.txt + python3 ./discord-results.py --branch ${{ matrix.branch }} --keymap ${{ matrix.keymap }} --url ${{ env.GITHUB_SERVER_URL }}/${{ env.GITHUB_REPOSITORY }}/actions/runs/${{ env.GITHUB_RUN_ID }} diff --git a/lib/python/qmk/cli/format/python.py b/lib/python/qmk/cli/format/python.py index 008622cac163..e7b545109f20 100755 --- a/lib/python/qmk/cli/format/python.py +++ b/lib/python/qmk/cli/format/python.py @@ -7,7 +7,7 @@ from qmk.path import normpath py_file_suffixes = ('py',) -py_dirs = ['lib/python'] +py_dirs = ['lib/python', 'util/ci'] def yapf_run(files): diff --git a/util/ci/discord-results.py b/util/ci/discord-results.py new file mode 100755 index 000000000000..0c09a4213a1a --- /dev/null +++ b/util/ci/discord-results.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 + +import argparse +import os +import re +import sys +from pathlib import Path +from discord_webhook import DiscordWebhook, DiscordEmbed + +parser = argparse.ArgumentParser(prog='discord-results.py', description='Sends a Discord webhook notification at the end of a CI run.') +parser.add_argument('-b', '--branch') +parser.add_argument('-k', '--keymap') +parser.add_argument('-u', '--url') +args = parser.parse_args() + +qmk_dir = Path(__file__).resolve().parents[2].resolve() + +keyboard_re = re.compile(r'CI Metadata: KEYBOARD=(.*)$', re.MULTILINE) +keymap_re = re.compile(r'CI Metadata: KEYMAP=(.*)$', re.MULTILINE) + +successful_builds = sum([len(list(qmk_dir.glob(f'*.{extension}'))) for extension in ['uf2', 'bin', 'hex']]) +failures = list(sorted([f.resolve() for f in (qmk_dir / '.build/').glob('failed.log.*')])) +failed_builds = [] +for f in failures: + with open(f) as fh: + data = fh.read() + kb = keyboard_re.search(data).group(1) + km = keymap_re.search(data).group(1) + failed_builds.append(f'{kb}:{km}') + +webhook = DiscordWebhook(url=os.getenv('DISCORD_WEBHOOK'), username="QMK GitHub CI") +if len(failed_builds) > 0: + failstr = '' + for f in failed_builds: + if len(failstr) >= 1800: + failstr += '<>' + break + failstr += f'{f}\n' + + embed = DiscordEmbed(title=f':infinity: CI Build Failure ({args.branch}, {args.keymap})', description=f'**{successful_builds}** builds succeeded, **{len(failed_builds)}** builds failed:```{failstr}```', color='ff9999') +else: + embed = DiscordEmbed(title=f':infinity: CI Build Success ({args.branch}, {args.keymap})', description=f'**{successful_builds}** builds succeeded.', color='99ff99') + +embed.add_embed_field(name='Build Target', value=f'[**{args.branch}**](https://github.com/qmk/qmk_firmware/tree/{args.branch}) / **{args.keymap}** keymap') +embed.add_embed_field(name='Workflow Run', value=f'[**Link**]({args.url})') +embed.set_timestamp() + +webhook.add_embed(embed) +webhook.execute() diff --git a/util/ci/requirements.txt b/util/ci/requirements.txt new file mode 100644 index 000000000000..3196568e1a7c --- /dev/null +++ b/util/ci/requirements.txt @@ -0,0 +1 @@ +discord-webhook From df7b56e0ea91adbb04e19a7e904c062bbd46a79b Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Fri, 7 Apr 2023 18:38:16 +1000 Subject: [PATCH 47/73] Fixup CI build variables. (#20357) --- .github/workflows/ci_builds.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_builds.yml b/.github/workflows/ci_builds.yml index 366b5e0ddee8..e101b31c7cbc 100644 --- a/.github/workflows/ci_builds.yml +++ b/.github/workflows/ci_builds.yml @@ -65,4 +65,4 @@ jobs: DISCORD_WEBHOOK: ${{ secrets.CI_DISCORD_WEBHOOK }} run: | python3 -m pip install -r requirements.txt - python3 ./discord-results.py --branch ${{ matrix.branch }} --keymap ${{ matrix.keymap }} --url ${{ env.GITHUB_SERVER_URL }}/${{ env.GITHUB_REPOSITORY }}/actions/runs/${{ env.GITHUB_RUN_ID }} + python3 ./discord-results.py --branch ${{ matrix.branch }} --keymap ${{ matrix.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} From e9b36bebb2b6e4fa3c10da8b7b072f766dce49a5 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 7 Apr 2023 14:07:59 +0100 Subject: [PATCH 48/73] Avoid generating empty ENCODER_RESOLUTION (#20179) --- lib/python/qmk/cli/generate/config_h.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/python/qmk/cli/generate/config_h.py b/lib/python/qmk/cli/generate/config_h.py index c256ec453101..64d4db6ffe14 100755 --- a/lib/python/qmk/cli/generate/config_h.py +++ b/lib/python/qmk/cli/generate/config_h.py @@ -119,7 +119,9 @@ def generate_encoder_config(encoder_json, config_h_lines, postfix=''): config_h_lines.append(generate_define(f'ENCODERS_PAD_B{postfix}', f'{{ {", ".join(b_pads)} }}')) if None in resolutions: - cli.log.debug("Unable to generate ENCODER_RESOLUTION configuration") + cli.log.debug(f"Unable to generate ENCODER_RESOLUTION{postfix} configuration") + elif len(resolutions) == 0: + cli.log.debug(f"Skipping ENCODER_RESOLUTION{postfix} configuration") elif len(set(resolutions)) == 1: config_h_lines.append(generate_define(f'ENCODER_RESOLUTION{postfix}', resolutions[0])) else: From a5e68e5f748a98b57bd2865112f5e0caa46df255 Mon Sep 17 00:00:00 2001 From: Duncan Sutherland <75046609+dunk2k@users.noreply.github.com> Date: Fri, 7 Apr 2023 23:11:56 +0100 Subject: [PATCH 49/73] Convertors documentation: Removed duplicate table entry (#20360) --- docs/feature_converters.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/feature_converters.md b/docs/feature_converters.md index 9baac14e973e..ec1f3915ee6a 100644 --- a/docs/feature_converters.md +++ b/docs/feature_converters.md @@ -17,7 +17,6 @@ Currently the following converters are available: | `promicro` | `bit_c_pro` | | `promicro` | `stemcell` | | `promicro` | `bonsai_c4` | -| `promicro` | `elite_pi` | | `promicro` | `rp2040_ce` | | `promicro` | `elite_pi` | | `promicro` | `helios` | From 2c375e64785f3d69a14d7a3e02c041d774d1d75b Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Fri, 7 Apr 2023 17:59:13 -0700 Subject: [PATCH 50/73] [Keyboard] Add audio support to Adafruit MacroPad RP2040 (#20353) --- keyboards/adafruit/macropad/config.h | 11 +++++--- keyboards/adafruit/macropad/halconf.h | 3 +++ .../macropad/keymaps/default/keymap.c | 13 +++++++--- .../adafruit/macropad/keymaps/via/keymap.c | 5 ++-- keyboards/adafruit/macropad/macropad.c | 25 +++++++++++++++++++ keyboards/adafruit/macropad/mcuconf.h | 3 +++ keyboards/adafruit/macropad/rules.mk | 4 +-- 7 files changed, 53 insertions(+), 11 deletions(-) diff --git a/keyboards/adafruit/macropad/config.h b/keyboards/adafruit/macropad/config.h index c493c487e385..af72251dac02 100644 --- a/keyboards/adafruit/macropad/config.h +++ b/keyboards/adafruit/macropad/config.h @@ -42,9 +42,14 @@ #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP13 #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U -/* Audio (Unsupported for now)*/ -// #define AUDIO_PIN GP16 -// #define SPEAKER_SHUTDOWN GP14 +/* Audio */ +#define AUDIO_PIN GP16 +#define AUDIO_PWM_DRIVER PWMD0 +#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_A +#define AUDIO_INIT_DELAY +#define AUDIO_CLICKY + +#define SPEAKER_SHUTDOWN GP14 #ifdef RGB_MATRIX_ENABLE diff --git a/keyboards/adafruit/macropad/halconf.h b/keyboards/adafruit/macropad/halconf.h index 6cd66fd52077..2e3be29bbf07 100644 --- a/keyboards/adafruit/macropad/halconf.h +++ b/keyboards/adafruit/macropad/halconf.h @@ -26,3 +26,6 @@ #undef SPI_SELECT_MODE #define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#undef HAL_USE_PWM +#define HAL_USE_PWM TRUE diff --git a/keyboards/adafruit/macropad/keymaps/default/keymap.c b/keyboards/adafruit/macropad/keymaps/default/keymap.c index 34989ea0b60e..808b202df40b 100644 --- a/keyboards/adafruit/macropad/keymaps/default/keymap.c +++ b/keyboards/adafruit/macropad/keymaps/default/keymap.c @@ -18,17 +18,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( - KC_MUTE, + LT(1,KC_MUTE), KC_ENT, KC_0, KC_BSPC, KC_7, KC_8, KC_9, KC_4, KC_5, KC_6, KC_1, KC_2, KC_3 - ) + ), + [1] = LAYOUT( + _______, + CK_TOGG, AU_TOGG, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), }; #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(_______, _______) }, }; #endif @@ -111,4 +119,3 @@ bool oled_task_user(void) { } #endif - diff --git a/keyboards/adafruit/macropad/keymaps/via/keymap.c b/keyboards/adafruit/macropad/keymaps/via/keymap.c index 6ef3d3e29ddc..80efd80f2d14 100644 --- a/keyboards/adafruit/macropad/keymaps/via/keymap.c +++ b/keyboards/adafruit/macropad/keymaps/via/keymap.c @@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( - KC_MUTE, + LT(1,KC_MUTE), KC_ENT, KC_0, KC_BSPC, KC_7, KC_8, KC_9, KC_4, KC_5, KC_6, @@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [1] = LAYOUT( _______, - _______, _______, _______, + CK_TOGG, AU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -135,4 +135,3 @@ bool oled_task_user(void) { } #endif - diff --git a/keyboards/adafruit/macropad/macropad.c b/keyboards/adafruit/macropad/macropad.c index 5cffdc6c97de..398d0bbdfda2 100644 --- a/keyboards/adafruit/macropad/macropad.c +++ b/keyboards/adafruit/macropad/macropad.c @@ -41,6 +41,31 @@ led_config_t g_led_config = { { #endif +#ifdef AUDIO_ENABLE +void keyboard_pre_init_kb(void) { + // ensure pin is set and enabled pre-audio init + setPinOutput(SPEAKER_SHUTDOWN); + writePinHigh(SPEAKER_SHUTDOWN); + keyboard_pre_init_user(); +} + +void keyboard_post_init_kb(void) { + // set pin based on active status + writePin(SPEAKER_SHUTDOWN, audio_is_on()); + keyboard_post_init_user(); +} + +void audio_on_user(void) { + writePinHigh(SPEAKER_SHUTDOWN); +} + +void audio_off_user(void) { + // needs a delay or it runs right after play note. + wait_ms(200); + writePinLow(SPEAKER_SHUTDOWN); +} +#endif + #ifdef ENCODER_ENABLE bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } diff --git a/keyboards/adafruit/macropad/mcuconf.h b/keyboards/adafruit/macropad/mcuconf.h index 198a2eea6973..a833fb2af81f 100644 --- a/keyboards/adafruit/macropad/mcuconf.h +++ b/keyboards/adafruit/macropad/mcuconf.h @@ -20,3 +20,6 @@ #undef RP_SPI_USE_SPI1 #define RP_SPI_USE_SPI1 TRUE + +#undef RP_PWM_USE_PWM0 +#define RP_PWM_USE_PWM0 TRUE diff --git a/keyboards/adafruit/macropad/rules.mk b/keyboards/adafruit/macropad/rules.mk index 0d1e17dde1b6..fd1ecf7cbcd8 100644 --- a/keyboards/adafruit/macropad/rules.mk +++ b/keyboards/adafruit/macropad/rules.mk @@ -9,8 +9,8 @@ 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 -# AUDIO_DRIVER = pwm_software +AUDIO_ENABLE = yes # Audio output +AUDIO_DRIVER = pwm_hardware ENCODER_ENABLE = yes RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 From 6e0acf05482866ed0b092e5ca6cb19d96153ee3b Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Sun, 9 Apr 2023 17:41:30 +0100 Subject: [PATCH 51/73] Add autocomplete to generate-compilation-database (#20387) --- lib/python/qmk/cli/generate/compilation_database.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/python/qmk/cli/generate/compilation_database.py b/lib/python/qmk/cli/generate/compilation_database.py index 7ac0f740fe92..5e1a18a69b27 100755 --- a/lib/python/qmk/cli/generate/compilation_database.py +++ b/lib/python/qmk/cli/generate/compilation_database.py @@ -15,6 +15,8 @@ from qmk.commands import create_make_command from qmk.constants import QMK_FIRMWARE from qmk.decorators import automagic_keyboard, automagic_keymap +from qmk.keyboard import keyboard_completer, keyboard_folder +from qmk.keymap import keymap_completer @lru_cache(maxsize=10) @@ -74,8 +76,8 @@ def parse_make_n(f: Iterator[str]) -> List[Dict[str, str]]: return records -@cli.argument('-kb', '--keyboard', help='The keyboard to build a firmware for. Ignored when a configurator export is supplied.') -@cli.argument('-km', '--keymap', help='The keymap to build a firmware for. Ignored when a configurator export is supplied.') +@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='The keyboard\'s name') +@cli.argument('-km', '--keymap', completer=keymap_completer, help='The keymap\'s name') @cli.subcommand('Create a compilation database.') @automagic_keyboard @automagic_keymap @@ -104,7 +106,7 @@ def generate_compilation_database(cli: MILC) -> Union[bool, int]: if not command: cli.log.error('You must supply both `--keyboard` and `--keymap`, or be in a directory for a keyboard or keymap.') - cli.echo('usage: qmk compiledb [-kb KEYBOARD] [-km KEYMAP]') + cli.echo('usage: qmk generate-compilation-database [-kb KEYBOARD] [-km KEYMAP]') return False # remove any environment variable overrides which could trip us up From 9132c643899a3f6bed984b55680c7496e054f3a9 Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 10 Apr 2023 09:32:40 +1200 Subject: [PATCH 52/73] Add numpad 0-9 to second layer, update keycodes for QMK 0.17.5, fix layout (#20375) --- .../tada68/keymaps/tokyovigilante/keymap.c | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/keyboards/tada68/keymaps/tokyovigilante/keymap.c b/keyboards/tada68/keymaps/tokyovigilante/keymap.c index 80caaa442977..1b4ccb7c0363 100644 --- a/keyboards/tada68/keymaps/tokyovigilante/keymap.c +++ b/keyboards/tada68/keymaps/tokyovigilante/keymap.c @@ -1,7 +1,21 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_ansi(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_GRV, 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_DEL, 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_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - [1] = LAYOUT_ansi(KC_TRNS, 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_INS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, BL_DOWN,BL_TOGG, BL_UP, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R), - [2] = LAYOUT_ansi(KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO) + [0] = LAYOUT_ansi(QK_GESC, 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_DEL, + 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_PGUP, + 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_PGDN, + 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_GRV, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_HOME, MO(1), KC_END, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_ansi(KC_TRNS, 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_TRNS, KC_TRNS, + KC_TRNS, KC_P7, KC_P8, KC_P9, KC_NUM, BL_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_TRNS, KC_P4, KC_P5, KC_P6, KC_TRNS, BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, + KC_TRNS, KC_P1, KC_P2, KC_P3, KC_TRNS, BL_DOWN, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_RALT, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT), + + [2] = LAYOUT_ansi(KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO) }; From fb706f42a2f02655f4a231edf6661ed23e70321d Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Mon, 10 Apr 2023 07:38:09 +1000 Subject: [PATCH 53/73] Run CI builds for each push, limit queued workflow depth to 1. (#20362) --- .github/workflows/ci_builds.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci_builds.yml b/.github/workflows/ci_builds.yml index e101b31c7cbc..372dcb8dd7c5 100644 --- a/.github/workflows/ci_builds.yml +++ b/.github/workflows/ci_builds.yml @@ -4,9 +4,16 @@ permissions: contents: read on: + push: + branches: [master, develop] workflow_dispatch: - schedule: - - cron: '0 0,12 * * *' + inputs: + branch: + type: choice + description: 'Branch to build' + options: [master, develop] + +concurrency: ci_build-${{ github.event.inputs.branch || github.ref_name }} jobs: ci_builds: @@ -18,7 +25,6 @@ jobs: strategy: fail-fast: false matrix: - branch: [master, develop] keymap: [default, via] container: qmkfm/qmk_cli @@ -30,7 +36,7 @@ jobs: - uses: actions/checkout@v3 with: submodules: recursive - ref: ${{ matrix.branch }} + ref: ${{ github.event.inputs.branch || github.ref }} - name: Install dependencies run: pip3 install -r requirements.txt @@ -50,7 +56,7 @@ jobs: uses: actions/upload-artifact@v3 if: always() with: - name: artifacts-${{ matrix.branch }}-${{ matrix.keymap }} + name: artifacts-${{ github.event.inputs.branch || github.ref_name }}-${{ matrix.keymap }} if-no-files-found: ignore path: | *.bin @@ -65,4 +71,4 @@ jobs: DISCORD_WEBHOOK: ${{ secrets.CI_DISCORD_WEBHOOK }} run: | python3 -m pip install -r requirements.txt - python3 ./discord-results.py --branch ${{ matrix.branch }} --keymap ${{ matrix.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + python3 ./discord-results.py --branch ${{ github.event.inputs.branch || github.ref_name }} --keymap ${{ matrix.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} From bc6db2823c667c3dcf84181427900154d0000730 Mon Sep 17 00:00:00 2001 From: Vertex-kb <102476474+Vertex-kb@users.noreply.github.com> Date: Tue, 11 Apr 2023 03:32:16 +0800 Subject: [PATCH 54/73] [Keyboard] Update angle65 VID/PID (#20401) --- keyboards/vertex/angle65/info.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/vertex/angle65/info.json b/keyboards/vertex/angle65/info.json index cb017b7f8163..a781a8aa3730 100644 --- a/keyboards/vertex/angle65/info.json +++ b/keyboards/vertex/angle65/info.json @@ -4,8 +4,8 @@ "url": "", "maintainer": "EasonQian1, Vertex-kb", "usb": { - "vid": "0x7374", - "pid": "0x9770", + "vid": "0x9954", + "pid": "0x9970", "device_version": "0.0.1" }, "processor": "STM32F103", From ed72c423be1af8672fba5177c7e0ff549acce328 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 23:49:53 +0100 Subject: [PATCH 55/73] Bump anothrNick/github-tag-action from 1.61.0 to 1.62.0 (#20407) Bumps [anothrNick/github-tag-action](https://github.com/anothrNick/github-tag-action) from 1.61.0 to 1.62.0. - [Release notes](https://github.com/anothrNick/github-tag-action/releases) - [Commits](https://github.com/anothrNick/github-tag-action/compare/1.61.0...1.62.0) --- updated-dependencies: - dependency-name: anothrNick/github-tag-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/auto_tag.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto_tag.yml b/.github/workflows/auto_tag.yml index 07490a046456..c3dc7f7d4551 100644 --- a/.github/workflows/auto_tag.yml +++ b/.github/workflows/auto_tag.yml @@ -31,7 +31,7 @@ jobs: fetch-depth: 0 - name: Bump version and push tag - uses: anothrNick/github-tag-action@1.61.0 + uses: anothrNick/github-tag-action@1.62.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} DEFAULT_BUMP: 'patch' From 38700f7e3fb6806a263c95d39aa1719d8146288c Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Tue, 11 Apr 2023 02:43:45 +0100 Subject: [PATCH 56/73] Reject info.json at keymap level (#20408) --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index e36b9ae1307d..5fdf770d31cb 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,9 @@ quantum/version.h *.qmk *.uf2 +# DD config at wrong location +/keyboards/**/keymaps/*/info.json + # Old-style QMK Makefiles /keyboards/**/Makefile From 26b35a54cf5f0c6ddefb42c9c2ae1a02ab11f99d Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 11 Apr 2023 11:31:56 -0700 Subject: [PATCH 57/73] 4pplet/aekiso60 Layout Macro Conversion and Additions (#20399) * add matrix_diagram.md Adds `matrix_diagram.md` to the `4pplet/aekiso60` directory, and removes the diagrams from the keyboard revision header files. * info.json: apply friendly formatting * move matrix data to info.json * create keyboard-level info.json * add LAYOUT_60_iso_tsangan * enable Community Layout support --- keyboards/4pplet/aekiso60/info.json | 155 ++++++++++++++++++++ keyboards/4pplet/aekiso60/matrix_diagram.md | 33 +++++ keyboards/4pplet/aekiso60/rev_a/info.json | 80 +--------- keyboards/4pplet/aekiso60/rev_a/rev_a.c | 1 - keyboards/4pplet/aekiso60/rev_a/rev_a.h | 31 ---- keyboards/4pplet/aekiso60/rev_b/info.json | 80 +--------- keyboards/4pplet/aekiso60/rev_b/rev_b.c | 19 --- keyboards/4pplet/aekiso60/rev_b/rev_b.h | 48 ------ 8 files changed, 190 insertions(+), 257 deletions(-) create mode 100644 keyboards/4pplet/aekiso60/info.json create mode 100644 keyboards/4pplet/aekiso60/matrix_diagram.md delete mode 100644 keyboards/4pplet/aekiso60/rev_a/rev_a.c delete mode 100644 keyboards/4pplet/aekiso60/rev_a/rev_a.h delete mode 100644 keyboards/4pplet/aekiso60/rev_b/rev_b.c delete mode 100644 keyboards/4pplet/aekiso60/rev_b/rev_b.h diff --git a/keyboards/4pplet/aekiso60/info.json b/keyboards/4pplet/aekiso60/info.json new file mode 100644 index 000000000000..c402031c992f --- /dev/null +++ b/keyboards/4pplet/aekiso60/info.json @@ -0,0 +1,155 @@ +{ + "manufacturer": "4pplet", + "url": "", + "maintainer": "4pplet", + "usb": { + "vid": "0x4444" + }, + "community_layouts": [ + "60_iso_tsangan" + ], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0, "w": 1.25}, + {"label": "1", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5.25, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6.25, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7.25, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8.25, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9.25, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10.25, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11.25, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12.25, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13.25, "y": 0, "w": 1.75}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.75}, + {"label": "Q", "matrix": [1, 1], "x": 1.75, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.75, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.75, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.75, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.75, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.75, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.75, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.75, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.75, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.75, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.75, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.75, "y": 1}, + + {"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 2, "w": 2}, + {"label": "A", "matrix": [2, 1], "x": 2, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 3, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 4, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 5, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 6, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 7, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 8, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 9, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 10, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 11, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 12, "y": 2}, + {"label": "#", "matrix": [2, 12], "x": 13, "y": 2}, + {"label": "Enter", "matrix": [1, 13], "x": 14, "y": 1, "h": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"label": "\\", "matrix": [3, 1], "x": 1.5, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.5, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.5, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.5, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.5, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.5, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.5, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.5, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.5, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.5, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.5, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.5, "y": 3, "w": 1.5}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 3], "x": 2.75, "y": 4, "w": 1.5}, + {"label": "\u25bd", "matrix": [4, 4], "x": 4.25, "y": 4, "w": 2.75}, + {"label": "Space", "matrix": [4, 5], "x": 7, "y": 4}, + {"label": "\u25bd", "matrix": [4, 6], "x": 8, "y": 4, "w": 2.75}, + {"label": "Alt", "matrix": [4, 8], "x": 10.75, "y": 4, "w": 1.5}, + {"label": "GUI", "matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 11], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0, "w": 1.25}, + {"label": "1", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5.25, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6.25, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7.25, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8.25, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9.25, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10.25, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11.25, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12.25, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13.25, "y": 0, "w": 1.75}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.75}, + {"label": "Q", "matrix": [1, 1], "x": 1.75, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.75, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.75, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.75, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.75, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.75, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.75, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.75, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.75, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.75, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.75, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.75, "y": 1}, + + {"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 2, "w": 2}, + {"label": "A", "matrix": [2, 1], "x": 2, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 3, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 4, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 5, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 6, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 7, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 8, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 9, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 10, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 11, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 12, "y": 2}, + {"label": "#", "matrix": [2, 12], "x": 13, "y": 2}, + {"label": "Enter", "matrix": [1, 13], "x": 14, "y": 1, "h": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.5}, + {"label": "\\", "matrix": [3, 1], "x": 1.5, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.5, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.5, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.5, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.5, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.5, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.5, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.5, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.5, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.5, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.5, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.5, "y": 3, "w": 2.5}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 3], "x": 2.75, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 5], "x": 4.25, "y": 4, "w": 6.5}, + {"label": "Alt", "matrix": [4, 8], "x": 10.75, "y": 4, "w": 1.5}, + {"label": "GUI", "matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 11], "x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/4pplet/aekiso60/matrix_diagram.md b/keyboards/4pplet/aekiso60/matrix_diagram.md new file mode 100644 index 000000000000..31fc9777c1ce --- /dev/null +++ b/keyboards/4pplet/aekiso60/matrix_diagram.md @@ -0,0 +1,33 @@ +# Matrix Diagram for 4pplet AEKISO60 (Revs. A and B) + +``` +┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ +├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │ +├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐1d │ +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │ +├─────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ ┌─────────┐ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ │3c │ 2.75u RShift +├─────┼───┴┬──┴──┬┴───┴───┴─┬─┴─┬─┴───┴───┴┬──┴──┬┴───┬─┴───┤ └─────────┘ +│40 │41 │43 │44 │45 │46 │48 │4a │4b │ +└─────┴────┴─────┴──────────┴───┴──────────┴─────┴────┴─────┘ +┌─────┬────┬─────┬─────────────────────────┬─────┬────┬─────┐ ─┐ +│40 │41 │43 │45 │48 │4a │4b │ ├─ Tsangan +└─────┴────┴─────┴─────────────────────────┴─────┴────┴─────┘ │ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ │ +│40 │41 │43 │45 │48 │4a │4b │ │ +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ ─┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│40 │ │43 │45 │48 │ │4b │ WKL +└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ +┌─────┬────┬─────┬─────────┬─────┬─────────┬─────┬────┬─────┐ ─┐ +│40 │41 │43 │44 │45 │46 │48 │4a │4b │ ├─ same matrix as LAYOUT_all +└─────┴────┴─────┴─────────┴─────┴─────────┴─────┴────┴─────┘ │ +┌─────┬────┬─────┬────────┬─────┬──────────┬─────┬────┬─────┐ │ +│40 │41 │43 │44 │45 │46 │48 │4a │4b │ │ +└─────┴────┴─────┴────────┴─────┴──────────┴─────┴────┴─────┘ │ +┌─────┬────┬─────┬─────────┬────┬──────────┬─────┬────┬─────┐ │ +│40 │41 │43 │44 │45 │46 │48 │4a │4b │ │ +└─────┴────┴─────┴─────────┴────┴──────────┴─────┴────┴─────┘ ─┘ +``` diff --git a/keyboards/4pplet/aekiso60/rev_a/info.json b/keyboards/4pplet/aekiso60/rev_a/info.json index 9932b6ec55e3..18d86678d0e6 100644 --- a/keyboards/4pplet/aekiso60/rev_a/info.json +++ b/keyboards/4pplet/aekiso60/rev_a/info.json @@ -1,10 +1,6 @@ { "keyboard_name": "AEKISO60 Rev A", - "manufacturer": "4pplet", - "url": "", - "maintainer": "4pplet", "usb": { - "vid": "0x4444", "pid": "0x0001", "device_version": "0.0.1" }, @@ -13,79 +9,5 @@ "esc_output": "C4" }, "processor": "atmega32u2", - "bootloader": "atmel-dfu", - "layouts": { - "LAYOUT_all": { - "layout": [ - {"x":0, "y":0, "w":1.25}, - {"x":1.25, "y":0}, - {"x":2.25, "y":0}, - {"x":3.25, "y":0}, - {"x":4.25, "y":0}, - {"x":5.25, "y":0}, - {"x":6.25, "y":0}, - {"x":7.25, "y":0}, - {"x":8.25, "y":0}, - {"x":9.25, "y":0}, - {"x":10.25, "y":0}, - {"x":11.25, "y":0}, - {"x":12.25, "y":0}, - {"x":13.25, "y":0, "w":1.75}, - - {"x":0, "y":1, "w":1.75}, - {"x":1.75, "y":1}, - {"x":2.75, "y":1}, - {"x":3.75, "y":1}, - {"x":4.75, "y":1}, - {"x":5.75, "y":1}, - {"x":6.75, "y":1}, - {"x":7.75, "y":1}, - {"x":8.75, "y":1}, - {"x":9.75, "y":1}, - {"x":10.75, "y":1}, - {"x":11.75, "y":1}, - {"x":12.75, "y":1}, - - {"x":0, "y":2, "w":2}, - {"x":2, "y":2}, - {"x":3, "y":2}, - {"x":4, "y":2}, - {"x":5, "y":2}, - {"x":6, "y":2}, - {"x":7, "y":2}, - {"x":8, "y":2}, - {"x":9, "y":2}, - {"x":10, "y":2}, - {"x":11, "y":2}, - {"x":12, "y":2}, - {"x":13, "y":2}, - {"x":14, "y":1, "h":2}, - - {"x":0, "y":3, "w":1.5}, - {"x":1.5, "y":3}, - {"x":2.5, "y":3}, - {"x":3.5, "y":3}, - {"x":4.5, "y":3}, - {"x":5.5, "y":3}, - {"x":6.5, "y":3}, - {"x":7.5, "y":3}, - {"x":8.5, "y":3}, - {"x":9.5, "y":3}, - {"x":10.5, "y":3}, - {"x":11.5, "y":3}, - {"x":12.5, "y":3, "w":1.5}, - {"x":14, "y":3}, - - {"x":0, "y":4, "w":1.5}, - {"x":1.5, "y":4, "w":1.25}, - {"x":2.75, "y":4, "w":1.5}, - {"x":4.25, "y":4, "w":2.75}, - {"x":7, "y":4}, - {"x":8, "y":4, "w":2.75}, - {"x":10.75, "y":4, "w":1.5}, - {"x":12.25, "y":4, "w":1.25}, - {"x":13.5, "y":4, "w":1.5} - ] - } - } + "bootloader": "atmel-dfu" } diff --git a/keyboards/4pplet/aekiso60/rev_a/rev_a.c b/keyboards/4pplet/aekiso60/rev_a/rev_a.c deleted file mode 100644 index d3db08ad193b..000000000000 --- a/keyboards/4pplet/aekiso60/rev_a/rev_a.c +++ /dev/null @@ -1 +0,0 @@ -#include "rev_a.h" diff --git a/keyboards/4pplet/aekiso60/rev_a/rev_a.h b/keyboards/4pplet/aekiso60/rev_a/rev_a.h deleted file mode 100644 index 16acf01c2097..000000000000 --- a/keyboards/4pplet/aekiso60/rev_a/rev_a.h +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -#include "quantum.h" - -/* LAYOUT_all - * ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ - * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ - * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ - * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │ - * ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐1d │ - * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │ - * ├─────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ - * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ - * ├─────┼───┴┬──┴──┬┴───┴───┴─┬─┴─┬─┴───┴───┴┬──┴──┬┴───┬─┴───┤ - * │40 │41 │43 │44 │45 │46 │48 │4a │4b │ - * └─────┴────┴─────┴──────────┴───┴──────────┴─────┴────┴─────┘ - */ -#define LAYOUT_all( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1d, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ - k40, k41, k43, k44, k45, k46, k48, k4a, k4b \ -) \ -{ \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ - {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO},\ - {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ - {k40, k41, KC_NO, k43, k44, k45, k46, KC_NO, k48, KC_NO, k4a, k4b, KC_NO, KC_NO} \ -} diff --git a/keyboards/4pplet/aekiso60/rev_b/info.json b/keyboards/4pplet/aekiso60/rev_b/info.json index fe2e424999ee..9f9f8bba8ef4 100644 --- a/keyboards/4pplet/aekiso60/rev_b/info.json +++ b/keyboards/4pplet/aekiso60/rev_b/info.json @@ -1,10 +1,6 @@ { "keyboard_name": "AEKISO60 Rev B", - "manufacturer": "4pplet", - "url": "", - "maintainer": "4pplet", "usb": { - "vid": "0x4444", "pid": "0x0011", "device_version": "0.0.2" }, @@ -12,79 +8,5 @@ "caps_lock": "A10" }, "processor": "STM32F072", - "bootloader": "stm32-dfu", - "layouts": { - "LAYOUT_all": { - "layout": [ - {"x":0, "y":0, "w":1.25}, - {"x":1.25, "y":0}, - {"x":2.25, "y":0}, - {"x":3.25, "y":0}, - {"x":4.25, "y":0}, - {"x":5.25, "y":0}, - {"x":6.25, "y":0}, - {"x":7.25, "y":0}, - {"x":8.25, "y":0}, - {"x":9.25, "y":0}, - {"x":10.25, "y":0}, - {"x":11.25, "y":0}, - {"x":12.25, "y":0}, - {"x":13.25, "y":0, "w":1.75}, - - {"x":0, "y":1, "w":1.75}, - {"x":1.75, "y":1}, - {"x":2.75, "y":1}, - {"x":3.75, "y":1}, - {"x":4.75, "y":1}, - {"x":5.75, "y":1}, - {"x":6.75, "y":1}, - {"x":7.75, "y":1}, - {"x":8.75, "y":1}, - {"x":9.75, "y":1}, - {"x":10.75, "y":1}, - {"x":11.75, "y":1}, - {"x":12.75, "y":1}, - - {"x":0, "y":2, "w":2}, - {"x":2, "y":2}, - {"x":3, "y":2}, - {"x":4, "y":2}, - {"x":5, "y":2}, - {"x":6, "y":2}, - {"x":7, "y":2}, - {"x":8, "y":2}, - {"x":9, "y":2}, - {"x":10, "y":2}, - {"x":11, "y":2}, - {"x":12, "y":2}, - {"x":13, "y":2}, - {"x":14, "y":1, "h":2}, - - {"x":0, "y":3, "w":1.5}, - {"x":1.5, "y":3}, - {"x":2.5, "y":3}, - {"x":3.5, "y":3}, - {"x":4.5, "y":3}, - {"x":5.5, "y":3}, - {"x":6.5, "y":3}, - {"x":7.5, "y":3}, - {"x":8.5, "y":3}, - {"x":9.5, "y":3}, - {"x":10.5, "y":3}, - {"x":11.5, "y":3}, - {"x":12.5, "y":3, "w":1.5}, - {"x":14, "y":3}, - - {"x":0, "y":4, "w":1.5}, - {"x":1.5, "y":4, "w":1.25}, - {"x":2.75, "y":4, "w":1.5}, - {"x":4.25, "y":4, "w":2.75}, - {"x":7, "y":4}, - {"x":8, "y":4, "w":2.75}, - {"x":10.75, "y":4, "w":1.5}, - {"x":12.25, "y":4, "w":1.25}, - {"x":13.5, "y":4, "w":1.5} - ] - } - } + "bootloader": "stm32-dfu" } diff --git a/keyboards/4pplet/aekiso60/rev_b/rev_b.c b/keyboards/4pplet/aekiso60/rev_b/rev_b.c deleted file mode 100644 index 4928bbc23a40..000000000000 --- a/keyboards/4pplet/aekiso60/rev_b/rev_b.c +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com> - -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 "rev_b.h" - - diff --git a/keyboards/4pplet/aekiso60/rev_b/rev_b.h b/keyboards/4pplet/aekiso60/rev_b/rev_b.h deleted file mode 100644 index 64320025e3d8..000000000000 --- a/keyboards/4pplet/aekiso60/rev_b/rev_b.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com> - -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" - -/* LAYOUT_all - * ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ - * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ - * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ - * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │ - * ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐1d │ - * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │ - * ├─────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ - * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ - * ├─────┼───┴┬──┴──┬┴───┴───┴─┬─┴─┬─┴───┴───┴┬──┴──┬┴───┬─┴───┤ - * │40 │41 │43 │44 │45 │46 │48 │4a │4b │ - * └─────┴────┴─────┴──────────┴───┴──────────┴─────┴────┴─────┘ - */ -#define LAYOUT_all( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1d, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ - k40, k41, k43, k44, k45, k46, k48, k4a, k4b \ -) \ -{ \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ - {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO},\ - {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ - {k40, k41, KC_NO, k43, k44, k45, k46, KC_NO, k48, KC_NO, k4a, k4b, KC_NO, KC_NO} \ -} From 7e6eba674ac3b88bfedca313d847ceb765002cf8 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 11 Apr 2023 13:26:41 -0700 Subject: [PATCH 58/73] 4pplet/bootleg/rev_a Layout Macro Conversion and Addition (#20400) * info.json: apply friendly formatting * move matrix data to info.json * add LAYOUT_60_ansi_split_bs_rshift --- keyboards/4pplet/bootleg/rev_a/info.json | 208 ++++++++++++++++------- keyboards/4pplet/bootleg/rev_a/rev_a.c | 17 -- keyboards/4pplet/bootleg/rev_a/rev_a.h | 34 ---- 3 files changed, 142 insertions(+), 117 deletions(-) delete mode 100644 keyboards/4pplet/bootleg/rev_a/rev_a.c delete mode 100644 keyboards/4pplet/bootleg/rev_a/rev_a.h diff --git a/keyboards/4pplet/bootleg/rev_a/info.json b/keyboards/4pplet/bootleg/rev_a/info.json index 8f3b5eb2bfa6..4f3893229098 100644 --- a/keyboards/4pplet/bootleg/rev_a/info.json +++ b/keyboards/4pplet/bootleg/rev_a/info.json @@ -17,72 +17,148 @@ "layouts": { "LAYOUT_all": { "layout": [ - { "label": "Esc", "x": 0, "y": 0 }, - { "label": "!", "x": 1, "y": 0 }, - { "label": "@", "x": 2, "y": 0 }, - { "label": "#", "x": 3, "y": 0 }, - { "label": "$", "x": 4, "y": 0 }, - { "label": "%", "x": 5, "y": 0 }, - { "label": "^", "x": 6, "y": 0 }, - { "label": "&", "x": 7, "y": 0 }, - { "label": "*", "x": 8, "y": 0 }, - { "label": "(", "x": 9, "y": 0 }, - { "label": ")", "x": 10, "y": 0 }, - { "label": "_", "x": 11, "y": 0 }, - { "label": "+", "x": 12, "y": 0 }, - { "label": "|", "x": 13, "y": 0 }, - { "label": "~", "x": 14, "y": 0 }, - { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, - { "label": "Q", "x": 1.5, "y": 1 }, - { "label": "W", "x": 2.5, "y": 1 }, - { "label": "E", "x": 3.5, "y": 1 }, - { "label": "R", "x": 4.5, "y": 1 }, - { "label": "T", "x": 5.5, "y": 1 }, - { "label": "Y", "x": 6.5, "y": 1 }, - { "label": "U", "x": 7.5, "y": 1 }, - { "label": "I", "x": 8.5, "y": 1 }, - { "label": "O", "x": 9.5, "y": 1 }, - { "label": "P", "x": 10.5, "y": 1 }, - { "label": "{", "x": 11.5, "y": 1 }, - { "label": "}", "x": 12.5, "y": 1 }, - { "label": "Backsp.", "x": 13.5, "y": 1, "w": 1.5 }, - { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, - { "label": "A", "x": 1.75, "y": 2 }, - { "label": "S", "x": 2.75, "y": 2 }, - { "label": "D", "x": 3.75, "y": 2 }, - { "label": "F", "x": 4.75, "y": 2 }, - { "label": "G", "x": 5.75, "y": 2 }, - { "label": "H", "x": 6.75, "y": 2 }, - { "label": "J", "x": 7.75, "y": 2 }, - { "label": "K", "x": 8.75, "y": 2 }, - { "label": "L", "x": 9.75, "y": 2 }, - { "label": ":", "x": 10.75, "y": 2 }, - { "label": "\"", "x": 11.75, "y": 2 }, - { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 }, - { "label": "Shift", "x": 0, "y": 3, "w": 1.25 }, - { "label": "|", "x": 1.25, "y": 3 }, - { "label": "Z", "x": 2.25, "y": 3 }, - { "label": "X", "x": 3.25, "y": 3 }, - { "label": "C", "x": 4.25, "y": 3 }, - { "label": "V", "x": 5.25, "y": 3 }, - { "label": "B", "x": 6.25, "y": 3 }, - { "label": "N", "x": 7.25, "y": 3 }, - { "label": "M", "x": 8.25, "y": 3 }, - { "label": "<", "x": 9.25, "y": 3 }, - { "label": ">", "x": 10.25, "y": 3 }, - { "label": "?", "x": 11.25, "y": 3 }, - { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 }, - { "label": "Fn", "x": 14, "y": 3, "w": 1 }, - { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, - { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, - { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, - { "label": "Space1", "x": 3.75, "y": 4, "w": 2.25 }, - { "label": "Space2", "x": 6, "y": 4, "w": 1.25 }, - { "label": "Space3", "x": 7.25, "y": 4, "w": 2.75 }, - { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, - { "label": "Menu", "x": 11.25, "y": 4, "w": 1.25 }, - { "label": "Win", "x": 12.5, "y": 4, "w": 1.25 }, - { "label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 } + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [0, 14], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Backsp.", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space1", "matrix": [4, 3], "x": 3.75, "y": 4, "w": 2.25}, + {"label": "Space2", "matrix": [4, 4], "x": 6, "y": 4, "w": 1.25}, + {"label": "Space3", "matrix": [4, 5], "x": 7.25, "y": 4, "w": 2.75}, + {"label": "Alt", "matrix": [4, 6], "x": 10, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 7], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 8], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 9], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [0, 14], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Backsp.", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space2", "matrix": [4, 4], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 6], "x": 10, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 7], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 8], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 9], "x": 13.75, "y": 4, "w": 1.25} ] } } diff --git a/keyboards/4pplet/bootleg/rev_a/rev_a.c b/keyboards/4pplet/bootleg/rev_a/rev_a.c deleted file mode 100644 index b4f233d379e8..000000000000 --- a/keyboards/4pplet/bootleg/rev_a/rev_a.c +++ /dev/null @@ -1,17 +0,0 @@ -/* -Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com> - -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 "rev_a.h" diff --git a/keyboards/4pplet/bootleg/rev_a/rev_a.h b/keyboards/4pplet/bootleg/rev_a/rev_a.h deleted file mode 100644 index f9bbb445cb5d..000000000000 --- a/keyboards/4pplet/bootleg/rev_a/rev_a.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com> - -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_all( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1d, k1e, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ - k40, k41, k43, k45, k47, k48, k4a, k4b, k4d, k4e \ -) \ -{ \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1d, k1e}, \ - {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d}, \ - {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e}, \ - {k40, k41, k43, k45, k47, k48, k4a, k4b, k4d, k4e } \ -} From 75edefe5413f76932317d6d4c20bd122c8b01ce7 Mon Sep 17 00:00:00 2001 From: Mike Killewald Date: Wed, 12 Apr 2023 06:10:50 -0400 Subject: [PATCH 59/73] fixing bug that caused KC_DEL and KC_MUTE (encoder press) to be swapped (#20420) --- keyboards/keychron/q1/ansi_encoder/info.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/keychron/q1/ansi_encoder/info.json b/keyboards/keychron/q1/ansi_encoder/info.json index 2391e674ad0d..1dcefeb7f4db 100644 --- a/keyboards/keychron/q1/ansi_encoder/info.json +++ b/keyboards/keychron/q1/ansi_encoder/info.json @@ -31,8 +31,8 @@ {"matrix":[0,11], "x":10.75, "y":0}, {"matrix":[0,12], "x":11.75, "y":0}, {"matrix":[0,13], "x":12.75, "y":0}, - {"matrix":[0,14], "x":14, "y":0}, - {"matrix":[4,14], "x":15.25, "y":0}, + {"matrix":[4,14], "x":14, "y":0}, + {"matrix":[0,14], "x":15.25, "y":0}, {"matrix":[1, 0], "x":0, "y":1}, {"matrix":[1, 1], "x":1, "y":1}, From 641698d35618eadad29be57aded535f07b82a931 Mon Sep 17 00:00:00 2001 From: Less/Rikki <86894501+lesshonor@users.noreply.github.com> Date: Wed, 12 Apr 2023 11:07:47 -0400 Subject: [PATCH 60/73] [Keyboard] ymdk/id75 (#19967) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Drashna Jaelre --- keyboards/ymdk/id75/board.h | 22 ++ keyboards/ymdk/id75/config.h | 31 +++ keyboards/ymdk/id75/halconf.h | 21 ++ keyboards/ymdk/id75/id75.c | 30 +++ keyboards/ymdk/id75/info.json | 250 ++++++++++++++++++ .../ymdk/id75/keymaps/default/keymap.json | 24 ++ keyboards/ymdk/id75/keymaps/via/keymap.json | 43 +++ keyboards/ymdk/id75/mcuconf.h | 25 ++ keyboards/ymdk/id75/readme.md | 30 +++ keyboards/ymdk/id75/rules.mk | 9 + 10 files changed, 485 insertions(+) create mode 100644 keyboards/ymdk/id75/board.h create mode 100644 keyboards/ymdk/id75/config.h create mode 100644 keyboards/ymdk/id75/halconf.h create mode 100644 keyboards/ymdk/id75/id75.c create mode 100644 keyboards/ymdk/id75/info.json create mode 100644 keyboards/ymdk/id75/keymaps/default/keymap.json create mode 100644 keyboards/ymdk/id75/keymaps/via/keymap.json create mode 100644 keyboards/ymdk/id75/mcuconf.h create mode 100644 keyboards/ymdk/id75/readme.md create mode 100644 keyboards/ymdk/id75/rules.mk diff --git a/keyboards/ymdk/id75/board.h b/keyboards/ymdk/id75/board.h new file mode 100644 index 000000000000..49270b36a050 --- /dev/null +++ b/keyboards/ymdk/id75/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 + +#undef STM32_HSECLK +#define STM32_HSECLK 16000000 diff --git a/keyboards/ymdk/id75/config.h b/keyboards/ymdk/id75/config.h new file mode 100644 index 000000000000..02e9d4a2833e --- /dev/null +++ b/keyboards/ymdk/id75/config.h @@ -0,0 +1,31 @@ +/* Copyright 2021 MT + * + * 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 RGB_DI_PIN B9 +#define RGB_MATRIX_LED_COUNT 89 + +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS + +#define WS2812_PWM_DRIVER PWMD4 +#define WS2812_PWM_CHANNEL 4 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM7 +#define WS2812_DMA_CHANNEL 7 diff --git a/keyboards/ymdk/id75/halconf.h b/keyboards/ymdk/id75/halconf.h new file mode 100644 index 000000000000..612ce4fc4a8f --- /dev/null +++ b/keyboards/ymdk/id75/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2020 QMK + * + * 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/ymdk/id75/id75.c b/keyboards/ymdk/id75/id75.c new file mode 100644 index 000000000000..dc56797cad66 --- /dev/null +++ b/keyboards/ymdk/id75/id75.c @@ -0,0 +1,30 @@ +/* Copyright 2021 MT + * + * 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 "quantum.h" + +#ifdef RGB_MATRIX_ENABLE +bool rgb_matrix_indicators_kb(void) { + if (!rgb_matrix_indicators_user()) { + return false; + } + + if (host_keyboard_led_state().caps_lock) { // Capslock = RED + rgb_matrix_set_color(44, 200, 0, 0); + } + return true; +} +#endif diff --git a/keyboards/ymdk/id75/info.json b/keyboards/ymdk/id75/info.json new file mode 100644 index 000000000000..5ed25bc28eb5 --- /dev/null +++ b/keyboards/ymdk/id75/info.json @@ -0,0 +1,250 @@ +{ + "manufacturer": "YMDK", + "keyboard_name": "Idobao x YMDK ID75", + "maintainer": "qmk", + "bootloader": "uf2boot", + "board": "STM32_F103_STM32DUINO", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["A10", "A9", "A8", "B15", "B14", "B13", "B12", "A5", "A6", "A4", "A3", "A2", "A1", "A0", "A15"], + "rows": ["B2", "B1", "B0", "A7", "B10"] + }, + "processor": "STM32F103", + "ws2812": { + "driver": "pwm" + }, + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_rain": true, + "pixel_flow": true, + "pixel_fractal": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "driver": "WS2812", + "layout": [ + { "flags": 4, "matrix": [4, 14], "x": 224, "y": 64 }, + { "flags": 4, "matrix": [4, 13], "x": 208, "y": 64 }, + { "flags": 4, "matrix": [4, 12], "x": 192, "y": 64 }, + { "flags": 4, "matrix": [4, 11], "x": 176, "y": 64 }, + { "flags": 4, "matrix": [4, 10], "x": 160, "y": 64 }, + { "flags": 4, "matrix": [4, 9], "x": 144, "y": 64 }, + { "flags": 4, "matrix": [4, 8], "x": 128, "y": 64 }, + { "flags": 4, "matrix": [4, 7], "x": 112, "y": 64 }, + { "flags": 4, "matrix": [4, 6], "x": 96, "y": 64 }, + { "flags": 4, "matrix": [4, 5], "x": 80, "y": 64 }, + { "flags": 4, "matrix": [4, 4], "x": 64, "y": 64 }, + { "flags": 4, "matrix": [4, 3], "x": 48, "y": 64 }, + { "flags": 4, "matrix": [4, 2], "x": 32, "y": 64 }, + { "flags": 4, "matrix": [4, 1], "x": 16, "y": 64 }, + { "flags": 4, "matrix": [4, 0], "x": 0, "y": 64 }, + { "flags": 4, "matrix": [3, 14], "x": 224, "y": 48 }, + { "flags": 4, "matrix": [3, 13], "x": 208, "y": 48 }, + { "flags": 4, "matrix": [3, 12], "x": 192, "y": 48 }, + { "flags": 4, "matrix": [3, 11], "x": 176, "y": 48 }, + { "flags": 4, "matrix": [3, 10], "x": 160, "y": 48 }, + { "flags": 4, "matrix": [3, 9], "x": 144, "y": 48 }, + { "flags": 4, "matrix": [3, 8], "x": 128, "y": 48 }, + { "flags": 4, "matrix": [3, 7], "x": 112, "y": 48 }, + { "flags": 4, "matrix": [3, 6], "x": 96, "y": 48 }, + { "flags": 4, "matrix": [3, 5], "x": 80, "y": 48 }, + { "flags": 4, "matrix": [3, 4], "x": 64, "y": 48 }, + { "flags": 4, "matrix": [3, 3], "x": 48, "y": 48 }, + { "flags": 4, "matrix": [3, 2], "x": 32, "y": 48 }, + { "flags": 4, "matrix": [3, 1], "x": 16, "y": 48 }, + { "flags": 4, "matrix": [3, 0], "x": 0, "y": 48 }, + { "flags": 4, "matrix": [2, 14], "x": 224, "y": 32 }, + { "flags": 4, "matrix": [2, 13], "x": 208, "y": 32 }, + { "flags": 4, "matrix": [2, 12], "x": 192, "y": 32 }, + { "flags": 4, "matrix": [2, 11], "x": 176, "y": 32 }, + { "flags": 4, "matrix": [2, 10], "x": 160, "y": 32 }, + { "flags": 4, "matrix": [2, 9], "x": 144, "y": 32 }, + { "flags": 4, "matrix": [2, 8], "x": 128, "y": 32 }, + { "flags": 4, "matrix": [2, 7], "x": 112, "y": 32 }, + { "flags": 4, "matrix": [2, 6], "x": 96, "y": 32 }, + { "flags": 4, "matrix": [2, 5], "x": 80, "y": 32 }, + { "flags": 4, "matrix": [2, 4], "x": 64, "y": 32 }, + { "flags": 4, "matrix": [2, 3], "x": 48, "y": 32 }, + { "flags": 4, "matrix": [2, 2], "x": 32, "y": 32 }, + { "flags": 4, "matrix": [2, 1], "x": 16, "y": 32 }, + { "flags": 4, "matrix": [2, 0], "x": 0, "y": 32 }, + { "flags": 4, "matrix": [1, 14], "x": 224, "y": 16 }, + { "flags": 4, "matrix": [1, 13], "x": 208, "y": 16 }, + { "flags": 4, "matrix": [1, 12], "x": 192, "y": 16 }, + { "flags": 4, "matrix": [1, 11], "x": 176, "y": 16 }, + { "flags": 4, "matrix": [1, 10], "x": 160, "y": 16 }, + { "flags": 4, "matrix": [1, 9], "x": 144, "y": 16 }, + { "flags": 4, "matrix": [1, 8], "x": 128, "y": 16 }, + { "flags": 4, "matrix": [1, 7], "x": 112, "y": 16 }, + { "flags": 4, "matrix": [1, 6], "x": 96, "y": 16 }, + { "flags": 4, "matrix": [1, 5], "x": 80, "y": 16 }, + { "flags": 4, "matrix": [1, 4], "x": 64, "y": 16 }, + { "flags": 4, "matrix": [1, 3], "x": 48, "y": 16 }, + { "flags": 4, "matrix": [1, 2], "x": 32, "y": 16 }, + { "flags": 4, "matrix": [1, 1], "x": 16, "y": 16 }, + { "flags": 4, "matrix": [1, 0], "x": 0, "y": 16 }, + { "flags": 4, "matrix": [0, 14], "x": 224, "y": 0 }, + { "flags": 4, "matrix": [0, 13], "x": 208, "y": 0 }, + { "flags": 4, "matrix": [0, 12], "x": 192, "y": 0 }, + { "flags": 4, "matrix": [0, 11], "x": 176, "y": 0 }, + { "flags": 4, "matrix": [0, 10], "x": 160, "y": 0 }, + { "flags": 4, "matrix": [0, 9], "x": 144, "y": 0 }, + { "flags": 4, "matrix": [0, 8], "x": 128, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 112, "y": 0 }, + { "flags": 4, "matrix": [0, 6], "x": 96, "y": 0 }, + { "flags": 4, "matrix": [0, 5], "x": 80, "y": 0 }, + { "flags": 4, "matrix": [0, 4], "x": 64, "y": 0 }, + { "flags": 4, "matrix": [0, 3], "x": 48, "y": 0 }, + { "flags": 4, "matrix": [0, 2], "x": 32, "y": 0 }, + { "flags": 4, "matrix": [0, 1], "x": 16, "y": 0 }, + { "flags": 4, "matrix": [0, 0], "x": 0, "y": 0 }, + { "flags": 2, "x": 0, "y": 64 }, + { "flags": 2, "x": 38, "y": 64 }, + { "flags": 2, "x": 76, "y": 64 }, + { "flags": 2, "x": 114, "y": 64 }, + { "flags": 2, "x": 152, "y": 64 }, + { "flags": 2, "x": 190, "y": 64 }, + { "flags": 2, "x": 224, "y": 64 }, + { "flags": 2, "x": 0, "y": 0 }, + { "flags": 2, "x": 38, "y": 0 }, + { "flags": 2, "x": 76, "y": 0 }, + { "flags": 2, "x": 114, "y": 0 }, + { "flags": 2, "x": 152, "y": 0 }, + { "flags": 2, "x": 190, "y": 0 }, + { "flags": 2, "x": 224, "y": 0 } + ], + "max_brightness": 128 + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x0075", + "vid": "0x594D" + }, + "community_layouts": [ "ortho_5x15" ], + "layouts": { + "LAYOUT_ortho_5x15": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 }, + { "label": "k0A", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 }, + { "label": "k0B", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 }, + { "label": "k0C", "matrix": [0, 12], "w": 1, "x": 12, "y": 0 }, + { "label": "k0D", "matrix": [0, 13], "w": 1, "x": 13, "y": 0 }, + { "label": "k0E", "matrix": [0, 14], "w": 1, "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1, "x": 0, "y": 1 }, + { "label": "k11", "matrix": [1, 1], "w": 1, "x": 1, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "w": 1, "x": 2, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "w": 1, "x": 3, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "w": 1, "x": 4, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "w": 1, "x": 5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "w": 1, "x": 6, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "w": 1, "x": 7, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "w": 1, "x": 8, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "w": 1, "x": 9, "y": 1 }, + { "label": "k1A", "matrix": [1, 10], "w": 1, "x": 10, "y": 1 }, + { "label": "k1B", "matrix": [1, 11], "w": 1, "x": 11, "y": 1 }, + { "label": "k1C", "matrix": [1, 12], "w": 1, "x": 12, "y": 1 }, + { "label": "k1D", "matrix": [1, 13], "w": 1, "x": 13, "y": 1 }, + { "label": "k1E", "matrix": [1, 14], "w": 1, "x": 14, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1, "x": 0, "y": 2 }, + { "label": "k21", "matrix": [2, 1], "w": 1, "x": 1, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "w": 1, "x": 2, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "w": 1, "x": 3, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "w": 1, "x": 4, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "w": 1, "x": 5, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "w": 1, "x": 6, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "w": 1, "x": 7, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "w": 1, "x": 8, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "w": 1, "x": 9, "y": 2 }, + { "label": "k2A", "matrix": [2, 10], "w": 1, "x": 10, "y": 2 }, + { "label": "k2B", "matrix": [2, 11], "w": 1, "x": 11, "y": 2 }, + { "label": "k2C", "matrix": [2, 12], "w": 1, "x": 12, "y": 2 }, + { "label": "k2D", "matrix": [2, 13], "w": 1, "x": 13, "y": 2 }, + { "label": "k2E", "matrix": [2, 14], "w": 1, "x": 14, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 1, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "w": 1, "x": 1, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "w": 1, "x": 2, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "w": 1, "x": 3, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "w": 1, "x": 4, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "w": 1, "x": 5, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "w": 1, "x": 6, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "w": 1, "x": 7, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "w": 1, "x": 8, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "w": 1, "x": 9, "y": 3 }, + { "label": "k3A", "matrix": [3, 10], "w": 1, "x": 10, "y": 3 }, + { "label": "k3B", "matrix": [3, 11], "w": 1, "x": 11, "y": 3 }, + { "label": "k3C", "matrix": [3, 12], "w": 1, "x": 12, "y": 3 }, + { "label": "k3D", "matrix": [3, 13], "w": 1, "x": 13, "y": 3 }, + { "label": "k3E", "matrix": [3, 14], "w": 1, "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1, "x": 1, "y": 4 }, + { "label": "k42", "matrix": [4, 2], "w": 1, "x": 2, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1, "x": 3, "y": 4 }, + { "label": "k44", "matrix": [4, 4], "w": 1, "x": 4, "y": 4 }, + { "label": "k45", "matrix": [4, 5], "w": 1, "x": 5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 1, "x": 6, "y": 4 }, + { "label": "k47", "matrix": [4, 7], "w": 1, "x": 7, "y": 4 }, + { "label": "k48", "matrix": [4, 8], "w": 1, "x": 8, "y": 4 }, + { "label": "k49", "matrix": [4, 9], "w": 1, "x": 9, "y": 4 }, + { "label": "k4A", "matrix": [4, 10], "w": 1, "x": 10, "y": 4 }, + { "label": "k4B", "matrix": [4, 11], "w": 1, "x": 11, "y": 4 }, + { "label": "k4C", "matrix": [4, 12], "w": 1, "x": 12, "y": 4 }, + { "label": "k4D", "matrix": [4, 13], "w": 1, "x": 13, "y": 4 }, + { "label": "k4E", "matrix": [4, 14], "w": 1, "x": 14, "y": 4 } + ] + } + } +} diff --git a/keyboards/ymdk/id75/keymaps/default/keymap.json b/keyboards/ymdk/id75/keymaps/default/keymap.json new file mode 100644 index 000000000000..cfea8be49476 --- /dev/null +++ b/keyboards/ymdk/id75/keymaps/default/keymap.json @@ -0,0 +1,24 @@ +{ + "version": 1, + "author": "qmk", + "notes": "", + "keyboard": "ymdk/id75", + "keymap": "default", + "layout": "LAYOUT_ortho_5x15", + "layers": [ + [ + "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_BSLS", "KC_GRV", + "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_BSPC", "KC_DEL", + "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_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", "MO(1)", "KC_UP", "KC_PGDN", + "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "KC_RALT", "KC_RCTL", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT" + ], + [ + "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", + "RGB_MOD", "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", "QK_BOOT" + ] + ] +} diff --git a/keyboards/ymdk/id75/keymaps/via/keymap.json b/keyboards/ymdk/id75/keymaps/via/keymap.json new file mode 100644 index 000000000000..8be803d4a97e --- /dev/null +++ b/keyboards/ymdk/id75/keymaps/via/keymap.json @@ -0,0 +1,43 @@ +{ + "version": 1, + "author": "qmk", + "notes": "", + "config": { + "features": { + "via": true + } + }, + "keyboard": "ymdk/id75", + "keymap": "via", + "layout": "LAYOUT_ortho_5x15", + "layers": [ + [ + "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_BSLS", "KC_GRV", + "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_BSPC", "KC_DEL", + "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_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", "MO(1)", "KC_UP", "KC_PGDN", + "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "KC_RALT", "KC_RCTL", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT" + ], + [ + "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", + "RGB_MOD", "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", "QK_BOOT" + ], + [ + "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", "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", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ] + ] +} diff --git a/keyboards/ymdk/id75/mcuconf.h b/keyboards/ymdk/id75/mcuconf.h new file mode 100644 index 000000000000..0d3de3dad51f --- /dev/null +++ b/keyboards/ymdk/id75/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright 2020 QMK + * + * 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_TIM4 +#define STM32_PWM_USE_TIM4 TRUE + +#undef STM32_PLLXTPRE +#define STM32_PLLXTPRE STM32_PLLXTPRE_DIV2 diff --git a/keyboards/ymdk/id75/readme.md b/keyboards/ymdk/id75/readme.md new file mode 100644 index 000000000000..9315745f71dd --- /dev/null +++ b/keyboards/ymdk/id75/readme.md @@ -0,0 +1,30 @@ +# Idobao x YMDK ID75 + +![Idobao x YMDK ID75](https://i.imgur.com/bhVfzrzh.jpg) + +A 75-key, 5-row ortholinear keyboard with per-key and underglow RGB LEDs. + +* Keyboard Maintainer: [The QMK Community](https://github.com/qmk) +* Hardware Supported: [Idobao x YMDK ID75 PCB (APM32F103CBT6)](https://www.aliexpress.com/item/3256804537842097.html) + * This PCB uses an ARM Cortex-M3 MCU with 128kb flash. **It is not the same as `idobao/id75` or `ymdk/ymd75`.** +* Hardware Availability: [YMDK](https://ymdkey.com/products/id75-75-keys-ortholinear-layout-qmk-anodized-aluminum-case-plate-hot-swappable-hot-swap-type-c-pcb-mechanical-keyboard-kit), [AliExpress (YMDK Store)](https://www.aliexpress.com/item/2255800125183974.html), [Amazon](https://www.amazon.com/Ortholinear-Anodized-Aluminum-hot-swappable-Mechanical/dp/B07ZQ8CD88) + +Make example for this keyboard (after setting up your build environment): + + make ymdk/id75:default + +Flashing example for this keyboard: + + make ymdk/id75:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. This will also clear the emulated EEPROM, so it is a good first step if the keyboard is misbehaving. +* **Physical reset button**: Press the button on the back of the PCB twice in quick succession. +* **Keycode in layout**: Press the key mapped to `QK_BOOT`. In the pre-supplied keymaps it is on the second layer, in the bottom-right corner. + +After entering the bootloader through one of the three methods above, the keyboard will appear as a USB mass storage device named `MT.KEY`. If the CLI is unable to find this device, the compiled `.uf2` file can be manually copied to it. The keyboard will reboot on completion with the new firmware loaded. diff --git a/keyboards/ymdk/id75/rules.mk b/keyboards/ymdk/id75/rules.mk new file mode 100644 index 000000000000..61d5793cc2fc --- /dev/null +++ b/keyboards/ymdk/id75/rules.mk @@ -0,0 +1,9 @@ +# Configure for 128K flash +#MCU_LDSCRIPT = STM32F103xB + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF + +WS2812_DRIVER = pwm +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From 5012dfd719837367735eb881d221e967e7b58d3e Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Wed, 12 Apr 2023 09:33:42 -0600 Subject: [PATCH 61/73] [Keyboard] add kb2040 flavor of gherkin (#18360) --- .../40percentclub/gherkin/kb2040/readme.md | 22 +++++++++++++++++++ .../40percentclub/gherkin/kb2040/rules.mk | 1 + keyboards/40percentclub/gherkin/readme.md | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 keyboards/40percentclub/gherkin/kb2040/readme.md create mode 100644 keyboards/40percentclub/gherkin/kb2040/rules.mk diff --git a/keyboards/40percentclub/gherkin/kb2040/readme.md b/keyboards/40percentclub/gherkin/kb2040/readme.md new file mode 100644 index 000000000000..1fc9e8b18e19 --- /dev/null +++ b/keyboards/40percentclub/gherkin/kb2040/readme.md @@ -0,0 +1,22 @@ +# Gherkin + +![Gherkin](https://i.imgur.com/XrqqtTq.jpg) +![KB2040](https://cdn-shop.adafruit.com/640x480/5302-12.jpg) + +=== + +A 30 key keyboard with Adafruit's KB2040 as microcontroller. + +* [The original TMK firmware](https://github.com/di0ib/tmk_keyboard/tree/master/keyboard/gherkin) + +Keyboard Maintainer: QMK Community +Hardware Supported: Gherkin PCB & Adafruit KB2040 +Hardware Availability: [Gherkin project on 40% Keyboards](http://www.40percent.club/2016/11/gherkin.html) and [Adafruit KB2040](https://www.adafruit.com/product/5302) + +Make example for this keyboard (after setting up your build environment): + + make 40percentclub/gherkin/kb2040: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). + +Use the KB2040 microcontroller as a drop-in replacement for the Pro Micro in this cute 30% keyboard. diff --git a/keyboards/40percentclub/gherkin/kb2040/rules.mk b/keyboards/40percentclub/gherkin/kb2040/rules.mk new file mode 100644 index 000000000000..982c58170255 --- /dev/null +++ b/keyboards/40percentclub/gherkin/kb2040/rules.mk @@ -0,0 +1 @@ +CONVERT_TO = kb2040 diff --git a/keyboards/40percentclub/gherkin/readme.md b/keyboards/40percentclub/gherkin/readme.md index a6680d72057c..7404f198193a 100644 --- a/keyboards/40percentclub/gherkin/readme.md +++ b/keyboards/40percentclub/gherkin/readme.md @@ -1,6 +1,6 @@ # Gherkin -![Gherkin](https://4.bp.blogspot.com/-sQ18-lNZXOc/WCzlTde-4PI/AAAAAAAB_JQ/qQrehAMG6DMKf3i4oj4mkmLGOfTUvb3KgCLcB/s640/IMG_20161116_122926.jpg) +![Gherkin](https://i.imgur.com/XrqqtTq.jpg) === A 30 key keyboard. From 051485c579eb9d6fdc6036254fac1f59e5fb85ef Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 12 Apr 2023 11:35:12 -0400 Subject: [PATCH 62/73] [Keymap] PHSC138 Keymap for Atom47 (#18768) Co-authored-by: Ryan Co-authored-by: Drashna Jaelre --- .../evyd13/atom47/keymaps/phsc138/config.h | 17 + .../evyd13/atom47/keymaps/phsc138/keymap.c | 390 ++++++++++++++++++ .../evyd13/atom47/keymaps/phsc138/readme.md | 18 + .../evyd13/atom47/keymaps/phsc138/rules.mk | 3 + 4 files changed, 428 insertions(+) create mode 100644 keyboards/evyd13/atom47/keymaps/phsc138/config.h create mode 100644 keyboards/evyd13/atom47/keymaps/phsc138/keymap.c create mode 100644 keyboards/evyd13/atom47/keymaps/phsc138/readme.md create mode 100644 keyboards/evyd13/atom47/keymaps/phsc138/rules.mk diff --git a/keyboards/evyd13/atom47/keymaps/phsc138/config.h b/keyboards/evyd13/atom47/keymaps/phsc138/config.h new file mode 100644 index 000000000000..ccd556b90d9a --- /dev/null +++ b/keyboards/evyd13/atom47/keymaps/phsc138/config.h @@ -0,0 +1,17 @@ +/* Copyright 2022 PHSC138 + * + * 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 TAPPING_TERM 150 // Tap dance time limit diff --git a/keyboards/evyd13/atom47/keymaps/phsc138/keymap.c b/keyboards/evyd13/atom47/keymaps/phsc138/keymap.c new file mode 100644 index 000000000000..f9fec678cdab --- /dev/null +++ b/keyboards/evyd13/atom47/keymaps/phsc138/keymap.c @@ -0,0 +1,390 @@ +/* Copyright 2022 PHSC138 + * + * 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 + +// These are all aliases for the function layers. +enum custom_layers { + _BASE, + _PROG, + _GAME, + _FN, + _FN1, + _NUM +}; + + +// Tap Dance +typedef struct { + char is_press_action; + int state; +} tap; + +enum { + SINGLE_TAP = 1, + SINGLE_HOLD = 2, + DOUBLE_TAP = 3, + DOUBLE_HOLD = 4, + DOUBLE_SINGLE_TAP = 5, // Send two single taps + TRIPLE_TAP = 6, + TRIPLE_HOLD = 7 +}; + +// Tap dance enums +enum { + PN_SWAP = 0, + LAPO = 1, + LCPO = 2, + RAPC = 3, + RCPC = 4, + D20 = 5 +}; + +enum custom_keycodes { + PROF_MAC = QK_USER +}; + + +uint8_t cur_dance (tap_dance_state_t *state); +void pn_finished (tap_dance_state_t *state, void *user_data); +void pn_reset (tap_dance_state_t *state, void *user_data); + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// TREE: 'pn' to enter custom layers: + // _BASE + // _FN + // _FN1 + // _NUM + // _PROG + // _PROG + // _FN + // _FN1 + // _NUM + // _GAME + // _GAME + // _BASE + +// Tap pn for toggle to _PROG, or hold for numpad +[_BASE] = LAYOUT_split_space( + QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(_FN1), + KC_LCTL, KC_LGUI, KC_LALT, TD(PN_SWAP), KC_SPC, KC_SPC, MO(_FN), KC_RALT, KC_APP, KC_RCTL), + + +// LEFT AND RIGHT SHIFT: '(' and ')' when tapped, shift when held +// LEFT AND RIGHT CTRL: '{' and '}' when tapped, ctrl when held +// LEFT AND RIGHT ALT: '[' and ']' when tapped, ctrl when held +[_PROG] = LAYOUT_split_space( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + SC_LSPO, _______, _______, _______, _______, _______, _______, _______, _______, _______, SC_RSPC, _______, + TD(LCPO), _______, TD(LAPO), TO(_GAME), _______, _______, _______, TD(RAPC), _______, TD(RCPC)), + + +// Macro for right space is bhop +// Maco for 'fn' is move forward +// Macro for 'fn1' is spin constantly +// Macro for right shift is D20 +[_GAME] = LAYOUT_split_space( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TD(D20), XXXXXXX, + _______, _______, _______, TO(_BASE), _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______), + + +[_FN] = LAYOUT_split_space( + _______, KC_VOLD, KC_VOLU, KC_MUTE, QK_RBT, _______, KC_CALC, KC_PGUP, _______, KC_PGDN, KC_PSCR, KC_SCRL, KC_PAUS, + KC_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_INS, _______, + _______, _______, _______, _______, _______, KC_HOME, KC_END, BL_TOGG, BL_DOWN, BL_UP, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + +[_FN1] = LAYOUT_split_space( + 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + _______, _______, _______, _______, _______, KC_QUOT, KC_SLSH, KC_LBRC, KC_RBRC, KC_BSLS, KC_RSFT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + +[_NUM] = LAYOUT_split_space( + _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, PROF_MAC, _______, _______, + _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, + _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, KC_DOT, _______, _______, _______, + _______, _______, _______, _______, _______, KC_0, _______, _______, DB_TOGG, QK_BOOT), +}; + + +/*--- Profile Macro ---*/ +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case PROF_MAC: + if (record->event.pressed) { + // When keycode PROF_MAC is pressed + SEND_STRING("if [ $shell = 'zsh' ]; then echo \"echo \"Lock your computer -PHSC138\"\" >> ~/.zshrc\nclear; else echo \"echo \"Lock your computer -PHSC138\"\" >> ~/.profile\nclear; fi\n"); + } else { + // When keycode QMKBEST is released + } + break; + } + return true; +}; +/*--- End Profile Macro ---*/ + +/* Return an integer that corresponds to what kind of tap dance should be executed. + * + * How to figure out tap dance state: interrupted and pressed. + * + * Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit + * under the tapping term. This is typically indicitive that you are trying to "tap" the key. + * + * Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term + * has ended, but the key is still being pressed down. This generally means the key is being "held". + * + * One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold" + * feature. In general, advanced tap dances do not work well if they are used with commonly typed letters. + * For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters. + * + * Good places to put an advanced tap dance: + * z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon + * + * Criteria for "good placement" of a tap dance key: + * Not a key that is hit frequently in a sentence + * Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or + * in a web form. So 'tab' would be a poor choice for a tap dance. + * Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the + * letter 'p', the word 'pepper' would be quite frustating to type. + * + * For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested + * + */ +uint8_t cur_dance(tap_dance_state_t *state) { + if(state->count == 1) { + if(state->interrupted || !state->pressed) return SINGLE_TAP; + //key has not been interrupted, but they key is still held. Means you want to send a 'HOLD'. + else return SINGLE_HOLD; + } else if(state->count == 2) { + /* + * DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap + * action when hitting 'pp'. Suggested use case for this return value is when you want to send two + * keystrokes of the key, and not the 'double tap' action/macro. + */ + if(state->interrupted) return DOUBLE_SINGLE_TAP; + else if(state->pressed) return DOUBLE_HOLD; + else return DOUBLE_TAP; + } + //Assumes no one is trying to type the same letter three times (at least not quickly). + //If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add + //an exception here to return a 'TRIPLE_SINGLE_TAP', and define that enum just like 'DOUBLE_SINGLE_TAP' + if(state->count == 3) { + if(state->interrupted || !state->pressed) return TRIPLE_TAP; + else return TRIPLE_HOLD; + } + else return 8; //magic number. At some point this method will expand to work for more presses +} + +//instanalize an instance of 'tap' for the 'pn' tap dance. +static tap pn_tap_state = { + .is_press_action = 1, + .state = 0 +}; + +void pn_finished(tap_dance_state_t *state, void *user_data) { + pn_tap_state.state = cur_dance(state); + switch(pn_tap_state.state) { + case SINGLE_TAP: layer_on(_PROG); break; + case SINGLE_HOLD: layer_on(_NUM); break; + //case DOUBLE_TAP: register_code(KC_ESC); break; + //case DOUBLE_HOLD: register_code(KC_LALT); break; + //case DOUBLE_SINGLE_TAP: register_code(KC_X); unregister_code(KC_X); register_code(KC_X); + //Last case is for fast typing. Assuming your key is `f`: + //For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`. + //In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms. + } +} + +void pn_reset(tap_dance_state_t *state, void *user_data) { + switch(pn_tap_state.state) { + //case SINGLE_TAP: unregister_code(KC_X); break; + case SINGLE_HOLD: layer_off(_NUM); break; + //case DOUBLE_TAP: unregister_code(KC_ESC); break; + //case DOUBLE_HOLD: unregister_code(KC_LALT); + //case DOUBLE_SINGLE_TAP: unregister_code(KC_X); + } + pn_tap_state.state = 0; +} + +static tap lalt_tap_state = { + .is_press_action = 1, + .state = 0 +}; + +void lalt_finished(tap_dance_state_t *state, void *user_data) { + lalt_tap_state.state = cur_dance(state); + switch(lalt_tap_state.state) { + case SINGLE_TAP: register_code(KC_LBRC); break; + case SINGLE_HOLD: register_code(KC_LALT); break; + } +} + +void lalt_reset(tap_dance_state_t *state, void *user_data) { + switch(lalt_tap_state.state) { + case SINGLE_TAP: unregister_code(KC_LBRC); break; + case SINGLE_HOLD: unregister_code(KC_LALT); break; + } + lalt_tap_state.state = 0; +} + +static tap ralt_tap_state = { + .is_press_action = 1, + .state = 0 +}; + +void ralt_finished(tap_dance_state_t *state, void *user_data) { + ralt_tap_state.state = cur_dance(state); + switch(ralt_tap_state.state) { + case SINGLE_TAP: register_code(KC_RBRC); break; + case SINGLE_HOLD: register_code(KC_RALT); break; + } +} + +void ralt_reset(tap_dance_state_t *state, void *user_data) { + switch(ralt_tap_state.state) { + case SINGLE_TAP: unregister_code(KC_RBRC); break; + case SINGLE_HOLD: unregister_code(KC_RALT); break; + } + ralt_tap_state.state = 0; +} + +static tap rctl_tap_state = { + .is_press_action = 1, + .state = 0 +}; + +void rctl_finished(tap_dance_state_t *state, void *user_data) { + rctl_tap_state.state = cur_dance(state); + switch(rctl_tap_state.state) { + case SINGLE_TAP: register_code(KC_RSFT); register_code(KC_RBRC); break; + case SINGLE_HOLD: register_code(KC_RCTL); break; + } +} + +void rctl_reset(tap_dance_state_t *state, void *user_data) { + switch(rctl_tap_state.state) { + case SINGLE_TAP: unregister_code(KC_RSFT); unregister_code(KC_RBRC); break; + case SINGLE_HOLD: unregister_code(KC_RCTL); break; + } + rctl_tap_state.state = 0; +} + +static tap lctl_tap_state = { + .is_press_action = 1, + .state = 0 +}; + +void lctl_finished(tap_dance_state_t *state, void *user_data) { + lctl_tap_state.state = cur_dance(state); + switch(lctl_tap_state.state) { + case SINGLE_TAP: register_code(KC_LSFT); register_code(KC_LBRC); break; + case SINGLE_HOLD: register_code(KC_LCTL); break; + } +} + +void lctl_reset(tap_dance_state_t *state, void *user_data) { + switch(lctl_tap_state.state) { + case SINGLE_TAP: unregister_code(KC_LSFT); unregister_code(KC_LBRC); break; + case SINGLE_HOLD: unregister_code(KC_LCTL); break; + } + lctl_tap_state.state = 0; +} + +static tap d20_tap_state = { + .is_press_action = 1, + .state = 0, +}; + +int d20_srand = 0; +uint32_t timer_seed; + +void d20_finished(tap_dance_state_t *state, void *user_data) { + d20_tap_state.state = cur_dance(state); + switch(d20_tap_state.state) { + case SINGLE_HOLD: { + if(d20_srand == 0){ + timer_seed = timer_read32(); + srand((unsigned int)timer_seed); + d20_srand = 1; + } + + SEND_STRING("Seed: "); + // uint32_t has max size of 4294967296 + char SEED_STR_SIZE = 16; + // Initialize seed_str + char seed_str[SEED_STR_SIZE]; + for (int iter=0;iter < SEED_STR_SIZE;iter++) seed_str[iter] = 0; + + int i = SEED_STR_SIZE - 2; // Leave null byte on end of string + while (timer_seed && i >= 0) { + seed_str[i] = timer_seed % 10 + '0'; + timer_seed /= 10; + i -= 1; + } + i++; + + // Move all characters over i spaces + char move = i; + while (i < SEED_STR_SIZE -1) { + seed_str[i-move] = seed_str[i]; + seed_str[i] = 0; + i += 1; + } + + send_string(seed_str); + break; + // Else allow fall through + } + case SINGLE_TAP: { + if(d20_srand == 0){ + timer_seed = timer_read(); + srand((unsigned int)timer_seed); + d20_srand = 1; + } + + unsigned char roll = rand() % 20 + 1; + char res[3]; + res[0] = (char)((char)(roll / 10) + '0'); + res[1] = (char)(roll % 10 + '0'); + + send_string(res); + + break; + } + } +} + +void d20_reset(tap_dance_state_t *state, void *user_data) { + d20_tap_state.state = 0; +} + +tap_dance_action_t tap_dance_actions[] = { + [PN_SWAP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, pn_finished, pn_reset), + [LAPO] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lalt_finished, lalt_reset), + [RAPC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ralt_finished, ralt_reset), + [LCPO] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lctl_finished, lctl_reset), + [RCPC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rctl_finished, rctl_reset), + [D20] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, d20_finished, d20_reset), +}; diff --git a/keyboards/evyd13/atom47/keymaps/phsc138/readme.md b/keyboards/evyd13/atom47/keymaps/phsc138/readme.md new file mode 100644 index 000000000000..6817befa8e7d --- /dev/null +++ b/keyboards/evyd13/atom47/keymaps/phsc138/readme.md @@ -0,0 +1,18 @@ +# PHSC138's Layout for the atom47 +## Base layer +The base layer is a standard vortex core layout + +## Layer 1 (PROG) +This layer contains space cadet bindings to make programming easier. Ex: tapping left shift will input an open parenthesis + +## Layer 2 (GAME) +This layer contains game specific macros, currently only a D20 has been implemented + +## Layer 3 (FN) +This can be activated by pressing the `fn` key. This layer contains mostly the same bindings as the base vortex core except vim keybinds have replaced the arrow keys. + +## Layer 4 (FN1) +This can be activated by pressing the `fn1` key. This is the default vortex core layer. + +## Layer 5 (NUM) +This is a numpad that can be activated by holding the PN key. This also has some useful keys, such as `QC_BOOT`. diff --git a/keyboards/evyd13/atom47/keymaps/phsc138/rules.mk b/keyboards/evyd13/atom47/keymaps/phsc138/rules.mk new file mode 100644 index 000000000000..c6a2d559888e --- /dev/null +++ b/keyboards/evyd13/atom47/keymaps/phsc138/rules.mk @@ -0,0 +1,3 @@ +MOUSEKEY_ENABLE = no +NKRO_ENABLE = yes +TAP_DANCE_ENABLE = yes From 18335ddda5f61fd778adebed098e9983f34a93a6 Mon Sep 17 00:00:00 2001 From: Josh Hinnebusch Date: Wed, 12 Apr 2023 13:27:37 -0400 Subject: [PATCH 63/73] [Keyboard] Fix h87 g2 VID conflict (#20388) --- keyboards/hineybush/h87_g2/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/hineybush/h87_g2/info.json b/keyboards/hineybush/h87_g2/info.json index 2868e6cffbb3..f38dc302ef44 100644 --- a/keyboards/hineybush/h87_g2/info.json +++ b/keyboards/hineybush/h87_g2/info.json @@ -21,7 +21,7 @@ "usb": { "device_version": "1.0.0", "pid": "0x0001", - "vid": "0x4048" + "vid": "0x4069" }, "layouts": { "LAYOUT": { From 83dcbefeedc56f6450d0dc90430f8f1003bfb726 Mon Sep 17 00:00:00 2001 From: Tommy Oldfield Date: Wed, 12 Apr 2023 18:31:47 +0100 Subject: [PATCH 64/73] [Keymap] Add personal keymap for Lily58 (#18735) --- keyboards/lily58/keymaps/oldfieldtc/config.h | 23 +++ keyboards/lily58/keymaps/oldfieldtc/keymap.c | 191 ++++++++++++++++++ keyboards/lily58/keymaps/oldfieldtc/readme.md | 22 ++ keyboards/lily58/keymaps/oldfieldtc/rules.mk | 11 + 4 files changed, 247 insertions(+) create mode 100644 keyboards/lily58/keymaps/oldfieldtc/config.h create mode 100644 keyboards/lily58/keymaps/oldfieldtc/keymap.c create mode 100644 keyboards/lily58/keymaps/oldfieldtc/readme.md create mode 100644 keyboards/lily58/keymaps/oldfieldtc/rules.mk diff --git a/keyboards/lily58/keymaps/oldfieldtc/config.h b/keyboards/lily58/keymaps/oldfieldtc/config.h new file mode 100644 index 000000000000..edfc9530b24f --- /dev/null +++ b/keyboards/lily58/keymaps/oldfieldtc/config.h @@ -0,0 +1,23 @@ +/* +This is the c configuration file for the keymap + +Copyright 2022 Tommy Oldfield <@oldfieldtc> + +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 TAPPING_FORCE_HOLD +#define TAPPING_TERM 100 \ No newline at end of file diff --git a/keyboards/lily58/keymaps/oldfieldtc/keymap.c b/keyboards/lily58/keymaps/oldfieldtc/keymap.c new file mode 100644 index 000000000000..11750e82e85c --- /dev/null +++ b/keyboards/lily58/keymaps/oldfieldtc/keymap.c @@ -0,0 +1,191 @@ +// Copyright 2022 Tommy Oldfield (@oldfieldtc) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layer_number { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST, +}; + +void render_logo(void); + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTY + * ,-----------------------------------------. ,-----------------------------------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |BackSP| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | - | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | + * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| + * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * |LAlt/⌥|LGUI/⌘|LOWER| /Space / \Enter \ |RAISE | Play |RGUI/⌘ | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ + + [_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_MPLY, KC_RGUI +), + +/* LOWER + * ,-----------------------------------------. ,-----------------------------------------. + * | Mute |Vol - |Vol + | Play | Rwd | Fwd | | | | | | | DEL | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | ~ | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * | Caps | | | | | |-------| |-------| | _ | + | { | } | |\ | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | | |LOWER | / / \ \ |RAISE | | | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ +[_LOWER] = LAYOUT( + KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MRWD, KC_MFFD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, + 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_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_NONUS_HASH, + KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_NONUS_BACKSLASH, + KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO +), + +/* RAISE + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | # | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | | |LOWER | / / \ \ |RAISE | | | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ + +[_RAISE] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO + ), + +/* ADJUST + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | | |LOWER | / / \ \ |RAISE | | | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ + [_ADJUST] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, + KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO) + +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (!is_keyboard_master()) + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + return rotation; +} + +// When you add source files to SRC in rules.mk, you can use functions. +const char *read_layer_state(void); +const char *read_logo(void); +void set_keylog(uint16_t keycode, keyrecord_t *record); +const char *read_keylog(void); +const char *read_keylogs(void); + +bool oled_task_user(void) { + if (is_keyboard_master()) { + // If you want to change the display of OLED, you need to change here + oled_write_ln(read_layer_state(), false); + oled_write_ln(read_keylog(), false); + oled_write_ln(read_keylogs(), false); + + oled_write_P(PSTR("WPM: "), false); + oled_write_ln(get_u8_str(get_current_wpm(), '0'), false); + } else { + render_logo(); + } + return false; +} +#endif // OLED_ENABLE + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { +#ifdef OLED_ENABLE + set_keylog(keycode, record); +#endif + + } + return true; +} + +void render_logo(void) { + static const char PROGMEM my_logo[] = { + // 'punpun 2', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0xe0, 0x70, 0x38, 0x1c, 0x0c, 0x06, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, +0x02, 0x02, 0x02, 0x06, 0x06, 0x06, 0x04, 0x04, 0x0c, 0x0c, 0x08, 0x08, 0x18, 0x18, 0x18, 0x10, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x0c, 0x1c, 0x1c, 0x18, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x18, 0x10, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x70, 0x38, 0x1c, 0x06, 0x03, +0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x04, 0x04, 0x0c, 0x08, 0x18, 0x18 + }; + oled_write_raw_P(my_logo, sizeof(my_logo)); +} \ No newline at end of file diff --git a/keyboards/lily58/keymaps/oldfieldtc/readme.md b/keyboards/lily58/keymaps/oldfieldtc/readme.md new file mode 100644 index 000000000000..8aa978d52e25 --- /dev/null +++ b/keyboards/lily58/keymaps/oldfieldtc/readme.md @@ -0,0 +1,22 @@ +# Lily58 keyboard keymap + +## Default layer +![Default keymap layer](https://i.imgur.com/c5kbMww.jpg) + +[Default layer - Keyboard layout editor](http://www.keyboard-layout-editor.com/#/gists/8ff6160c16e9b9ee7e104538bfad4a59) + +## Lower layer +![Lower keymap layer](https://i.imgur.com/GcLR3Uw.jpg) + +[Lower layer - Keyboard layout editor](http://www.keyboard-layout-editor.com/#/gists/7d77cd87c53d5eded50530242b852c20) + +## Raise layer +![Raise keymap layer](https://i.imgur.com/aNVwlKJ.jpg) + +[Raise layer - Keyboard layout editor](http://www.keyboard-layout-editor.com/#/gists/c7a63881a13e339f1b5b847637677e5f) + +## Adjust layer +![Adjust keymap layer](https://i.imgur.com/0l4c1Df.jpg) + +[Adjust layer - Keyboard layout editor](http://www.keyboard-layout-editor.com/#/gists/15a25bc84fa69a1b9f228574674728d3) + diff --git a/keyboards/lily58/keymaps/oldfieldtc/rules.mk b/keyboards/lily58/keymaps/oldfieldtc/rules.mk new file mode 100644 index 000000000000..004b46d64100 --- /dev/null +++ b/keyboards/lily58/keymaps/oldfieldtc/rules.mk @@ -0,0 +1,11 @@ +EXTRAKEY_ENABLE = yes +WPM_ENABLE = yes + +# If you want to change the display of OLED, you need to change here +SRC += ./lib/rgb_state_reader.c \ + ./lib/layer_state_reader.c \ + ./lib/logo_reader.c \ + ./lib/keylogger.c \ + ./lib/timelogger.c \ + # ./lib/mode_icon_reader.c \ + # ./lib/host_led_state_reader.c \ \ No newline at end of file From 0382a25e3535c1067bb31faac63ac5fc82132b72 Mon Sep 17 00:00:00 2001 From: Paulo Pereira Date: Wed, 12 Apr 2023 20:28:26 +0100 Subject: [PATCH 65/73] [Keymap] Add paulomp90 lily58 keymap (#20327) Co-authored-by: Drashna Jaelre --- keyboards/lily58/keymaps/paulomp90/config.h | 22 ++ .../paulomp90/features/custom_shift_keys.c | 67 +++++ .../paulomp90/features/custom_shift_keys.h | 29 ++ keyboards/lily58/keymaps/paulomp90/keymap.c | 264 ++++++++++++++++++ keyboards/lily58/keymaps/paulomp90/readme.md | 10 + keyboards/lily58/keymaps/paulomp90/rules.mk | 14 + 6 files changed, 406 insertions(+) create mode 100644 keyboards/lily58/keymaps/paulomp90/config.h create mode 100644 keyboards/lily58/keymaps/paulomp90/features/custom_shift_keys.c create mode 100644 keyboards/lily58/keymaps/paulomp90/features/custom_shift_keys.h create mode 100644 keyboards/lily58/keymaps/paulomp90/keymap.c create mode 100644 keyboards/lily58/keymaps/paulomp90/readme.md create mode 100644 keyboards/lily58/keymaps/paulomp90/rules.mk diff --git a/keyboards/lily58/keymaps/paulomp90/config.h b/keyboards/lily58/keymaps/paulomp90/config.h new file mode 100644 index 000000000000..b2cfbdd69c93 --- /dev/null +++ b/keyboards/lily58/keymaps/paulomp90/config.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Paulo Pereira + * + * 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 3 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 QUICK_TAP_TERM 0 +#define TAPPING_TERM 150 +#define TAP_CODE_DELAY 10 \ No newline at end of file diff --git a/keyboards/lily58/keymaps/paulomp90/features/custom_shift_keys.c b/keyboards/lily58/keymaps/paulomp90/features/custom_shift_keys.c new file mode 100644 index 000000000000..f2e091c0b9dc --- /dev/null +++ b/keyboards/lily58/keymaps/paulomp90/features/custom_shift_keys.c @@ -0,0 +1,67 @@ +/* Copyright 2023 Paulo Pereira + * + * 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 3 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 "custom_shift_keys.h" + +bool process_custom_shift_keys(uint16_t keycode, keyrecord_t *record) { + static uint16_t registered_keycode = KC_NO; + + // If a custom shift key is registered, then this event is either + // releasing it or manipulating another key at the same time. Either way, + // we release the currently registered key. + if (registered_keycode != KC_NO) { + unregister_code16(registered_keycode); + registered_keycode = KC_NO; + } + + if (record->event.pressed) { // Press event. + const uint8_t mods = get_mods(); +#ifndef NO_ACTION_ONESHOT + if ((mods | get_weak_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) { +#else + if ((mods | get_weak_mods()) & MOD_MASK_SHIFT) { // Shift is held. +#endif // NO_ACTION_ONESHOT + // Continue default handling if this is a tap-hold key being held. + if ((IS_QK_MOD_TAP(keycode) || IS_QK_LAYER_TAP(keycode)) && + record->tap.count == 0) { + return true; + } + + // Search for a custom shift key whose keycode is `keycode`. + for (int i = 0; i < NUM_CUSTOM_SHIFT_KEYS; ++i) { + if (keycode == custom_shift_keys[i].keycode) { + registered_keycode = custom_shift_keys[i].shifted_keycode; + if (IS_QK_MODS(registered_keycode) && // Should key be shifted? + (QK_MODS_GET_MODS(registered_keycode) & MOD_LSFT) != 0) { + register_code16(registered_keycode); // If so, press directly. + } else { + // If not, cancel shift mods, press the key, and restore mods. + del_weak_mods(MOD_MASK_SHIFT); +#ifndef NO_ACTION_ONESHOT + del_oneshot_mods(MOD_MASK_SHIFT); +#endif // NO_ACTION_ONESHOT + unregister_mods(MOD_MASK_SHIFT); + register_code16(registered_keycode); + set_mods(mods); + } + return false; + } + } + } + } + + return true; // Continue with default handling. +} diff --git a/keyboards/lily58/keymaps/paulomp90/features/custom_shift_keys.h b/keyboards/lily58/keymaps/paulomp90/features/custom_shift_keys.h new file mode 100644 index 000000000000..2097f2bb7ea3 --- /dev/null +++ b/keyboards/lily58/keymaps/paulomp90/features/custom_shift_keys.h @@ -0,0 +1,29 @@ +/* Copyright 2023 Paulo Pereira + * + * 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 3 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 QMK_KEYBOARD_H + +typedef struct { + uint16_t keycode; + uint16_t shifted_keycode; +} custom_shift_key_t; + +extern const custom_shift_key_t custom_shift_keys[]; +extern uint8_t NUM_CUSTOM_SHIFT_KEYS; + +bool process_custom_shift_keys(uint16_t keycode, keyrecord_t *record); \ No newline at end of file diff --git a/keyboards/lily58/keymaps/paulomp90/keymap.c b/keyboards/lily58/keymaps/paulomp90/keymap.c new file mode 100644 index 000000000000..af0fafb33739 --- /dev/null +++ b/keyboards/lily58/keymaps/paulomp90/keymap.c @@ -0,0 +1,264 @@ +/* Copyright 2023 Paulo Pereira + * + * 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 3 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 "keymap_portuguese.h" +#include "features/custom_shift_keys.h" + +enum layer_number { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST, +}; + +/* tap dance shifts */ +typedef struct { + bool is_press_action; + int state; +} tap; + +typedef enum { + TD_NONE, + TD_UNKNOWN, + TD_SINGLE_TAP, + TD_SINGLE_HOLD, + TD_DOUBLE_TAP +} td_state_t; + +enum { LEFT_SHIFT = 0, RIGHT_SHIFT = 1 }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* QWERTY + * ,-----------------------------------------. ,-----------------------------------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | '? | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | +* | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |LShift| A | S | D | F | G |-------. ,-------| H | J | K | L | Ç | BACK | + * |------+------+------+------+------+------| <> | | ´` |------+------+------+------+------+------| + * |LCTRL | Z | X | C | V | B |-------| |-------| N | M | ,; | .: | _- |Shift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE | RGUI | RAlt | + * | | | |/ / \ \ | | | | + * `-------------------''-------' '------''--------------------' + */ + [_QWERTY] = 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, + TD(LEFT_SHIFT), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSPC, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(RIGHT_SHIFT), + KC_LALT, KC_LGUI, TL_LOWR, KC_SPC, KC_ENT, TL_UPPR, KC_RGUI, KC_RALT + ), + + /* LOWER + * ,-----------------------------------------. ,-----------------------------------------. + * | | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | F1 | | | | | | | PgUp | HOME | Up | END | ºª | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | |-------. ,-------| PgDn | Left | Down |Right | ~^ | DEL | + * |------+------+------+------+------+------| <> | | ´` |------+------+------+------+------+------| + * | | | | << | >|| | >> |-------| |-------| | Vol+ | Vol- | Mute | \| | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE | RGUI | RAlt | + * | | | |/ / \ \ | | | | + * `-------------------''-------' '------''--------------------' + */ + [_LOWER] = LAYOUT( + _______, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, + KC_F1, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_LBRC, KC_F12, + _______, _______, _______, _______, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUOT, KC_DEL, + _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* RAISE + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | 1 | 2 | 3 | 4 | 5 | | PgUp | HOME | Up | END | ºª | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | 6 | 7 | 8 | 9 | 0 |-------. ,-------| PgDn | Left | Down |Right | ~^ | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * | | | | << | >|| | >> |-------| |-------| | Vol+ | Vol- | Mute | \| | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE | RGUI | RAlt | + * | | | |/ / \ \ | | | | + * `-------------------''-------' '------''--------------------' + */ + [_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_LBRC, _______, + _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUOT, _______, + _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* ADJUST + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |RGB ON| HUE+ | SAT+ | VAL+ | | BRG+ |-------. ,-------| | | | | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * | MODE | HUE- | SAT- | VAL- | | BRG- |-------| |-------| | | | | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE | RGUI | RAlt | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ + + [_ADJUST] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_BRID, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +// SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (!is_keyboard_master()) return OLED_ROTATION_180; // flips the display 180 degrees if offhand + return rotation; +} + +// When you add source files to SRC in rules.mk, you can use functions. +const char *read_layer_state(void); +const char *read_logo(void); +void set_keylog(uint16_t keycode, keyrecord_t *record); +const char *read_keylog(void); +const char *read_keylogs(void); + +bool oled_task_user(void) { + if (is_keyboard_master()) { + oled_write_ln(read_layer_state(), false); + oled_write_ln(read_keylog(), false); + oled_write_ln(read_keylogs(), false); + } else { + oled_write(read_logo(), false); + } + return false; +} +#endif // OLED_ENABLE + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + #ifdef OLED_ENABLE + set_keylog(keycode, record); + #endif + } + + return true; +} + +/* Tap dance shifts */ +td_state_t cur_dance(tap_dance_state_t *state) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) { + return TD_SINGLE_TAP; + } else { + return TD_SINGLE_HOLD; + } + } else if (state->count == 2) { + return TD_DOUBLE_TAP; + } + + return TD_UNKNOWN; +} + +static tap lshifttap_state = {.is_press_action = true, .state = TD_NONE}; + +static tap rshifttap_state = {.is_press_action = true, .state = TD_NONE}; + +void lshift_finished(tap_dance_state_t *state, void *user_data) { + lshifttap_state.state = cur_dance(state); + + switch (lshifttap_state.state) { + case TD_SINGLE_TAP: + register_code16(LALT(KC_LEFT)); + break; + case TD_SINGLE_HOLD: + register_code(KC_LSFT); + break; + case TD_DOUBLE_TAP: + tap_code16(LALT(KC_LEFT)); + register_code16(LALT(KC_LEFT)); + break; + default: + break; + } +} + +void lshift_reset(tap_dance_state_t *state, void *user_data) { + switch (lshifttap_state.state) { + case TD_SINGLE_TAP: + unregister_code16(LALT(KC_LEFT)); + break; + case TD_SINGLE_HOLD: + unregister_code(KC_LSFT); + break; + case TD_DOUBLE_TAP: + unregister_code16(LALT(KC_LEFT)); + break; + } + lshifttap_state.state = TD_NONE; +} + +void rshift_finished(tap_dance_state_t *state, void *user_data) { + rshifttap_state.state = cur_dance(state); + + switch (rshifttap_state.state) { + case TD_SINGLE_TAP: + register_code16(LALT(KC_RGHT)); + break; + case TD_SINGLE_HOLD: + register_code(KC_RSFT); + break; + case TD_DOUBLE_TAP: + tap_code16(LALT(KC_RGHT)); + register_code16(LALT(KC_RGHT)); + break; + default: + break; + } +} + +void rshift_reset(tap_dance_state_t *state, void *user_data) { + switch (rshifttap_state.state) { + case TD_SINGLE_TAP: + unregister_code16(LALT(KC_RGHT)); + break; + case TD_SINGLE_HOLD: + unregister_code(KC_RSFT); + break; + case TD_DOUBLE_TAP: + unregister_code16(LALT(KC_RGHT)); + break; + } + rshifttap_state.state = TD_NONE; +} + +tap_dance_action_t tap_dance_actions[] = { + [LEFT_SHIFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lshift_finished, lshift_reset), + [RIGHT_SHIFT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rshift_finished, rshift_reset), +}; diff --git a/keyboards/lily58/keymaps/paulomp90/readme.md b/keyboards/lily58/keymaps/paulomp90/readme.md new file mode 100644 index 000000000000..9ab72cd0b2c5 --- /dev/null +++ b/keyboards/lily58/keymaps/paulomp90/readme.md @@ -0,0 +1,10 @@ +# Paulo Lily58 + +Lily58 is 6×4 column-staggered split keyboard. + +![Keymap first layer](https://i.postimg.cc/HWcgcxb8/lily58.png "Keymap first layer") + +- Add portuguese include +- Add custom shift behaviour, when tap move by 1 word left <> right, when held act as shift. +idea taken from [here](https://getreuer.info/posts/keyboards/custom-shift-keys/index.html). + diff --git a/keyboards/lily58/keymaps/paulomp90/rules.mk b/keyboards/lily58/keymaps/paulomp90/rules.mk new file mode 100644 index 000000000000..d7bfc9739429 --- /dev/null +++ b/keyboards/lily58/keymaps/paulomp90/rules.mk @@ -0,0 +1,14 @@ +EXTRAKEY_ENABLE = yes # Audio control and System control +OLED_ENABLE= yes # OLED display +TAP_DANCE_ENABLE = yes +TRI_LAYER_ENABLE = yes + +# If you want to change the display of OLED, you need to change here +SRC += ./lib/rgb_state_reader.c \ + ./lib/layer_state_reader.c \ + ./lib/logo_reader.c \ + ./lib/keylogger.c \ + features/custom_shift_keys.c \ + # ./lib/mode_icon_reader.c \ + # ./lib/host_led_state_reader.c \ + # ./lib/timelogger.c \ From ce417226b2c827c233bdee392ce78b18906077d8 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Wed, 12 Apr 2023 14:29:29 -0700 Subject: [PATCH 66/73] 4pplet/eagle_viper_rep/rev_a Layout Macro Conversion and Additions (#20414) * info.json: apply friendly formatting * add matrix_diagram.md * move matrix data to info.json * add LAYOUT_60_ansi_split_bs_rshift * add LAYOUT_60_tsangan_hhkb * add LAYOUT_60_hhkb --- .../4pplet/eagle_viper_rep/rev_a/info.json | 346 ++++++++++++++---- .../eagle_viper_rep/rev_a/matrix_diagram.md | 24 ++ .../4pplet/eagle_viper_rep/rev_a/rev_a.h | 20 - 3 files changed, 305 insertions(+), 85 deletions(-) create mode 100644 keyboards/4pplet/eagle_viper_rep/rev_a/matrix_diagram.md diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/info.json b/keyboards/4pplet/eagle_viper_rep/rev_a/info.json index 8748b3248008..57f7e3469ee9 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_a/info.json +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/info.json @@ -18,71 +18,287 @@ "layouts": { "LAYOUT_all": { "layout": [ - { "label": "Esc", "x": 0, "y": 0 }, - { "label": "!", "x": 1, "y": 0 }, - { "label": "@", "x": 2, "y": 0 }, - { "label": "#", "x": 3, "y": 0 }, - { "label": "$", "x": 4, "y": 0 }, - { "label": "%", "x": 5, "y": 0 }, - { "label": "^", "x": 6, "y": 0 }, - { "label": "&", "x": 7, "y": 0 }, - { "label": "*", "x": 8, "y": 0 }, - { "label": "(", "x": 9, "y": 0 }, - { "label": ")", "x": 10, "y": 0 }, - { "label": "_", "x": 11, "y": 0 }, - { "label": "+", "x": 12, "y": 0 }, - { "label": "|", "x": 13, "y": 0 }, - { "label": "~", "x": 14, "y": 0 }, - { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, - { "label": "Q", "x": 1.5, "y": 1 }, - { "label": "W", "x": 2.5, "y": 1 }, - { "label": "E", "x": 3.5, "y": 1 }, - { "label": "R", "x": 4.5, "y": 1 }, - { "label": "T", "x": 5.5, "y": 1 }, - { "label": "Y", "x": 6.5, "y": 1 }, - { "label": "U", "x": 7.5, "y": 1 }, - { "label": "I", "x": 8.5, "y": 1 }, - { "label": "O", "x": 9.5, "y": 1 }, - { "label": "P", "x": 10.5, "y": 1 }, - { "label": "{", "x": 11.5, "y": 1 }, - { "label": "}", "x": 12.5, "y": 1 }, - { "label": "Backsp.", "x": 13.5, "y": 1, "w": 1.5 }, - { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, - { "label": "A", "x": 1.75, "y": 2 }, - { "label": "S", "x": 2.75, "y": 2 }, - { "label": "D", "x": 3.75, "y": 2 }, - { "label": "F", "x": 4.75, "y": 2 }, - { "label": "G", "x": 5.75, "y": 2 }, - { "label": "H", "x": 6.75, "y": 2 }, - { "label": "J", "x": 7.75, "y": 2 }, - { "label": "K", "x": 8.75, "y": 2 }, - { "label": "L", "x": 9.75, "y": 2 }, - { "label": ":", "x": 10.75, "y": 2 }, - { "label": "\"", "x": 11.75, "y": 2 }, - { "label": "~", "x": 12.75, "y": 2}, - { "label": "Enter", "x": 13.75, "y": 2, "w": 1.25 }, - { "label": "Shift", "x": 0, "y": 3, "w": 1.25 }, - { "label": "|", "x": 1.25, "y": 3 }, - { "label": "Z", "x": 2.25, "y": 3 }, - { "label": "X", "x": 3.25, "y": 3 }, - { "label": "C", "x": 4.25, "y": 3 }, - { "label": "V", "x": 5.25, "y": 3 }, - { "label": "B", "x": 6.25, "y": 3 }, - { "label": "N", "x": 7.25, "y": 3 }, - { "label": "M", "x": 8.25, "y": 3 }, - { "label": "<", "x": 9.25, "y": 3 }, - { "label": ">", "x": 10.25, "y": 3 }, - { "label": "?", "x": 11.25, "y": 3 }, - { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 }, - { "label": "Fn", "x": 14, "y": 3, "w": 1 }, - { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, - { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, - { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, - { "label": "Space", "x": 3.75, "y": 4, "w": 6.25 }, - { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, - { "label": "Menu", "x": 11.25, "y": 4, "w": 1.25 }, - { "label": "Win", "x": 12.5, "y": 4, "w": 1.25 }, - { "label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 } + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [1, 1], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [1, 2], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [1, 3], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [1, 4], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [1, 5], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 6], "x": 12, "y": 0}, + {"label": "|", "matrix": [1, 6], "x": 13, "y": 0}, + {"label": "~", "matrix": [3, 6], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1}, + {"label": "Backsp.", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2}, + {"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 2, "w": 1.25}, + + {"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3}, + + {"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [1, 1], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [1, 2], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [1, 3], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [1, 4], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [1, 5], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 6], "x": 12, "y": 0}, + {"label": "|", "matrix": [1, 6], "x": 13, "y": 0}, + {"label": "~", "matrix": [3, 6], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1}, + {"label": "Backsp.", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3}, + + {"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [1, 1], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [1, 2], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [1, 3], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [1, 4], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [1, 5], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 6], "x": 12, "y": 0}, + {"label": "|", "matrix": [1, 6], "x": 13, "y": 0}, + {"label": "~", "matrix": [3, 6], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1}, + {"label": "Backsp.", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3}, + + {"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [9, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + + "LAYOUT_60_hhkb": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [1, 1], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [1, 2], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [1, 3], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [1, 4], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [1, 5], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 6], "x": 12, "y": 0}, + {"label": "|", "matrix": [1, 6], "x": 13, "y": 0}, + {"label": "~", "matrix": [3, 6], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1}, + {"label": "Backsp.", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3}, + + {"label": "Alt", "matrix": [9, 0], "x": 1.5, "y": 4}, + {"label": "GUI", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"label": "GUI", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, + {"label": "Alt", "matrix": [9, 5], "x": 12.5, "y": 4} ] } } diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/matrix_diagram.md b/keyboards/4pplet/eagle_viper_rep/rev_a/matrix_diagram.md new file mode 100644 index 000000000000..6a51e0447ea4 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/matrix_diagram.md @@ -0,0 +1,24 @@ +# Matrix Diagram for 4pplet Eagle Viper REP Rev A + +``` + ┌───────┐ + 2u Backspace │36? │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │10 │01 │11 │02 │12 │03 │13 │04 │14 │05 │15 │06 │16 │36 │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐ +│20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │56 │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐76 │ ISO Enter +│40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │76 │ │46 │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴────┘ +│60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │96 │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ +│80 │90 │91 │93 │94 │85 │95 │86 │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +┌────────┐ ┌──────────┐ +│60 │ 2.25u LShift 2.75u RShift │66 │ +└────────┘ └──────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│80 │90 │91 │93 │85 │95 │86 │ Tsangan/WKL/HHKB +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +``` diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/rev_a.h b/keyboards/4pplet/eagle_viper_rep/rev_a/rev_a.h index 5dac41f92105..35ce50a02a20 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_a/rev_a.h +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/rev_a.h @@ -19,23 +19,3 @@ along with this program. If not, see . #include "quantum.h" void setLayerLed(layer_state_t state); - -#define LAYOUT_all( \ - k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k36, \ - k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k56,\ - k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k76,\ - k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k96,\ - k80, k90, k91, k93, k94, k85, k95, k86 \ -) \ -{ \ - {k00, k01, k02, k03, k04, k05, k06}, \ - {k10, k11, k12, k13, k14, k15, k16}, \ - {k20, k21, k22, k23, k24, k25, k26}, \ - {k30, k31, k32, k33, k34, k35, k36}, \ - {k40, k41, k42, k43, k44, k45, k46}, \ - {k50, k51, k52, k53, k54, k55, k56}, \ - {k60, k61, k62, k63, k64, k65, k66}, \ - {k70, k71, k72, k73, k74, k75, k76}, \ - {k80, KC_NO, KC_NO, KC_NO, KC_NO, k85, k86}, \ - {k90, k91, KC_NO, k93, k94, k95, k96} \ -} From 6d965d486c08166c6d6d8d699721a02b053d35d0 Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Thu, 13 Apr 2023 12:04:02 +0800 Subject: [PATCH 67/73] Add hardware information momokai keyboards (#20434) --- keyboards/momokai/tap_duo/readme.md | 3 ++- keyboards/momokai/tap_trio/readme.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/keyboards/momokai/tap_duo/readme.md b/keyboards/momokai/tap_duo/readme.md index 8027955ba241..8afb5181b467 100644 --- a/keyboards/momokai/tap_duo/readme.md +++ b/keyboards/momokai/tap_duo/readme.md @@ -2,7 +2,8 @@ * Keyboard Maintainer: [peepeetee](https://github.com/peepeetee) - +* Hardware Supported: Tap Duo +* Hardware Availability: [Momokai](https://www.momokai.com/) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/momokai/tap_trio/readme.md b/keyboards/momokai/tap_trio/readme.md index 8027955ba241..c97a681fa7b4 100644 --- a/keyboards/momokai/tap_trio/readme.md +++ b/keyboards/momokai/tap_trio/readme.md @@ -2,7 +2,8 @@ * Keyboard Maintainer: [peepeetee](https://github.com/peepeetee) - +* Hardware Supported: Tap Trio +* Hardware Availability: [Momokai](https://www.momokai.com/) Make example for this keyboard (after setting up your build environment): From d732b0b8497cb4a67dc1ce706dd26a0610e15293 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 15 Apr 2023 10:36:11 -0700 Subject: [PATCH 68/73] ADPenrose Obi Layout Macro Conversion and Addition (#20445) * add matrix_diagram.md * info.json: apply friendly formatting * move matrix data to info.json * add LAYOUT_625u_space with reference keymap --- keyboards/adpenrose/obi/info.json | 163 ++++++++++++------ .../obi/keymaps/default_625u_space/keymap.c | 41 +++++ .../obi/keymaps/default_625u_space/rules.mk | 1 + keyboards/adpenrose/obi/matrix_diagram.md | 16 ++ keyboards/adpenrose/obi/obi.c | 5 - keyboards/adpenrose/obi/obi.h | 26 --- 6 files changed, 168 insertions(+), 84 deletions(-) create mode 100644 keyboards/adpenrose/obi/keymaps/default_625u_space/keymap.c create mode 100644 keyboards/adpenrose/obi/keymaps/default_625u_space/rules.mk create mode 100644 keyboards/adpenrose/obi/matrix_diagram.md delete mode 100644 keyboards/adpenrose/obi/obi.c delete mode 100644 keyboards/adpenrose/obi/obi.h diff --git a/keyboards/adpenrose/obi/info.json b/keyboards/adpenrose/obi/info.json index c0c1b73c6448..ce4ba7b47e6f 100644 --- a/keyboards/adpenrose/obi/info.json +++ b/keyboards/adpenrose/obi/info.json @@ -17,60 +17,117 @@ "layouts": { "LAYOUT_all": { "layout": [ - {"label":"F1", "x":0, "y":0}, - {"label":"Tab", "x":1.25, "y":0, "w":1.5}, - {"label":"Q", "x":2.75, "y":0}, - {"label":"W", "x":3.75, "y":0}, - {"label":"E", "x":4.75, "y":0}, - {"label":"R", "x":5.75, "y":0}, - {"label":"T", "x":6.75, "y":0}, - {"label":"Y", "x":7.75, "y":0}, - {"label":"U", "x":8.75, "y":0}, - {"label":"I", "x":9.75, "y":0}, - {"label":"O", "x":10.75, "y":0}, - {"label":"P", "x":11.75, "y":0}, - {"label":"{", "x":12.75, "y":0}, - {"label":"Backspace", "x":13.75, "y":0, "w":1.5}, + {"label": "F1", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "Tab", "matrix": [0, 1], "x": 1.25, "y": 0, "w": 1.5}, + {"label": "Q", "matrix": [0, 2], "x": 2.75, "y": 0}, + {"label": "W", "matrix": [0, 3], "x": 3.75, "y": 0}, + {"label": "E", "matrix": [0, 4], "x": 4.75, "y": 0}, + {"label": "R", "matrix": [0, 5], "x": 5.75, "y": 0}, + {"label": "T", "matrix": [0, 6], "x": 6.75, "y": 0}, + {"label": "Y", "matrix": [0, 7], "x": 7.75, "y": 0}, + {"label": "U", "matrix": [0, 8], "x": 8.75, "y": 0}, + {"label": "I", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "O", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "P", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "{", "matrix": [0, 12], "x": 12.75, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13.75, "y": 0, "w": 1.5}, - {"label":"F2", "x":0, "y":1}, - {"label":"Caps Lock", "x":1.25, "y":1, "w":1.75}, - {"label":"A", "x":3, "y":1}, - {"label":"S", "x":4, "y":1}, - {"label":"D", "x":5, "y":1}, - {"label":"F", "x":6, "y":1}, - {"label":"G", "x":7, "y":1}, - {"label":"H", "x":8, "y":1}, - {"label":"J", "x":9, "y":1}, - {"label":"K", "x":10, "y":1}, - {"label":"L", "x":11, "y":1}, - {"label":":", "x":12, "y":1}, - {"label":"Enter", "x":13, "y":1, "w":2.25}, - - {"label":"F3", "x":0, "y":2}, - {"label":"Shift", "x":1.25, "y":2, "w":2.25}, - {"label":"Z", "x":3.5, "y":2}, - {"label":"X", "x":4.5, "y":2}, - {"label":"C", "x":5.5, "y":2}, - {"label":"V", "x":6.5, "y":2}, - {"label":"B", "x":7.5, "y":2}, - {"label":"N", "x":8.5, "y":2}, - {"label":"M", "x":9.5, "y":2}, - {"label":"<", "x":10.5, "y":2}, - {"label":"Shift", "x":11.5, "y":2, "w":1.75}, - {"label":"Up", "x":13.25, "y":2}, - {"label":"?", "x":14.25, "y":2}, - - {"label":"F4", "x":0, "y":3}, - {"label":"Ctrl", "x":1.25, "y":3, "w":1.25}, - {"label":"Win", "x":2.5, "y":3}, - {"label":"Alt", "x":3.5, "y":3, "w":1.25}, - {"label":"Spacebar", "x":4.75, "y":3, "w":2.25}, - {"label":"Spacebar", "x":7, "y":3, "w":1.25}, - {"label":"Spacebar", "x":8.25, "y":3, "w":2.75}, - {"label":"Alt", "x":11, "y":3, "w":1.25}, - {"label":"Left", "x":12.25, "y":3}, - {"label":"Down", "x":13.25, "y":3}, - {"label":"Right", "x":14.25, "y":3} + {"label": "F2", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "Caps Lock", "matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.75}, + {"label": "A", "matrix": [1, 2], "x": 3, "y": 1}, + {"label": "S", "matrix": [1, 3], "x": 4, "y": 1}, + {"label": "D", "matrix": [1, 4], "x": 5, "y": 1}, + {"label": "F", "matrix": [1, 5], "x": 6, "y": 1}, + {"label": "G", "matrix": [1, 6], "x": 7, "y": 1}, + {"label": "H", "matrix": [1, 7], "x": 8, "y": 1}, + {"label": "J", "matrix": [1, 8], "x": 9, "y": 1}, + {"label": "K", "matrix": [1, 9], "x": 10, "y": 1}, + {"label": "L", "matrix": [1, 10], "x": 11, "y": 1}, + {"label": ":", "matrix": [1, 11], "x": 12, "y": 1}, + {"label": "Enter", "matrix": [1, 13], "x": 13, "y": 1, "w": 2.25}, + + {"label": "F3", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "Shift", "matrix": [2, 1], "x": 1.25, "y": 2, "w": 2.25}, + {"label": "Z", "matrix": [2, 2], "x": 3.5, "y": 2}, + {"label": "X", "matrix": [2, 3], "x": 4.5, "y": 2}, + {"label": "C", "matrix": [2, 4], "x": 5.5, "y": 2}, + {"label": "V", "matrix": [2, 5], "x": 6.5, "y": 2}, + {"label": "B", "matrix": [2, 6], "x": 7.5, "y": 2}, + {"label": "N", "matrix": [2, 7], "x": 8.5, "y": 2}, + {"label": "M", "matrix": [2, 8], "x": 9.5, "y": 2}, + {"label": "<", "matrix": [2, 9], "x": 10.5, "y": 2}, + {"label": "Shift", "matrix": [2, 10], "x": 11.5, "y": 2, "w": 1.75}, + {"label": "Up", "matrix": [2, 12], "x": 13.25, "y": 2}, + {"label": "?", "matrix": [2, 13], "x": 14.25, "y": 2}, + + {"label": "F4", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "Ctrl", "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25}, + {"label": "Win", "matrix": [3, 2], "x": 2.5, "y": 3}, + {"label": "Alt", "matrix": [3, 3], "x": 3.5, "y": 3, "w": 1.25}, + {"label": "Spacebar", "matrix": [3, 5], "x": 4.75, "y": 3, "w": 2.25}, + {"label": "Spacebar", "matrix": [3, 6], "x": 7, "y": 3, "w": 1.25}, + {"label": "Spacebar", "matrix": [3, 7], "x": 8.25, "y": 3, "w": 2.75}, + {"label": "Alt", "matrix": [3, 10], "x": 11, "y": 3, "w": 1.25}, + {"label": "Left", "matrix": [3, 11], "x": 12.25, "y": 3}, + {"label": "Down", "matrix": [3, 12], "x": 13.25, "y": 3}, + {"label": "Right", "matrix": [3, 13], "x": 14.25, "y": 3} + ] + }, + + "LAYOUT_625u_space": { + "layout": [ + {"label": "F1", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "Tab", "matrix": [0, 1], "x": 1.25, "y": 0, "w": 1.5}, + {"label": "Q", "matrix": [0, 2], "x": 2.75, "y": 0}, + {"label": "W", "matrix": [0, 3], "x": 3.75, "y": 0}, + {"label": "E", "matrix": [0, 4], "x": 4.75, "y": 0}, + {"label": "R", "matrix": [0, 5], "x": 5.75, "y": 0}, + {"label": "T", "matrix": [0, 6], "x": 6.75, "y": 0}, + {"label": "Y", "matrix": [0, 7], "x": 7.75, "y": 0}, + {"label": "U", "matrix": [0, 8], "x": 8.75, "y": 0}, + {"label": "I", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "O", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "P", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "{", "matrix": [0, 12], "x": 12.75, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13.75, "y": 0, "w": 1.5}, + + {"label": "F2", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "Caps Lock", "matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.75}, + {"label": "A", "matrix": [1, 2], "x": 3, "y": 1}, + {"label": "S", "matrix": [1, 3], "x": 4, "y": 1}, + {"label": "D", "matrix": [1, 4], "x": 5, "y": 1}, + {"label": "F", "matrix": [1, 5], "x": 6, "y": 1}, + {"label": "G", "matrix": [1, 6], "x": 7, "y": 1}, + {"label": "H", "matrix": [1, 7], "x": 8, "y": 1}, + {"label": "J", "matrix": [1, 8], "x": 9, "y": 1}, + {"label": "K", "matrix": [1, 9], "x": 10, "y": 1}, + {"label": "L", "matrix": [1, 10], "x": 11, "y": 1}, + {"label": ":", "matrix": [1, 11], "x": 12, "y": 1}, + {"label": "Enter", "matrix": [1, 13], "x": 13, "y": 1, "w": 2.25}, + + {"label": "F3", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "Shift", "matrix": [2, 1], "x": 1.25, "y": 2, "w": 2.25}, + {"label": "Z", "matrix": [2, 2], "x": 3.5, "y": 2}, + {"label": "X", "matrix": [2, 3], "x": 4.5, "y": 2}, + {"label": "C", "matrix": [2, 4], "x": 5.5, "y": 2}, + {"label": "V", "matrix": [2, 5], "x": 6.5, "y": 2}, + {"label": "B", "matrix": [2, 6], "x": 7.5, "y": 2}, + {"label": "N", "matrix": [2, 7], "x": 8.5, "y": 2}, + {"label": "M", "matrix": [2, 8], "x": 9.5, "y": 2}, + {"label": "<", "matrix": [2, 9], "x": 10.5, "y": 2}, + {"label": "Shift", "matrix": [2, 10], "x": 11.5, "y": 2, "w": 1.75}, + {"label": "Up", "matrix": [2, 12], "x": 13.25, "y": 2}, + {"label": "?", "matrix": [2, 13], "x": 14.25, "y": 2}, + + {"label": "F4", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "Ctrl", "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25}, + {"label": "Win", "matrix": [3, 2], "x": 2.5, "y": 3}, + {"label": "Alt", "matrix": [3, 3], "x": 3.5, "y": 3, "w": 1.25}, + {"label": "Spacebar", "matrix": [3, 6], "x": 4.75, "y": 3, "w": 6.25}, + {"label": "Alt", "matrix": [3, 10], "x": 11, "y": 3, "w": 1.25}, + {"label": "Left", "matrix": [3, 11], "x": 12.25, "y": 3}, + {"label": "Down", "matrix": [3, 12], "x": 13.25, "y": 3}, + {"label": "Right", "matrix": [3, 13], "x": 14.25, "y": 3} ] } } diff --git a/keyboards/adpenrose/obi/keymaps/default_625u_space/keymap.c b/keyboards/adpenrose/obi/keymaps/default_625u_space/keymap.c new file mode 100644 index 000000000000..defb5169624a --- /dev/null +++ b/keyboards/adpenrose/obi/keymaps/default_625u_space/keymap.c @@ -0,0 +1,41 @@ +// Copyright 2022 Arturo Avila (@ADPenrose) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_625u_space( + KC_ESC, 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_BSPC, + KC_MUTE, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_VOLU, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_RSFT, KC_UP, KC_SLSH, + KC_VOLD, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_625u_space( + KC_DEL, KC_TRNS, 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_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_QUOT, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_625u_space( + KC_TILD, 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_RBRC, + KC_TRNS, QK_BOOT, 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_625u_space( + 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 + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) } +}; +#endif diff --git a/keyboards/adpenrose/obi/keymaps/default_625u_space/rules.mk b/keyboards/adpenrose/obi/keymaps/default_625u_space/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/adpenrose/obi/keymaps/default_625u_space/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/adpenrose/obi/matrix_diagram.md b/keyboards/adpenrose/obi/matrix_diagram.md new file mode 100644 index 000000000000..b4af2f8ac832 --- /dev/null +++ b/keyboards/adpenrose/obi/matrix_diagram.md @@ -0,0 +1,16 @@ +# Matrix Diagram for ADPenrose Obi + +``` +┌───┐┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ +│00 ││01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │ +├───┤├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ +│10 ││11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1D │ +├───┤├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ +│20 ││21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2C │2D │ +├───┤├────┬───┼───┴┬──┴───┴─┬─┴──┬┴───┴───┴─┬─┴──┬───┼───┼───┤ +│30 ││31 │32 │33 │35 │36 │37 │3A │3B │3C │3D │ +└───┘└────┴───┴────┴────────┴────┴──────────┴────┴───┴───┴───┘ + ┌────────────────────────┐ + │36 │ 6.25u Space + └────────────────────────┘ +``` diff --git a/keyboards/adpenrose/obi/obi.c b/keyboards/adpenrose/obi/obi.c deleted file mode 100644 index 2efd4eba472a..000000000000 --- a/keyboards/adpenrose/obi/obi.c +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2022 Arturo Avila (@ADPenrose) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "obi.h" - diff --git a/keyboards/adpenrose/obi/obi.h b/keyboards/adpenrose/obi/obi.h deleted file mode 100644 index 09bf9b29fcd1..000000000000 --- a/keyboards/adpenrose/obi/obi.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2022 Arturo Avila (@ADPenrose) -// SPDX-License-Identifier: GPL-2.0-or-later - -#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_all( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1D, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2C, K2D, \ - K30, K31, K32, K33, K35, K36, K37, K3A, K3B, K3C, K3D \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, KC_NO, K1D }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, KC_NO, K2C, K2D }, \ - { K30, K31, K32, K33, KC_NO, K35, K36, K37, KC_NO, KC_NO, K3A, K3B, K3C, K3D } \ -} From 28c11ed34820860a2061cce264791a285a75d27a Mon Sep 17 00:00:00 2001 From: Markus Knutsson Date: Sat, 15 Apr 2023 20:34:09 +0200 Subject: [PATCH 69/73] Lotus58 glow (#20386) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Joel Challis Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com> --- keyboards/tweetydabird/lotus58/config.h | 13 ++ .../tweetydabird/lotus58/elite_c/info.json | 3 + .../tweetydabird/lotus58/elite_c/rules.mk | 1 + keyboards/tweetydabird/lotus58/info.json | 136 ++++++++++++++++++ .../lotus58/keymaps/default/keymap.c | 86 +++++++++++ .../lotus58/keymaps/default/rules.mk | 2 + keyboards/tweetydabird/lotus58/lotus58.c | 29 ++++ .../tweetydabird/lotus58/nanoboot/rules.mk | 2 + .../tweetydabird/lotus58/promicro/info.json | 3 + .../tweetydabird/lotus58/promicro/rules.mk | 1 + keyboards/tweetydabird/lotus58/readme.md | 37 +++++ 11 files changed, 313 insertions(+) create mode 100644 keyboards/tweetydabird/lotus58/config.h create mode 100644 keyboards/tweetydabird/lotus58/elite_c/info.json create mode 100644 keyboards/tweetydabird/lotus58/elite_c/rules.mk create mode 100644 keyboards/tweetydabird/lotus58/info.json create mode 100644 keyboards/tweetydabird/lotus58/keymaps/default/keymap.c create mode 100644 keyboards/tweetydabird/lotus58/keymaps/default/rules.mk create mode 100644 keyboards/tweetydabird/lotus58/lotus58.c create mode 100644 keyboards/tweetydabird/lotus58/nanoboot/rules.mk create mode 100644 keyboards/tweetydabird/lotus58/promicro/info.json create mode 100644 keyboards/tweetydabird/lotus58/promicro/rules.mk create mode 100644 keyboards/tweetydabird/lotus58/readme.md diff --git a/keyboards/tweetydabird/lotus58/config.h b/keyboards/tweetydabird/lotus58/config.h new file mode 100644 index 000000000000..5df12cfc03f8 --- /dev/null +++ b/keyboards/tweetydabird/lotus58/config.h @@ -0,0 +1,13 @@ +// Copyright 2022 Markus Knutsson (@TweetyDaBird) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Options not yet fully implemented in info.json +#define RGBLIGHT_LIMIT_VAL 175 +#define RGBLIGHT_DEFAULT_VAL ( RGBLIGHT_LIMIT_VAL / 2 ) + +#define SPLIT_HAND_PIN B5 +#define SPLIT_LAYER_STATE_ENABLE +#define SPLIT_LED_STATE_ENABLE +#define SPLIT_OLED_ENABLE diff --git a/keyboards/tweetydabird/lotus58/elite_c/info.json b/keyboards/tweetydabird/lotus58/elite_c/info.json new file mode 100644 index 000000000000..8cebe9b8134f --- /dev/null +++ b/keyboards/tweetydabird/lotus58/elite_c/info.json @@ -0,0 +1,3 @@ +{ + "bootloader": "atmel-dfu" +} diff --git a/keyboards/tweetydabird/lotus58/elite_c/rules.mk b/keyboards/tweetydabird/lotus58/elite_c/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/tweetydabird/lotus58/elite_c/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/tweetydabird/lotus58/info.json b/keyboards/tweetydabird/lotus58/info.json new file mode 100644 index 000000000000..654fdd9a4c8b --- /dev/null +++ b/keyboards/tweetydabird/lotus58/info.json @@ -0,0 +1,136 @@ +{ + "manufacturer": "Tweetys Wild Thinking", + "keyboard_name": "Lotus 58 Glow (QMK)", + "maintainer": "TweetyDaBird", + "bootloader_instructions": "Short marked pads on PCB, or hold top-outer key when plugging in each hand.", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + { "pin_a": "F5", "pin_b": "F4", "resolution": 2 } + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "oled": true, + "encoder": true, + "rgblight": true, + "split": true, + "tri_layer": true + }, + "matrix_pins": { + "cols": ["B1", "B2", "B3", "B6", "F7", "F6"], + "rows": ["D4", "C6", "D7", "E6", "B4"] + }, + "pin_compatible": "promicro", + "processor": "atmega32u4", + "rgblight": { + "led_count": 70, + "pin": "D3", + "split": true, + "split_count": [35, 35], + "sleep": true + }, + "split": { + "bootmagic": { + "matrix": [5, 0] + }, + "enabled": true, + "encoder": { + "right": { + "rotary": [ + { "pin_a": "F4", "pin_b": "F5", "resolution": 2 } + ] + } + }, + "soft_serial_pin": "D2", + "transport": { + "protocol": "serial", + "sync_matrix_state": true, + "sync_modifiers": true + }, + "usb_detect": { + "enabled": true + } + }, + "url": "https://lectronz.com/stores/tweetys-wild-thinking", + "usb": { + "vid": "0xFEED", + "pid": "0x23B0", + "device_version": "1.2.3", + "force_nkro": true + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0.75 }, + { "label": "1", "matrix": [0, 1], "x": 1, "y": 0.5 }, + { "label": "2", "matrix": [0, 2], "x": 2, "y": 0.25 }, + { "label": "3", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "4", "matrix": [0, 4], "x": 4, "y": 0.25 }, + { "label": "5", "matrix": [0, 5], "x": 5, "y": 0.5 }, + { "label": "Left ENC", "matrix": [4, 0], "x": 6.25, "y": 0.75 }, + { "label": "Right ENC", "matrix": [9, 0], "x": 7.75, "y": 0.75 }, + { "label": "6", "matrix": [5, 5], "x": 9, "y": 0.5 }, + { "label": "7", "matrix": [5, 4], "x": 10, "y": 0.25 }, + { "label": "8", "matrix": [5, 3], "x": 11, "y": 0 }, + { "label": "9", "matrix": [5, 2], "x": 12, "y": 0.25 }, + { "label": "0", "matrix": [5, 1], "x": 13, "y": 0.5 }, + { "label": "-", "matrix": [5, 0], "x": 14, "y": 0.75 }, + { "label": "Tab", "matrix": [1, 0], "x": 0, "y": 1.75 }, + { "label": "Q", "matrix": [1, 1], "x": 1, "y": 1.5 }, + { "label": "W", "matrix": [1, 2], "x": 2, "y": 1.25 }, + { "label": "E", "matrix": [1, 3], "x": 3, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4, "y": 1.25 }, + { "label": "T", "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "label": "Y", "matrix": [6, 5], "x": 9, "y": 1.5 }, + { "label": "U", "matrix": [6, 4], "x": 10, "y": 1.25 }, + { "label": "I", "matrix": [6, 3], "x": 11, "y": 1 }, + { "label": "O", "matrix": [6, 2], "x": 12, "y": 1.25 }, + { "label": "P", "matrix": [6, 1], "x": 13, "y": 1.5 }, + { "label": "{", "matrix": [6, 0], "x": 14, "y": 1.75 }, + { "label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2.75 }, + { "label": "A", "matrix": [2, 1], "x": 1, "y": 2.5 }, + { "label": "S", "matrix": [2, 2], "x": 2, "y": 2.25 }, + { "label": "D", "matrix": [2, 3], "x": 3, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4, "y": 2.25 }, + { "label": "G", "matrix": [2, 5], "x": 5, "y": 2.5 }, + { "label": "H", "matrix": [7, 5], "x": 9, "y": 2.5 }, + { "label": "J", "matrix": [7, 4], "x": 10, "y": 2.25 }, + { "label": "K", "matrix": [7, 3], "x": 11, "y": 2 }, + { "label": "L", "matrix": [7, 2], "x": 12, "y": 2.25 }, + { "label": ":", "matrix": [7, 1], "x": 13, "y": 2.5 }, + { "label": "\"", "matrix": [7, 0], "x": 14, "y": 2.75 }, + { "label": "L_Ctrl", "matrix": [3, 0], "x": 0, "y": 3.75 }, + { "label": "Z", "matrix": [3, 1], "x": 1, "y": 3.5 }, + { "label": "X", "matrix": [3, 2], "x": 2, "y": 3.25 }, + { "label": "C", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "V", "matrix": [3, 4], "x": 4, "y": 3.25 }, + { "label": "B", "matrix": [3, 5], "x": 5, "y": 3.5 }, + { "label": "Down", "matrix": [4, 5], "x": 6, "y": 3 }, + { "label": "Up", "matrix": [9, 5], "x": 8, "y": 3 }, + { "label": "N", "matrix": [8, 5], "x": 9, "y": 3.5 }, + { "label": "M", "matrix": [8, 4], "x": 10, "y": 3.25 }, + { "label": ",", "matrix": [8, 3], "x": 11, "y": 3 }, + { "label": ".", "matrix": [8, 2], "x": 12, "y": 3.25 }, + { "label": "?", "matrix": [8, 1], "x": 13, "y": 3.5 }, + { "label": "R_Ctrl", "matrix": [8, 0], "x": 14, "y": 3.75 }, + { "label": "Win", "matrix": [4, 1], "x": 2.5, "y": 4.25 }, + { "label": "Lower", "matrix": [4, 2], "x": 3.5, "y": 4.25 }, + { "label": "Alt", "matrix": [4, 3], "x": 4.5, "y": 4.5 }, + { "label": "Space", "matrix": [4, 4], "x": 6, "y": 4.25, "h": 1.25 }, + { "label": "Enter", "matrix": [9, 4], "x": 8, "y": 4.25, "h": 1.25 }, + { "label": "AltGr", "matrix": [9, 3], "x": 9.5, "y": 4.5 }, + { "label": "Raise", "matrix": [9, 2], "x": 10.5, "y": 4.25 }, + { "label": "BckSp", "matrix": [9, 1], "x": 11.5, "y": 4.25 } + ] + } + } +} diff --git a/keyboards/tweetydabird/lotus58/keymaps/default/keymap.c b/keyboards/tweetydabird/lotus58/keymaps/default/keymap.c new file mode 100644 index 000000000000..392ed06ec13b --- /dev/null +++ b/keyboards/tweetydabird/lotus58/keymaps/default/keymap.c @@ -0,0 +1,86 @@ +// Copyright 2022 Markus Knutsson (@TweetyDaBird) +// SPDX-License-Identifier: GPL-2.0-or-later +#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_MPLY, KC_MPLY, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, +LCTL_T(KC_LEFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, KC_UP, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RCTL_T(KC_RGHT), + KC_LGUI, TG(2), KC_LALT, LSFT_T(KC_SPC), RSFT_T(KC_ENT), KC_RALT, TG(1), RGUI_T(KC_BSPC) + ), + + [1] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_CIRC, KC_KP_7, KC_KP_8, KC_KP_9, XXXXXXX, XXXXXXX, + _______, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, KC_HASH, KC_KP_4, KC_KP_5, KC_KP_6, XXXXXXX, XXXXXXX, + XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT,KC_LBRC, KC_RBRC, KC_AMPR, KC_KP_1, KC_KP_2, KC_KP_3, XXXXXXX, XXXXXXX, + _______, XXXXXXX, KC_PAST, KC_PPLS, KC_PSLS, KC_EQL, _______, _______, KC_DLR, KC_KP_0, KC_PDOT, KC_COLN, KC_PMNS, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_SAI, RGB_TOG, + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD,RGB_SAD, RGB_M_P, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_VAI, RGB_M_B, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUD, RGB_VAD, RGB_M_R, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [2] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } +}; +#endif + +#ifdef OLED_ENABLE +static void print_status_narrow(void) { + // Create OLED content + oled_write_P(PSTR("\n"), false); + oled_write_P(PSTR(""), false); + oled_write_P(PSTR("Lotus -58-"), false); + oled_write_P(PSTR("\n"), false); + + // Print current layer + oled_write_P(PSTR("Layer"), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("-Base\n"), false); + break; + case 1: + oled_write_P(PSTR("-Num \n"), false); + break; + case 2: + oled_write_P(PSTR("-Func\n"), false); + break; + case 3: + oled_write_P(PSTR("-Sys \n"), false); + break; + default: + oled_write_P(PSTR("Undef"), false); + } + + oled_write_P(PSTR("\n"), false); + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR("Caps- lock"), led_usb_state.caps_lock); + +} + +bool oled_task_user(void) { + // Render the OLED + print_status_narrow(); + return false; +} +#endif \ No newline at end of file diff --git a/keyboards/tweetydabird/lotus58/keymaps/default/rules.mk b/keyboards/tweetydabird/lotus58/keymaps/default/rules.mk new file mode 100644 index 000000000000..a944672a67b2 --- /dev/null +++ b/keyboards/tweetydabird/lotus58/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +ENCODER_MAP_ENABLE = yes +AUTO_SHIFT_ENABLE = yes diff --git a/keyboards/tweetydabird/lotus58/lotus58.c b/keyboards/tweetydabird/lotus58/lotus58.c new file mode 100644 index 000000000000..a06c88111cce --- /dev/null +++ b/keyboards/tweetydabird/lotus58/lotus58.c @@ -0,0 +1,29 @@ +// Copyright 2022 Markus Knutsson (@TweetyDaBird) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_90; +} + +void render_logo(void) { + // QMK Logo + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + oled_write_P(qmk_logo, false); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + render_logo(); + return false; +} +#endif \ No newline at end of file diff --git a/keyboards/tweetydabird/lotus58/nanoboot/rules.mk b/keyboards/tweetydabird/lotus58/nanoboot/rules.mk new file mode 100644 index 000000000000..1d937578bd9e --- /dev/null +++ b/keyboards/tweetydabird/lotus58/nanoboot/rules.mk @@ -0,0 +1,2 @@ +BOOTLOADER = qmk-hid +BOOTLOADER_SIZE = 512 diff --git a/keyboards/tweetydabird/lotus58/promicro/info.json b/keyboards/tweetydabird/lotus58/promicro/info.json new file mode 100644 index 000000000000..56062f7ad371 --- /dev/null +++ b/keyboards/tweetydabird/lotus58/promicro/info.json @@ -0,0 +1,3 @@ +{ + "bootloader": "caterina" +} diff --git a/keyboards/tweetydabird/lotus58/promicro/rules.mk b/keyboards/tweetydabird/lotus58/promicro/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/tweetydabird/lotus58/promicro/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/tweetydabird/lotus58/readme.md b/keyboards/tweetydabird/lotus58/readme.md new file mode 100644 index 000000000000..57a89a9b0372 --- /dev/null +++ b/keyboards/tweetydabird/lotus58/readme.md @@ -0,0 +1,37 @@ +# Lotus 58 Glow + +![lotus58](https://i.imgur.com/WWgpp0Sh.jpeg) + +* Lotus 58 Glow is a fully programmable 58-key split, ortho-columnar keyboard with a 4x6 main matrix and 4+1 thumb-keys per hand. Optional support for one OLED screen per hand/side showing information such as active layer, CapsLock/NumLock etc. as well as one Rotary Encoder per hand, with optional placement. + +* Keyboard Maintainer: [TweetyDaBird](https://github.com/TweetyDaBird) +* Hardware Supported: *Lotus 58 Glow v1.11 - 1.2x PCB, Pro Micro or pin-compatible* +* Hardware Availability: [Lectronz Store](https://lectronz.com/stores/tweetys-wild-thinking) +* Hardware Design: [GitHub](https://github.com/TweetyDaBird/Lotus58) + + +#### This keyboard firmware contains three different versions, all for the same PCB/hardware, but depending on your choice of controller/bootloader. + + +* promicro - This uses the default Caterina bootloader. +* elite_c - This uses the Atmel-DFU bootloader. +* nanoBoot - A tiny 512 byte bootloader giving far more usable memory for features (can be used on both Elite C and Pro Micro). + + +Make example for this keyboard (after setting up your build environment): + + make tweetydabird/lotus58/promicro:default + +Flashing example for this keyboard: + + make tweetydabird/lotus58/elite_c:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top outer key for each hand as it is plugged in +* **Physical reset**: Briefly short the marked pads on PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if mapped (not in default keymap) From 75b7140cbd8148199e6c3c38a18f2ed68a1eb804 Mon Sep 17 00:00:00 2001 From: Wycer Date: Sun, 16 Apr 2023 04:36:17 +0800 Subject: [PATCH 70/73] [Keyboard] Add dymium65 (#20257) Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> Co-authored-by: Wycer Co-authored-by: Drashna Jaelre Co-authored-by: linyer-qwq <990842844@qq.com> Co-authored-by: Linyer-qwq <32816392+Linyer-qwq@users.noreply.github.com> --- keyboards/dotmod/dymium65/config.h | 36 +++++ keyboards/dotmod/dymium65/dymium65.c | 54 +++++++ keyboards/dotmod/dymium65/info.json | 137 ++++++++++++++++++ .../dotmod/dymium65/keymaps/default/keymap.c | 71 +++++++++ .../dotmod/dymium65/keymaps/default/rules.mk | 1 + .../dotmod/dymium65/keymaps/via/keymap.c | 71 +++++++++ .../dotmod/dymium65/keymaps/via/rules.mk | 2 + keyboards/dotmod/dymium65/readme.md | 27 ++++ keyboards/dotmod/dymium65/rules.mk | 1 + 9 files changed, 400 insertions(+) create mode 100644 keyboards/dotmod/dymium65/config.h create mode 100644 keyboards/dotmod/dymium65/dymium65.c create mode 100644 keyboards/dotmod/dymium65/info.json create mode 100644 keyboards/dotmod/dymium65/keymaps/default/keymap.c create mode 100644 keyboards/dotmod/dymium65/keymaps/default/rules.mk create mode 100644 keyboards/dotmod/dymium65/keymaps/via/keymap.c create mode 100644 keyboards/dotmod/dymium65/keymaps/via/rules.mk create mode 100644 keyboards/dotmod/dymium65/readme.md create mode 100644 keyboards/dotmod/dymium65/rules.mk diff --git a/keyboards/dotmod/dymium65/config.h b/keyboards/dotmod/dymium65/config.h new file mode 100644 index 000000000000..46d442fc8706 --- /dev/null +++ b/keyboards/dotmod/dymium65/config.h @@ -0,0 +1,36 @@ +/* Copyright 2023 Finalkey + * Copyright 2023 LiWenLiu + * + * 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 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define FORCE_NKRO + +// The pin connected to the data pin of the LEDs +#define RGB_DI_PIN D7 +// The number of LEDs connected +#define RGB_MATRIX_LED_COUNT 66 +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_KEYRELEASES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_DISABLE_AFTER_TIMEOUT 0 +#define RGB_MATRIX_LED_FLUSH_LIMIT 16 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 diff --git a/keyboards/dotmod/dymium65/dymium65.c b/keyboards/dotmod/dymium65/dymium65.c new file mode 100644 index 000000000000..45eaa0251c60 --- /dev/null +++ b/keyboards/dotmod/dymium65/dymium65.c @@ -0,0 +1,54 @@ +/* Copyright 2023 Finalkey + * Copyright 2023 LiWenLiu + * + * 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 "quantum.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { + { + {0, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED}, + {NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, NO_LED, NO_LED}, + {28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, NO_LED, NO_LED}, + {29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, NO_LED, 41, 14, 42}, + {55, NO_LED, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, NO_LED, 44, 43, NO_LED}, + {56, 57, 58, NO_LED, NO_LED, NO_LED, 59, NO_LED, NO_LED, 60, 61, NO_LED, 62, 63, 64, 65} + }, { + {14, 0}, {28, 0}, {42, 0}, {56, 0}, {70, 0}, {84, 0}, {98, 0}, {112, 0}, {126, 0}, {140, 0}, {154, 0}, {168, 0}, {182, 0},{196, 0}, + {224, 16},{196, 16},{182, 16},{168, 16},{154, 16},{140, 16},{126, 16},{112, 16}, {98, 16}, {84, 16}, {70, 16}, {56, 16}, {42, 16} ,{28, 16}, {14, 16}, + {14, 32}, {28, 32}, {42, 32}, {56, 32}, {70, 32}, {84, 32}, {98, 32}, {112, 32}, {126, 32}, {140, 32}, {154, 32}, {168, 32}, {196, 32}, {224, 32}, + {224, 48}, {196, 48},{168, 48},{154, 48},{140, 48},{126, 48},{112, 48}, {98, 48}, {84, 48}, {70, 48}, {56, 48}, {42, 48}, {14, 48}, + {14, 64}, {28, 64}, {42, 64}, {98, 64}, {140, 64}, {154, 64}, {168, 64}, {182, 64},{196, 64}, {224, 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, 12, 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 + } +}; + +bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { + if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { + return false; + } + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(29, 255, 255, 255); + } + return true; +} +#endif diff --git a/keyboards/dotmod/dymium65/info.json b/keyboards/dotmod/dymium65/info.json new file mode 100644 index 000000000000..31f516507f0b --- /dev/null +++ b/keyboards/dotmod/dymium65/info.json @@ -0,0 +1,137 @@ +{ + "keyboard_name": "DYMIUM65", + "manufacturer": "RDR", + "url": "https://github.com/LiuLiuQMK", + "maintainer": "LiWenLiu", + "usb": { + "vid": "0x5678", + "pid": "0x5058", + "device_version": "0.0.1" + }, + "diode_direction": "ROW2COL", + "matrix_pins": { + "cols": ["E6", "B0", "B1", "B2", "B3", "B7", "D2", "D3", "D5", "D4", "D6", "C6", "B4", "B5", "B6","E2"], + "rows": ["F7", "F6", "F5", "F4", "F1","F0"] + }, + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "features": { + "bootmagic": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "mousekey": true, + "rgb_matrix": true + }, + "build": { + "lto": true + }, + "encoder": { + "enabled": true, + "rotary": [ + {"pin_a": "C7", "pin_b": "D1"} + ] + }, + "rgb_matrix": { + "driver": "WS2812", + "animations": { + "breathing": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in_dual": true, + "cycle_spiral": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "pixel_flow": true, + "solid_reactive": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_nexus": true, + "splash": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0 ], "x": 0, "y": 0}, + {"matrix": [1, 1 ], "x": 1, "y": 0}, + {"matrix": [1, 2 ], "x": 2, "y": 0}, + {"matrix": [1, 3 ], "x": 3, "y": 0}, + {"matrix": [1, 4 ], "x": 4, "y": 0}, + {"matrix": [1, 5 ], "x": 5, "y": 0}, + {"matrix": [1, 6 ], "x": 6, "y": 0}, + {"matrix": [1, 7 ], "x": 7, "y": 0}, + {"matrix": [1, 8 ], "x": 8, "y": 0}, + {"matrix": [1, 9 ], "x": 9, "y": 0}, + {"matrix": [1, 10], "x": 10, "y": 0}, + {"matrix": [1, 11], "x": 11, "y": 0}, + {"matrix": [1, 12], "x": 12, "y": 0}, + {"matrix": [1, 13], "w": 2, "x": 13, "y": 0}, + {"matrix": [4, 15], "x": 16, "y": 0}, + + {"matrix": [2, 0 ], "w": 1.5, "x": 0, "y": 1}, + {"matrix": [2, 1 ], "x": 1.5, "y": 1}, + {"matrix": [2, 2 ], "x": 2.5, "y": 1}, + {"matrix": [2, 3 ], "x": 3.5, "y": 1}, + {"matrix": [2, 4 ], "x": 4.5, "y": 1}, + {"matrix": [2, 5 ], "x": 5.5, "y": 1}, + {"matrix": [2, 6 ], "x": 6.5, "y": 1}, + {"matrix": [2, 7 ], "x": 7.5, "y": 1}, + {"matrix": [2, 8 ], "x": 8.5, "y": 1}, + {"matrix": [2, 9 ], "x": 9.5, "y": 1}, + {"matrix": [2, 10], "x": 10.5, "y": 1}, + {"matrix": [2, 11], "x": 11.5, "y": 1}, + {"matrix": [2, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 1}, + {"matrix": [3, 14], "x": 16, "y": 1}, + + {"matrix": [3, 0 ], "w": 1.75, "x": 0, "y": 2}, + {"matrix": [3, 1 ], "x": 1.75, "y": 2}, + {"matrix": [3, 2 ], "x": 2.75, "y": 2}, + {"matrix": [3, 3 ], "x": 3.75, "y": 2}, + {"matrix": [3, 4 ], "x": 4.75, "y": 2}, + {"matrix": [3, 5 ], "x": 5.75, "y": 2}, + {"matrix": [3, 6 ], "x": 6.75, "y": 2}, + {"matrix": [3, 7 ], "x": 7.75, "y": 2}, + {"matrix": [3, 8 ], "x": 8.75, "y": 2}, + {"matrix": [3, 9 ], "x": 9.75, "y": 2}, + {"matrix": [3, 10], "x": 10.75, "y": 2}, + {"matrix": [3, 11], "x": 11.75, "y": 2}, + {"matrix": [3, 13], "w": 2.25, "x": 12.75, "y": 2}, + {"matrix": [3, 15], "x": 16, "y": 2}, + + {"matrix": [4, 0 ], "w": 2.25, "x": 0, "y": 3}, + {"matrix": [4, 2 ], "x": 2.25, "y": 3}, + {"matrix": [4, 3 ], "x": 3.25, "y": 3}, + {"matrix": [4, 4 ], "x": 4.25, "y": 3}, + {"matrix": [4, 5 ], "x": 5.25, "y": 3}, + {"matrix": [4, 6 ], "x": 6.25, "y": 3}, + {"matrix": [4, 7 ], "x": 7.25, "y": 3}, + {"matrix": [4, 8 ], "x": 8.25, "y": 3}, + {"matrix": [4, 9 ], "x": 9.25, "y": 3}, + {"matrix": [4, 10], "x": 10.25, "y": 3}, + {"matrix": [4, 11], "x": 11.25, "y": 3}, + {"matrix": [4, 13], "w": 1.75, "x": 12.25, "y": 3}, + {"matrix": [4, 14], "x": 15.25, "y": 3}, + + {"matrix": [5, 0 ], "w": 1.25, "x": 0, "y": 4}, + {"matrix": [5, 1 ], "w": 1.25, "x": 1.25, "y": 4}, + {"matrix": [5, 2 ], "w": 1.25, "x": 2.5, "y": 4}, + {"matrix": [5, 6 ], "w": 6.25, "x": 3.75, "y": 4}, + {"matrix": [5, 9 ], "x": 10, "y": 4}, + {"matrix": [5, 10], "x": 11, "y": 4}, + {"matrix": [5, 12], "x": 12, "y": 4}, + {"matrix": [5, 13], "x": 14.25, "y": 4}, + {"matrix": [5, 14], "x": 15.25, "y": 4}, + {"matrix": [5, 15], "x": 16.25, "y": 4} + ] + } + } +} diff --git a/keyboards/dotmod/dymium65/keymaps/default/keymap.c b/keyboards/dotmod/dymium65/keymaps/default/keymap.c new file mode 100644 index 000000000000..483746b53f61 --- /dev/null +++ b/keyboards/dotmod/dymium65/keymaps/default/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2023 Finalkey + * Copyright 2023 LiWenLiu + * + * 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 + +// Layer names +enum ats_layers{ + // - Base layer: + _BASE, + // - Symbols, numbers, and functions: + _FN, + // - Alternate Function layer: + _LN, + // - Alternate Function layer: + _MT +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_AUDIO_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_PAGE_UP, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_PAGE_DOWN, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RIGHT_SHIFT, KC_UP, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, MO(_FN), KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_FN] = LAYOUT( + KC_GRAVE, 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_BACKSPACE, KC_TRNS, + RGB_TOG, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, RGB_HUI, RGB_HUD, KC_BACKSLASH, KC_TRNS, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, RGB_SAD, RGB_SAI, KC_ENTER, KC_TRNS, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, MO(_LN), KC_SLASH, KC_RIGHT_SHIFT, RGB_VAI, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, RGB_MOD, _______, KC_RIGHT_CTRL, RGB_SPD, RGB_VAD, RGB_SPI + ), + [_LN] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_TRNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_TRNS, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_TRNS, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, MO(_MT), _______, KC_SLASH, KC_RIGHT_SHIFT, KC_UP, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, _______, KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_MT] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_TRNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_TRNS, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_TRNS, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, _______, _______, KC_SLASH, KC_RIGHT_SHIFT, KC_UP, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, _______, KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ) +}; + + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP) }, + [_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, + [_LN] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI) }, + [_MT] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI) }, +}; +#endif diff --git a/keyboards/dotmod/dymium65/keymaps/default/rules.mk b/keyboards/dotmod/dymium65/keymaps/default/rules.mk new file mode 100644 index 000000000000..a40474b4d5c7 --- /dev/null +++ b/keyboards/dotmod/dymium65/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/dotmod/dymium65/keymaps/via/keymap.c b/keyboards/dotmod/dymium65/keymaps/via/keymap.c new file mode 100644 index 000000000000..483746b53f61 --- /dev/null +++ b/keyboards/dotmod/dymium65/keymaps/via/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2023 Finalkey + * Copyright 2023 LiWenLiu + * + * 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 + +// Layer names +enum ats_layers{ + // - Base layer: + _BASE, + // - Symbols, numbers, and functions: + _FN, + // - Alternate Function layer: + _LN, + // - Alternate Function layer: + _MT +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_AUDIO_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_PAGE_UP, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_PAGE_DOWN, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RIGHT_SHIFT, KC_UP, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, MO(_FN), KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_FN] = LAYOUT( + KC_GRAVE, 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_BACKSPACE, KC_TRNS, + RGB_TOG, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, RGB_HUI, RGB_HUD, KC_BACKSLASH, KC_TRNS, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, RGB_SAD, RGB_SAI, KC_ENTER, KC_TRNS, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, MO(_LN), KC_SLASH, KC_RIGHT_SHIFT, RGB_VAI, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, RGB_MOD, _______, KC_RIGHT_CTRL, RGB_SPD, RGB_VAD, RGB_SPI + ), + [_LN] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_TRNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_TRNS, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_TRNS, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, MO(_MT), _______, KC_SLASH, KC_RIGHT_SHIFT, KC_UP, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, _______, KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_MT] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_TRNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_TRNS, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_TRNS, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, _______, _______, KC_SLASH, KC_RIGHT_SHIFT, KC_UP, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, _______, KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ) +}; + + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP) }, + [_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, + [_LN] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI) }, + [_MT] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI) }, +}; +#endif diff --git a/keyboards/dotmod/dymium65/keymaps/via/rules.mk b/keyboards/dotmod/dymium65/keymaps/via/rules.mk new file mode 100644 index 000000000000..4253f570f0bb --- /dev/null +++ b/keyboards/dotmod/dymium65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/dotmod/dymium65/readme.md b/keyboards/dotmod/dymium65/readme.md new file mode 100644 index 000000000000..4d5dff4e845b --- /dev/null +++ b/keyboards/dotmod/dymium65/readme.md @@ -0,0 +1,27 @@ +# dymium65 + +A customizable 65% encoder keyboard. + +![dymium65](https://i.imgur.com/5qAl7hgh.png) + +* Keyboard Maintainer: [LiWenLiu](https://github.com/LiuLiuQMK) +* Hardware Supported: dymium65 PCB with atmega32u4 microcontroller +* Hardware Availability: Coming soon + +Make example for this keyboard (after setting up your build environment): + + make dotmod/dymium65:default + +Flashing example for this keyboard: + + make dotmod/dymium65:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: There is no key mapped to `QK_BOOT` in the pre-created keymaps, but you may assign this key in any keymaps you create. diff --git a/keyboards/dotmod/dymium65/rules.mk b/keyboards/dotmod/dymium65/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/dotmod/dymium65/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From 6e5ff018e3760faa3a7b7bb372122f47d047c2f9 Mon Sep 17 00:00:00 2001 From: spbgzh <72414103+spbgzh@users.noreply.github.com> Date: Sun, 16 Apr 2023 08:14:51 +0300 Subject: [PATCH 71/73] [Keyboard] Add zoom75 wired (#20396) --- keyboards/meletrix/zoom75/info.json | 148 ++++++++++++++++++ .../meletrix/zoom75/keymaps/default/keymap.c | 43 +++++ .../meletrix/zoom75/keymaps/default/rules.mk | 1 + .../meletrix/zoom75/keymaps/via/keymap.c | 44 ++++++ .../meletrix/zoom75/keymaps/via/rules.mk | 4 + keyboards/meletrix/zoom75/readme.md | 27 ++++ keyboards/meletrix/zoom75/rules.mk | 1 + 7 files changed, 268 insertions(+) create mode 100644 keyboards/meletrix/zoom75/info.json create mode 100644 keyboards/meletrix/zoom75/keymaps/default/keymap.c create mode 100644 keyboards/meletrix/zoom75/keymaps/default/rules.mk create mode 100644 keyboards/meletrix/zoom75/keymaps/via/keymap.c create mode 100644 keyboards/meletrix/zoom75/keymaps/via/rules.mk create mode 100644 keyboards/meletrix/zoom75/readme.md create mode 100644 keyboards/meletrix/zoom75/rules.mk diff --git a/keyboards/meletrix/zoom75/info.json b/keyboards/meletrix/zoom75/info.json new file mode 100644 index 000000000000..9fd3bb8522e4 --- /dev/null +++ b/keyboards/meletrix/zoom75/info.json @@ -0,0 +1,148 @@ +{ + "keyboard_name": "zoom75", + "manufacturer": "meletrix", + "url": "https://meletrix.com/products/zoom75-essential-edition-black-wired", + "maintainer": "spbgzh", + "usb": { + "vid": "0x806D", + "pid": "0x0006", + "device_version": "0.0.1" + }, + "encoder": { + "rotary": [ + {"pin_a": "B0", "pin_b": "B1", "resolution": 2} + ] +}, + "indicators": { + "caps_lock": "F6", + "on_state": 0 + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "encoder": true + }, + "matrix_pins": { + "rows": ["F4", "F1", "F0", "C6", "B6", "F5"], + "cols": [ + "C7", + "D5", + "B5", + "B4", + "D7", + "D6", + "D4", + "D3", + "D2", + "D1", + "D0", + "B7", + "B2", + "B3", + "F7" + ] + }, + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "label": "Esc", "x": 0, "y": 0 }, + { "matrix": [0, 1], "label": "F1", "x": 1.25, "y": 0 }, + { "matrix": [0, 2], "label": "F2", "x": 2.25, "y": 0 }, + { "matrix": [0, 3], "label": "F3", "x": 3.25, "y": 0 }, + { "matrix": [0, 4], "label": "F4", "x": 4.25, "y": 0 }, + { "matrix": [0, 5], "label": "F5", "x": 5.5, "y": 0 }, + { "matrix": [0, 6], "label": "F6", "x": 6.5, "y": 0 }, + { "matrix": [0, 7], "label": "F7", "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "label": "F8", "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "label": "F9", "x": 9.75, "y": 0 }, + { "matrix": [0, 10], "label": "F10", "x": 10.75, "y": 0 }, + { "matrix": [0, 11], "label": "F11", "x": 11.75, "y": 0 }, + { "matrix": [0, 12], "label": "F12", "x": 12.75, "y": 0 }, + { "matrix": [0, 13], "label": "F13", "x": 14, "y": 0 }, + { "matrix": [0, 14], "label": "Encoder", "x": 15, "y": 0 }, + + { "matrix": [1, 0], "label": "~", "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "label": "1", "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "label": "2", "x": 2, "y": 1.25 }, + { "matrix": [1, 3], "label": "3", "x": 3, "y": 1.25 }, + { "matrix": [1, 4], "label": "4", "x": 4, "y": 1.25 }, + { "matrix": [1, 5], "label": "5", "x": 5, "y": 1.25 }, + { "matrix": [1, 6], "label": "6", "x": 6, "y": 1.25 }, + { "matrix": [1, 7], "label": "7", "x": 7, "y": 1.25 }, + { "matrix": [1, 8], "label": "8", "x": 8, "y": 1.25 }, + { "matrix": [1, 9], "label": "9", "x": 9, "y": 1.25 }, + { "matrix": [1, 10], "label": "0", "x": 10, "y": 1.25 }, + { "matrix": [1, 11], "label": "-", "x": 11, "y": 1.25 }, + { "matrix": [1, 12], "label": "=", "x": 12, "y": 1.25 }, + { "matrix": [1, 13], "label": "Backspace", "x": 13, "y": 1.25 }, + { "matrix": [3, 13], "label": "Backspace1", "x": 14, "y": 1.25 }, + { "matrix": [1, 14], "label": "Delect", "x": 15, "y": 1.25 }, + + { "matrix": [2, 0], "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, + { "matrix": [2, 1], "label": "Q", "x": 1.5, "y": 2.25 }, + { "matrix": [2, 2], "label": "W", "x": 2.5, "y": 2.25 }, + { "matrix": [2, 3], "label": "E", "x": 3.5, "y": 2.25 }, + { "matrix": [2, 4], "label": "R", "x": 4.5, "y": 2.25 }, + { "matrix": [2, 5], "label": "T", "x": 5.5, "y": 2.25 }, + { "matrix": [2, 6], "label": "Y", "x": 6.5, "y": 2.25 }, + { "matrix": [2, 7], "label": "U", "x": 7.5, "y": 2.25 }, + { "matrix": [2, 8], "label": "I", "x": 8.5, "y": 2.25 }, + { "matrix": [2, 9], "label": "O", "x": 9.5, "y": 2.25 }, + { "matrix": [2, 10], "label": "P", "x": 10.5, "y": 2.25 }, + { "matrix": [2, 11], "label": "[", "x": 11.5, "y": 2.25 }, + { "matrix": [2, 12], "label": "]", "x": 12.5, "y": 2.25 }, + { "matrix": [2, 13], "label": "\\", "x": 13.5, "y": 2.25, "w": 1.5 }, + { "matrix": [2, 14], "label": "PageUp", "x": 15, "y": 2.25 }, + + { "matrix": [3, 0], "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "matrix": [3, 1], "label": "A", "x": 1.75, "y": 3.25 }, + { "matrix": [3, 2], "label": "S", "x": 2.75, "y": 3.25 }, + { "matrix": [3, 3], "label": "D", "x": 3.75, "y": 3.25 }, + { "matrix": [3, 4], "label": "F", "x": 4.75, "y": 3.25 }, + { "matrix": [3, 5], "label": "G", "x": 5.75, "y": 3.25 }, + { "matrix": [3, 6], "label": "H", "x": 6.75, "y": 3.25 }, + { "matrix": [3, 7], "label": "J", "x": 7.75, "y": 3.25 }, + { "matrix": [3, 8], "label": "K", "x": 8.75, "y": 3.25 }, + { "matrix": [3, 9], "label": "L", "x": 9.75, "y": 3.25 }, + { "matrix": [3, 10], "label": ";", "x": 10.75, "y": 3.25 }, + { "matrix": [3, 11], "label": "'", "x": 11.75, "y": 3.25 }, + { "matrix": [3, 12], "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 }, + { "matrix": [3, 14], "label": "PageDown", "x": 15, "y": 3.25 }, + + { "matrix": [4, 0], "label": "Shift1", "x": 0, "y": 4.25, "w": 1.25 }, + { "matrix": [4, 1], "label": "Shift2", "x": 1.25, "y": 4.25 }, + { "matrix": [4, 2], "label": "Z", "x": 2.25, "y": 4.25 }, + { "matrix": [4, 3], "label": "X", "x": 3.25, "y": 4.25 }, + { "matrix": [4, 4], "label": "C", "x": 4.25, "y": 4.25 }, + { "matrix": [4, 5], "label": "V", "x": 5.25, "y": 4.25 }, + { "matrix": [4, 6], "label": "B", "x": 6.25, "y": 4.25 }, + { "matrix": [4, 7], "label": "N", "x": 7.25, "y": 4.25 }, + { "matrix": [4, 8], "label": "M", "x": 8.25, "y": 4.25 }, + { "matrix": [4, 9], "label": ",", "x": 9.25, "y": 4.25 }, + { "matrix": [4, 10], "label": ".", "x": 10.25, "y": 4.25 }, + { "matrix": [4, 11], "label": "/", "x": 11.25, "y": 4.25 }, + { "matrix": [4, 12], "label": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 }, + { "matrix": [4, 13], "label": "\u2191", "x": 14, "y": 4.25 }, + + { "matrix": [5, 0], "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, + { "matrix": [5, 1], "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, + { "matrix": [5, 2], "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, + { "matrix": [5, 5], "label": "Space","x": 3.75, "y": 5.25, "w": 2.25 }, + { "matrix": [5, 6], "label": "Space","x": 6, "y": 5.25, "w": 1.25 }, + { "matrix": [5, 7], "label": "Space","x": 7.25, "y": 5.25, "w": 2.75 }, + { "matrix": [5, 9], "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, + { "matrix": [5, 10], "label": "Fn", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "matrix": [5, 12], "label": "\u2190", "x": 13, "y": 5.25 }, + { "matrix": [5, 13], "label": "\u2193", "x": 14, "y": 5.25 }, + { "matrix": [5, 14], "label": "\u2192", "x": 15, "y": 5.25 } + ] + } + } +} diff --git a/keyboards/meletrix/zoom75/keymaps/default/keymap.c b/keyboards/meletrix/zoom75/keymaps/default/keymap.c new file mode 100644 index 000000000000..b1cbfb9e9fca --- /dev/null +++ b/keyboards/meletrix/zoom75/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 meletrix + * + * 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 + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), }, +}; +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] ={ + [0] = LAYOUT( + KC_ESC, 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_F13, KC_MUTE, + KC_GRV, 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_BSPC, KC_DEL, + 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_PGUP, + 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_PGDN, + KC_LSFT, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom75/keymaps/default/rules.mk b/keyboards/meletrix/zoom75/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/meletrix/zoom75/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/meletrix/zoom75/keymaps/via/keymap.c b/keyboards/meletrix/zoom75/keymaps/via/keymap.c new file mode 100644 index 000000000000..00fa34dd1307 --- /dev/null +++ b/keyboards/meletrix/zoom75/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2023 meletrix + * + * 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 + + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_MNXT, KC_MPRV) }, +}; +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] ={ + [0] = LAYOUT( + KC_ESC, 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_F13, KC_MUTE, + KC_GRV, 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_BSPC, KC_DEL, + 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_PGUP, + 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_PGDN, + KC_LSFT, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom75/keymaps/via/rules.mk b/keyboards/meletrix/zoom75/keymaps/via/rules.mk new file mode 100644 index 000000000000..f48a8b10567a --- /dev/null +++ b/keyboards/meletrix/zoom75/keymaps/via/rules.mk @@ -0,0 +1,4 @@ +ENCODER_MAP_ENABLE = yes +VIA_ENABLE = yes +LTO_ENABLE = yes + diff --git a/keyboards/meletrix/zoom75/readme.md b/keyboards/meletrix/zoom75/readme.md new file mode 100644 index 000000000000..060889ce0498 --- /dev/null +++ b/keyboards/meletrix/zoom75/readme.md @@ -0,0 +1,27 @@ +# Zoom75 + +More Info at [Zoom75 Wired Version](https://meletrix.com/products/zoom75-essential-edition-black-wired) +​ + +* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh) +* Hardware Supported: Zoom75 Wired Version +* Hardware Availability: [zoom75](https://meletrix.com/products/zoom75-essential-edition-black-wired) +​ + +Make example for this keyboard (after setting up your build environment): + + make meletrix/zoom75:default + +Flashing example for this keyboard: + + make meletrix/zoom75:default:flash + +## Bootloader + +Enter the bootloader using one of the following methods: + +* Tap the Reset switch mounted on the PCB +* In the case of the default keymap, use the key combination Fn + Delete +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +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/meletrix/zoom75/rules.mk b/keyboards/meletrix/zoom75/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/meletrix/zoom75/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From cefef18ceb172d70f8129191d189257f590a3949 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 16 Apr 2023 06:21:58 +0100 Subject: [PATCH 72/73] Tidy up stray RGB_DISABLE_TIMEOUT references (#20460) --- keyboards/drop/sense75/config.h | 1 - keyboards/dumbpad/v3x/config.h | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/keyboards/drop/sense75/config.h b/keyboards/drop/sense75/config.h index 908c465f6ac3..13b8257fbba2 100644 --- a/keyboards/drop/sense75/config.h +++ b/keyboards/drop/sense75/config.h @@ -16,7 +16,6 @@ # define RGB_MATRIX_LED_COUNT (58 + 53) # define ISSI_PWM_FREQUENCY 0b010 // 26k -# define RGB_DISABLE_TIMEOUT 0 # define RGB_DISABLE_WHEN_USB_SUSPENDED # define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT # define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/dumbpad/v3x/config.h b/keyboards/dumbpad/v3x/config.h index 2c00ba8eef24..f4487b0d402a 100644 --- a/keyboards/dumbpad/v3x/config.h +++ b/keyboards/dumbpad/v3x/config.h @@ -31,7 +31,7 @@ along with this program. If not, see . // Cleanup RGB #ifdef RGB_MATRIX_ENABLE -#define RGB_DISABLE_TIMEOUT 300000 // 5 minutes (5 * 60 * 1000ms) +#define RGB_MATRIX_TIMEOUT 300000 // 5 minutes (5 * 60 * 1000ms) #define RGB_DISABLE_WHEN_USB_SUSPENDED #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain From 697f53a1549f99b6728dc656eeb2ea5be41a84a5 Mon Sep 17 00:00:00 2001 From: Zykrah <23428162+zykrah@users.noreply.github.com> Date: Sun, 16 Apr 2023 15:31:51 +1000 Subject: [PATCH 73/73] [Keyboard] Add Kalakos Bahrnob65 (#20424) Co-authored-by: Joel Challis --- keyboards/kalakos/bahrnob/info.json | 108 ++++++++++++++++++ .../kalakos/bahrnob/keymaps/default/keymap.c | 37 ++++++ .../kalakos/bahrnob/keymaps/via/keymap.c | 63 ++++++++++ .../kalakos/bahrnob/keymaps/via/rules.mk | 3 + keyboards/kalakos/bahrnob/readme.md | 27 +++++ keyboards/kalakos/bahrnob/rules.mk | 1 + 6 files changed, 239 insertions(+) create mode 100644 keyboards/kalakos/bahrnob/info.json create mode 100644 keyboards/kalakos/bahrnob/keymaps/default/keymap.c create mode 100644 keyboards/kalakos/bahrnob/keymaps/via/keymap.c create mode 100644 keyboards/kalakos/bahrnob/keymaps/via/rules.mk create mode 100644 keyboards/kalakos/bahrnob/readme.md create mode 100644 keyboards/kalakos/bahrnob/rules.mk diff --git a/keyboards/kalakos/bahrnob/info.json b/keyboards/kalakos/bahrnob/info.json new file mode 100644 index 000000000000..d1fe26f5dd34 --- /dev/null +++ b/keyboards/kalakos/bahrnob/info.json @@ -0,0 +1,108 @@ +{ + "keyboard_name": "Bahrnob65", + "manufacturer": "Kalakos", + "maintainer": "zykrah", + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "usb": { + "vid": "0x7A79", + "pid": "0x4261", + "device_version": "0.0.1" + }, + "encoder": { + "rotary": [ + {"pin_a": "D4", "pin_b": "D6"} + ] + }, + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "encoder": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["D7", "B4", "B5", "B6", "C6"], + "cols": ["F7", "F6", "F5", "F4", "F1", "F0", "B0", "B1", "B2", "B3", "D0", "D1", "D2", "D3", "D5"] + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [0, 12], "x": 12, "y": 0 }, + { "matrix": [0, 13], "x": 13, "y": 0 }, + { "matrix": [1, 14], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.75, "y": 0 }, + { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "matrix": [2, 14], "x": 15.5, "y": 1.5 }, + { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "matrix": [2, 12], "w": 2.25, "x": 12.75, "y": 2 }, + { "matrix": [3, 14], "x": 15.5, "y": 2.5 }, + { "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "matrix": [4, 4], "x": 2.25, "y": 3 }, + { "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "matrix": [3, 2], "x": 3.25, "y": 3 }, + { "matrix": [3, 3], "x": 4.25, "y": 3 }, + { "matrix": [3, 4], "x": 5.25, "y": 3 }, + { "matrix": [3, 5], "x": 6.25, "y": 3 }, + { "matrix": [3, 6], "x": 7.25, "y": 3 }, + { "matrix": [3, 7], "x": 8.25, "y": 3 }, + { "matrix": [3, 8], "x": 9.25, "y": 3 }, + { "matrix": [3, 9], "x": 10.25, "y": 3 }, + { "matrix": [3, 10], "x": 11.25, "y": 3 }, + { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, + { "matrix": [2, 13], "x": 14.25, "y": 3.25 }, + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, + { "matrix": [4, 3], "w": 3, "x": 3.75, "y": 4 }, + { "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 6], "w": 3.25, "x": 6.75, "y": 4 }, + { "matrix": [4, 10], "x": 10, "y": 4 }, + { "matrix": [4, 11], "x": 11, "y": 4 }, + { "matrix": [4, 12], "x": 12, "y": 4 }, + { "matrix": [3, 13], "x": 13.25, "y": 4.25 }, + { "matrix": [4, 13], "x": 14.25, "y": 4.25 }, + { "matrix": [4, 14], "x": 15.25, "y": 4.25 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/kalakos/bahrnob/keymaps/default/keymap.c b/keyboards/kalakos/bahrnob/keymaps/default/keymap.c new file mode 100644 index 000000000000..08ed92c0a822 --- /dev/null +++ b/keyboards/kalakos/bahrnob/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2023 Zykrah + +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_DEL, KC_MUTE, + 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_HOME, + 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_END, + KC_LSFT, KC_NUBS, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + QK_BOOT, 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 + ) +}; diff --git a/keyboards/kalakos/bahrnob/keymaps/via/keymap.c b/keyboards/kalakos/bahrnob/keymaps/via/keymap.c new file mode 100644 index 000000000000..eff227ff296b --- /dev/null +++ b/keyboards/kalakos/bahrnob/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* +Copyright 2023 Zykrah + +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_DEL, KC_MUTE, + 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_HOME, + 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_END, + KC_LSFT, KC_NUBS, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + QK_BOOT, 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 + ), + + [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 + ), + +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}, + [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}, + [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}, +}; +#endif diff --git a/keyboards/kalakos/bahrnob/keymaps/via/rules.mk b/keyboards/kalakos/bahrnob/keymaps/via/rules.mk new file mode 100644 index 000000000000..1189f4ad1927 --- /dev/null +++ b/keyboards/kalakos/bahrnob/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/kalakos/bahrnob/readme.md b/keyboards/kalakos/bahrnob/readme.md new file mode 100644 index 000000000000..a12abddc2a97 --- /dev/null +++ b/keyboards/kalakos/bahrnob/readme.md @@ -0,0 +1,27 @@ +# BAHRNOB65 + +![BAHRNOB65](https://i.imgur.com/AK1ksQEh.jpeg) + +Bahrnob 65: Gasket Mount 65% + +* Keyboard Maintainer: [Zykrah](https://github.com/zykrah) +* Hardware Supported: Bahrnob65 Solder PCB +* Hardware Availability: N/A + +Make example for this keyboard (after setting up your build environment): + + make kalakos/bahrnob65:default + +Flashing example for this keyboard: + + make kalakos/bahrnob65:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the reset button on the back of the pcb +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/kalakos/bahrnob/rules.mk b/keyboards/kalakos/bahrnob/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/kalakos/bahrnob/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank