From 1cffe5b6ce764f4ff0d07e93669a425773ccc103 Mon Sep 17 00:00:00 2001 From: IFo Hancroft Date: Sat, 2 Jul 2022 17:06:23 +0300 Subject: [PATCH 01/34] My ErgoDox Keymap (finally perfected, I think) (#17208) Co-authored-by: Drashna Jaelre --- .../ergodox_ez/keymaps/ifohancroft/config.h | 8 +- .../ergodox_ez/keymaps/ifohancroft/keymap.c | 178 +++++++----------- .../ergodox_ez/keymaps/ifohancroft/readme.md | 16 +- .../ergodox_ez/keymaps/ifohancroft/rules.mk | 3 +- 4 files changed, 80 insertions(+), 125 deletions(-) diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/config.h b/keyboards/ergodox_ez/keymaps/ifohancroft/config.h index 9a0d0e54f71..b279371a0b4 100644 --- a/keyboards/ergodox_ez/keymaps/ifohancroft/config.h +++ b/keyboards/ergodox_ez/keymaps/ifohancroft/config.h @@ -1,4 +1,4 @@ -/* Copyright 2021 IFo Hancroft +/* Copyright 2022 IFo Hancroft * * 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,5 +17,9 @@ #pragma once // place overrides here -#define USB_POLLING_INTERVAL_MS 1 #define FORCE_NKRO +#ifdef TAPPING_TOGGLE +# undef TAPPING_TOGGLE +#endif +#define TAPPING_TOGGLE 3 + diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c b/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c index 56c1ff28a78..58c3beaeaa6 100644 --- a/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c +++ b/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 IFo Hancroft +/* Copyright 2022 IFo Hancroft * * 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 @@ -24,19 +24,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ | * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| - * | ESC | A | S | D | F | G | Del | | | H | J | K | L | ; | ' | + * | Esc | A | S | D | F | G | | | | H | J | K | L | ; | ' | * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------| * | Shift | Z | X | C | V | B | | N | M | , | . | / | Shift | * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------| - * | Ctrl | Super | Alt | MO(4) | MO(3) | | MO(3) | Left | Down | Up | Right | + * | Ctrl | Super | Alt | | OSL(1) | | TT(1) | | Alt | Super | Ctrl | * *-------------------------------------------------* *-------------------------------------------------* * * *-------------------* *-------------------* - * | MO(2) | | | | | + * | | | | | | * *---------+---------+---------| |---------+---------+---------* * | | | | | | | | * | Bckspc | Enter |---------| |---------| Enter | Space | - * | | | Space | | | | | + * | | | SH_OS | | | | | * *---------+---------+---------* *---------+---------+---------* */ @@ -44,88 +44,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_TAB, 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_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_DEL, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, MO(4), MO(3), MO(3), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_NO, OSL(1), TT(1), KC_NO, KC_RALT, KC_RGUI, KC_RCTL, - MO(2), KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_BSPC, KC_ENT, KC_SPC, KC_NO, KC_ENT, KC_SPC + KC_BSPC, KC_ENT, SH_OS, KC_NO, KC_ENT, KC_SPC ), - - - /* Gaming Layer - * *---------------------------------------------------------------------* *---------------------------------------------------------------------* - * | | | | | | | 6 | | | | | | | | | - * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| - * | | | | | | | | | | | | | | | | - * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| - * | | | | | | | | | | | | | | | | - * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------| - * | | | | | | | | | | | | | | - * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------| - * | | | | | | | | | | | | - * *-------------------------------------------------* *-------------------------------------------------* - * - * *-------------------* *-------------------* - * | | | | | | - * *---------+---------+---------| |---------+---------+---------* - * | | | | | | | | - * | Space | |---------| |---------| | | - * | | | | | | | | - * *---------+---------+---------* *---------+---------+---------* - */ - - LAYOUT_ergodox_pretty( - _______, _______, _______, _______, _______, _______, KC_6, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - - _______, _______, _______, _______, - _______, _______, - KC_SPC, _______, _______, _______, _______, _______ - ), - - - - /* Left Hand Layer - * *---------------------------------------------------------------------* *---------------------------------------------------------------------* - * | | 6 | 7 | 8 | 9 | 0 | = | | | | | | | | | - * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| - * | \ | Y | U | I | O | P | ] | | | | | | | | | - * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| - * | ' | H | J | K | L | ; | | | | | | | | | | - * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------| - * | | N | M | , | . | / | | | | | | | | - * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------| - * | | | | | | | | | | | | - * *-------------------------------------------------* *-------------------------------------------------* - * - * *-------------------* *-------------------* - * | | | | | | - * *---------+---------+---------| |---------+---------+---------* - * | | | | | | | | - * | | |---------| |---------| | | - * | | | | | | | | - * *---------+---------+---------* *---------+---------+---------* - */ - - LAYOUT_ergodox_pretty( - _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, _______, _______, _______, _______, _______, _______, _______, - KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, - KC_QUOT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, _______, _______, _______, _______, _______, _______, - _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - - _______, _______, _______, _______, - _______, _______, - _______, _______, _______, _______, _______, _______ - ), - - - /* Function Keys Layer * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * | NumLock | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | | @@ -134,9 +60,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| * | | - | 4 | 5 | 6 | / | | | | Left | Down | Up | Right | | | * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------| - * | | 0 | 1 | 2 | 3 | . | | | | | | | | + * | | 0 | 1 | 2 | 3 | . | | NK_TOGG | | | | | | * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------| - * | | | | | | | | | | | | + * | | | | | | | | Left | Down | Up | Right | * *-------------------------------------------------* *-------------------------------------------------* * * *-------------------* *-------------------* @@ -152,40 +78,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NUM, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PAST, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PMNS, KC_P4, KC_P5, KC_P6, KC_PSLS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, - _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, KC_PENT, KC_PGUP, KC_PGDN, _______, _______ ), - - - /* Layers Layer - * *---------------------------------------------------------------------* *---------------------------------------------------------------------* - * | | TO(0) | TO(1) | | | | | | | | | | | | | - * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| - * | | | | | | | | | | | | | | | | - * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| - * | | | | | | | | | | | | | | | | - * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------| - * | | | | | | | | | | | | | | - * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------| - * | | | | | | | | | | | | - * *-------------------------------------------------* *-------------------------------------------------* - * - * *-------------------* *-------------------* - * | | | | | | - * *---------+---------+---------| |---------+---------+---------* - * | | | | | | | | - * | | |---------| |---------| | | - * | | | | | | | | - * *---------+---------+---------* *---------+---------+---------* - */ - + /* Empty Layer */ LAYOUT_ergodox_pretty( - _______, TO(0), TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, + _______, _______, + _______, _______, _______, _______, _______, _______ + ), + + /* Empty Layer */ + LAYOUT_ergodox_pretty( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -195,5 +111,41 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______ ) - }; + + /* Swap Hands + * *-------------------------------------------------* + * | Del | \ | ' | | | + * |---------+---------+---------+---------+---------+---------* + * | 6 | Y | H | N | | | + * |---------+---------+---------+---------+---------+---------| + * | 7 | U | J | M | | | + * |---------+---------+---------+---------+---------+---------| + * | 8 | I | K | , | | Space | + * |---------+---------+---------+---------+---------+---------| + * | 9 | O | L | . | | | + * |---------+---------+---------+---------+---------+---------| + * | 0 | P | ; | / | | | + * |---------+---------+---------+---------| |---------| + * | = | ] | | | | | + * *---------------------------------------* *---------* + */ + +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + {{0, 13}, {1, 13}, {2, 13}, {3, 0}, {4, 0}}, + {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 1}, {5, 1}}, + {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 2}, {5, 2}}, + {{0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 3}, {5, 10}}, + {{0, 11}, {1, 11}, {2, 11}, {3, 11}, {4, 4}, {5, 9}}, + {{0, 12}, {1, 12}, {2, 12}, {3, 12}, {0, 0}, {5, 8}}, + {{0, 7}, {1, 7}, {0, 0}, {3, 7}, {0, 0}, {5, 7}}, + + {{0, 7}, {1, 7}, {0, 0}, {3, 7}, {0, 0}, {5, 7}}, + {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {0, 0}, {5, 8}}, + {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}}, + {{0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 10}, {5, 10}}, + {{0, 11}, {1, 11}, {2, 11}, {3, 11}, {4, 11}, {5, 11}}, + {{0, 12}, {1, 12}, {2, 12}, {3, 12}, {4, 12}, {5, 12}}, + {{0, 13}, {1, 13}, {2, 13}, {3, 13}, {4, 13}} +}; + diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md b/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md index daa581062c2..7a94a05eae8 100644 --- a/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md +++ b/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md @@ -1,20 +1,18 @@ -![IFo Hancroft ErgoDox EZ Layout Image](https://i.imgur.com/BlH0ZdE.png) +![IFo Hancroft ErgoDox EZ Layout Image](https://i.imgur.com/bSWyBCV.png) # IFo Hancroft's ErgoDox EZ Layout -- Layer 0: A Standard ANSI QWERTY Layer. It adds some additional keys from the right half in-order to avoid having to lift your right hand of the mouse. -- Layer 1: A Gaming Layer. It replaces the Backspace with a Space, and the Dash with a 6, so you can play CS:GO without needing to lift your right hand of the mouse. -- Layer 2: A Left Hand Layer. It is basically a left hand version of the right half, so you can have access to a full-sized keyboard without needing to lift your right hand from the the mouse. -- Layer 3: A Function Layer. It contains the F1-F12 keys, PgUp, PgDn, Numpad, and arrows on HJKL. -- Layer 4: A Layer Switching Layer. The keys in this layer turn on a specific layer while disabling the rest. Basically, you come here to switch between the QWERTY and Gaming layers. - +- Layer 0: A QWERTY Layer. +- Layer 1: A Function Layer. +- Layer 2: Empty Layer. +- Layer 3: Empty Layer. This keymap also does the following: -- Sets the polling rate of the keyboard to 1ms - Forces NKRO on - Enables: - - Command + - Via + - The Swap Hands feature - Disables: - Mouse Key - Extra Key diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk b/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk index 775ecbd12ba..3b18c2b9d28 100644 --- a/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk +++ b/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk @@ -1,3 +1,4 @@ MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = no -COMMAND_ENABLE = yes +SWAP_HANDS_ENABLE = yes +VIA_ENABLE = yes From 25033d5d9ee1298c719d8e33a96eb7cabb9c04ac Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 3 Jul 2022 00:08:05 +1000 Subject: [PATCH 02/34] MSYS2 install: use MinGW python-qmk package (#17302) * MSYS2 install: use MinGW python-qmk package * Add missing flashers * Note VC Redist for manual install * VC Redist no longer needed --- docs/newbs_getting_started.md | 10 ++-------- util/install/msys2.sh | 13 +++++-------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md index d5f92cf89d1..55a50f7b3ce 100644 --- a/docs/newbs_getting_started.md +++ b/docs/newbs_getting_started.md @@ -36,21 +36,15 @@ Alternatively, if you'd like to manually install MSYS2, the following section wi #### Prerequisites -You will need to install MSYS2, Git and Python. Follow the installation instructions on https://www.msys2.org. - -Once MSYS2 is installed, close any open MSYS terminals and open a new MinGW 64-bit terminal. +You will need to install [MSYS2](https://www.msys2.org). Once installed, close any open MSYS terminals (purple icon) and open a new MinGW 64-bit terminal (blue icon) from the Start Menu. !> **NOTE:** The MinGW 64-bit terminal is *not* the same as the MSYS terminal that opens when installation is completed. Your prompt should say "MINGW64" in purple text, rather than "MSYS". See [this page](https://www.msys2.org/wiki/MSYS2-introduction/#subsystems) for more information on the differences. -Then run the following command: - - pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip mingw-w64-x86_64-python-pillow - #### Installation Install the QMK CLI by running: - python3 -m pip install qmk + pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-python-qmk diff --git a/util/install/msys2.sh b/util/install/msys2.sh index c57c455eb4c..fa422023ab6 100755 --- a/util/install/msys2.sh +++ b/util/install/msys2.sh @@ -7,17 +7,14 @@ _qmk_install_prepare() { _qmk_install() { echo "Installing dependencies" - pacman --needed --noconfirm --disable-download-timeout -S pactoys-git + pacman --needed --noconfirm --disable-download-timeout -S pactoys pacboy sync --needed --noconfirm --disable-download-timeout \ - base-devel: toolchain:x clang:x git: unzip: python3-pip:x \ - avr-binutils:x avr-gcc:x avr-libc:x arm-none-eabi-binutils:x \ - arm-none-eabi-gcc:x arm-none-eabi-newlib:x avrdude:x bootloadhid:x \ - dfu-programmer:x dfu-util:x teensy-loader-cli:x hidapi:x \ - python-appdirs:x python-colorama:x python-jsonschema:x python-pillow:x python-pygments:x + base-devel: toolchain:x clang:x python-qmk:x hidapi:x \ + avr-binutils:x avr-gcc:x avr-libc:x \ + arm-none-eabi-binutils:x arm-none-eabi-gcc:x arm-none-eabi-newlib:x \ + avrdude:x bootloadhid:x dfu-programmer:x dfu-util:x hid-bootloader-cli:x mdloader:x teensy-loader-cli:x wb32-dfu-updater:x _qmk_install_drivers - - python3 -m pip install -r "$QMK_FIRMWARE_DIR/requirements.txt" } _qmk_install_drivers() { From d694488e2e39e9b599775a49fd711acc768e3915 Mon Sep 17 00:00:00 2001 From: HorrorTroll Date: Sat, 2 Jul 2022 21:08:38 +0700 Subject: [PATCH 03/34] Added new keyboard KB16-01 (#17418) --- keyboards/doio/kb16/config.h | 98 +++++ keyboards/doio/kb16/info.json | 40 ++ keyboards/doio/kb16/kb16.c | 66 +++ keyboards/doio/kb16/kb16.h | 47 +++ keyboards/doio/kb16/keymaps/bongocat/config.h | 45 +++ keyboards/doio/kb16/keymaps/bongocat/keymap.c | 180 +++++++++ .../kb16/keymaps/bongocat/oled/bongocat.c | 378 ++++++++++++++++++ .../kb16/keymaps/bongocat/oled/bongocat.h | 17 + keyboards/doio/kb16/keymaps/bongocat/rules.mk | 9 + keyboards/doio/kb16/keymaps/default/keymap.c | 137 +++++++ keyboards/doio/kb16/keymaps/default/rules.mk | 2 + keyboards/doio/kb16/keymaps/via/keymap.c | 172 ++++++++ keyboards/doio/kb16/keymaps/via/rules.mk | 1 + keyboards/doio/kb16/lib/glcdfont.c | 249 ++++++++++++ .../doio/kb16/lib/layer_status/layer_status.c | 167 ++++++++ .../doio/kb16/lib/layer_status/layer_status.h | 18 + keyboards/doio/kb16/lib/logo.c | 61 +++ keyboards/doio/kb16/lib/logo.h | 18 + keyboards/doio/kb16/readme.md | 26 ++ keyboards/doio/kb16/rules.mk | 36 ++ 20 files changed, 1767 insertions(+) create mode 100644 keyboards/doio/kb16/config.h create mode 100644 keyboards/doio/kb16/info.json create mode 100644 keyboards/doio/kb16/kb16.c create mode 100644 keyboards/doio/kb16/kb16.h create mode 100644 keyboards/doio/kb16/keymaps/bongocat/config.h create mode 100644 keyboards/doio/kb16/keymaps/bongocat/keymap.c create mode 100644 keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.c create mode 100644 keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.h create mode 100644 keyboards/doio/kb16/keymaps/bongocat/rules.mk create mode 100644 keyboards/doio/kb16/keymaps/default/keymap.c create mode 100644 keyboards/doio/kb16/keymaps/default/rules.mk create mode 100644 keyboards/doio/kb16/keymaps/via/keymap.c create mode 100644 keyboards/doio/kb16/keymaps/via/rules.mk create mode 100644 keyboards/doio/kb16/lib/glcdfont.c create mode 100644 keyboards/doio/kb16/lib/layer_status/layer_status.c create mode 100644 keyboards/doio/kb16/lib/layer_status/layer_status.h create mode 100644 keyboards/doio/kb16/lib/logo.c create mode 100644 keyboards/doio/kb16/lib/logo.h create mode 100644 keyboards/doio/kb16/readme.md create mode 100644 keyboards/doio/kb16/rules.mk diff --git a/keyboards/doio/kb16/config.h b/keyboards/doio/kb16/config.h new file mode 100644 index 00000000000..635aa89cabc --- /dev/null +++ b/keyboards/doio/kb16/config.h @@ -0,0 +1,98 @@ +/* Copyright 2022 DOIO + * 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 + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xD010 +#define PRODUCT_ID 0x1601 +#define DEVICE_VER 0x0001 +#define MANUFACTURER DOIO +#define PRODUCT KB16-01 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 7 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D5, D4, D3, D2 } +#define MATRIX_COL_PINS { F5, F4, F1, F0, B7, B4, B5 } + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Forcing to use NKRO instead 6KRO */ +#define FORCE_NKRO + +/* Larger keys per scan */ +#define QMK_KEYS_PER_SCAN 12 + +/* Use the custom font */ +#define OLED_FONT_H "lib/glcdfont.c" + +/* Encoder pins */ +#define ENCODERS_PAD_A { F7, C7, D7 } +#define ENCODERS_PAD_B { E6, C6, D6 } + +#ifdef RGB_MATRIX_ENABLE + /* RGB Matrix config */ + #define RGB_DI_PIN F6 + #define DRIVER_LED_TOTAL 16 + #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 + #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS + #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_UP_DOWN + #define RGB_MATRIX_KEYPRESSES + + /* RGB Matrix effect */ + #define ENABLE_RGB_MATRIX_ALPHAS_MODS + #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN + #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_CYCLE_ALL + #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN + #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN + #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL + #define ENABLE_RGB_MATRIX_DUAL_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_SOLID_REACTIVE_SIMPLE + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS + #define ENABLE_RGB_MATRIX_MULTISPLASH + #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/doio/kb16/info.json b/keyboards/doio/kb16/info.json new file mode 100644 index 00000000000..08ef309f19f --- /dev/null +++ b/keyboards/doio/kb16/info.json @@ -0,0 +1,40 @@ +{ + "keyboard_name": "KB16-01", + "url": "", + "maintainer": "HorrorTroll", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"1!", "x":0, "y":0}, + {"label":"2@", "x":1, "y":0}, + {"label":"3#", "x":2, "y":0}, + {"label":"4$", "x":3, "y":0}, + {"label":"Encoder 1 CCW", "x":4.25, "y":0, "w":0.5}, + {"label":"Encoder 1", "x":4.75, "y":0}, + {"label":"Encoder 1 CW", "x":5.75, "y":0, "w":0.5}, + {"label":"Encoder 2 CCW", "x":6.25, "y":0, "w":0.5}, + {"label":"Encoder 2", "x":6.75, "y":0}, + {"label":"Encoder 2 CW", "x":7.75, "y":0, "w":0.5}, + + {"label":"5%", "x":0, "y":1}, + {"label":"6^", "x":1, "y":1}, + {"label":"7&", "x":2, "y":1}, + {"label":"8*", "x":3, "y":1}, + + {"label":"9(", "x":0, "y":2}, + {"label":"0)", "x":1, "y":2}, + {"label":"\u2191", "x":2, "y":2}, + {"label":"Enter", "x":3, "y":2}, + + {"label":"Encoder 3 CCW", "x":5.25, "y":2.5, "w":0.5}, + {"label":"Encoder 3", "x":5.75, "y":2.5}, + {"label":"Encoder 3 CW", "x":6.75, "y":2.5, "w":0.5}, + + {"label":"Fn", "x":0, "y":3}, + {"label":"\u2190", "x":1, "y":3}, + {"label":"\u2193", "x":2, "y":3}, + {"label":"\u2192", "x":3, "y":3} + ] + } + } +} diff --git a/keyboards/doio/kb16/kb16.c b/keyboards/doio/kb16/kb16.c new file mode 100644 index 00000000000..037f561e97d --- /dev/null +++ b/keyboards/doio/kb16/kb16.c @@ -0,0 +1,66 @@ +/* Copyright 2022 DOIO + * 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 "kb16.h" + +// OLED animation +#include "lib/logo.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + { 0, 1, 2, 3, NO_LED, NO_LED, NO_LED }, + { 4, 5, 6, 7, NO_LED, NO_LED, NO_LED }, + { 8, 9, 10, 11, NO_LED, NO_LED, NO_LED }, + { 12, 13, 14, 15, NO_LED, NO_LED, NO_LED } +}, { + {0 , 0}, {75 , 0}, {149, 0}, {224, 0}, + {0 , 21}, {75 , 21}, {149, 21}, {224, 21}, + {0 , 43}, {75 , 43}, {149, 43}, {224, 43}, + {0 , 64}, {75 , 64}, {149, 64}, {224, 64}, +}, { + 1, 1, 1, 1, + 1, 4, 4, 1, + 1, 4, 4, 1, + 1, 1, 1, 1, +} }; +#endif + +#ifdef OLED_ENABLE + uint16_t startup_timer; + + oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + startup_timer = timer_read(); + + return rotation; + } + + bool oled_task_kb(void) { + static bool finished_logo = false; + + if ((timer_elapsed(startup_timer) < 5000) && !finished_logo) { + render_logo(); + } else { + finished_logo = true; + + if (!oled_task_user()) { + return false; + } + } + + return true; + } +#endif diff --git a/keyboards/doio/kb16/kb16.h b/keyboards/doio/kb16/kb16.h new file mode 100644 index 00000000000..c4dc7cfed1e --- /dev/null +++ b/keyboards/doio/kb16/kb16.h @@ -0,0 +1,47 @@ +/* Copyright 2022 DOIO + * 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 + +#include "quantum.h" + +#define XXX KC_NO + +/* 06 ◯ 05 16 ◯ 15 + * ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + * │00 │01 │02 │03 │ │04 │ │14 │ + * ├───┼───┼───┼───┤ └───┘ └───┘ + * │10 │11 │12 │13 │ + * ├───┼───┼───┼───┤ 26 ◯ 25 + * │20 │21 │22 │23 │ ┌───┐ + * ├───┼───┼───┼───┤ │24 │ + * │30 │31 │32 │33 │ └───┘ + * └───┴───┴───┴───┘ + */ + +#define LAYOUT( \ + K00, K01, K02, K03, K06, K04, K05, \ + K10, K11, K12, K13, K16, K14, K15, \ + K20, K21, K22, K23, K26, K24, K25, \ + K30, K31, K32, K33 \ +) { \ + { 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, XXX, XXX, XXX } \ +} + diff --git a/keyboards/doio/kb16/keymaps/bongocat/config.h b/keyboards/doio/kb16/keymaps/bongocat/config.h new file mode 100644 index 00000000000..bb22eebb1be --- /dev/null +++ b/keyboards/doio/kb16/keymaps/bongocat/config.h @@ -0,0 +1,45 @@ +/* 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 + +/* Additional thing to reduce compiled size */ +#define NO_ACTION_ONESHOT +#define LAYER_STATE_8BIT + +#ifdef RGB_MATRIX_ENABLE + /* RGB Matrix config */ + #undef RGB_MATRIX_KEYPRESSES + + /* RGB Matrix effect */ + #undef ENABLE_RGB_MATRIX_ALPHAS_MODS + #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN + #undef ENABLE_RGB_MATRIX_BREATHING + #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_CYCLE_OUT_IN + #undef ENABLE_RGB_MATRIX_DUAL_BEACON + #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS + #undef ENABLE_RGB_MATRIX_RAINDROPS + #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS + #undef ENABLE_RGB_MATRIX_HUE_PENDULUM + #undef ENABLE_RGB_MATRIX_HUE_WAVE + #undef ENABLE_RGB_MATRIX_PIXEL_RAIN + #undef ENABLE_RGB_MATRIX_PIXEL_FLOW + #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL +#endif diff --git a/keyboards/doio/kb16/keymaps/bongocat/keymap.c b/keyboards/doio/kb16/keymaps/bongocat/keymap.c new file mode 100644 index 00000000000..b60688a385f --- /dev/null +++ b/keyboards/doio/kb16/keymaps/bongocat/keymap.c @@ -0,0 +1,180 @@ +/* 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 QMK_KEYBOARD_H + +// OLED animation +#include "oled/bongocat.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, + _FN1, + _FN2 +}; + +// enum layer_keycodes { }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│ + ├───┼───┼───┼───┤ └───┘ └───┘ + │ 5 │ 6 │ 7 │ 8 │ + ├───┼───┼───┼───┤ + │ 9 │ 0 │ ↑ │Ent│ ┌───┐ + ├───┼───┼───┼───┤ │Mut│ + │Fn2│ ← │ ↓ │ → │ └───┘ + └───┴───┴───┴───┘ + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │ ! │ @ │ # │ $ │ │ │ │ │ + ├───┼───┼───┼───┤ └───┘ └───┘ + │ % │ ^ │ & │ * │ + ├───┼───┼───┼───┤ + │ ( │ ) │ │ │ ┌───┐ + ├───┼───┼───┼───┤ │ │ + │ │ │ │ │ └───┘ + └───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 */ + [_BASE] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_MPRV, KC_MPLY, KC_MNXT, + KC_5, KC_6, KC_7, KC_8, KC_PGDN, TO(_FN), KC_PGUP, + KC_9, KC_0, KC_UP, KC_ENT, KC_VOLD, KC_MUTE, KC_VOLU, + MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT + ), + +/* + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │ │ │ │ │ │ │ │ │ + ├───┼───┼───┼───┤ └───┘ └───┘ + │ │ │ │ │ + ├───┼───┼───┼───┤ + │ │ │ │ │ ┌───┐ + ├───┼───┼───┼───┤ │ │ + │ │ │ │ │ └───┘ + └───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 */ + [_FN] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, TO(_FN1), _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + +/* + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │ │ │ │ │ │ │ │ │ + ├───┼───┼───┼───┤ └───┘ └───┘ + │ │ │ │ │ + ├───┼───┼───┼───┤ + │ │ │ │ │ ┌───┐ + ├───┼───┼───┼───┤ │ │ + │ │ │ │ │ └───┘ + └───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 */ + [_FN1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, TO(_FN2), _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + +/* + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │Spi│Spd│ │ │ │ │ │TO0│ + ├───┼───┼───┼───┤ └───┘ └───┘ + │Sai│Sad│ │ │ + ├───┼───┼───┼───┤ + │Tog│Mod│Hui│ │ ┌───┐ + ├───┼───┼───┼───┤ │ │ + │ │Vai│Hud│Vad│ └───┘ + └───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 */ + [_FN2] = LAYOUT( + RGB_SPI, RGB_SPD, _______, QK_BOOT, _______, _______, _______, + RGB_SAI, RGB_SAD, _______, _______, _______, TO(_BASE), _______, + RGB_TOG, RGB_MOD, RGB_HUI, _______, _______, _______, _______, + _______, RGB_VAI, RGB_HUD, RGB_VAD + ), +}; + +#ifdef OLED_ENABLE + bool oled_task_user(void) { + led_t led_usb_state = host_keyboard_led_state(); + + render_bongocat(); + oled_set_cursor(14, 0); // sets cursor to (column, row) using charactar spacing (4 rows on 128x32 screen, anything more will overflow back to the top) + oled_write_P(PSTR("WPM:"), false); + oled_write(get_u8_str(get_current_wpm(), '0'), false); // writes wpm on top right corner of string + oled_set_cursor(17, 2); + oled_write_P(led_usb_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false); + oled_set_cursor(17, 3); + oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false); + + return true; + } +#endif + +#ifdef ENCODER_ENABLE + +#define ENCODERS 3 +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = {{ 5, 0 }, { 5, 1 }, { 5, 2 }}; +static keypos_t encoder_ccw[ENCODERS] = {{ 6, 0 }, { 6, 1 }, { 6, 2 }}; + +void encoder_action_unregister(void) { + for (int index = 0; index < ENCODERS; ++index) { + if (encoder_state[index]) { + keyevent_t encoder_event = (keyevent_t) { + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1) + }; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +} + +void encoder_action_register(uint8_t index, bool clockwise) { + keyevent_t encoder_event = (keyevent_t) { + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1) + }; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +} + +void matrix_scan_user(void) { + encoder_action_unregister(); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + encoder_action_register(index, clockwise); + return false; +} +#endif diff --git a/keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.c b/keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.c new file mode 100644 index 00000000000..12ca8694c1d --- /dev/null +++ b/keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.c @@ -0,0 +1,378 @@ +/* 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 "quantum.h" + +// WPM-responsive animation stuff here +#define IDLE_FRAMES 5 +#define IDLE_SPEED 10 // below this wpm value your animation will idle +// #define PREP_FRAMES 1 // uncomment if >1 +#define TAP_FRAMES 2 +#define ANIM_WPM_LOWER 20 // above this wpm value typing animation to trigger +#define ANIM_FRAME_DURATION_MAX 450 // longest animation duration in ms +#define ANIM_FRAME_DURATION_MIN 100 // shortest animation duration in ms +#define IDLE_FRAME_DURATION 300 // how long each frame lasts in ms +#define ANIM_FRAME_RATIO 2.5 // how aggressively animation speeds up with wpm +// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing +#define ANIM_SIZE 525 // number of bytes in array, minimize for adequate firmware size, max is 1024 +#define MAX(x, y) (((x) > (y)) ? (x) : (y)) // Math.max macro + +uint32_t curr_anim_duration = 0; // variable animation duration +uint32_t bongo_timer = 0; +uint32_t bongo_sleep = 0; +uint8_t current_idle_frame = 0; +// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1 +uint8_t current_tap_frame = 0; + +// Code containing pixel art, contains: +// 5 idle frames, 1 prep frame, and 2 tap frames + +// To make your own pixel art: +// save a png/jpeg of an 128x32 image (resource: https://www.pixilart.com/draw ) +// follow this guide up to and including "CONVERT YOUR IMAGE" https://docs.splitkb.com/hc/en-us/articles/360013811280-How-do-I-convert-an-image-for-use-on-an-OLED-display- +// replace numbers in brackets with your own +// if you start getting errors when compiling make sure you didn't accedentally delete a bracket +void render_bongocat(void) { + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { + { + //Idle 1 - 128x32 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00, + 0x00, 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, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, + 0xf8, 0xfc, 0xfe, 0xff, 0xfe, 0xfc, 0xf8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 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, + 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, + 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xcf, 0xff, + 0xff, 0xbf, 0x7f, 0x7f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 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, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x04, 0x64, 0xf8, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0x8f, 0x27, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f, + 0x9f, 0x9f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0xfc, 0xfc, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 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, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30, + 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x12, 0x12, 0x3d, + 0x2d, 0x25, 0x26, 0x44, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26, + 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x24, 0x18, 0x3c, 0x7e, 0x7f, 0x7f, + 0x7f, 0xbf, 0x3f, 0x1f, 0x1f, 0x8f, 0xe7, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 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 + }, + { + //Idle 2 - 128x32 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00, + 0x00, 0x00, 0x00, 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, 0xc0, 0xe0, 0xf0, + 0xf8, 0xfc, 0xfe, 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0xc0, 0xc0, 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, + 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, + 0xc0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x9f, 0x9f, 0xff, + 0xff, 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 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, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x04, 0x64, 0xf8, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0x8f, 0x27, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f, + 0x9f, 0x9f, 0x1e, 0x1e, 0x3f, 0x3d, 0x3d, 0x3e, 0x7f, 0x7f, 0x7f, 0x7f, 0xf9, 0xf9, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf0, 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, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30, + 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x12, 0x12, 0x3d, + 0x2d, 0x25, 0x26, 0x44, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26, + 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x24, 0x18, 0x3c, 0x7e, 0x7f, 0x7f, + 0x7f, 0xbf, 0x3f, 0x1f, 0x1f, 0x8f, 0xe7, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 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 + }, + { + //Idle 3 - 128x32 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0xe0, + 0xf0, 0xf8, 0xfc, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0xc0, 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, + 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, + 0xc0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x9f, 0x9f, 0xff, + 0xff, 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xfc, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x04, 0x64, 0xf8, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0x8f, 0x27, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f, + 0x9f, 0x9f, 0x1e, 0x1e, 0x3f, 0x3d, 0x3d, 0x3e, 0x7f, 0x7f, 0x7f, 0x7f, 0xf9, 0xf9, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf0, 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, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30, + 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x12, 0x12, 0x3d, + 0x2d, 0x25, 0x26, 0x44, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26, + 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x24, 0x18, 0x3c, 0x7e, 0x7f, 0x7f, + 0x7f, 0xbf, 0x3f, 0x1f, 0x1f, 0x8f, 0xe7, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 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 + }, + { + //Idle 4 - 128x32 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0xe0, + 0xf0, 0xf8, 0xfc, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0xc0, 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, + 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, + 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xcf, 0xcf, 0xff, + 0xff, 0xbf, 0x7f, 0x7f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xfc, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0x3c, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x04, 0x64, 0xf8, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0x8f, 0x27, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f, + 0x9f, 0x9f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0xfc, 0xfc, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 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, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30, + 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x12, 0x12, 0x3d, + 0x2d, 0x25, 0x26, 0x44, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26, + 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x24, 0x18, 0x3c, 0x7e, 0x7f, 0x7f, + 0x7f, 0xbf, 0x3f, 0x1f, 0x1f, 0x8f, 0xe7, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 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 + }, + { + //Idle 5 - 128x32 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00, + 0x00, 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, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, + 0xf8, 0xfc, 0xfe, 0xff, 0xfe, 0xfc, 0xf8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 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, + 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, + 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xcf, 0xff, + 0xff, 0xbf, 0x7f, 0x7f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0xfe, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x0f, 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, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x04, 0x64, 0xf8, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0x8f, 0x27, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f, + 0x9f, 0x9f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0xfc, 0xfc, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 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, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30, + 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x12, 0x12, 0x3d, + 0x2d, 0x25, 0x26, 0x44, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26, + 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x24, 0x18, 0x3c, 0x7e, 0x7f, 0x7f, + 0x7f, 0xbf, 0x3f, 0x1f, 0x1f, 0x8f, 0xe7, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 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 + } + }; + + static const char PROGMEM prep[][ANIM_SIZE] = { + { + //Prepare - 128x32 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00, + 0x00, 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, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, + 0xf0, 0xf8, 0xfc, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 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, + 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0xf0, 0xf8, + 0xdc, 0x36, 0x3e, 0xee, 0xfc, 0xe0, 0x9c, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xcf, 0xff, + 0xff, 0xbf, 0x7f, 0x7f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7e, 0xbe, 0xbc, 0xbc, 0x7c, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 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, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x44, 0xc4, 0xc4, 0x68, 0x78, + 0x59, 0x89, 0x91, 0x91, 0xd3, 0xf3, 0xa3, 0x23, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f, + 0x9f, 0x9f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0xfc, 0xfc, 0xff, 0x81, + 0xfa, 0xff, 0xe6, 0xe7, 0xfd, 0xff, 0xfc, 0xf3, 0xff, 0xff, 0xff, 0xfe, 0xf8, 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, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30, + 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x13, 0x12, 0x3c, + 0x2c, 0x26, 0x27, 0x45, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26, + 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x34, 0x3c, 0x2c, 0x44, 0xc8, 0xc8, + 0xe9, 0xb9, 0x11, 0x11, 0x13, 0x93, 0xe3, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 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 + } + }; + + static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { + { + //Tap left - 128x32 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00, + 0x00, 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, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, + 0xf0, 0xf8, 0xfc, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 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, + 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0xf0, 0xf8, + 0xdc, 0x36, 0x3e, 0xee, 0xfc, 0xe0, 0x9c, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xcf, 0xff, + 0xff, 0xbf, 0x7f, 0x7f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, + 0x00, 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, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x44, 0xc4, 0xc4, 0x68, 0x78, + 0x59, 0x89, 0x91, 0x91, 0xd3, 0xf3, 0xa3, 0x23, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f, + 0x9f, 0x9f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0xfc, 0xfc, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xe0, 0x00, 0x00, + 0x3f, 0x1f, 0x07, 0x83, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30, + 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x13, 0x12, 0x3c, + 0x2c, 0x26, 0x27, 0x45, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26, + 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x24, 0x18, 0x3c, 0x7e, 0x7f, 0x7f, + 0x7f, 0xbf, 0x3f, 0x1f, 0x1f, 0x8f, 0xe7, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08, + 0x10, 0x10, 0x11, 0x11, 0x21, 0x23, 0x23, 0x21, 0x40, 0x40, 0x40, 0x40, 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 + }, + { + //Tap right - 128x32 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00, + 0x00, 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, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, + 0xf0, 0xf8, 0xfc, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 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, + 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08, + 0x10, 0x10, 0x10, 0x10, 0xa0, 0xa0, 0x20, 0x20, 0x40, 0x46, 0x4f, 0x5f, 0x9f, 0x9c, 0x90, 0x80, + 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xcf, 0xff, + 0xff, 0xbf, 0x7f, 0x7f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7e, 0xbe, 0xbc, 0xbc, 0x7c, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 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, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0f, 0x8f, 0xc7, 0xe3, 0x31, 0x38, 0x2c, 0x04, 0x64, 0xf8, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0x8f, 0x27, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f, + 0x9f, 0x9f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0xfc, 0xfc, 0xff, 0x81, + 0xfa, 0xff, 0xe6, 0xe7, 0xfd, 0xff, 0xfc, 0xf3, 0xff, 0xff, 0xff, 0xfe, 0xf8, 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, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30, + 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x12, 0x12, 0x3d, + 0x2d, 0x25, 0x26, 0x44, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26, + 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x34, 0x3c, 0x2c, 0x44, 0xc8, 0xc8, + 0xe9, 0xb9, 0x11, 0x11, 0x13, 0x93, 0xe3, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 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 + }, + }; + + // assumes 1 frame prep stage + void animation_phase(void) { + if (get_current_wpm() <= IDLE_SPEED) { + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE); + } + + if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < ANIM_WPM_LOWER) { + // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1 + oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1 + } + + if (get_current_wpm() >= ANIM_WPM_LOWER) { + current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; + oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE); + } + } + + // variable animation duration. Don't want this value to get near zero as it'll bug out. + curr_anim_duration = MAX(ANIM_FRAME_DURATION_MIN, ANIM_FRAME_DURATION_MAX - ANIM_FRAME_RATIO * get_current_wpm()); + + if (get_current_wpm() > ANIM_WPM_LOWER) { + oled_on(); // not essential but turns on animation OLED with any alpha keypress + + if (timer_elapsed32(bongo_timer) > curr_anim_duration) { + bongo_timer = timer_read32(); + animation_phase(); + } + + bongo_sleep = timer_read32(); + } else { + if (timer_elapsed32(bongo_sleep) > OLED_TIMEOUT) { + oled_off(); + } else { + if (timer_elapsed32(bongo_timer) > IDLE_FRAME_DURATION) { + bongo_timer = timer_read32(); + animation_phase(); + } + } + } +} diff --git a/keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.h b/keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.h new file mode 100644 index 00000000000..65ceabc6822 --- /dev/null +++ b/keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.h @@ -0,0 +1,17 @@ +/* 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 . + */ + +void render_bongocat(void); diff --git a/keyboards/doio/kb16/keymaps/bongocat/rules.mk b/keyboards/doio/kb16/keymaps/bongocat/rules.mk new file mode 100644 index 00000000000..087a45a9442 --- /dev/null +++ b/keyboards/doio/kb16/keymaps/bongocat/rules.mk @@ -0,0 +1,9 @@ +SRC += oled/bongocat.c + +VIA_ENABLE = yes + +# Additional thing to reduce compiled size +GRAVE_ESC_ENABLE = no + +# OLED enabled +WPM_ENABLE = yes diff --git a/keyboards/doio/kb16/keymaps/default/keymap.c b/keyboards/doio/kb16/keymaps/default/keymap.c new file mode 100644 index 00000000000..0d229c753b8 --- /dev/null +++ b/keyboards/doio/kb16/keymaps/default/keymap.c @@ -0,0 +1,137 @@ +/* Copyright 2022 DOIO + * 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 QMK_KEYBOARD_H + +// OLED animation +#include "lib/layer_status/layer_status.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, + _FN1, + _FN2 +}; + +// enum layer_keycodes { }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│ + ├───┼───┼───┼───┤ └───┘ └───┘ + │ 5 │ 6 │ 7 │ 8 │ + ├───┼───┼───┼───┤ + │ 9 │ 0 │ ↑ │Ent│ ┌───┐ + ├───┼───┼───┼───┤ │Mut│ + │Fn2│ ← │ ↓ │ → │ └───┘ + └───┴───┴───┴───┘ + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │ ! │ @ │ # │ $ │ │ │ │ │ + ├───┼───┼───┼───┤ └───┘ └───┘ + │ % │ ^ │ & │ * │ + ├───┼───┼───┼───┤ + │ ( │ ) │ │ │ ┌───┐ + ├───┼───┼───┼───┤ │ │ + │ │ │ │ │ └───┘ + └───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 */ + [_BASE] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, _______, KC_MPLY, _______, + KC_5, KC_6, KC_7, KC_8, _______, TO(_FN), _______, + KC_9, KC_0, KC_UP, KC_ENT, _______, KC_MUTE, _______, + MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT + ), + +/* + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │ │ │ │ │ │ │ │ │ + ├───┼───┼───┼───┤ └───┘ └───┘ + │ │ │ │ │ + ├───┼───┼───┼───┤ + │ │ │ │ │ ┌───┐ + ├───┼───┼───┼───┤ │ │ + │ │ │ │ │ └───┘ + └───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 */ + [_FN] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, TO(_FN1), _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + +/* + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │ │ │ │ │ │ │ │ │ + ├───┼───┼───┼───┤ └───┘ └───┘ + │ │ │ │ │ + ├───┼───┼───┼───┤ + │ │ │ │ │ ┌───┐ + ├───┼───┼───┼───┤ │ │ + │ │ │ │ │ └───┘ + └───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 */ + [_FN1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, TO(_FN2), _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + +/* + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │Spi│Spd│ │ │ │ │ │TO0│ + ├───┼───┼───┼───┤ └───┘ └───┘ + │Sai│Sad│ │ │ + ├───┼───┼───┼───┤ + │Tog│Mod│Hui│ │ ┌───┐ + ├───┼───┼───┼───┤ │ │ + │ │Vai│Hud│Vad│ └───┘ + └───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 */ + [_FN2] = LAYOUT( + RGB_SPI, RGB_SPD, _______, QK_BOOT, _______, _______, _______, + RGB_SAI, RGB_SAD, _______, _______, _______, TO(_BASE), _______, + RGB_TOG, RGB_MOD, RGB_HUI, _______, _______, _______, _______, + _______, RGB_VAI, RGB_HUD, RGB_VAD + ), +}; + +#ifdef OLED_ENABLE + bool oled_task_user(void) { + render_layer_status(); + + return true; + } +#endif + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, +}; +#endif diff --git a/keyboards/doio/kb16/keymaps/default/rules.mk b/keyboards/doio/kb16/keymaps/default/rules.mk new file mode 100644 index 00000000000..00003ba11bd --- /dev/null +++ b/keyboards/doio/kb16/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +# Encoder enabled +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/doio/kb16/keymaps/via/keymap.c b/keyboards/doio/kb16/keymaps/via/keymap.c new file mode 100644 index 00000000000..4f01846eae4 --- /dev/null +++ b/keyboards/doio/kb16/keymaps/via/keymap.c @@ -0,0 +1,172 @@ +/* Copyright 2022 DOIO + * 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 QMK_KEYBOARD_H + +// OLED animation +#include "lib/layer_status/layer_status.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, + _FN1, + _FN2 +}; + +// enum layer_keycodes { }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│ + ├───┼───┼───┼───┤ └───┘ └───┘ + │ 5 │ 6 │ 7 │ 8 │ + ├───┼───┼───┼───┤ + │ 9 │ 0 │ ↑ │Ent│ ┌───┐ + ├───┼───┼───┼───┤ │Mut│ + │Fn2│ ← │ ↓ │ → │ └───┘ + └───┴───┴───┴───┘ + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │ ! │ @ │ # │ $ │ │ │ │ │ + ├───┼───┼───┼───┤ └───┘ └───┘ + │ % │ ^ │ & │ * │ + ├───┼───┼───┼───┤ + │ ( │ ) │ │ │ ┌───┐ + ├───┼───┼───┼───┤ │ │ + │ │ │ │ │ └───┘ + └───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 */ + [_BASE] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_MPRV, KC_MPLY, KC_MNXT, + KC_5, KC_6, KC_7, KC_8, KC_PGDN, TO(_FN), KC_PGUP, + KC_9, KC_0, KC_UP, KC_ENT, KC_VOLD, KC_MUTE, KC_VOLU, + MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT + ), + +/* + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │ │ │ │ │ │ │ │ │ + ├───┼───┼───┼───┤ └───┘ └───┘ + │ │ │ │ │ + ├───┼───┼───┼───┤ + │ │ │ │ │ ┌───┐ + ├───┼───┼───┼───┤ │ │ + │ │ │ │ │ └───┘ + └───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 */ + [_FN] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, TO(_FN1), _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + +/* + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │ │ │ │ │ │ │ │ │ + ├───┼───┼───┼───┤ └───┘ └───┘ + │ │ │ │ │ + ├───┼───┼───┼───┤ + │ │ │ │ │ ┌───┐ + ├───┼───┼───┼───┤ │ │ + │ │ │ │ │ └───┘ + └───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 */ + [_FN1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, TO(_FN2), _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + +/* + ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ + │Spi│Spd│ │ │ │ │ │TO0│ + ├───┼───┼───┼───┤ └───┘ └───┘ + │Sai│Sad│ │ │ + ├───┼───┼───┼───┤ + │Tog│Mod│Hui│ │ ┌───┐ + ├───┼───┼───┼───┤ │ │ + │ │Vai│Hud│Vad│ └───┘ + └───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 */ + [_FN2] = LAYOUT( + RGB_SPI, RGB_SPD, _______, QK_BOOT, _______, _______, _______, + RGB_SAI, RGB_SAD, _______, _______, _______, TO(_BASE), _______, + RGB_TOG, RGB_MOD, RGB_HUI, _______, _______, _______, _______, + _______, RGB_VAI, RGB_HUD, RGB_VAD + ), +}; + +#ifdef OLED_ENABLE + bool oled_task_user(void) { + render_layer_status(); + + return true; + } +#endif + +#ifdef ENCODER_ENABLE + +#define ENCODERS 3 +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = {{ 5, 0 }, { 5, 1 }, { 5, 2 }}; +static keypos_t encoder_ccw[ENCODERS] = {{ 6, 0 }, { 6, 1 }, { 6, 2 }}; + +void encoder_action_unregister(void) { + for (int index = 0; index < ENCODERS; ++index) { + if (encoder_state[index]) { + keyevent_t encoder_event = (keyevent_t) { + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1) + }; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +} + +void encoder_action_register(uint8_t index, bool clockwise) { + keyevent_t encoder_event = (keyevent_t) { + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1) + }; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +} + +void matrix_scan_user(void) { + encoder_action_unregister(); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + encoder_action_register(index, clockwise); + return false; +} +#endif diff --git a/keyboards/doio/kb16/keymaps/via/rules.mk b/keyboards/doio/kb16/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/doio/kb16/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/doio/kb16/lib/glcdfont.c b/keyboards/doio/kb16/lib/glcdfont.c new file mode 100644 index 00000000000..c0987f75cfc --- /dev/null +++ b/keyboards/doio/kb16/lib/glcdfont.c @@ -0,0 +1,249 @@ +/* Copyright 2022 DOIO + * 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 . + */ + +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#include "progmem.h" + +// Standard ASCII 5x7 font +const unsigned char font[] PROGMEM = { + 0x07, 0x08, 0x7F, 0x08, 0x07, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x2A, 0x1C, 0x77, 0x1C, 0x2A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x3E, 0x04, 0x08, 0x00, + 0x08, 0x10, 0x3E, 0x10, 0x08, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x41, 0x22, 0x14, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x38, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x10, 0x38, 0x10, 0x10, 0x1C, 0x00, + 0x0C, 0x7A, 0x41, 0x7A, 0x0C, 0x00, + 0x18, 0x2F, 0x41, 0x2F, 0x18, 0x00, + 0x22, 0x72, 0x22, 0x27, 0x22, 0x00, + 0x08, 0x1C, 0x08, 0x08, 0x08, 0x00, + 0x08, 0x08, 0x38, 0x20, 0x28, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2A, 0x2A, 0x2A, 0x00, 0x00, + 0x4E, 0x46, 0x4A, 0x50, 0x2F, 0x00, + 0x3E, 0x45, 0x55, 0x51, 0x3E, 0x00, + 0x48, 0x50, 0x7E, 0x50, 0x48, 0x00, + 0x3E, 0x49, 0x71, 0x49, 0x3E, 0x00, + 0x10, 0x22, 0x4F, 0x20, 0x10, 0x00, + 0x0E, 0x06, 0x0A, 0x10, 0x20, 0x00, + 0x20, 0x10, 0x0A, 0x06, 0x0E, 0x00, + 0x08, 0x08, 0x08, 0x1C, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, + 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, + 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, + 0xDE, 0xD7, 0xDC, 0x00, 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, + 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, + 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, + 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, + 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, + 0x0F, 0x7F, 0x0F, 0x00, 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, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/keyboards/doio/kb16/lib/layer_status/layer_status.c b/keyboards/doio/kb16/lib/layer_status/layer_status.c new file mode 100644 index 00000000000..657ac86ff21 --- /dev/null +++ b/keyboards/doio/kb16/lib/layer_status/layer_status.c @@ -0,0 +1,167 @@ +/* Copyright 2022 DOIO + * 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 "quantum.h" + +#define ANIM_SIZE 525 // number of bytes in array, minimize for adequate firmware size, max is 1024 + +void render_layer_status(void) { + static const char PROGMEM layer_status[][ANIM_SIZE] = { + { + //Layer 1 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf1, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9e, 0x9e, 0x9e, 0x9e, 0x86, 0x86, 0x86, + 0x86, 0x86, 0xc6, 0xfe, 0xfe, 0xfe, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, + 0x86, 0x86, 0x86, 0xf6, 0xfe, 0xfe, 0xfe, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0xfe, 0xfe, 0x3e, 0x02, 0x00, + 0x00, 0x80, 0xfe, 0xfe, 0xfe, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x6f, 0x61, 0x61, 0x61, 0x61, + 0x61, 0x61, 0x61, 0x61, 0x61, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, + 0x61, 0x61, 0x79, 0x7f, 0x7f, 0x7f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0d, 0x0c, 0x0c, 0x0c, + 0x4c, 0x7f, 0x7f, 0x7f, 0x7f, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x03, 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, 0x00, 0x00, 0x00, 0x00 + }, + { + //Layer 2 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 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, 0x08, 0x0e, 0xfe, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x61, 0x61, 0x61, 0x61, 0x79, 0x79, 0x79, + 0x79, 0x79, 0x39, 0x01, 0x01, 0x01, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, + 0x86, 0x86, 0x86, 0xf6, 0xfe, 0xfe, 0xfe, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0xfe, 0xfe, 0x3e, 0x02, 0x00, + 0x00, 0x80, 0xfe, 0xfe, 0xfe, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x90, 0x9e, 0x9e, 0x9e, 0x9e, + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, + 0x61, 0x61, 0x79, 0x7f, 0x7f, 0x7f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0d, 0x0c, 0x0c, 0x0c, + 0x4c, 0x7f, 0x7f, 0x7f, 0x7f, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x03, 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 + }, + { + //Layer 3 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 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, 0x08, 0x0e, 0xfe, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9e, 0x9e, 0x9e, 0x9e, 0x86, 0x86, 0x86, + 0x86, 0x86, 0xc6, 0xfe, 0xfe, 0xfe, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, + 0x79, 0x79, 0x79, 0x09, 0x01, 0x01, 0x01, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0xfe, 0xfe, 0x3e, 0x02, 0x00, + 0x00, 0x80, 0xfe, 0xfe, 0xfe, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x6f, 0x61, 0x61, 0x61, 0x61, + 0x61, 0x61, 0x61, 0x61, 0x61, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x9f, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, + 0x9e, 0x9e, 0x86, 0x80, 0x80, 0x80, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0d, 0x0c, 0x0c, 0x0c, + 0x4c, 0x7f, 0x7f, 0x7f, 0x7f, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x03, 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 + }, + { + //Layer 4 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0e, 0xfe, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9e, 0x9e, 0x9e, 0x9e, 0x86, 0x86, 0x86, + 0x86, 0x86, 0xc6, 0xfe, 0xfe, 0xfe, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, + 0x86, 0x86, 0x86, 0xf6, 0xfe, 0xfe, 0xfe, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x03, 0x01, 0x01, 0xc1, 0xfd, 0xff, + 0xff, 0x7f, 0x01, 0x01, 0x01, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x6f, 0x61, 0x61, 0x61, 0x61, + 0x61, 0x61, 0x61, 0x61, 0x61, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, + 0x61, 0x61, 0x79, 0x7f, 0x7f, 0x7f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xf0, 0xf0, 0xf0, 0xf2, 0xf3, 0xf3, 0xf3, + 0xb3, 0x80, 0x80, 0x80, 0x80, 0xf3, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 + } + }; + + oled_write_raw_P(layer_status[get_highest_layer(layer_state)], sizeof(layer_status[0])); +} diff --git a/keyboards/doio/kb16/lib/layer_status/layer_status.h b/keyboards/doio/kb16/lib/layer_status/layer_status.h new file mode 100644 index 00000000000..a367a829d75 --- /dev/null +++ b/keyboards/doio/kb16/lib/layer_status/layer_status.h @@ -0,0 +1,18 @@ +/* Copyright 2022 DOIO + * 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 . + */ + +void render_layer_status(void); diff --git a/keyboards/doio/kb16/lib/logo.c b/keyboards/doio/kb16/lib/logo.c new file mode 100644 index 00000000000..7a52b479ff4 --- /dev/null +++ b/keyboards/doio/kb16/lib/logo.c @@ -0,0 +1,61 @@ +/* Copyright 2022 DOIO + * 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 "quantum.h" + +#define ANIM_SIZE 525 // number of bytes in array, minimize for adequate firmware size, max is 1024 + +void render_logo(void) { + static const char PROGMEM doio[][ANIM_SIZE] = { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x20, 0x30, 0x10, 0x18, 0x08, 0x08, + 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x18, 0x10, 0x30, 0x20, 0x60, 0xc0, + 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, 0x80, 0xf0, 0xfc, 0x0e, 0x03, 0x01, 0x00, 0xf8, 0xf8, 0xf8, 0x38, 0x38, 0x38, 0xf0, + 0xf0, 0xe0, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x38, 0x38, 0x38, 0x70, 0xf0, 0xe0, 0xc0, 0x00, 0x18, + 0xf8, 0xf8, 0xf8, 0x18, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x38, 0x38, 0x38, 0x70, 0xf0, 0xe0, 0xc0, + 0x01, 0x03, 0x0e, 0xfc, 0xf8, 0x80, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf8, + 0xf8, 0xf8, 0x80, 0xc0, 0xe0, 0xf0, 0x78, 0x38, 0x18, 0x00, 0xf8, 0xf8, 0xf8, 0xb8, 0xb8, 0xb8, + 0xf8, 0xf8, 0x70, 0x00, 0x60, 0x60, 0x70, 0x78, 0xf8, 0xf8, 0xf8, 0x00, 0xe0, 0xf0, 0xf0, 0xb8, + 0xb8, 0xb8, 0xb8, 0xb8, 0x30, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xe0, 0xf0, 0xf8, + 0x38, 0x38, 0x38, 0xf8, 0xf0, 0xe0, 0x00, 0x60, 0x60, 0x70, 0x78, 0xf8, 0xf8, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0f, 0x3f, 0x70, 0xc0, 0x80, 0x00, 0x1f, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x0f, + 0x0f, 0x07, 0x00, 0x03, 0x07, 0x0f, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0f, 0x07, 0x03, 0x00, 0x18, + 0x1f, 0x1f, 0x1f, 0x18, 0x00, 0x03, 0x07, 0x0f, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0f, 0x07, 0x03, + 0x80, 0xc0, 0x70, 0x3f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1f, + 0x1f, 0x1f, 0x01, 0x03, 0x07, 0x0f, 0x1e, 0x1c, 0x18, 0x00, 0x1f, 0x1f, 0x1f, 0x1d, 0x1d, 0x1d, + 0x1f, 0x1f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x07, 0x0f, 0x0f, 0x1d, + 0x1d, 0x1d, 0x1f, 0x1f, 0x0f, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x07, 0x0f, 0x1f, + 0x1c, 0x1c, 0x1c, 0x1f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04, 0x0c, 0x08, 0x18, 0x10, 0x10, + 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x18, 0x08, 0x0c, 0x04, 0x06, 0x03, + 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 + } + }; + + oled_write_raw_P(doio[0], ANIM_SIZE); +} diff --git a/keyboards/doio/kb16/lib/logo.h b/keyboards/doio/kb16/lib/logo.h new file mode 100644 index 00000000000..91d1ddce34b --- /dev/null +++ b/keyboards/doio/kb16/lib/logo.h @@ -0,0 +1,18 @@ +/* Copyright 2022 DOIO + * 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 . + */ + +void render_logo(void); diff --git a/keyboards/doio/kb16/readme.md b/keyboards/doio/kb16/readme.md new file mode 100644 index 00000000000..e83bfa67db9 --- /dev/null +++ b/keyboards/doio/kb16/readme.md @@ -0,0 +1,26 @@ +# KB16-01 + +![KB16-01](https://i.imgur.com/lpq47ELh.png) + +A macropad that have 16-key keyboard made by DOIO, which controlled by an Atmega32u4 chipset. The keyboard features per-key RGB, 3 encoder and an OLED screen for displaying useful information. + +* Keyboard Maintainer: [HorrorTroll](https://github.com/HorrorTroll) +* Hardware Supported: Atmega32u4 + +Make example for this keyboard (after setting up your build environment): + + make doio/kb16/rev1:default + +Flashing example for this keyboard: + + make doio/kb16/rev1: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 (1! key) and plug in the keyboard +* **Physical reset button**: Short press the button under Spacebar keycap to enter the Bootloader and flash the firmware +* **Keycode in layout**: Press the key mapped to RESET if it is available diff --git a/keyboards/doio/kb16/rules.mk b/keyboards/doio/kb16/rules.mk new file mode 100644 index 00000000000..b2982c9743c --- /dev/null +++ b/keyboards/doio/kb16/rules.mk @@ -0,0 +1,36 @@ +SRC += lib/layer_status/layer_status.c +SRC += lib/logo.c + +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# 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 + +# Additional thing to reduce compiled size +LTO_ENABLE = yes +SPACE_CADET_ENABLE = no + +# OLED enabled +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 + +# RGB Matrix enabled +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 + +# Encoder enabled +ENCODER_ENABLE = yes From 97dfdcb2bd5013259f8500bcd31aaaa4826145c6 Mon Sep 17 00:00:00 2001 From: gourdo1 Date: Sat, 2 Jul 2022 07:11:26 -0700 Subject: [PATCH 04/34] [keymap] Update gourdo1 keymap for Q2 changes (#17398) --- .../pro/rev1/ansi/keymaps/gourdo1/caps_word.c | 150 ---- .../pro/rev1/ansi/keymaps/gourdo1/caps_word.h | 127 ---- .../pro/rev1/ansi/keymaps/gourdo1/config.h | 99 ++- .../pro/rev1/ansi/keymaps/gourdo1/keymap.c | 455 ++++++++++-- .../rev1/ansi/keymaps/gourdo1/paddlegame.h | 48 ++ .../pro/rev1/ansi/keymaps/gourdo1/readme.md | 108 ++- .../ansi/keymaps/gourdo1/rgb_matrix_map.h | 129 +++- .../pro/rev1/ansi/keymaps/gourdo1/rules.mk | 16 +- .../pro/rev1/iso/keymaps/gourdo1/config.h | 146 ++++ .../pro/rev1/iso/keymaps/gourdo1/keymap.c | 682 ++++++++++++++++++ .../pro/rev1/iso/keymaps/gourdo1/paddlegame.h | 48 ++ .../pro/rev1/iso/keymaps/gourdo1/readme.md | 122 ++++ .../rev1/iso/keymaps/gourdo1/rgb_matrix_map.h | 411 +++++++++++ .../pro/rev1/iso/keymaps/gourdo1/rules.mk | 22 + users/gourdo1/custom_double_taps.h | 73 ++ users/gourdo1/gourdo1.c | 624 ++++++++++------ users/gourdo1/gourdo1.h | 68 +- users/gourdo1/gourdo1_encoder.c | 4 +- 18 files changed, 2703 insertions(+), 629 deletions(-) delete mode 100644 keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.c delete mode 100644 keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.h create mode 100644 keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/paddlegame.h create mode 100644 keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/config.h create mode 100644 keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/keymap.c create mode 100644 keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/paddlegame.h create mode 100644 keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/readme.md create mode 100644 keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rgb_matrix_map.h create mode 100644 keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rules.mk create mode 100644 users/gourdo1/custom_double_taps.h diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.c deleted file mode 100644 index d2f7b6ee7fc..00000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.c +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright 2021-2022 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// -// For full documentation, see -// https://getreuer.info/posts/keyboards/caps-word - -#include "caps_word.h" - -static bool caps_word_active = false; - -#if CAPS_WORD_IDLE_TIMEOUT > 0 -#if CAPS_WORD_IDLE_TIMEOUT < 100 || CAPS_WORD_IDLE_TIMEOUT > 30000 -// Constrain timeout to a sensible range. With the 16-bit timer, the longest -// representable timeout is 32768 ms, rounded here to 30000 ms = half a minute. -#error "caps_word: CAPS_WORD_IDLE_TIMEOUT must be between 100 and 30000 ms" -#endif - -static uint16_t idle_timer = 0; - -void caps_word_task(void) { - if (caps_word_active && timer_expired(timer_read(), idle_timer)) { - caps_word_set(false); - } -} -#endif // CAPS_WORD_IDLE_TIMEOUT > 0 - -bool process_caps_word(uint16_t keycode, keyrecord_t* record) { -#ifndef NO_ACTION_ONESHOT - const uint8_t mods = get_mods() | get_oneshot_mods(); -#else - const uint8_t mods = get_mods(); -#endif // NO_ACTION_ONESHOT - - if (!caps_word_active) { - // Pressing both shift keys at the same time enables caps word. - if ((mods & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) { - caps_word_set(true); // Activate Caps Word. - return false; - } - return true; - } else { -#if CAPS_WORD_IDLE_TIMEOUT > 0 - idle_timer = record->event.time + CAPS_WORD_IDLE_TIMEOUT; -#endif // CAPS_WORD_IDLE_TIMEOUT > 0 - } - - if (!record->event.pressed) { return true; } - - if (!(mods & ~MOD_MASK_SHIFT)) { - switch (keycode) { - // Ignore MO, TO, TG, TT, and OSL layer switch keys. - case QK_MOMENTARY ... QK_MOMENTARY_MAX: - case QK_TO ... QK_TO_MAX: - case QK_TOGGLE_LAYER ... QK_TOGGLE_LAYER_MAX: - case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX: - case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER_MAX: - return true; - -#ifndef NO_ACTION_TAPPING - case QK_MOD_TAP ... QK_MOD_TAP_MAX: - if (record->tap.count == 0) { - // Deactivate if a mod becomes active through holding a mod-tap key. - caps_word_set(false); - return true; - } - keycode &= 0xff; - break; - -#ifndef NO_ACTION_LAYER - case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: -#endif // NO_ACTION_LAYER - if (record->tap.count == 0) { return true; } - keycode &= 0xff; - break; -#endif // NO_ACTION_TAPPING - -#ifdef SWAP_HANDS_ENABLE - case QK_SWAP_HANDS ... QK_SWAP_HANDS_MAX: - if (keycode > 0x56F0 || record->tap.count == 0) { return true; } - keycode &= 0xff; - break; -#endif // SWAP_HANDS_ENABLE - } - - if (caps_word_press_user(keycode)) { - return true; - } - } - - caps_word_set(false); // Deactivate Caps Word. - return true; -} - -void caps_word_set(bool active) { - if (active != caps_word_active) { - if (active) { - clear_mods(); -#ifndef NO_ACTION_ONESHOT - clear_oneshot_mods(); -#endif // NO_ACTION_ONESHOT -#if CAPS_WORD_IDLE_TIMEOUT > 0 - idle_timer = timer_read() + CAPS_WORD_IDLE_TIMEOUT; -#endif // CAPS_WORD_IDLE_TIMEOUT > 0 - } else if ((get_weak_mods() & MOD_BIT(KC_LSFT)) != 0) { - // If the weak shift mod is still on, turn it off and send an update to - // the host computer. - del_weak_mods(MOD_BIT(KC_LSFT)); - send_keyboard_report(); - } - - caps_word_active = active; - caps_word_set_user(active); - } -} - -bool caps_word_get(void) { return caps_word_active; } - -__attribute__((weak)) void caps_word_set_user(bool active) {} - -__attribute__((weak)) bool caps_word_press_user(uint16_t keycode) { - switch (keycode) { - // Keycodes that continue Caps Word, with shift applied. - case KC_A ... KC_Z: - 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_MINS: - case KC_UNDS: - return true; - - default: - return false; // Deactivate Caps Word. - } -} - diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.h deleted file mode 100644 index 7f58dd3f17e..00000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.h +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2021-2022 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// -// Caps Word, activated by pressing both shift keys at the same time. -// -// This library implements "Caps Word", which is like conventional Caps Lock, -// but automatically disables itself at the end of the word. This is useful for -// typing all-caps identifiers like `MOD_MASK_ALT`. -// -// Caps Word is activated by pressing the left and right shift keys at the same -// time. This way you don't need a dedicated key for using Caps Word. I've -// tested that this works as expected with one-shot mods and Space Cadet Shift. -// If your shift keys are mod-taps, activate Caps Word by holding both shift -// mod-tap keys until the tapping term, release them, then begin typing. -// -// Optionally, Caps Word may be configured to deactivate if the keyboard is idle -// for some time. This is useful to mitigate unintended shifting when you get -// interrupted or switch to the mouse while Caps Word is active. In your -// config.h, define `CAPS_WORD_IDLE_TIMEOUT` with a time in milliseconds: -// -// #define CAPS_WORD_IDLE_TIMEOUT 5000 // Turn off Caps Word after 5 seconds. -// -// and in your keymap.c, define (or add to) `matrix_scan_user()` as -// -// void matrix_scan_user(void) { -// caps_word_task(); -// // Other tasks... -// } -// -// For full documentation, see -// https://getreuer.info/posts/keyboards/caps-word - -#pragma once - -#include QMK_KEYBOARD_H - -// Call this function from `process_record_user()` to implement Caps Word. -bool process_caps_word(uint16_t keycode, keyrecord_t* record); - -// If CAPS_WORD_IDLE_TIMEOUT is set, call `caps_word_task()` from -// `matrix_scan_user()` as described above. -// -// If CAPS_WORD_IDLE_TIMEOUT isn't set, calling this function has no effect (but -// will still compile). -#if CAPS_WORD_IDLE_TIMEOUT > 0 -void caps_word_task(void); -#else -static inline void caps_word_task(void) {} -#endif - -// Activates or deactivates Caps Word. For instance activate Caps Word with a -// combo by defining a `COMBO_ACTION` that calls `caps_word_set(true)`: -// -// void process_combo_event(uint16_t combo_index, bool pressed) { -// switch(combo_index) { -// case CAPS_COMBO: -// if (pressed) { -// caps_word_set(true); // Activate Caps Word. -// } -// break; -// -// // Other combos... -// } -// } -void caps_word_set(bool active); - -// Returns whether Caps Word is currently active. -bool caps_word_get(void); - -// An optional callback that gets called when Caps Word turns on or off. This is -// useful to represent the current Caps Word state, e.g. by setting an LED or -// playing a sound. In your keymap, define -// -// void caps_word_set_user(bool active) { -// if (active) { -// // Do something when Caps Word activates. -// } else { -// // Do something when Caps Word deactivates. -// } -// } -void caps_word_set_user(bool active); - -// An optional callback which is called on every key press while Caps Word is -// active. When the key should be shifted (that is, a letter key), the callback -// should call `add_weak_mods(MOD_BIT(KC_LSFT))` to shift the key. The callback -// also determines whether the key should continue Caps Word. Returning true -// continues the current "word", while returning false is "word breaking" and -// deactivates Caps Word. The default callback is -// -// bool caps_word_press_user(uint16_t keycode) { -// switch (keycode) { -// // Keycodes that continue Caps Word, with shift applied. -// case KC_A ... KC_Z: -// 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_MINS: -// case KC_UNDS: -// return true; -// -// default: -// return false; // Deactivate Caps Word. -// } -// } -// -// To customize, copy the above function into your keymap and add/remove -// keycodes to the above cases. -// -// NOTE: Outside of this callback, you can use `caps_word_set(false)` to -// deactivate Caps Word. -bool caps_word_press_user(uint16_t keycode); - diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/config.h index 582e473cb28..a37fb08d31e 100644 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/config.h +++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/config.h @@ -1,5 +1,5 @@ /* Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 + Copyright 2022 gourdo1 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,10 +17,21 @@ along with this program. If not, see . #pragma once -#define TAPPING_TOGGLE 2 -// TT set to two taps +// Force n-key rollover +#define FORCE_NKRO -/* Handle GRAVESC combo keys */ +// Set TT to two taps +#define TAPPING_TOGGLE 2 + +#ifdef COMMAND_ENABLE +#define IS_COMMAND() (get_mods() == MOD_MASK_CTRL) //debug commands accessed by holding down both CTRLs: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_command.md +#endif + +// Caps Word configuration +#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD +#define CAPS_WORD_IDLE_TIMEOUT 10000 // Automatically turn off after x milliseconds of idle. 0 to never timeout. + +// Handle GRAVESC combo keys #define GRAVE_ESC_ALT_OVERRIDE // Always send Escape if Alt is pressed #define GRAVE_ESC_CTRL_OVERRIDE @@ -31,19 +42,79 @@ along with this program. If not, see . #define TAPPING_TERM_PER_KEY #ifdef RGB_MATRIX_ENABLE -#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR -#define RGB_DISABLE_WHEN_USB_SUSPENDED -#endif + #define RGB_DISABLE_WHEN_USB_SUSPENDED + #define RGB_MATRIX_KEYPRESSES // Enables REACTIVE & SPLASH modes + #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Enables Heatmap, Rain -// RGB step values -#define RGBLIGHT_HUE_STEP 32 // The number of steps to cycle through the hue by (default 10) -#define RGBLIGHT_SAT_STEP 17 // The number of steps to increment the saturation by (default 17) -#define RGBLIGHT_VAL_STEP 17 // The number of steps to increment the brightness by (default 17) + // RGB step values + #define RGBLIGHT_HUE_STEP 32 // The number of steps to cycle through the hue by (default 10) + #define RGBLIGHT_SAT_STEP 17 // The number of steps to increment the saturation by (default 17) + #define RGBLIGHT_VAL_STEP 17 // The number of steps to increment the brightness by (default 17) -// add fifth layer for colemak -- set "COLEMAK_LAYER_ENABLE = yes" in rules.mk to enable + // Startup values, when none have been set + #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default effect mode, if none has been set (was RGB_MATRIX_SOLID_COLOR) + #define RGB_MATRIX_STARTUP_HUE 24 // Sets the default hue value, if none has been set + #define RGB_MATRIX_STARTUP_SAT 255 // Sets the default saturation value, if none has been set + #define RGB_MATRIX_STARTUP_VAL 127 // Sets the default brightness value, if none has been set + #define RGB_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set + + // Uncomment any #undef line below to turn OFF any default enabled RGB background effect (enabled in keyboards/gmmk/pro/config.h). + #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Solid color (seems redundant; seems same as RGB_MATRIX_SOLID_COLOR?) + //#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static, horizontal rainbow + //#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static, vertical Rainbow + //#undef ENABLE_RGB_MATRIX_BREATHING // Breathing animation using selected HSV color + #undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right (with white) + //#undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right (with black) + #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades sat (with white) + //#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness (with black) + #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades brightness (with white) + //#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness (with black) + //#undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard cycling through rainbow + //#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient moving left to right + //#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom + #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient chevron scrolling left to right (too similar to cycle left right) + //#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Rainbow circles coming to center. + #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Two Rainbow circles coming to 1/3 and 2/3 points. (seems mostly redundant with above) + #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Built-in cycling pinwheel (seems redundant with below) + //#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard + #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Spinning rainbow (more distracting transitions) + //#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Spinning rainbow (smoother) + #undef ENABLE_RGB_MATRIX_DUAL_BEACON // Two rainbows spinning around keyboard (distracting, busy) + #undef ENABLE_RGB_MATRIX_RAINDROPS // Sustained raindrops of blue, green, yellow (confusing to use with RGB layers) + //#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Sustained raindrops of blue, purple, pink, green (confusing to use with RGB layers, but slightly better than above) + #undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back (very subtle) + #undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left (very subtle) + #undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right (very subtle) + //#undef ENABLE_RGB_MATRIX_PIXEL_RAIN // Non-sustained raindrops of pastel colors + #undef ENABLE_RGB_MATRIX_PIXEL_FLOW // More active version of pixel rain with quick cycling (unusable, very distracting) + #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL // Same as Pixel Flow but with current HSV only (somewhat distracting) + //Only enabled if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined + //#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // Fading heatmap that follows keystrokes (has buggy side LEDs that glow red) + //#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // The Matrix (has buggy side LEDs that glow red) + //Only enabled if RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined + //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Key hits shown in current hue - all other keys black + //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Keyboard lights up in chosen hue, key hits shown in complementary hue (try this as default?) + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse around a single key hit then fades value out (Single key) + //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // same as above but more intense (Multi-key) + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Column and Row single current color fade (Single key) + //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Column and Row single color fade. (Multi-key) + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of key hit then fades (Single key) + //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multi-key hit then fades + //#undef ENABLE_RGB_MATRIX_SPLASH // Full rainbow pulses from key hit. All else black. + #undef ENABLE_RGB_MATRIX_MULTISPLASH // Full rainbow pulses from multi-keys. All else black. (distracting on multiple keystroke hits) + #undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Single color pulses from key hit. All else black. (distracting on multiple key hits) + //#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Single color pulses from muli-keys. All else black. +#endif //RGB_MATRIX_ENABLE + +// Add a layer for colemak -- set "COLEMAK_LAYER_ENABLE = yes" in rules.mk to enable #if defined COLEMAK_LAYER_ENABLE -#define DYNAMIC_KEYMAP_LAYER_COUNT 5 -#define _COLEMAK 4 + #ifdef GAME_ENABLE + #define DYNAMIC_KEYMAP_LAYER_COUNT 6 + #define _COLEMAK 5 + #else + #define DYNAMIC_KEYMAP_LAYER_COUNT 5 + #define _COLEMAK 4 + #endif //GAME_ENABLE #endif // COLEMAK_LAYER_ENABLE /* diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/keymap.c index 97db98dd12b..050152b47d3 100644 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/keymap.c +++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/keymap.c @@ -1,7 +1,7 @@ /* Copyright 2021 Glorious, LLC Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 - + Copyright 2022 gourdo1 + 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 @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -// Note: Several advanced functions referenced in this file (like Tap Dance functions) are defined in users/gourdo1/gourdo1.c +// Note: Several advanced functions referenced in this file (like Tap Dance functions) are defined in /users/gourdo1/gourdo1.c #include QMK_KEYBOARD_H @@ -24,6 +24,10 @@ along with this program. If not, see . #include "gourdo1.h" +#include "paddlegame.h" + +#include + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base Layout @@ -44,39 +48,60 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_BASE] = LAYOUT( - KC_ESCLYR, 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_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_DEL, + 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, LEFTOFENC, ENCFUNC, + 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, BELOWENC, 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, - TT(_NUMPADMOUSE), 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_LSFTCAPSWIN, 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_END, + CAPSNUM, 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, + LSFTCAPSWIN, 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_END, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), /* FN1 Layout * * ,-------------------------------------------------------------------------------------------------------------. - * | Esc ||MyCmp |WbHom | Calc |MdSel ||MdPrv |MdNxt |MdPly |MdStp ||VolDn |VolUp |PrScr |ScrLk ||Pause || ____ | + * | Esc ||MyCmp |WbHom | Calc |MdSel ||MdPrv |MdNxt |MdPly |MdStp ||VolDn |VolUp |PrScr |ScrLk ||Pause ||Sleep | * |=============================================================================================================| * | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |RGBTOD|RGBTOI| ________ ||RGBTOG| * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------| - * | ______ |RGBSAD|RGBVAI|RGBSAI| NKRO | ____ |YAHOO | ____ | ____ |OUTLK |Pause | ____ | ____ | Reset || Home | + * | ______ |RGBSAD|RGBVAI|RGBSAI| NKRO | ____ |YAHOO | ____ | ____ |OUTLK |Pause | ____ | ____ |QK_BOOT|| Home | * |---------+------+------+------+------+------+------+------+------+------+------+------+------+-------++------| * | Capslock |RGBHUD|RGBVAD|RGBHUI| ____|GMAIL |HTMAIL| ____ | ____ | ____ | ____ | ____ | __________ || End | * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------| - * | __________ |RGBNIT| ____ | ____ | ____ | ____ |NumLk | ____ | ____ |DOTCOM| ____ | ______ ||RGBMOD|| ____ | + * | __________ |RGBNIT| ____ | ____ | ____ | ____ |NumLk | ____ | ____ |DOTCOM| CAD | ______ ||RGBMOD|| ____ | * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======| * | ____ | WinKyLk | ____ | _____ | ____ | ____ | ____ ||RGBSPD|RGBRMD|RGBSPI| * `------------------------------------------------------------------------------------------------------------' */ + #ifdef GAME_ENABLE [_FN1] = LAYOUT( - EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SLCK, KC_PAUS, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOD, RGB_TOI, _______, RGB_TOG, - _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, KC_PAUS, SWAP_L, SWAP_R, RESET, KC_HOME, - KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, _______, _______, _______, _______, KC_END, - _______, RGB_NITE,_______, _______, _______, _______, KC_NLCK, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______, + EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SLCK, KC_PAUS, KC_SLEP, + PRNCONF, TG_CAPS, TG_PAD, TG_ESC, TG_DEL, TG_TDCAP,TG_ENC, TG_INS,TG_SPCMOD, _______, _______, RGB_TOD, RGB_TOI, _______, RGB_TOG, + _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, TG(_GAME),SWAP_L, SWAP_R, QK_BOOT, KC_HOME, + KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, LOCKPC, _______, _______, _______, KC_END, + _______, RGB_NITE,_______, _______, _______, _______, KC_NLCK, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______, + _______, WINLOCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI + ), + + [_GAME] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + #else + [_FN1] = LAYOUT( + EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SLCK, KC_PAUS, KC_SLEP, + PRNCONF, TG_CAPS, TG_PAD, TG_ESC, TG_DEL, TG_TDCAP,TG_ENC, TG_INS,TG_SPCMOD, _______, _______, RGB_TOD, RGB_TOI, _______, RGB_TOG, + _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, KC_PAUS, SWAP_L, SWAP_R, QK_BOOT, KC_HOME, + KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, LOCKPC, _______, _______, _______, KC_END, + _______, RGB_NITE,_______, _______, _______, _______, KC_NLCK, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______, _______, KC_WINLCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI ), + #endif //GAME_ENABLE /* _NUMPADMOUSE Layout * Note: A symbol preceded by "P" is a Numpad-encoded version of the key -- any app that differentiates will recognize the char as coming from a physical numpad. @@ -101,7 +126,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_PGUP, KC_UP, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, _______, KC_WH_U, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_PAST, _______, KC_PENT, KC_WH_D, _______, KC_NO, _______, _______, _______, KC_NO, KC_NO, KC_P0, KC_00, KC_PDOT, KC_PSLS, KC_BTN1, KC_MS_U, KC_BTN2, - _______, _______, _______, _______, _______, _______, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R + _______, _______, _______, KC_PENT, _______, _______, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R ), [_MOUSEKEY] = LAYOUT( @@ -115,19 +140,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef COLEMAK_LAYER_ENABLE [_COLEMAK] = 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_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_HOME, + _______, 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, _______, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_PGDN, - _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - _______, _______, _______, KC_SPC, KC_RALT, _______,KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), + _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_PGDN, + _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + _______, _______, _______, KC_SPC, KC_RALT, _______, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), #endif // COLEMAK_LAYER_ENABLE }; #if defined(ENCODER_ENABLE) && !defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality when not using userspace defaults void encoder_action_rgbhue(bool clockwise) { - if (clockwise) + if (clockwise) rgblight_increase_hue_noeeprom(); else rgblight_decrease_hue_noeeprom(); @@ -154,6 +179,18 @@ bool encoder_update_user(uint8_t index, bool clockwise) { timeout_update_threshold(clockwise); #endif break; + #ifdef GAME_ENABLE + case _GAME: + // Game: Paddle movement + if (damage_count == 0) { + if (clockwise) { + if (paddle_pos_full < 15) ++paddle_pos_full; + } else { + if (paddle_pos_full > 0) --paddle_pos_full; + } + } + break; + #endif //GAME_ENABLE default: encoder_action_volume(clockwise); // Otherwise it just changes volume break; @@ -165,6 +202,45 @@ bool encoder_update_user(uint8_t index, bool clockwise) { #endif // ENCODER_ENABLE && !ENCODER_DEFAULTACTIONS_ENABLE #ifdef RGB_MATRIX_ENABLE + +// Game logic +#ifdef GAME_ENABLE +void init_ball(uint8_t i) { + i &= 1; + ball[i].on = true; + ball[i].up = false; + ball[i].y = 0; + ball[i].x = rand() % 16; + + // Set initial ball state + if (ball[i].x < 8) { + ball[i].left = false; + } else { + ball[i].x -= 4; + ball[i].left = true; + } + + // 1/4 chance of being an enemy ball after level 6 + if (level_number > 3) { + ball[i].enemy = ((rand() % 4) == 0); + } else { + ball[i].enemy = false; + } +} + +void hurt_paddle(void) { + if (paddle_lives > 0) { + --paddle_lives; + } + damage_timer = timer_read(); + damage_count = 10; + + // Reset board + init_ball(0); + ball[1].on = false; +} +#endif //GAME_ENABLE + // Capslock, Scroll lock and Numlock indicator on Left side lights. void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { if (get_rgb_nightmode()) rgb_matrix_set_color_all(RGB_OFF); @@ -174,6 +250,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { rgb_matrix_set_color(LED_L3, RGB_RED); rgb_matrix_set_color(LED_L4, RGB_RED); rgb_matrix_set_color(LED_TAB, RGB_RED); + rgb_matrix_set_color(LED_F12, RGB_RED); } // System NumLock warning indicator RGB setup @@ -197,12 +274,19 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { // CapsLock RGB setup if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) { - for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_LETTERS); i++) { - rgb_matrix_set_color(LED_LIST_LETTERS[i], RGB_CHARTREUSE); + if (user_config.rgb_hilite_caps) { + for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_LETTERS); i++) { + rgb_matrix_set_color(LED_LIST_LETTERS[i], RGB_CHARTREUSE); + } + rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE); + } + else { + rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE); } - rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE); } // Winkey disabled (gaming) mode RGB setup @@ -239,9 +323,9 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { rgb_matrix_set_color(LED_LALT, RGB_RED); rgb_matrix_set_color(LED_SPC, RGB_RED); rgb_matrix_set_color(LED_LWIN, RGB_RED); - rgb_matrix_set_color(LED_RALT, RGB_RED); + //rgb_matrix_set_color(LED_RALT, RGB_RED); rgb_matrix_set_color(LED_FN, RGB_OFFBLUE); - rgb_matrix_set_color(LED_RCTL, RGB_RED); + //rgb_matrix_set_color(LED_RCTL, RGB_RED); rgb_matrix_set_color(LED_BSLS, RGB_RED); rgb_matrix_set_color(LED_L1, RGB_RED); rgb_matrix_set_color(LED_L2, RGB_RED); @@ -264,37 +348,90 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { rgb_matrix_set_color(LED_R8, RGB_RED); rgb_matrix_set_color(LED_MINS, RGB_OFFBLUE); rgb_matrix_set_color(LED_EQL, RGB_OFFBLUE); + #ifdef GAME_ENABLE + rgb_matrix_set_color(LED_P, RGB_CHARTREUSE); + #else + rgb_matrix_set_color(LED_P, RGB_RED); + #endif // GAME_ENABLE + + //Add RGB statuses for user.config toggles + if (user_config.rgb_hilite_caps) { + rgb_matrix_set_color(LED_1, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_1, RGB_PURPLE); + } + if (user_config.rgb_hilite_numpad) { + rgb_matrix_set_color(LED_2, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_2, RGB_PURPLE); + } + if (user_config.esc_double_tap_to_baselyr) { + rgb_matrix_set_color(LED_3, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_3, RGB_PURPLE); + } + if (user_config.del_right_home_top) { + rgb_matrix_set_color(LED_4, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_4, RGB_PURPLE); + } + if (user_config.double_tap_shift_for_capslock) { + rgb_matrix_set_color(LED_5, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_5, RGB_PURPLE); + } + if (user_config.encoder_press_mute_or_media) { + rgb_matrix_set_color(LED_6, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_6, RGB_PURPLE); + } + if (user_config.ins_on_shft_bkspc_or_del) { + rgb_matrix_set_color(LED_7, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_7, RGB_PURPLE); + } + if (user_config.disable_space_mods) { + rgb_matrix_set_color(LED_8, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_8, RGB_PURPLE); + } // Add RGB Timeout Indicator -- shows 0 to 139 using F row and num row; larger numbers using 16bit code uint16_t timeout_threshold = get_timeout_threshold(); - if (timeout_threshold <= 10) rgb_matrix_set_color(LED_LIST_FUNCROW[timeout_threshold], RGB_CYAN); + if (timeout_threshold <= 10) rgb_matrix_set_color(LED_LIST_FUNCROW[timeout_threshold], RGB_BLUE); else if (timeout_threshold < 140) { rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold / 10)], RGB_CYAN); - rgb_matrix_set_color(LED_LIST_NUMROW[(timeout_threshold % 10)], RGB_CYAN); + rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold % 10)], RGB_BLUE); } else { // >= 140 minutes, just show these 3 lights - rgb_matrix_set_color(LED_LIST_NUMROW[10], RGB_CYAN); - rgb_matrix_set_color(LED_LIST_NUMROW[11], RGB_CYAN); - rgb_matrix_set_color(LED_LIST_NUMROW[12], RGB_CYAN); + rgb_matrix_set_color(LED_LIST_FUNCROW[10], RGB_CYAN); + rgb_matrix_set_color(LED_LIST_FUNCROW[11], RGB_CYAN); + rgb_matrix_set_color(LED_LIST_FUNCROW[12], RGB_CYAN); } break; // Numpad & Mouse Keys overlay RGB case _NUMPADMOUSE: - for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_NUMPAD); i++) { - rgb_matrix_set_color(LED_LIST_NUMPAD[i], RGB_OFFBLUE); + if (user_config.rgb_hilite_numpad) { + for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_NUMPAD); i++) { + rgb_matrix_set_color(LED_LIST_NUMPAD[i], RGB_OFFBLUE); + } + rgb_matrix_set_color(LED_L5, RGB_OFFBLUE); + rgb_matrix_set_color(LED_L6, RGB_OFFBLUE); + rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE); + rgb_matrix_set_color(LED_UP, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_DOWN, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_LEFT, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_RIGHT, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_RCTL, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_RSFT, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_END, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_PGUP, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_PGDN, RGB_CHARTREUSE); + } else { + rgb_matrix_set_color(LED_L5, RGB_OFFBLUE); + rgb_matrix_set_color(LED_L6, RGB_OFFBLUE); + rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE); } - rgb_matrix_set_color(LED_L5, RGB_OFFBLUE); - rgb_matrix_set_color(LED_L6, RGB_OFFBLUE); - rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE); - rgb_matrix_set_color(LED_UP, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_DOWN, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_LEFT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RIGHT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RCTL, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RSFT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_END, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_PGUP, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_PGDN, RGB_CHARTREUSE); break; // MOUSEKEYS mode RGB @@ -308,19 +445,229 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { rgb_matrix_set_color(LED_END, RGB_CYAN); rgb_matrix_set_color(LED_PGUP, RGB_OFFBLUE); rgb_matrix_set_color(LED_PGDN, RGB_OFFBLUE); - break; - // Colemak layer RGB - #ifdef COLEMAK_LAYER_ENABLE + // Colemak layer RGB + #ifdef COLEMAK_LAYER_ENABLE case _COLEMAK: for (uint8_t i = 0; i < ARRAYSIZE(LED_SIDE_RIGHT); i++) { rgb_matrix_set_color(LED_SIDE_RIGHT[i], RGB_MAGENTA); rgb_matrix_set_color(LED_SIDE_LEFT[i], RGB_MAGENTA); } break; - #endif + #endif + + // Paddle game logic + #ifdef GAME_ENABLE + case _GAME: + if (!game_start) { + srand((unsigned int) timer_read()); + + // Store user light settings + last_hsv = rgb_matrix_get_hsv(); + rgb_matrix_sethsv_noeeprom(0, 0, 0); + + paddle_pos_full = 8; + paddle_lives = 4; + bounce_count = 0; + level_number = 0; + damage_count = 0; + + init_ball(0); + ball[1].on = false; + ball_timer = timer_read(); + + game_start = true; + } + + // Set level indicator + if (level_number < 12) { + rgb_matrix_set_color(GAME_R0[level_number], RGB_BLUE); + } + + // Set life bar + for (uint8_t i = 0; i < paddle_lives; i++) { + rgb_matrix_set_color(GAME_LIVES[i], RGB_GREEN); + } + + uint8_t paddle_pos = paddle_pos_full >> 1; + + if (damage_count > 0) { + // Flash paddle when receiving damage + if (timer_elapsed(damage_timer) > 500) { + --damage_count; + damage_timer = timer_read(); + } + if ((damage_count & 1) == 0) { + for (uint8_t i = 0; i < 3; i++) { + rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_RED); + } + } + if (damage_count == 0) { + ball_timer = timer_read(); + } + + } else if (paddle_lives == 0) { + // Game over + for (uint8_t i = 0; i < sizeof(LED_GAME_OVER) / sizeof(LED_GAME_OVER[0]); i++) { + rgb_matrix_set_color(LED_GAME_OVER[i], RGB_RED); + } + + } else if (level_number >= 12) { + // You win + if (rgb_value.r == 0xff && rgb_value.g < 0xff) { + if (rgb_value.b > 0) { + --rgb_value.b; + } else { + ++rgb_value.g; + } + } else if (rgb_value.g == 0xff && rgb_value.b < 0xff) { + if (rgb_value.r > 0) { + --rgb_value.r; + } else { + ++rgb_value.b; + } + } else if (rgb_value.b == 0xff && rgb_value.r < 0xff) { + if (rgb_value.g > 0) { + --rgb_value.g; + } else { + ++rgb_value.r; + } + } + + for (uint8_t i = 0; i < 3; i++) { + rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], rgb_value.r, rgb_value.g, rgb_value.b); + } + rgb_matrix_set_color(GAME_SMILE1[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b); + rgb_matrix_set_color(GAME_SMILE1[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b); + rgb_matrix_set_color(GAME_SMILE2[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b); + rgb_matrix_set_color(GAME_SMILE2[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b); + + } else { + // normal game loop + + // Set paddle position + for (uint8_t i = 0; i < 3; i++) { + rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_GREEN); + } + + // Ball movement logic happens at intervals + if (timer_elapsed(ball_timer) > GAME_TIMER[level_number]) { + for (int i = 0; i < 2; ++i) { + if (ball[i].on) { + // Ball movement + if (ball[i].up) { + if (ball[i].y > 0) { + --ball[i].y; + if (!ball[i].left) ++ball[i].x; + } else { + // Count reflections. If > 10, increase level + ++bounce_count; + if (bounce_count >= 10) { + bounce_count = 0; + ++level_number; + } + ball[i].on = false; + } + } else { + ++ball[i].y; + if (ball[i].left) --ball[i].x; + if (ball[i].y > 4) { + // Remove a life if ball isn't returned and isn't enemy + if (!ball[i].enemy) { + hurt_paddle(); + i = 2; + } else { + ball[i].on = false; + } + } + } + } + } + if (ball[0].y == 4 && !ball[1].on) { + init_ball(1); + } + if (ball[1].y == 4 && !ball[0].on) { + init_ball(0); + } + if (!ball[0].on && !ball[1].on) { + init_ball(0); + } + ball_timer = timer_read(); + } + + // Other ball stuff + for (int i = 0; i < 2; ++i) { + if (ball[i].on) { + // Ball deflection logic + if (!ball[i].up && ball[i].y == 4 && (ball[i].x == paddle_pos || ball[i].x == paddle_pos - 1 || ball[i].x == paddle_pos + 1)) { + if (!ball[i].enemy) { + --ball[i].y; + if (!ball[i].left) { + ++ball[i].x; + } + ball[i].up = true; + } else { + hurt_paddle(); + i = 2; + } + } + + // Ball display + switch (ball[i].y) { + case 0: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_WHITE); + } + break; + + case 1: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_WHITE); + } + break; + + case 2: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_WHITE); + } + break; + + case 3: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_WHITE); + } + break; + + case 4: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_WHITE); + } + break; + } + } + } + } + break; + #endif //GAME_ENABLE default: + #ifdef GAME_ENABLE + if (game_start) { + // Reset lighting settings + game_start = false; + rgb_matrix_sethsv_noeeprom(last_hsv.h, last_hsv.s, last_hsv.v); + } + #endif //GAME_ENABLE break; } } @@ -329,8 +676,6 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { void keyboard_post_init_keymap(void) { // keyboard_post_init_user() moved to userspace #ifdef RGB_MATRIX_ENABLE - rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR); - rgb_matrix_sethsv_noeeprom(20, 255, 127); // Default startup color (Hue:amber Saturation:full Value(brightness):mid) activate_rgb_nightmode(false); // Set to true if you want to startup in nightmode, otherwise use Fn + Z to toggle #endif } \ No newline at end of file diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/paddlegame.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/paddlegame.h new file mode 100644 index 00000000000..3d33975cfed --- /dev/null +++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/paddlegame.h @@ -0,0 +1,48 @@ +/* Copyright 2021 Glorious, LLC + Copyright 2021 Tomas Guinan + +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 . +*/ + +#ifdef GAME_ENABLE +const uint16_t GAME_TIMER[] = { + 400, 350, 300, 250, 400, 350, 300, 250, 225, 200, 175, 150 +}; + +bool game_start = false; +HSV last_hsv; +static uint8_t paddle_pos_full; +static uint8_t paddle_lives; +static uint8_t level_number; +static uint8_t bounce_count; +static uint8_t damage_count; +static uint16_t damage_timer; +static uint16_t ball_timer; + +struct BallStruct +{ + uint8_t x; + uint8_t y; + bool on; + bool up; + bool left; + bool enemy; +}; + +struct BallStruct ball[2]; + +void init_ball(uint8_t i); +void hurt_paddle(void); + +#endif //GAME_ENABLE \ No newline at end of file diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/readme.md b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/readme.md index 3db6923d76c..c378276434c 100644 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/readme.md +++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/readme.md @@ -1,6 +1,6 @@ -# gourdo1's GMMK Pro ANSI layout +# [gourdo1's](mailto:gourdo1@outlook.com) GMMK Pro ANSI layout -This Windows-centric layout is based on [Jonavin's](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/ansi/keymaps/jonavin) GMMK Pro layout with several additions, modifications, a tweaked keymap, updated layers and expanded RGB controls. +This Windows-centric ANSI layout is based on [Jonavin's](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin) GMMK Pro layout with many additions, fixes, a revamped keymap, persistent user customizations, updated layers, [Tomas Guinan's paddle game](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame) and expanded RGB effects and controls. ![image](https://raw.githubusercontent.com/gourdo1/media/main/susuwatari.jpg) @@ -8,26 +8,51 @@ This Windows-centric layout is based on [Jonavin's](https://github.com/qmk/qmk_f ### Core Functionality +* Quick & Easy Customization: Open a text editor and hit [FN]` (tilde key) to view toggle-able features. (added Jun 29, 2022) * [VIA](https://www.caniusevia.com/) support enabled (added Mar 16, 2022) * Most [default Glorious shortcuts](https://cdn.shopify.com/s/files/1/0549/2681/files/GMMK_Pro_User_Guide.pdf) enabled -* [N-key Rollover](https://en.wikipedia.org/wiki/Rollover_\(keyboard\)#n-key_rollover) (NKRO) -- toggled with FN+R -* Gaming mode (FN + Win-key) locks out Win-key as well as double-tap Shift Capslock; Also RGB highlights WSAD and nearby gaming related keys -* [Caps Word](https://getreuer.info/posts/keyboards/caps-word/index.html) enabled: To capitalize the next word only, press and release both left and right shift keys at the same time. (added Feb 25, 2022) -* Multi-monitor app moving shortcuts: FN + [,] (square brackets) to move current app window to next monitor (added Apr 11, 2022) -* Domain shortcuts: FN+.=".com", FN+O="outlook.com", FN+Y="yahoo.com", FN+H="hotmail.com", FN+G="gmail.com". (added Apr 7, 2022) +* [N-key Rollover](https://en.wikipedia.org/wiki/Rollover_\(keyboard\)#n-key_rollover) (NKRO) -- toggled with [FN]R +* 1000Hz polling rate with 5ms debounce time for quick response in games +* Mouse Keys! Don't want to move your hands off the keyboard or you didn't bring it with you? Use cursor keys to move the mouse +* Overlay numpad on 789-UIOP-JKL;-M,. & Space-bar mapped to Enter key for rapid number entry +* Gaming mode ([FN]Win-key) locks out Win-key and double-tap Shift Capslock; Also RGB highlights WSAD and nearby gaming keys +* Caps Word enabled: To capitalize the next word only, press and release left and right shift at the same time. (added Feb 25, 2022) +* Multi-monitor app moving shortcuts: [FN] ],[ (square brackets) to move current app window to next monitor (added Apr 11, 2022) * Capslock toggled by double tap of Left Shift key or FN + Capslock (RGB green highlighted) -* Fn-Backslash for [Bootloader mode](https://github.com/qmk/qmk_firmware/blob/master/docs/newbs_flashing.md) +* Paddle game accessible via [FN]P. Hit [FN]P again or double tap [ESC] to exit (added May 5, 2022) +* Single-handed shortcut for Ctrl-Alt-Delete: [FN]/ (added May 14, 2022) +* Single-handed shortcut for WinKey-L (lock Windows): [FN]L (added May 17, 2022) +* Domain shortcuts: [FN]. for .com, [FN]O for outlook.com, [FN]Y for yahoo.com, [FN]H for hotmail.com, [FN]G for gmail.com. (added Apr 7, 2022) +* FN-Backslash for [Bootloader mode](https://github.com/qmk/qmk_firmware/blob/master/docs/newbs_flashing.md) * Home key on F13, Del key right of Backspace * Insert accessible via Shift-Backspace (so shift delete still works in Windows Explorer) -* PrtScrn, Scroll Lock, Pause/Break are top right on the keyboard: Fn+F11, Fn+F12, Fn+F13 -* [Colemak](https://colemak.com/) key layout support (Layer accessible via Left Shift + turn Encoder clockwise until side LEDs light up purple) +* PrtScrn, Scroll Lock, Pause/Break are top right on the keyboard: [FN]F11, [FN]F12, [FN]F13 +* [Colemak](https://colemak.com/) key layout support (Accessible via Left Shift + turn Encoder clockwise until side LEDs light up purple) * Double tap ESC any time to revert to base layer (added Feb 26, 2022) +* RGB backlight effects expanded to include framebuffer effects and reactive keypress modes (updated May 24, 2022) +* RGB backlight now remembers last color & effect settings after power down (updated May 24, 2022) + +### Quick & Easy Customization +* Below features can be toggled by holding [FN] and pressing the number corresponding to that feature. Changes are saved to EEPROM for persistence. +* Print current settings by opening a text editor and pressing [FN]~ (CAUTION: verbose!) +* Quick view current settings by holding [FN] and viewing RGB under number keys (green means ON, violet means OFF) + +#### Toggle-able Settings: + 1. CapsLock RGB - highlight under alpha keys + 2. Numpad RGB - highlight under numpad layer keys + 3. ESC key - Double tap ESC key to go to base layer + 4. Swap DEL and HOME - Default is DEL to the right of BKSPC & HOME is above BKSPC + 5. Capslock function - Toggle between double tap LShift for CapsLock with Numpad on CapsLock key (default) and standard CapsLock + 6. Encoder button - default mutes volume; alternate plays/pauses media + 7. Insert function - Toggle between SHIFT-BKSPC and SHIFT-DEL + 8. Modded-Space override - Use standard Space in place of modded-Space functions ### Numpad + Mouse Keys (Capslock key) * Overlay numpad + [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) are accessed through Capslock key hold (temp) or double press (locked) with RGB highlighting +* Numpad uses Space-bar as Enter for rapid number entry (added May 17, 2022) * This layer disables much of the keyboard, except X/C/V for cut/copy/paste, WASD for cursor, Q/E for PgUp/PgDn, cursor keys become mouse keys, surrounding keys become mouse buttons and all number keys become numpad versions (so Alt char codes work regardless of which set you use) -* Fn & N keys light up orange if system numlock is off (inverted status), indicating numpad keys will not deliver expected output (FN + N to toggle) +* FN and N keys light up orange if system numlock is off (inverted status), indicating numpad keys will not deliver expected output ([FN]N to toggle) * Double zero on comma key. * [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) allow you to use the mouse without taking your hand off the keyboard. (added Mar 15, 2022) * Mouse controls are: Cursor keys = move mouse; RShift = button1, End = button2, RCtrl = button3, PgUp/PgDn = Scroll wheel @@ -37,40 +62,54 @@ This Windows-centric layout is based on [Jonavin's](https://github.com/qmk/qmk_f * Default knob turn changes volume; button press toggles mute * Exponential encoder - quick repeated volume up doubles increase; quick repeated volume down triples decrease (added Feb 17, 2022) -* FN knob turn changes RGB idle timeout +* FN + knob turn changes RGB idle timeout +* FN + knob push puts PC to Sleep (Added May 14, 2022) * holding Left Shift changes layers * holding Right Shift navigates page up/down * holding Left Ctrl navigates prev/next word * holding Right Ctrl changes RGB hue/color * holding Left Alt changes media prev/next track +### Paddle Game + +* Based on [Tomas Guinan's excellent GMMK Pro paddle game](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame) +* Paddle Game playable by pressing [FN]P (P lights up green in FN layer if game is enabled in firmware, otherwise it lights up red) +* Use rotary encoder to control paddle +* Contains 12 levels, indicated by blue LED on F-key row +* Player has 4 lives, indicated by nav cluster +* Deflect white balls while avoiding red ones +* Use [FN]P, double tap ESC or otherwise change layer to quit game + ### Global RGB Controls -* RGB backlight lighting effect: FN + up/down -* RGB backlight effect speed: FN + left/right -* RGB backlight hue cycle: FN + A/D -* RGB backlight brightness: FN + W/S -* RGB backlight saturation: FN + Q/E (added Feb 4, 2022) -* RGB backlight night mode toggle: FN + Z (indicators still work) -* RGB backlight timeout: FN + Encoder or "-" and "=" (default 15 minutes) (updated Apr 7, 2022) - * indicators in FN layer using RGB in F-key and number rows to show the current timeout in minutes -* RGB indicators on left side LEDs: Capslock (green), Scroll Lock (red), and Num Lock not set (orange) -* FN + Z to turn off RGB backlighting; press again to toggle +* RGB backlight lighting effect: [FN]up/down +* RGB backlight effect speed: [FN]left/right +* RGB backlight hue cycle: [FN]A/D +* RGB backlight brightness: [FN]W/S +* RGB backlight saturation: [FN]Q/E (added Feb 4, 2022) +* RGB backlight night mode toggle: [FN]Z (indicators still work) +* RGB backlight timeout: [FN]Encoder or "-" and "=" (default 15 minutes) (updated June 28, 2022) + * F-key row indicator lights (cyan and blue) in FN layer display the current backlight timeout in minutes +* [FN]Z to turn off RGB backlighting (indicator lights still work); press again to toggle +* Left side RGB indicators in order from top: System NumLock off (orange), Scroll Lock (red), Numpad (blue), Capslock (green). ### Advanced Controls -* FN + \ to get to bootloader mode -* FN + [ESC] to clear EEPROM (then unplug and re-plug) (added Apr 11, 2022) -* FN + R to toggle N-key Rollover (added Apr 11, 2022) +* [FN]\ to get to bootloader mode +* [FN][ESC] to clear EEPROM (added Apr 11, 2022) +* [FN]R to toggle N-key Rollover (added Apr 11, 2022) +* [FN]/ is single-handed shortcut to Ctrl-Alt-Delete (added May 14, 2022) +* [FN]L is single-handed shortcut to Win-L (lock Windows) (added May 17, 2022) +* [FN][Encoder press] to sleep Windows PC (added May 14, 2022) -Link to latest firmware binary: https://github.com/gourdo1/media/raw/main/gmmk_pro_ansi_gourdo1.bin +Link to latest firmware binary: https://github.com/gourdo1/gmmkpro-media/raw/main/gmmk_pro_rev1_ansi_gourdo1.bin -Link to cheatsheet: https://github.com/gourdo1/media/raw/main/GMMK_Pro_Cheatsheet.pdf +Link to cheatsheet: https://github.com/gourdo1/gmmkpro-media/raw/main/GMMK_Pro_Cheatsheet.pdf ## rules.mk Options -STARTUP_NUMLOCK_ON = yes - turns on NUMLOCK by default +STARTUP_NUMLOCK_ON = yes - Turns on NUMLOCK by default ENCODER_DEFAULTACTIONS_ENABLE = yes - Enabled default encoder functions @@ -78,20 +117,21 @@ TD_LSFT_CAPSLOCK_ENABLE = yes - This will enable double tap on Left Shift IDLE_TIMEOUT_ENABLE = yes - Enables Timer functionality; for RGB idle timeouts that can be changed dynamically -INVERT_NUMLOCK_INDICATOR - inverts the Numlock indicator, LED is on when numlock is off -- numlock interferes with numpad keys, so should generally be off when numpad layer is active. +INVERT_NUMLOCK_INDICATOR - Inverts the Numlock indicator, LED is on when numlock is off -- numlock interferes with overlay numpad, so should be off when numpad layer is active unless you have an external numpad. -COLEMAK_LAYER_ENABLE = yes - Enable optional 5th layer for COLEMAK layout. Use Shift + encoder to enter 5th layer. +COLEMAK_LAYER_ENABLE = yes - Enables optional 5th layer for COLEMAK layout. Use Shift + encoder to enter 5th layer. +GAME_ENABLE ?= yes - Enables Paddle Game ## Layer Diagrams ### Base layer -![image](https://raw.githubusercontent.com/gourdo1/media/main/base.png) +![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/base.png) -### Fn Layer -![image](https://raw.githubusercontent.com/gourdo1/media/main/fn1.png) +### FN Layer +![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/fn1.png) ### Layer 2 (Numpad) -![image](https://raw.githubusercontent.com/gourdo1/media/main/numpad.png) +![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/numpad.png) ### COLEMAK layer ![image](https://user-images.githubusercontent.com/71780717/131235050-980d2f54-2d23-4ae8-a83f-9fcdbe60d6cb.png) diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rgb_matrix_map.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rgb_matrix_map.h index 38da50754b4..f1609a4bb39 100644 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rgb_matrix_map.h +++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rgb_matrix_map.h @@ -1,5 +1,5 @@ /* Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 + Copyright 2022 gourdo1 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,6 +16,11 @@ along with this program. If not, see . */ #ifdef RGB_MATRIX_ENABLE + +//Define variables for Game +bool fn_active = false; +RGB rgb_value; + // Custom GMMK Pro-specific RGB color customizations (defaults found in quantum/color.h) #define RGB_GODSPEED 0x00, 0xE4, 0xFF // color for matching keycaps #define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Nautilus Font colors @@ -194,7 +199,7 @@ const uint8_t LED_LIST_NUMROW[] = { }; const uint8_t LED_LIST_LETTERS[] = { - LED_1, +/* LED_1, LED_2, LED_3, LED_4, @@ -203,7 +208,7 @@ const uint8_t LED_LIST_LETTERS[] = { LED_7, LED_8, LED_9, - LED_0, + LED_0, */ LED_Q, LED_W, LED_E, @@ -284,4 +289,122 @@ const uint8_t LED_SIDE_RIGHT[] = { LED_R8 }; +#ifdef GAME_ENABLE +// Game LED rules +const uint8_t GAME_LIVES[] = { + LED_DEL, + LED_PGUP, + LED_PGDN, + LED_END +}; +const uint8_t GAME_PADDLE[] = { + LED_Z, + LED_X, + LED_C, + LED_V, + LED_B, + LED_N, + LED_M, + LED_COMM, + LED_DOT, + LED_SLSH +}; +const uint8_t GAME_SMILE1[] = { + LED_A, + LED_S, + LED_D, + LED_F, + LED_G, + LED_H, + LED_J, + LED_K, + LED_L, + LED_SCLN, + LED_QUOT +}; +const uint8_t GAME_SMILE2[] = { + LED_2, + LED_3, + LED_4, + LED_5, + LED_6, + LED_7, + LED_8, + LED_9, + LED_0, + LED_MINS, + LED_EQL +}; +const uint8_t GAME_R4[] = { + LED_X, + LED_C, + LED_V, + LED_B, + LED_N, + LED_M, + LED_COMM, + LED_DOT +}; +const uint8_t GAME_R3[] = { + LED_S, + LED_D, + LED_F, + LED_G, + LED_H, + LED_J, + LED_K, + LED_L, + LED_SCLN +}; +const uint8_t GAME_R2[] = { + LED_W, + LED_E, + LED_R, + LED_T, + LED_Y, + LED_U, + LED_I, + LED_O, + LED_P, + LED_LBRC +}; +const uint8_t GAME_R1[] = { + LED_2, + LED_3, + LED_4, + LED_5, + LED_6, + LED_7, + LED_8, + LED_9, + LED_0, + LED_MINS, + LED_EQL +}; +const uint8_t GAME_R0[] = { + LED_F1, + LED_F2, + LED_F3, + LED_F4, + LED_F5, + LED_F6, + LED_F7, + LED_F8, + LED_F9, + LED_F10, + LED_F11, + LED_F12 +}; +const uint8_t LED_GAME_OVER[] = { + LED_5, + LED_8, + LED_F, + LED_G, + LED_H, + LED_J, + LED_C, + LED_M +}; +#endif //GAME_ENABLE + #endif \ No newline at end of file diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rules.mk b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rules.mk index b236d9132c6..585f7846dd7 100644 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rules.mk +++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rules.mk @@ -1,18 +1,18 @@ -SRC += caps_word.c - LTO_ENABLE = yes # link time optimization -- achieves a smaller compiled size CONSOLE_ENABLE = no COMMAND_ENABLE = no -MOUSEKEY_ENABLE = yes - -VIA_ENABLE = yes -TAP_DANCE_ENABLE = yes BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +VIA_ENABLE = yes -TD_LSFT_CAPSLOCK_ENABLE = yes +MOUSEKEY_ENABLE = yes +TAP_DANCE_ENABLE = yes +CAPS_WORD_ENABLE = yes # Enable built-in Caps Word functionality IDLE_TIMEOUT_ENABLE = yes STARTUP_NUMLOCK_ON = yes ENCODER_DEFAULTACTIONS_ENABLE = no - COLEMAK_LAYER_ENABLE = yes # Enable Colemak layer / set to no to disable INVERT_NUMLOCK_INDICATOR = yes +GAME_ENABLE ?= yes # Enable Paddle Game / set to no to disable +ifeq ($(strip $(GAME_ENABLE)), yes) + OPT_DEFS += -DGAME_ENABLE +endif diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/config.h b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/config.h new file mode 100644 index 00000000000..a37fb08d31e --- /dev/null +++ b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/config.h @@ -0,0 +1,146 @@ +/* Copyright 2021 Jonavin Eng @Jonavin + Copyright 2022 gourdo1 + +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 + +// Force n-key rollover +#define FORCE_NKRO + +// Set TT to two taps +#define TAPPING_TOGGLE 2 + +#ifdef COMMAND_ENABLE +#define IS_COMMAND() (get_mods() == MOD_MASK_CTRL) //debug commands accessed by holding down both CTRLs: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_command.md +#endif + +// Caps Word configuration +#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD +#define CAPS_WORD_IDLE_TIMEOUT 10000 // Automatically turn off after x milliseconds of idle. 0 to never timeout. + +// Handle GRAVESC combo keys +#define GRAVE_ESC_ALT_OVERRIDE +// Always send Escape if Alt is pressed +#define GRAVE_ESC_CTRL_OVERRIDE +// Always send Escape if Control is pressed + +// #define TAPPING_TERM 180 +#define TAPPING_TERM 300 +#define TAPPING_TERM_PER_KEY + +#ifdef RGB_MATRIX_ENABLE + #define RGB_DISABLE_WHEN_USB_SUSPENDED + #define RGB_MATRIX_KEYPRESSES // Enables REACTIVE & SPLASH modes + #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Enables Heatmap, Rain + + // RGB step values + #define RGBLIGHT_HUE_STEP 32 // The number of steps to cycle through the hue by (default 10) + #define RGBLIGHT_SAT_STEP 17 // The number of steps to increment the saturation by (default 17) + #define RGBLIGHT_VAL_STEP 17 // The number of steps to increment the brightness by (default 17) + + // Startup values, when none have been set + #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default effect mode, if none has been set (was RGB_MATRIX_SOLID_COLOR) + #define RGB_MATRIX_STARTUP_HUE 24 // Sets the default hue value, if none has been set + #define RGB_MATRIX_STARTUP_SAT 255 // Sets the default saturation value, if none has been set + #define RGB_MATRIX_STARTUP_VAL 127 // Sets the default brightness value, if none has been set + #define RGB_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set + + // Uncomment any #undef line below to turn OFF any default enabled RGB background effect (enabled in keyboards/gmmk/pro/config.h). + #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Solid color (seems redundant; seems same as RGB_MATRIX_SOLID_COLOR?) + //#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static, horizontal rainbow + //#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static, vertical Rainbow + //#undef ENABLE_RGB_MATRIX_BREATHING // Breathing animation using selected HSV color + #undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right (with white) + //#undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right (with black) + #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades sat (with white) + //#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness (with black) + #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades brightness (with white) + //#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness (with black) + //#undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard cycling through rainbow + //#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient moving left to right + //#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom + #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient chevron scrolling left to right (too similar to cycle left right) + //#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Rainbow circles coming to center. + #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Two Rainbow circles coming to 1/3 and 2/3 points. (seems mostly redundant with above) + #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Built-in cycling pinwheel (seems redundant with below) + //#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard + #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Spinning rainbow (more distracting transitions) + //#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Spinning rainbow (smoother) + #undef ENABLE_RGB_MATRIX_DUAL_BEACON // Two rainbows spinning around keyboard (distracting, busy) + #undef ENABLE_RGB_MATRIX_RAINDROPS // Sustained raindrops of blue, green, yellow (confusing to use with RGB layers) + //#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Sustained raindrops of blue, purple, pink, green (confusing to use with RGB layers, but slightly better than above) + #undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back (very subtle) + #undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left (very subtle) + #undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right (very subtle) + //#undef ENABLE_RGB_MATRIX_PIXEL_RAIN // Non-sustained raindrops of pastel colors + #undef ENABLE_RGB_MATRIX_PIXEL_FLOW // More active version of pixel rain with quick cycling (unusable, very distracting) + #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL // Same as Pixel Flow but with current HSV only (somewhat distracting) + //Only enabled if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined + //#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // Fading heatmap that follows keystrokes (has buggy side LEDs that glow red) + //#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // The Matrix (has buggy side LEDs that glow red) + //Only enabled if RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined + //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Key hits shown in current hue - all other keys black + //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Keyboard lights up in chosen hue, key hits shown in complementary hue (try this as default?) + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse around a single key hit then fades value out (Single key) + //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // same as above but more intense (Multi-key) + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Column and Row single current color fade (Single key) + //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Column and Row single color fade. (Multi-key) + #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of key hit then fades (Single key) + //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multi-key hit then fades + //#undef ENABLE_RGB_MATRIX_SPLASH // Full rainbow pulses from key hit. All else black. + #undef ENABLE_RGB_MATRIX_MULTISPLASH // Full rainbow pulses from multi-keys. All else black. (distracting on multiple keystroke hits) + #undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Single color pulses from key hit. All else black. (distracting on multiple key hits) + //#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Single color pulses from muli-keys. All else black. +#endif //RGB_MATRIX_ENABLE + +// Add a layer for colemak -- set "COLEMAK_LAYER_ENABLE = yes" in rules.mk to enable +#if defined COLEMAK_LAYER_ENABLE + #ifdef GAME_ENABLE + #define DYNAMIC_KEYMAP_LAYER_COUNT 6 + #define _COLEMAK 5 + #else + #define DYNAMIC_KEYMAP_LAYER_COUNT 5 + #define _COLEMAK 4 + #endif //GAME_ENABLE +#endif // COLEMAK_LAYER_ENABLE + +/* +// Mouse Keys Accelerated Mode Definitions +#define MOUSEKEY_DELAY 3 // Delay between pressing a movement key and cursor movement (default: 10) +#define MOUSEKEY_INTERVAL 13 // Time between cursor movements in milliseconds (default: 20); Try setting to 1000/monitor refresh for smooth movement. +#define MOUSEKEY_MOVE_DELTA 8 // Step size (default: 8) +#define MOUSEKEY_MAX_SPEED 9 // Maximum cursor speed at which acceleration stops (default: 10) +#define MOUSEKEY_TIME_TO_MAX 150 // Time until maximum cursor speed is reached (default: 30) +#define MOUSEKEY_WHEEL_DELAY 0 // Delay between pressing a wheel key and wheel movement (default: 10) +#define MOUSEKEY_WHEEL_INTERVAL 80 // Time between wheel movements (default: 80) +#define MOUSEKEY_WHEEL_MAX_SPEED 8 // Maximum number of scroll steps per scroll action (default: 8) +#define MOUSEKEY_WHEEL_TIME_TO_MAX 40 // Time until maximum scroll speed is reached (default: 40) +*/ + +// Mouse Keys Kinetic Mode Definitions +#define MK_KINETIC_SPEED // Enable Kinetic mode: Uses a quadratic curve on cursor speed to allow precise movements at the beginning and increases speed thereafter. +#define MOUSEKEY_DELAY 3 // Delay between pressing a movement key and cursor movement (default: 10) +#define MOUSEKEY_INTERVAL 13 // Time between cursor movements in milliseconds (default: 20); Try setting to 1000/monitor refresh for smooth movement. +#define MOUSEKEY_MOVE_DELTA 5 // Step size for accelerating from initial to base speed (default: 8) +#define MOUSEKEY_MOVE_MAX 50 // use instead of BASE SPEED to limit speed in Kinetic mode +#define MOUSEKEY_INITIAL_SPEED 100 // Initial speed of the cursor in pixels per second (default: 100) +//#define MOUSEKEY_BASE_SPEED 800 // (broken in QMK 0.16.0) Maximum cursor speed at which acceleration stops (default: 1000) +#define MOUSEKEY_DECELERATED_SPEED 400 // Decelerated cursor speed (default: 400) +#define MOUSEKEY_ACCELERATED_SPEED 2000 // Accelerated cursor speed (default: 3000) +#define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 16 // Initial number of movements of the mouse wheel (default: 16) +#define MOUSEKEY_WHEEL_BASE_MOVEMENTS 32 // Maximum number of movements at which acceleration stops (default: 32) +#define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48 // Accelerated wheel movements (default: 48) +#define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8 // Decelerated wheel movements (default: 8) diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/keymap.c b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/keymap.c new file mode 100644 index 00000000000..24a1e8a359a --- /dev/null +++ b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/keymap.c @@ -0,0 +1,682 @@ +/* Copyright 2021 Glorious, LLC + Copyright 2021 Jonavin Eng @Jonavin + Copyright 2022 RustyBrakes (ISO conversion) + Copyright 2022 gourdo1 + +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 . +*/ + +// Note: Several advanced functions referenced in this file (like Tap Dance functions) are defined in /users/gourdo1/gourdo1.c + +#include QMK_KEYBOARD_H + +#include "rgb_matrix_map.h" + +#include "gourdo1.h" + +#include "paddlegame.h" + +#include + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Base Layout + * + * ,-------------------------------------------------------------------------------------------------------------. + * | Esc || F1 | F2 | F3 | F4 || F5 | F6 | F7 | F8 || F9 | F10 | F11 | F12 || Home || Mute | + * |=============================================================================================================| + * | ISO | 1 ! | 2 @ | 3 # | 4 $ | 5 % | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | - _ | = + | Backspc || Del | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ } | ] } | || PgUp | + * |---------+------+------+------+------+------+------+------+------+------+------+------+------+ ++------| + * | Capslock | A | S | D | F | G | H | J | K | L | ; : | ' " | ISO| Enter || PgDn | + * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------| + * | LShift | ISO | Z | X | C | V | B | N | M | , < | . > | / ? | RShift || Up || End | + * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======| + * | Ctrl | Win | LAlt | Space | RAlt | Fn | Ctrl || Left | Down | Rght | + * `------------------------------------------------------------------------------------------------------------' + */ + + [_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, LEFTOFENC, ENCFUNC, + 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, BELOWENC, + 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_PGUP, + CAPSNUM, 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_PGDN, + LSFTCAPSWIN,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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* FN1 Layout + * + * ,-------------------------------------------------------------------------------------------------------------. + * | Esc ||MyCmp |WbHom | Calc |MdSel ||MdPrv |MdNxt |MdPly |MdStp ||VolDn |VolUp |PrScr |ScrLk ||Pause ||Sleep | + * |=============================================================================================================| + * | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |RGBTOD|RGBTOI| ________ ||RGBTOG| + * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------| + * | ______ |RGBSAD|RGBVAI|RGBSAI| NKRO | ____ |YAHOO | ____ | ____ |OUTLK |Pause | ____ | ____ | || Home | + * |---------+------+------+------+------+------+------+------+------+------+------+------+------+ ++------| + * | Capslock |RGBHUD|RGBVAD|RGBHUI| ____|GMAIL |HTMAIL| ____ | ____ | ____ | ____ | ____ | ___ | ____ || End | + * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------| + * | ____ |RESET |RGBNIT| ____ | ____ | ____ | ____ |NumLk | ____ | ____ |DOTCOM| CAD | ______ ||RGBMOD|| ____ | + * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======| + * | ____ | WinKyLk | ____ | _____ | ____ | ____ | ____ ||RGBSPD|RGBRMD|RGBSPI| + * `------------------------------------------------------------------------------------------------------------' + */ + + #ifdef GAME_ENABLE + [_FN1] = LAYOUT( + EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SLCK, KC_PAUS, KC_SLEP, + PRNCONF, TG_CAPS, TG_PAD, TG_ESC, TG_DEL, TG_TDCAP,TG_ENC, TG_INS,TG_SPCMOD, _______, _______, RGB_TOD, RGB_TOI, _______, RGB_TOG, + _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, TG(_GAME),SWAP_L, SWAP_R, KC_HOME, + KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, LOCKPC, _______, _______, _______, _______, KC_END, + _______, RESET, RGB_NITE,_______, _______, _______, _______, KC_NLCK, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______, + _______, WINLOCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI + ), + + [_GAME] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + #else + [_FN1] = LAYOUT( + EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SLCK, KC_PAUS, KC_SLEP, + PRNCONF, TG_CAPS, TG_PAD, TG_ESC, TG_DEL, TG_TDCAP,TG_ENC, TG_INS,TG_SPCMOD, _______, _______, RGB_TOD, RGB_TOI, _______, RGB_TOG, + _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, KC_PAUS, SWAP_L, SWAP_R, KC_HOME, + KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, LOCKPC, _______, _______, _______, _______, KC_END, + _______, RESET, RGB_NITE,_______, _______, _______, _______, KC_NLCK, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______, + _______, KC_WINLCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI + ), + #endif //GAME_ENABLE + + /* _NUMPADMOUSE Layout + * Note: A symbol preceded by "P" is a Numpad-encoded version of the key -- any app that differentiates will recognize the char as coming from a physical numpad. + * ,-------------------------------------------------------------------------------------------------------------. + * | ____ || ____ | ____ | ____ | ____ || ____ | ____ | ____ | ____ || ____ | ____ | ____ | ____ || ____ || ____ | + * |=============================================================================================================| + * | ____ | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P0 | P- | P+ | ________ || ____ | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------| + * | ______ | PGUP | Up | PGDN | None | None | None | P4 | P5 | P6 | P+ | ____ | ____ | || WhUp | + * |---------+------+------+------+------+------+------+------+------+------+------+------+------+ ++------| + * | ________ | Left | Down | Rght | None| None | None | P1 | P2 | P3 | P* | ___ | ___ |P-Enter|| WhDn | + * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------| + * | __________ | None | ____ | ____ | ____ | None | None | 0 | 00 | P. | P/ | MBt1 ||MS_UP || MBt2 | + * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======| + * | ____ | ____ | ____ | _____ | ____ | ____ | MBt3 ||MS_LT |MS_DN |MS_RT | + * `------------------------------------------------------------------------------------------------------------' + */ + + [_NUMPADMOUSE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, _______, _______, + _______, KC_PGUP, KC_UP, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, KC_WH_U, + _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_PAST, _______, _______, KC_PENT, KC_WH_D, + _______, _______, KC_NO, _______, _______, _______, KC_NO, KC_NO, KC_P0, KC_00, KC_PDOT, KC_PSLS, KC_BTN1, KC_MS_U, KC_BTN2, + _______, _______, _______, KC_PENT, _______, _______, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R + ), + + [_MOUSEKEY] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_D, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, + _______, _______, _______, _______, _______, _______, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R + ), + + #ifdef COLEMAK_LAYER_ENABLE + [_COLEMAK] = 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_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_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_PGUP, + _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + _______, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + _______, _______, _______, KC_SPC, KC_RALT, _______, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + #endif // COLEMAK_LAYER_ENABLE +}; + +#if defined(ENCODER_ENABLE) && !defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality when not using userspace defaults +void encoder_action_rgbhue(bool clockwise) { + if (clockwise) + rgblight_increase_hue_noeeprom(); + else + rgblight_decrease_hue_noeeprom(); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + uint8_t mods_state = get_mods(); + if (mods_state & MOD_BIT(KC_LSFT)) { // If you are holding L shift, encoder changes layers + encoder_action_layerchange(clockwise); + } else if (mods_state & MOD_BIT(KC_RSFT)) { // If you are holding R shift, Page up/dn + unregister_mods(MOD_BIT(KC_RSFT)); + encoder_action_navpage(clockwise); + register_mods(MOD_BIT(KC_RSFT)); + } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, change rgb hue/colour + encoder_action_rgbhue(clockwise); + } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + switch (get_highest_layer(layer_state)) { + case _FN1: + #ifdef IDLE_TIMEOUT_ENABLE + timeout_update_threshold(clockwise); + #endif + break; + #ifdef GAME_ENABLE + case _GAME: + // Game: Paddle movement + if (damage_count == 0) { + if (clockwise) { + if (paddle_pos_full < 15) ++paddle_pos_full; + } else { + if (paddle_pos_full > 0) --paddle_pos_full; + } + } + break; + #endif //GAME_ENABLE + default: + encoder_action_volume(clockwise); // Otherwise it just changes volume + break; + } + } + //return true; //set to return false to counteract enabled encoder in pro.c + return false; +} +#endif // ENCODER_ENABLE && !ENCODER_DEFAULTACTIONS_ENABLE + +#ifdef RGB_MATRIX_ENABLE + +// Game logic +#ifdef GAME_ENABLE +void init_ball(uint8_t i) { + i &= 1; + ball[i].on = true; + ball[i].up = false; + ball[i].y = 0; + ball[i].x = rand() % 16; + + // Set initial ball state + if (ball[i].x < 8) { + ball[i].left = false; + } else { + ball[i].x -= 4; + ball[i].left = true; + } + + // 1/4 chance of being an enemy ball after level 6 + if (level_number > 3) { + ball[i].enemy = ((rand() % 4) == 0); + } else { + ball[i].enemy = false; + } +} + +void hurt_paddle(void) { + if (paddle_lives > 0) { + --paddle_lives; + } + damage_timer = timer_read(); + damage_count = 10; + + // Reset board + init_ball(0); + ball[1].on = false; +} +#endif //GAME_ENABLE + +// Capslock, Scroll lock and Numlock indicator on Left side lights. +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + if (get_rgb_nightmode()) rgb_matrix_set_color_all(RGB_OFF); + + // Scroll Lock RGB setup + if (IS_HOST_LED_ON(USB_LED_SCROLL_LOCK)) { + rgb_matrix_set_color(LED_L3, RGB_RED); + rgb_matrix_set_color(LED_L4, RGB_RED); + rgb_matrix_set_color(LED_TAB, RGB_RED); + rgb_matrix_set_color(LED_F12, RGB_RED); + } + + // System NumLock warning indicator RGB setup + #ifdef INVERT_NUMLOCK_INDICATOR + if (!IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled + rgb_matrix_set_color(LED_GRV, RGB_ORANGE2); + rgb_matrix_set_color(LED_L1, RGB_ORANGE2); + rgb_matrix_set_color(LED_L2, RGB_ORANGE2); + rgb_matrix_set_color(LED_N, RGB_ORANGE2); + rgb_matrix_set_color(LED_FN, RGB_ORANGE2); + } + #else + if (IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // Normal, on if NUM lock is ON + rgb_matrix_set_color(LED_GRV, RGB_ORANGE2); + rgb_matrix_set_color(LED_L1, RGB_ORANGE2); + rgb_matrix_set_color(LED_L2, RGB_ORANGE2); + rgb_matrix_set_color(LED_N, RGB_ORANGE2); + rgb_matrix_set_color(LED_FN, RGB_ORANGE2); + } + #endif // INVERT_NUMLOCK_INDICATOR + + // CapsLock RGB setup + if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) { + if (user_config.rgb_hilite_caps) { + for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_LETTERS); i++) { + rgb_matrix_set_color(LED_LIST_LETTERS[i], RGB_CHARTREUSE); + } + rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE); + } + else { + rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE); + } + } + + // Winkey disabled (gaming) mode RGB setup + if (keymap_config.no_gui) { + rgb_matrix_set_color(LED_LWIN, RGB_RED); //light up Winkey red when disabled + rgb_matrix_set_color(LED_W, RGB_CHARTREUSE); //light up gaming keys with WSAD higlighted + rgb_matrix_set_color(LED_S, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_A, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_D, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_Q, RGB_ORANGE2); + rgb_matrix_set_color(LED_E, RGB_ORANGE2); + rgb_matrix_set_color(LED_R, RGB_ORANGE2); + rgb_matrix_set_color(LED_TAB, RGB_ORANGE2); + rgb_matrix_set_color(LED_F, RGB_ORANGE2); + rgb_matrix_set_color(LED_Z, RGB_ORANGE2); + rgb_matrix_set_color(LED_X, RGB_ORANGE2); + rgb_matrix_set_color(LED_C, RGB_ORANGE2); + rgb_matrix_set_color(LED_V, RGB_ORANGE2); + rgb_matrix_set_color(LED_SPC, RGB_ORANGE2); + rgb_matrix_set_color(LED_LCTL, RGB_ORANGE2); + rgb_matrix_set_color(LED_LSFT, RGB_ORANGE2); + } + + // Fn selector mode RGB setup + switch (get_highest_layer(layer_state)) { // special handling per layer + case _FN1: // on Fn layer select what the encoder does when pressed + rgb_matrix_set_color(LED_FN, RGB_RED); //FN key + + //NEW RGB LIGHTING TO RING KEYBOARD ON FN LAYER ACTIVATION: + for (uint8_t j = 0; j < ARRAYSIZE(LED_LIST_FUNCROW); j++) { + rgb_matrix_set_color(LED_LIST_FUNCROW[j], RGB_RED); + } + rgb_matrix_set_color(LED_LCTL, RGB_RED); + rgb_matrix_set_color(LED_LALT, RGB_RED); + rgb_matrix_set_color(LED_SPC, RGB_RED); + rgb_matrix_set_color(LED_LWIN, RGB_RED); + //rgb_matrix_set_color(LED_RALT, RGB_RED); + rgb_matrix_set_color(LED_FN, RGB_OFFBLUE); + //rgb_matrix_set_color(LED_RCTL, RGB_RED); + rgb_matrix_set_color(LED_BSLS, RGB_RED); + rgb_matrix_set_color(LED_L1, RGB_RED); + rgb_matrix_set_color(LED_L2, RGB_RED); + rgb_matrix_set_color(LED_L3, RGB_RED); + rgb_matrix_set_color(LED_L4, RGB_RED); + rgb_matrix_set_color(LED_L5, RGB_RED); + rgb_matrix_set_color(LED_L6, RGB_RED); + rgb_matrix_set_color(LED_L7, RGB_RED); + rgb_matrix_set_color(LED_L8, RGB_RED); + rgb_matrix_set_color(LED_DOWN, RGB_RED); + rgb_matrix_set_color(LED_LEFT, RGB_RED); + rgb_matrix_set_color(LED_RIGHT, RGB_RED); + rgb_matrix_set_color(LED_R1, RGB_RED); + rgb_matrix_set_color(LED_R2, RGB_RED); + rgb_matrix_set_color(LED_R3, RGB_RED); + rgb_matrix_set_color(LED_R4, RGB_RED); + rgb_matrix_set_color(LED_R5, RGB_RED); + rgb_matrix_set_color(LED_R6, RGB_RED); + rgb_matrix_set_color(LED_R7, RGB_RED); + rgb_matrix_set_color(LED_R8, RGB_RED); + rgb_matrix_set_color(LED_MINS, RGB_OFFBLUE); + rgb_matrix_set_color(LED_EQL, RGB_OFFBLUE); + #ifdef GAME_ENABLE + rgb_matrix_set_color(LED_P, RGB_CHARTREUSE); + #else + rgb_matrix_set_color(LED_P, RGB_RED); + #endif // GAME_ENABLE + + //Add RGB statuses for user.config toggles + if (user_config.rgb_hilite_caps) { + rgb_matrix_set_color(LED_1, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_1, RGB_PURPLE); + } + if (user_config.rgb_hilite_numpad) { + rgb_matrix_set_color(LED_2, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_2, RGB_PURPLE); + } + if (user_config.esc_double_tap_to_baselyr) { + rgb_matrix_set_color(LED_3, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_3, RGB_PURPLE); + } + if (user_config.del_right_home_top) { + rgb_matrix_set_color(LED_4, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_4, RGB_PURPLE); + } + if (user_config.double_tap_shift_for_capslock) { + rgb_matrix_set_color(LED_5, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_5, RGB_PURPLE); + } + if (user_config.encoder_press_mute_or_media) { + rgb_matrix_set_color(LED_6, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_6, RGB_PURPLE); + } + if (user_config.ins_on_shft_bkspc_or_del) { + rgb_matrix_set_color(LED_7, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_7, RGB_PURPLE); + } + if (user_config.disable_space_mods) { + rgb_matrix_set_color(LED_8, RGB_GREEN); + } else { + rgb_matrix_set_color(LED_8, RGB_PURPLE); + } + + // Add RGB Timeout Indicator -- shows 0 to 139 using F row and num row; larger numbers using 16bit code + uint16_t timeout_threshold = get_timeout_threshold(); + if (timeout_threshold <= 10) rgb_matrix_set_color(LED_LIST_FUNCROW[timeout_threshold], RGB_BLUE); + else if (timeout_threshold < 140) { + rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold / 10)], RGB_CYAN); + rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold % 10)], RGB_BLUE); + } else { // >= 140 minutes, just show these 3 lights + rgb_matrix_set_color(LED_LIST_FUNCROW[10], RGB_CYAN); + rgb_matrix_set_color(LED_LIST_FUNCROW[11], RGB_CYAN); + rgb_matrix_set_color(LED_LIST_FUNCROW[12], RGB_CYAN); + } + break; + + // Numpad & Mouse Keys overlay RGB + case _NUMPADMOUSE: + if (user_config.rgb_hilite_numpad) { + for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_NUMPAD); i++) { + rgb_matrix_set_color(LED_LIST_NUMPAD[i], RGB_OFFBLUE); + } + rgb_matrix_set_color(LED_L5, RGB_OFFBLUE); + rgb_matrix_set_color(LED_L6, RGB_OFFBLUE); + rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE); + rgb_matrix_set_color(LED_UP, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_DOWN, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_LEFT, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_RIGHT, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_RCTL, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_RSFT, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_END, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_PGUP, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_PGDN, RGB_CHARTREUSE); + } else { + rgb_matrix_set_color(LED_L5, RGB_OFFBLUE); + rgb_matrix_set_color(LED_L6, RGB_OFFBLUE); + rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE); + } + break; + + // MOUSEKEYS mode RGB + case _MOUSEKEY: + rgb_matrix_set_color(LED_UP, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_DOWN, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_LEFT, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_RIGHT, RGB_CHARTREUSE); + rgb_matrix_set_color(LED_RCTL, RGB_CYAN); + rgb_matrix_set_color(LED_RSFT, RGB_CYAN); + rgb_matrix_set_color(LED_END, RGB_CYAN); + rgb_matrix_set_color(LED_PGUP, RGB_OFFBLUE); + rgb_matrix_set_color(LED_PGDN, RGB_OFFBLUE); + break; + + // Colemak layer RGB + #ifdef COLEMAK_LAYER_ENABLE + case _COLEMAK: + for (uint8_t i = 0; i < ARRAYSIZE(LED_SIDE_RIGHT); i++) { + rgb_matrix_set_color(LED_SIDE_RIGHT[i], RGB_MAGENTA); + rgb_matrix_set_color(LED_SIDE_LEFT[i], RGB_MAGENTA); + } + break; + #endif + + // Paddle game logic + #ifdef GAME_ENABLE + case _GAME: + if (!game_start) { + srand((unsigned int) timer_read()); + + // Store user light settings + last_hsv = rgb_matrix_get_hsv(); + rgb_matrix_sethsv_noeeprom(0, 0, 0); + + paddle_pos_full = 8; + paddle_lives = 4; + bounce_count = 0; + level_number = 0; + damage_count = 0; + + init_ball(0); + ball[1].on = false; + ball_timer = timer_read(); + + game_start = true; + } + + // Set level indicator + if (level_number < 12) { + rgb_matrix_set_color(GAME_R0[level_number], RGB_BLUE); + } + + // Set life bar + for (uint8_t i = 0; i < paddle_lives; i++) { + rgb_matrix_set_color(GAME_LIVES[i], RGB_GREEN); + } + + uint8_t paddle_pos = paddle_pos_full >> 1; + + if (damage_count > 0) { + // Flash paddle when receiving damage + if (timer_elapsed(damage_timer) > 500) { + --damage_count; + damage_timer = timer_read(); + } + if ((damage_count & 1) == 0) { + for (uint8_t i = 0; i < 3; i++) { + rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_RED); + } + } + if (damage_count == 0) { + ball_timer = timer_read(); + } + + } else if (paddle_lives == 0) { + // Game over + for (uint8_t i = 0; i < sizeof(LED_GAME_OVER) / sizeof(LED_GAME_OVER[0]); i++) { + rgb_matrix_set_color(LED_GAME_OVER[i], RGB_RED); + } + + } else if (level_number >= 12) { + // You win + if (rgb_value.r == 0xff && rgb_value.g < 0xff) { + if (rgb_value.b > 0) { + --rgb_value.b; + } else { + ++rgb_value.g; + } + } else if (rgb_value.g == 0xff && rgb_value.b < 0xff) { + if (rgb_value.r > 0) { + --rgb_value.r; + } else { + ++rgb_value.b; + } + } else if (rgb_value.b == 0xff && rgb_value.r < 0xff) { + if (rgb_value.g > 0) { + --rgb_value.g; + } else { + ++rgb_value.r; + } + } + + for (uint8_t i = 0; i < 3; i++) { + rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], rgb_value.r, rgb_value.g, rgb_value.b); + } + rgb_matrix_set_color(GAME_SMILE1[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b); + rgb_matrix_set_color(GAME_SMILE1[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b); + rgb_matrix_set_color(GAME_SMILE2[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b); + rgb_matrix_set_color(GAME_SMILE2[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b); + + } else { + // normal game loop + + // Set paddle position + for (uint8_t i = 0; i < 3; i++) { + rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_GREEN); + } + + // Ball movement logic happens at intervals + if (timer_elapsed(ball_timer) > GAME_TIMER[level_number]) { + for (int i = 0; i < 2; ++i) { + if (ball[i].on) { + // Ball movement + if (ball[i].up) { + if (ball[i].y > 0) { + --ball[i].y; + if (!ball[i].left) ++ball[i].x; + } else { + // Count reflections. If > 10, increase level + ++bounce_count; + if (bounce_count >= 10) { + bounce_count = 0; + ++level_number; + } + ball[i].on = false; + } + } else { + ++ball[i].y; + if (ball[i].left) --ball[i].x; + if (ball[i].y > 4) { + // Remove a life if ball isn't returned and isn't enemy + if (!ball[i].enemy) { + hurt_paddle(); + i = 2; + } else { + ball[i].on = false; + } + } + } + } + } + if (ball[0].y == 4 && !ball[1].on) { + init_ball(1); + } + if (ball[1].y == 4 && !ball[0].on) { + init_ball(0); + } + if (!ball[0].on && !ball[1].on) { + init_ball(0); + } + ball_timer = timer_read(); + } + + // Other ball stuff + for (int i = 0; i < 2; ++i) { + if (ball[i].on) { + // Ball deflection logic + if (!ball[i].up && ball[i].y == 4 && (ball[i].x == paddle_pos || ball[i].x == paddle_pos - 1 || ball[i].x == paddle_pos + 1)) { + if (!ball[i].enemy) { + --ball[i].y; + if (!ball[i].left) { + ++ball[i].x; + } + ball[i].up = true; + } else { + hurt_paddle(); + i = 2; + } + } + + // Ball display + switch (ball[i].y) { + case 0: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_WHITE); + } + break; + + case 1: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_WHITE); + } + break; + + case 2: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_WHITE); + } + break; + + case 3: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_WHITE); + } + break; + + case 4: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_WHITE); + } + break; + } + } + } + } + break; + #endif //GAME_ENABLE + default: + #ifdef GAME_ENABLE + if (game_start) { + // Reset lighting settings + game_start = false; + rgb_matrix_sethsv_noeeprom(last_hsv.h, last_hsv.s, last_hsv.v); + } + #endif //GAME_ENABLE + break; + } +} +#endif + +void keyboard_post_init_keymap(void) { + // keyboard_post_init_user() moved to userspace + #ifdef RGB_MATRIX_ENABLE + activate_rgb_nightmode(false); // Set to true if you want to startup in nightmode, otherwise use Fn + Z to toggle + #endif +} \ No newline at end of file diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/paddlegame.h b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/paddlegame.h new file mode 100644 index 00000000000..3d33975cfed --- /dev/null +++ b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/paddlegame.h @@ -0,0 +1,48 @@ +/* Copyright 2021 Glorious, LLC + Copyright 2021 Tomas Guinan + +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 . +*/ + +#ifdef GAME_ENABLE +const uint16_t GAME_TIMER[] = { + 400, 350, 300, 250, 400, 350, 300, 250, 225, 200, 175, 150 +}; + +bool game_start = false; +HSV last_hsv; +static uint8_t paddle_pos_full; +static uint8_t paddle_lives; +static uint8_t level_number; +static uint8_t bounce_count; +static uint8_t damage_count; +static uint16_t damage_timer; +static uint16_t ball_timer; + +struct BallStruct +{ + uint8_t x; + uint8_t y; + bool on; + bool up; + bool left; + bool enemy; +}; + +struct BallStruct ball[2]; + +void init_ball(uint8_t i); +void hurt_paddle(void); + +#endif //GAME_ENABLE \ No newline at end of file diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/readme.md b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/readme.md new file mode 100644 index 00000000000..31f4539fde7 --- /dev/null +++ b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/readme.md @@ -0,0 +1,122 @@ +# [gourdo1's](mailto:gourdo1@outlook.com) GMMK Pro ISO layout + +This Windows-centric ISO layout is based on [Jonavin's](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin) GMMK Pro layout with several additions, fixes, a tweaked keymap, updated layers, [Tomas Guinan's paddle game](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame) and expanded RGB controls. + +![image](https://raw.githubusercontent.com/gourdo1/media/main/susuwatari.jpg) + +## Features: + +### Core Functionality + +* ISO layout (added July xx, 2022) +* [VIA](https://www.caniusevia.com/) support enabled (added Mar 16, 2022) +* Most [default Glorious shortcuts](https://cdn.shopify.com/s/files/1/0549/2681/files/GMMK_Pro_User_Guide.pdf) enabled +* [N-key Rollover](https://en.wikipedia.org/wiki/Rollover_\(keyboard\)#n-key_rollover) (NKRO) -- toggled with Fn+R +* 1000Hz polling rate with 5ms debounce time for quick response in games +* Mouse Keys! Don't want to move your hands off the keyboard or you didn't bring it with you on the road? Use cursor keys to move the mouse. +* Overlay numpad on 789-UIOP-JKL;-M,. & Space-bar mapped to Enter key for rapid number entry +* Gaming mode (Fn+Win-key) locks out Win-key as well as double-tap Shift Capslock; Also RGB highlights WSAD and nearby gaming related keys +* [Caps Word](https://getreuer.info/posts/keyboards/caps-word/index.html) enabled: To capitalize the next word only, press and release both left and right shift keys at the same time. (added Feb 25, 2022) +* Multi-monitor app moving shortcuts: Fn+[,] (square brackets) to move current app window to next monitor (added Apr 11, 2022) +* Capslock toggled by double tap of Left Shift key or Fn + Capslock (RGB green highlighted) +* Paddle game accessible via Fn+P; Hit Fn+P again or double tap ESC to exit (added May 5, 2022) +* Single-handed shortcut for Ctrl-Alt-Delete: Fn+/ (added May 14, 2022) +* Single-handed shortcut for Win-L (lock Windows): Fn+L (added May 17, 2022) +* Domain shortcuts: Fn+.=".com", Fn+O="outlook.com", Fn+Y="yahoo.com", Fn+H="hotmail.com", Fn+G="gmail.com". (added Apr 7, 2022) +* Fn-Backslash for [Bootloader mode](https://github.com/qmk/qmk_firmware/blob/master/docs/newbs_flashing.md) +* Home key on F13, Del key right of Backspace +* Insert accessible via Shift-Backspace (so shift delete still works in Windows Explorer) +* PrtScrn, Scroll Lock, Pause/Break are top right on the keyboard: Fn+F11, Fn+F12, Fn+F13 +* [Colemak](https://colemak.com/) key layout support (Layer accessible via Left Shift + turn Encoder clockwise until side LEDs light up purple) +* Double tap ESC any time to revert to base layer (added Feb 26, 2022) +* RGB backlight effects expanded to include framebuffer effects and reactive keypress modes (updated May 24, 2022) +* RGB backlight now remembers last color & effect settings after power down (updated May 24, 2022) + +### Numpad + Mouse Keys (Capslock key) + +* Overlay numpad + [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) are accessed through Capslock key hold (temp) or double press (locked) with RGB highlighting +* Numpad uses Space-bar as Enter for rapid number entry (added May 17, 2022) +* This layer disables much of the keyboard, except X/C/V for cut/copy/paste, WASD for cursor, Q/E for PgUp/PgDn, cursor keys become mouse keys, surrounding keys become mouse buttons and all number keys become numpad versions (so Alt char codes work regardless of which set you use) +* Fn and N keys light up orange if system numlock is off (inverted status), indicating numpad keys will not deliver expected output (Fn+N to toggle) +* Double zero on comma key. +* [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) allow you to use the mouse without taking your hand off the keyboard. (added Mar 15, 2022) +* Mouse controls are: Cursor keys = move mouse; RShift = button1, End = button2, RCtrl = button3, PgUp/PgDn = Scroll wheel +* Mouse Keys can also be accessed as a standalone layer by Left Shift-turning the Encoder until the cursor keys light up green + +### Encoder Functionality + +* Default knob turn changes volume; button press toggles mute +* Exponential encoder - quick repeated volume up doubles increase; quick repeated volume down triples decrease (added Feb 17, 2022) +* Fn + knob turn changes RGB idle timeout +* Fn + knob push puts PC to Sleep (Added May 14, 2022) +* holding Left Shift changes layers +* holding Right Shift navigates page up/down +* holding Left Ctrl navigates prev/next word +* holding Right Ctrl changes RGB hue/color +* holding Left Alt changes media prev/next track + +### Paddle Game + +* Based on [Tomas Guinan's excellent GMMK Pro paddle game](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame) +* Paddle Game playable by pressing Fn+P (P lights up green in Fn layer if game is enabled in firmware, otherwise it lights up red) +* Use rotary encoder to control paddle +* Contains 12 levels, indicated by blue LED on F-key row +* Player has 4 lives, indicated by nav cluster +* Deflect white balls while avoiding red ones +* Use Fn+P, double tap ESC or otherwise change layer to quit game + +### Global RGB Controls + +* RGB backlight lighting effect: Fn+up/down +* RGB backlight effect speed: Fn+left/right +* RGB backlight hue cycle: Fn+A/D +* RGB backlight brightness: Fn+W/S +* RGB backlight saturation: Fn+Q/E (added Feb 4, 2022) +* RGB backlight night mode toggle: Fn+Z (indicators still work) +* RGB backlight timeout: Fn+Encoder or "-" and "=" (default 15 minutes) (updated Apr 7, 2022) + * indicators in Fn layer using RGB in F-key and number rows to show the current timeout in minutes +* Fn+Z to turn off RGB backlighting (indicator lights still work); press again to toggle +* RGB indicators on left side LEDs in order from top: System NumLock off (orange), Scroll Lock (red), Numpad (blue), Capslock (green). + +### Advanced Controls + +* Fn+\ to get to bootloader mode +* Fn+[ESC] to clear EEPROM (then unplug and re-plug) (added Apr 11, 2022) +* Fn+R to toggle N-key Rollover (added Apr 11, 2022) +* Fn+/ is single-handed shortcut to Ctrl-Alt-Delete (added May 14, 2022) +* Fn+L is single-handed shortcut to Win-L (lock Windows) (added May 17, 2022) +* Fn+[Encoder press] to sleep Windows PC (added May 14, 2022) + +Link to latest firmware binary: https://github.com/gourdo1/media/raw/main/gmmk_pro_rev1_ansi_gourdo1.bin + +Link to cheatsheet: https://github.com/gourdo1/media/raw/main/GMMK_Pro_Cheatsheet.pdf + + +## rules.mk Options + +STARTUP_NUMLOCK_ON = yes - Turns on NUMLOCK by default + +ENCODER_DEFAULTACTIONS_ENABLE = yes - Enabled default encoder functions + +TD_LSFT_CAPSLOCK_ENABLE = yes - This will enable double tap on Left Shift to toggle CAPSLOCK when using KC_LSFTCAPS + +IDLE_TIMEOUT_ENABLE = yes - Enables Timer functionality; for RGB idle timeouts that can be changed dynamically + +INVERT_NUMLOCK_INDICATOR - Inverts the Numlock indicator, LED is on when numlock is off -- numlock interferes with overlay numpad, so should be off when numpad layer is active unless you have an external numpad. + +COLEMAK_LAYER_ENABLE = yes - Enables optional 5th layer for COLEMAK layout. Use Shift + encoder to enter 5th layer. + +GAME_ENABLE ?= yes - Enables Paddle Game + +## Layer Diagrams +### Base layer +![image](https://raw.githubusercontent.com/gourdo1/media/main/base.png) + +### Fn Layer +![image](https://raw.githubusercontent.com/gourdo1/media/main/fn1.png) + +### Layer 2 (Numpad) +![image](https://raw.githubusercontent.com/gourdo1/media/main/numpad.png) + +### COLEMAK layer +![image](https://user-images.githubusercontent.com/71780717/131235050-980d2f54-2d23-4ae8-a83f-9fcdbe60d6cb.png) diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rgb_matrix_map.h b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rgb_matrix_map.h new file mode 100644 index 00000000000..36e42ee7f4b --- /dev/null +++ b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rgb_matrix_map.h @@ -0,0 +1,411 @@ +/* Copyright 2021 Jonavin Eng @Jonavin + Copyright 2022 gourdo1 + +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 . +*/ + +#ifdef RGB_MATRIX_ENABLE + +//Define variables for Game +bool fn_active = false; +RGB rgb_value; + +// Custom GMMK Pro-specific RGB color customizations (defaults found in quantum/color.h) +#define RGB_GODSPEED 0x00, 0xE4, 0xFF // color for matching keycaps +#define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Nautilus Font colors +#define RGB_OFFBLUE 0x00, 0x80, 0xFF // new color: blue with a hint of green +#define RGB_DKRED 0x28, 0x00, 0x00 // new color: dark red +#define RGB_ORANGE2 0xFF, 0x28, 0x00 // fix: reduced green from 80 to 28 +#define RGB_PURPLE2 0x80, 0x00, 0xFF // fix: increased red from 7A to 80 +#define RGB_SPRINGGREEN2 0x00, 0xFF, 0x10 // fix: blue was 80, now 10 +#define RGB_YELLOW2 0xFF, 0xB0, 0x00 // fix: green was FF, now B0 +#define RGB_OFF RGB_BLACK + +// Added by gourdo1 for RGB testing +// Red Green Blue Expected GMMK Pro result +#define RGB_TEST1 0xFF, 0x00, 0x00 // Q - red good! +#define RGB_TEST2 0x0F, 0xFF, 0x00 // W - green good! +#define RGB_TEST3 0x00, 0x00, 0xFF // E - blue good! +#define RGB_TEST4 0xFF, 0xB0, 0x00 // R - yellow slightly green heavy - reduced green LED by quite a bit +#define RGB_TEST5 0x00, 0xFF, 0xFF // T - cyan good! +#define RGB_TEST6 0xFF, 0x00, 0xFF // Y - magenta very slightly blue heavy? +#define RGB_TEST7 0xFF, 0x28, 0x00 // U - orange very green heavy at default +#define RGB_TEST8 0xFF, 0x00, 0x80 // I - pink good! +#define RGB_TEST9 0x80, 0xFF, 0x00 // O - chartreus good! +#define RGB_TEST10 0x00, 0xFF, 0x10 // P - springgrn fixed: was too blue because green LED has blue in it already +#define RGB_TEST11 0x00, 0x80, 0xFF // A - grn blue good! +#define RGB_TEST12 0x80, 0x00, 0xFF // S - purple good! + +// RGB LED locations +enum led_location_map { + LED_ESC, // 0, ESC, k13 + LED_GRV, // 1, `, k16 + LED_TAB, // 2, Tab, k11 + LED_CAPS, // 3, Caps, k21 + LED_LSFT, // 4, Sh_L, k00 + LED_LCTL, // 5, Ct_L, k06 + LED_F1, // 6, F1, k26 + LED_1, // 7, 1, k17 + LED_Q, // 8, Q, k10 + LED_A, // 9, A, k12 + LED_Z, // 10, Z, k14 + LED_LWIN, // 11, Win_L, k90 + LED_F2, // 12, F2, k36 + LED_2, // 13, 2, k27 + LED_W, // 14, W, k20 + LED_S, // 15, S, k22 + LED_X, // 16, X, k24 + LED_LALT, // 17, Alt_L, k93 + LED_F3, // 18, F3, k31 + LED_3, // 19, 3, k37 + LED_E, // 20, E, k30 + LED_D, // 21, D, k32 + LED_C, // 22, C, k34 + LED_F4, // 23, F4, k33 + LED_4, // 24, 4, k47 + LED_R, // 25, R, k40 + LED_F, // 26, F, k42 + LED_V, // 27, V, k44 + LED_F5, // 28, F5, k07 + LED_5, // 29, 5, k46 + LED_T, // 30, T, k41 + LED_G, // 31, G, k43 + LED_B, // 32, B, k45 + LED_SPC, // 33, SPACE, k94 + LED_F6, // 34, F6, k63 + LED_6, // 35, 6, k56 + LED_Y, // 36, Y, k51 + LED_H, // 37, H, k53 + LED_N, // 38, N, k55 + LED_F7, // 39, F7, k71 + LED_7, // 40, 7, k57 + LED_U, // 41, U, k50 + LED_J, // 42, J, k52 + LED_M, // 43, M, k54 + LED_F8, // 44, F8, k76 + LED_8, // 45, 8, k67 + LED_I, // 46, I, k60 + LED_K, // 47, K, k62 + LED_COMM, // 48, ,, k64 + LED_RALT, // 49, Alt_R, k95 + LED_F9, // 50, F9, ka6 + LED_9, // 51, 9, k77 + LED_O, // 52, O, k70 + LED_L, // 53, L, k72 + LED_DOT, // 54, ., k74 + LED_FN, // 55, FN, k92 + LED_F10, // 56, F10, ka7 + LED_0, // 57, 0, k87 + LED_P, // 58, P, k80 + LED_SCLN, // 59, ;, k82 + LED_SLSH, // 60, ?, k85 + LED_F11, // 61, F11, ka3 + LED_MINS, // 62, -, k86 + LED_LBRC, // 63, [, k81 + LED_QUOT, // 64, ", k83 + LED_RCTL, // 65, Ct_R, k04 + LED_F12, // 66, F12, ka5 + LED_BSLS, // 67, \, k23 + LED_L1, // 68, LED, l01 + LED_R1, // 69, LED, l11 + LED_PRT, // 70, Prt, k97 + LED_L2, // 71, LED, l02 + LED_R2, // 72, LED, l12 + LED_DEL, // 73, Del, k65 + LED_L3, // 74, LED, l03 + LED_R3, // 75, LED, l13 + LED_PGUP, // 76, PgUp, k15 + LED_L4, // 77, LED, l04 + LED_R4, // 78, LED, l14 + LED_EQL, // 79, =, k66 + LED_RIGHT, // 80, Right, k05 + LED_L5, // 81, LED, l05 + LED_R5, // 82, LED, l15 + LED_END, // 83, End, k75 + LED_L6, // 84, LED, l06 + LED_R6, // 85, LED, l16 + LED_BSPC, // 86, BSpc, ka1 + LED_PGDN, // 87, PgDn, k25 + LED_L7, // 88, LED, l07 + LED_R7, // 89, LED, l17 + LED_RBRC, // 90, ], k61 + LED_RSFT, // 91, Sh_R, k91 + LED_L8, // 92, LED, l08 + LED_R8, // 93, LED, l18 + LED_UP, // 94, Up, k35 + LED_HASH, // 95, #, k84 + LED_LEFT, // 96, Left, k03 + LED_ENT, // 97, Enter, ka4 + LED_DOWN // 98, Down, k73 +}; + +const uint8_t LED_LIST_WASD[] = { + LED_W, + LED_A, + LED_S, + LED_D +}; + +const uint8_t LED_LIST_ARROWS[] = { + LED_LEFT, + LED_RIGHT, + LED_UP, + LED_DOWN +}; + +const uint8_t LED_LIST_FUNCROW[] = { + LED_ESC, + LED_F1, + LED_F2, + LED_F3, + LED_F4, + LED_F5, + LED_F6, + LED_F7, + LED_F8, + LED_F9, + LED_F10, + LED_F11, + LED_F12, + LED_PRT +}; + +const uint8_t LED_LIST_NUMROW[] = { + LED_GRV, + LED_1, + LED_2, + LED_3, + LED_4, + LED_5, + LED_6, + LED_7, + LED_8, + LED_9, + LED_0, + LED_MINS, + LED_EQL, + LED_BSPC, + LED_DEL +}; + +const uint8_t LED_LIST_LETTERS[] = { +/* LED_1, + LED_2, + LED_3, + LED_4, + LED_5, + LED_6, + LED_7, + LED_8, + LED_9, + LED_0, */ + LED_Q, + LED_W, + LED_E, + LED_R, + LED_T, + LED_Y, + LED_U, + LED_I, + LED_O, + LED_P, + LED_A, + LED_S, + LED_D, + LED_F, + LED_G, + LED_H, + LED_J, + LED_K, + LED_L, + LED_Z, + LED_X, + LED_C, + LED_V, + LED_B, + LED_N, + LED_M +}; + +const uint8_t LED_LIST_NUMPAD[] = { + LED_1, + LED_2, + LED_3, + LED_4, + LED_5, + LED_6, + LED_7, + LED_8, + LED_9, + LED_0, + LED_MINS, + LED_EQL, + LED_U, + LED_I, + LED_O, + LED_P, + LED_J, + LED_K, + LED_L, + LED_SCLN, + LED_ENT, + LED_M, + LED_COMM, + LED_DOT, + LED_SLSH, + LED_END, + LED_RIGHT +}; + +const uint8_t LED_SIDE_LEFT[] = { + LED_L1, + LED_L2, + LED_L3, + LED_L4, + LED_L5, + LED_L6, + LED_L7, + LED_L8 +}; + +const uint8_t LED_SIDE_RIGHT[] = { + LED_R1, + LED_R2, + LED_R3, + LED_R4, + LED_R5, + LED_R6, + LED_R7, + LED_R8 +}; + +#ifdef GAME_ENABLE +// Game LED rules +const uint8_t GAME_LIVES[] = { + LED_DEL, + LED_PGUP, + LED_PGDN, + LED_END +}; +const uint8_t GAME_PADDLE[] = { + LED_Z, + LED_X, + LED_C, + LED_V, + LED_B, + LED_N, + LED_M, + LED_COMM, + LED_DOT, + LED_SLSH +}; +const uint8_t GAME_SMILE1[] = { + LED_A, + LED_S, + LED_D, + LED_F, + LED_G, + LED_H, + LED_J, + LED_K, + LED_L, + LED_SCLN, + LED_QUOT +}; +const uint8_t GAME_SMILE2[] = { + LED_2, + LED_3, + LED_4, + LED_5, + LED_6, + LED_7, + LED_8, + LED_9, + LED_0, + LED_MINS, + LED_EQL +}; +const uint8_t GAME_R4[] = { + LED_X, + LED_C, + LED_V, + LED_B, + LED_N, + LED_M, + LED_COMM, + LED_DOT +}; +const uint8_t GAME_R3[] = { + LED_S, + LED_D, + LED_F, + LED_G, + LED_H, + LED_J, + LED_K, + LED_L, + LED_SCLN +}; +const uint8_t GAME_R2[] = { + LED_W, + LED_E, + LED_R, + LED_T, + LED_Y, + LED_U, + LED_I, + LED_O, + LED_P, + LED_LBRC +}; +const uint8_t GAME_R1[] = { + LED_2, + LED_3, + LED_4, + LED_5, + LED_6, + LED_7, + LED_8, + LED_9, + LED_0, + LED_MINS, + LED_EQL +}; +const uint8_t GAME_R0[] = { + LED_F1, + LED_F2, + LED_F3, + LED_F4, + LED_F5, + LED_F6, + LED_F7, + LED_F8, + LED_F9, + LED_F10, + LED_F11, + LED_F12 +}; +const uint8_t LED_GAME_OVER[] = { + LED_5, + LED_8, + LED_F, + LED_G, + LED_H, + LED_J, + LED_C, + LED_M +}; +#endif //GAME_ENABLE + +#endif \ No newline at end of file diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rules.mk b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rules.mk new file mode 100644 index 00000000000..37e81e3dbb4 --- /dev/null +++ b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rules.mk @@ -0,0 +1,22 @@ +LTO_ENABLE = yes # link time optimization -- achieves a smaller compiled size +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +MOUSEKEY_ENABLE = yes + +VIA_ENABLE = yes +TAP_DANCE_ENABLE = yes +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +CAPS_WORD_ENABLE = yes # Enable built-in Caps Word functionality + +TD_LSFT_CAPSLOCK_ENABLE = yes +IDLE_TIMEOUT_ENABLE = yes +STARTUP_NUMLOCK_ON = yes +ENCODER_DEFAULTACTIONS_ENABLE = no + +COLEMAK_LAYER_ENABLE = yes # Enable Colemak layer / set to no to disable +INVERT_NUMLOCK_INDICATOR = yes + +GAME_ENABLE ?= yes # Enable Paddle Game / set to no to disable +ifeq ($(strip $(GAME_ENABLE)), yes) + OPT_DEFS += -DGAME_ENABLE +endif diff --git a/users/gourdo1/custom_double_taps.h b/users/gourdo1/custom_double_taps.h new file mode 100644 index 00000000000..4f551e1fa12 --- /dev/null +++ b/users/gourdo1/custom_double_taps.h @@ -0,0 +1,73 @@ +// Copyright 2022 Google LLC +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "gourdo1.h" + +static bool process_capsnum(uint16_t keycode, keyrecord_t * record) { + static bool toggled = false; + static bool tapped = false; + static uint16_t tap_timer = 0; + + if (keycode == CAPSNUM) { + if (user_config.double_tap_shift_for_capslock) { + // Act as TT(_NUMPADMOUSE) + if (record -> event.pressed) { // CAPSNUM key was pressed + // Check whether the key was recently tapped + if (tapped && !timer_expired(record -> event.time, tap_timer)) { + // This is a double tap (or possibly a triple tap or more) + // Toggle the layer on. + toggled = true; + } else if (toggled) { + // Otherwise if currently toggled, turn it off + toggled = false; + tapped = false; + layer_off(_NUMPADMOUSE); + } + // Set that the first tap occurred in a potential double tap + tapped = true; + tap_timer = record -> event.time + TAPPING_TERM; + layer_on(_NUMPADMOUSE); + } else if (!toggled) { + // If not currently toggled, turn off on key release + layer_off(_NUMPADMOUSE); + return false; + } + } else { // When double_tap_shift_for_capslock == false + // Act as KC_CAPS + if (record -> event.pressed) { + register_code(KC_CAPS); + } else { + unregister_code(KC_CAPS); + } + } + return false; + } else { + // On an event with any other key, reset the double tap state + tapped = false; + } + return true; +} + +static bool process_esc_to_base(uint16_t keycode, keyrecord_t * record) { + static bool tapped = false; + static uint16_t tap_timer = 0; + + if (keycode == KC_ESC) { + if (user_config.esc_double_tap_to_baselyr) { + if (record -> event.pressed) { + if (tapped && !timer_expired(record -> event.time, tap_timer)) { + // The key was double tapped. + layer_clear(); + } + tapped = true; + tap_timer = record -> event.time + TAPPING_TERM; + } + } + } else { + // On an event with any other key, reset the double tap state. + tapped = false; + } + return true; +} diff --git a/users/gourdo1/gourdo1.c b/users/gourdo1/gourdo1.c index b964729be95..9062a452ff2 100644 --- a/users/gourdo1/gourdo1.c +++ b/users/gourdo1/gourdo1.c @@ -1,6 +1,6 @@ /* Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 - + Copyright 2022 gourdo1 + 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 @@ -19,35 +19,35 @@ along with this program. If not, see . #include "gourdo1.h" -#include "caps_word.h" +#include "custom_double_taps.h" -#ifdef TD_LSFT_CAPSLOCK_ENABLE -// Tap once for shift, twice for Caps Lock but only if Win Key in not disabled +// Tap once for shift, twice for Caps Lock but only if Win Key is not disabled (also disabled by user.config variable) void dance_LSFT_each_tap(qk_tap_dance_state_t * state, void * user_data) { - if (state -> count == 1 || keymap_config.no_gui) { - register_code16(KC_LSFT); + if (user_config.double_tap_shift_for_capslock) { + if (state -> count == 1 || keymap_config.no_gui) { + register_code(KC_LSFT); + } else { + register_code(KC_CAPS); + } } else { - register_code(KC_CAPS); + register_code(KC_LSFT); } } void dance_LSFT_reset(qk_tap_dance_state_t * state, void * user_data) { if (state -> count == 1 || keymap_config.no_gui) { - unregister_code16(KC_LSFT); + unregister_code(KC_LSFT); } else { unregister_code(KC_CAPS); - unregister_code16(KC_LSFT); + unregister_code(KC_LSFT); } } + // Tap Dance definitions qk_tap_dance_action_t tap_dance_actions[] = { // Tap once for shift, twice for Caps Lock - [TD_LSFT_CAPSLOCK] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS), - [TD_LSFT_CAPS_WIN] = ACTION_TAP_DANCE_FN_ADVANCED(dance_LSFT_each_tap, NULL, dance_LSFT_reset), - // Tap once for Escape, twice to reset to base layer - [TD_ESC_BASELYR] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _BASE), + [TD_LSFT_CAPS_WIN] = ACTION_TAP_DANCE_FN_ADVANCED(dance_LSFT_each_tap, NULL, dance_LSFT_reset) }; -#endif // TD_LSFT_CAPSLOCK_ENABLE // RGB NIGHT MODE #ifdef RGB_MATRIX_ENABLE @@ -126,209 +126,373 @@ __attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t * bool process_record_user(uint16_t keycode, keyrecord_t * record) { mod_state = get_mods(); - if (!process_record_keymap(keycode, record)) { - return false; - } + if (!process_record_keymap(keycode, record)) { return false; } + if (!process_capsnum(keycode, record)) { return false; } + if (!process_esc_to_base(keycode, record)) { return false; } - if (!process_caps_word(keycode, record)) { - return false; - } - - // Your macros ... + // Key macros ... switch (keycode) { - // DotCom domain macros - case DOTCOM: - if (record -> event.pressed) { - SEND_STRING(".com"); - } else { - // when keycode is released + // User configuration toggles + case PRNCONF: // Print verbose status of all user_config toggles (open a text editor before engaging!!) + if (record->event.pressed) { + //send_string("Left bracket with alt numcodes "SS_LALT(SS_TAP(X_KP_0) SS_TAP(X_KP_0) SS_TAP(X_KP_9) SS_TAP(X_KP_1))"\n"); + send_string("\n\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x3C\x3C\x3C\x3C\x3C\x3C\x3C\x3C\x3C"); + send_string(" gourdo1\x27s GMMK Pro User Settings "); + send_string("\x3E\x3E\x3E\x3E\x3E\x3E\x3E\x3E\x3E\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\n"); + send_string("Hold \x5B \bFn\x5D and the number corresponding to a setting below to toggle.\n"); + send_string("Re-print this screen with \x5B \bFn\x5D \x5B`\x5D to see your changes reflected.\n"); + send_string("Config also visible as RGB under number keys by holding \x5B \bFn\x5D.\n"); + send_string("\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d"); + send_string("\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d"); + send_string("\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d"); + send_string("\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\n"); + send_string("1. CapsLock RGB highlight alpha keys................ "); + if (user_config.rgb_hilite_caps) { + send_string("\x5BON\x5D\n"); + } else { + send_string("\x5BOFF\x5D\n"); + } + send_string("2. Numpad RGB highlight layer keys.................. "); + if (user_config.rgb_hilite_numpad) { + send_string("\x5BON\x5D\n"); + } else { + send_string("\x5BOFF\x5D\n"); + } + send_string("3. Double tap ESC to revert to BASE layer........... "); + if (user_config.esc_double_tap_to_baselyr) { + send_string("\x5BON\x5D\n"); + } else { + send_string("\x5BOFF\x5D\n"); + } + send_string("4. DEL \x26 HOME key locations......................... "); + if (user_config.del_right_home_top) { + send_string("\x5BHOME on F13\x3B DEL right of BKSPC\x5D\n"); + } else { + send_string("\x5B \bDEL on F13\x3B HOME right of BKSPC\x5D\n"); + } + send_string("5. Numpad on CapsLock\x3B double tap LSHIFT for Caps... "); + if (user_config.double_tap_shift_for_capslock) { + send_string("\x5BON\x5D\n"); + } else { + send_string("\x5BOFF\x5D\n"); + } + send_string("6. Encoder button function.......................... "); + if (user_config.encoder_press_mute_or_media) { + send_string("\x5BMUTE\x5D\n"); + } else { + send_string("\x5BMEDIA PLAY\x2FPAUSE\x5D\n"); + } + send_string("7. Insert function accessed with.................... "); + if (user_config.ins_on_shft_bkspc_or_del) { + send_string("\x5BSHIFT\x2D \bBKSPC\x5D\n"); + } else { + send_string("\x5BSHIFT\x2D \bDEL\x5D\n"); + } + send_string("8. Force SHIFT \x26 CTRL\x2DSPACE to function like SPACE.. "); + if (user_config.disable_space_mods) { + send_string("\x5BON\x5D\n"); + } else { + send_string("\x5BOFF\x5D\n"); + } + send_string("\nThe latest firmware updates are always here\x3a https\x3a\x2F\x2Fgithub.com\x2Fgourdo1\x2Fgmmkpro\x2Dmedia\n"); } break; - case YAHOO: - if (record -> event.pressed) { - SEND_STRING("yahoo.com"); - } else { - // when keycode is released - } - break; - case OUTLOOK: - if (record -> event.pressed) { - SEND_STRING("outlook.com"); - } else { - // when keycode is released - } - break; - case GMAIL: - if (record -> event.pressed) { - SEND_STRING("gmail.com"); - } else { - // when keycode is released - } - break; - case HOTMAIL: - if (record -> event.pressed) { - SEND_STRING("hotmail.com"); - } else { - // when keycode is released - } - break; - -/* - case YAHOO: - if (record -> event.pressed) SEND_STRING("yahoo.com"); - else unregister_code16(keycode); - break; - case OUTLOOK: - if (record -> event.pressed) SEND_STRING("outlook.com"); - else unregister_code16(keycode); - break; - case GMAIL: - if (record -> event.pressed) SEND_STRING("gmail.com"); - else unregister_code16(keycode); - break; - case HOTMAIL: - if (record -> event.pressed) { - SEND_STRING("hotmail.com"); - } else unregister_code16(keycode); - break; - case DOTCOM: - if (record -> event.pressed) SEND_STRING(".com"); - else unregister_code16(keycode); - break; -*/ - // Windows key lock - case KC_WINLCK: + case TG_CAPS: // Toggle RGB highlighting of Capslock state + if (record->event.pressed) { + user_config.rgb_hilite_caps ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + } + break; + case TG_PAD: // Toggle RGB highlighting of Numpad state + if (record->event.pressed) { + user_config.rgb_hilite_numpad ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + } + break; + case TG_ESC: // Toggle alternate ESC functionality + if (record->event.pressed) { + user_config.esc_double_tap_to_baselyr ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + } + break; + case TG_DEL: // Toggle alternate placement of DEL and HOME keys + if (record->event.pressed) { + user_config.del_right_home_top ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + } + break; + case TG_TDCAP: // Toggle alternate Capslock/Numpad functionality + if (record->event.pressed) { + user_config.double_tap_shift_for_capslock ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + } + break; + case TG_ENC: // Toggle Encoder function + if (record->event.pressed) { + user_config.encoder_press_mute_or_media ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + } + break; + case TG_INS: // Toggle Encoder function + if (record->event.pressed) { + user_config.ins_on_shft_bkspc_or_del ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + } + break; + case TG_SPCMOD: // Toggle forcing SHIFT&CTRL-SPACE to function like SPACE + if (record->event.pressed) { + user_config.disable_space_mods ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + } + break; + //return false; + + // Key to the left of encoder function (default HOME) + case LEFTOFENC: + if (!(user_config.del_right_home_top)) { + if (!(user_config.ins_on_shft_bkspc_or_del)) { + static bool inskey_registered; + if (record -> event.pressed) { + // Detect the activation of either shift keys + if (mod_state & MOD_MASK_SHIFT) { + // First temporarily canceling both shifts so that + // shift isn't applied to the KC_INS keycode + del_mods(MOD_MASK_SHIFT); + register_code(KC_INS); + // Update the boolean variable to reflect the status of KC_INS + inskey_registered = true; + // Reapplying modifier state so that the held shift key(s) + // still work even after having tapped the key. + set_mods(mod_state); + return false; + } else { + register_code(KC_DEL); + return false; + } + } else { // on release of KC_DEL + // In case KC_INS is still being sent even after the release of KC_DEL + if (inskey_registered) { + unregister_code(KC_INS); + inskey_registered = false; + return false; + } else { + unregister_code(KC_DEL); + return false; + } + } + } else { + if (record -> event.pressed) { + register_code(KC_DEL); + return false; + } else { + unregister_code(KC_DEL); + return false; + } + } + } else { + if (record -> event.pressed) { + register_code(KC_HOME); + return false; + } else { + unregister_code(KC_HOME); + return false; + } + } + break; + + // Key below encoder function (default DEL) + case BELOWENC: + if (user_config.del_right_home_top) { + if (!(user_config.ins_on_shft_bkspc_or_del)) { + static bool inskey_registered; + if (record -> event.pressed) { + // Detect the activation of either shift keys + if (mod_state & MOD_MASK_SHIFT) { + // First temporarily canceling both shifts so that + // shift isn't applied to the KC_INS keycode + del_mods(MOD_MASK_SHIFT); + register_code(KC_INS); + // Update the boolean variable to reflect the status of KC_INS + inskey_registered = true; + // Reapplying modifier state so that the held shift key(s) + // still work even after having tapped the key. + set_mods(mod_state); + return false; + } else { + register_code(KC_DEL); + return false; + } + } else { // on release of KC_DEL + // In case KC_INS is still being sent even after the release of KC_DEL + if (inskey_registered) { + unregister_code(KC_INS); + inskey_registered = false; + return false; + } else { + unregister_code(KC_DEL); + return false; + } + } + } else { + if (record -> event.pressed) { + register_code(KC_DEL); + return false; + } else { + unregister_code(KC_DEL); + return false; + } + } + } else { + if (record -> event.pressed) { + register_code(KC_HOME); + return false; + } else { + unregister_code(KC_HOME); + return false; + } + } + break; + + // Encoder button function + case ENCFUNC: + if (user_config.encoder_press_mute_or_media) { + if (record -> event.pressed) { + register_code(KC_MUTE); + } else unregister_code16(keycode); + } + else { + if (record -> event.pressed) { + register_code(KC_MPLY); + } else unregister_code16(keycode); + } + break; + + // DotCom domain macros + case DOTCOM: + if (record -> event.pressed) { + send_string(".com"); + } else { + // when keycode is released + } + break; + case YAHOO: + if (record -> event.pressed) { + send_string("yahoo.com"); + } else { + // when keycode is released + } + break; + case OUTLOOK: + if (record -> event.pressed) { + send_string("outlook.com"); + } else { + // when keycode is released + } + break; + case GMAIL: + if (record -> event.pressed) { + send_string("gmail.com"); + } else { + // when keycode is released + } + break; + case HOTMAIL: + if (record -> event.pressed) { + send_string("hotmail.com"); + } else { + // when keycode is released + } + break; + + // Windows Key lockout + case WINLOCK: if (record -> event.pressed) { keymap_config.no_gui = !keymap_config.no_gui; //toggle status } else unregister_code16(keycode); break; - // Double Zero + // Double Zero case KC_00: if (record -> event.pressed) { // when keycode KC_00 is pressed - SEND_STRING("00"); + send_string("00"); } else unregister_code16(keycode); break; - // Treat Control+Space as if regular Space - case KC_SPC: { - // Initialize a boolean variable that keeps track of the space key status: registered or not? - static bool spckey_registered; - if (record -> event.pressed) { - // Detect the activation of either ctrl keys - if (mod_state & MOD_MASK_CTRL) { - // First temporarily canceling both ctrls so that - // ctrl isn't applied to the KC_SPC keycode - del_mods(MOD_MASK_CTRL); - register_code(KC_SPC); - // Update the boolean variable to reflect the status of KC_SPC - spckey_registered = true; - // Reapplying modifier state so that the held ctrl key(s) - // still work even after having tapped the Space key. - set_mods(mod_state); - return false; + // Treat Control & Shift-Space as if regular Space + case KC_SPC: + if (user_config.disable_space_mods) { + // Initialize a boolean variable that keeps track of the space key status: registered or not? + static bool spckey_registered; + if (record -> event.pressed) { + // Detect the activation of either ctrl keys + if (mod_state & MOD_MASK_CTRL) { + // First temporarily canceling both ctrls so that + // ctrl isn't applied to the KC_SPC keycode + del_mods(MOD_MASK_CTRL); + register_code(KC_SPC); + // Update the boolean variable to reflect the status of KC_SPC + spckey_registered = true; + // Reapplying modifier state so that the held ctrl key(s) + // still work even after having tapped the Space key. + set_mods(mod_state); + return false; + } + else if (mod_state & MOD_MASK_SHIFT) { + // First temporarily canceling both shifts so that + // shift isn't applied to the KC_SPC keycode + del_mods(MOD_MASK_SHIFT); + register_code(KC_SPC); + // Update the boolean variable to reflect the status of KC_SPC + spckey_registered = true; + // Reapplying modifier state so that the held shift key(s) + // still work even after having tapped the Space key. + set_mods(mod_state); + return false; + } + } else { // on release of KC_SPC + // In case KC_SPC is still being sent even after the release of KC_SPC + if (spckey_registered) { + unregister_code(KC_SPC); + spckey_registered = false; + return false; + } } - } else { // on release of KC_SPC - // In case KC_SPC is still being sent even after the release of KC_SPC - if (spckey_registered) { - unregister_code(KC_SPC); - spckey_registered = false; - return false; - } - } } break; - // Treat Shift+Space as if regular Space - case KC_SHIFTSPC: { - // Initialize a boolean variable that keeps track of the space key status: registered or not? - static bool spc2key_registered; - if (record -> event.pressed) { - // Detect the activation of either shift keys - if (mod_state & MOD_MASK_SHIFT) { - // First temporarily canceling both shifts so that - // shift isn't applied to the KC_SPC keycode - del_mods(MOD_MASK_SHIFT); - register_code(KC_SPC); - // Update the boolean variable to reflect the status of KC_SPC - spc2key_registered = true; - // Reapplying modifier state so that the held shift key(s) - // still work even after having tapped the Space key. - set_mods(mod_state); - return false; - } - } else { // on release of KC_SPC - // In case KC_SPC is still being sent even after the release of KC_SPC - if (spc2key_registered) { - unregister_code(KC_SPC); - spc2key_registered = false; - return false; - } - } - } - break; - - // Add INS as SHIFT-modified BackSpace key + // INS as SHIFT-modified BackSpace key case KC_BSPC: { - // Initialize a boolean variable that keeps track of the delete key status: registered or not? - static bool inskey_registered; - if (record -> event.pressed) { - // Detect the activation of either shift keys - if (mod_state & MOD_MASK_SHIFT) { - // First temporarily canceling both shifts so that - // shift isn't applied to the KC_INS keycode - del_mods(MOD_MASK_SHIFT); - register_code(KC_INS); - // Update the boolean variable to reflect the status of KC_INS - inskey_registered = true; - // Reapplying modifier state so that the held shift key(s) - // still work even after having tapped the Delete/Insert key. - set_mods(mod_state); - return false; - } - } else { // on release of KC_BSPC - // In case KC_INS is still being sent even after the release of KC_BSPC - if (inskey_registered) { - unregister_code(KC_INS); - inskey_registered = false; - return false; + if (user_config.ins_on_shft_bkspc_or_del) { + // Initialize a boolean variable that keeps track of the ins key status: registered or not? + static bool inskey_registered; + if (record -> event.pressed) { + // Detect the activation of either shift keys + if (mod_state & MOD_MASK_SHIFT) { + // First temporarily canceling both shifts so that + // shift isn't applied to the KC_INS keycode + del_mods(MOD_MASK_SHIFT); + register_code(KC_INS); + // Update the boolean variable to reflect the status of KC_INS + inskey_registered = true; + // Reapplying modifier state so that the held shift key(s) + // still work even after having tapped the key. + set_mods(mod_state); + return false; + } + } else { // on release of KC_BSPC + // In case KC_INS is still being sent even after the release of KC_BSPC + if (inskey_registered) { + unregister_code(KC_INS); + inskey_registered = false; + return false; + } } } - } - break; - - /* Add INS as SHIFT-modified DEL key - case KC_DEL: { - // Initialize a boolean variable that keeps track of the delete key status: registered or not? - static bool inskey_registered; - if (record->event.pressed) { - // Detect the activation of either shift keys - if (mod_state & MOD_MASK_SHIFT) { - // First temporarily canceling both shifts so that - // shift isn't applied to the KC_INS keycode - del_mods(MOD_MASK_SHIFT); - register_code(KC_INS); - // Update the boolean variable to reflect the status of KC_INS - inskey_registered = true; - // Reapplying modifier state so that the held shift key(s) - // still work even after having tapped the Delete/Insert key. - set_mods(mod_state); - return false; - } - } else { // on release of KC_DEL - // In case KC_INS is still being sent even after the release of KC_DEL - if (inskey_registered) { - unregister_code(KC_INS); - inskey_registered = false; - return false; - } - } - } - break; - */ + } + break; #ifdef IDLE_TIMEOUT_ENABLE case RGB_TOI: @@ -352,27 +516,27 @@ bool process_record_user(uint16_t keycode, keyrecord_t * record) { #ifdef EMOTICON_ENABLE case EMO_SHRUG: - if (record -> event.pressed) SEND_STRING("`\\_(\"/)_/`"); + if (record -> event.pressed) send_string("`\\_(\"/)_/`"); else unregister_code16(keycode); break; case EMO_CONFUSE: - if (record -> event.pressed) SEND_STRING("(*_*)"); + if (record -> event.pressed) send_string("(*_*)"); else unregister_code16(keycode); break; case EMO_TEARS: - if (record -> event.pressed) SEND_STRING("(T_T)"); + if (record -> event.pressed) send_string("(T_T)"); else unregister_code16(keycode); break; case EMO_NERVOUS: - if (record -> event.pressed) SEND_STRING("(~_~;)"); + if (record -> event.pressed) send_string("(~_~;)"); else unregister_code16(keycode); break; case EMO_JOY: - if (record -> event.pressed) SEND_STRING("(^o^)"); + if (record -> event.pressed) send_string("(^o^)"); else unregister_code16(keycode); break; case EMO_SAD: - if (record -> event.pressed) SEND_STRING(":'-("); + if (record -> event.pressed) send_string(":'-("); else unregister_code16(keycode); break; #endif // EMOTICON_ENABLE @@ -398,15 +562,32 @@ bool process_record_user(uint16_t keycode, keyrecord_t * record) { return true; }; -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t * record) { +// Define custom Caps Word continuity characters +bool caps_word_press_user(uint16_t keycode) { switch (keycode) { - case KC_SFTUP: - return 300; - case KC_RAISESPC: - case KC_LOWERSPC: - return 450; - default: - return TAPPING_TERM; + // Keycodes that continue Caps Word, with shift applied. + case KC_A ... KC_Z: + case KC_TILD: + case KC_UNDS: + case KC_DQT: + case KC_COLN: + case KC_RSFT: + case LSFTCAPSWIN: + add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key. + return true; + + // Keycodes that continue Caps Word, without shifting. + case KC_1 ... KC_0: + case KC_GRV: + case KC_MINS: + case KC_QUOT: + case KC_SCLN: + case KC_BSPC: + case KC_DEL: + return true; + + default: + return false; // Deactivate Caps Word. } } @@ -418,15 +599,32 @@ void activate_numlock(bool turn_on) { } // INITIAL STARTUP - -__attribute__((weak)) void keyboard_post_init_keymap(void) {} +__attribute__((weak)) void keyboard_post_init_keymap(void) { +} void keyboard_post_init_user(void) { + // Read the user config from EEPROM + user_config.raw = eeconfig_read_user(); keyboard_post_init_keymap(); #ifdef STARTUP_NUMLOCK_ON activate_numlock(true); // turn on Num lock by default so that the numpad layer always has predictable results - #endif // STARTUP_NUMLOC_ON + #endif // STARTUP_NUMLOCK_ON #ifdef IDLE_TIMEOUT_ENABLE - timeout_timer = timer_read(); // set inital time for ide timeout + timeout_timer = timer_read(); // set initial time for idle timeout #endif -} \ No newline at end of file +} + +/* Set defaults for EEPROM user configuration variables */ +void eeconfig_init_user(void) { + user_config.raw = 0; + user_config.rgb_hilite_caps = true; + user_config.rgb_hilite_numpad = true; + user_config.double_tap_shift_for_capslock = true; + user_config.del_right_home_top = true; + user_config.encoder_press_mute_or_media = true; + user_config.esc_double_tap_to_baselyr = true; + user_config.ins_on_shft_bkspc_or_del = true; + user_config.disable_space_mods = true; + + eeconfig_update_user(user_config.raw); +} diff --git a/users/gourdo1/gourdo1.h b/users/gourdo1/gourdo1.h index c6861ca0ca8..aa91a192d24 100644 --- a/users/gourdo1/gourdo1.h +++ b/users/gourdo1/gourdo1.h @@ -1,5 +1,5 @@ /* Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 + Copyright 2022 gourdo1 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,36 +20,49 @@ along with this program. If not, see . // DEFINE MACROS #define ARRAYSIZE(arr) sizeof(arr) / sizeof(arr[0]) -// LAYERS +// LAYERS -- Note: to avoid compile problems, make sure total layers matches DYNAMIC_KEYMAP_LAYER_COUNT defined in config.h (where _COLEMAK layer is defined) enum custom_user_layers { _BASE, _FN1, _NUMPADMOUSE, _MOUSEKEY, + #ifdef GAME_ENABLE + _GAME + #endif //GAME_ENABLE }; #define KC_CAD LALT(LCTL(KC_DEL)) +#define LOCKPC LGUI(KC_L) #define KC_AF4 LALT(KC_F4) #define KC_TASK LCTL(LSFT(KC_ESC)) #define CT_PGUP RCTL(KC_PGUP) #define CT_PGDN RCTL(KC_PGDN) #define CT_HOME RCTL(KC_HOME) #define CT_END RCTL(KC_END) -#define KC_SFTUP RSFT_T(KC_UP) // Shift when held, Up arrow when tapped -#define KC_RAISESPC LT(_MOUSEKEY, KC_SPC) // _MOUSEKEY layer mod when held, space when tapped -#define KC_LOWERSPC LT(_NUMPADMOUSE, KC_SPC) // _NUMPAD-MOUSE layer mod when held, space when tapped -#define KC_SHIFTSPC LSFT(KC_SPC) -#define SWAP_L SGUI(KC_LEFT) // Swap application to left display -#define SWAP_R SGUI(KC_RGHT) // Swap application to right display +#define SWAP_L SGUI(KC_LEFT) // Swap application to left display +#define SWAP_R SGUI(KC_RGHT) // Swap application to right display // KEYCODES enum custom_user_keycodes { KC_00 = SAFE_RANGE, - ENCFUNC, - KC_WINLCK, // Toggles Win key on and off + ENCFUNC, // Encoder function + CAPSNUM, // Capslock key function + LEFTOFENC, // Key to the left of the encoder (i.e. F13) + BELOWENC, // Key below encoder + PRNCONF, // Print verbose statuses of all user_config toggles + WINLOCK, // Toggles Windows key on and off RGB_TOI, // Timeout idle time up RGB_TOD, // Timeout idle time down - RGB_NITE, // Turns off all rgb but allow rgb indicators to work + RGB_NITE, // Disables RGB backlighting effects but allows RGB indicators to still work + + TG_CAPS, // Toggles RGB highlighting of alphas during capslock + TG_PAD, // Toggles RGB highlighting of keys on numpad+mousekeys layer + TG_TDCAP, // Toggles double tap shift (tapdance) for CapsLock + TG_DEL, // Swaps DEL and HOME key locations + TG_ENC, // Toggle Encoder functionality + TG_ESC, // Toggle ESC tapdance for _BASE layer + TG_INS, // Toggle location of INS + TG_SPCMOD, // Toggle disabling of modded-SPACE functions YAHOO, // yahoo.com OUTLOOK, // outlook.com @@ -66,24 +79,33 @@ enum custom_user_keycodes { KC_TSTOG, // Tab Scroll Toggle - NEW_SAFE_RANGE // new safe range for keymap level custom keycodes + NEW_SAFE_RANGE // New safe range for keymap level custom keycodes }; -#ifdef TD_LSFT_CAPSLOCK_ENABLE + // Tap Dance Definitions enum custom_tapdance { - TD_LSFT_CAPSLOCK, TD_LSFT_CAPS_WIN, - TD_ESC_BASELYR }; -#define KC_LSFTCAPS TD(TD_LSFT_CAPSLOCK) -#define KC_LSFTCAPSWIN TD(TD_LSFT_CAPS_WIN) -#define KC_ESCLYR TD(TD_ESC_BASELYR) -#else // regular Shift -#define KC_LSFTCAPS KC_LSFT -// regular Escape -#define KC_ESCLYR KC_ESC -#endif // TD_LSFT_CAPSLOCK_ENABLE + +// Set up boolean variables to track user customizable configuration options +typedef union { + uint32_t raw; + struct { + bool rgb_hilite_caps :1; + bool rgb_hilite_numpad :1; + bool esc_double_tap_to_baselyr :1; + bool del_right_home_top :1; + bool double_tap_shift_for_capslock :1; + bool encoder_press_mute_or_media :1; + bool ins_on_shft_bkspc_or_del :1; + bool disable_space_mods :1; + }; +} user_config_t; + +user_config_t user_config; + +#define LSFTCAPSWIN TD(TD_LSFT_CAPS_WIN) // ENCODER ACTIONS #ifdef ENCODER_ENABLE diff --git a/users/gourdo1/gourdo1_encoder.c b/users/gourdo1/gourdo1_encoder.c index 72f8c3c3541..5a19b63c6e7 100644 --- a/users/gourdo1/gourdo1_encoder.c +++ b/users/gourdo1/gourdo1_encoder.c @@ -1,5 +1,5 @@ /* Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 + Copyright 2022 gourdo1 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 @@ -15,8 +15,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ - #include QMK_KEYBOARD_H + #include "gourdo1.h" #ifdef ENCODER_ENABLE From 5108d531691421be0fc4784a5a76fff7ab9aee63 Mon Sep 17 00:00:00 2001 From: bruun-baer <108467514+bruun-baer@users.noreply.github.com> Date: Sat, 2 Jul 2022 14:11:53 +0000 Subject: [PATCH 05/34] Add a workman-miryoku hybrid keymap for the ferris sweep keyboard (#17511) --- keyboards/ferris/keymaps/bruun-baer/config.h | 39 ++++++++++ .../ferris/keymaps/bruun-baer/keymap.json | 71 +++++++++++++++++++ keyboards/ferris/keymaps/bruun-baer/readme.md | 2 + 3 files changed, 112 insertions(+) create mode 100644 keyboards/ferris/keymaps/bruun-baer/config.h create mode 100644 keyboards/ferris/keymaps/bruun-baer/keymap.json create mode 100644 keyboards/ferris/keymaps/bruun-baer/readme.md diff --git a/keyboards/ferris/keymaps/bruun-baer/config.h b/keyboards/ferris/keymaps/bruun-baer/config.h new file mode 100644 index 00000000000..4f63ee544f9 --- /dev/null +++ b/keyboards/ferris/keymaps/bruun-baer/config.h @@ -0,0 +1,39 @@ +/* +Copyright 2022 Alexander Bruun + +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 +// Set the mouse settings to a comfortable speed/accuracy trade-off, +// assuming a screen refresh rate of 60 Htz or higher +// The default is 50. This makes the mouse ~3 times faster and more accurate +#define MOUSEKEY_INTERVAL 16 +// The default is 20. Since we made the mouse about 3 times faster with the previous setting, +// give it more time to accelerate to max speed to retain precise control over short distances. +#define MOUSEKEY_TIME_TO_MAX 40 +// The default is 300. Let's try and make this as low as possible while keeping the cursor responsive +#define MOUSEKEY_DELAY 100 +// It makes sense to use the same delay for the mouseweel +#define MOUSEKEY_WHEEL_DELAY 100 +// The default is 100 +#define MOUSEKEY_WHEEL_INTERVAL 50 +// The default is 40 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 100 + +// Pick good defaults for enabling homerow modifiers +#define TAPPING_TERM 200 +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_FORCE_HOLD diff --git a/keyboards/ferris/keymaps/bruun-baer/keymap.json b/keyboards/ferris/keymaps/bruun-baer/keymap.json new file mode 100644 index 00000000000..ee966ab1b50 --- /dev/null +++ b/keyboards/ferris/keymaps/bruun-baer/keymap.json @@ -0,0 +1,71 @@ +{ + "version": 1, + "notes": "Personal keymap", + "documentation": "\"This file is a QMK Configurator export. You can import this at . It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: \n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n", + "keyboard": "ferris/sweep", + "keymap": "bruun-baer", + "layout": "LAYOUT_split_3x5_2", + "layers": [ + ["KC_Q" , "KC_D" , "KC_R" , "KC_W" , "KC_B", + "KC_J" , "KC_F" , "KC_U" , "KC_P" , "KC_QUOT", + + "LGUI_T(KC_A)", "LALT_T(KC_S)", "LSFT_T(KC_H)", "LCTL_T(KC_T)" , "KC_G", + "KC_Y" , "LCTL_T(KC_N)", "LSFT_T(KC_E)", "LALT_T(KC_O)" , "LGUI_T(KC_I)", + + "KC_Z" , "RALT_T(KC_X)", "KC_M" , "KC_C" , "KC_V", + "KC_K" , "KC_L" , "KC_COMM" , "RALT_T(KC_DOT)", "KC_SLSH", + + "LT(3,KC_SPC)", "LT(4,KC_TAB)", + "LT(2,KC_ENT)", "LT(1,KC_BSPC)" + ], + ["KC_LBRC" , "KC_7" , "KC_8" , "KC_9" , "KC_RBRC", + "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO", + + "KC_SCLN" , "KC_4" , "KC_5" , "KC_6" , "KC_EQL", + "KC_NO" , "KC_LCTL" , "KC_LSFT" , "KC_LALT" , "KC_LGUI", + + "KC_GRV" , "KC_1" , "KC_2" , "KC_3" , "KC_BSLS", + "KC_NO" , "KC_NO" , "KC_NO" , "KC_RALT" , "KC_NO", + + "KC_0" , "KC_MINS", + "KC_NO" , "KC_NO" + ], + ["KC_LCBR" , "KC_AMPR" , "KC_ASTR" , "KC_LPRN" , "KC_RCBR", + "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO", + + "KC_COLN" , "KC_DLR" , "KC_PERC" , "KC_CIRC" , "KC_PLUS", + "KC_NO" , "KC_LCTL" , "KC_LSFT" , "KC_LALT" , "KC_LGUI", + + "KC_TILD" , "KC_EXLM" , "KC_AT" , "KC_HASH" , "KC_PIPE", + "KC_NO" , "KC_NO" , "KC_NO" , "KC_RALT" , "KC_NO", + + "KC_RPRN" , "KC_UNDS", + "KC_NO" , "KC_NO" + ], + ["KC_F12" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_PSCR", + "KC_AGIN" , "KC_PSTE" , "KC_COPY" , "KC_CUT" , "KC_UNDO", + + "KC_F11" , "KC_F4" , "KC_F5" , "KC_F6" , "KC_SCRL", + "KC_CAPS" , "KC_LEFT" , "KC_DOWN" , "KC_UP" , "KC_RGHT", + + "KC_F10" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_PAUS", + "KC_INS" , "KC_HOME" , "KC_PGDN" , "KC_PGUP" , "KC_END", + + "KC_NO" , "KC_NO", + "KC_ESC" , "KC_DEL" + ], + ["KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO", + "KC_MPLY" , "KC_MPRV" , "KC_VOLD" , "KC_VOLU" , "KC_MNXT", + + "KC_LGUI" , "KC_LALT" , "KC_LSFT" , "KC_LCTL" , "KC_NO", + "KC_MUTE" , "KC_MS_L" , "KC_MS_D" , "KC_MS_U" , "KC_MS_R", + + "KC_NO" , "KC_RALT" , "KC_NO" , "KC_NO" , "KC_NO", + "KC_BTN3" , "KC_WH_L" , "KC_WH_D" , "KC_WH_U" , "KC_WH_R", + + "KC_NO" , "KC_NO", + "KC_BTN1" , "KC_BTN2" + ] + ], + "author": "@bruun-baer" +} diff --git a/keyboards/ferris/keymaps/bruun-baer/readme.md b/keyboards/ferris/keymaps/bruun-baer/readme.md new file mode 100644 index 00000000000..7d1d78b5f17 --- /dev/null +++ b/keyboards/ferris/keymaps/bruun-baer/readme.md @@ -0,0 +1,2 @@ +Personal Ferris Sweep Keymap +=============================================== From ac5e6b6a3bfad12ab7d9786a18fcc90f8bf4caf7 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 3 Jul 2022 00:12:45 +1000 Subject: [PATCH 06/34] Tentative Teensy 3.5 support (#14420) * Tentative Teensy 3.5 support * Set firmware format to .hex for ARM Teensys * Got to "device descriptor failed" by comparing with Teensy 3.6 code * Drop down to 96MHz... * Bump back up to 120MHz --- builddefs/bootloader.mk | 4 +- builddefs/mcu_selection.mk | 27 ++++++++++ data/schemas/keyboard.jsonschema | 2 +- docs/compatible_microcontrollers.md | 2 + keyboards/handwired/onekey/teensy_35/chconf.h | 28 +++++++++++ keyboards/handwired/onekey/teensy_35/config.h | 32 ++++++++++++ .../handwired/onekey/teensy_35/halconf.h | 28 +++++++++++ .../handwired/onekey/teensy_35/mcuconf.h | 50 +++++++++++++++++++ keyboards/handwired/onekey/teensy_35/rules.mk | 8 +++ lib/python/qmk/constants.py | 2 +- platforms/chibios/chibios_config.h | 2 +- 11 files changed, 180 insertions(+), 5 deletions(-) create mode 100644 keyboards/handwired/onekey/teensy_35/chconf.h create mode 100644 keyboards/handwired/onekey/teensy_35/config.h create mode 100644 keyboards/handwired/onekey/teensy_35/halconf.h create mode 100644 keyboards/handwired/onekey/teensy_35/mcuconf.h create mode 100644 keyboards/handwired/onekey/teensy_35/rules.mk diff --git a/builddefs/bootloader.mk b/builddefs/bootloader.mk index 3d4c03b01c2..51e9b7d5588 100644 --- a/builddefs/bootloader.mk +++ b/builddefs/bootloader.mk @@ -105,8 +105,8 @@ ifeq ($(strip $(BOOTLOADER)), halfkay) ifeq ($(strip $(MCU)), at90usb1286) BOOTLOADER_SIZE = 1024 endif - # Teensy LC, 3.x - ifneq (,$(filter $(MCU_ORIG), MKL26Z64 MK20DX128 MK20DX256 MK66FX1M0)) + # Teensy LC, 3.0, 3.1/2, 3.5, 3.6 + ifneq (,$(filter $(MCU_ORIG), MKL26Z64 MK20DX128 MK20DX256 MK64FX512 MK66FX1M0)) FIRMWARE_FORMAT = hex endif endif diff --git a/builddefs/mcu_selection.mk b/builddefs/mcu_selection.mk index 135f663c14a..7528aa68424 100644 --- a/builddefs/mcu_selection.mk +++ b/builddefs/mcu_selection.mk @@ -87,6 +87,33 @@ ifneq ($(findstring MK20DX256, $(MCU)),) BOARD ?= PJRC_TEENSY_3_1 endif +ifneq ($(findstring MK64FX512, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = KINETIS + MCU_SERIES = K60x + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= MK64FX512 + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= k60x + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= PJRC_TEENSY_3_5 +endif + ifneq ($(findstring MK66FX1M0, $(MCU)),) # Cortex version MCU = cortex-m4 diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index 8aca807e38d..320974f0c45 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -42,7 +42,7 @@ }, "processor": { "type": "string", - "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66FX1M0", "RP2040", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L432", "STM32L433", "STM32L442", "STM32L443", "GD32VF103", "WB32F3G71", "WB32FQ95", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"] + "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK64FX512", "MK66FX1M0", "RP2040", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L432", "STM32L433", "STM32L442", "STM32L443", "GD32VF103", "WB32F3G71", "WB32FQ95", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"] }, "audio": { "type": "object", diff --git a/docs/compatible_microcontrollers.md b/docs/compatible_microcontrollers.md index a594fe06207..cc9c0b7f92a 100644 --- a/docs/compatible_microcontrollers.md +++ b/docs/compatible_microcontrollers.md @@ -62,6 +62,8 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s * [MK20DX128](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-50-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-based-on-arm-cortex-m4-core:K20_50) * [MK20DX256](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-72-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-mcus-based-on-arm-cortex-m4-core:K20_72) * PJRC Teensy 3.2 + * [MK64FX512](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k6x-ethernet/kinetis-k64-120-mhz-256-kb-sram-microcontrollers-mcus-based-on-arm-cortex-m4-core:K64_120) + * PJRC Teensy 3.5 * [MK66FX1M0](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k6x-ethernet/kinetis-k66-180-mhz-dual-high-speed-full-speed-usbs-2mb-flash-microcontrollers-mcus-based-on-arm-cortex-m4-core:K66_180) * PJRC Teensy 3.6 diff --git a/keyboards/handwired/onekey/teensy_35/chconf.h b/keyboards/handwired/onekey/teensy_35/chconf.h new file mode 100644 index 00000000000..ee8312c526c --- /dev/null +++ b/keyboards/handwired/onekey/teensy_35/chconf.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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/handwired/onekey/teensy_35/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_TIME_QUANTUM 20 + +#include_next diff --git a/keyboards/handwired/onekey/teensy_35/config.h b/keyboards/handwired/onekey/teensy_35/config.h new file mode 100644 index 00000000000..a5f2c945c49 --- /dev/null +++ b/keyboards/handwired/onekey/teensy_35/config.h @@ -0,0 +1,32 @@ +/* Copyright 2019 + * + * 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 + +// TODO: including this causes "error: expected identifier before '(' token" errors +//#include "config_common.h" + +#define PRODUCT Onekey Teensy 3.5 + +#define MATRIX_COL_PINS { D5 } // 20/A6 +#define MATRIX_ROW_PINS { B2 } // 19/A5 +#define UNUSED_PINS + +// i2c_master defines +#define I2C1_SCL_PIN B0 // 16/A2 on pinout +#define I2C1_SDA_PIN B1 // 17/A3 on pinout +#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2 +#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2 diff --git a/keyboards/handwired/onekey/teensy_35/halconf.h b/keyboards/handwired/onekey/teensy_35/halconf.h new file mode 100644 index 00000000000..6ac756d0f21 --- /dev/null +++ b/keyboards/handwired/onekey/teensy_35/halconf.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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/handwired/onekey/teensy_35/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_SERIAL TRUE + +#define SERIAL_USB_BUFFERS_SIZE 256 + +#include_next diff --git a/keyboards/handwired/onekey/teensy_35/mcuconf.h b/keyboards/handwired/onekey/teensy_35/mcuconf.h new file mode 100644 index 00000000000..dc508eee7d2 --- /dev/null +++ b/keyboards/handwired/onekey/teensy_35/mcuconf.h @@ -0,0 +1,50 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _MCUCONF_H_ +#define _MCUCONF_H_ + +#define K60x_MCUCONF + +/* + * HAL driver system settings. + */ + +/* Select the MCU clocking mode below by enabling the appropriate block. */ + +/* PEE mode - 120MHz system clock driven by external crystal. */ +#define KINETIS_MCG_MODE KINETIS_MCG_MODE_PEE +#define KINETIS_PLLCLK_FREQUENCY 120000000UL // 120 MHz (RUN) +#define KINETIS_SYSCLK_FREQUENCY KINETIS_PLLCLK_FREQUENCY +#define KINETIS_BUSCLK_FREQUENCY 60000000UL +#define KINETIS_FLASHCLK_FREQUENCY 24000000UL // 24 MHz (RUN) + +#define KINETIS_CLKDIV1_OUTDIV1 1 // -> 0 +#define KINETIS_CLKDIV1_OUTDIV2 2 // -> 1 +#define KINETIS_CLKDIV1_OUTDIV4 5 // -> 4 + +/* + * SERIAL driver system settings. + */ +#define KINETIS_SERIAL_USE_UART0 TRUE + +/* + * USB driver settings + */ +#define KINETIS_USB_USE_USB0 TRUE +#define KINETIS_USB_USB0_IRQ_PRIORITY 5 + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/handwired/onekey/teensy_35/rules.mk b/keyboards/handwired/onekey/teensy_35/rules.mk new file mode 100644 index 00000000000..8ebefd03f50 --- /dev/null +++ b/keyboards/handwired/onekey/teensy_35/rules.mk @@ -0,0 +1,8 @@ +# MCU name +MCU = MK64FX512 + +# Bootloader selection +BOOTLOADER = halfkay + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/lib/python/qmk/constants.py b/lib/python/qmk/constants.py index be85a1dbff8..95fe9a61d08 100644 --- a/lib/python/qmk/constants.py +++ b/lib/python/qmk/constants.py @@ -14,7 +14,7 @@ QMK_FIRMWARE_UPSTREAM = 'qmk/qmk_firmware' MAX_KEYBOARD_SUBFOLDERS = 5 # Supported processor types -CHIBIOS_PROCESSORS = 'cortex-m0', 'cortex-m0plus', 'cortex-m3', 'cortex-m4', 'MKL26Z64', 'MK20DX128', 'MK20DX256', 'MK66FX1M0', 'RP2040', 'STM32F042', 'STM32F072', 'STM32F103', 'STM32F303', 'STM32F401', 'STM32F405', 'STM32F407', 'STM32F411', 'STM32F446', 'STM32G431', 'STM32G474', 'STM32L412', 'STM32L422', 'STM32L432', 'STM32L433', 'STM32L442', 'STM32L443', 'GD32VF103', 'WB32F3G71', 'WB32FQ95' +CHIBIOS_PROCESSORS = 'cortex-m0', 'cortex-m0plus', 'cortex-m3', 'cortex-m4', 'MKL26Z64', 'MK20DX128', 'MK20DX256', 'MK64FX512', 'MK66FX1M0', 'RP2040', 'STM32F042', 'STM32F072', 'STM32F103', 'STM32F303', 'STM32F401', 'STM32F405', 'STM32F407', 'STM32F411', 'STM32F446', 'STM32G431', 'STM32G474', 'STM32L412', 'STM32L422', 'STM32L432', 'STM32L433', 'STM32L442', 'STM32L443', 'GD32VF103', 'WB32F3G71', 'WB32FQ95' LUFA_PROCESSORS = 'at90usb162', 'atmega16u2', 'atmega32u2', 'atmega16u4', 'atmega32u4', 'at90usb646', 'at90usb647', 'at90usb1286', 'at90usb1287', None VUSB_PROCESSORS = 'atmega32a', 'atmega328p', 'atmega328', 'attiny85' diff --git a/platforms/chibios/chibios_config.h b/platforms/chibios/chibios_config.h index 1571bd5cd39..e5aa8e3d059 100644 --- a/platforms/chibios/chibios_config.h +++ b/platforms/chibios/chibios_config.h @@ -95,7 +95,7 @@ #if defined(MCU_KINETIS) # define CPU_CLOCK KINETIS_SYSCLK_FREQUENCY -# if defined(K20x) || defined(KL2x) +# if defined(K20x) || defined(K60x) || defined(KL2x) # define USE_I2CV1 # define USE_I2CV1_CONTRIB // for some reason a bunch of ChibiOS-Contrib boards only have clock_speed # define USE_GPIOV1 From 1b9491f8f3e676806745ab6f4c38b67bf177a0ee Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sun, 3 Jul 2022 00:23:08 +1000 Subject: [PATCH 07/34] Fixup builds for TzCI (#17538) --- keyboards/ms_sculpt/{sculpt_iso.h => ms_sculpt.h} | 0 keyboards/westm/westm68/rules.mk | 2 ++ keyboards/westm/westm9/rules.mk | 4 +++- 3 files changed, 5 insertions(+), 1 deletion(-) rename keyboards/ms_sculpt/{sculpt_iso.h => ms_sculpt.h} (100%) diff --git a/keyboards/ms_sculpt/sculpt_iso.h b/keyboards/ms_sculpt/ms_sculpt.h similarity index 100% rename from keyboards/ms_sculpt/sculpt_iso.h rename to keyboards/ms_sculpt/ms_sculpt.h diff --git a/keyboards/westm/westm68/rules.mk b/keyboards/westm/westm68/rules.mk index 1f99e378f90..d92a34591f3 100644 --- a/keyboards/westm/westm68/rules.mk +++ b/keyboards/westm/westm68/rules.mk @@ -19,3 +19,5 @@ NKRO_ENABLE = yes # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output + +DEFAULT_FOLDER = westm/westm68/rev2 diff --git a/keyboards/westm/westm9/rules.mk b/keyboards/westm/westm9/rules.mk index ffa13d9fb9f..b8be7c4530a 100644 --- a/keyboards/westm/westm9/rules.mk +++ b/keyboards/westm/westm9/rules.mk @@ -21,4 +21,6 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output OLED_ENABLE = yes # Enable the OLED feature -OLED_DRIVER = SSD1306 # OLED driver \ No newline at end of file +OLED_DRIVER = SSD1306 # OLED driver + +DEFAULT_FOLDER = westm/westm9/rev2 From b9a6126518b29f144eb384fab31029c69503b9c8 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sun, 3 Jul 2022 00:23:21 +1000 Subject: [PATCH 08/34] Revert "[Keyboard]KPrepublic bm80v2 Keyboard ISO support " (#17537) --- keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c | 150 ------------------ keyboards/kprepublic/bm80v2_iso/bm80v2_iso.h | 34 ---- keyboards/kprepublic/bm80v2_iso/config.h | 52 ------ keyboards/kprepublic/bm80v2_iso/info.json | 104 ------------ .../bm80v2_iso/keymaps/default/keymap.c | 34 ---- .../bm80v2_iso/keymaps/via/keymap.c | 43 ----- .../bm80v2_iso/keymaps/via/rules.mk | 2 - keyboards/kprepublic/bm80v2_iso/readme.md | 20 --- keyboards/kprepublic/bm80v2_iso/rules.mk | 22 --- 9 files changed, 461 deletions(-) delete mode 100644 keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c delete mode 100644 keyboards/kprepublic/bm80v2_iso/bm80v2_iso.h delete mode 100644 keyboards/kprepublic/bm80v2_iso/config.h delete mode 100644 keyboards/kprepublic/bm80v2_iso/info.json delete mode 100644 keyboards/kprepublic/bm80v2_iso/keymaps/default/keymap.c delete mode 100644 keyboards/kprepublic/bm80v2_iso/keymaps/via/keymap.c delete mode 100644 keyboards/kprepublic/bm80v2_iso/keymaps/via/rules.mk delete mode 100644 keyboards/kprepublic/bm80v2_iso/readme.md delete mode 100644 keyboards/kprepublic/bm80v2_iso/rules.mk diff --git a/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c b/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c deleted file mode 100644 index 89a20922c17..00000000000 --- a/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c +++ /dev/null @@ -1,150 +0,0 @@ -/* Copyright 2022 bdtc123 * - * 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 "bm80v2_iso.h" - -#ifdef RGB_MATRIX_ENABLE - -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { - {0, CS6_SW1, CS5_SW1, CS4_SW1}, - {0, CS6_SW3, CS5_SW3, CS4_SW3}, - {0, CS6_SW4, CS5_SW4, CS4_SW4}, - {0, CS6_SW5, CS5_SW5, CS4_SW5}, - {0, CS6_SW6, CS5_SW6, CS4_SW6}, - {0, CS6_SW7, CS5_SW7, CS4_SW7}, - {0, CS6_SW8, CS5_SW8, CS4_SW8}, - {0, CS6_SW9, CS5_SW9, CS4_SW9}, - {0, CS21_SW1, CS20_SW1, CS19_SW1}, - {0, CS21_SW2, CS20_SW2, CS19_SW2}, - {0, CS21_SW3, CS20_SW3, CS19_SW3}, - {0, CS21_SW4, CS20_SW4, CS19_SW4}, - {0, CS21_SW5, CS20_SW5, CS19_SW5}, - {0, CS21_SW6, CS20_SW6, CS19_SW6}, - {0, CS21_SW7, CS20_SW7, CS19_SW7}, - {0, CS21_SW8, CS20_SW8, CS19_SW8}, - - - {0, CS9_SW1, CS8_SW1, CS7_SW1}, - {0, CS9_SW2, CS8_SW2, CS7_SW2}, - {0, CS9_SW3, CS8_SW3, CS7_SW3}, - {0, CS9_SW4, CS8_SW4, CS7_SW4}, - {0, CS9_SW5, CS8_SW5, CS7_SW5}, - {0, CS9_SW6, CS8_SW6, CS7_SW6}, - {0, CS9_SW7, CS8_SW7, CS7_SW7}, - {0, CS9_SW8, CS8_SW8, CS7_SW8}, - {0, CS9_SW9, CS8_SW9, CS7_SW9}, - {0,CS24_SW1, CS23_SW1, CS22_SW1}, - {0,CS24_SW2, CS23_SW2, CS22_SW2}, - {0,CS24_SW3, CS23_SW3, CS22_SW3}, - {0,CS24_SW4, CS23_SW4, CS22_SW4}, - {0,CS24_SW5, CS23_SW5, CS22_SW5}, - {0,CS24_SW6, CS23_SW6, CS22_SW6}, - {0,CS24_SW7, CS23_SW7, CS22_SW7}, - {0,CS24_SW8, CS23_SW8, CS22_SW8}, - - {0, CS12_SW1, CS11_SW1, CS10_SW1}, - {0, CS12_SW2, CS11_SW2, CS10_SW2}, - {0, CS12_SW3, CS11_SW3, CS10_SW3}, - {0, CS12_SW4, CS11_SW4, CS10_SW4}, - {0, CS12_SW5, CS11_SW5, CS10_SW5}, - {0, CS12_SW6, CS11_SW6, CS10_SW6}, - {0, CS12_SW7, CS11_SW7, CS10_SW7}, - {0, CS12_SW8, CS11_SW8, CS10_SW8}, - {0, CS12_SW9, CS11_SW9, CS10_SW9}, - {0, CS27_SW1, CS26_SW1, CS25_SW1}, - {0, CS27_SW2, CS26_SW2, CS25_SW2}, - {0, CS27_SW3, CS26_SW3, CS25_SW3}, - {0, CS27_SW4, CS26_SW4, CS25_SW4}, - {0, CS27_SW5, CS26_SW5, CS25_SW5}, - {0, CS27_SW6, CS26_SW6, CS25_SW6}, - {0, CS27_SW7, CS26_SW7, CS25_SW7}, - {0, CS27_SW8, CS26_SW8, CS25_SW8}, - - {0, CS15_SW1, CS14_SW1, CS13_SW1}, - {0, CS15_SW2, CS14_SW2, CS13_SW2}, - {0, CS15_SW3, CS14_SW3, CS13_SW3}, - {0, CS15_SW4, CS14_SW4, CS13_SW4}, - {0, CS15_SW5, CS14_SW5, CS13_SW5}, - {0, CS15_SW6, CS14_SW6, CS13_SW6}, - {0, CS15_SW7, CS14_SW7, CS13_SW7}, - {0, CS15_SW8, CS14_SW8, CS13_SW8}, - {0, CS15_SW9, CS14_SW9, CS13_SW9}, - {0, CS30_SW1, CS29_SW1, CS28_SW1}, - {0, CS30_SW2, CS29_SW2, CS28_SW2}, - {0, CS30_SW3, CS29_SW3, CS28_SW3}, - {0, CS30_SW4, CS29_SW4, CS28_SW4}, - - {0, CS18_SW1, CS17_SW1, CS16_SW1}, - {0, CS18_SW2, CS17_SW2, CS16_SW2}, - {0, CS18_SW3, CS17_SW3, CS16_SW3}, - {0, CS18_SW4, CS17_SW4, CS16_SW4}, - {0, CS18_SW5, CS17_SW5, CS16_SW5}, - {0, CS18_SW6, CS17_SW6, CS16_SW6}, - {0, CS18_SW7, CS17_SW7, CS16_SW7}, - {0, CS18_SW8, CS17_SW8, CS16_SW8}, - {0, CS18_SW9, CS17_SW9, CS16_SW9}, - {0, CS33_SW1, CS32_SW1, CS31_SW1}, - {0, CS33_SW2, CS32_SW2, CS31_SW2}, - {0, CS33_SW3, CS32_SW3, CS31_SW3}, - {0, CS33_SW4, CS32_SW4, CS31_SW4}, - {0, CS33_SW7, CS32_SW7, CS31_SW7}, - - {0, CS3_SW1, CS2_SW1, CS1_SW1}, - {0, CS3_SW2, CS2_SW2, CS1_SW2}, - {0, CS3_SW3, CS2_SW3, CS1_SW3}, - {0, CS3_SW6, CS2_SW6, CS1_SW6}, - {0, CS36_SW2, CS35_SW2, CS34_SW2}, - {0, CS36_SW3, CS35_SW3, CS34_SW3}, - {0, CS36_SW4, CS35_SW4, CS34_SW4}, - {0, CS36_SW5, CS35_SW5, CS34_SW5}, - {0, CS36_SW6, CS35_SW6, CS34_SW6}, - {0, CS36_SW7, CS35_SW7, CS34_SW7}, - {0, CS36_SW8, CS35_SW8, CS34_SW8} - -}; -led_config_t g_led_config = { { - { 0, NO_LED, 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, NO_LED, NO_LED, NO_LED, NO_LED }, - { 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, NO_LED, NO_LED, 76, NO_LED }, - { 77, 78, 79, NO_LED,NO_LED, 80, NO_LED, NO_LED, NO_LED, NO_LED, 81, 82, 83, 84, 85, 86, 87 } -}, -{ - { 7, 5 }, { 31, 5 }, { 43, 5 }, { 55, 5 }, { 67, 5 }, { 85, 5 }, { 97, 5 }, { 109, 5 }, { 121, 5 }, { 139, 5 }, { 151, 5 }, { 163, 5 }, { 175, 5 }, { 193, 5 }, { 205, 5 }, { 217, 5 }, - { 7, 20 }, { 19, 20 }, { 31, 20 }, { 43, 20 }, { 55, 20 }, { 67, 20 }, { 79, 20 }, { 91, 20 }, { 103, 20 }, { 115, 20 }, { 127, 20 }, { 139, 20 }, { 151, 20 }, { 169, 20 }, { 193, 20 }, { 205, 20 }, { 217, 20 }, - { 10, 30 }, { 25, 30 }, { 37, 30 }, { 49, 30 }, { 61, 30 }, { 73, 30 }, { 85, 30 }, { 97, 30 }, { 109, 30 }, { 121, 30 }, { 133, 30 }, { 145, 30 }, { 157, 30 }, { 175, 35 }, { 193, 30 }, { 205, 30 }, { 217, 30 }, - { 11, 39 }, { 28, 39 }, { 40, 39 }, { 52, 39 }, { 64, 39 }, { 76, 39 }, { 88, 39 }, { 100, 39 }, { 112, 39 }, { 124, 39 }, { 136, 39 }, { 148, 39 }, { 168, 39 }, - { 8, 49 }, { 22, 49 }, { 34, 49 }, { 46, 49 }, { 58, 49 }, { 70, 49 }, { 82, 49 }, { 94, 49 }, { 106, 49 }, { 118, 49 }, { 130, 49 }, { 142, 49 }, { 165, 49 }, { 205, 49 }, - { 8, 59 }, { 23, 59 }, { 38, 59 }, { 83, 59 }, { 129, 59 }, { 144, 59 }, { 159, 59 }, { 174, 59 }, { 193, 59 }, { 205, 59 }, { 217, 59 } -}, -{ 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, - 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1 -} }; - - -__attribute__ ((weak)) -void rgb_matrix_indicators_user(void) -{ - if (host_keyboard_led_state().caps_lock) - { - rgb_matrix_set_color(50, 0xFF, 0xFF, 0xFF); - } -} -#endif - diff --git a/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.h b/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.h deleted file mode 100644 index eeb1df73724..00000000000 --- a/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright 2022 bdtc123 * - * 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_tkl_iso( \ - K0_0, K0_2, K0_3, K0_4, K0_5, K0_6,K0_7, K0_8, K0_9, K0_A, K0_B, K0_C, K0_D, K0_E, K0_F, K0_10, \ - K1_0, K1_1, K1_2, K1_3, K1_4, K1_5, K1_6, K1_7, K1_8, K1_9, K1_A, K1_B, K1_C, K1_D, K1_E, K1_F, K1_10, \ - K2_0, K2_1, K2_2, K2_3, K2_4, K2_5, K2_6, K2_7, K2_8, K2_9, K2_A, K2_B, K2_C, K2_D, K2_E, K2_F, K2_10, \ - K3_0, K3_1, K3_2, K3_3, K3_4, K3_5, K3_6, K3_7, K3_8, K3_9, K3_A, K3_B, K3_C, \ - K4_0, K4_1, K4_2, K4_3, K4_4, K4_5, K4_6, K4_7, K4_8, K4_9, K4_A, K4_B, K4_C, K4_F, \ - K5_0, K5_1, K5_2, K5_5, K5_A, K5_B, K5_C, K5_D, K5_E, K5_F, K5_10 \ -) { \ - { K0_0, KC_NO, K0_2, K0_3, K0_4, K0_5, K0_6, K0_7, K0_8, K0_9, K0_A, K0_B, K0_C, K0_D, K0_E, K0_F, K0_10 }, \ - { K1_0, K1_1, K1_2, K1_3, K1_4, K1_5, K1_6, K1_7, K1_8, K1_9, K1_A, K1_B, K1_C, K1_D, K1_E, K1_F, K1_10 }, \ - { K2_0, K2_1, K2_2, K2_3, K2_4, K2_5, K2_6, K2_7, K2_8, K2_9, K2_A, K2_B, K2_C, K2_D, K2_E, K2_F, K2_10 }, \ - { K3_0, K3_1, K3_2, K3_3, K3_4, K3_5, K3_6, K3_7, K3_8, K3_9, K3_A, K3_B, K3_C, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { K4_0, K4_1, K4_2, K4_3, K4_4, K4_5, K4_6, K4_7, K4_8, K4_9, K4_A, K4_B, K4_C, KC_NO, KC_NO, K4_F, KC_NO }, \ - { K5_0, K5_1, K5_2, KC_NO, KC_NO, K5_5, KC_NO, KC_NO, KC_NO, KC_NO, K5_A, K5_B, K5_C, K5_D, K5_E, K5_F, K5_10 } \ -} - diff --git a/keyboards/kprepublic/bm80v2_iso/config.h b/keyboards/kprepublic/bm80v2_iso/config.h deleted file mode 100644 index 80ce1e84e31..00000000000 --- a/keyboards/kprepublic/bm80v2_iso/config.h +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2022 bdtc123 * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4B50 -#define PRODUCT_ID 0x1142 -#define DEVICE_VER 0x0002 -#define MANUFACTURER KP republic -#define PRODUCT bm80v2_iso - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 17 -#define MATRIX_ROW_PINS { C7, C6, B6, F5, F7, F6 } -#define MATRIX_COL_PINS { E6, F0, F1, F4, D7, D6, B7, B1, B0, B2, B3, D3, D5, D4, D2, B4, B5 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL -#define USB_POLLING_INTERVAL_MS 1 - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended -#define RGB_MATRIX_KEYPRESSES -#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL -#define DRIVER_ADDR_1 0b0110000 -#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons. -#define DRIVER_COUNT 1 -#define DRIVER_1_LED_TOTAL 88 -#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL - -#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 diff --git a/keyboards/kprepublic/bm80v2_iso/info.json b/keyboards/kprepublic/bm80v2_iso/info.json deleted file mode 100644 index e7813d27b14..00000000000 --- a/keyboards/kprepublic/bm80v2_iso/info.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "keyboard_name": "bm80v2_iso", - "url": "", - "maintainer": "qmk", - "layouts": { - "LAYOUT_tkl_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":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":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":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":0, "y":5.5, "w":1.25}, - { "x":1.25, "y":5.5, "w":1.25}, - { "x":2.5, "y":5.5, "w":1.25}, - { "x":3.75, "y":5.5, "w":6.25}, - { "x":10, "y":5.5, "w":1.25}, - { "x":11.25, "y":5.5, "w":1.25}, - { "x":12.5, "y":5.5, "w":1.25}, - { "x":13.75, "y":5.5, "w":1.25}, - { "x":15.25, "y":5.5}, - { "x":16.25, "y":5.5}, - { "x":17.25, "y":5.5} - ] - } - } -} diff --git a/keyboards/kprepublic/bm80v2_iso/keymaps/default/keymap.c b/keyboards/kprepublic/bm80v2_iso/keymaps/default/keymap.c deleted file mode 100644 index 0fe451b5499..00000000000 --- a/keyboards/kprepublic/bm80v2_iso/keymaps/default/keymap.c +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2021 Yizhen Liu (@edwardslau) -// SPDX-License-Identifier: GPL-2.0 -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_65( - KC_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_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT - ), - [1] = LAYOUT_65( - KC_GESC, 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, RESET, - _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, _______, _______, - KC_CAPS, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, _______, - _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______ - ), - [2] = LAYOUT_65( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [3] = LAYOUT_65( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; diff --git a/keyboards/kprepublic/bm80v2_iso/keymaps/via/keymap.c b/keyboards/kprepublic/bm80v2_iso/keymaps/via/keymap.c deleted file mode 100644 index a8a28ac677f..00000000000 --- a/keyboards/kprepublic/bm80v2_iso/keymaps/via/keymap.c +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2021 Yizhen Liu (@edwardslau) -// SPDX-License-Identifier: GPL-2.0 -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [0] = LAYOUT_tkl_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_SLCK, 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_ENT, 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_BSLS, - KC_LSFT, KC_SPC, 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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [1] = LAYOUT_tkl_iso( - RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [2] = LAYOUT_tkl_iso( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [3] = LAYOUT_tkl_iso( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) - -}; diff --git a/keyboards/kprepublic/bm80v2_iso/keymaps/via/rules.mk b/keyboards/kprepublic/bm80v2_iso/keymaps/via/rules.mk deleted file mode 100644 index 36b7ba9cbc9..00000000000 --- a/keyboards/kprepublic/bm80v2_iso/keymaps/via/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -VIA_ENABLE = yes -LTO_ENABLE = yes diff --git a/keyboards/kprepublic/bm80v2_iso/readme.md b/keyboards/kprepublic/bm80v2_iso/readme.md deleted file mode 100644 index 6e353137ba6..00000000000 --- a/keyboards/kprepublic/bm80v2_iso/readme.md +++ /dev/null @@ -1,20 +0,0 @@ -# %bm80v2_iso% - -A 80% ISO hotswap inswitch RGB keyboard. - -* Keyboard Maintainer: [%bdtc123%](https://github.com/bdtc123) -* Hardware Supported: BM80V2_ISO -* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm80-iso-bm80rgb-80-rgb-hot-swappable-custom-mechanical-keyboard-pcb-programmed-rgb-switch-underglow-type-c-qmk-via?_pos=9&_sid=b43edd6ac&_ss=r) - -Make example for this keyboard (after setting up your build environment): - - make kprepublic bm80v2_iso:default - -Flashing example for this keyboard: - - make kprepublic bm80v2_iso: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 -* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead diff --git a/keyboards/kprepublic/bm80v2_iso/rules.mk b/keyboards/kprepublic/bm80v2_iso/rules.mk deleted file mode 100644 index 75ddddf9463..00000000000 --- a/keyboards/kprepublic/bm80v2_iso/rules.mk +++ /dev/null @@ -1,22 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration -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 = yes # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -RGB_MATRIX_ENABLE = yes # Use RGB matrix -RGB_MATRIX_DRIVER = IS31FL3741 -LTO_ENABLE = yes -LAYOUTS = tkl_iso From 9b8ae057961b5221291f6c51b79574cdd61613b8 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 2 Jul 2022 07:32:09 -0700 Subject: [PATCH 09/34] Correct QMK Configurator layout data for Kin80 (#17526) --- keyboards/kin80/info.json | 194 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 188 insertions(+), 6 deletions(-) diff --git a/keyboards/kin80/info.json b/keyboards/kin80/info.json index f599382d3de..a8d846340eb 100644 --- a/keyboards/kin80/info.json +++ b/keyboards/kin80/info.json @@ -1,6 +1,6 @@ { - "keyboard_name": "Kin80", - "url": "https://github.com/DmNosachev/kinesis80", + "keyboard_name": "Kin80", + "url": "https://github.com/DmNosachev/kinesis80", "maintainer": "DmNosachev", "usb": { "vid": "0xFEED", @@ -10,10 +10,192 @@ "diode_direction": "COL2ROW", "layouts": { "LAYOUT": { - "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":11.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, {"x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":0, "y":1.25, "w":1.25}, {"x":1.25, "y":1.25}, {"x":2.25, "y":1.25}, {"x":3.25, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25, "w":1.25}, {"x":0, "y":2.25, "w":1.25}, {"x":1.25, "y":2.25}, {"x":2.25, "y":2.25}, {"x":3.25, "y":2.25}, {"x":4.25, "y":2.25}, {"x":5.25, "y":2.25}, {"x":11.25, "y":2.25}, {"x":12.25, "y":2.25}, {"x":13.25, "y":2.25}, {"x":14.25, "y":2.25}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25, "w":1.25}, {"x":0, "y":3.25, "w":1.25}, {"x":1.25, "y":3.25}, {"x":2.25, "y":3.25}, {"x":3.25, "y":3.25}, {"x":4.25, "y":3.25}, {"x":5.25, "y":3.25}, {"x":11.25, "y":3.25}, {"x":12.25, "y":3.25}, {"x":13.25, "y":3.25}, {"x":14.25, "y":3.25}, {"x":15.25, "y":3.25}, {"x":16.25, "y":3.25, "w":1.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":11.25, "y":4.25}, {"x":12.25, "y":4.25}, {"x":13.25, "y":4.25}, {"x":14.25, "y":4.25}, {"x":15.25, "y":4.25}, {"x":16.25, "y":4.25, "w":1.25}, {"x":1.25, "y":5.25}, {"x":2.25, "y":5.25}, {"x":3.25, "y":5.25}, {"x":4.25, "y":5.25}, {"x":12.25, "y":5.25}, {"x":13.25, "y":5.25}, {"x":14.25, "y":5.25}, {"x":15.25, "y":5.25}, {"x":6.25, "y":6}, {"x":7.25, "y":6}, {"x":9.25, "y":6}, {"x":10.25, "y":6}, {"x":5.25, "y":7, "h":2}, {"x":6.25, "y":7, "h":2}, {"x":7.25, "y":7}, {"x":9.25, "y":7}, {"x":10.25, "y":7, "h":2}, {"x":11.25, "y":7, "h":2}, {"x":7.25, "y":8}, {"x":9.25, "y":8}] + "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":11.5, "y":0}, + {"x":12.5, "y":0}, + {"x":13.5, "y":0}, + {"x":14.5, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + + {"x":0, "y":1.25, "w":1.25}, + {"x":1.25, "y":1.25}, + {"x":2.25, "y":1.25}, + {"x":3.25, "y":1.25}, + {"x":4.25, "y":1.25}, + {"x":5.25, "y":1.25}, + {"x":11.25, "y":1.25}, + {"x":12.25, "y":1.25}, + {"x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25, "w":1.25}, + + {"x":0, "y":2.25, "w":1.25}, + {"x":1.25, "y":2.25}, + {"x":2.25, "y":2.25}, + {"x":3.25, "y":2.25}, + {"x":4.25, "y":2.25}, + {"x":5.25, "y":2.25}, + {"x":11.25, "y":2.25}, + {"x":12.25, "y":2.25}, + {"x":13.25, "y":2.25}, + {"x":14.25, "y":2.25}, + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25, "w":1.25}, + + {"x":0, "y":3.25, "w":1.25}, + {"x":1.25, "y":3.25}, + {"x":2.25, "y":3.25}, + {"x":3.25, "y":3.25}, + {"x":4.25, "y":3.25}, + {"x":5.25, "y":3.25}, + {"x":11.25, "y":3.25}, + {"x":12.25, "y":3.25}, + {"x":13.25, "y":3.25}, + {"x":14.25, "y":3.25}, + {"x":15.25, "y":3.25}, + {"x":16.25, "y":3.25, "w":1.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":11.25, "y":4.25}, + {"x":12.25, "y":4.25}, + {"x":13.25, "y":4.25}, + {"x":14.25, "y":4.25}, + {"x":15.25, "y":4.25}, + {"x":16.25, "y":4.25, "w":1.25}, + + {"x":1.25, "y":5.25}, + {"x":2.25, "y":5.25}, + {"x":3.25, "y":5.25}, + {"x":4.25, "y":5.25}, + {"x":12.25, "y":5.25}, + {"x":13.25, "y":5.25}, + {"x":14.25, "y":5.25}, + {"x":15.25, "y":5.25}, + + {"x":6.25, "y":6}, + {"x":7.25, "y":6}, + {"x":9.25, "y":6}, + {"x":10.25, "y":6}, + + {"x":7.25, "y":7}, + {"x":9.25, "y":7}, + + {"x":5.25, "y":7, "h":2}, + {"x":6.25, "y":7, "h":2}, + {"x":7.25, "y":8}, + {"x":9.25, "y":8}, + {"x":10.25, "y":7, "h":2}, + {"x":11.25, "y":7, "h":2} + ] }, - "LAYOUT_all": { - "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":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":16, "y":0}, {"x":17, "y":0}, {"x":0, "y":1.25, "w":1.25}, {"x":1.25, "y":1.25}, {"x":2.25, "y":1.25}, {"x":3.25, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":11.75, "y":1.25}, {"x":12.75, "y":1.25}, {"x":13.75, "y":1.25}, {"x":14.75, "y":1.25}, {"x":15.75, "y":1.25}, {"x":16.75, "y":1.25, "w":1.25}, {"x":0, "y":2.25, "w":1.25}, {"x":1.25, "y":2.25}, {"x":2.25, "y":2.25}, {"x":3.25, "y":2.25}, {"x":4.25, "y":2.25}, {"x":5.25, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25, "w":1.25}, {"x":0, "y":3.25, "w":1.25}, {"x":1.25, "y":3.25}, {"x":2.25, "y":3.25}, {"x":3.25, "y":3.25}, {"x":4.25, "y":3.25}, {"x":5.25, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25}, {"x":13.75, "y":3.25}, {"x":14.75, "y":3.25}, {"x":15.75, "y":3.25}, {"x":16.75, "y":3.25, "w":1.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":11.75, "y":4.25}, {"x":12.75, "y":4.25}, {"x":13.75, "y":4.25}, {"x":14.75, "y":4.25}, {"x":15.75, "y":4.25}, {"x":16.75, "y":4.25, "w":1.25}, {"x":0.25, "y":5.25}, {"x":1.25, "y":5.25}, {"x":2.25, "y":5.25}, {"x":3.25, "y":5.25}, {"x":4.25, "y":5.25}, {"x":5.25, "y":5.25}, {"x":11.75, "y":5.25}, {"x":12.75, "y":5.25}, {"x":13.75, "y":5.25}, {"x":14.75, "y":5.25}, {"x":15.75, "y":5.25}, {"x":16.75, "y":5.25}, {"x":6.5, "y":6}, {"x":7.5, "y":6}, {"x":9.5, "y":6}, {"x":10.5, "y":6}, {"x":5.25, "y":7, "h":2}, {"x":6.25, "y":7, "h":2}, {"x":7.25, "y":7}, {"x":9.5, "y":7}, {"x":10.5, "y":7, "h":2}, {"x":11.5, "y":7, "h":2}, {"x":7.25, "y":8}, {"x":9.5, "y":8}] + "LAYOUT_all": { + "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":11.5, "y":0}, + {"x":12.5, "y":0}, + {"x":13.5, "y":0}, + {"x":14.5, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + + {"x":0, "y":1.25, "w":1.25}, + {"x":1.25, "y":1.25}, + {"x":2.25, "y":1.25}, + {"x":3.25, "y":1.25}, + {"x":4.25, "y":1.25}, + {"x":5.25, "y":1.25}, + {"x":11.25, "y":1.25}, + {"x":12.25, "y":1.25}, + {"x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25, "w":1.25}, + + {"x":0, "y":2.25, "w":1.25}, + {"x":1.25, "y":2.25}, + {"x":2.25, "y":2.25}, + {"x":3.25, "y":2.25}, + {"x":4.25, "y":2.25}, + {"x":5.25, "y":2.25}, + {"x":11.25, "y":2.25}, + {"x":12.25, "y":2.25}, + {"x":13.25, "y":2.25}, + {"x":14.25, "y":2.25}, + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25, "w":1.25}, + + {"x":0, "y":3.25, "w":1.25}, + {"x":1.25, "y":3.25}, + {"x":2.25, "y":3.25}, + {"x":3.25, "y":3.25}, + {"x":4.25, "y":3.25}, + {"x":5.25, "y":3.25}, + {"x":11.25, "y":3.25}, + {"x":12.25, "y":3.25}, + {"x":13.25, "y":3.25}, + {"x":14.25, "y":3.25}, + {"x":15.25, "y":3.25}, + {"x":16.25, "y":3.25, "w":1.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":11.25, "y":4.25}, + {"x":12.25, "y":4.25}, + {"x":13.25, "y":4.25}, + {"x":14.25, "y":4.25}, + {"x":15.25, "y":4.25}, + {"x":16.25, "y":4.25, "w":1.25}, + + {"x":0.25, "y":5.25}, + {"x":1.25, "y":5.25}, + {"x":2.25, "y":5.25}, + {"x":3.25, "y":5.25}, + {"x":4.25, "y":5.25}, + {"x":5.25, "y":5.25}, + {"x":11.25, "y":5.25}, + {"x":12.25, "y":5.25}, + {"x":13.25, "y":5.25}, + {"x":14.25, "y":5.25}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + + {"x":6.25, "y":6}, + {"x":7.25, "y":6}, + {"x":9.25, "y":6}, + {"x":10.25, "y":6}, + + {"x":7.25, "y":7}, + {"x":9.25, "y":7}, + + {"x":5.25, "y":7, "h":2}, + {"x":6.25, "y":7, "h":2}, + {"x":7.25, "y":8}, + {"x":9.25, "y":8}, + {"x":10.25, "y":7, "h":2}, + {"x":11.25, "y":7, "h":2} + ] } } -} \ No newline at end of file +} From f346c8400c1c0e994aaa598b7bb075e4c51f8174 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sun, 3 Jul 2022 00:47:28 +1000 Subject: [PATCH 10/34] Update ChibiOS-Contrib (#17540) --- lib/chibios-contrib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/chibios-contrib b/lib/chibios-contrib index 2a6b73ff51b..2bfb681d68d 160000 --- a/lib/chibios-contrib +++ b/lib/chibios-contrib @@ -1 +1 @@ -Subproject commit 2a6b73ff51baf89083a220b6692a04ca2cae8750 +Subproject commit 2bfb681d68df4294f73847dba2cf2218b21a50e7 From 18a1cbce7570bdec715e5aa3556fe1602d2d0d09 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 2 Jul 2022 10:50:54 -0700 Subject: [PATCH 11/34] Mikeneko 65 QMK Configurator touch-up and Community Layout Support (#17542) * info.json: apply friendly formatting * info.json: remove dead space from Configurator rendering * rename LAYOUT_all to LAYOUT_65_ansi_blocker * rules.mk: enable Community Layout support --- keyboards/mikeneko65/info.json | 79 ++++++++++++++++++- keyboards/mikeneko65/keymaps/default/keymap.c | 4 +- keyboards/mikeneko65/keymaps/via/keymap.c | 8 +- keyboards/mikeneko65/mikeneko65.h | 2 +- keyboards/mikeneko65/rules.mk | 2 + 5 files changed, 86 insertions(+), 9 deletions(-) diff --git a/keyboards/mikeneko65/info.json b/keyboards/mikeneko65/info.json index 458b29df48a..450d4784227 100644 --- a/keyboards/mikeneko65/info.json +++ b/keyboards/mikeneko65/info.json @@ -2,9 +2,84 @@ "keyboard_name": "Mikeneko 65", "url": "https://github.com/takishim/mikeneko65", "maintainer": "takishim", + "layout_aliases": { + "LAYOUT_all": "LAYOUT_65_ansi_blocker" + }, "layouts": { - "LAYOUT_all": { - "layout": [{"x":0, "y":0.25}, {"x":1, "y":0.25}, {"x":2, "y":0.25}, {"x":3, "y":0.25}, {"x":4, "y":0.25}, {"x":5, "y":0.25}, {"x":6, "y":0.25}, {"x":7, "y":0.25}, {"x":8, "y":0.25}, {"x":9, "y":0.25}, {"x":10, "y":0.25}, {"x":11, "y":0.25}, {"x":12, "y":0.25}, {"x":13, "y":0.25, "w":2}, {"x":15, "y":0.25}, {"x":0, "y":1.25, "w":1.5}, {"x":1.5, "y":1.25}, {"x":2.5, "y":1.25}, {"x":3.5, "y":1.25}, {"x":4.5, "y":1.25}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25}, {"x":7.5, "y":1.25}, {"x":8.5, "y":1.25}, {"x":9.5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.25}, {"x":12.5, "y":1.25}, {"x":13.5, "y":1.25, "w":1.5}, {"x":15, "y":1.25}, {"x":0, "y":2.25, "w":1.75}, {"x":1.75, "y":2.25}, {"x":2.75, "y":2.25}, {"x":3.75, "y":2.25}, {"x":4.75, "y":2.25}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25, "w":2.25}, {"x":15, "y":2.25}, {"x":0, "y":3.25, "w":2.25}, {"x":2.25, "y":3.25}, {"x":3.25, "y":3.25}, {"x":4.25, "y":3.25}, {"x":5.25, "y":3.25}, {"x":6.25, "y":3.25}, {"x":7.25, "y":3.25}, {"x":8.25, "y":3.25}, {"x":9.25, "y":3.25}, {"x":10.25, "y":3.25}, {"x":11.25, "y":3.25}, {"x":12.25, "y":3.25, "w":1.75}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25, "w":1.25}, {"x":2.5, "y":4.25, "w":1.25}, {"x":3.75, "y":4.25, "w":6.25}, {"x":10, "y":4.25, "w":1.25}, {"x":11.25, "y":4.25, "w":1.25}, {"x":13, "y":4.25}, {"x":14, "y":4.25}, {"x":15, "y":4.25}] + "LAYOUT_65_ansi_blocker": { + "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":15, "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":15, "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, "w":2.25}, + {"x":15, "y":2}, + + {"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":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] } } } diff --git a/keyboards/mikeneko65/keymaps/default/keymap.c b/keyboards/mikeneko65/keymaps/default/keymap.c index 108ba0beb02..60b46db34ad 100644 --- a/keyboards/mikeneko65/keymaps/default/keymap.c +++ b/keyboards/mikeneko65/keymaps/default/keymap.c @@ -22,14 +22,14 @@ enum layer_names { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_all( + [_BASE] = LAYOUT_65_ansi_blocker( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_END, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT ), - [_FN] = LAYOUT_all( + [_FN] = LAYOUT_65_ansi_blocker( 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_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/mikeneko65/keymaps/via/keymap.c b/keyboards/mikeneko65/keymaps/via/keymap.c index 2b9d125809f..b5cc1a0dd15 100644 --- a/keyboards/mikeneko65/keymaps/via/keymap.c +++ b/keyboards/mikeneko65/keymaps/via/keymap.c @@ -24,28 +24,28 @@ enum layer_names { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_L0] = LAYOUT_all( + [_L0] = LAYOUT_65_ansi_blocker( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_END, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_L1), KC_LEFT, KC_DOWN, KC_RGHT ), - [_L1] = LAYOUT_all( + [_L1] = LAYOUT_65_ansi_blocker( 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_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [_L2] = LAYOUT_all( + [_L2] = LAYOUT_65_ansi_blocker( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [_L3] = LAYOUT_all( + [_L3] = LAYOUT_65_ansi_blocker( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/mikeneko65/mikeneko65.h b/keyboards/mikeneko65/mikeneko65.h index 5f4a913fc9b..9273b0fdbcc 100644 --- a/keyboards/mikeneko65/mikeneko65.h +++ b/keyboards/mikeneko65/mikeneko65.h @@ -19,7 +19,7 @@ #include "quantum.h" -#define LAYOUT_all( \ +#define LAYOUT_65_ansi_blocker( \ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, \ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k214, \ diff --git a/keyboards/mikeneko65/rules.mk b/keyboards/mikeneko65/rules.mk index 1275531ef6d..59fa2e87f8b 100644 --- a/keyboards/mikeneko65/rules.mk +++ b/keyboards/mikeneko65/rules.mk @@ -16,3 +16,5 @@ 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 + +LAYOUTS = 65_ansi_blocker From 40d295abf69a79f67628e06599bfdbe50169aa4c Mon Sep 17 00:00:00 2001 From: Evelien Dekkers Date: Sat, 2 Jul 2022 20:09:26 +0200 Subject: [PATCH 12/34] [Keyboard] Add nt-650 (#17471) Co-authored-by: Joel Challis Co-authored-by: Ryan --- keyboards/evyd13/nt650/config.h | 22 ++++ keyboards/evyd13/nt650/info.json | 104 ++++++++++++++++++ .../evyd13/nt650/keymaps/default/keymap.c | 69 ++++++++++++ keyboards/evyd13/nt650/keymaps/via/config.h | 6 + keyboards/evyd13/nt650/keymaps/via/keymap.c | 32 ++++++ keyboards/evyd13/nt650/keymaps/via/rules.mk | 1 + keyboards/evyd13/nt650/readme.md | 27 +++++ keyboards/evyd13/nt650/rules.mk | 1 + 8 files changed, 262 insertions(+) create mode 100644 keyboards/evyd13/nt650/config.h create mode 100644 keyboards/evyd13/nt650/info.json create mode 100644 keyboards/evyd13/nt650/keymaps/default/keymap.c create mode 100644 keyboards/evyd13/nt650/keymaps/via/config.h create mode 100644 keyboards/evyd13/nt650/keymaps/via/keymap.c create mode 100644 keyboards/evyd13/nt650/keymaps/via/rules.mk create mode 100644 keyboards/evyd13/nt650/readme.md create mode 100644 keyboards/evyd13/nt650/rules.mk diff --git a/keyboards/evyd13/nt650/config.h b/keyboards/evyd13/nt650/config.h new file mode 100644 index 00000000000..91cf8ceccbc --- /dev/null +++ b/keyboards/evyd13/nt650/config.h @@ -0,0 +1,22 @@ +// Copyright 2022 Evelien Dekkers (@evyd13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define LED_PIN_ON_STATE 0 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/evyd13/nt650/info.json b/keyboards/evyd13/nt650/info.json new file mode 100644 index 00000000000..ca134daa2b3 --- /dev/null +++ b/keyboards/evyd13/nt650/info.json @@ -0,0 +1,104 @@ +{ + "manufacturer": "Evelien Dekkers", + "keyboard_name": "nt650", + "maintainer": "evyd13", + "bootloader": "atmel-dfu", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "E6", + "scroll_lock": "E2" + }, + "matrix_pins": { + "cols": ["F4", "F5", "F6", "C7", "C6", "B3", "B1", "B2", "B7", "D7", "B5", "B4", "D0", "B6", "D1"], + "rows": ["F7", "D6", "D4", "F1", "D5", "F0", "D3", "D2"] + }, + "processor": "atmega32u4", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0xD5DF", + "vid": "0x4705" + }, + "layout_aliases": { + "LAYOUT_all": "LAYOUT_ansi_split_space" + }, + "layouts": { + "LAYOUT_ansi_split_space": { + "layout": [ + {"matrix": [0, 0], "label":"ESC", "x":0, "y":0}, + {"matrix": [1, 0], "label":"1", "x":1, "y":0}, + {"matrix": [1, 1], "label":"2", "x":2, "y":0}, + {"matrix": [1, 2], "label":"3", "x":3, "y":0}, + {"matrix": [1, 3], "label":"4", "x":4, "y":0}, + {"matrix": [2, 3], "label":"5", "x":5, "y":0}, + {"matrix": [2, 4], "label":"6", "x":6, "y":0}, + {"matrix": [1, 4], "label":"7", "x":7, "y":0}, + {"matrix": [1, 5], "label":"8", "x":8, "y":0}, + {"matrix": [1, 6], "label":"9", "x":9, "y":0}, + {"matrix": [1, 7], "label":"0", "x":10, "y":0}, + {"matrix": [2, 7], "label":"MINS", "x":11, "y":0}, + {"matrix": [2, 5], "label":"EQL", "x":12, "y":0}, + {"matrix": [3, 8], "label":"BSPC", "x":13, "y":0, "w":2}, + {"matrix": [3, 0], "label":"TAB", "x":0, "y":1, "w":1.5}, + {"matrix": [5, 0], "label":"Q", "x":1.5, "y":1}, + {"matrix": [5, 1], "label":"W", "x":2.5, "y":1}, + {"matrix": [5, 2], "label":"E", "x":3.5, "y":1}, + {"matrix": [5, 3], "label":"R", "x":4.5, "y":1}, + {"matrix": [3, 3], "label":"T", "x":5.5, "y":1}, + {"matrix": [3, 4], "label":"Y", "x":6.5, "y":1}, + {"matrix": [5, 4], "label":"U", "x":7.5, "y":1}, + {"matrix": [5, 5], "label":"I", "x":8.5, "y":1}, + {"matrix": [5, 6], "label":"O", "x":9.5, "y":1}, + {"matrix": [5, 7], "label":"P", "x":10.5, "y":1}, + {"matrix": [3, 7], "label":"LBRC", "x":11.5, "y":1}, + {"matrix": [3, 5], "label":"RBRC", "x":12.5, "y":1}, + {"matrix": [4, 8], "label":"BSLS", "x":13.5, "y":1, "w":1.5}, + {"matrix": [3, 1], "label":"CAPS", "x":0, "y":2, "w":1.75}, + {"matrix": [4, 0], "label":"A", "x":1.75, "y":2}, + {"matrix": [4, 1], "label":"S", "x":2.75, "y":2}, + {"matrix": [4, 2], "label":"D", "x":3.75, "y":2}, + {"matrix": [4, 3], "label":"F", "x":4.75, "y":2}, + {"matrix": [0, 3], "label":"G", "x":5.75, "y":2}, + {"matrix": [0, 4], "label":"H", "x":6.75, "y":2}, + {"matrix": [4, 4], "label":"J", "x":7.75, "y":2}, + {"matrix": [4, 5], "label":"K", "x":8.75, "y":2}, + {"matrix": [4, 6], "label":"L", "x":9.75, "y":2}, + {"matrix": [4, 7], "label":"SCLN", "x":10.75, "y":2}, + {"matrix": [0, 7], "label":"QUOT", "x":11.75, "y":2}, + {"matrix": [6, 8], "label":"ENT", "x":12.75, "y":2, "w":2.25}, + {"matrix": [3, 10], "label":"LSFT", "x":0, "y":3, "w":2.25}, + {"matrix": [6, 0], "label":"Z", "x":2.25, "y":3}, + {"matrix": [6, 1], "label":"X", "x":3.25, "y":3}, + {"matrix": [6, 2], "label":"C", "x":4.25, "y":3}, + {"matrix": [6, 3], "label":"V", "x":5.25, "y":3}, + {"matrix": [7, 3], "label":"B", "x":6.25, "y":3}, + {"matrix": [7, 4], "label":"N", "x":7.25, "y":3}, + {"matrix": [6, 4], "label":"M", "x":8.25, "y":3}, + {"matrix": [6, 5], "label":"COMM", "x":9.25, "y":3}, + {"matrix": [6, 6], "label":"DOT", "x":10.25, "y":3}, + {"matrix": [7, 7], "label":"SLSH", "x":11.25, "y":3}, + {"matrix": [4, 10], "label":"RSFT", "x":12.25, "y":3, "w":1.75}, + {"matrix": [3, 9], "label":"APP", "x":14, "y":3}, + {"matrix": [2, 11], "label":"LCTL", "x":0, "y":4, "w":1.25}, + {"matrix": [3, 11], "label":"LGUI", "x":1.25, "y":4}, + {"matrix": [0, 9], "label":"LALT", "x":2.25, "y":4, "w":1.25}, + {"matrix": [0, 13], "label":"SPC", "x":3.5, "y":4, "w":3}, + {"matrix": [6, 9], "label":"SPC", "x":6.5, "y":4, "w":3}, + {"matrix": [7, 9], "label":"RALT", "x":9.5, "y":4, "w":1.25}, + {"matrix": [6, 11], "label":"RCTL", "x":10.75, "y":4}, + {"matrix": [0, 12], "label":"UP", "x":13, "y":4}, + {"matrix": [7, 12], "label":"LEFT", "x":12, "y":5}, + {"matrix": [7, 13], "label":"DOWN", "x":13, "y":5}, + {"matrix": [7, 14], "label":"RGHT", "x":14, "y":5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/evyd13/nt650/keymaps/default/keymap.c b/keyboards/evyd13/nt650/keymaps/default/keymap.c new file mode 100644 index 00000000000..a3e6de5a5e2 --- /dev/null +++ b/keyboards/evyd13/nt650/keymaps/default/keymap.c @@ -0,0 +1,69 @@ +// Copyright 2022 Evelien Dekkers (@evyd13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability. +// 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, and you can also skip them entirely +// and just use numbers. +enum layer_names { + _BASE, + _FUNC, + _LOCK, + _XTRA +}; + +#define LOCK_LED_PIN B0 +#define GRV_TG TG(_LOCK) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_ansi_split_space( + 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_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(_FUNC), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_UP, + KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FUNC] = LAYOUT_ansi_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, _______, + _______, GRV_TG, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_APP, _______, + _______, _______, _______ + ), + [_LOCK] = LAYOUT_ansi_split_space( + KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______ + ), + [_XTRA] = LAYOUT_ansi_split_space( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______ + ) +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + setPinOutput(LOCK_LED_PIN); + switch (get_highest_layer(state)) { + case _LOCK: + writePin(LOCK_LED_PIN, 0); + break; + default: // for any other layers, or the default layer + writePin(LOCK_LED_PIN, 1); + break; + } + return state; +} diff --git a/keyboards/evyd13/nt650/keymaps/via/config.h b/keyboards/evyd13/nt650/keymaps/via/config.h new file mode 100644 index 00000000000..fe36d025753 --- /dev/null +++ b/keyboards/evyd13/nt650/keymaps/via/config.h @@ -0,0 +1,6 @@ +// Copyright 2022 Evelien Dekkers (@evyd13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 \ No newline at end of file diff --git a/keyboards/evyd13/nt650/keymaps/via/keymap.c b/keyboards/evyd13/nt650/keymaps/via/keymap.c new file mode 100644 index 00000000000..2d835522a75 --- /dev/null +++ b/keyboards/evyd13/nt650/keymaps/via/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2022 Evelien Dekkers (@evyd13) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ansi_split_space( + 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_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_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_UP, + KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_ansi_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_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_APP, _______, + _______, _______, _______ + ), + [2] = LAYOUT_ansi_split_space( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______ + ) +}; diff --git a/keyboards/evyd13/nt650/keymaps/via/rules.mk b/keyboards/evyd13/nt650/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/evyd13/nt650/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/evyd13/nt650/readme.md b/keyboards/evyd13/nt650/readme.md new file mode 100644 index 00000000000..b4684a94b64 --- /dev/null +++ b/keyboards/evyd13/nt650/readme.md @@ -0,0 +1,27 @@ +# nt650 + +![nt650](https://i.imgur.com/z0Xi6qoh.png) + +A replacement controller PCB for the Leopold FC650M. + +* Keyboard Maintainer: [Evelien Dekkers](https://github.com/evyd13) +* Hardware Supported: nt-650 PCB +* Hardware Availability: [Open source on GitHub](https://github.com/evyd13/nt-series/tree/main/nt-650) + +Make example for this keyboard (after setting up your build environment): + + make evyd13/nt650:default + +Flashing example for this keyboard: + + make evyd13/nt650: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 `RESET` if it is available diff --git a/keyboards/evyd13/nt650/rules.mk b/keyboards/evyd13/nt650/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/evyd13/nt650/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 4804b73540186152d61cf08d5e80cd59c637aa0c Mon Sep 17 00:00:00 2001 From: Ciutadellla Date: Sat, 2 Jul 2022 21:09:21 +0200 Subject: [PATCH 13/34] Update info.json (#17530) Change to correct keyboard name from reviung31 to reviung41 --- keyboards/reviung/reviung41/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/reviung/reviung41/info.json b/keyboards/reviung/reviung41/info.json index ff9e11b939e..d640c866114 100644 --- a/keyboards/reviung/reviung41/info.json +++ b/keyboards/reviung/reviung41/info.json @@ -1,5 +1,5 @@ { - "keyboard_name": "reviung39", + "keyboard_name": "reviung41", "url": "", "maintainer": "gtips", "layouts": { From bb1edf6676c969f2cb641924fd8c777a7378e2ad Mon Sep 17 00:00:00 2001 From: stanrc85 <47038504+stanrc85@users.noreply.github.com> Date: Sat, 2 Jul 2022 15:10:07 -0400 Subject: [PATCH 14/34] [Userspace] Add Nasu to userspace code (#17524) * Define Nasu indicator pins in userspace * Add userspace indicator code to Nasu --- users/stanrc85/config.h | 6 ++++++ users/stanrc85/rules.mk | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/users/stanrc85/config.h b/users/stanrc85/config.h index e12beedb90d..275b368d0a4 100644 --- a/users/stanrc85/config.h +++ b/users/stanrc85/config.h @@ -30,3 +30,9 @@ #define ENABLE_RGB_MATRIX_MULTISPLASH #define ENABLE_RGB_MATRIX_TYPING_HEATMAP #endif + +#ifdef KEYBOARD_nasu + #define INDICATOR_PIN_0 B1 + #define INDICATOR_PIN_1 B0 + #define INDICATOR_PIN_2 A7 +#endif diff --git a/users/stanrc85/rules.mk b/users/stanrc85/rules.mk index 94f4027b965..f73e70ffdb0 100644 --- a/users/stanrc85/rules.mk +++ b/users/stanrc85/rules.mk @@ -43,3 +43,8 @@ ifeq ($(strip $(KEYBOARD)), mechlovin/adelais/standard_led/arm/rev4/stm32f303) SRC += rgb_timeout.c SRC += indicator_layers_sneakbox.c endif +ifeq ($(strip $(KEYBOARD)), nasu) + SRC += indicator_layers_sneakbox.c + SRC += startup_fanfare.c + OPT_DEFS += -DHAS_INDICATORS +endif From 2011aec06f17fd9c80aba740cca82ec5b85759cc Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Sat, 2 Jul 2022 18:17:53 -0400 Subject: [PATCH 15/34] Add Gentoo Solderable PCB to QMK (#17527) --- keyboards/cannonkeys/gentoo/config.h | 62 ++++++++++++++++++ keyboards/cannonkeys/gentoo/gentoo.c | 16 +++++ keyboards/cannonkeys/gentoo/gentoo.h | 35 ++++++++++ keyboards/cannonkeys/gentoo/info.json | 11 ++++ .../gentoo/keymaps/default/keymap.c | 47 ++++++++++++++ .../cannonkeys/gentoo/keymaps/via/keymap.c | 65 +++++++++++++++++++ .../cannonkeys/gentoo/keymaps/via/rules.mk | 2 + keyboards/cannonkeys/gentoo/readme.md | 20 ++++++ keyboards/cannonkeys/gentoo/rules.mk | 24 +++++++ 9 files changed, 282 insertions(+) create mode 100644 keyboards/cannonkeys/gentoo/config.h create mode 100644 keyboards/cannonkeys/gentoo/gentoo.c create mode 100644 keyboards/cannonkeys/gentoo/gentoo.h create mode 100644 keyboards/cannonkeys/gentoo/info.json create mode 100644 keyboards/cannonkeys/gentoo/keymaps/default/keymap.c create mode 100644 keyboards/cannonkeys/gentoo/keymaps/via/keymap.c create mode 100644 keyboards/cannonkeys/gentoo/keymaps/via/rules.mk create mode 100644 keyboards/cannonkeys/gentoo/readme.md create mode 100644 keyboards/cannonkeys/gentoo/rules.mk diff --git a/keyboards/cannonkeys/gentoo/config.h b/keyboards/cannonkeys/gentoo/config.h new file mode 100644 index 00000000000..ac498debd97 --- /dev/null +++ b/keyboards/cannonkeys/gentoo/config.h @@ -0,0 +1,62 @@ +/* +Copyright 2022 Andrew Kannan + +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 + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCA04 +#define PRODUCT_ID 0x000F +#define DEVICE_VER 0x0001 +#define MANUFACTURER CannonKeys +#define PRODUCT Gentoo + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_COL_PINS { C13, C15, B13, B12, B11, B10, B2, B1, B0, A7, A6, A5, A4, A3, A2 } +#define MATRIX_ROW_PINS { C14, A1, B14, B15, A8 } +#define DIODE_DIRECTION COL2ROW + +#define LED_CAPS_LOCK_PIN B3 +#define LED_PIN_ON_STATE 0 +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* 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 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/cannonkeys/gentoo/gentoo.c b/keyboards/cannonkeys/gentoo/gentoo.c new file mode 100644 index 00000000000..a535e9b44c0 --- /dev/null +++ b/keyboards/cannonkeys/gentoo/gentoo.c @@ -0,0 +1,16 @@ +/* Copyright 2022 Andrew Kannan + * + * 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 "gentoo.h" diff --git a/keyboards/cannonkeys/gentoo/gentoo.h b/keyboards/cannonkeys/gentoo/gentoo.h new file mode 100644 index 00000000000..8c094fd5b58 --- /dev/null +++ b/keyboards/cannonkeys/gentoo/gentoo.h @@ -0,0 +1,35 @@ +/* Copyright 2022 Andrew Kannan + * + * 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_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K212, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K406, K409, K410, K411, K412, K413, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, ____, ____, ____, K406, ____, ____, K409, K410, K411, K412, K413, K414 } \ +} diff --git a/keyboards/cannonkeys/gentoo/info.json b/keyboards/cannonkeys/gentoo/info.json new file mode 100644 index 00000000000..4bb9cd95551 --- /dev/null +++ b/keyboards/cannonkeys/gentoo/info.json @@ -0,0 +1,11 @@ +{ + "keyboard_name": "Gentoo", + "url": "https://cannonkeys.com", + "maintainer": "awkannan", + "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":"Bkspc", "x":13, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Del", "x":15.5, "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":"|", "x":13.5, "y":1, "w":1.5}, {"label":"PgUp", "x":15.5, "y":1}, {"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":"PgDn", "x":15.5, "y":2}, {"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":15.5, "y":3}, {"label":"Up", "x":14.25, "y":3.25}, {"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}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Win", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"Left", "x":13.25, "y":4.25}, {"label":"Down", "x":14.25, "y":4.25}, {"label":"Right", "x":15.25, "y":4.25}] + } + } + +} diff --git a/keyboards/cannonkeys/gentoo/keymaps/default/keymap.c b/keyboards/cannonkeys/gentoo/keymaps/default/keymap.c new file mode 100644 index 00000000000..6fcf5166168 --- /dev/null +++ b/keyboards/cannonkeys/gentoo/keymaps/default/keymap.c @@ -0,0 +1,47 @@ +/* +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 + + +// 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = 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_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + MO(1), 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_BSLS, 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, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN] = LAYOUT_all( + RESET, 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_PGUP, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, + _______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ) + +}; diff --git a/keyboards/cannonkeys/gentoo/keymaps/via/keymap.c b/keyboards/cannonkeys/gentoo/keymaps/via/keymap.c new file mode 100644 index 00000000000..b8e5eb1347a --- /dev/null +++ b/keyboards/cannonkeys/gentoo/keymaps/via/keymap.c @@ -0,0 +1,65 @@ +/* +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 + + +// 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, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = 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_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + MO(1), 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_BSLS, 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, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_all( + RESET, 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_PGUP, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, + _______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), + + [_FN2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/cannonkeys/gentoo/keymaps/via/rules.mk b/keyboards/cannonkeys/gentoo/keymaps/via/rules.mk new file mode 100644 index 00000000000..16d33cd89fe --- /dev/null +++ b/keyboards/cannonkeys/gentoo/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes + diff --git a/keyboards/cannonkeys/gentoo/readme.md b/keyboards/cannonkeys/gentoo/readme.md new file mode 100644 index 00000000000..1b852a614b3 --- /dev/null +++ b/keyboards/cannonkeys/gentoo/readme.md @@ -0,0 +1,20 @@ +# Gentoo + +Gentoo Keyboard + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/gentoo: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 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 "0" and briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/cannonkeys/gentoo/rules.mk b/keyboards/cannonkeys/gentoo/rules.mk new file mode 100644 index 00000000000..7b44b402d11 --- /dev/null +++ b/keyboards/cannonkeys/gentoo/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = 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 + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From 43e33ba232a02f627c4fcc6607edd6f7971e71b8 Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Sat, 2 Jul 2022 18:18:43 -0400 Subject: [PATCH 16/34] Add Gentoo Hotswap PCB to QMK (#17528) --- keyboards/cannonkeys/gentoo_hs/config.h | 64 +++++++++++++++++++ keyboards/cannonkeys/gentoo_hs/gentoo_hs.c | 16 +++++ keyboards/cannonkeys/gentoo_hs/gentoo_hs.h | 34 ++++++++++ keyboards/cannonkeys/gentoo_hs/info.json | 10 +++ .../gentoo_hs/keymaps/default/keymap.c | 46 +++++++++++++ .../cannonkeys/gentoo_hs/keymaps/via/keymap.c | 64 +++++++++++++++++++ .../cannonkeys/gentoo_hs/keymaps/via/rules.mk | 1 + keyboards/cannonkeys/gentoo_hs/readme.md | 20 ++++++ keyboards/cannonkeys/gentoo_hs/rules.mk | 24 +++++++ 9 files changed, 279 insertions(+) create mode 100644 keyboards/cannonkeys/gentoo_hs/config.h create mode 100644 keyboards/cannonkeys/gentoo_hs/gentoo_hs.c create mode 100644 keyboards/cannonkeys/gentoo_hs/gentoo_hs.h create mode 100644 keyboards/cannonkeys/gentoo_hs/info.json create mode 100644 keyboards/cannonkeys/gentoo_hs/keymaps/default/keymap.c create mode 100644 keyboards/cannonkeys/gentoo_hs/keymaps/via/keymap.c create mode 100644 keyboards/cannonkeys/gentoo_hs/keymaps/via/rules.mk create mode 100644 keyboards/cannonkeys/gentoo_hs/readme.md create mode 100644 keyboards/cannonkeys/gentoo_hs/rules.mk diff --git a/keyboards/cannonkeys/gentoo_hs/config.h b/keyboards/cannonkeys/gentoo_hs/config.h new file mode 100644 index 00000000000..d633caf554d --- /dev/null +++ b/keyboards/cannonkeys/gentoo_hs/config.h @@ -0,0 +1,64 @@ +/* +Copyright 2015 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 . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCA04 +#define PRODUCT_ID 0x0010 +#define DEVICE_VER 0x0001 +#define MANUFACTURER CannonKeys +#define PRODUCT Gentoo HS + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_COL_PINS { A8, C13, B9, B8, B7, B6, B5, B4, B3, A7, A5, A4, A3, A2, A1 } +#define MATRIX_ROW_PINS { A14, A15, A0, B1, B0 } +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* 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 LED_CAPS_LOCK_PIN B14 +#define LED_PIN_ON_STATE 0 + + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/cannonkeys/gentoo_hs/gentoo_hs.c b/keyboards/cannonkeys/gentoo_hs/gentoo_hs.c new file mode 100644 index 00000000000..8ecaa655f89 --- /dev/null +++ b/keyboards/cannonkeys/gentoo_hs/gentoo_hs.c @@ -0,0 +1,16 @@ +/* Copyright 2022 Andrew Kannan + * + * 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 "gentoo_hs.h" diff --git a/keyboards/cannonkeys/gentoo_hs/gentoo_hs.h b/keyboards/cannonkeys/gentoo_hs/gentoo_hs.h new file mode 100644 index 00000000000..681de349856 --- /dev/null +++ b/keyboards/cannonkeys/gentoo_hs/gentoo_hs.h @@ -0,0 +1,34 @@ +/* Copyright 2022 Andrew Kannan + * + * 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_default( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K406, K410, K411, K412, K413, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, ____, K213, K214 }, \ + { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, K411, K412, K413, K414 } \ +} diff --git a/keyboards/cannonkeys/gentoo_hs/info.json b/keyboards/cannonkeys/gentoo_hs/info.json new file mode 100644 index 00000000000..9573d243767 --- /dev/null +++ b/keyboards/cannonkeys/gentoo_hs/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Gentoo Hotswap", + "url": "https://cannonkeys.com", + "maintainer": "awkannan", + "layouts": { + "LAYOUT_default": { + "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":"Backspace", "x":13, "y":0, "w":2}, {"label":"Del", "x":15.5, "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":"|", "x":13.5, "y":1, "w":1.5}, {"label":"PgUp", "x":15.5, "y":1}, {"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":"PgDn", "x":15.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"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":15.5, "y":3}, {"label":"Up", "x":14.25, "y":3.25}, {"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}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":4, "w":1.5}, {"label":"Left", "x":13.25, "y":4.25}, {"label":"Down", "x":14.25, "y":4.25}, {"label":"Right", "x":15.25, "y":4.25}] + } + } +} diff --git a/keyboards/cannonkeys/gentoo_hs/keymaps/default/keymap.c b/keyboards/cannonkeys/gentoo_hs/keymaps/default/keymap.c new file mode 100644 index 00000000000..09670544389 --- /dev/null +++ b/keyboards/cannonkeys/gentoo_hs/keymaps/default/keymap.c @@ -0,0 +1,46 @@ +/* +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 + + +// 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, + _FN1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_default( + KC_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_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_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_default( + KC_GESC, 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, RGB_TOG, + 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, RGB_MOD, + BL_BRTG, 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, + BL_INC, BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/cannonkeys/gentoo_hs/keymaps/via/keymap.c b/keyboards/cannonkeys/gentoo_hs/keymaps/via/keymap.c new file mode 100644 index 00000000000..b5b75645433 --- /dev/null +++ b/keyboards/cannonkeys/gentoo_hs/keymaps/via/keymap.c @@ -0,0 +1,64 @@ +/* +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 + + +// 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, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_default( + KC_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_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_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_default( + KC_GESC, 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, RGB_TOG, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, + BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + BL_INC, BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS + ), + + [_FN2] = LAYOUT_default( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_default( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/gentoo_hs/keymaps/via/rules.mk b/keyboards/cannonkeys/gentoo_hs/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/cannonkeys/gentoo_hs/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cannonkeys/gentoo_hs/readme.md b/keyboards/cannonkeys/gentoo_hs/readme.md new file mode 100644 index 00000000000..fa99daec2f8 --- /dev/null +++ b/keyboards/cannonkeys/gentoo_hs/readme.md @@ -0,0 +1,20 @@ +# Gentoo65 Hotswap + +Gentoo65 Hotswap Keyboard + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/gentoo_hs: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 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 "0" and briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/cannonkeys/gentoo_hs/rules.mk b/keyboards/cannonkeys/gentoo_hs/rules.mk new file mode 100644 index 00000000000..b34d15f4b5e --- /dev/null +++ b/keyboards/cannonkeys/gentoo_hs/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = 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 + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From 3ed4a7086e0b76f104c92918d4d55e6d5ed96b05 Mon Sep 17 00:00:00 2001 From: Ralph Bacolod Date: Sat, 2 Jul 2022 19:10:30 -0400 Subject: [PATCH 17/34] Update readme.md (#17489) Fixed link to http://mkweb.bcgsc.ca/carpalx/?popular_alternatives --- keyboards/kinesis/keymaps/carpalx/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/kinesis/keymaps/carpalx/readme.md b/keyboards/kinesis/keymaps/carpalx/readme.md index aa57b60a52a..2db75c95390 100644 --- a/keyboards/kinesis/keymaps/carpalx/readme.md +++ b/keyboards/kinesis/keymaps/carpalx/readme.md @@ -4,7 +4,7 @@ Carpalx layout (also known as QGMLWBY) is an optimized alternative keyboard layout. Learn more about it at: -[http://mkweb.bcgsc.ca/carpalx/?popular_alternatives]() +[http://mkweb.bcgsc.ca/carpalx/?popular_alternatives](http://mkweb.bcgsc.ca/carpalx/?popular_alternatives) The layout also includes a QWERTY layer to help with the transition. - Scroll Lock: QWERTY layer From 6a0814bb04a0ffa0edcc5a3f53e8ad757ddd11c1 Mon Sep 17 00:00:00 2001 From: yiancar Date: Sun, 3 Jul 2022 00:11:48 +0100 Subject: [PATCH 18/34] Update NK1 RGB animation defines (#17486) --- keyboards/novelkeys/nk1/config.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/keyboards/novelkeys/nk1/config.h b/keyboards/novelkeys/nk1/config.h index 122df2e6dab..4ab1d40d046 100644 --- a/keyboards/novelkeys/nk1/config.h +++ b/keyboards/novelkeys/nk1/config.h @@ -85,8 +85,18 @@ #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_ANIMATIONS + #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 #endif /* There is only 1 Button so limiting VIA to 1 layer */ From 71f9a07b0f1d9914ea9e21d1869d6dafb596aacd Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 2 Jul 2022 16:12:02 -0700 Subject: [PATCH 19/34] 65% Community Layout Updates (#17476) * update 65_ansi community layout keymap - add license header - add function layer * update 65_ansi_blocker community layout keymap - add license header - add function layer * update 65_ansi_blocker_split_bs community layout keymap - add license header - add function layer * update 65_ansi_blocker_tsangan community layout keymap - add license header - add function layer - remove trailing spaces in keymap readme * add 65_ansi_blocker_tsangan_split_bs community layout keymap * update 65_ansi_split_bs community layout keymap - add license header - add function layer * update 65_iso community layout keymap - add license header - add function layer - fix layout box drawing on Community Layout readme * update 65_iso_blocker community layout keymap - add license header - add function layer - fix layout box drawing on Community Layout readme * update 65_iso_blocker_split_bs community layout keymap - add license header - add function layer - fix layout box drawing on Community Layout readme * add 65_iso_blocker_tsangan community layout keymap * add 65_iso_blocker_tsangan_split_bs community layout keymap * update 65_iso_split_bs community layout keymap - add license header - add function layer - fix layout box drawing on Community Layout readme --- .../default/65_ansi/default_65_ansi/keymap.c | 36 ++++++-- .../default_65_ansi_blocker/keymap.c | 36 ++++++-- .../default_65_ansi_blocker_split_bs/keymap.c | 36 ++++++-- .../default_65_ansi_blocker_tsangan/keymap.c | 36 ++++++-- .../default/65_ansi_blocker_tsangan/readme.md | 3 +- .../keymap.c | 50 +++++++++++ .../info.json | 82 ++++++++++++++++++ .../layout.json | 5 ++ .../readme.md | 6 ++ .../default_65_ansi_split_bs/keymap.c | 36 ++++++-- .../default/65_iso/default_65_iso/keymap.c | 36 ++++++-- .../default_65_iso_blocker/keymap.c | 36 ++++++-- .../default_65_iso_blocker_split_bs/keymap.c | 36 ++++++-- .../default_65_iso_blocker_tsangan/keymap.c | 50 +++++++++++ .../default/65_iso_blocker_tsangan/info.json | 82 ++++++++++++++++++ .../65_iso_blocker_tsangan/layout.json | 5 ++ .../default/65_iso_blocker_tsangan/readme.md | 5 ++ .../keymap.c | 50 +++++++++++ .../65_iso_blocker_tsangan_split_bs/info.json | 83 +++++++++++++++++++ .../layout.json | 5 ++ .../65_iso_blocker_tsangan_split_bs/readme.md | 5 ++ .../default_65_iso_split_bs/keymap.c | 36 ++++++-- layouts/default/readme.md | 69 ++++++++++++--- 23 files changed, 765 insertions(+), 59 deletions(-) create mode 100644 layouts/default/65_ansi_blocker_tsangan_split_bs/default_65_ansi_blocker_tsangan_split_bs/keymap.c create mode 100644 layouts/default/65_ansi_blocker_tsangan_split_bs/info.json create mode 100644 layouts/default/65_ansi_blocker_tsangan_split_bs/layout.json create mode 100644 layouts/default/65_ansi_blocker_tsangan_split_bs/readme.md create mode 100644 layouts/default/65_iso_blocker_tsangan/default_65_iso_blocker_tsangan/keymap.c create mode 100644 layouts/default/65_iso_blocker_tsangan/info.json create mode 100644 layouts/default/65_iso_blocker_tsangan/layout.json create mode 100644 layouts/default/65_iso_blocker_tsangan/readme.md create mode 100644 layouts/default/65_iso_blocker_tsangan_split_bs/default_65_iso_blocker_tsangan_split_bs/keymap.c create mode 100644 layouts/default/65_iso_blocker_tsangan_split_bs/info.json create mode 100644 layouts/default/65_iso_blocker_tsangan_split_bs/layout.json create mode 100644 layouts/default/65_iso_blocker_tsangan_split_bs/readme.md diff --git a/layouts/default/65_ansi/default_65_ansi/keymap.c b/layouts/default/65_ansi/default_65_ansi/keymap.c index 3ef02da07d9..e206bd7851c 100644 --- a/layouts/default/65_ansi/default_65_ansi/keymap.c +++ b/layouts/default/65_ansi/default_65_ansi/keymap.c @@ -1,9 +1,13 @@ +// Copyright 2018-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ @@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ - * │Ctrl│GUI │Alt │ │Alt│GUI│Ctl│ ← │ ↓ │ → │ + * │Ctrl│GUI │Alt │ │Alt│ Fn│Ctl│ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ */ [0] = LAYOUT_65_ansi( - 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ) + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ + */ + [1] = LAYOUT_65_ansi( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + }; diff --git a/layouts/default/65_ansi_blocker/default_65_ansi_blocker/keymap.c b/layouts/default/65_ansi_blocker/default_65_ansi_blocker/keymap.c index 7f39d19d954..7036e7295f0 100644 --- a/layouts/default/65_ansi_blocker/default_65_ansi_blocker/keymap.c +++ b/layouts/default/65_ansi_blocker/default_65_ansi_blocker/keymap.c @@ -1,9 +1,13 @@ +// Copyright 2019-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ @@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │Ctrl│GUI │Alt │ │ Alt│Ctrl│ │ ← │ ↓ │ → │ + * │Ctrl│GUI │Alt │ │ Alt│ Fn│ │ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ */ [0] = LAYOUT_65_ansi_blocker( - 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ) + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [1] = LAYOUT_65_ansi_blocker( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + }; diff --git a/layouts/default/65_ansi_blocker_split_bs/default_65_ansi_blocker_split_bs/keymap.c b/layouts/default/65_ansi_blocker_split_bs/default_65_ansi_blocker_split_bs/keymap.c index 6fb5425b50c..6bca7618300 100644 --- a/layouts/default/65_ansi_blocker_split_bs/default_65_ansi_blocker_split_bs/keymap.c +++ b/layouts/default/65_ansi_blocker_split_bs/default_65_ansi_blocker_split_bs/keymap.c @@ -1,9 +1,13 @@ +// Copyright 2020-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│Hom│ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│Hom│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ @@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │Ctrl│GUI │Alt │ │ Alt│Ctrl│ │ ← │ ↓ │ → │ + * │Ctrl│GUI │Alt │ │ Alt│ Fn│ │ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ */ [0] = LAYOUT_65_ansi_blocker_split_bs( - 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_HOME, + 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_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ) + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [1] = LAYOUT_65_ansi_blocker_split_bs( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + }; diff --git a/layouts/default/65_ansi_blocker_tsangan/default_65_ansi_blocker_tsangan/keymap.c b/layouts/default/65_ansi_blocker_tsangan/default_65_ansi_blocker_tsangan/keymap.c index 68b1f7b9142..f899242ed41 100644 --- a/layouts/default/65_ansi_blocker_tsangan/default_65_ansi_blocker_tsangan/keymap.c +++ b/layouts/default/65_ansi_blocker_tsangan/default_65_ansi_blocker_tsangan/keymap.c @@ -1,9 +1,13 @@ +// Copyright 2020-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ @@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ - * │Ctrl │GUI│Alt │ │ Alt│ │ ← │ ↓ │ → │ + * │Ctrl │GUI│Alt │ │ Fn│ │ ← │ ↓ │ → │ * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ */ [0] = LAYOUT_65_ansi_blocker_tsangan( - 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT - ) + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + */ + [1] = LAYOUT_65_ansi_blocker_tsangan( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + }; diff --git a/layouts/default/65_ansi_blocker_tsangan/readme.md b/layouts/default/65_ansi_blocker_tsangan/readme.md index 879742fee85..963914784e9 100644 --- a/layouts/default/65_ansi_blocker_tsangan/readme.md +++ b/layouts/default/65_ansi_blocker_tsangan/readme.md @@ -1,6 +1,5 @@ # 65_ansi_blocker_tsangan LAYOUT_65_ansi_blocker_tsangan - + This is a Tsangan-inspired 65% ANSI layout with a blocker next to the arrows and 1.5u-1u-1.5u-7u-1.5u bottom row. - \ No newline at end of file diff --git a/layouts/default/65_ansi_blocker_tsangan_split_bs/default_65_ansi_blocker_tsangan_split_bs/keymap.c b/layouts/default/65_ansi_blocker_tsangan_split_bs/default_65_ansi_blocker_tsangan_split_bs/keymap.c new file mode 100644 index 00000000000..446d2c72abf --- /dev/null +++ b/layouts/default/65_ansi_blocker_tsangan_split_bs/default_65_ansi_blocker_tsangan_split_bs/keymap.c @@ -0,0 +1,50 @@ +// Copyright 2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│Hom│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ + * │Ctrl │GUI│Alt │ │ Fn│ │ ← │ ↓ │ → │ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_65_ansi_blocker_tsangan_split_bs( + 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_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + */ + [1] = LAYOUT_65_ansi_blocker_tsangan_split_bs( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/layouts/default/65_ansi_blocker_tsangan_split_bs/info.json b/layouts/default/65_ansi_blocker_tsangan_split_bs/info.json new file mode 100644 index 00000000000..6826b1f6ea5 --- /dev/null +++ b/layouts/default/65_ansi_blocker_tsangan_split_bs/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "65% ANSI Tsangan layout with blocker and split Backspace", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_65_ansi_blocker_tsangan_split_bs": { + "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":15, "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":15, "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, "w":2.25}, + {"x":15, "y":2}, + + {"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":15, "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":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/layouts/default/65_ansi_blocker_tsangan_split_bs/layout.json b/layouts/default/65_ansi_blocker_tsangan_split_bs/layout.json new file mode 100644 index 00000000000..f2f92557e53 --- /dev/null +++ b/layouts/default/65_ansi_blocker_tsangan_split_bs/layout.json @@ -0,0 +1,5 @@ +[{a:7},"","","","","","","","","","","","","","","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},"",""], +[{w:2.25},"","","","","","","","","","","",{w:1.75},"","",""], +[{w:1.5},"","",{w:1.5},"",{w:7},"",{w:1.5},"",{x:0.5},"","",""] diff --git a/layouts/default/65_ansi_blocker_tsangan_split_bs/readme.md b/layouts/default/65_ansi_blocker_tsangan_split_bs/readme.md new file mode 100644 index 00000000000..3b43d0a7f12 --- /dev/null +++ b/layouts/default/65_ansi_blocker_tsangan_split_bs/readme.md @@ -0,0 +1,6 @@ +# 65_ansi_blocker_tsangan_split_bs + + LAYOUT_65_ansi_blocker_tsangan_split_bs + +This is a Tsangan-inspired 65% ANSI layout with a blocker next to the arrows, a split Backspace, and 1.5u-1u-1.5u-7u-1.5u bottom row. + diff --git a/layouts/default/65_ansi_split_bs/default_65_ansi_split_bs/keymap.c b/layouts/default/65_ansi_split_bs/default_65_ansi_split_bs/keymap.c index 15e374e0c6a..be974060e73 100644 --- a/layouts/default/65_ansi_split_bs/default_65_ansi_split_bs/keymap.c +++ b/layouts/default/65_ansi_split_bs/default_65_ansi_split_bs/keymap.c @@ -1,9 +1,13 @@ +// Copyright 2020-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = |Bsp|Bsp|Hom│ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = |Bsp|Bsp|Hom│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ @@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ - * │Ctrl│GUI │Alt │ │Alt│GUI│Ctl│ ← │ ↓ │ → │ + * │Ctrl│GUI │Alt │ │Alt│ Fn│Ctl│ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ */ [0] = LAYOUT_65_ansi_split_bs( - 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_HOME, + 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_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ) + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ + */ + [1] = LAYOUT_65_ansi_split_bs( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + }; diff --git a/layouts/default/65_iso/default_65_iso/keymap.c b/layouts/default/65_iso/default_65_iso/keymap.c index 76a27df8629..833945bebf9 100644 --- a/layouts/default/65_iso/default_65_iso/keymap.c +++ b/layouts/default/65_iso/default_65_iso/keymap.c @@ -1,9 +1,13 @@ +// Copyright 2019-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │PgU│ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤ @@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ - * │Ctrl│GUI │Alt │ │Alt│GUI│Ctl│ ← │ ↓ │ → │ + * │Ctrl│GUI │Alt │ │Alt│ Fn│Ctl│ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ */ [0] = LAYOUT_65_iso( - 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_NUHS, KC_ENT, KC_PGDN, 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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ) + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │Pau│ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │ │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ + */ + [1] = LAYOUT_65_iso( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + }; diff --git a/layouts/default/65_iso_blocker/default_65_iso_blocker/keymap.c b/layouts/default/65_iso_blocker/default_65_iso_blocker/keymap.c index f1d5ac46868..9e1f99afaa6 100644 --- a/layouts/default/65_iso_blocker/default_65_iso_blocker/keymap.c +++ b/layouts/default/65_iso_blocker/default_65_iso_blocker/keymap.c @@ -1,9 +1,13 @@ +// Copyright 2019-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │PgU│ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤ @@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │Ctrl│GUI │Alt │ │ Alt│Ctrl│ │ ← │ ↓ │ → │ + * │Ctrl│GUI │Alt │ │ Alt│ Fn│ │ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ */ [0] = LAYOUT_65_iso_blocker( - 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_NUHS, KC_ENT, KC_PGDN, 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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ) + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │Pau│ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │ │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [1] = LAYOUT_65_iso_blocker( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + }; diff --git a/layouts/default/65_iso_blocker_split_bs/default_65_iso_blocker_split_bs/keymap.c b/layouts/default/65_iso_blocker_split_bs/default_65_iso_blocker_split_bs/keymap.c index f497553fe2e..a816c3746a1 100644 --- a/layouts/default/65_iso_blocker_split_bs/default_65_iso_blocker_split_bs/keymap.c +++ b/layouts/default/65_iso_blocker_split_bs/default_65_iso_blocker_split_bs/keymap.c @@ -1,9 +1,13 @@ +// Copyright 2020-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│Hom│ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│Hom│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │PgU│ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤ @@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │Ctrl│GUI │Alt │ │ Alt│Ctrl│ │ ← │ ↓ │ → │ + * │Ctrl│GUI │Alt │ │ Alt│ Fn│ │ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ */ [0] = LAYOUT_65_iso_blocker_split_bs( - 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_HOME, + 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_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_NUHS, KC_ENT, KC_PGDN, 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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ) + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │Pau│ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │ │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [1] = LAYOUT_65_iso_blocker_split_bs( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + }; diff --git a/layouts/default/65_iso_blocker_tsangan/default_65_iso_blocker_tsangan/keymap.c b/layouts/default/65_iso_blocker_tsangan/default_65_iso_blocker_tsangan/keymap.c new file mode 100644 index 00000000000..7a0197df19b --- /dev/null +++ b/layouts/default/65_iso_blocker_tsangan/default_65_iso_blocker_tsangan/keymap.c @@ -0,0 +1,50 @@ +// Copyright 2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#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│Hom│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │PgU│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │PgD│ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ + * │Ctrl │GUI│Alt │ │ Fn│ │ ← │ ↓ │ → │ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_65_iso_blocker_tsangan( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_NUHS, KC_ENT, KC_PGDN, + 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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │Pau│ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │ │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + */ + [1] = LAYOUT_65_iso_blocker_tsangan( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/layouts/default/65_iso_blocker_tsangan/info.json b/layouts/default/65_iso_blocker_tsangan/info.json new file mode 100644 index 00000000000..bdeea87a1e2 --- /dev/null +++ b/layouts/default/65_iso_blocker_tsangan/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "65% ISO Tsangan layout with blocker", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_65_iso_blocker_tsangan": { + "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":15, "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":15, "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":15, "y":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":15, "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":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/layouts/default/65_iso_blocker_tsangan/layout.json b/layouts/default/65_iso_blocker_tsangan/layout.json new file mode 100644 index 00000000000..8b43ffdcc5c --- /dev/null +++ b/layouts/default/65_iso_blocker_tsangan/layout.json @@ -0,0 +1,5 @@ +[{a:7},"","","","","","","","","","","","","",{w:2},"",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",""], +[{w:1.75},"","","","","","","","","","","","","",{x:1.25},""], +[{w:1.25},"","","","","","","","","","","","",{w:1.75},"","",""], +[{w:1.5},"","",{w:1.5},"",{w:7},"",{w:1.5},"",{x:0.5},"","",""] diff --git a/layouts/default/65_iso_blocker_tsangan/readme.md b/layouts/default/65_iso_blocker_tsangan/readme.md new file mode 100644 index 00000000000..b38d346e94b --- /dev/null +++ b/layouts/default/65_iso_blocker_tsangan/readme.md @@ -0,0 +1,5 @@ +# 65_iso_blocker_tsangan + + LAYOUT_65_iso_blocker_tsangan + +This is a Tsangan-inspired 65% ISO layout with a blocker next to the arrows and 1.5u-1u-1.5u-7u-1.5u bottom row. diff --git a/layouts/default/65_iso_blocker_tsangan_split_bs/default_65_iso_blocker_tsangan_split_bs/keymap.c b/layouts/default/65_iso_blocker_tsangan_split_bs/default_65_iso_blocker_tsangan_split_bs/keymap.c new file mode 100644 index 00000000000..c5b5dad8a1a --- /dev/null +++ b/layouts/default/65_iso_blocker_tsangan_split_bs/default_65_iso_blocker_tsangan_split_bs/keymap.c @@ -0,0 +1,50 @@ +// Copyright 2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│Hom│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │PgU│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │PgD│ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ + * │Ctrl │GUI│Alt │ │ Fn│ │ ← │ ↓ │ → │ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_65_iso_blocker_tsangan_split_bs( + 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_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_NUHS, KC_ENT, KC_PGDN, + 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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │Pau│ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │ │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + */ + [1] = LAYOUT_65_iso_blocker_tsangan_split_bs( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/layouts/default/65_iso_blocker_tsangan_split_bs/info.json b/layouts/default/65_iso_blocker_tsangan_split_bs/info.json new file mode 100644 index 00000000000..8d51acd5fa9 --- /dev/null +++ b/layouts/default/65_iso_blocker_tsangan_split_bs/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "65% ISO Tsangan layout with blocker and split Backspace", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_65_iso_blocker_tsangan_split_bs": { + "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":15, "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":15, "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":15, "y":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":15, "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":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/layouts/default/65_iso_blocker_tsangan_split_bs/layout.json b/layouts/default/65_iso_blocker_tsangan_split_bs/layout.json new file mode 100644 index 00000000000..2e7c05dc5ae --- /dev/null +++ b/layouts/default/65_iso_blocker_tsangan_split_bs/layout.json @@ -0,0 +1,5 @@ +[{a:7},"","","","","","","","","","","","","","","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",""], +[{w:1.75},"","","","","","","","","","","","","",{x:1.25},""], +[{w:1.25},"","","","","","","","","","","","",{w:1.75},"","",""], +[{w:1.5},"","",{w:1.5},"",{w:7},"",{w:1.5},"",{x:0.5},"","",""] diff --git a/layouts/default/65_iso_blocker_tsangan_split_bs/readme.md b/layouts/default/65_iso_blocker_tsangan_split_bs/readme.md new file mode 100644 index 00000000000..c01c5a003e6 --- /dev/null +++ b/layouts/default/65_iso_blocker_tsangan_split_bs/readme.md @@ -0,0 +1,5 @@ +# 65_iso_blocker_tsangan_split_bs + + LAYOUT_65_iso_blocker_tsangan_split_bs + +This is a Tsangan-inspired 65% ISO layout with a blocker next to the arrows, a split Backspace, and 1.5u-1u-1.5u-7u-1.5u bottom row. diff --git a/layouts/default/65_iso_split_bs/default_65_iso_split_bs/keymap.c b/layouts/default/65_iso_split_bs/default_65_iso_split_bs/keymap.c index 65293bd58f5..70c91a43b2b 100644 --- a/layouts/default/65_iso_split_bs/default_65_iso_split_bs/keymap.c +++ b/layouts/default/65_iso_split_bs/default_65_iso_split_bs/keymap.c @@ -1,9 +1,13 @@ +// Copyright 2019-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = |Bsp|Bsp|Hom│ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│Hom│ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │PgU│ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤ @@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ - * │Ctrl│GUI │Alt │ │Alt│GUI│Ctl│ ← │ ↓ │ → │ + * │Ctrl│GUI │Alt │ │Alt│ Fn│Ctl│ ← │ ↓ │ → │ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ */ [0] = LAYOUT_65_iso_split_bs( - 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_HOME, + 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_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_NUHS, KC_ENT, KC_PGDN, 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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ) + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │Pau│ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │ │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ + */ + [1] = LAYOUT_65_iso_split_bs( + 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + }; diff --git a/layouts/default/readme.md b/layouts/default/readme.md index f414282e809..6f9426992f2 100644 --- a/layouts/default/readme.md +++ b/layouts/default/readme.md @@ -261,6 +261,21 @@ LAYOUT_65_ansi_blocker_tsangan └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ ``` +``` +LAYOUT_65_ansi_blocker_tsangan_split_bs +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ +└─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ +``` + ``` LAYOUT_65_ansi_split_bs ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ @@ -284,9 +299,9 @@ LAYOUT_65_iso │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ │ │ │ │ │ │ │ │ │ │ │ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ ``` @@ -299,9 +314,9 @@ LAYOUT_65_iso_blocker │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ │ │ │ │ │ │ │ │ │ │ │ └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ ``` @@ -314,13 +329,43 @@ LAYOUT_65_iso_blocker_split_bs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ │ │ │ │ │ │ │ │ │ │ │ └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ ``` +``` +LAYOUT_65_iso_blocker_tsangan +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ +└─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_65_iso_blocker_tsangan_split_bs +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ +└─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ +``` + ``` LAYOUT_65_iso_split_bs ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ @@ -329,9 +374,9 @@ LAYOUT_65_iso_split_bs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ -│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ │ │ │ │ │ │ │ │ │ │ │ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ ``` From fbf3cbcd5ce72cd7df73c3f7fac74783a73baa5e Mon Sep 17 00:00:00 2001 From: br <284789+b-@users.noreply.github.com> Date: Sat, 2 Jul 2022 19:13:45 -0400 Subject: [PATCH 20/34] Added PLOOPY_DRAGSCROLL_H_INVERT (#17453) --- keyboards/ploopyco/trackball/trackball.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/keyboards/ploopyco/trackball/trackball.c b/keyboards/ploopyco/trackball/trackball.c index f8199587344..bda21b5c88a 100644 --- a/keyboards/ploopyco/trackball/trackball.c +++ b/keyboards/ploopyco/trackball/trackball.c @@ -119,7 +119,12 @@ report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { process_wheel(); if (is_drag_scroll) { +#ifdef PLOOPY_DRAGSCROLL_H_INVERT + // Invert horizontal scroll direction + mouse_report.h = -mouse_report.x; +#else mouse_report.h = mouse_report.x; +#endif #ifdef PLOOPY_DRAGSCROLL_INVERT // Invert vertical scroll direction mouse_report.v = -mouse_report.y; From fb40abe2f25336b653d3c8ee787756e4260acd4c Mon Sep 17 00:00:00 2001 From: nirim000 Date: Sat, 2 Jul 2022 19:37:02 -0400 Subject: [PATCH 21/34] Pca9505/6 driver (#17333) --- drivers/gpio/pca9505.c | 166 +++++++++++++++++++++++++++++++++++++++++ drivers/gpio/pca9505.h | 67 +++++++++++++++++ 2 files changed, 233 insertions(+) create mode 100644 drivers/gpio/pca9505.c create mode 100644 drivers/gpio/pca9505.h diff --git a/drivers/gpio/pca9505.c b/drivers/gpio/pca9505.c new file mode 100644 index 00000000000..5803746c96d --- /dev/null +++ b/drivers/gpio/pca9505.c @@ -0,0 +1,166 @@ +// Copyright 2022 nirim000 +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "i2c_master.h" +#include "pca9505.h" + +#include "debug.h" + +#define SLAVE_TO_ADDR(n) (n << 1) +#define TIMEOUT 100 + +enum { + CMD_INPUT_0 = 0, + CMD_INPUT_1, + CMD_INPUT_2, + CMD_INPUT_3, + CMD_INPUT_4, + CMD_OUTPUT_0 = 8, + CMD_OUTPUT_1, + CMD_OUTPUT_2, + CMD_OUTPUT_3, + CMD_OUTPUT_4, + CMD_INVERSION_0 = 16, + CMD_INVERSION_1, + CMD_INVERSION_2, + CMD_INVERSION_3, + CMD_INVERSION_4, + CMD_CONFIG_0 = 24, + CMD_CONFIG_1, + CMD_CONFIG_2, + CMD_CONFIG_3, + CMD_CONFIG_4, +}; + +void pca9505_init(uint8_t slave_addr) { + static uint8_t s_init = 0; + if (!s_init) { + i2c_init(); + + s_init = 1; + } + + // TODO: could check device connected + // i2c_start(SLAVE_TO_ADDR(slave) | I2C_WRITE); + // i2c_stop(); +} + +bool pca9505_set_config(uint8_t slave_addr, pca9505_port_t port, uint8_t conf) { + uint8_t addr = SLAVE_TO_ADDR(slave_addr); + uint8_t cmd = 0; + switch (port) { + case 0: + cmd = CMD_CONFIG_0; + break; + case 1: + cmd = CMD_CONFIG_1; + break; + case 2: + cmd = CMD_CONFIG_2; + break; + case 3: + cmd = CMD_CONFIG_3; + break; + case 4: + cmd = CMD_CONFIG_4; + break; + } + + i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT); + if (ret != I2C_STATUS_SUCCESS) { + print("pca9505_set_config::FAILED\n"); + return false; + } + + return true; +} + +bool pca9505_set_polarity(uint8_t slave_addr, pca9505_port_t port, uint8_t conf) { + uint8_t addr = SLAVE_TO_ADDR(slave_addr); + uint8_t cmd = 0; + switch (port) { + case 0: + cmd = CMD_INVERSION_0; + break; + case 1: + cmd = CMD_INVERSION_1; + break; + case 2: + cmd = CMD_INVERSION_2; + break; + case 3: + cmd = CMD_INVERSION_3; + break; + case 4: + cmd = CMD_INVERSION_4; + break; + } + + i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT); + if (ret != I2C_STATUS_SUCCESS) { + print("pca9505_set_polarity::FAILED\n"); + return false; + } + + return true; +} + +bool pca9505_set_output(uint8_t slave_addr, pca9505_port_t port, uint8_t conf) { + uint8_t addr = SLAVE_TO_ADDR(slave_addr); + uint8_t cmd = 0; + switch (port) { + case 0: + cmd = CMD_OUTPUT_0; + break; + case 1: + cmd = CMD_OUTPUT_1; + break; + case 2: + cmd = CMD_OUTPUT_2; + break; + case 3: + cmd = CMD_OUTPUT_3; + break; + case 4: + cmd = CMD_OUTPUT_4; + break; + } + + i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT); + if (ret != I2C_STATUS_SUCCESS) { + print("pca9505_set_output::FAILED\n"); + return false; + } + + return true; +} + +bool pca9505_readPins(uint8_t slave_addr, pca9505_port_t port, uint8_t* out) { + uint8_t addr = SLAVE_TO_ADDR(slave_addr); + uint8_t cmd = 0; + switch (port) { + case 0: + cmd = CMD_INPUT_0; + break; + case 1: + cmd = CMD_INPUT_1; + break; + case 2: + cmd = CMD_INPUT_2; + break; + case 3: + cmd = CMD_INPUT_3; + break; + case 4: + cmd = CMD_INPUT_4; + break; + } + + i2c_status_t ret = i2c_readReg(addr, cmd, out, sizeof(uint8_t), TIMEOUT); + if (ret != I2C_STATUS_SUCCESS) { + print("pca9505_readPins::FAILED\n"); + return false; + } + + return true; +} diff --git a/drivers/gpio/pca9505.h b/drivers/gpio/pca9505.h new file mode 100644 index 00000000000..732ddb88ead --- /dev/null +++ b/drivers/gpio/pca9505.h @@ -0,0 +1,67 @@ +// Copyright 2022 nirim000 +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include + +/** + * Port ID + */ +typedef enum { + PCA9505_PORT0, + PCA9505_PORT1, + PCA9505_PORT2, + PCA9505_PORT3, + PCA9505_PORT4, +} pca9505_port_t; + +/** + * Helpers for set_config + */ +enum { + ALL_NORMAL = 0, + ALL_INVERTED = 0xFF, +}; + +/** + * Helpers for set_config + */ +enum { + ALL_OUTPUT = 0, + ALL_INPUT = 0xFF, +}; + +/** + * Helpers for set_output + */ +enum { + ALL_LOW = 0, + ALL_HIGH = 0xFF, +}; + +/** + * Init expander and any other dependent drivers + */ +void pca9505_init(uint8_t slave_addr); + +/** + * Configure input/output to a given port + */ +bool pca9505_set_config(uint8_t slave_addr, pca9505_port_t port, uint8_t conf); + +/** + * Configure polarity to a given port + */ +bool pca9505_set_polarity(uint8_t slave_addr, pca9505_port_t port, uint8_t conf); + +/** + * Write high/low to a given port + */ +bool pca9505_set_output(uint8_t slave_addr, pca9505_port_t port, uint8_t conf); + +/** + * Read state of a given port + */ +bool pca9505_readPins(uint8_t slave_addr, pca9505_port_t port, uint8_t* ret); From f2d4424bb722f2b137c0bd3990d33c04386624c9 Mon Sep 17 00:00:00 2001 From: TW59420 <40019210+TW59420@users.noreply.github.com> Date: Sun, 3 Jul 2022 07:38:02 +0800 Subject: [PATCH 22/34] Add alicekk support (#17027) --- keyboards/mwstudio/alicekk/alicekk.c | 30 ++++++ keyboards/mwstudio/alicekk/alicekk.h | 32 +++++++ keyboards/mwstudio/alicekk/chconf.h | 23 +++++ keyboards/mwstudio/alicekk/config.h | 71 ++++++++++++++ .../mwstudio/alicekk/keymaps/default/keymap.c | 37 +++++++ .../mwstudio/alicekk/keymaps/via/keymap.c | 96 +++++++++++++++++++ .../mwstudio/alicekk/keymaps/via/rules.mk | 2 + keyboards/mwstudio/alicekk/mcuconf.h | 22 +++++ keyboards/mwstudio/alicekk/readme.md | 22 +++++ keyboards/mwstudio/alicekk/rules.mk | 21 ++++ 10 files changed, 356 insertions(+) create mode 100644 keyboards/mwstudio/alicekk/alicekk.c create mode 100644 keyboards/mwstudio/alicekk/alicekk.h create mode 100644 keyboards/mwstudio/alicekk/chconf.h create mode 100644 keyboards/mwstudio/alicekk/config.h create mode 100644 keyboards/mwstudio/alicekk/keymaps/default/keymap.c create mode 100644 keyboards/mwstudio/alicekk/keymaps/via/keymap.c create mode 100644 keyboards/mwstudio/alicekk/keymaps/via/rules.mk create mode 100644 keyboards/mwstudio/alicekk/mcuconf.h create mode 100644 keyboards/mwstudio/alicekk/readme.md create mode 100644 keyboards/mwstudio/alicekk/rules.mk diff --git a/keyboards/mwstudio/alicekk/alicekk.c b/keyboards/mwstudio/alicekk/alicekk.c new file mode 100644 index 00000000000..96c468066ab --- /dev/null +++ b/keyboards/mwstudio/alicekk/alicekk.c @@ -0,0 +1,30 @@ +/* Copyright 2022 TW59420 + * + * 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 "alicekk.h" + +#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/mwstudio/alicekk/alicekk.h b/keyboards/mwstudio/alicekk/alicekk.h new file mode 100644 index 00000000000..8bd3cfee876 --- /dev/null +++ b/keyboards/mwstudio/alicekk/alicekk.h @@ -0,0 +1,32 @@ +/* Copyright 2022 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K401, K402, K404, K405, K408, K410, K412, K413, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214 }, \ + { KC_NO, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { KC_NO, K401, K402, KC_NO, K404, K405, KC_NO, KC_NO, K408, KC_NO, K410, KC_NO, K412, K413, K414 } \ +} diff --git a/keyboards/mwstudio/alicekk/chconf.h b/keyboards/mwstudio/alicekk/chconf.h new file mode 100644 index 00000000000..7507db8aa1f --- /dev/null +++ b/keyboards/mwstudio/alicekk/chconf.h @@ -0,0 +1,23 @@ +/* Copyright 2022 TW59420 + * + * 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 CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/mwstudio/alicekk/config.h b/keyboards/mwstudio/alicekk/config.h new file mode 100644 index 00000000000..0c5a34fdf5a --- /dev/null +++ b/keyboards/mwstudio/alicekk/config.h @@ -0,0 +1,71 @@ +/* Copyright 2022 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7BA1 +#define PRODUCT_ID 0x3201 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MWStudio +#define PRODUCT AlickKK + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { A3, A5, A6, A7, B0 } +#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, A4, A2, A1, B6, B5, B4, B3, A15 } + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define FORCE_NKRO + + +#define RGB_DI_PIN B1 + +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +#define RGBLED_NUM 87 + +#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 200 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 + +#define ENCODERS_PAD_A { B11 } +#define ENCODERS_PAD_B { B10 } diff --git a/keyboards/mwstudio/alicekk/keymaps/default/keymap.c b/keyboards/mwstudio/alicekk/keymaps/default/keymap.c new file mode 100644 index 00000000000..fef4de02441 --- /dev/null +++ b/keyboards/mwstudio/alicekk/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2022 TW59420 + * + * 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_DEL, 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_SPACE, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [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, _______, + _______, RGB_TOG, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RGB_MOD, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/mwstudio/alicekk/keymaps/via/keymap.c b/keyboards/mwstudio/alicekk/keymaps/via/keymap.c new file mode 100644 index 00000000000..e81fb90c4e4 --- /dev/null +++ b/keyboards/mwstudio/alicekk/keymaps/via/keymap.c @@ -0,0 +1,96 @@ +/* Copyright 2022 TW59420 + * + * 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_DEL, 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_SPACE, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [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, _______, + _______, RGB_TOG, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RGB_MOD, _______, _______, _______, _______ + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + + +#ifdef ENCODER_ENABLE +#define ENCODERS 1 +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = {{6, 4}}; +static keypos_t encoder_ccw[ENCODERS] = {{7, 4}}; + + +void encoder_action_unregister(void) { +#ifdef ENCODERS + for (uint8_t index = 0; index < ENCODERS; ++index) { + if (encoder_state[index]) { + keyevent_t encoder_event = (keyevent_t) { + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1) + }; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +#endif +} + +void encoder_action_register(uint8_t index, bool clockwise) { + keyevent_t encoder_event = (keyevent_t) { + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1) + }; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +} + +void matrix_scan_user(void) { + encoder_action_unregister(); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + encoder_action_register(index, clockwise); + return false; +}; +#endif diff --git a/keyboards/mwstudio/alicekk/keymaps/via/rules.mk b/keyboards/mwstudio/alicekk/keymaps/via/rules.mk new file mode 100644 index 00000000000..541a15608ae --- /dev/null +++ b/keyboards/mwstudio/alicekk/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = no diff --git a/keyboards/mwstudio/alicekk/mcuconf.h b/keyboards/mwstudio/alicekk/mcuconf.h new file mode 100644 index 00000000000..460b5f58777 --- /dev/null +++ b/keyboards/mwstudio/alicekk/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2021 TW59420 + * + * 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/mwstudio/alicekk/readme.md b/keyboards/mwstudio/alicekk/readme.md new file mode 100644 index 00000000000..f37629e7bbe --- /dev/null +++ b/keyboards/mwstudio/alicekk/readme.md @@ -0,0 +1,22 @@ +# AliceKK + +![AliceKK](https://i.imgur.com/xfjynwgh.jpeg) + +Support STM32F103CBT6 keyboard. + +* Keyboard Maintainer: [TW59420](https://github.com/TW59420) +* Hardware Supported: STM32F103CBT6 + +Make example for this keyboard (after setting up your build environment): + + make mwstudio/alicekk:default + +Flashing example for this keyboard: + + make mwstudio/alicekk: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 +* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware +* **Keycode in layout**: Press the key mapped to RESET if it is available diff --git a/keyboards/mwstudio/alicekk/rules.mk b/keyboards/mwstudio/alicekk/rules.mk new file mode 100644 index 00000000000..3c4396fabfd --- /dev/null +++ b/keyboards/mwstudio/alicekk/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = STM32F103 + +# Bootloader selection +BOOTLOADER = stm32duino + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes + + From 4ba5102a50161ac2c5fee78656e3b165615bff4e Mon Sep 17 00:00:00 2001 From: moyi4681 Date: Sun, 3 Jul 2022 07:43:07 +0800 Subject: [PATCH 23/34] add bounce keyboard (#17030) --- keyboards/kbdfans/bounce/75/hotswap/config.h | 64 +++++++++++++++++++ keyboards/kbdfans/bounce/75/hotswap/hotswap.c | 16 +++++ keyboards/kbdfans/bounce/75/hotswap/hotswap.h | 34 ++++++++++ keyboards/kbdfans/bounce/75/hotswap/info.json | 9 +++ .../75/hotswap/keymaps/default/keymap.c | 55 ++++++++++++++++ .../bounce/75/hotswap/keymaps/via/keymap.c | 55 ++++++++++++++++ .../bounce/75/hotswap/keymaps/via/rules.mk | 2 + keyboards/kbdfans/bounce/75/hotswap/readme.md | 21 ++++++ keyboards/kbdfans/bounce/75/hotswap/rules.mk | 18 ++++++ keyboards/kbdfans/bounce/75/soldered/config.h | 64 +++++++++++++++++++ .../kbdfans/bounce/75/soldered/info.json | 10 +++ .../75/soldered/keymaps/default/keymap.c | 55 ++++++++++++++++ .../bounce/75/soldered/keymaps/via/keymap.c | 55 ++++++++++++++++ .../bounce/75/soldered/keymaps/via/rules.mk | 2 + .../kbdfans/bounce/75/soldered/readme.md | 21 ++++++ keyboards/kbdfans/bounce/75/soldered/rules.mk | 18 ++++++ .../kbdfans/bounce/75/soldered/soldered.c | 17 +++++ .../kbdfans/bounce/75/soldered/soldered.h | 34 ++++++++++ keyboards/kbdfans/bounce/pad/config.h | 34 ++++++++++ keyboards/kbdfans/bounce/pad/info.json | 9 +++ .../bounce/pad/keymaps/default/keymap.c | 28 ++++++++ .../kbdfans/bounce/pad/keymaps/via/keymap.c | 52 +++++++++++++++ .../kbdfans/bounce/pad/keymaps/via/rules.mk | 2 + keyboards/kbdfans/bounce/pad/pad.c | 16 +++++ keyboards/kbdfans/bounce/pad/pad.h | 35 ++++++++++ keyboards/kbdfans/bounce/pad/readme.md | 21 ++++++ keyboards/kbdfans/bounce/pad/rules.mk | 20 ++++++ 27 files changed, 767 insertions(+) create mode 100644 keyboards/kbdfans/bounce/75/hotswap/config.h create mode 100644 keyboards/kbdfans/bounce/75/hotswap/hotswap.c create mode 100644 keyboards/kbdfans/bounce/75/hotswap/hotswap.h create mode 100644 keyboards/kbdfans/bounce/75/hotswap/info.json create mode 100644 keyboards/kbdfans/bounce/75/hotswap/keymaps/default/keymap.c create mode 100644 keyboards/kbdfans/bounce/75/hotswap/keymaps/via/keymap.c create mode 100644 keyboards/kbdfans/bounce/75/hotswap/keymaps/via/rules.mk create mode 100644 keyboards/kbdfans/bounce/75/hotswap/readme.md create mode 100644 keyboards/kbdfans/bounce/75/hotswap/rules.mk create mode 100644 keyboards/kbdfans/bounce/75/soldered/config.h create mode 100644 keyboards/kbdfans/bounce/75/soldered/info.json create mode 100644 keyboards/kbdfans/bounce/75/soldered/keymaps/default/keymap.c create mode 100644 keyboards/kbdfans/bounce/75/soldered/keymaps/via/keymap.c create mode 100644 keyboards/kbdfans/bounce/75/soldered/keymaps/via/rules.mk create mode 100644 keyboards/kbdfans/bounce/75/soldered/readme.md create mode 100644 keyboards/kbdfans/bounce/75/soldered/rules.mk create mode 100644 keyboards/kbdfans/bounce/75/soldered/soldered.c create mode 100644 keyboards/kbdfans/bounce/75/soldered/soldered.h create mode 100644 keyboards/kbdfans/bounce/pad/config.h create mode 100644 keyboards/kbdfans/bounce/pad/info.json create mode 100644 keyboards/kbdfans/bounce/pad/keymaps/default/keymap.c create mode 100644 keyboards/kbdfans/bounce/pad/keymaps/via/keymap.c create mode 100644 keyboards/kbdfans/bounce/pad/keymaps/via/rules.mk create mode 100644 keyboards/kbdfans/bounce/pad/pad.c create mode 100644 keyboards/kbdfans/bounce/pad/pad.h create mode 100644 keyboards/kbdfans/bounce/pad/readme.md create mode 100644 keyboards/kbdfans/bounce/pad/rules.mk diff --git a/keyboards/kbdfans/bounce/75/hotswap/config.h b/keyboards/kbdfans/bounce/75/hotswap/config.h new file mode 100644 index 00000000000..e2c5b8bbb80 --- /dev/null +++ b/keyboards/kbdfans/bounce/75/hotswap/config.h @@ -0,0 +1,64 @@ +/* Copyright 2022 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B42 +#define PRODUCT_ID 0x7001 +#define DEVICE_VER 0x0003 +#define MANUFACTURER KBDFANS +#define PRODUCT BOUNCE75_HOTSWAP + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 +#define MATRIX_ROW_PINS { E6, B0, B1, B2, B3, B6 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN C6 +#define LED_PIN_ON_STATE 0 + +#define RGB_DI_PIN F0 +#ifdef RGB_DI_PIN +#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_DEFAULT_MODE (RGBLIGHT_EFFECT_RAINBOW_MOOD +8 ) +#define RGBLIGHT_DEFAULT_SPD 15 +#define RGBLED_NUM 4 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 10 +#define RGBLIGHT_VAL_STEP 10 +#define RGBLIGHT_SLEEP +#endif +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/hotswap/hotswap.c b/keyboards/kbdfans/bounce/75/hotswap/hotswap.c new file mode 100644 index 00000000000..702a9b096d6 --- /dev/null +++ b/keyboards/kbdfans/bounce/75/hotswap/hotswap.c @@ -0,0 +1,16 @@ +/* Copyright 2022 DZTECH + * + * 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 "hotswap.h" \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/hotswap/hotswap.h b/keyboards/kbdfans/bounce/75/hotswap/hotswap.h new file mode 100644 index 00000000000..3f8e7d106ce --- /dev/null +++ b/keyboards/kbdfans/bounce/75/hotswap/hotswap.h @@ -0,0 +1,34 @@ +/* Copyright 2022 DZTECH + * + * 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( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, \ + K500, K501, K502, K505, K508, K510, K511, K513, K514 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, KC_NO}, \ + { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, K508, KC_NO, K510, K511, KC_NO, K513, K514 } \ +} \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/hotswap/info.json b/keyboards/kbdfans/bounce/75/hotswap/info.json new file mode 100644 index 00000000000..a295eeabb17 --- /dev/null +++ b/keyboards/kbdfans/bounce/75/hotswap/info.json @@ -0,0 +1,9 @@ +{ + "keyboard_name": "bonce75hotswap", + "maintainer": "moyi4681", + "layouts": { + "LAYOUT_all": { + "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":"PrtSc", "x":14, "y":0}, {"label":"Pause", "x":15.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "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":"Home", "x":15.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":"Page Up", "x":15.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":"Page Down", "x":15.25, "y":3.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":1.75}, {"label":"\u2191", "x":14.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, {"label":"\u2190", "x":13.25, "y":5.5}, {"label":"\u2193", "x":14.25, "y":5.5}, {"label":"\u2192", "x":15.25, "y":5.5}] + } + } +} \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/hotswap/keymaps/default/keymap.c b/keyboards/kbdfans/bounce/75/hotswap/keymaps/default/keymap.c new file mode 100644 index 00000000000..6b83eefcdc7 --- /dev/null +++ b/keyboards/kbdfans/bounce/75/hotswap/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2022 DZTECH + * + * 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( + 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_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_END, + 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/hotswap/keymaps/via/keymap.c b/keyboards/kbdfans/bounce/75/hotswap/keymaps/via/keymap.c new file mode 100644 index 00000000000..6b83eefcdc7 --- /dev/null +++ b/keyboards/kbdfans/bounce/75/hotswap/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2022 DZTECH + * + * 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( + 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_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_END, + 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/hotswap/keymaps/via/rules.mk b/keyboards/kbdfans/bounce/75/hotswap/keymaps/via/rules.mk new file mode 100644 index 00000000000..36b7ba9cbc9 --- /dev/null +++ b/keyboards/kbdfans/bounce/75/hotswap/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kbdfans/bounce/75/hotswap/readme.md b/keyboards/kbdfans/bounce/75/hotswap/readme.md new file mode 100644 index 00000000000..f472db3cb0a --- /dev/null +++ b/keyboards/kbdfans/bounce/75/hotswap/readme.md @@ -0,0 +1,21 @@ +# BONCE75 HOTSWAP + +A customizable 75% HOTSWAP keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: KBDFANS +* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/) + +Make example for this keyboard (after setting up your build environment): + + make kbdfans/bounce/75/hotswap:default + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` 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). \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/hotswap/rules.mk b/keyboards/kbdfans/bounce/75/hotswap/rules.mk new file mode 100644 index 00000000000..85eec9079f3 --- /dev/null +++ b/keyboards/kbdfans/bounce/75/hotswap/rules.mk @@ -0,0 +1,18 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kbdfans/bounce/75/soldered/config.h b/keyboards/kbdfans/bounce/75/soldered/config.h new file mode 100644 index 00000000000..7d18cddc2af --- /dev/null +++ b/keyboards/kbdfans/bounce/75/soldered/config.h @@ -0,0 +1,64 @@ +/* Copyright 2022 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B42 +#define PRODUCT_ID 0x7000 +#define DEVICE_VER 0x0003 +#define MANUFACTURER KBDFANS +#define PRODUCT BOUNCE75_SOLDERED + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 +#define MATRIX_ROW_PINS { E6, B0, B1, B2, B3, B6 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN C6 +#define LED_PIN_ON_STATE 0 + +#define RGB_DI_PIN B7 +#ifdef RGB_DI_PIN +#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_DEFAULT_MODE (RGBLIGHT_EFFECT_RAINBOW_MOOD +8 ) +#define RGBLIGHT_DEFAULT_SPD 15 +#define RGBLED_NUM 4 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 10 +#define RGBLIGHT_VAL_STEP 10 +#define RGBLIGHT_SLEEP +#endif +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/soldered/info.json b/keyboards/kbdfans/bounce/75/soldered/info.json new file mode 100644 index 00000000000..40aa151e99c --- /dev/null +++ b/keyboards/kbdfans/bounce/75/soldered/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "bonce75soldered", + "url": "", + "maintainer": "moyi4681", + "layouts": { + "LAYOUT_all": { + "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":"PrtSc", "x":14, "y":0}, {"label":"Pause", "x":15.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"x":13, "y":1.25}, {"label":"Backspace", "x":14, "y":1.25}, {"label":"Home", "x":15.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":"Page Up", "x":15.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":"Page Down", "x":15.25, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"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":1.75}, {"label":"\u2191", "x":14.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, {"label":"\u2190", "x":13.25, "y":5.5}, {"label":"\u2193", "x":14.25, "y":5.5}, {"label":"\u2192", "x":15.25, "y":5.5}] + } + } +} \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/soldered/keymaps/default/keymap.c b/keyboards/kbdfans/bounce/75/soldered/keymaps/default/keymap.c new file mode 100644 index 00000000000..f696ed6d382 --- /dev/null +++ b/keyboards/kbdfans/bounce/75/soldered/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2022 DZTECH + * + * 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( + 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_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_DEL, KC_BSPC, KC_END, + 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_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_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/soldered/keymaps/via/keymap.c b/keyboards/kbdfans/bounce/75/soldered/keymaps/via/keymap.c new file mode 100644 index 00000000000..f696ed6d382 --- /dev/null +++ b/keyboards/kbdfans/bounce/75/soldered/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2022 DZTECH + * + * 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( + 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_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_DEL, KC_BSPC, KC_END, + 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_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_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/soldered/keymaps/via/rules.mk b/keyboards/kbdfans/bounce/75/soldered/keymaps/via/rules.mk new file mode 100644 index 00000000000..36b7ba9cbc9 --- /dev/null +++ b/keyboards/kbdfans/bounce/75/soldered/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kbdfans/bounce/75/soldered/readme.md b/keyboards/kbdfans/bounce/75/soldered/readme.md new file mode 100644 index 00000000000..7c59e0cedaf --- /dev/null +++ b/keyboards/kbdfans/bounce/75/soldered/readme.md @@ -0,0 +1,21 @@ +# BONCE75 SOLDERED + +A customizable 75% HOTSWAP keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: KBDFANS +* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/) + +Make example for this keyboard (after setting up your build environment): + + make kbdfans/bounce/75/soldered:default + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` 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/kbdfans/bounce/75/soldered/rules.mk b/keyboards/kbdfans/bounce/75/soldered/rules.mk new file mode 100644 index 00000000000..cb5238f27dc --- /dev/null +++ b/keyboards/kbdfans/bounce/75/soldered/rules.mk @@ -0,0 +1,18 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/soldered/soldered.c b/keyboards/kbdfans/bounce/75/soldered/soldered.c new file mode 100644 index 00000000000..a24bc9a36c6 --- /dev/null +++ b/keyboards/kbdfans/bounce/75/soldered/soldered.c @@ -0,0 +1,17 @@ +/* Copyright 2022 DZTECH + * + * 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 "soldered.h" \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/75/soldered/soldered.h b/keyboards/kbdfans/bounce/75/soldered/soldered.h new file mode 100644 index 00000000000..257a55b929b --- /dev/null +++ b/keyboards/kbdfans/bounce/75/soldered/soldered.h @@ -0,0 +1,34 @@ +/* Copyright 2022 DZTECH + * + * 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( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K312, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \ + K500, K501, K502, K506, K510, K511, K512, K513, K514 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, KC_NO}, \ + { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514 } \ +} \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/pad/config.h b/keyboards/kbdfans/bounce/pad/config.h new file mode 100644 index 00000000000..636aef64058 --- /dev/null +++ b/keyboards/kbdfans/bounce/pad/config.h @@ -0,0 +1,34 @@ +/* Copyright 2022 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "config_common.h" +#define VENDOR_ID 0x4B42 +#define PRODUCT_ID 0x7002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KBDfans +#define PRODUCT BOUNCE_PAD +#define MATRIX_ROWS 6 +#define MATRIX_COLS 4 +#define MATRIX_ROW_PINS { C7, B7, B6, B0, B1, B2 } +#define MATRIX_COL_PINS { B5, B4, D0, C2 } +#define UNUSED_PINS +#define DIODE_DIRECTION COL2ROW +#define LED_NUM_LOCK_PIN C6 +#define LED_PIN_ON_STATE 1 +#define DEBOUNCE 5 +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/kbdfans/bounce/pad/info.json b/keyboards/kbdfans/bounce/pad/info.json new file mode 100644 index 00000000000..e6db3066be2 --- /dev/null +++ b/keyboards/kbdfans/bounce/pad/info.json @@ -0,0 +1,9 @@ +{ + "keyboard_name": "bouncepad", + "maintainer": "moyi4681", + "layouts": { + "LAYOUT_numpad_6x4": { + "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"Num Lock", "x":0, "y":1.25}, {"label":"/", "x":1, "y":1.25}, {"label":"*", "x":2, "y":1.25}, {"label":"-", "x":3, "y":1.25}, {"label":"7", "x":0, "y":2.25}, {"label":"8", "x":1, "y":2.25}, {"label":"9", "x":2, "y":2.25}, {"label":"+", "x":3, "y":2.25, "h":2}, {"label":"4", "x":0, "y":3.25}, {"label":"5", "x":1, "y":3.25}, {"label":"6", "x":2, "y":3.25}, {"label":"1", "x":0, "y":4.25}, {"label":"2", "x":1, "y":4.25}, {"label":"3", "x":2, "y":4.25}, {"label":"Enter", "x":3, "y":4.25, "h":2}, {"label":"0", "x":0, "y":5.25, "w":2}, {"label":".", "x":2, "y":5.25}] + } + } +} \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/pad/keymaps/default/keymap.c b/keyboards/kbdfans/bounce/pad/keymaps/default/keymap.c new file mode 100644 index 00000000000..118c74debb5 --- /dev/null +++ b/keyboards/kbdfans/bounce/pad/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2022 DZTECH + * + * 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_numpad_6x4( /* Base */ + KC_ESC, KC_LCTL, KC_LALT, KC_BSPC, + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT + ), +}; \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/pad/keymaps/via/keymap.c b/keyboards/kbdfans/bounce/pad/keymaps/via/keymap.c new file mode 100644 index 00000000000..12916db402a --- /dev/null +++ b/keyboards/kbdfans/bounce/pad/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2022 DZTECH + * + * 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_numpad_6x4( /* Base */ + KC_ESC, KC_LCTL, KC_LALT, KC_BSPC, + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT_numpad_6x4( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), + [2] = LAYOUT_numpad_6x4( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), + [3] = LAYOUT_numpad_6x4( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), +}; \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/pad/keymaps/via/rules.mk b/keyboards/kbdfans/bounce/pad/keymaps/via/rules.mk new file mode 100644 index 00000000000..36b7ba9cbc9 --- /dev/null +++ b/keyboards/kbdfans/bounce/pad/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kbdfans/bounce/pad/pad.c b/keyboards/kbdfans/bounce/pad/pad.c new file mode 100644 index 00000000000..18c18838ca6 --- /dev/null +++ b/keyboards/kbdfans/bounce/pad/pad.c @@ -0,0 +1,16 @@ +/* Copyright 2022 DZTECH + * + * 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 "pad.h" \ No newline at end of file diff --git a/keyboards/kbdfans/bounce/pad/pad.h b/keyboards/kbdfans/bounce/pad/pad.h new file mode 100644 index 00000000000..a4bf9af55b1 --- /dev/null +++ b/keyboards/kbdfans/bounce/pad/pad.h @@ -0,0 +1,35 @@ +/* Copyright 2022 DZTECH + * + * 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_numpad_6x4( \ + K00, K01, K02, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, \ + K30, K31, K32, K33, \ + K40, K41, K42, \ + K51, K52, K53 \ +) \ +{ \ + { K00, K01, K02, K03 }, \ + { K10, K11, K12, K13 }, \ + { K20, K21, K22, KC_NO }, \ + { K30, K31, K32, K33 }, \ + { K40, K41, K42, KC_NO }, \ + { KC_NO,K51, K52, K53 } \ +} diff --git a/keyboards/kbdfans/bounce/pad/readme.md b/keyboards/kbdfans/bounce/pad/readme.md new file mode 100644 index 00000000000..ae0276ed28c --- /dev/null +++ b/keyboards/kbdfans/bounce/pad/readme.md @@ -0,0 +1,21 @@ +# BOUNCE PAD + +A customizable pad keyboard, include hotswap and soldered version. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: KBDFANS +* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/) + +Make example for this keyboard (after setting up your build environment): + + make kbdfans/bounce/pad:default + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` 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/kbdfans/bounce/pad/rules.mk b/keyboards/kbdfans/bounce/pad/rules.mk new file mode 100644 index 00000000000..e71a8b43137 --- /dev/null +++ b/keyboards/kbdfans/bounce/pad/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u2 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# 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 # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = numpad_6x4 From c5215d4a063b6c8293ddc431c6902437a32bdeec Mon Sep 17 00:00:00 2001 From: jack <0x6A73@pm.me> Date: Sat, 2 Jul 2022 17:43:29 -0600 Subject: [PATCH 24/34] initial (#17545) --- keyboards/doio/kb16/keymaps/default/keymap.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/keyboards/doio/kb16/keymaps/default/keymap.c b/keyboards/doio/kb16/keymaps/default/keymap.c index 0d229c753b8..df72bbe15a9 100644 --- a/keyboards/doio/kb16/keymaps/default/keymap.c +++ b/keyboards/doio/kb16/keymaps/default/keymap.c @@ -133,5 +133,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { [_BASE] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, }; #endif From a3119385a41fb7662d46e7e7062cd2a76dfc1870 Mon Sep 17 00:00:00 2001 From: duoshock <33636898+duoshock@users.noreply.github.com> Date: Sun, 3 Jul 2022 00:54:15 +0100 Subject: [PATCH 25/34] Add keyboard 'UM-80' (#17035) --- keyboards/merge/um80/config.h | 63 +++++++++ keyboards/merge/um80/info.json | 10 ++ keyboards/merge/um80/keymaps/default/keymap.c | 71 ++++++++++ .../merge/um80/keymaps/default/readme.md | 5 + keyboards/merge/um80/keymaps/default/rules.mk | 2 + keyboards/merge/um80/keymaps/via/config.h | 22 ++++ keyboards/merge/um80/keymaps/via/keymap.c | 71 ++++++++++ keyboards/merge/um80/keymaps/via/rules.mk | 6 + keyboards/merge/um80/readme.md | 22 ++++ keyboards/merge/um80/rules.mk | 22 ++++ keyboards/merge/um80/um80.c | 122 ++++++++++++++++++ keyboards/merge/um80/um80.h | 43 ++++++ 12 files changed, 459 insertions(+) create mode 100644 keyboards/merge/um80/config.h create mode 100644 keyboards/merge/um80/info.json create mode 100644 keyboards/merge/um80/keymaps/default/keymap.c create mode 100644 keyboards/merge/um80/keymaps/default/readme.md create mode 100644 keyboards/merge/um80/keymaps/default/rules.mk create mode 100644 keyboards/merge/um80/keymaps/via/config.h create mode 100644 keyboards/merge/um80/keymaps/via/keymap.c create mode 100644 keyboards/merge/um80/keymaps/via/rules.mk create mode 100644 keyboards/merge/um80/readme.md create mode 100644 keyboards/merge/um80/rules.mk create mode 100644 keyboards/merge/um80/um80.c create mode 100644 keyboards/merge/um80/um80.h diff --git a/keyboards/merge/um80/config.h b/keyboards/merge/um80/config.h new file mode 100644 index 00000000000..027d5b70556 --- /dev/null +++ b/keyboards/merge/um80/config.h @@ -0,0 +1,63 @@ +/* Copyright 2021 duoshock + * + * 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 "config_common.h" + +#define VENDOR_ID 0x4D65 +#define PRODUCT_ID 0x3241 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Merge +#define PRODUCT UM-80 + +#define MATRIX_ROWS 12 +#define MATRIX_COLS 8 + +#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, C7 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D6, D4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define SOFT_SERIAL_PIN D2 +#define SPLIT_USB_DETECT +#define MASTER_LEFT +#define SPLIT_MODS_ENABLE + +#define RGB_DI_PIN D3 +#define RGBLIGHT_SPLIT +#define RGBLED_NUM 100 +#define RGBLED_SPLIT { 48, 52 } +#ifdef RGB_MATRIX_ENABLE +# define DRIVER_LED_TOTAL RGBLED_NUM +# define RGB_MATRIX_SPLIT RGBLED_SPLIT +#endif +#define RGBLIGHT_SLEEP +#define RGBLIGHT_LIMIT_VAL 120 + +#define DEBOUNCE 5 + +#define AUDIO_PIN B6 + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(STARTUP_SOUND) +#endif + +#define ENCODERS_PAD_A { B4 } +#define ENCODERS_PAD_B { B5 } + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file diff --git a/keyboards/merge/um80/info.json b/keyboards/merge/um80/info.json new file mode 100644 index 00000000000..30031923a3a --- /dev/null +++ b/keyboards/merge/um80/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "UM-80", + "url": "https://mergedesign.store/um-80", + "maintainer": "duoshock", + "layouts": { + "LAYOUT_rspace_split_bksp": { + "layout": [{"label":"Esc", "x":1.5, "y":0}, {"label":"F1", "x":2.75, "y":0}, {"label":"F2", "x":3.75, "y":0}, {"label":"F3", "x":4.75, "y":0}, {"label":"F4", "x":5.75, "y":0}, {"label":"F5", "x":7, "y":0}, {"label":"F6", "x":8, "y":0}, {"label":"F7", "x":10.25, "y":0}, {"label":"F8", "x":11.25, "y":0}, {"label":"F9", "x":12.5, "y":0}, {"label":"F10", "x":13.5, "y":0}, {"label":"F11", "x":14.5, "y":0}, {"label":"F12", "x":15.5, "y":0}, {"label":"Del", "x":16.75, "y":0}, {"label":"Encoder", "x":18.25, "y":0}, {"label":"~", "x":1.5, "y":1.25}, {"label":"!", "x":2.5, "y":1.25}, {"label":"@", "x":3.5, "y":1.25}, {"label":"#", "x":4.5, "y":1.25}, {"label":"$", "x":5.5, "y":1.25}, {"label":"%", "x":6.5, "y":1.25}, {"label":"^", "x":7.5, "y":1.25}, {"label":"&", "x":9.75, "y":1.25}, {"label":"*", "x":10.75, "y":1.25}, {"label":"(", "x":11.75, "y":1.25}, {"label":")", "x":12.75, "y":1.25}, {"label":"_", "x":13.75, "y":1.25}, {"label":"+", "x":14.75, "y":1.25}, {"label":"~", "x":15.75, "y":1.25}, {"label":"Bksp", "x":16.75, "y":1.25}, {"label":"Home", "x":18.25, "y":1.25}, {"label":"M0", "x":0, "y":2.25}, {"label":"Tab", "x":1.5, "y":2.25, "w":1.5}, {"label":"Q", "x":3, "y":2.25}, {"label":"W", "x":4, "y":2.25}, {"label":"E", "x":5, "y":2.25}, {"label":"R", "x":6, "y":2.25}, {"label":"T", "x":7, "y":2.25}, {"label":"Y", "x":9.25, "y":2.25}, {"label":"U", "x":10.25, "y":2.25}, {"label":"I", "x":11.25, "y":2.25}, {"label":"O", "x":12.25, "y":2.25}, {"label":"P", "x":13.25, "y":2.25}, {"label":"{", "x":14.25, "y":2.25}, {"label":"}", "x":15.25, "y":2.25}, {"label":"|", "x":16.25, "y":2.25, "w":1.5}, {"label":"PgUp", "x":18.25, "y":2.25}, {"label":"M1", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.5, "y":3.25, "w":1.75}, {"label":"A", "x":3.25, "y":3.25}, {"label":"S", "x":4.25, "y":3.25}, {"label":"D", "x":5.25, "y":3.25}, {"label":"F", "x":6.25, "y":3.25}, {"label":"G", "x":7.25, "y":3.25}, {"label":"H", "x":9.5, "y":3.25}, {"label":"J", "x":10.5, "y":3.25}, {"label":"K", "x":11.5, "y":3.25}, {"label":"L", "x":12.5, "y":3.25}, {"label":":", "x":13.5, "y":3.25}, {"label":"\"", "x":14.5, "y":3.25}, {"label":"Enter", "x":15.5, "y":3.25, "w":2.25}, {"label":"PgDn", "x":18.25, "y":3.25}, {"label":"M2", "x":0, "y":4.25}, {"label":"Shift", "x":1.5, "y":4.25, "w":2.25}, {"label":"Z", "x":3.75, "y":4.25}, {"label":"X", "x":4.75, "y":4.25}, {"label":"C", "x":5.75, "y":4.25}, {"label":"V", "x":6.75, "y":4.25}, {"label":"B", "x":7.75, "y":4.25}, {"label":"N", "x":10, "y":4.25}, {"label":"M", "x":11, "y":4.25}, {"label":"<", "x":12, "y":4.25}, {"label":">", "x":13, "y":4.25}, {"label":"?", "x":14, "y":4.25}, {"label":"Shift", "x":15, "y":4.25, "w":1.75}, {"label":"\u2191", "x":17, "y":4.5}, {"label":"M3", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.5, "y":5.25, "w":1.25}, {"label":"Win", "x":2.75, "y":5.25, "w":1.25}, {"label":"Alt", "x":4, "y":5.25, "w":1.25}, {"x":5.25, "y":5.25, "w":1.25}, {"x":6.5, "y":5.25, "w":2.25}, {"x":10, "y":5.25, "w":2.75}, {"label":"Alt", "x":12.75, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":14.25, "y":5.25, "w":1.5}, {"label":"\u2190", "x":16, "y":5.5}, {"label":"\u2193", "x":17, "y":5.5}, {"label":"\u2192", "x":18, "y":5.5}] + } + } +} diff --git a/keyboards/merge/um80/keymaps/default/keymap.c b/keyboards/merge/um80/keymaps/default/keymap.c new file mode 100644 index 00000000000..04dea2c1be2 --- /dev/null +++ b/keyboards/merge/um80/keymaps/default/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2021 duoshock + * + * 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| F1| F2| F3| F4| F5| F6| | F7| F8| F9| F10| F11| F12| Del| |EC | + * '---------------------------' '-------------------------------' '---' + * .---------------------------. .-------------------------------. .---. + * |Esc| 1| 2| 3| 4| 5| 6| | 7| 8| 9| 0| -| =|` |Bsp| |Hom| + * .---. |-------------------------. .---------------------------------| |---| + * | 1| |Tab | Q| W| E| R| T| | Y| U| I| O| P| [| ]| \ | |PgU| + * |---| |-------------------------. '---------------------------------| |---| + * | 2| |CapsL | A| S| D| F| G| | H| J| K| L| ;| :| Retn | |PgD| + * |---| |----------------------------. '--------------------------------| .---. '---' + * | 3| |Shft | Z| X| C| V| B| | N| M| ,| ,| /| Shift| |Up | + * |---| |----------------------------| |---------------------------' .-----------. + * | 4| |Ctl |Gui |Alt |Fn0 |Space | | Space| Alt| Ctl| |Lef|Dow|Rig| + * '---' '----------------------------' '-----------------------' '-----------' + */ + +[0] = LAYOUT_rspace_split_bksp( + 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_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_GRV, KC_BSPC, KC_HOME, + KC_1, 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_2, 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_3, 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_4, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT +), + +[1] = LAYOUT_rspace_split_bksp( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + 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_rspace_split_bksp( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + 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_rspace_split_bksp( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + 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/merge/um80/keymaps/default/readme.md b/keyboards/merge/um80/keymaps/default/readme.md new file mode 100644 index 00000000000..a5bfc566d92 --- /dev/null +++ b/keyboards/merge/um80/keymaps/default/readme.md @@ -0,0 +1,5 @@ +# Default UM-80 Layout + +![UM-80 Layout Image](https://i.imgur.com/YsW6FSZ.jpeg) + +This is the default layout that comes flashed on every UM-80. diff --git a/keyboards/merge/um80/keymaps/default/rules.mk b/keyboards/merge/um80/keymaps/default/rules.mk new file mode 100644 index 00000000000..1888ce3a12a --- /dev/null +++ b/keyboards/merge/um80/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +WPM_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/merge/um80/keymaps/via/config.h b/keyboards/merge/um80/keymaps/via/config.h new file mode 100644 index 00000000000..c60f7b110a0 --- /dev/null +++ b/keyboards/merge/um80/keymaps/via/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 duoshock + * + * 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 RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE diff --git a/keyboards/merge/um80/keymaps/via/keymap.c b/keyboards/merge/um80/keymaps/via/keymap.c new file mode 100644 index 00000000000..04dea2c1be2 --- /dev/null +++ b/keyboards/merge/um80/keymaps/via/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2021 duoshock + * + * 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| F1| F2| F3| F4| F5| F6| | F7| F8| F9| F10| F11| F12| Del| |EC | + * '---------------------------' '-------------------------------' '---' + * .---------------------------. .-------------------------------. .---. + * |Esc| 1| 2| 3| 4| 5| 6| | 7| 8| 9| 0| -| =|` |Bsp| |Hom| + * .---. |-------------------------. .---------------------------------| |---| + * | 1| |Tab | Q| W| E| R| T| | Y| U| I| O| P| [| ]| \ | |PgU| + * |---| |-------------------------. '---------------------------------| |---| + * | 2| |CapsL | A| S| D| F| G| | H| J| K| L| ;| :| Retn | |PgD| + * |---| |----------------------------. '--------------------------------| .---. '---' + * | 3| |Shft | Z| X| C| V| B| | N| M| ,| ,| /| Shift| |Up | + * |---| |----------------------------| |---------------------------' .-----------. + * | 4| |Ctl |Gui |Alt |Fn0 |Space | | Space| Alt| Ctl| |Lef|Dow|Rig| + * '---' '----------------------------' '-----------------------' '-----------' + */ + +[0] = LAYOUT_rspace_split_bksp( + 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_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_GRV, KC_BSPC, KC_HOME, + KC_1, 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_2, 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_3, 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_4, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT +), + +[1] = LAYOUT_rspace_split_bksp( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + 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_rspace_split_bksp( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + 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_rspace_split_bksp( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + 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/merge/um80/keymaps/via/rules.mk b/keyboards/merge/um80/keymaps/via/rules.mk new file mode 100644 index 00000000000..cc9055e91e5 --- /dev/null +++ b/keyboards/merge/um80/keymaps/via/rules.mk @@ -0,0 +1,6 @@ +VIA_ENABLE = yes +WPM_ENABLE = yes +LTO_ENABLE = yes +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no diff --git a/keyboards/merge/um80/readme.md b/keyboards/merge/um80/readme.md new file mode 100644 index 00000000000..fe4c5e83925 --- /dev/null +++ b/keyboards/merge/um80/readme.md @@ -0,0 +1,22 @@ +# UM-80 + +![UM-80](https://i.imgur.com/JVEC4Ntl.jpeg) + +UM-80 is a split keyboard in 75% layout with RGB, macro keys, OLED screen and encoder housed in PLA 3D printed cases sold by Merge. [Product page](https://mergedesign.store/products/um-80) + +* Keyboard Maintainer: [duoshock](https://github.com/duoshock) +* Hardware Availability: [Merge Store](https://mergedesign.store/products/um-80) + +Make example for this keyboard (after setting up your build environment): + + make merge/um80: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 3 ways: + +* **Bootmagic reset**: Hold down the Esc key on the left side or '7' key on the right side and plug in the keyboard. +* **Physical reset button**: Briefly press the button on the back of the PCB. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available. \ No newline at end of file diff --git a/keyboards/merge/um80/rules.mk b/keyboards/merge/um80/rules.mk new file mode 100644 index 00000000000..8865137009a --- /dev/null +++ b/keyboards/merge/um80/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +SPLIT_KEYBOARD = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/merge/um80/um80.c b/keyboards/merge/um80/um80.c new file mode 100644 index 00000000000..4bb925c6c9a --- /dev/null +++ b/keyboards/merge/um80/um80.c @@ -0,0 +1,122 @@ +/* Copyright 2021 duoshock + * + * 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 "um80.h" + +#ifdef OLED_ENABLE +void suspend_power_down_kb(void) { + oled_off(); + suspend_power_down_user(); +} + +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_90; + } + + return rotation; +} + +//UM-80 logo +static void render_logo(void) { + static const char PROGMEM raw_logo[] = { + 0,0,0,0,0,0,0,0,0,0,128,192,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224,192,192,128,128,192, + 192,224,224,224,224,224,224,224,224,192,192,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,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,3,1,0,1,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,254,252,240,0,0,0,0,0,0,0,0,0,254,254,254,0,0,0,0,0,0,254,254,254, + 0,0,0,254,254,254,252,248,224,192,128,224,248,252,254,254,254,0,0,128,128,128,128,128,128,0,0,0,120,252,254,206, + 206,206,206,254,124,120,0,0,240,248,252,62,30,14,14,30,62,252,248,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,240,192,128,0,128,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,127,63,15,0,0,0,0,0,0,0,0,0,15,63,63,124,112,112,112,112,124,63,63,15,0,0,0,127,127,127,0,1,7,15, + 15,7,1,0,127,127,127,0,0,3,3,3,3,3,3,1,0,30,63,127,123,113,113,113,123,127,63,30,0,0,15,31,63,124,120,112,112,120, + 124,63,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,3,3,1,1,3,3,7,7,7,7,7,7,7,7,3,3,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,0,0,0,0,0,0,0,0,0,0,0,0,0 + }; + oled_write_raw_P(raw_logo, sizeof(raw_logo)); +} + + +// 32 * 18 Merge logo +static const char PROGMEM merge_logo[] = { + 0xf8, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x0e, + 0x06, 0x04, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xf8, 0xf0, 0xc0, + 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, + 0x80, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f, + 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 +}; + +uint8_t current_wpm = 0; + +static void print_status_narrow(void) { + oled_set_cursor(0,1); + oled_write_raw_P(merge_logo, sizeof(merge_logo)); + oled_set_cursor(0,5); + oled_write_P(PSTR("-----"), false); + oled_set_cursor(0,6); + oled_write_P(PSTR("LYR "), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("0"), false); + break; + case 1: + oled_write_P(PSTR("1"), false); + break; + case 2: + oled_write_P(PSTR("2"), false); + break; + case 3: + oled_write_P(PSTR("3"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR(" "), false); + oled_write_P(PSTR("CAP "), false); + oled_write_P(PSTR("."), led_usb_state.caps_lock); + oled_write_P(PSTR("NUM "), false); + oled_write_P(PSTR("."), led_usb_state.num_lock); + oled_write_P(PSTR("SCR "), false); + oled_write_P(PSTR("."), led_usb_state.scroll_lock); + //oled_write_ln_P(PSTR(" "), false); + oled_write_P(PSTR("-----"), false); + + // WPM counter Start + oled_set_cursor(0,13); + oled_write(" ", false); + oled_write(get_u8_str(get_current_wpm(), '0'), false); + oled_set_cursor(0,14); + oled_write(" WPM ", false); + // WPM counter End +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { return false; } + current_wpm = get_current_wpm(); + if (is_keyboard_master()) { + print_status_narrow(); + //render_logo(); + } else { + render_logo(); + //print_status_narrow(); + } + return false; +} + +#endif \ No newline at end of file diff --git a/keyboards/merge/um80/um80.h b/keyboards/merge/um80/um80.h new file mode 100644 index 00000000000..9e17b700210 --- /dev/null +++ b/keyboards/merge/um80/um80.h @@ -0,0 +1,43 @@ +/* Copyright 2021 duoshock + * + * 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 XXX KC_NO + +#define LAYOUT_rspace_split_bksp( \ + L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, \ + L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, R17, R37, \ + L27, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R27, R47, \ + L37, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36, R57, \ + L47, L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45, R56,\ + L57, L50, L51, L52, L53, L54, R50, R51, R52, R53, R54, R55 \ +) { \ + { L00, L01, L02, L03, L04, L05, L06, XXX }, \ + { L10, L11, L12, L13, L14, L15, L16, XXX }, \ + { L20, L21, L22, L23, L24, L25, XXX, L27 }, \ + { L30, L31, L32, L33, L34, L35, XXX, L37 }, \ + { L40, L41, L42, L43, L44, L45, XXX, L47 }, \ + { L50, L51, L52, L53, L54, XXX, XXX, L57 }, \ + { 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 }, \ + { R40, R41, R42, R43, R44, R45, XXX, R47 }, \ + { R50, R51, R52, R53, R54, R55, R56, R57 } \ +} From 1c43410e266429c97786c9f9217ab9708bb2754d Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Sat, 2 Jul 2022 19:55:46 -0700 Subject: [PATCH 26/34] [Keymap] Updates to drashna Keymaps and Userspace (#17543) --- .../charybdis/4x6/keymaps/drashna/config.h | 22 +- .../charybdis/4x6/keymaps/drashna/halconf.h | 3 +- .../charybdis/4x6/keymaps/drashna/keymap.c | 68 +++-- .../charybdis/4x6/keymaps/drashna/mcuconf.h | 19 +- .../charybdis/4x6/keymaps/drashna/rules.mk | 39 +-- .../5x6_right/keymaps/drashna/config.h | 5 - .../5x6_right/keymaps/drashna/keymap.c | 20 +- users/drashna/callbacks.c | 47 ++-- users/drashna/callbacks.h | 1 + users/drashna/config.h | 88 ++++--- .../autocorrection/autocorrection.c | 24 +- users/drashna/keyrecords/process_records.c | 36 +-- users/drashna/keyrecords/process_records.h | 99 +++---- users/drashna/keyrecords/tap_dances.c | 2 +- users/drashna/keyrecords/tap_dances.h | 2 +- users/drashna/keyrecords/tapping.c | 6 +- users/drashna/keyrecords/unicode.c | 135 ++++++---- users/drashna/keyrecords/unicode.h | 1 + users/drashna/oled/oled_stuff.c | 247 +++++++++++------- users/drashna/oled/oled_stuff.h | 175 +++++++------ users/drashna/oled/sh110x.c | 58 ++-- users/drashna/rgb/rgb_matrix_stuff.c | 60 +++-- users/drashna/rgb/rgb_stuff.c | 92 ++++--- users/drashna/rules.mk | 5 +- users/drashna/split/transport_sync.c | 12 +- users/drashna/split/transport_sync.h | 15 +- 26 files changed, 759 insertions(+), 522 deletions(-) diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/config.h b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/config.h index 6098c80f113..2b6e11ec61b 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/config.h +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/config.h @@ -18,10 +18,10 @@ #undef MATRIX_COL_PINS #define MATRIX_COL_PINS \ - { B0, B1, B10, B3, B4, B5 } + { B0, B1, B12, B3, B4, B5 } #undef MATRIX_COL_PINS_RIGHT #define MATRIX_COL_PINS_RIGHT \ - { B0, B1, B10, B3, B4, B5 } + { B0, B1, B12, B3, B4, B5 } #undef MATRIX_ROW_PINS #define MATRIX_ROW_PINS \ @@ -30,8 +30,12 @@ #define MATRIX_ROW_PINS_RIGHT \ { B15, A2, B8, A8, B9 } +#define UNUSED_PINS { B6, C14, C15 } + #define DIODE_DIRECTION ROW2COL #define SPLIT_HAND_PIN A3 +#undef MASTER_RIGHT +// #define USB_VBUS_PIN B10 #undef RGB_DI_PIN #define RGB_DI_PIN A1 @@ -46,6 +50,13 @@ #define DEBUG_LED_PIN C13 +#define AUDIO_PIN B7 +#define AUDIO_PWM_DRIVER PWMD4 +#define AUDIO_PWM_CHANNEL 2 +#define AUDIO_PWM_PAL_MODE 2 +#define AUDIO_STATE_TIMER GPTD3 +#define AUDIO_INIT_DELAY + #undef SOFT_SERIAL_PIN // #define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode. #define SERIAL_USART_TX_PIN A9 @@ -77,9 +88,12 @@ #define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 64 #undef PMW3360_CS_PIN -#define PMW3360_CS_PIN B14 +#define PMW3360_CS_PIN A15 // b14 #define PMW3360_CS_MODE 3 #define PMW3360_CS_DIVISOR 64 +#define PMW3360_LIFTOFF_DISTANCE 0b1111 +#undef ROTATIONAL_TRANSFORM_ANGLE +#define ROTATIONAL_TRANSFORM_ANGLE -65 #define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200 #define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400 @@ -90,3 +104,5 @@ #undef RGB_MATRIX_MAXIMUM_BRIGHTNESS #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 + +#define CHARYBDIS_CONFIG_SYNC diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/halconf.h b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/halconf.h index 97a288d7bdc..3d9f1873174 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/halconf.h +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/halconf.h @@ -16,11 +16,12 @@ #pragma once #define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE +#define HAL_USE_GPT TRUE #define HAL_USE_SERIAL TRUE // #define HAL_USE_I2C TRUE #define HAL_USE_SPI TRUE #define SPI_USE_WAIT TRUE #define SPI_SELECT_MODE SPI_SELECT_MODE_PAD -// #define HAL_USE_GPT TRUE #include_next diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c index a671300b78b..1268d1a8ba5 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c @@ -26,8 +26,8 @@ KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, UC_CLUE, \ SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \ LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ - OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ - KC_GRV, OS_LALT, OS_LGUI, TT(_MOUSE), KC_ENT, \ + OS_LSFT,CTL_T(K21),ALT_T(K22),GUI_T(K23),K24,K25, K26,K27,RGUI_T(K28),RALT_T(K29),RCTL_T(K2A), OS_RSFT, \ + SFT_T(KC_GRV), UC_IRNY, OS_LGUI, TT(_MOUSE), KC_ENT, \ KC_SPC, BK_LWER, DL_RAIS \ ) @@ -58,38 +58,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ ), - - - [_MOUSE] = LAYOUT_charybdis_4x6( - _______, _______, _______, _______, _______, _______, DRGSCRL, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, SNP_TOG, - _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING, - _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______ - ), [_GAMEPAD] = LAYOUT_charybdis_4x6( KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, _______, _______, _______, _______, _______, _______, KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______, KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______, KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______ + KC_V, _______, _______, _______, TG_GAME, + KC_SPC, KC_H, _______ ), [_DIABLO] = LAYOUT_charybdis_4x6( KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, _______, _______, _______, _______, _______, _______, KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, _______, _______, _______, _______, _______, _______, KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______ + KC_G, _______, _______, TO(_DIABLOII), TG_DBLO, + KC_LSFT, KC_LCTL, _______ ), [_DIABLOII] = LAYOUT_charybdis_4x6( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_GRV, _______, _______, _______, _______, _______, _______, KC_TAB, KC_A, KC_T, KC_Q, KC_I, KC_M, _______, _______, _______, _______, _______, _______, KC_S, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, _______, _______, KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, + KC_DIABLO_CLEAR, _______, _______, _______, TG(_DIABLOII), + SFT_T(KC_SPACE), ALT_T(KC_Q), _______ + ), + [_MOUSE] = LAYOUT_charybdis_4x6( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_WH_U, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, _______, + _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING, + _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, DRGSCRL, _______, + _______, SNIPING, SNIPING, _______, _______, _______, _______, _______ ), @@ -112,18 +110,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_ADJUST] = LAYOUT_charybdis_4x6_wrapper( - QK_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_NOMODE, KC_NOMODE,KC_BLOCKS,KC_REGIONAL,_______,_______, QK_BOOT, + QK_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_SUPER, KC_NOMODE,KC_BLOCKS,KC_REGIONAL,TG_GAME,TG_DBLO, QK_BOOT, VRSN, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EE_CLR, KEYLOCK, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, TG_MODS, UC_MOD, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY, - QK_RBT, AUTO_CTN, _______, KC_NUKE, _______, + QK_RBT, AUTO_CTN, _______, _______, KC_NUKE, _______, _______, _______ ) }; // clang-format on -void matrix_init_keyemap(void) { setPinInputHigh(A0); } +void matrix_init_keymap(void) { + setPinInputHigh(A0); +#ifdef RGB_MATRIX_ENABLE + g_led_config.flags[53] = g_led_config.flags[54] = g_led_config.flags[55] = + g_led_config.flags[0] = g_led_config.flags[1] = g_led_config.flags[2] = g_led_config.flags[3] = + g_led_config.flags[29] = g_led_config.flags[30] = g_led_config.flags[31] = g_led_config.flags[32] = + LED_FLAG_MODIFIER; +#endif +} void matrix_scan_keymap(void) { if (!readPin(A0)) { @@ -144,3 +150,25 @@ void matrix_output_unselect_delay(uint8_t line, bool key_pressed) { __asm__ volatile("nop" ::: "memory"); } } + + +#ifdef SWAP_HANDS_ENABLE +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + /* Left hand, matrix positions */ + {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}}, + {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}}, + {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}}, + {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}}, + {{2, 9}, {4, 9}, {5, 9}, {1, 9}, {0, 9}, {3, 9}}, + /* Right hand, matrix positions */ + {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}}, + {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}}, + {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}}, + {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}}, + {{0, 4}, {3, 4}, {2, 4}, {5, 4}, {4, 4}, {2, 4}}, + }; + +# ifdef ENCODER_MAP_ENABLE +const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {1, 0}; +# endif +#endif diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/mcuconf.h index 0f60612d792..5712bb45743 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/mcuconf.h +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/mcuconf.h @@ -17,19 +17,18 @@ #pragma once #include_next "mcuconf.h" -#undef STM32_I2C_USE_I2C1 -#define STM32_I2C_USE_I2C1 TRUE -// #undef STM32_I2C_I2C1_RX_DMA_STREAM -// #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) -#undef STM32_I2C_I2C1_TX_DMA_STREAM -#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 1) +#undef STM32_PWM_USE_ADVANCED +#define STM32_PWM_USE_ADVANCED TRUE + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE #undef STM32_PWM_USE_TIM2 #define STM32_PWM_USE_TIM2 TRUE -#undef STM32_PWM_USE_TIM3 -#define STM32_PWM_USE_TIM3 TRUE +#undef STM32_PWM_USE_TIM4 +#define STM32_PWM_USE_TIM4 TRUE #undef STM32_SPI_USE_SPI1 #define STM32_SPI_USE_SPI1 TRUE @@ -37,8 +36,8 @@ #undef STM32_SERIAL_USE_USART1 #define STM32_SERIAL_USE_USART1 TRUE -#undef STM32_GPT_USE_TIM4 -#define STM32_GPT_USE_TIM4 TRUE +#undef STM32_GPT_USE_TIM3 +#define STM32_GPT_USE_TIM3 TRUE #undef STM32_ST_USE_TIMER #define STM32_ST_USE_TIMER 5 diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/rules.mk b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/rules.mk index ab86b1b8ba7..d9c1a5a9baf 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/rules.mk +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/rules.mk @@ -1,24 +1,33 @@ # MCU name MCU = STM32F411 +BOARD = BLACKPILL_STM32_F411 # Bootloader selection -BOOTLOADER = stm32-dfu -# BOOTLOADER := tinyuf2 +BOOTLOADER := tinyuf2 -LTO_ENABLE := no +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = yes # Audio output +AUDIO_SUPPORTED = yes # is set to no in kb, needs to be forcibly enabled -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -KEYBOARD_SHARED_EP = yes -MOUSE_SHARED_EP = yes +KEYBOARD_SHARED_EP = yes +MOUSE_SHARED_EP = yes -EEPROM_DRIVER = spi -WS2812_DRIVER = pwm -SERIAL_DRIVER = usart - -MOUSEKEY_ENABLE = yes -NKRO_ENABLE = yes -CONSOLE_ENABLE = yes +EEPROM_DRIVER = spi +WS2812_DRIVER = pwm +SERIAL_DRIVER = usart +AUDIO_DRIVER = pwm_hardware +BACKLIGHT_DRIVER = pwm AUTOCORRECTION_ENABLE = yes - -DEBOUNCE_TYPE = asym_eager_defer_pk +CAPS_WORD_ENABLE = yes +SWAP_HANDS_ENABLE = yes +TAP_DANCE_ENABLE = yes +DEBOUNCE_TYPE = asym_eager_defer_pk +WPM_ENABLE = yes +LTO_ENABLE = no diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h index 31539062b33..daaad5f5e35 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h +++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h @@ -28,8 +28,3 @@ #define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200 #define ENCODER_DEFAULT_POS 0x3 - -#define SECURE_UNLOCK_SEQUENCE \ - { \ - { 2, 1 }, { 2, 2 }, { 2, 3 }, { 2, 4 } \ - } diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c index 223649e8bf0..1a46317a426 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c +++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c @@ -59,16 +59,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ ), - [_MOUSE] = LAYOUT_5x6_right( - _______, _______, _______, _______, _______, _______, DRGSCRL, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, SNP_TOG, - _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING, - _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______, - _______, _______, _______, _______, - _______, _______, KC_BTN3, - _______, _______, _______, - _______, _______, _______, _______ - ), [_GAMEPAD] = LAYOUT_5x6_right( KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, _______, _______, _______, _______, _______, _______, KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______, @@ -99,6 +89,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, _______, _______, KC_LCTL, KC_V, _______, _______ ), + [_MOUSE] = LAYOUT_5x6_right( + _______, _______, _______, _______, _______, _______, DRGSCRL, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, SNP_TOG, + _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING, + _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______, + _______, _______, _______, _______, + _______, _______, KC_BTN3, + _______, _______, _______, + _______, _______, _______, _______ + ), [_LOWER] = LAYOUT_5x6_right_wrapper( KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11, _______, _________________LOWER_L1__________________, _________________LOWER_R1__________________, _______, diff --git a/users/drashna/callbacks.c b/users/drashna/callbacks.c index 0ceb1aebe55..f9a3f598d36 100644 --- a/users/drashna/callbacks.c +++ b/users/drashna/callbacks.c @@ -55,11 +55,11 @@ void shutdown_user(void) { rgblight_enable_noeeprom(); rgblight_mode_noeeprom(1); rgblight_setrgb_red(); -#endif // RGBLIGHT_ENABLE +#endif // RGBLIGHT_ENABLE #ifdef RGB_MATRIX_ENABLE rgb_matrix_set_color_all(0xFF, 0x00, 0x00); rgb_matrix_update_pwm_buffers(); -#endif // RGB_MATRIX_ENABLE +#endif // RGB_MATRIX_ENABLE #ifdef OLED_ENABLE oled_off(); #endif @@ -88,7 +88,7 @@ void suspend_power_down_user(void) { __attribute__((weak)) void suspend_wakeup_init_keymap(void) {} void suspend_wakeup_init_user(void) { #ifdef OLED_ENABLE - oled_timer_reset(); + oled_timer_reset(); #endif suspend_wakeup_init_keymap(); } @@ -104,9 +104,9 @@ void matrix_scan_user(void) { startup_user(); } -#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. +#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. run_diablo_macro_check(); -#endif // TAP_DANCE_ENABLE +#endif // TAP_DANCE_ENABLE #ifdef CAPS_WORD_ENABLE caps_word_task(); #endif @@ -124,8 +124,10 @@ float doom_song[][2] = SONG(E1M1_DOOM); // on layer change, no matter where the change was initiated // Then runs keymap's layer change check -__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } -layer_state_t layer_state_set_user(layer_state_t state) { +__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { + return state; +} +layer_state_t layer_state_set_user(layer_state_t state) { if (!is_keyboard_master()) { return state; } @@ -136,7 +138,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { #endif #if defined(CUSTOM_RGBLIGHT) state = layer_state_set_rgb_light(state); -#endif // CUSTOM_RGBLIGHT +#endif // CUSTOM_RGBLIGHT #if defined(AUDIO_ENABLE) && !defined(__arm__) static bool is_gamepad_on = false; if (layer_state_cmp(state, _GAMEPAD) != is_gamepad_on) { @@ -153,28 +155,31 @@ layer_state_t layer_state_set_user(layer_state_t state) { } // Runs state check and changes underglow color and animation -__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; } -layer_state_t default_layer_state_set_user(layer_state_t state) { +__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { + return state; +} +layer_state_t default_layer_state_set_user(layer_state_t state) { if (!is_keyboard_master()) { return state; } state = default_layer_state_set_keymap(state); -#if 0 -# if defined(CUSTOM_RGBLIGHT) || defined(RGB_MATRIX_ENABLE) - state = default_layer_state_set_rgb(state); -# endif +#if defined(CUSTOM_RGBLIGHT) + state = default_layer_state_set_rgb_light(state); #endif return state; } __attribute__((weak)) void led_set_keymap(uint8_t usb_led) {} -void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); } +void led_set_user(uint8_t usb_led) { + led_set_keymap(usb_led); +} __attribute__((weak)) void eeconfig_init_keymap(void) {} void eeconfig_init_user(void) { userspace_config.raw = 0; userspace_config.rgb_layer_change = true; + userspace_config.autocorrection = true; eeconfig_update_user(userspace_config.raw); eeconfig_init_keymap(); } @@ -187,8 +192,8 @@ void matrix_slave_scan_user(void) { music_task(); # endif # ifdef AUDIO_INIT_DELAY - if (!is_keyboard_master()) { - static bool delayed_tasks_run = false; + if (!is_keyboard_master()) { + static bool delayed_tasks_run = false; static uint16_t delayed_task_timer = 0; if (!delayed_tasks_run) { if (!delayed_task_timer) { @@ -214,3 +219,11 @@ void matrix_slave_scan_user(void) { matrix_slave_scan_keymap(); } #endif + +__attribute__((weak)) void housekeeping_task_keymap(void) {} +void housekeeping_task_user(void) { +#if defined(SPLIT_KEYBOARD) && defined(SPLIT_TRANSACTION_IDS_USER) + housekeeping_task_transport_sync(); +#endif + housekeeping_task_keymap(); +} diff --git a/users/drashna/callbacks.h b/users/drashna/callbacks.h index f6ac6b88ded..15f8997619f 100644 --- a/users/drashna/callbacks.h +++ b/users/drashna/callbacks.h @@ -16,6 +16,7 @@ layer_state_t layer_state_set_keymap(layer_state_t state); layer_state_t default_layer_state_set_keymap(layer_state_t state); void led_set_keymap(uint8_t usb_led); void eeconfig_init_keymap(void); +void housekeeping_task_keymap(void); #ifdef CUSTOM_UNICODE_ENABLE void matrix_init_unicode(void); diff --git a/users/drashna/config.h b/users/drashna/config.h index 4a34f5d66a4..fd1530a100a 100644 --- a/users/drashna/config.h +++ b/users/drashna/config.h @@ -4,10 +4,10 @@ #pragma once // Use custom magic number so that when switching branches, EEPROM always gets reset -#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1339 +#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1339 #ifdef IS_COMMAND -#undef IS_COMMAND +# undef IS_COMMAND #endif #define IS_COMMAND() (((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) @@ -37,8 +37,8 @@ // # define WPM_LAUNCH_CONTROL // # define WPM_ALLOW_COUNT_REGRESSOIN // # define WPM_UNFILTERED -# define WPM_SAMPLE_SECONDS 10 -# define WPM_SAMPLE_PERIODS 50 +# define WPM_SAMPLE_SECONDS 10 +# define WPM_SAMPLE_PERIODS 50 # define WPM_ESTIMATED_WORD_SIZE 5 #endif @@ -51,34 +51,34 @@ # define GOODBYE_SONG SONG(SONIC_RING) # define DEFAULT_LAYER_SONGS \ { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) } -# define UNICODE_SONG_MAC SONG(MARIO_THEME) -# define UNICODE_SONG_LNX SONG(MARIO_POWERUP) -# define UNICODE_SONG_WIN SONG(MARIO_ONEUP) -# define UNICODE_SONG_BSD SONG(RICK_ROLL) +# define UNICODE_SONG_MAC SONG(MARIO_THEME) +# define UNICODE_SONG_LNX SONG(MARIO_POWERUP) +# define UNICODE_SONG_WIN SONG(MARIO_ONEUP) +# define UNICODE_SONG_BSD SONG(RICK_ROLL) # define UNICODE_SONG_WINC SONG(RICK_ROLL) # else # define STARTUP_SONG SONG(STARTUP_SOUND) # define GOODBYE_SONG SONG(GOODBYE_SOUND) # define DEFAULT_LAYER_SONGS \ { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(WORKMAN_SOUND) } -# define UNICODE_SONG_MAC SONG(QWERTY_SOUND) -# define UNICODE_SONG_LNX SONG(COLEMAK_SOUND) -# define UNICODE_SONG_WIN SONG(DVORAK_SOUND) -# define UNICODE_SONG_BSD SONG(WORKMAN_SOUND) +# define UNICODE_SONG_MAC SONG(QWERTY_SOUND) +# define UNICODE_SONG_LNX SONG(COLEMAK_SOUND) +# define UNICODE_SONG_WIN SONG(DVORAK_SOUND) +# define UNICODE_SONG_BSD SONG(WORKMAN_SOUND) # define UNICODE_SONG_WINC SONG(PLOVER_GOODBYE_SOUND) # endif -#endif // !AUDIO_ENABLE +#endif // !AUDIO_ENABLE #define UNICODE_SELECTED_MODES UC_WINC, UC_MAC #ifdef RGBLIGHT_ENABLE # define RGBLIGHT_SLEEP -# define RGBLIGHT_EFFECT_TWINKLE_LIFE 250 +# define RGBLIGHT_EFFECT_TWINKLE_LIFE 250 # define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 24 -#endif // RGBLIGHT_ENABLE +#endif // RGBLIGHT_ENABLE #ifdef RGB_MATRIX_ENABLE -# define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot) +# define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot) // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened) # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects @@ -179,20 +179,26 @@ # define ENABLE_RGB_MATRIX_MULTISPLASH # define ENABLE_RGB_MATRIX_SOLID_SPLASH # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -# endif // AVR -#endif // RGB_MATRIX_ENABLE +# endif // AVR +#endif // RGB_MATRIX_ENABLE #ifdef OLED_ENABLE -# ifdef SPLIT_KEYBOARD -# define OLED_UPDATE_INTERVAL 60 -# else -# define OLED_UPDATE_INTERVAL 15 +# ifndef OLED_UPDATE_INTERVAL +# ifdef OLED_DRIVER_SH1107 +# define OLED_UPDATE_INTERVAL 75 +# else +# ifdef SPLIT_KEYBOARD +# define OLED_UPDATE_INTERVAL 60 +# else +# define OLED_UPDATE_INTERVAL 15 +# endif +# endif # endif # define OLED_DISABLE_TIMEOUT # ifdef OLED_FONT_H # undef OLED_FONT_H # endif -# define OLED_FONT_H "oled/drashna_font.h" +# define OLED_FONT_H "oled/drashna_font.h" # define OLED_FONT_END 255 // # define OLED_FONT_5X5 // # define OLED_FONT_AZTECH @@ -223,14 +229,13 @@ // #define WPM_SAMPLE_PERIODS 50 // #define WPM_LAUNCH_CONTROL - #ifndef ONESHOT_TAP_TOGGLE # define ONESHOT_TAP_TOGGLE 2 -#endif // !ONESHOT_TAP_TOGGLE +#endif // !ONESHOT_TAP_TOGGLE #ifndef ONESHOT_TIMEOUT # define ONESHOT_TIMEOUT 3000 -#endif // !ONESHOT_TIMEOUT +#endif // !ONESHOT_TIMEOUT #define IGNORE_MOD_TAP_INTERRUPT_PER_KEY #define PERMISSIVE_HOLD_PER_KEY @@ -238,7 +243,6 @@ #define RETRO_TAPPING_PER_KEY #define TAPPING_TERM_PER_KEY - #ifndef TAPPING_TOGGLE # define TAPPING_TOGGLE 1 #endif @@ -255,12 +259,12 @@ #ifdef CONVERT_TO_PROTON_C // pins that are available but not present on Pro Micro -# define A3 PAL_LINE(GPIOA, 3) -# define A4 PAL_LINE(GPIOA, 4) -# define A5 PAL_LINE(GPIOA, 5) -# define A6 PAL_LINE(GPIOA, 6) -# define A7 PAL_LINE(GPIOA, 7) -# define A8 PAL_LINE(GPIOA, 8) +# define A3 PAL_LINE(GPIOA, 3) +# define A4 PAL_LINE(GPIOA, 4) +# define A5 PAL_LINE(GPIOA, 5) +# define A6 PAL_LINE(GPIOA, 6) +# define A7 PAL_LINE(GPIOA, 7) +# define A8 PAL_LINE(GPIOA, 8) # define A13 PAL_LINE(GPIOA, 13) # define A14 PAL_LINE(GPIOA, 14) # define A15 PAL_LINE(GPIOA, 15) @@ -291,12 +295,22 @@ # ifndef OLED_BRIGHTNESS # define OLED_BRIGHTNESS 50 # endif -# if !defined(STM32F4XX) -# undef OLED_UPDATE_INTERVAL -# define OLED_UPDATE_INTERVAL 75 -# endif +#endif + +#ifdef USE_I2CV1 +# define I2C1_CLOCK_SPEED 400000 +# define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2 #endif #define ENABLE_COMPILE_KEYCODE #define BOTH_SHIFTS_TURNS_ON_CAPS_WORD + +#ifndef SECURE_UNLOCK_SEQUENCE +# define SECURE_UNLOCK_SEQUENCE \ + { \ + {2, 1}, {2, 2}, {2, 3}, { \ + 2, 4 \ + } \ + } +#endif diff --git a/users/drashna/keyrecords/autocorrection/autocorrection.c b/users/drashna/keyrecords/autocorrection/autocorrection.c index 682d6fd49c9..90fdba8f5eb 100644 --- a/users/drashna/keyrecords/autocorrection/autocorrection.c +++ b/users/drashna/keyrecords/autocorrection/autocorrection.c @@ -52,7 +52,7 @@ void autocorrect_enable(void) { */ void autocorrect_disable(void) { userspace_config.autocorrection = false; - typo_buffer_size = 0; + typo_buffer_size = 0; eeconfig_update_user(userspace_config.raw); } @@ -62,7 +62,7 @@ void autocorrect_disable(void) { */ void autocorrect_toggle(void) { userspace_config.autocorrection = !userspace_config.autocorrection; - typo_buffer_size = 0; + typo_buffer_size = 0; eeconfig_update_user(userspace_config.raw); } @@ -98,15 +98,15 @@ __attribute__((weak)) bool process_autocorrect_user(uint16_t *keycode, keyrecord } *keycode &= 0xFF; // Get the basic keycode. return true; -#ifndef NO_ACTION_TAPPING +# ifndef NO_ACTION_TAPPING // Exclude tap-hold keys when they are held down // and mask for base keycode when they are tapped. case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: -# ifdef NO_ACTION_LAYER +# ifdef NO_ACTION_LAYER // Exclude Layer Tap, if layers are disabled // but action tapping is still enabled. return false; -# endif +# endif case QK_MOD_TAP ... QK_MOD_TAP_MAX: // Exclude hold keycode if (!record->tap.count) { @@ -114,25 +114,25 @@ __attribute__((weak)) bool process_autocorrect_user(uint16_t *keycode, keyrecord } *keycode &= 0xFF; break; -#else +# else case QK_MOD_TAP ... QK_MOD_TAP_MAX: case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: // Exclude if disabled return false; -#endif +# endif // Exclude swap hands keys when they are held down // and mask for base keycode when they are tapped. case QK_SWAP_HANDS ... QK_SWAP_HANDS_MAX: -#ifdef SWAP_HANDS_ENABLE +# ifdef SWAP_HANDS_ENABLE if (*keycode >= 0x56F0 || !record->tap.count) { return false; } *keycode &= 0xFF; break; -#else +# else // Exclude if disabled return false; -#endif +# endif } // Disable autocorrect while a mod other than shift is active. @@ -166,9 +166,9 @@ __attribute__((weak)) bool apply_autocorrect(uint8_t backspaces, const char *str */ bool process_autocorrection(uint16_t keycode, keyrecord_t *record) { uint8_t mods = get_mods(); -#ifndef NO_ACTION_ONESHOT +# ifndef NO_ACTION_ONESHOT mods |= get_oneshot_mods(); -#endif +# endif if ((keycode >= AUTOCORRECT_ON && keycode <= AUTOCORRECT_TOGGLE) && record->event.pressed) { if (keycode == AUTOCORRECT_ON) { diff --git a/users/drashna/keyrecords/process_records.c b/users/drashna/keyrecords/process_records.c index 240156e8161..c328451b759 100644 --- a/users/drashna/keyrecords/process_records.c +++ b/users/drashna/keyrecords/process_records.c @@ -20,8 +20,12 @@ bool host_driver_disabled = false; * * This handles the keycodes at the keymap level, useful for keyboard specific customization */ -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } -__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; } +__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + return true; +} +__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { + return true; +} /** * @brief Main user keycode handler @@ -46,10 +50,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // If console is enabled, it will print the matrix position and status of each key pressed #ifdef KEYLOGGER_ENABLE uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %b, time: %5u, int: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count); -#endif // KEYLOGGER_ENABLE +#endif // KEYLOGGER_ENABLE #if defined(OLED_ENABLE) && defined(CUSTOM_OLED_DRIVER) process_record_user_oled(keycode, record); -#endif // OLED +#endif // OLED if (!(process_record_keymap(keycode, record) && process_record_secrets(keycode, record) #ifdef CUSTOM_RGB_MATRIX @@ -90,34 +94,34 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } break; - case VRSN: // Prints firmware version + case VRSN: // Prints firmware version if (record->event.pressed) { send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY); } break; - case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them + case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them #ifdef TAP_DANCE_ENABLE if (record->event.pressed) { for (uint8_t index = 0; index < 4; index++) { diablo_timer[index].key_interval = 0; } } -#endif // TAP_DANCE_ENABLE +#endif // TAP_DANCE_ENABLE break; - case KC_CCCV: // One key copy/paste + case KC_CCCV: // One key copy/paste if (record->event.pressed) { copy_paste_timer = timer_read(); } else { - if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy + if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy tap_code16(LCTL(KC_C)); - } else { // Tap, paste + } else { // Tap, paste tap_code16(LCTL(KC_V)); } } break; - case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal + case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal #if defined(CUSTOM_RGBLIGHT) || defined(CUSTOM_RGB_MATRIX) if (record->event.pressed) { userspace_config.rgb_layer_change ^= 1; @@ -140,7 +144,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { # endif } } -#endif // CUSTOM_RGBLIGHT +#endif // CUSTOM_RGBLIGHT break; #if defined(CUSTOM_RGBLIGHT) || defined(CUSTOM_RGB_MATRIX) @@ -160,7 +164,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions + case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions if (record->event.pressed) { bool is_eeprom_updated; # if defined(CUSTOM_RGBLIGHT) && !defined(RGBLIGHT_DISABLE_KEYCODES) @@ -200,9 +204,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } break; } - } + } return true; } __attribute__((weak)) void post_process_record_keymap(uint16_t keycode, keyrecord_t *record) {} -void post_process_record_user(uint16_t keycode, keyrecord_t *record) { post_process_record_keymap(keycode, record); } +void post_process_record_user(uint16_t keycode, keyrecord_t *record) { + post_process_record_keymap(keycode, record); +} diff --git a/users/drashna/keyrecords/process_records.h b/users/drashna/keyrecords/process_records.h index e83e4ce3089..be31f992cba 100644 --- a/users/drashna/keyrecords/process_records.h +++ b/users/drashna/keyrecords/process_records.h @@ -13,30 +13,30 @@ #endif enum userspace_custom_keycodes { - VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info - KC_QWERTY, // Sets default layer to QWERTY - FIRST_DEFAULT_LAYER_KEYCODE = KC_QWERTY, // Sets default layer to QWERTY - KC_COLEMAK_DH, // Sets default layer to COLEMAK - KC_COLEMAK, // Sets default layer to COLEMAK - KC_DVORAK, // Sets default layer to DVORAK - LAST_DEFAULT_LAYER_KEYCODE = KC_DVORAK, // Sets default layer to WORKMAN - KC_DIABLO_CLEAR, // Clears all Diablo Timers - KC_RGB_T, // Toggles RGB Layer Indication mode - RGB_IDL, // RGB Idling animations - KC_SECRET_1, // test1 - KC_SECRET_2, // test2 - KC_SECRET_3, // test3 - KC_SECRET_4, // test4 - KC_SECRET_5, // test5 - KC_CCCV, // Hold to copy, tap to paste - KC_NUKE, // NUCLEAR LAUNCH DETECTED!!! - UC_FLIP, // (ಠ痊ಠ)┻━┻ - UC_TABL, // ┬─┬ノ( º _ ºノ) - UC_SHRG, // ¯\_(ツ)_/¯ - UC_DISA, // ಠ_ಠ + VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info + KC_QWERTY, // Sets default layer to QWERTY + FIRST_DEFAULT_LAYER_KEYCODE = KC_QWERTY, // Sets default layer to QWERTY + KC_COLEMAK_DH, // Sets default layer to COLEMAK + KC_COLEMAK, // Sets default layer to COLEMAK + KC_DVORAK, // Sets default layer to DVORAK + LAST_DEFAULT_LAYER_KEYCODE = KC_DVORAK, // Sets default layer to WORKMAN + KC_DIABLO_CLEAR, // Clears all Diablo Timers + KC_RGB_T, // Toggles RGB Layer Indication mode + RGB_IDL, // RGB Idling animations + KC_SECRET_1, // test1 + KC_SECRET_2, // test2 + KC_SECRET_3, // test3 + KC_SECRET_4, // test4 + KC_SECRET_5, // test5 + KC_CCCV, // Hold to copy, tap to paste + KC_NUKE, // NUCLEAR LAUNCH DETECTED!!! + UC_FLIP, // (ಠ痊ಠ)┻━┻ + UC_TABL, // ┬─┬ノ( º _ ºノ) + UC_SHRG, // ¯\_(ツ)_/¯ + UC_DISA, // ಠ_ಠ UC_IRNY, UC_CLUE, - KEYLOCK, // Locks keyboard by unmounting driver + KEYLOCK, // Locks keyboard by unmounting driver KC_NOMODE, KC_WIDE, KC_SCRIPT, @@ -44,11 +44,12 @@ enum userspace_custom_keycodes { KC_REGIONAL, KC_AUSSIE, KC_ZALGO, + KC_SUPER, KC_ACCEL, AUTOCORRECT_ON, AUTOCORRECT_OFF, AUTOCORRECT_TOGGLE, - NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes + NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes }; bool process_record_secrets(uint16_t keycode, keyrecord_t *record); @@ -58,37 +59,37 @@ void post_process_record_keymap(uint16_t keycode, keyrecord_t *record); bool process_record_unicode(uint16_t keycode, keyrecord_t *record); #endif -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) -#define ADJUST MO(_ADJUST) -#define TG_MODS OS_TOGG -#define TG_GAME TG(_GAMEPAD) -#define TG_DBLO TG(_DIABLO) -#define OS_LWR OSL(_LOWER) -#define OS_RSE OSL(_RAISE) +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define ADJUST MO(_ADJUST) +#define TG_MODS OS_TOGG +#define TG_GAME TG(_GAMEPAD) +#define TG_DBLO TG(_DIABLO) +#define OS_LWR OSL(_LOWER) +#define OS_RSE OSL(_RAISE) -#define KC_SEC1 KC_SECRET_1 -#define KC_SEC2 KC_SECRET_2 -#define KC_SEC3 KC_SECRET_3 -#define KC_SEC4 KC_SECRET_4 -#define KC_SEC5 KC_SECRET_5 +#define KC_SEC1 KC_SECRET_1 +#define KC_SEC2 KC_SECRET_2 +#define KC_SEC3 KC_SECRET_3 +#define KC_SEC4 KC_SECRET_4 +#define KC_SEC5 KC_SECRET_5 -#define QWERTY KC_QWERTY -#define DVORAK KC_DVORAK -#define COLEMAK KC_COLEMAK +#define QWERTY KC_QWERTY +#define DVORAK KC_DVORAK +#define COLEMAK KC_COLEMAK #define COLEMAKDH KC_COLEMAK_DH -#define DEFLYR1 FIRST_DEFAULT_LAYER_KEYCODE -#define DEFLYR2 (FIRST_DEFAULT_LAYER_KEYCODE + 1) -#define DEFLYR3 (FIRST_DEFAULT_LAYER_KEYCODE + 2) -#define DEFLYR4 (FIRST_DEFAULT_LAYER_KEYCODE + 3) +#define DEFLYR1 FIRST_DEFAULT_LAYER_KEYCODE +#define DEFLYR2 (FIRST_DEFAULT_LAYER_KEYCODE + 1) +#define DEFLYR3 (FIRST_DEFAULT_LAYER_KEYCODE + 2) +#define DEFLYR4 (FIRST_DEFAULT_LAYER_KEYCODE + 3) #if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 3) # define DEFLYR5 (FIRST_DEFAULT_LAYER_KEYCODE + 4) # define DEFLYR6 (FIRST_DEFAULT_LAYER_KEYCODE + 5) # define DEFLYR7 (FIRST_DEFAULT_LAYER_KEYCODE + 6) # define DEFLYR8 (FIRST_DEFAULT_LAYER_KEYCODE + 7) # if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 7) -# define DEFLYR9 (FIRST_DEFAULT_LAYER_KEYCODE + 8) +# define DEFLYR9 (FIRST_DEFAULT_LAYER_KEYCODE + 8) # define DEFLYR10 (FIRST_DEFAULT_LAYER_KEYCODE + 9) # define DEFLYR11 (FIRST_DEFAULT_LAYER_KEYCODE + 10) # define DEFLYR12 (FIRST_DEFAULT_LAYER_KEYCODE + 11) @@ -99,9 +100,9 @@ bool process_record_unicode(uint16_t keycode, keyrecord_t *record); # define KC_C1R3 SH_T(KC_TAB) #elif defined(DRASHNA_LP) # define KC_C1R3 TG(_GAMEPAD) -#else // SWAP_HANDS_ENABLE +#else // SWAP_HANDS_ENABLE # define KC_C1R3 KC_TAB -#endif // SWAP_HANDS_ENABLE +#endif // SWAP_HANDS_ENABLE #define BK_LWER LT(_LOWER, KC_BSPC) #define SP_LWER LT(_LOWER, KC_SPC) @@ -120,7 +121,7 @@ bool process_record_unicode(uint16_t keycode, keyrecord_t *record); #define OS_RCTL OSM(MOD_RCTL) #define OS_LALT OSM(MOD_LALT) #define OS_RALT OSM(MOD_RALT) -#define OS_MEH OSM(MOD_MEH) +#define OS_MEH OSM(MOD_MEH) #define OS_HYPR OSM(MOD_HYPR) #define ALT_APP ALT_T(KC_APP) @@ -138,9 +139,9 @@ We use custom codes here, so we can substitute the right stuff # define KC_D3_2 TD(TD_D3_2) # define KC_D3_3 TD(TD_D3_3) # define KC_D3_4 TD(TD_D3_4) -#else // TAP_DANCE_ENABLE +#else // TAP_DANCE_ENABLE # define KC_D3_1 KC_1 # define KC_D3_2 KC_2 # define KC_D3_3 KC_3 # define KC_D3_4 KC_4 -#endif // TAP_DANCE_ENABLE +#endif // TAP_DANCE_ENABLE diff --git a/users/drashna/keyrecords/tap_dances.c b/users/drashna/keyrecords/tap_dances.c index a1a74391649..6caf6b6b3ea 100644 --- a/users/drashna/keyrecords/tap_dances.c +++ b/users/drashna/keyrecords/tap_dances.c @@ -26,7 +26,7 @@ void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data) { if (state->count >= (sizeof(diablo_times) / sizeof(uint8_t))) { diablo_timer[diablo_keys->index].key_interval = 0; reset_tap_dance(state); - } else { // else set the interval (tapdance count starts at 1, array starts at 0, so offset by one) + } else { // else set the interval (tapdance count starts at 1, array starts at 0, so offset by one) diablo_timer[diablo_keys->index].key_interval = diablo_times[state->count - 1]; } } diff --git a/users/drashna/keyrecords/tap_dances.h b/users/drashna/keyrecords/tap_dances.h index d9baedc867a..81d1f07fe01 100644 --- a/users/drashna/keyrecords/tap_dances.h +++ b/users/drashna/keyrecords/tap_dances.h @@ -28,4 +28,4 @@ enum { TD_D3_3, TD_D3_4, }; -#endif // TAP_DANCE_ENABLE +#endif // TAP_DANCE_ENABLE diff --git a/users/drashna/keyrecords/tapping.c b/users/drashna/keyrecords/tapping.c index 9c4892b33d9..daba25bd728 100644 --- a/users/drashna/keyrecords/tapping.c +++ b/users/drashna/keyrecords/tapping.c @@ -29,10 +29,10 @@ __attribute__((weak)) bool get_hold_on_other_key_press(uint16_t keycode, keyreco // Do not select the hold action when another key is pressed. // return false; switch (keycode) { - case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: - return true; +// case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: +// return true; default: - return false; + return true; } } diff --git a/users/drashna/keyrecords/unicode.c b/users/drashna/keyrecords/unicode.c index c1fe8df2c3c..ea51b26061b 100644 --- a/users/drashna/keyrecords/unicode.c +++ b/users/drashna/keyrecords/unicode.c @@ -69,7 +69,7 @@ bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record, tra } return false; } else if (KC_1 <= keycode && keycode <= KC_0) { - if (is_shifted) { // skip shifted numbers, so that we can still use symbols etc. + if (is_shifted) { // skip shifted numbers, so that we can still use symbols etc. return process_record_keymap(keycode, record); } if (record->event.pressed) { @@ -92,42 +92,81 @@ DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_boxes, 0x1F170, 0x1F170 DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_regional, 0x1F1E6, 0x1F1E6, '0', '1', 0x2003); DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_aussie, - 0x0250, // a - 'q', // b - 0x0254, // c - 'p', // d - 0x01DD, // e - 0x025F, // f - 0x0183, // g - 0x0265, // h - 0x1D09, // i - 0x027E, // j - 0x029E, // k - 'l', // l - 0x026F, // m - 'u', // n - 'o', // o - 'd', // p - 'b', // q - 0x0279, // r - 's', // s - 0x0287, // t - 'n', // u - 0x028C, // v - 0x028D, // w - 0x2717, // x - 0x028E, // y - 'z', // z - 0x0269, // 1 - 0x3139, // 2 - 0x0190, // 3 - 0x3123, // 4 - 0x03DB, // 5 - '9', // 6 - 0x3125, // 7 - '8', // 8 - '6', // 9 - '0' // 0 + 0x0250, // a + 'q', // b + 0x0254, // c + 'p', // d + 0x01DD, // e + 0x025F, // f + 0x0183, // g + 0x0265, // h + 0x1D09, // i + 0x027E, // j + 0x029E, // k + 'l', // l + 0x026F, // m + 'u', // n + 'o', // o + 'd', // p + 'b', // q + 0x0279, // r + 's', // s + 0x0287, // t + 'n', // u + 0x028C, // v + 0x028D, // w + 0x2717, // x + 0x028E, // y + 'z', // z + 0x0269, // 1 + 0x3139, // 2 + 0x0190, // 3 + 0x3123, // 4 + 0x03DB, // 5 + '9', // 6 + 0x3125, // 7 + '8', // 8 + '6', // 9 + '0' // 0 +); + +DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_super, + 0x1D43, // a + 0x1D47, // b + 0x1D9C, // c + 0x1D48, // d + 0x1D49, // e + 0x1DA0, // f + 0x1D4D, // g + 0x02B0, // h + 0x2071, // i + 0x02B2, // j + 0x1D4F, // k + 0x1D4F, // l + 0x1D50, // m + 0x207F, // n + 0x1D52, // o + 0x1D56, // p + 0x06F9, // q + 0x02B3, // r + 0x02E2, // s + 0x1D57, // t + 0x1D58, // u + 0x1D5B, // v + 0x02B7, // w + 0x02E3, // x + 0x02B8, // y + 0x1DBB, // z + 0x00B9, // 1 + 0x00B2, // 2 + 0x00B3, // 3 + 0x2074, // 4 + 0x2075, // 5 + 0x2076, // 6 + 0x2077, // 7 + 0x2078, // 8 + 0x2079, // 9 + 0x2070 // 0 ); bool process_record_aussie(uint16_t keycode, keyrecord_t *record) { @@ -207,41 +246,41 @@ bool process_record_zalgo(uint16_t keycode, keyrecord_t *record) { bool process_record_unicode(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻ + case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻ if (record->event.pressed) { send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻"); } break; - case UC_TABL: // ┬─┬ノ( º _ ºノ) + case UC_TABL: // ┬─┬ノ( º _ ºノ) if (record->event.pressed) { send_unicode_string("┬─┬ノ( º _ ºノ)"); } break; - case UC_SHRG: // ¯\_(ツ)_/¯ + case UC_SHRG: // ¯\_(ツ)_/¯ if (record->event.pressed) { send_unicode_string("¯\\_(ツ)_/¯"); } break; - case UC_DISA: // ಠ_ಠ + case UC_DISA: // ಠ_ಠ if (record->event.pressed) { send_unicode_string("ಠ_ಠ"); } break; - case UC_IRNY: // ⸮ + case UC_IRNY: // ⸮ if (record->event.pressed) { register_unicode(0x2E2E); } break; - case UC_CLUE: // ‽ + case UC_CLUE: // ‽ if (record->event.pressed) { register_unicode(0x203D); } break; - case KC_NOMODE ... KC_ZALGO: + case KC_NOMODE ... KC_SUPER: if (record->event.pressed) { if (typing_mode != keycode - KC_NOMODE) { typing_mode = keycode - KC_NOMODE; @@ -280,6 +319,10 @@ bool process_record_unicode(uint16_t keycode, keyrecord_t *record) { return false; } } + } else if (typing_mode == UCTM_SUPER) { + if (((KC_A <= keycode) && (keycode <= KC_0))) { + return process_record_glyph_replacement(keycode, record, unicode_lut_translator_super); + } } else if (typing_mode == UCTM_AUSSIE) { return process_record_aussie(keycode, record); } else if (typing_mode == UCTM_ZALGO) { @@ -292,4 +335,6 @@ bool process_record_unicode(uint16_t keycode, keyrecord_t *record) { * @brief Initialize the default unicode mode on firmware startu * */ -void matrix_init_unicode(void) { unicode_input_mode_init(); } +void matrix_init_unicode(void) { + unicode_input_mode_init(); +} diff --git a/users/drashna/keyrecords/unicode.h b/users/drashna/keyrecords/unicode.h index dd261d3406a..6885d4dd7fc 100644 --- a/users/drashna/keyrecords/unicode.h +++ b/users/drashna/keyrecords/unicode.h @@ -11,6 +11,7 @@ enum unicode_typing_mode { UCTM_REGIONAL, UCTM_AUSSIE, UCTM_ZALGO, + UCTM_SUPER, }; extern uint8_t typing_mode; diff --git a/users/drashna/oled/oled_stuff.c b/users/drashna/oled/oled_stuff.c index 8c76897fbad..5baf5b558b2 100644 --- a/users/drashna/oled/oled_stuff.c +++ b/users/drashna/oled/oled_stuff.c @@ -34,7 +34,7 @@ uint32_t oled_timer = 0; char keylog_str[OLED_KEYLOGGER_LENGTH] = {0}; static uint16_t log_timer = 0; #ifdef OLED_DISPLAY_VERBOSE -static const char PROGMEM display_border[3] = {0x0, 0xFF, 0x0}; +const char PROGMEM display_border[3] = {0x0, 0xFF, 0x0}; #endif deferred_token kittoken; @@ -117,9 +117,9 @@ void oled_timer_reset(void) { * @brief Renders keylogger buffer to oled * */ -void render_keylogger_status(void) { +void render_keylogger_status(uint8_t col, uint8_t line) { #ifdef OLED_DISPLAY_VERBOSE - oled_set_cursor(1, 6); + oled_set_cursor(col, line); #endif oled_write_P(PSTR(OLED_RENDER_KEYLOGGER), false); oled_write(keylog_str, false); @@ -132,9 +132,9 @@ void render_keylogger_status(void) { * @brief Renders default layer state (aka layout) to oled * */ -void render_default_layer_state(void) { +void render_default_layer_state(uint8_t col, uint8_t line) { #ifdef OLED_DISPLAY_VERBOSE - oled_set_cursor(1, 1); + oled_set_cursor(col, line); #endif oled_write_P(PSTR(OLED_RENDER_LAYOUT_NAME), false); switch (get_highest_layer(default_layer_state)) { @@ -160,7 +160,7 @@ void render_default_layer_state(void) { * @brief Renders the active layers to the OLED * */ -void render_layer_state(void) { +void render_layer_state(uint8_t col, uint8_t line) { #ifdef OLED_DISPLAY_VERBOSE // clang-format off static const char PROGMEM tri_layer_image[][3][24] = { @@ -286,33 +286,33 @@ void render_layer_state(void) { layer_is[2] = 5; } - oled_set_cursor(1, 2); + oled_set_cursor(col, line); oled_write_raw_P(tri_layer_image[layer_is[0]][0], sizeof(tri_layer_image[0][0])); - oled_set_cursor(5, 2); + oled_set_cursor(col + 4, line); oled_write_raw_P(tri_layer_image[layer_is[1]][0], sizeof(tri_layer_image[0][0])); - oled_set_cursor(9, 2); + oled_set_cursor(col + 8, line); oled_write_raw_P(tri_layer_image[layer_is[2]][0], sizeof(tri_layer_image[0][0])); - oled_set_cursor(14, 2); + oled_set_cursor(col + 13, line); oled_write_P(PSTR("Diablo2"), layer_state_is(_DIABLOII)); oled_advance_page(true); - oled_set_cursor(1, 3); + oled_set_cursor(col, line + 1); oled_write_raw_P(tri_layer_image[layer_is[0]][1], sizeof(tri_layer_image[0][0])); - oled_set_cursor(5, 3); + oled_set_cursor(col + 4, line + 1); oled_write_raw_P(tri_layer_image[layer_is[1]][1], sizeof(tri_layer_image[0][0])); - oled_set_cursor(9, 3); + oled_set_cursor(col + 8, line + 1); oled_write_raw_P(tri_layer_image[layer_is[2]][1], sizeof(tri_layer_image[0][0])); - oled_set_cursor(14, 3); + oled_set_cursor(col + 13, line + 1); oled_write_P(PSTR("Diablo3"), layer_state_is(_DIABLO)); oled_advance_page(true); - oled_set_cursor(1, 4); + oled_set_cursor(col, line + 2); oled_write_raw_P(tri_layer_image[layer_is[0]][2], sizeof(tri_layer_image[0][0])); - oled_set_cursor(5, 4); + oled_set_cursor(col + 4, line + 2); oled_write_raw_P(tri_layer_image[layer_is[1]][2], sizeof(tri_layer_image[0][0])); - oled_set_cursor(9, 4); + oled_set_cursor(col + 8, line + 2); oled_write_raw_P(tri_layer_image[layer_is[2]][2], sizeof(tri_layer_image[0][0])); - oled_set_cursor(14, 4); + oled_set_cursor(col + 13, line + 2); oled_write_P(PSTR("Media"), layer_state_is(_MEDIA)); #else oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false); @@ -327,9 +327,12 @@ void render_layer_state(void) { * * @param led_usb_state Current keyboard led state */ -void render_keylock_status(led_t led_usb_state) { +void render_keylock_status(led_t led_usb_state, uint8_t col, uint8_t line) { #if defined(OLED_DISPLAY_VERBOSE) - oled_set_cursor(1, 6); + oled_set_cursor(col, line); +#endif +#ifdef CAPS_WORD_ENABLE + led_usb_state.caps_lock |= is_caps_word_on(); #endif oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false); #if !defined(OLED_DISPLAY_VERBOSE) @@ -348,8 +351,9 @@ void render_keylock_status(led_t led_usb_state) { * @brief Renders the matrix scan rate to the host system * */ -void render_matrix_scan_rate(uint8_t padding) { +void render_matrix_scan_rate(uint8_t padding, uint8_t col, uint8_t line) { #ifdef DEBUG_MATRIX_SCAN_RATE + oled_set_cursor(col, line); oled_write_P(PSTR("MS:"), false); if (padding) { for (uint8_t n = padding; n > 0; n--) { @@ -365,10 +369,10 @@ void render_matrix_scan_rate(uint8_t padding) { * * @param modifiers Modifiers to check against (real, weak, onesheot, etc;) */ -void render_mod_status(uint8_t modifiers) { +void render_mod_status(uint8_t modifiers, uint8_t col, uint8_t line) { static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}}; #if defined(OLED_DISPLAY_VERBOSE) - oled_set_cursor(1, 5); + oled_set_cursor(col, line); #endif oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false); #if defined(OLED_DISPLAY_VERBOSE) @@ -393,7 +397,7 @@ void render_mod_status(uint8_t modifiers) { extern bool swap_hands; #endif -void render_bootmagic_status(void) { +void render_bootmagic_status(uint8_t col, uint8_t line) { /* Show Ctrl-Gui Swap options */ static const char PROGMEM logo[][2][3] = { {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, @@ -402,7 +406,8 @@ void render_bootmagic_status(void) { bool is_bootmagic_on; #ifdef OLED_DISPLAY_VERBOSE - oled_set_cursor(7, 3); + oled_set_cursor(col, line); + // oled_set_cursor(7, 3); is_bootmagic_on = !keymap_config.swap_lctl_lgui; #else is_bootmagic_on = keymap_config.swap_lctl_lgui; @@ -435,7 +440,7 @@ void render_bootmagic_status(void) { oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), keymap_config.no_gui); #endif #ifdef OLED_DISPLAY_VERBOSE - oled_set_cursor(7, 4); + oled_set_cursor(col, line + 1); if (keymap_config.swap_lctl_lgui) { oled_write_P(logo[1][1], is_bootmagic_on); } else { @@ -455,7 +460,7 @@ void render_bootmagic_status(void) { extern bool tap_toggling; #endif -void render_user_status(void) { +void render_user_status(uint8_t col, uint8_t line) { #ifdef AUDIO_ENABLE bool is_audio_on = false, l_is_clicky_on = false; # ifdef SPLIT_KEYBOARD @@ -472,7 +477,7 @@ void render_user_status(void) { # endif #endif #if defined(OLED_DISPLAY_VERBOSE) - oled_set_cursor(1, 5); + oled_set_cursor(col, line); #endif oled_write_P(PSTR(OLED_RENDER_USER_NAME), false); #if !defined(OLED_DISPLAY_VERBOSE) @@ -523,9 +528,27 @@ void render_user_status(void) { #endif } -void render_wpm(uint8_t padding) { -#ifdef WPM_ENABLE +void render_rgb_hsv(uint8_t col, uint8_t line) { + oled_set_cursor(col, line); + oled_write_P(PSTR("HSV: "), false); +#ifdef RGB_MATRIX_ENABLE + oled_write(get_u8_str(rgb_matrix_get_hue(), ' '), false); + oled_write_P(PSTR(", "), false); + oled_write(get_u8_str(rgb_matrix_get_sat(), ' '), false); + oled_write_P(PSTR(", "), false); + oled_write(get_u8_str(rgb_matrix_get_val(), ' '), false); +#elif RGBLIGHT_ENABLE + oled_write(get_u8_str(rgblight_get_hue(), ' '), false); + oled_write_P(PSTR(", "), false); + oled_write(get_u8_str(rgblight_get_sat(), ' '), false); + oled_write_P(PSTR(", "), false); + oled_write(get_u8_str(rgblight_get_val(), ' '), false); +#endif +} +void render_wpm(uint8_t padding, uint8_t col, uint8_t line) { +#ifdef WPM_ENABLE + oled_set_cursor(col, line); oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false); if (padding) { for (uint8_t n = padding; n > 0; n--) { @@ -591,7 +614,8 @@ void render_wpm_graph(uint8_t max_lines_graph, uint8_t vertical_offset) { } #if defined(POINTING_DEVICE_ENABLE) -void render_pointing_dpi_status(uint16_t cpi, uint8_t padding) { +void render_pointing_dpi_status(uint16_t cpi, uint8_t padding, uint8_t col, uint8_t line) { + oled_set_cursor(col, line); oled_write_P(PSTR("CPI:"), false); if (padding) { for (uint8_t n = padding - 1; n > 0; n--) { @@ -603,13 +627,6 @@ void render_pointing_dpi_status(uint16_t cpi, uint8_t padding) { } #endif -__attribute__((weak)) void oled_driver_render_logo_right(void) { -#if defined(OLED_DISPLAY_VERBOSE) - oled_set_cursor(0, 1); -#endif - render_default_layer_state(); -} - // WPM-responsive animation stuff here #define OLED_SLEEP_FRAMES 2 #define OLED_SLEEP_SPEED 10 // below this wpm value your animation will idle @@ -635,7 +652,7 @@ __attribute__((weak)) void oled_driver_render_logo_right(void) { static uint8_t animation_frame = 0; static uint8_t animation_type = 0; -void render_kitty(void) { +void render_kitty(uint8_t col, uint8_t line) { // Images credit j-inc(/James Incandenza) and pixelbenny. // Credit to obosob for initial animation approach. // heavily modified by drashna because he's a glutton for punishment @@ -712,11 +729,44 @@ void render_kitty(void) { // clang-format on for (uint8_t i = 0; i < 4; i++) { - oled_set_cursor(1, i + 1); + oled_set_cursor(col, line + i); oled_write_raw_P(animation[animation_type][animation_frame][i], OLED_ANIM_SIZE); } } +void render_unicode_mode(uint8_t col, uint8_t line) { +#ifdef CUSTOM_UNICODE_ENABLE + oled_set_cursor(col, line); + oled_write_ln_P(PSTR("Unicode:"), false); + switch (typing_mode) { + case UCTM_WIDE: + oled_write_P(PSTR(" Wide"), false); + break; + case UCTM_SCRIPT: + oled_write_P(PSTR(" Script"), false); + break; + case UCTM_BLOCKS: + oled_write_P(PSTR(" Blocks"), false); + break; + case UCTM_REGIONAL: + oled_write_P(PSTR(" Regional"), false); + break; + case UCTM_AUSSIE: + oled_write_P(PSTR(" Aussie"), false); + break; + case UCTM_ZALGO: + oled_write_P(PSTR(" Zalgo"), false); + break; + case UCTM_NO_MODE: + oled_write_P(PSTR(" Normal"), false); + break; + default: + oled_write_P(PSTR(" Unknown"), false); + break; + } +#endif +} + uint32_t kitty_animation_phases(uint32_t triger_time, void *cb_arg) { static uint32_t anim_frame_duration = 500; #ifdef CUSTOM_POINTING_DEVICE @@ -748,34 +798,8 @@ uint32_t kitty_animation_phases(uint32_t triger_time, void *cb_arg) { return anim_frame_duration; } -void oled_driver_render_logo_left(void) { -#if defined(OLED_DISPLAY_VERBOSE) - oled_set_cursor(0, 1); - render_kitty(); - -# if defined(KEYBOARD_handwired_tractyl_manuform) - oled_set_cursor(7, 0); - oled_write_P(PSTR("Tractyl"), true); -# elif defined(KEYBOARD_bastardkb_charybdis) - oled_set_cursor(6, 0); - oled_write_P(PSTR("Charybdis"), true); -# elif defined(KEYBOARD_splitkb_kyria) - oled_set_cursor(7, 0); - oled_write_P(PSTR("SplitKB"), true); -# else - oled_set_cursor(8, 0); - oled_write_P(PSTR("Left"), true); -# endif - oled_set_cursor(7, 1); -# if defined(WPM_ENABLE) - render_wpm(1); -# elif defined(DEBUG_MATRIX_SCAN_RATE) - render_matrix_scan_rate(2); -# endif - oled_set_cursor(7, 2); -# if (defined(KEYBOARD_bastardkb_charybdis) || defined(KEYBOARD_handwired_tractyl_manuform)) && defined(POINTING_DEVICE_ENABLE) - render_pointing_dpi_status(charybdis_get_pointer_sniping_enabled() ? charybdis_get_pointer_sniping_dpi() : charybdis_get_pointer_default_dpi(), 1); - +void render_mouse_mode(uint8_t col, uint8_t line) { +#if (defined(KEYBOARD_bastardkb_charybdis) || defined(KEYBOARD_handwired_tractyl_manuform)) && defined(POINTING_DEVICE_ENABLE) // credit and thanks to jaspertandy on discord for these images static const char PROGMEM mouse_logo[3][2][16] = {// mouse icon {{0, 0, 0, 252, 2, 2, 2, 58, 2, 2, 2, 252, 0, 0, 0, 0}, {0, 0, 63, 96, 64, 64, 64, 64, 64, 64, 64, 96, 63, 0, 0, 0}}, @@ -785,27 +809,20 @@ void oled_driver_render_logo_left(void) { {{0, 0, 112, 136, 156, 2, 15, 1, 15, 2, 140, 68, 56, 0, 0, 0}, {0, 0, 2, 6, 15, 28, 60, 124, 60, 28, 15, 6, 2, 0, 0, 0}}}; uint8_t image_index = 0; -# ifdef OLED_DISPLAY_TEST +# ifdef OLED_DISPLAY_TEST image_index = animation_frame; -# else +# else if (charybdis_get_pointer_sniping_enabled()) { image_index = 1; } else if (charybdis_get_pointer_dragscroll_enabled()) { image_index = 2; } -# endif - - oled_set_cursor(17, 1); - oled_write_raw_P(mouse_logo[image_index][0], 16); - oled_set_cursor(17, 2); - oled_write_raw_P(mouse_logo[image_index][1], 16); -# elif defined(WPM_ENABLE) && defined(DEBUG_MATRIX_SCAN_RATE) - render_matrix_scan_rate(2); # endif - oled_set_cursor(0, 5); -#else - render_default_layer_state(); + oled_set_cursor(col, line); + oled_write_raw_P(mouse_logo[image_index][0], 16); + oled_set_cursor(col, line + 1); + oled_write_raw_P(mouse_logo[image_index][1], 16); #endif } @@ -823,27 +840,73 @@ void render_status_right(void) { oled_set_cursor(8, 0); oled_write_P(PSTR("Right"), true); #endif - oled_driver_render_logo_right(); +#if defined(OLED_DISPLAY_VERBOSE) + render_default_layer_state(1, 1); +#else + render_default_layer_state(0, 0); +#endif + /* Show Keyboard Layout */ - render_layer_state(); - render_mod_status(get_mods() | get_oneshot_mods()); -#if !defined(OLED_DISPLAY_VERBOSE) && defined(WPM_ENABLE) && !defined(CONVERT_TO_PROTON_C) + render_layer_state(1, 2); + render_mod_status(get_mods() | get_oneshot_mods(), 1, 5); +#if !defined(OLED_DISPLAY_VERBOSE) && defined(WPM_ENABLE) && !defined(STM32F303xC) render_wpm(2); #endif - render_keylock_status(host_keyboard_led_state()); + render_keylock_status(host_keyboard_led_state(), 1, 6); } void render_status_left(void) { - oled_driver_render_logo_left(); +#if defined(OLED_DISPLAY_VERBOSE) + render_kitty(0, 1); +# if defined(KEYBOARD_handwired_tractyl_manuform) + oled_set_cursor(7, 0); + oled_write_P(PSTR("Tractyl"), true); +# elif defined(KEYBOARD_bastardkb_charybdis) + oled_set_cursor(6, 0); + oled_write_P(PSTR("Charybdis"), true); +# elif defined(KEYBOARD_splitkb_kyria) + oled_set_cursor(7, 0); + oled_write_P(PSTR("SplitKB"), true); +# elif defined(KEYBOARD_handwired_fingerpunch_rockon) + oled_set_cursor(7, 0); + oled_write_P(PSTR("Rock On"), true); +# else + oled_set_cursor(8, 0); + oled_write_P(PSTR("Left"), true); +# endif + +# if defined(WPM_ENABLE) + render_wpm(1, 7, 1); +# elif defined(DEBUG_MATRIX_SCAN_RATE) + render_matrix_scan_rate(1, 7, 1); +# endif +# if (defined(KEYBOARD_bastardkb_charybdis) || defined(KEYBOARD_handwired_tractyl_manuform)) && defined(POINTING_DEVICE_ENABLE) + render_pointing_dpi_status(charybdis_get_pointer_sniping_enabled() ? charybdis_get_pointer_sniping_dpi() : charybdis_get_pointer_default_dpi(), 1, 7, 2); + render_mouse_mode(17, 1); +# elif defined(WPM_ENABLE) && defined(DEBUG_MATRIX_SCAN_RATE) + render_matrix_scan_rate(1, 7, 2); +# endif /* Show Keyboard Layout */ - render_bootmagic_status(); - render_user_status(); + render_bootmagic_status(7, 3); + render_user_status(1, 5); - render_keylogger_status(); + render_keylogger_status(1, 6); +#else + render_default_layer_state(0, 0); + /* Show Keyboard Layout */ + render_bootmagic_status(7, 3); + render_user_status(1, 5); + + render_keylogger_status(1, 6); +#endif } -__attribute__((weak)) void oled_render_large_display(bool side) {} +__attribute__((weak)) void oled_render_large_display(bool side) { + if (!side) { + render_unicode_mode(1, 14); + } +} __attribute__((weak)) oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return rotation; @@ -895,14 +958,12 @@ bool oled_task_user(void) { #endif render_status_left(); #if defined(OLED_DISPLAY_128X128) - oled_set_cursor(0, 7); oled_render_large_display(true); #endif #ifndef OLED_DISPLAY_TEST } else { render_status_right(); # if defined(OLED_DISPLAY_128X128) - oled_set_cursor(0, 7); oled_render_large_display(false); # endif } diff --git a/users/drashna/oled/oled_stuff.h b/users/drashna/oled/oled_stuff.h index 4dea4b7be49..17bd9319d15 100644 --- a/users/drashna/oled/oled_stuff.h +++ b/users/drashna/oled/oled_stuff.h @@ -18,132 +18,135 @@ #include "quantum.h" #include "oled_driver.h" +#ifdef DEFFERED_EXEC_ENABLE extern deferred_token kittoken; +#endif void oled_driver_render_logo(void); bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); oled_rotation_t oled_init_keymap(oled_rotation_t rotation); void oled_timer_reset(void); -void render_keylogger_status(void); -void render_default_layer_state(void); -void render_layer_state(void); -void render_keylock_status(led_t led_usb_state); -void render_matrix_scan_rate(uint8_t padding); -void render_mod_status(uint8_t modifiers); -void render_bootmagic_status(void); -void render_user_status(void); +void render_keylogger_status(uint8_t col, uint8_t line); +void render_default_layer_state(uint8_t col, uint8_t line); +void render_layer_state(uint8_t col, uint8_t line); +void render_keylock_status(led_t led_usb_state, uint8_t col, uint8_t line); +void render_matrix_scan_rate(uint8_t padding, uint8_t col, uint8_t line); +void render_mod_status(uint8_t modifiers, uint8_t col, uint8_t line); +void render_bootmagic_status(uint8_t col, uint8_t line); +void render_user_status(uint8_t col, uint8_t line); void oled_driver_render_logo(void); -void render_wpm(uint8_t padding); -void render_pointing_dpi_status(uint16_t cpi, uint8_t padding); +void render_wpm(uint8_t padding, uint8_t col, uint8_t line); +void render_pointing_dpi_status(uint16_t cpi, uint8_t padding, uint8_t col, uint8_t line); void oled_driver_render_logo_left(void); void oled_driver_render_logo_right(void); void oled_render_large_display(bool side); -void render_wpm_graph(uint8_t max_lines_graph, uint8_t vertical_offset); +void render_wpm_graph(uint8_t max_lines_graph, uint8_t vertical_offset); +void render_kitty(uint8_t col, uint8_t line); +void render_unicode_mode(uint8_t col, uint8_t line); +void render_rgb_hsv(uint8_t col, uint8_t line); void oled_pan_section(bool left, uint16_t y_start, uint16_t y_end, uint16_t x_start, uint16_t x_end); - #if defined(OLED_DISPLAY_128X128) || defined(OLED_DISPLAY_128X64) # define OLED_DISPLAY_VERBOSE -# define OLED_RENDER_KEYLOGGER "Keylogger: " +# define OLED_RENDER_KEYLOGGER "Keylogger: " # ifndef OLED_KEYLOGGER_LENGTH -# define OLED_KEYLOGGER_LENGTH 9 +# define OLED_KEYLOGGER_LENGTH 9 # endif -# define OLED_RENDER_LAYOUT_NAME "Layout: " -# define OLED_RENDER_LAYOUT_QWERTY "Qwerty" +# define OLED_RENDER_LAYOUT_NAME "Layout: " +# define OLED_RENDER_LAYOUT_QWERTY "Qwerty" # define OLED_RENDER_LAYOUT_COLEMAK_DH "Colemak DH" -# define OLED_RENDER_LAYOUT_COLEMAK "Colemak" -# define OLED_RENDER_LAYOUT_DVORAK "Dvorak" -# define OLED_RENDER_LAYOUT_WORKMAN "Workman" -# define OLED_RENDER_LAYOUT_NORMAN "Norman" -# define OLED_RENDER_LAYOUT_MALTRON "Matron" -# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn" -# define OLED_RENDER_LAYOUT_CARPLAX "Carplax" +# define OLED_RENDER_LAYOUT_COLEMAK "Colemak" +# define OLED_RENDER_LAYOUT_DVORAK "Dvorak" +# define OLED_RENDER_LAYOUT_WORKMAN "Workman" +# define OLED_RENDER_LAYOUT_NORMAN "Norman" +# define OLED_RENDER_LAYOUT_MALTRON "Matron" +# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn" +# define OLED_RENDER_LAYOUT_CARPLAX "Carplax" -# define OLED_RENDER_LAYER_NAME "Layer:" -# define OLED_RENDER_LAYER_LOWER "Lower" -# define OLED_RENDER_LAYER_RAISE "Raise" -# define OLED_RENDER_LAYER_ADJUST "Adjust" -# define OLED_RENDER_LAYER_MODS "Mods" +# define OLED_RENDER_LAYER_NAME "Layer:" +# define OLED_RENDER_LAYER_LOWER "Lower" +# define OLED_RENDER_LAYER_RAISE "Raise" +# define OLED_RENDER_LAYER_ADJUST "Adjust" +# define OLED_RENDER_LAYER_MODS "Mods" -# define OLED_RENDER_LOCK_NAME "Lock: " -# define OLED_RENDER_LOCK_NUML "NUM" -# define OLED_RENDER_LOCK_CAPS "CAPS" -# define OLED_RENDER_LOCK_SCLK "SCLK" +# define OLED_RENDER_LOCK_NAME "Lock: " +# define OLED_RENDER_LOCK_NUML "NUM" +# define OLED_RENDER_LOCK_CAPS "CAPS" +# define OLED_RENDER_LOCK_SCLK "SCLK" -# define OLED_RENDER_MODS_NAME "Mods" -# define OLED_RENDER_MODS_SFT "Sft" -# define OLED_RENDER_MODS_CTL "Ctl" -# define OLED_RENDER_MODS_ALT "Alt" -# define OLED_RENDER_MODS_GUI "GUI" +# define OLED_RENDER_MODS_NAME "Mods" +# define OLED_RENDER_MODS_SFT "Sft" +# define OLED_RENDER_MODS_CTL "Ctl" +# define OLED_RENDER_MODS_ALT "Alt" +# define OLED_RENDER_MODS_GUI "GUI" -# define OLED_RENDER_BOOTMAGIC_NAME "Boot " -# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" -# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI" -# define OLED_RENDER_BOOTMAGIC_GRV "GRV" +# define OLED_RENDER_BOOTMAGIC_NAME "Boot " +# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" +# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI" +# define OLED_RENDER_BOOTMAGIC_GRV "GRV" # define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT" -# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP" -# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS" +# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP" +# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS" -# define OLED_RENDER_USER_NAME "USER:" -# define OLED_RENDER_USER_ANIM "Anim" -# define OLED_RENDER_USER_LAYR "Layr" -# define OLED_RENDER_USER_NUKE "Nuke" +# define OLED_RENDER_USER_NAME "USER:" +# define OLED_RENDER_USER_ANIM "Anim" +# define OLED_RENDER_USER_LAYR "Layr" +# define OLED_RENDER_USER_NUKE "Nuke" -# define OLED_RENDER_WPM_COUNTER "WPM: " +# define OLED_RENDER_WPM_COUNTER "WPM: " #else -# define OLED_RENDER_KEYLOGGER "KLogr" +# define OLED_RENDER_KEYLOGGER "KLogr" # ifndef OLED_KEYLOGGER_LENGTH -# define OLED_KEYLOGGER_LENGTH 5 +# define OLED_KEYLOGGER_LENGTH 5 # endif -# define OLED_RENDER_LAYOUT_NAME "Lyout" -# define OLED_RENDER_LAYOUT_QWERTY " QRTY" +# define OLED_RENDER_LAYOUT_NAME "Lyout" +# define OLED_RENDER_LAYOUT_QWERTY " QRTY" # define OLED_RENDER_LAYOUT_COLEMAK_DH " cmDH" -# define OLED_RENDER_LAYOUT_COLEMAK " COLE" -# define OLED_RENDER_LAYOUT_DVORAK " DVRK" -# define OLED_RENDER_LAYOUT_WORKMAN " WKMN" -# define OLED_RENDER_LAYOUT_NORMAN " NORM" -# define OLED_RENDER_LAYOUT_MALTRON " MLTN" -# define OLED_RENDER_LAYOUT_EUCALYN " ECLN" -# define OLED_RENDER_LAYOUT_CARPLAX " CRPX" +# define OLED_RENDER_LAYOUT_COLEMAK " COLE" +# define OLED_RENDER_LAYOUT_DVORAK " DVRK" +# define OLED_RENDER_LAYOUT_WORKMAN " WKMN" +# define OLED_RENDER_LAYOUT_NORMAN " NORM" +# define OLED_RENDER_LAYOUT_MALTRON " MLTN" +# define OLED_RENDER_LAYOUT_EUCALYN " ECLN" +# define OLED_RENDER_LAYOUT_CARPLAX " CRPX" -# define OLED_RENDER_LAYER_NAME "LAYER" -# define OLED_RENDER_LAYER_LOWER "Lower" -# define OLED_RENDER_LAYER_RAISE "Raise" -# define OLED_RENDER_LAYER_ADJUST "Adjst" -# define OLED_RENDER_LAYER_MODS " Mods" +# define OLED_RENDER_LAYER_NAME "LAYER" +# define OLED_RENDER_LAYER_LOWER "Lower" +# define OLED_RENDER_LAYER_RAISE "Raise" +# define OLED_RENDER_LAYER_ADJUST "Adjst" +# define OLED_RENDER_LAYER_MODS " Mods" -# define OLED_RENDER_LOCK_NAME "Lock:" -# define OLED_RENDER_LOCK_NUML "NumL" -# define OLED_RENDER_LOCK_CAPS "CapL" -# define OLED_RENDER_LOCK_SCLK "ScrL" +# define OLED_RENDER_LOCK_NAME "Lock:" +# define OLED_RENDER_LOCK_NUML "NumL" +# define OLED_RENDER_LOCK_CAPS "CapL" +# define OLED_RENDER_LOCK_SCLK "ScrL" -# define OLED_RENDER_MODS_NAME "Mods: " -# define OLED_RENDER_MODS_SFT "Shft" -# define OLED_RENDER_MODS_CTL "Ctrl" -# define OLED_RENDER_MODS_ALT "Alt\n" -# define OLED_RENDER_MODS_GUI "GUI\n" +# define OLED_RENDER_MODS_NAME "Mods: " +# define OLED_RENDER_MODS_SFT "Shft" +# define OLED_RENDER_MODS_CTL "Ctrl" +# define OLED_RENDER_MODS_ALT "Alt\n" +# define OLED_RENDER_MODS_GUI "GUI\n" -# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK" -# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" -# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI" -# define OLED_RENDER_BOOTMAGIC_GRV "GRV" +# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK" +# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" +# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI" +# define OLED_RENDER_BOOTMAGIC_GRV "GRV" # define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT" -# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP" -# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS" +# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP" +# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS" -# define OLED_RENDER_USER_NAME "USER:" -# define OLED_RENDER_USER_ANIM "Anim" -# define OLED_RENDER_USER_LAYR "Layr" -# define OLED_RENDER_USER_NUKE "Nuke" +# define OLED_RENDER_USER_NAME "USER:" +# define OLED_RENDER_USER_ANIM "Anim" +# define OLED_RENDER_USER_LAYR "Layr" +# define OLED_RENDER_USER_NUKE "Nuke" -# define OLED_RENDER_WPM_COUNTER "WPM: " +# define OLED_RENDER_WPM_COUNTER "WPM: " #endif - -extern char keylog_str[OLED_KEYLOGGER_LENGTH]; +extern char keylog_str[OLED_KEYLOGGER_LENGTH]; #ifndef OLED_WPM_GRAPH_MAX_WPM # define OLED_WPM_GRAPH_MAX_WPM 120 diff --git a/users/drashna/oled/sh110x.c b/users/drashna/oled/sh110x.c index aa081ca7324..9fed5a9d1a6 100644 --- a/users/drashna/oled/sh110x.c +++ b/users/drashna/oled/sh110x.c @@ -52,7 +52,7 @@ along with this program. If not, see . #define PAGE_ADDR 0x22 #define PAM_SETCOLUMN_LSB 0x00 #define PAM_SETCOLUMN_MSB 0x10 -#define PAM_PAGE_ADDR 0xB0 // 0xb0 -- 0xb7 +#define PAM_PAGE_ADDR 0xB0 // 0xb0 -- 0xb7 // Hardware Configuration Commands #define DISPLAY_START_LINE 0x40 @@ -109,9 +109,9 @@ along with this program. If not, see . #define I2C_DATA 0x40 #if defined(__AVR__) # define I2C_TRANSMIT_P(data) i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) -#else // defined(__AVR__) +#else // defined(__AVR__) # define I2C_TRANSMIT_P(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) -#endif // defined(__AVR__) +#endif // defined(__AVR__) #define I2C_TRANSMIT(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) #define I2C_WRITE_REG(mode, data, size) i2c_writeReg((OLED_DISPLAY_ADDRESS << 1), mode, data, size, OLED_I2C_TIMEOUT) @@ -122,7 +122,7 @@ along with this program. If not, see . // parts of the display unusable or don't get cleared correctly // and also allows for drawing & inverting uint8_t oled_buffer[OLED_MATRIX_SIZE]; -uint8_t * oled_cursor; +uint8_t *oled_cursor; OLED_BLOCK_TYPE oled_dirty = 0; bool oled_initialized = false; bool oled_active = false; @@ -131,7 +131,7 @@ bool oled_inverted = false; uint8_t oled_brightness = OLED_BRIGHTNESS; oled_rotation_t oled_rotation = 0; uint8_t oled_rotation_width = 0; -uint8_t oled_scroll_speed = 0; // this holds the speed after being remapped to ssd1306 internal values +uint8_t oled_scroll_speed = 0; // this holds the speed after being remapped to ssd1306 internal values uint8_t oled_scroll_start = 0; uint8_t oled_scroll_end = 7; #if OLED_TIMEOUT > 0 @@ -261,8 +261,12 @@ bool oled_init(oled_rotation_t rotation) { return true; } -__attribute__((weak)) oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return rotation; } -__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } +__attribute__((weak)) oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return rotation; +} +__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return rotation; +} void oled_clear(void) { memset(oled_buffer, 0, sizeof(oled_buffer)); @@ -299,9 +303,9 @@ static void calc_bounds_90(uint8_t update_start, uint8_t *cmd_array) { // Only the Page Addressing Mode is supported uint8_t start_page = bottom_block_top_page - (OLED_BLOCK_SIZE * update_start % OLED_DISPLAY_HEIGHT / 8); uint8_t start_column = OLED_BLOCK_SIZE * update_start / OLED_DISPLAY_HEIGHT * 8; - cmd_array[0] = PAM_PAGE_ADDR | start_page; - cmd_array[1] = PAM_SETCOLUMN_LSB | ((OLED_COLUMN_OFFSET + start_column) & 0x0f); - cmd_array[2] = PAM_SETCOLUMN_MSB | ((OLED_COLUMN_OFFSET + start_column) >> 4 & 0x0f); + cmd_array[0] = PAM_PAGE_ADDR | start_page; + cmd_array[1] = PAM_SETCOLUMN_LSB | ((OLED_COLUMN_OFFSET + start_column) & 0x0f); + cmd_array[2] = PAM_SETCOLUMN_MSB | ((OLED_COLUMN_OFFSET + start_column) >> 4 & 0x0f); } uint8_t crot(uint8_t a, int8_t n) { @@ -339,9 +343,9 @@ void oled_render(void) { // Set column & page position static uint8_t display_start[] = {I2C_CMD, PAM_PAGE_ADDR, PAM_SETCOLUMN_LSB, PAM_SETCOLUMN_MSB}; if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) { - calc_bounds(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start + calc_bounds(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start } else { - calc_bounds_90(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start + calc_bounds_90(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start } // Send column & page position @@ -369,7 +373,7 @@ void oled_render(void) { // For SH1106 or SH1107 the data chunk must be split into separate pieces for each page const uint8_t columns_in_block = (OLED_BLOCK_SIZE + OLED_DISPLAY_HEIGHT - 1) / OLED_DISPLAY_HEIGHT * 8; - const uint8_t num_pages = OLED_BLOCK_SIZE / columns_in_block; + const uint8_t num_pages = OLED_BLOCK_SIZE / columns_in_block; for (uint8_t i = 0; i < num_pages; ++i) { // Send column & page position for all pages except the first one if (i > 0) { @@ -414,7 +418,8 @@ void oled_advance_page(bool clearPageRemainder) { remaining = remaining / OLED_FONT_WIDTH; // Write empty character until next line - while (remaining--) oled_write_char(' ', false); + while (remaining--) + oled_write_char(' ', false); } else { // Next page index out of bounds? if (index + remaining >= OLED_MATRIX_SIZE) { @@ -465,7 +470,7 @@ void oled_write_char(const char data, bool invert) { _Static_assert(sizeof(font) >= ((OLED_FONT_END + 1 - OLED_FONT_START) * OLED_FONT_WIDTH), "OLED_FONT_END references outside array"); // set the reder buffer data - uint8_t cast_data = (uint8_t)data; // font based on unsigned type for index + uint8_t cast_data = (uint8_t)data; // font based on unsigned type for index if (cast_data < OLED_FONT_START || cast_data > OLED_FONT_END) { memset(oled_cursor, 0x00, OLED_FONT_WIDTH); } else { @@ -610,7 +615,7 @@ void oled_write_raw_P(const char *data, uint16_t size) { oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE)); } } -#endif // defined(__AVR__) +#endif // defined(__AVR__) bool oled_on(void) { if (!oled_initialized) { @@ -660,7 +665,9 @@ bool oled_off(void) { return !oled_active; } -bool is_oled_on(void) { return oled_active; } +bool is_oled_on(void) { + return oled_active; +} uint8_t oled_set_brightness(uint8_t level) { if (!oled_initialized) { @@ -678,7 +685,9 @@ uint8_t oled_set_brightness(uint8_t level) { return oled_brightness; } -uint8_t oled_get_brightness(void) { return oled_brightness; } +uint8_t oled_get_brightness(void) { + return oled_brightness; +} // Set the specific 8 lines rows of the screen to scroll. // 0 is the default for start, and 7 for end, which is the entire @@ -758,7 +767,9 @@ bool oled_scroll_off(void) { return !oled_scrolling; } -bool is_oled_scrolling(void) { return oled_scrolling; } +bool is_oled_scrolling(void) { + return oled_scrolling; +} bool oled_invert(bool invert) { if (!oled_initialized) { @@ -842,6 +853,9 @@ void oled_task(void) { #endif } - -__attribute__((weak)) bool oled_task_kb(void) { return oled_task_user(); } -__attribute__((weak)) bool oled_task_user(void) { return true; } +__attribute__((weak)) bool oled_task_kb(void) { + return oled_task_user(); +} +__attribute__((weak)) bool oled_task_user(void) { + return true; +} diff --git a/users/drashna/rgb/rgb_matrix_stuff.c b/users/drashna/rgb/rgb_matrix_stuff.c index 36a75027335..2c23c297846 100644 --- a/users/drashna/rgb/rgb_matrix_stuff.c +++ b/users/drashna/rgb/rgb_matrix_stuff.c @@ -15,7 +15,7 @@ void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode } switch (mode) { - case 1: // breathing + case 1: // breathing { uint16_t time = scale16by8(g_rgb_timer, speed / 8); hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); @@ -27,7 +27,7 @@ void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode } break; } - default: // Solid Color + default: // Solid Color { RGB rgb = hsv_to_rgb(hsv); for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) { @@ -59,6 +59,8 @@ void keyboard_post_init_rgb_matrix(void) { #endif if (userspace_config.rgb_layer_change) { rgb_matrix_set_flags(LED_FLAG_UNDERGLOW | LED_FLAG_KEYLIGHT | LED_FLAG_INDICATOR); + } else { + rgb_matrix_set_flags(LED_FLAG_ALL); } } @@ -70,7 +72,7 @@ bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) { } #endif switch (keycode) { - case RGB_IDL: // This allows me to use underglow as layer indication, or as normal + case RGB_IDL: // This allows me to use underglow as layer indication, or as normal #if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) if (record->event.pressed) { userspace_config.rgb_matrix_idle_anim ^= 1; @@ -86,9 +88,13 @@ bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) { return true; } -__attribute__((weak)) bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) { return true; } -void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - if (!rgb_matrix_indicators_advanced_keymap(led_min, led_max)) { return; } +__attribute__((weak)) bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) { + return true; +} +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + if (!rgb_matrix_indicators_advanced_keymap(led_min, led_max)) { + return; + } #if defined(RGBLIGHT_ENABLE) if (!userspace_config.rgb_layer_change) @@ -96,19 +102,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, if (userspace_config.rgb_layer_change) #endif { - switch (get_highest_layer(layer_state | default_layer_state)) { - case _DEFAULT_LAYER_1: - rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _DEFAULT_LAYER_2: - rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _DEFAULT_LAYER_3: - rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _DEFAULT_LAYER_4: - rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; + switch (get_highest_layer(layer_state & ~((layer_state_t)1 << _MOUSE))) { case _GAMEPAD: rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; @@ -124,9 +118,33 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, case _ADJUST: rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; + default: + if (layer_state_is(_MOUSE)) { + rgb_matrix_layer_helper(HSV_PURPLE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + } else { + switch (get_highest_layer(default_layer_state)) { + case _DEFAULT_LAYER_1: + rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _DEFAULT_LAYER_2: + rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _DEFAULT_LAYER_3: + rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _DEFAULT_LAYER_4: + rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + } + } + break; } } } -__attribute__((weak)) bool rgb_matrix_indicators_keymap(void) { return true; } -void rgb_matrix_indicators_user(void) { rgb_matrix_indicators_keymap(); } +__attribute__((weak)) bool rgb_matrix_indicators_keymap(void) { + return true; +} +void rgb_matrix_indicators_user(void) { + rgb_matrix_indicators_keymap(); +} diff --git a/users/drashna/rgb/rgb_stuff.c b/users/drashna/rgb/rgb_stuff.c index 7d2cf0c73d0..c283e58d26d 100644 --- a/users/drashna/rgb/rgb_stuff.c +++ b/users/drashna/rgb/rgb_stuff.c @@ -1,28 +1,30 @@ // Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) // SPDX-License-Identifier: GPL-2.0-or-later -#ifdef RGBLIGHT_ENABLE - -# include "drashna.h" -# include "rgb_stuff.h" -# include "eeprom.h" +#include "drashna.h" +#include "rgb_stuff.h" +#include "eeprom.h" bool has_initialized; -void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); } +void rgblight_sethsv_default_helper(uint8_t index) { + rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); +} void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) { rgblight_sethsv_noeeprom(hue, sat, val); // wait_us(175); // Add a slight delay between color and mode to ensure it's processed correctly rgblight_mode_noeeprom(mode); } -bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { return true; } +bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { + return true; +} -# if defined(RGBLIGHT_STARTUP_ANIMATION) -static bool is_enabled; -static bool is_rgblight_startup; -static HSV old_hsv; -static uint8_t old_mode; +#if defined(RGBLIGHT_STARTUP_ANIMATION) +static bool is_enabled; +static bool is_rgblight_startup; +static HSV old_hsv; +static uint8_t old_mode; deferred_token rgb_startup_token; uint32_t rgb_startup_animation(uint32_t triger_time, void *cb_arg) { @@ -44,10 +46,10 @@ uint32_t rgb_startup_animation(uint32_t triger_time, void *cb_arg) { } return is_rgblight_startup ? 10 : 0; } -# endif +#endif void keyboard_post_init_rgb_light(void) { -# if defined(RGBLIGHT_STARTUP_ANIMATION) +#if defined(RGBLIGHT_STARTUP_ANIMATION) is_enabled = rgblight_is_enabled(); if (userspace_config.rgb_layer_change) { layer_state_set_rgb_light(layer_state); @@ -56,27 +58,17 @@ void keyboard_post_init_rgb_light(void) { old_mode = rgblight_get_mode(); rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); is_rgblight_startup = true; - rgb_startup_token = defer_exec(300, rgb_startup_animation, NULL); -# endif + rgb_startup_token = defer_exec(300, rgb_startup_animation, NULL); +#endif if (userspace_config.rgb_layer_change) { layer_state_set_rgb_light(layer_state); } - } layer_state_t layer_state_set_rgb_light(layer_state_t state) { -# ifdef RGBLIGHT_ENABLE +#ifdef RGBLIGHT_ENABLE if (userspace_config.rgb_layer_change) { - switch (get_highest_layer(state | default_layer_state)) { - case _MOUSE: // mouse - if (!layer_state_cmp(state, _GAMEPAD) && !layer_state_cmp(state, _DIABLO)) { -# if defined(RGBLIGHT_EFFECT_TWINKLE) - rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5); -# else - rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3); -# endif - } - break; + switch (get_highest_layer(state & ~((layer_state_t)1 << _MOUSE))) { case _MEDIA: rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1); break; @@ -84,6 +76,7 @@ layer_state_t layer_state_set_rgb_light(layer_state_t state) { rgblight_set_hsv_and_mode(HSV_ORANGE, RGBLIGHT_MODE_SNAKE + 2); break; case _DIABLO: + case _DIABLOII: rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_BREATHING + 3); break; case _RAISE: @@ -95,23 +88,36 @@ layer_state_t layer_state_set_rgb_light(layer_state_t state) { case _ADJUST: rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_KNIGHT + 2); break; - case _DEFAULT_LAYER_1: - rgblight_set_hsv_and_mode(DEFAULT_LAYER_1_HSV, RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _DEFAULT_LAYER_2: - rgblight_set_hsv_and_mode(DEFAULT_LAYER_2_HSV, RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _DEFAULT_LAYER_3: - rgblight_set_hsv_and_mode(DEFAULT_LAYER_3_HSV, RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _DEFAULT_LAYER_4: - rgblight_set_hsv_and_mode(DEFAULT_LAYER_4_HSV, RGBLIGHT_MODE_STATIC_LIGHT); - break; + default: + if (layer_state_cmp(state, _MOUSE)) { +# if defined(RGBLIGHT_EFFECT_TWINKLE) + rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5); +# else + rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3); +# endif + } else { + default_layer_state_set_rgb_light(default_layer_state); + } } +#endif // RGBLIGHT_ENABLE } -# endif // RGBLIGHT_ENABLE - return state; } -#endif +layer_state_t default_layer_state_set_rgb_light(layer_state_t state) { + switch (get_highest_layer(state)) { + case _DEFAULT_LAYER_1: + rgblight_set_hsv_and_mode(DEFAULT_LAYER_1_HSV, RGBLIGHT_MODE_STATIC_LIGHT); + break; + case _DEFAULT_LAYER_2: + rgblight_set_hsv_and_mode(DEFAULT_LAYER_2_HSV, RGBLIGHT_MODE_STATIC_LIGHT); + break; + case _DEFAULT_LAYER_3: + rgblight_set_hsv_and_mode(DEFAULT_LAYER_3_HSV, RGBLIGHT_MODE_STATIC_LIGHT); + break; + case _DEFAULT_LAYER_4: + rgblight_set_hsv_and_mode(DEFAULT_LAYER_4_HSV, RGBLIGHT_MODE_STATIC_LIGHT); + break; + } + return state; +} diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk index b96e8a532b7..38d34fb2759 100644 --- a/users/drashna/rules.mk +++ b/users/drashna/rules.mk @@ -3,6 +3,8 @@ SRC += $(USER_PATH)/drashna.c \ $(USER_PATH)/keyrecords/process_records.c \ $(USER_PATH)/keyrecords/tapping.c +# TOP_SYMBOLS = yes + ifneq ($(PLATFORM),CHIBIOS) ifneq ($(strip $(LTO_SUPPORTED)), no) LTO_ENABLE = yes @@ -15,6 +17,7 @@ GRAVE_ESC_ENABLE = no ifneq ($(strip $(NO_SECRETS)), yes) ifneq ("$(wildcard $(USER_PATH)/../../../qmk_secrets/secrets.c)","") SRC += $(USER_PATH)/../../../qmk_secrets/secrets.c + $(shell touch $(USER_PATH)/../../../qmk_secrets/secrets.c) SECURE_ENABLE = yes endif ifeq ($(strip $(NO_SECRETS)), lite) @@ -103,7 +106,6 @@ ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes) ifeq ($(strip $(CUSTOM_POINTING_DEVICE)), yes) SRC += $(USER_PATH)/pointing/pointing.c OPT_DEFS += -DCUSTOM_POINTING_DEVICE - OPT_DEFS += -DMOUSE_EXT_REPORT endif endif @@ -119,5 +121,6 @@ endif AUTOCORRECTION_ENABLE ?= no ifeq ($(strip $(AUTOCORRECTION_ENABLE)), yes) SRC += $(USER_PATH)/keyrecords/autocorrection/autocorrection.c + $(shell touch $(USER_PATH)/keyrecords/autocorrection/autocorrection.c) OPT_DEFS += -DAUTOCORRECTION_ENABLE endif diff --git a/users/drashna/split/transport_sync.c b/users/drashna/split/transport_sync.c index 38df8fda3fc..2050d687ae4 100644 --- a/users/drashna/split/transport_sync.c +++ b/users/drashna/split/transport_sync.c @@ -55,7 +55,9 @@ void user_config_sync(uint8_t initiator2target_buffer_size, const void* initiato } #if defined(SPLIT_WATCHDOG_TIMEOUT) -void watchdog_handler(uint8_t in_buflen, const void* in_data, uint8_t out_buflen, void* out_data) { watchdog_ping_done = true; } +void watchdog_handler(uint8_t in_buflen, const void* in_data, uint8_t out_buflen, void* out_data) { + watchdog_ping_done = true; +} #endif #ifdef CUSTOM_OLED_DRIVER @@ -97,7 +99,7 @@ void user_transport_update(void) { user_state.tap_toggling = tap_toggling; #endif #ifdef UNICODE_COMMON_ENABLE - user_state.unicode_mode = unicode_config.input_mode; + user_state.unicode_mode = unicode_config.input_mode; user_state.unicode_typing_mode = typing_mode; #endif #ifdef SWAP_HANDS_ENABLE @@ -112,7 +114,7 @@ void user_transport_update(void) { user_state.raw = transport_user_state; #ifdef UNICODE_COMMON_ENABLE unicode_config.input_mode = user_state.unicode_mode; - typing_mode = user_state.unicode_typing_mode; + typing_mode = user_state.unicode_typing_mode; #endif #if defined(CUSTOM_POINTING_DEVICE) tap_toggling = user_state.tap_toggling; @@ -216,7 +218,7 @@ void user_transport_sync(void) { if (timer_elapsed32(watchdog_timer) > 100) { uint8_t any_data = 1; if (transaction_rpc_send(RPC_ID_USER_WATCHDOG_SYNC, sizeof(any_data), &any_data)) { - watchdog_ping_done = true; // successful ping + watchdog_ping_done = true; // successful ping } else { dprint("Watchdog ping failed!\n"); } @@ -233,7 +235,7 @@ void user_transport_sync(void) { #endif } -void housekeeping_task_user(void) { +void housekeeping_task_transport_sync(void) { // Update kb_state so we can send to slave user_transport_update(); diff --git a/users/drashna/split/transport_sync.h b/users/drashna/split/transport_sync.h index 77e5140eda0..ceb8f818757 100644 --- a/users/drashna/split/transport_sync.h +++ b/users/drashna/split/transport_sync.h @@ -12,16 +12,17 @@ extern char keylog_str[OLED_KEYLOGGER_LENGTH]; typedef union { uint32_t raw; struct { - bool audio_enable :1; - bool audio_clicky_enable :1; - bool tap_toggling :1; - uint8_t unicode_mode :3; - bool swap_hands :1; - bool host_driver_disabled :1; - uint8_t unicode_typing_mode :3; + bool audio_enable :1; + bool audio_clicky_enable :1; + bool tap_toggling :1; + uint8_t unicode_mode :3; + bool swap_hands :1; + bool host_driver_disabled :1; + uint8_t unicode_typing_mode :3; }; } user_runtime_config_t; extern user_runtime_config_t user_state; void keyboard_post_init_transport_sync(void); +void housekeeping_task_transport_sync(void); From 665feccca1dc52ffa0350d572e6cd9ff4b9b2414 Mon Sep 17 00:00:00 2001 From: jack <0x6A73@pm.me> Date: Sat, 2 Jul 2022 22:10:51 -0600 Subject: [PATCH 27/34] Fixup bounce/75 (#17548) --- keyboards/kbdfans/bounce/75/hotswap/hotswap.h | 2 +- keyboards/kbdfans/bounce/75/soldered/soldered.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/kbdfans/bounce/75/hotswap/hotswap.h b/keyboards/kbdfans/bounce/75/hotswap/hotswap.h index 3f8e7d106ce..7f9f64a9d6e 100644 --- a/keyboards/kbdfans/bounce/75/hotswap/hotswap.h +++ b/keyboards/kbdfans/bounce/75/hotswap/hotswap.h @@ -31,4 +31,4 @@ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, KC_NO}, \ { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, K508, KC_NO, K510, K511, KC_NO, K513, K514 } \ -} \ No newline at end of file +} diff --git a/keyboards/kbdfans/bounce/75/soldered/soldered.h b/keyboards/kbdfans/bounce/75/soldered/soldered.h index 257a55b929b..636f9431e02 100644 --- a/keyboards/kbdfans/bounce/75/soldered/soldered.h +++ b/keyboards/kbdfans/bounce/75/soldered/soldered.h @@ -31,4 +31,4 @@ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, KC_NO}, \ { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514 } \ -} \ No newline at end of file +} From d87d537b50f9e1843e097334ac75e89a067c1525 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 2 Jul 2022 21:12:01 -0700 Subject: [PATCH 28/34] Remove dead space from Pierce QMK Configurator layout data (#17551) --- keyboards/pierce/info.json | 79 +++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 39 deletions(-) diff --git a/keyboards/pierce/info.json b/keyboards/pierce/info.json index 7179076794e..9c377c0013d 100644 --- a/keyboards/pierce/info.json +++ b/keyboards/pierce/info.json @@ -1,50 +1,51 @@ { - "keyboard_name": "pierce", - "url": "https://github.com/durken1/pierce", - "maintainer": "durken1", + "keyboard_name": "pierce", + "url": "https://github.com/durken1/pierce", + "maintainer": "durken1", "layouts": { "LAYOUT_split_3x5_3": { "layout": [ - {"x":0, "y":1}, - {"x":1, "y":0.63}, - {"x":2, "y":0.5}, - {"x":3, "y":0.63}, - {"x":4, "y":0.75}, - {"x":7, "y":0.75}, - {"x":8, "y":0.63}, - {"x":9, "y":0.5}, - {"x":10, "y":0.63}, - {"x":11, "y":1}, + {"x":0, "y":0.5}, + {"x":1, "y":0.13}, + {"x":2, "y":0.0}, + {"x":3, "y":0.13}, + {"x":4, "y":0.25}, + {"x":7, "y":0.25}, + {"x":8, "y":0.13}, + {"x":9, "y":0.0}, + {"x":10, "y":0.13}, + {"x":11, "y":0.5}, - {"x":0, "y":2}, - {"x":1, "y":1.63}, - {"x":2, "y":1.5}, - {"x":3, "y":1.63}, - {"x":4, "y":1.75}, - {"x":7, "y":1.75}, - {"x":8, "y":1.63}, - {"x":9, "y":1.5}, - {"x":10, "y":1.63}, - {"x":11, "y":2}, + {"x":0, "y":1.5}, + {"x":1, "y":1.13}, + {"x":2, "y":1.0}, + {"x":3, "y":1.13}, + {"x":4, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.13}, + {"x":9, "y":1.0}, + {"x":10, "y":1.13}, + {"x":11, "y":1.5}, - {"x":0, "y":3}, - {"x":1, "y":2.63}, - {"x":2, "y":2.5}, - {"x":3, "y":2.63}, - {"x":4, "y":2.75}, - {"x":7, "y":2.75}, - {"x":8, "y":2.63}, - {"x":9, "y":2.5}, - {"x":10, "y":2.63}, - {"x":11, "y":3}, + {"x":0, "y":2.5}, + {"x":1, "y":2.13}, + {"x":2, "y":2.0}, + {"x":3, "y":2.13}, + {"x":4, "y":2.25}, + {"x":7, "y":2.25}, + {"x":8, "y":2.13}, + {"x":9, "y":2.0}, + {"x":10, "y":2.13}, + {"x":11, "y":2.5}, - {"x":2.5, "y":3.66}, - {"x":3.5, "y":4.0}, - {"x":4.5, "y":4.25}, + {"x":2.5, "y":3.16}, + {"x":3.5, "y":3.5}, + {"x":4.5, "y":3.75}, - {"x":7.5, "y":4.0}, - {"x":6.5, "y":4.25}, - {"x":8.5, "y":3.66}] + {"x":6.5, "y":3.75}, + {"x":7.5, "y":3.5}, + {"x":8.5, "y":3.16} + ] } } } From 168a63172010924a7a00dc1bc9e6a3c510e8ce5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=91=A3=E7=9D=BF=E7=85=8A?= Date: Mon, 4 Jul 2022 02:07:31 +0800 Subject: [PATCH 29/34] Add support for MacroCat Keyboard (#17480) --- keyboards/macrocat/config.h | 11 ++ keyboards/macrocat/info.json | 49 +++++ keyboards/macrocat/keymaps/default/keymap.c | 19 ++ keyboards/macrocat/keymaps/oled/keymap.c | 31 ++++ keyboards/macrocat/keymaps/oled/rules.mk | 3 + keyboards/macrocat/keymaps/via/keymap.c | 31 ++++ keyboards/macrocat/keymaps/via/rules.mk | 1 + keyboards/macrocat/macrocat.c | 193 ++++++++++++++++++++ keyboards/macrocat/readme.md | 27 +++ keyboards/macrocat/rules.mk | 1 + 10 files changed, 366 insertions(+) create mode 100644 keyboards/macrocat/config.h create mode 100644 keyboards/macrocat/info.json create mode 100644 keyboards/macrocat/keymaps/default/keymap.c create mode 100644 keyboards/macrocat/keymaps/oled/keymap.c create mode 100644 keyboards/macrocat/keymaps/oled/rules.mk create mode 100644 keyboards/macrocat/keymaps/via/keymap.c create mode 100644 keyboards/macrocat/keymaps/via/rules.mk create mode 100644 keyboards/macrocat/macrocat.c create mode 100644 keyboards/macrocat/readme.md create mode 100644 keyboards/macrocat/rules.mk diff --git a/keyboards/macrocat/config.h b/keyboards/macrocat/config.h new file mode 100644 index 00000000000..851cfe74271 --- /dev/null +++ b/keyboards/macrocat/config.h @@ -0,0 +1,11 @@ +// Copyright 2022 catmunch (@catmunch) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h" + +/* rotary encoder */ +#define ENCODERS_PAD_A { D3 } +#define ENCODERS_PAD_B { D2 } +#define ENCODER_SWITCH B7 diff --git a/keyboards/macrocat/info.json b/keyboards/macrocat/info.json new file mode 100644 index 00000000000..bf3edb084db --- /dev/null +++ b/keyboards/macrocat/info.json @@ -0,0 +1,49 @@ +{ + "manufacturer": "Catmunch", + "keyboard_name": "MacroCat Keyboard", + "maintainer": "Catmunch", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "encoder": true + }, + "matrix_pins": { + "cols": ["B5", "B6", "C6", "C7"], + "rows": ["D4", "D6", "D7", "B4"] + }, + "processor": "atmega32u4", + "url": "https://github.com/catmunch/macrocat", + "usb": { + "device_version": "0.0.1", + "pid": "0x8086", + "vid": "0x2022" + }, + "layouts": { + "LAYOUT_numpad_4x4": { + "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": [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": [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": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/macrocat/keymaps/default/keymap.c b/keyboards/macrocat/keymaps/default/keymap.c new file mode 100644 index 00000000000..b173938b702 --- /dev/null +++ b/keyboards/macrocat/keymaps/default/keymap.c @@ -0,0 +1,19 @@ +// Copyright 2022 catmunch (@catmunch) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = { + {KC_PLUS, KC_9, KC_8, KC_7 }, + {KC_MINS, KC_6, KC_5, KC_4 }, + {KC_DOT, KC_3, KC_2, KC_1 }, + {KC_ENT, KC_SPACE, KC_0, MO(1)} + }, + [1] = { + {KC_ASTR, KC_MPRV, KC_MPLY,KC_MNXT}, + {KC_SLSH, KC_LPRN, KC_UP, KC_RPRN}, + {KC_COMM, KC_LEFT, KC_DOWN,KC_RIGHT}, + {KC_TAB, KC_BSPC, KC_0, KC_TRNS} + } +}; diff --git a/keyboards/macrocat/keymaps/oled/keymap.c b/keyboards/macrocat/keymaps/oled/keymap.c new file mode 100644 index 00000000000..b9d5d9a9df8 --- /dev/null +++ b/keyboards/macrocat/keymaps/oled/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2022 catmunch (@catmunch) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = { + {KC_PLUS, KC_9, KC_8, KC_7 }, + {KC_MINS, KC_6, KC_5, KC_4 }, + {KC_DOT, KC_3, KC_2, KC_1 }, + {KC_ENT, KC_SPACE, KC_0, MO(1)} + }, + [1] = { + {KC_ASTR, KC_MPRV, KC_MPLY,KC_MNXT}, + {KC_SLSH, KC_LPRN, KC_UP, KC_RPRN}, + {KC_COMM, KC_LEFT, KC_DOWN,KC_RIGHT}, + {KC_TAB, KC_BSPC, KC_0, KC_TRNS} + }, + [2] = { + {KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO} + }, + [3] = { + {KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO} + } +}; diff --git a/keyboards/macrocat/keymaps/oled/rules.mk b/keyboards/macrocat/keymaps/oled/rules.mk new file mode 100644 index 00000000000..ca8d16ba670 --- /dev/null +++ b/keyboards/macrocat/keymaps/oled/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 \ No newline at end of file diff --git a/keyboards/macrocat/keymaps/via/keymap.c b/keyboards/macrocat/keymaps/via/keymap.c new file mode 100644 index 00000000000..c10d6e1357d --- /dev/null +++ b/keyboards/macrocat/keymaps/via/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2022 catmunch (@catmunch) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = { + {KC_PPLS, KC_9, KC_8, KC_7 }, + {KC_PMNS, KC_6, KC_5, KC_4 }, + {KC_PDOT, KC_3, KC_2, KC_1 }, + {KC_PENT, KC_SPACE, KC_P0, MO(1)} + }, + [1] = { + {KC_PAST, KC_NO, KC_NO, KC_NO}, + {KC_PSLS, KC_LPRN, KC_UP, KC_RPRN}, + {KC_COMM, KC_LEFT, KC_DOWN,KC_RIGHT}, + {KC_TAB, KC_BSPC, KC_P0, KC_TRNS} + }, + [2] = { + {KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO} + }, + [3] = { + {KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO} + } +}; diff --git a/keyboards/macrocat/keymaps/via/rules.mk b/keyboards/macrocat/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/macrocat/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/macrocat/macrocat.c b/keyboards/macrocat/macrocat.c new file mode 100644 index 00000000000..aec76d1912b --- /dev/null +++ b/keyboards/macrocat/macrocat.c @@ -0,0 +1,193 @@ +// Copyright 2022 catmunch (@catmunch) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +static bool encoder_pressed = 0; +static bool encoder_switched_layer = 0; +static uint32_t encoder_last_release_time = 0; +static uint32_t encoder_press_combo = 0; +static uint8_t current_layer = 0; + +#ifdef OLED_ENABLE +static const char PROGMEM bongo_release[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,192, 96, 96, 48, 48, 24, 12, 6, 14, 60,112, 96,224,192,192,192,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,192,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,240,124, 12, 12, 12, 12, 24,120,108, 14, 7, 3, 1, 0,128,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 7, 6, 14, 12, 28, 24, 48, 48, 24, 24, 12,252,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 3, 3, 3, 3, 7, 6, 6, 6, 6, 12, 12, 15, 15, 24, 24, 24, 24, 48, 48, 48, 48,112, 96, 96, 96,224,193,193,193,192,131,134,134,134, 12, 12, 0, 0, 0, 0, 0, 48, 56, 16,240,252, 12, 6,134, 6, 12, 60, 48, 32, 0, 0, 48,126,239,131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 3, 3, 3, 3, 3, 6, 6, 6, 6, 12, 12, 15, 15, 24, 24, 24, 24, 56, 48, 48, 48,112, 96, 96, 96,225,207,254,248,192,128,128,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, +}; +static const char PROGMEM bongo_press_r[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,192, 96, 96, 48, 48, 24, 12, 6, 14, 60,112, 96,224,192,192,192,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,192,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,240,124, 12, 12, 12, 12, 24,120,108, 14, 7, 3, 1, 0,128,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 7, 6, 14, 12, 28, 24, 48, 48, 24, 24, 12,252,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 3, 3, 3, 3, 7, 6, 6, 6, 6, 12, 12, 15, 15, 24, 24, 24, 24, 48, 48, 48, 48,112, 96, 96, 96,224,193,193,193,192,131,134,134,134, 12, 12, 0, 0, 0, 0, 0, 48, 56, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,126,239,131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 3, 3, 3, 3, 3, 6, 6, 22,126,111,227,192,224, 96, 96, 96, 96,112, 48, 48, 48,112, 96, 96, 96,225,207,254,248,192,128,128,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, +}; +static const char PROGMEM bongo_press_l[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,192, 96, 96, 48, 48, 24, 12, 6, 14, 60,112, 96,224,192,192,192,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,192,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 96, 48, 24, 12, 14, 7, 3, 1, 0,128,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 7, 6, 14, 12, 28, 24, 48, 48, 24, 24, 12,252,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 3, 3, 3, 3, 7, 6, 6, 6, 6, 12, 12,124,252,206,131,129,192,192,192,192,224, 96, 96, 96, 96,224,193,193,193,192,131,134,134,134, 12, 12, 0, 0, 0, 0, 0, 48, 56, 16,240,252, 12, 6,134, 6, 12, 60, 48, 32, 0, 0, 48,126,239,131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 3, 3, 3, 3, 3, 6, 6, 6, 6, 12, 12, 15, 15, 24, 24, 24, 24, 56, 48, 48, 48,112, 96, 96, 96,225,207,254,248,192,128,128,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, +}; +static const char PROGMEM bongo_press_lr[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,192, 96, 96, 48, 48, 24, 12, 6, 14, 60,112, 96,224,192,192,192,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,192,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 96, 48, 24, 12, 14, 7, 3, 1, 0,128,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 7, 6, 14, 12, 28, 24, 48, 48, 24, 24, 12,252,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 3, 3, 3, 3, 7, 6, 6, 6, 6, 12, 12,124,252,206,131,129,192,192,192,192,224, 96, 96, 96, 96,224,193,193,193,192,131,134,134,134, 12, 12, 0, 0, 0, 0, 0, 48, 56, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,126,239,131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 3, 3, 3, 3, 3, 6, 6, 22,126,111,227,192,224, 96, 96, 96, 96,112, 48, 48, 48,112, 96, 96, 96,225,207,254,248,192,128,128,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, +}; +static const char PROGMEM layer[][116] = { + [0] = { + 248, 0, 0, 0, 0, 0, 0,160,160,192, 0, 0, 96,128,128,128,224, 0,192,160,160,160,192, 0,224, 64, 32, 32, 64, + 3, 2, 2, 2, 2, 0, 1, 2, 2, 3, 2,128,130,132,132,132,131, 0, 1, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254,129,129, 97, 97, 25, 25,254,254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 25, 25, 24, 24, 24, 24, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + [1] = { + 248, 0, 0, 0, 0, 0, 0,160,160,192, 0, 0, 96,128,128,128,224, 0,192,160,160,160,192, 0,224, 64, 32, 32, 64, + 3, 2, 2, 2, 2, 0, 1, 2, 2, 3, 2, 0, 2,132,132, 4, 3, 0, 1, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 31, 31, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + [2] = { + 248, 0, 0, 0, 0, 0, 0,160,160,192, 0, 0, 96,128,128,128,224, 0,192,160,160,160,192, 0,224, 64, 32, 32, 64, + 3, 2, 2, 2, 2, 0, 1, 2, 2, 3, 2,128,130,132,132,132,131, 0, 1, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,134,134, 97, 97, 97, 97, 97, 97, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + [3] = { + 248, 0, 0, 0, 0, 0, 0,160,160,192, 0, 0, 96,128,128,128,224, 0,192,160,160,160,192, 0,224, 64, 32, 32, 64, + 3, 2, 2, 2, 2, 0, 1, 2, 2,131,130,128,130,132,132,132,131,128,129, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 97, 97,121,121,135,135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 24, 24, 24, 24, 24, 24, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + } +}; +static uint8_t key_pressed_l = 0; +static uint8_t key_pressed_r = 0; +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + + char buffer[512]; + if (key_pressed_l && key_pressed_r) + memcpy_P(buffer, bongo_press_lr, 512); + else if (key_pressed_l) + memcpy_P(buffer, bongo_press_l, 512); + else if (key_pressed_r) + memcpy_P(buffer, bongo_press_r, 512); + else + memcpy_P(buffer, bongo_release, 512); + int highest_layer = 0; + for(int i=3;i>=0;--i){ + if (IS_LAYER_ON(i)) { + highest_layer = i; + break; + } + } + // Apply the layer info (4*29) + for(int i=0;i<4;i++){ + for(int j=0;j<29;j++){ + buffer[i*128+85+j] = pgm_read_byte_near(layer[highest_layer]+i*29+j); + } + } + oled_write_raw(buffer, 512); + return false; +} +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { + return false; + } + if (record->event.pressed) { + if (record->event.key.col <= 1) + key_pressed_l++; + else + key_pressed_r++; + } else { + if (record->event.key.col <= 1) + key_pressed_l--; + else + key_pressed_r--; + } + return true; +} +#endif +void encoder_single_click(void) { + tap_code(KC_MPLY); +} +void encoder_double_click(void) { + tap_code(KC_MNXT); +} +void encoder_triple_click(void) { + tap_code(KC_MPRV); +} +void matrix_init_kb() { + matrix_init_user(); + + setPinInputHigh(ENCODER_SWITCH); +} +void matrix_scan_kb() { + matrix_scan_user(); + if (readPin(ENCODER_SWITCH)) { + if (encoder_pressed) { // release switch + encoder_pressed = 0; + encoder_press_combo += 1; + encoder_last_release_time = timer_read32(); + } + if (encoder_press_combo && timer_elapsed(encoder_last_release_time) > 300) { + // combo timeout + if (encoder_switched_layer) { // switch layer + encoder_switched_layer = 0; + } else { // click + switch (encoder_press_combo) { + case 1: + encoder_single_click(); + break; + case 2: + encoder_double_click(); + break; + default: + encoder_triple_click(); + } + } + encoder_press_combo = 0; + encoder_last_release_time = 0; + } + } else { + if (!encoder_pressed) { // press switch + encoder_pressed = 1; + } + } +} +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + if (clockwise) { + if (encoder_pressed) { + if (current_layer < 3) { + current_layer += 1; + layer_move(current_layer); + } + encoder_switched_layer = 1; + } else { + tap_code(KC_VOLU); + } + } else { + if (encoder_pressed) { + if (current_layer > 0) { + current_layer -= 1; + layer_move(current_layer); + } + encoder_switched_layer = 1; + } else { + tap_code(KC_VOLD); + } + } + return false; +} diff --git a/keyboards/macrocat/readme.md b/keyboards/macrocat/readme.md new file mode 100644 index 00000000000..42cf36dc16f --- /dev/null +++ b/keyboards/macrocat/readme.md @@ -0,0 +1,27 @@ +# macrocat + +![macrocat](https://i.imgur.com/ItLHGBfh.jpg) + +A cat like macro keyboard/numpad. + +* Keyboard Maintainer: [catmunch](https://github.com/catmunch) +* Hardware Supported: Fully Supported +* Hardware Availability: [MacroCat Keyboard](https://github.com/catmunch/macrocat) + +Make example for this keyboard (after setting up your build environment): + + make macrocat:default + +Flashing example for this keyboard: + + make macrocat: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 +* **Brand new atmega32u4 chip**: Plug the cable in, it will automatically boot into bootloader diff --git a/keyboards/macrocat/rules.mk b/keyboards/macrocat/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/macrocat/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From b7fee11e343be1f25c745800c39fa64c5f1b7d55 Mon Sep 17 00:00:00 2001 From: stanrc85 <47038504+stanrc85@users.noreply.github.com> Date: Sun, 3 Jul 2022 17:25:09 -0400 Subject: [PATCH 30/34] [Userspace] Add support for additional Mechlovin Adelais PCB version to my userspace (#17547) --- users/stanrc85/config.h | 2 +- users/stanrc85/rules.mk | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/users/stanrc85/config.h b/users/stanrc85/config.h index 275b368d0a4..d9600b8b3cf 100644 --- a/users/stanrc85/config.h +++ b/users/stanrc85/config.h @@ -15,7 +15,7 @@ #define INDICATOR_PIN_2 D4 #endif -#ifdef KEYBOARD_mechlovin_adelais_standard_led_arm_rev4_stm32f303 +#if defined(KEYBOARD_mechlovin_adelais_standard_led_arm_rev4_stm32f303) || defined(KEYBOARD_mechlovin_adelais_standard_led_arm_rev4_apm32f103) #define INDICATOR_PIN_0 B2 #define INDICATOR_PIN_1 C15 #define INDICATOR_PIN_2 B9 diff --git a/users/stanrc85/rules.mk b/users/stanrc85/rules.mk index f73e70ffdb0..141b4581a44 100644 --- a/users/stanrc85/rules.mk +++ b/users/stanrc85/rules.mk @@ -48,3 +48,8 @@ ifeq ($(strip $(KEYBOARD)), nasu) SRC += startup_fanfare.c OPT_DEFS += -DHAS_INDICATORS endif +ifeq ($(strip $(KEYBOARD)), mechlovin/adelais/standard_led/arm/rev4/apm32f103) + OPT_DEFS += -DHAS_INDICATORS + SRC += rgb_timeout.c + SRC += indicator_layers_sneakbox.c +endif From 9a157a3a998753b7c3a830c41f4e5f9fe44d080e Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Sun, 3 Jul 2022 14:25:29 -0700 Subject: [PATCH 31/34] KP Republic BM60HSRGB_EC QMK Configurator and readme touch-up (#17541) --- .../kprepublic/bm60hsrgb_ec/rev1/info.json | 141 +++++++++--------- .../kprepublic/bm60hsrgb_ec/rev1/readme.md | 4 +- .../kprepublic/bm60hsrgb_ec/rev2/info.json | 136 ++++++++--------- .../kprepublic/bm60hsrgb_ec/rev2/readme.md | 8 +- 4 files changed, 148 insertions(+), 141 deletions(-) diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev1/info.json b/keyboards/kprepublic/bm60hsrgb_ec/rev1/info.json index e85a9fffc31..32dd998959d 100644 --- a/keyboards/kprepublic/bm60hsrgb_ec/rev1/info.json +++ b/keyboards/kprepublic/bm60hsrgb_ec/rev1/info.json @@ -1,78 +1,81 @@ { - "keyboard_name": "BM60HSRGB_EC", + "keyboard_name": "BM60HSRGB_EC rev1", "url": "", - "maintainer": "qmk", + "maintainer": "peepeetee", "layouts": { "LAYOUT": { "layout": [ - {"label":"K00 (B0,D0)", "x":0, "y":0}, - {"label":"K01 (B0,D1)", "x":1, "y":0}, - {"label":"K02 (B0,D2)", "x":2, "y":0}, - {"label":"K03 (B0,D3)", "x":3, "y":0}, - {"label":"K04 (B0,D5)", "x":4, "y":0}, - {"label":"K05 (B0,D4)", "x":5, "y":0}, - {"label":"K06 (B0,D6)", "x":6, "y":0}, - {"label":"K07 (B0,D7)", "x":7, "y":0}, - {"label":"K08 (B0,B4)", "x":8, "y":0}, - {"label":"K09 (B0,B5)", "x":9, "y":0}, - {"label":"K0A (B0,B6)", "x":10, "y":0}, - {"label":"K0B (B0,C6)", "x":11, "y":0}, - {"label":"K0C (B0,C7)", "x":12, "y":0}, - {"label":"K0D (B0,F7)", "x":13, "y":0}, - {"label":"K21 (B2,D1)", "x":14, "y":0}, - {"label":"K43 (E6,D3)", "x":15, "y":0}, - {"label":"K44 (E6,D5)", "x":16, "y":0}, - {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5}, - {"label":"K11 (B1,D1)", "x":1.5, "y":1}, - {"label":"K12 (B1,D2)", "x":2.5, "y":1}, - {"label":"K13 (B1,D3)", "x":3.5, "y":1}, - {"label":"K14 (B1,D5)", "x":4.5, "y":1}, - {"label":"K15 (B1,D4)", "x":5.5, "y":1}, - {"label":"K16 (B1,D6)", "x":6.5, "y":1}, - {"label":"K17 (B1,D7)", "x":7.5, "y":1}, - {"label":"K18 (B1,B4)", "x":8.5, "y":1}, - {"label":"K19 (B1,B5)", "x":9.5, "y":1}, - {"label":"K1A (B1,B6)", "x":10.5, "y":1}, - {"label":"K1B (B1,C6)", "x":11.5, "y":1}, - {"label":"K1C (B1,C7)", "x":12.5, "y":1}, - {"label":"K1D (B1,F7)", "x":13.5, "y":1, "w":1.5}, - {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75}, - {"label":"K22 (B2,D2)", "x":1.75, "y":2}, - {"label":"K23 (B2,D3)", "x":2.75, "y":2}, - {"label":"K24 (B2,D5)", "x":3.75, "y":2}, - {"label":"K25 (B2,D4)", "x":4.75, "y":2}, - {"label":"K26 (B2,D6)", "x":5.75, "y":2}, - {"label":"K27 (B2,D7)", "x":6.75, "y":2}, - {"label":"K28 (B2,B4)", "x":7.75, "y":2}, - {"label":"K29 (B2,B5)", "x":8.75, "y":2}, - {"label":"K2A (B2,B6)", "x":9.75, "y":2}, - {"label":"K2B (B2,C6)", "x":10.75, "y":2}, - {"label":"K2C (B2,C7)", "x":11.75, "y":2}, - {"label":"K2D (B2,F7)", "x":12.75, "y":2, "w":2.25}, - {"label":"K31 (B3,D1)", "x":0, "y":3, "w":2.25}, - {"label":"K32 (B3,D2)", "x":2.25, "y":3}, - {"label":"K33 (B3,D3)", "x":3.25, "y":3}, - {"label":"K34 (B3,D5)", "x":4.25, "y":3}, - {"label":"K35 (B3,D4)", "x":5.25, "y":3}, - {"label":"K36 (B3,D6)", "x":6.25, "y":3}, - {"label":"K37 (B3,D7)", "x":7.25, "y":3}, - {"label":"K38 (B3,B4)", "x":8.25, "y":3}, - {"label":"K39 (B3,B5)", "x":9.25, "y":3}, - {"label":"K3A (B3,B6)", "x":10.25, "y":3}, - {"label":"K3B (B3,C6)", "x":11.25, "y":3, "w":1.75}, - {"label":"K3C (B3,C7)", "x":13, "y":3}, - {"label":"K3D (B3,F7)", "x":14, "y":3}, - {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25}, - {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25}, - {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25}, - {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25}, - {"label":"K49 (E6,B5)", "x":10, "y":4}, - {"label":"K4A (E6,B6)", "x":11, "y":4}, - {"label":"K4B (E6,C6)", "x":12, "y":4}, - {"label":"K4C (E6,C7)", "x":13, "y":4}, - {"label":"K4D (E6,F7)", "x":14, "y":4} + {"label":"K00 (B0, D0)", "x":0, "y":0.5}, + {"label":"K01 (B0, D1)", "x":1, "y":0.5}, + {"label":"K02 (B0, D2)", "x":2, "y":0.5}, + {"label":"K03 (B0, D3)", "x":3, "y":0.5}, + {"label":"K04 (B0, D5)", "x":4, "y":0.5}, + {"label":"K05 (B0, D4)", "x":5, "y":0.5}, + {"label":"K06 (B0, D6)", "x":6, "y":0.5}, + {"label":"K07 (B0, D7)", "x":7, "y":0.5}, + {"label":"K08 (B0, B4)", "x":8, "y":0.5}, + {"label":"K09 (B0, B5)", "x":9, "y":0.5}, + {"label":"K0A (B0, B6)", "x":10, "y":0.5}, + {"label":"K0B (B0, C6)", "x":11, "y":0.5}, + {"label":"K0C (B0, C7)", "x":12, "y":0.5}, + {"label":"K0D (B0, F7)", "x":13, "y":0.5}, + {"label":"K21 (B2, D1)", "x":14, "y":0.5}, + {"label":"K43 (E6, D3)", "x":13.9, "y":0, "w":0.6, "h":0.5}, + {"label":"K44 (E6, D5)", "x":14.5, "y":0, "w":0.6, "h":0.5}, + + {"label":"K10 (B1, D0)", "x":0, "y":1.5, "w":1.5}, + {"label":"K11 (B1, D1)", "x":1.5, "y":1.5}, + {"label":"K12 (B1, D2)", "x":2.5, "y":1.5}, + {"label":"K13 (B1, D3)", "x":3.5, "y":1.5}, + {"label":"K14 (B1, D5)", "x":4.5, "y":1.5}, + {"label":"K15 (B1, D4)", "x":5.5, "y":1.5}, + {"label":"K16 (B1, D6)", "x":6.5, "y":1.5}, + {"label":"K17 (B1, D7)", "x":7.5, "y":1.5}, + {"label":"K18 (B1, B4)", "x":8.5, "y":1.5}, + {"label":"K19 (B1, B5)", "x":9.5, "y":1.5}, + {"label":"K1A (B1, B6)", "x":10.5, "y":1.5}, + {"label":"K1B (B1, C6)", "x":11.5, "y":1.5}, + {"label":"K1C (B1, C7)", "x":12.5, "y":1.5}, + {"label":"K1D (B1, F7)", "x":13.5, "y":1.5, "w":1.5}, + + {"label":"K20 (B2, D0)", "x":0, "y":2.5, "w":1.75}, + {"label":"K22 (B2, D2)", "x":1.75, "y":2.5}, + {"label":"K23 (B2, D3)", "x":2.75, "y":2.5}, + {"label":"K24 (B2, D5)", "x":3.75, "y":2.5}, + {"label":"K25 (B2, D4)", "x":4.75, "y":2.5}, + {"label":"K26 (B2, D6)", "x":5.75, "y":2.5}, + {"label":"K27 (B2, D7)", "x":6.75, "y":2.5}, + {"label":"K28 (B2, B4)", "x":7.75, "y":2.5}, + {"label":"K29 (B2, B5)", "x":8.75, "y":2.5}, + {"label":"K2A (B2, B6)", "x":9.75, "y":2.5}, + {"label":"K2B (B2, C6)", "x":10.75, "y":2.5}, + {"label":"K2C (B2, C7)", "x":11.75, "y":2.5}, + {"label":"K2D (B2, F7)", "x":12.75, "y":2.5, "w":2.25}, + + {"label":"K31 (B3, D1)", "x":0, "y":3.5, "w":2.25}, + {"label":"K32 (B3, D2)", "x":2.25, "y":3.5}, + {"label":"K33 (B3, D3)", "x":3.25, "y":3.5}, + {"label":"K34 (B3, D5)", "x":4.25, "y":3.5}, + {"label":"K35 (B3, D4)", "x":5.25, "y":3.5}, + {"label":"K36 (B3, D6)", "x":6.25, "y":3.5}, + {"label":"K37 (B3, D7)", "x":7.25, "y":3.5}, + {"label":"K38 (B3, B4)", "x":8.25, "y":3.5}, + {"label":"K39 (B3, B5)", "x":9.25, "y":3.5}, + {"label":"K3A (B3, B6)", "x":10.25, "y":3.5}, + {"label":"K3B (B3, C6)", "x":11.25, "y":3.5, "w":1.75}, + {"label":"K3C (B3, C7)", "x":13, "y":3.5}, + {"label":"K3D (B3, F7)", "x":14, "y":3.5}, + + {"label":"K40 (E6, D0)", "x":0, "y":4.5, "w":1.25}, + {"label":"K41 (E6, D1)", "x":1.25, "y":4.5, "w":1.25}, + {"label":"K42 (E6, D2)", "x":2.5, "y":4.5, "w":1.25}, + {"label":"K46 (E6, D6)", "x":3.75, "y":4.5, "w":6.25}, + {"label":"K49 (E6, B5)", "x":10, "y":4.5}, + {"label":"K4A (E6, B6)", "x":11, "y":4.5}, + {"label":"K4B (E6, C6)", "x":12, "y":4.5}, + {"label":"K4C (E6, C7)", "x":13, "y":4.5}, + {"label":"K4D (E6, F7)", "x":14, "y":4.5} ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev1/readme.md b/keyboards/kprepublic/bm60hsrgb_ec/rev1/readme.md index 2c0996974bc..1e284041d07 100644 --- a/keyboards/kprepublic/bm60hsrgb_ec/rev1/readme.md +++ b/keyboards/kprepublic/bm60hsrgb_ec/rev1/readme.md @@ -2,9 +2,9 @@ A 60% hotswap inswitch RGB keyboard with an encoder from KP Republic. -* Keyboard Maintainer: [bdtc123](https://github.com/bdtc123) +* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee) * Hardware Supported: BM60HSRGB_EC/rev1 -* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-60-gh60-hot-swappable-pcb-programmed-qmk-firmware-type-c) +* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60ec-bm60-ec-rgb-60-gh60-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-rgb-switch-type-c-rotary-knob) ## Bootloader diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev2/info.json b/keyboards/kprepublic/bm60hsrgb_ec/rev2/info.json index 613511b7847..c66533949ef 100644 --- a/keyboards/kprepublic/bm60hsrgb_ec/rev2/info.json +++ b/keyboards/kprepublic/bm60hsrgb_ec/rev2/info.json @@ -1,80 +1,80 @@ { - "keyboard_name": "bm60hsrgb_ec", + "keyboard_name": "BM60HSRGB_EC rev2", "url": "", - "maintainer": "qmk", + "maintainer": "peepeetee", "layouts": { "LAYOUT": { "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.75, "y":0}, - {"x":15.75, "y":0}, - {"x":16.75, "y":0}, + {"x":0, "y":0.5}, + {"x":1, "y":0.5}, + {"x":2, "y":0.5}, + {"x":3, "y":0.5}, + {"x":4, "y":0.5}, + {"x":5, "y":0.5}, + {"x":6, "y":0.5}, + {"x":7, "y":0.5}, + {"x":8, "y":0.5}, + {"x":9, "y":0.5}, + {"x":10, "y":0.5}, + {"x":11, "y":0.5}, + {"x":12, "y":0.5}, + {"x":13, "y":0.5}, + {"x":14, "y":0.5}, + {"x":13.9, "y":0, "w":0.6, "h":0.5}, + {"x":14.5, "y":0, "w":0.6, "h":0.5}, - {"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":1.5, "w":1.5}, + {"x":1.5, "y":1.5}, + {"x":2.5, "y":1.5}, + {"x":3.5, "y":1.5}, + {"x":4.5, "y":1.5}, + {"x":5.5, "y":1.5}, + {"x":6.5, "y":1.5}, + {"x":7.5, "y":1.5}, + {"x":8.5, "y":1.5}, + {"x":9.5, "y":1.5}, + {"x":10.5, "y":1.5}, + {"x":11.5, "y":1.5}, + {"x":12.5, "y":1.5}, + {"x":13.5, "y":1.5, "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":2.5, "w":1.75}, + {"x":1.75, "y":2.5}, + {"x":2.75, "y":2.5}, + {"x":3.75, "y":2.5}, + {"x":4.75, "y":2.5}, + {"x":5.75, "y":2.5}, + {"x":6.75, "y":2.5}, + {"x":7.75, "y":2.5}, + {"x":8.75, "y":2.5}, + {"x":9.75, "y":2.5}, + {"x":10.75, "y":2.5}, + {"x":11.75, "y":2.5}, + {"x":12.75, "y":2.5, "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, "w":1.75}, - {"x":13, "y":3}, - {"x":14, "y":3}, + {"x":0, "y":3.5, "w":2.25}, + {"x":2.25, "y":3.5}, + {"x":3.25, "y":3.5}, + {"x":4.25, "y":3.5}, + {"x":5.25, "y":3.5}, + {"x":6.25, "y":3.5}, + {"x":7.25, "y":3.5}, + {"x":8.25, "y":3.5}, + {"x":9.25, "y":3.5}, + {"x":10.25, "y":3.5}, + {"x":11.25, "y":3.5, "w":1.75}, + {"x":13, "y":3.5}, + {"x":14, "y":3.5}, - {"x":0, "y":4, "w":1.25}, - {"x":1.25, "y":4, "w":1.25}, - {"x":2.5, "y":4, "w":1.25}, - {"x":3.75, "y":4, "w":6.25}, - {"x":10, "y":4}, - {"x":11, "y":4}, - {"x":12, "y":4}, - {"x":13, "y":4}, - {"x":14, "y":4} + {"x":0, "y":4.5, "w":1.25}, + {"x":1.25, "y":4.5, "w":1.25}, + {"x":2.5, "y":4.5, "w":1.25}, + {"x":3.75, "y":4.5, "w":6.25}, + {"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} ] } } diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev2/readme.md b/keyboards/kprepublic/bm60hsrgb_ec/rev2/readme.md index 39e986c1c5a..6454a574204 100644 --- a/keyboards/kprepublic/bm60hsrgb_ec/rev2/readme.md +++ b/keyboards/kprepublic/bm60hsrgb_ec/rev2/readme.md @@ -2,9 +2,13 @@ A 60% hotswap inswitch RGB keyboard with an encoder from KP Republic. -* Keyboard Maintainer: [bdtc123](https://github.com/bdtc123) +* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee) * Hardware Supported: BM60HSRGB_EC/rev2 -* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-60-gh60-hot-swappable-pcb-programmed-qmk-firmware-type-c) +* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60ec-bm60-ec-rgb-60-gh60-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-rgb-switch-type-c-rotary-knob) + +## 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 From 8fa7b62011484f078548535556e91494a7f6cb8d Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 4 Jul 2022 00:41:00 +0100 Subject: [PATCH 32/34] Attempt to discourage manual MSYS install for new users (#17556) --- docs/newbs_getting_started.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md index 55a50f7b3ce..99aee121397 100644 --- a/docs/newbs_getting_started.md +++ b/docs/newbs_getting_started.md @@ -27,12 +27,12 @@ QMK maintains a Bundle of MSYS2, the CLI and all necessary dependencies. It also You will need to install [QMK MSYS](https://msys.qmk.fm/). The latest release is available [here](https://github.com/qmk/qmk_distro_msys/releases/latest). -Alternatively, if you'd like to manually install MSYS2, the following section will walk you through the process. -
- Manual Install + Advanced Users -?> Ignore the following steps if you use `QMK MSYS`. +!> This process is not recommended for new users. + +If you'd like to manually install MSYS2, the following sections will walk you through the process. #### Prerequisites From 75bc9e649636bb3764a4e1210e7cfe79be1b8ec2 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 4 Jul 2022 13:48:44 -0700 Subject: [PATCH 33/34] TKL Community Layout Additions (#17563) --- layouts/default/readme.md | 108 ++++++++++++++++++ layouts/default/tkl_ansi/readme.md | 2 + .../default_tkl_ansi_split_bs_rshift/keymap.c | 32 ++++++ .../tkl_ansi_split_bs_rshift/info.json | 105 +++++++++++++++++ .../tkl_ansi_split_bs_rshift/layout.json | 6 + .../tkl_ansi_split_bs_rshift/readme.md | 5 + .../default_tkl_ansi_tsangan/keymap.c | 32 ++++++ layouts/default/tkl_ansi_tsangan/info.json | 102 +++++++++++++++++ layouts/default/tkl_ansi_tsangan/layout.json | 6 + layouts/default/tkl_ansi_tsangan/readme.md | 5 + .../keymap.c | 32 ++++++ .../info.json | 104 +++++++++++++++++ .../layout.json | 6 + .../readme.md | 5 + layouts/default/tkl_iso/readme.md | 2 + .../default_tkl_iso_split_bs_rshift/keymap.c | 32 ++++++ .../default/tkl_iso_split_bs_rshift/info.json | 106 +++++++++++++++++ .../tkl_iso_split_bs_rshift/layout.json | 6 + .../default/tkl_iso_split_bs_rshift/readme.md | 5 + .../default_tkl_iso_tsangan/keymap.c | 32 ++++++ layouts/default/tkl_iso_tsangan/info.json | 103 +++++++++++++++++ layouts/default/tkl_iso_tsangan/layout.json | 6 + layouts/default/tkl_iso_tsangan/readme.md | 5 + .../keymap.c | 32 ++++++ .../tkl_iso_tsangan_split_bs_rshift/info.json | 105 +++++++++++++++++ .../layout.json | 6 + .../tkl_iso_tsangan_split_bs_rshift/readme.md | 5 + 27 files changed, 995 insertions(+) create mode 100644 layouts/default/tkl_ansi_split_bs_rshift/default_tkl_ansi_split_bs_rshift/keymap.c create mode 100644 layouts/default/tkl_ansi_split_bs_rshift/info.json create mode 100644 layouts/default/tkl_ansi_split_bs_rshift/layout.json create mode 100644 layouts/default/tkl_ansi_split_bs_rshift/readme.md create mode 100644 layouts/default/tkl_ansi_tsangan/default_tkl_ansi_tsangan/keymap.c create mode 100644 layouts/default/tkl_ansi_tsangan/info.json create mode 100644 layouts/default/tkl_ansi_tsangan/layout.json create mode 100644 layouts/default/tkl_ansi_tsangan/readme.md create mode 100644 layouts/default/tkl_ansi_tsangan_split_bs_rshift/default_tkl_ansi_tsangan_split_bs_rshift/keymap.c create mode 100644 layouts/default/tkl_ansi_tsangan_split_bs_rshift/info.json create mode 100644 layouts/default/tkl_ansi_tsangan_split_bs_rshift/layout.json create mode 100644 layouts/default/tkl_ansi_tsangan_split_bs_rshift/readme.md create mode 100644 layouts/default/tkl_iso_split_bs_rshift/default_tkl_iso_split_bs_rshift/keymap.c create mode 100644 layouts/default/tkl_iso_split_bs_rshift/info.json create mode 100644 layouts/default/tkl_iso_split_bs_rshift/layout.json create mode 100644 layouts/default/tkl_iso_split_bs_rshift/readme.md create mode 100644 layouts/default/tkl_iso_tsangan/default_tkl_iso_tsangan/keymap.c create mode 100644 layouts/default/tkl_iso_tsangan/info.json create mode 100644 layouts/default/tkl_iso_tsangan/layout.json create mode 100644 layouts/default/tkl_iso_tsangan/readme.md create mode 100644 layouts/default/tkl_iso_tsangan_split_bs_rshift/default_tkl_iso_tsangan_split_bs_rshift/keymap.c create mode 100644 layouts/default/tkl_iso_tsangan_split_bs_rshift/info.json create mode 100644 layouts/default/tkl_iso_tsangan_split_bs_rshift/layout.json create mode 100644 layouts/default/tkl_iso_tsangan_split_bs_rshift/readme.md diff --git a/layouts/default/readme.md b/layouts/default/readme.md index 6f9426992f2..0d2182e6718 100644 --- a/layouts/default/readme.md +++ b/layouts/default/readme.md @@ -497,6 +497,60 @@ LAYOUT_tkl_ansi └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ ``` +``` +LAYOUT_tkl_ansi_split_bs_rshift +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_ansi_tsangan +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_ansi_tsangan_split_bs_rshift +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ +``` + ``` LAYOUT_tkl_iso ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ @@ -515,6 +569,60 @@ LAYOUT_tkl_iso └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ ``` +``` +LAYOUT_tkl_iso_split_bs_rshift +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_iso_tsangan +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ +``` + +``` +LAYOUT_tkl_iso_tsangan_split_bs_rshift +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│ │ │ │ │ │ │ │ │ │ │ │ +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ +``` + ``` LAYOUT_tkl_f13_ansi ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ diff --git a/layouts/default/tkl_ansi/readme.md b/layouts/default/tkl_ansi/readme.md index cd4197ef4e3..71844eacab3 100644 --- a/layouts/default/tkl_ansi/readme.md +++ b/layouts/default/tkl_ansi/readme.md @@ -1,3 +1,5 @@ # tkl_ansi LAYOUT_tkl_ansi + +A standard ANSI TKL layout. diff --git a/layouts/default/tkl_ansi_split_bs_rshift/default_tkl_ansi_split_bs_rshift/keymap.c b/layouts/default/tkl_ansi_split_bs_rshift/default_tkl_ansi_split_bs_rshift/keymap.c new file mode 100644 index 00000000000..17dae9adab8 --- /dev/null +++ b/layouts/default/tkl_ansi_split_bs_rshift/default_tkl_ansi_split_bs_rshift/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2022 QMK / James Young (@noroadsleft) +// 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│ │PSc│Scr│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│ │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 │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│Sft│ │ ↑ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_ansi_split_bs_rshift( + 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_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_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_ansi_split_bs_rshift/info.json b/layouts/default/tkl_ansi_split_bs_rshift/info.json new file mode 100644 index 00000000000..90c0a7e53af --- /dev/null +++ b/layouts/default/tkl_ansi_split_bs_rshift/info.json @@ -0,0 +1,105 @@ +{ + "keyboard_name": "Tenkeyless ANSI layout with split Backspace and split Right Shift", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_ansi_split_bs_rshift": { + "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.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":2.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} + ] + } + } +} diff --git a/layouts/default/tkl_ansi_split_bs_rshift/layout.json b/layouts/default/tkl_ansi_split_bs_rshift/layout.json new file mode 100644 index 00000000000..41efd9789d0 --- /dev/null +++ b/layouts/default/tkl_ansi_split_bs_rshift/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","","",{w:1.75},"","",{x:1.25},""], +[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_ansi_split_bs_rshift/readme.md b/layouts/default/tkl_ansi_split_bs_rshift/readme.md new file mode 100644 index 00000000000..0d5f1262408 --- /dev/null +++ b/layouts/default/tkl_ansi_split_bs_rshift/readme.md @@ -0,0 +1,5 @@ +# tkl_ansi_split_bs_rshift + + LAYOUT_tkl_ansi_split_bs_rshift + +A standard ANSI TKL layout with split Backspace and split Right Shift. diff --git a/layouts/default/tkl_ansi_tsangan/default_tkl_ansi_tsangan/keymap.c b/layouts/default/tkl_ansi_tsangan/default_tkl_ansi_tsangan/keymap.c new file mode 100644 index 00000000000..7e413607029 --- /dev/null +++ b/layouts/default/tkl_ansi_tsangan/default_tkl_ansi_tsangan/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2022 QMK / James Young (@noroadsleft) +// 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│ │PSc│Scr│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │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 │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ + * │Ctrl │GUI│Alt │ │ Alt│App│ Ctrl│ │ ← │ ↓ │ → │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_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_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_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_ansi_tsangan/info.json b/layouts/default/tkl_ansi_tsangan/info.json new file mode 100644 index 00000000000..7a1239c280e --- /dev/null +++ b/layouts/default/tkl_ansi_tsangan/info.json @@ -0,0 +1,102 @@ +{ + "keyboard_name": "Tenkeyless ANSI layout with Tsangan Bottom Row", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_ansi_tsangan": { + "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.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, "w":2}, + {"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":2.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":2.75}, + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":1.5, "y":5.25}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":12.5, "y":5.25}, + {"x":13.5, "y":5.25, "w":1.5}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_ansi_tsangan/layout.json b/layouts/default/tkl_ansi_tsangan/layout.json new file mode 100644 index 00000000000..97f2d2fcbaa --- /dev/null +++ b/layouts/default/tkl_ansi_tsangan/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","","",{w:2.75},"",{x:1.25},""], +[{w:1.5},"","",{w:1.5},"",{w:7},"",{w:1.5},"","",{w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_ansi_tsangan/readme.md b/layouts/default/tkl_ansi_tsangan/readme.md new file mode 100644 index 00000000000..fcbc2569724 --- /dev/null +++ b/layouts/default/tkl_ansi_tsangan/readme.md @@ -0,0 +1,5 @@ +# tkl_ansi_tsangan + + LAYOUT_tkl_ansi_tsangan + +Tenkeyless ANSI layout with Tsangan Bottom Row. diff --git a/layouts/default/tkl_ansi_tsangan_split_bs_rshift/default_tkl_ansi_tsangan_split_bs_rshift/keymap.c b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/default_tkl_ansi_tsangan_split_bs_rshift/keymap.c new file mode 100644 index 00000000000..4f25530da76 --- /dev/null +++ b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/default_tkl_ansi_tsangan_split_bs_rshift/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2022 QMK / James Young (@noroadsleft) +// 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│ │PSc│Scr│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│ │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 │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│Sft│ │ ↑ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ + * │Ctrl │GUI│Alt │ │ Alt│App│ Ctrl│ │ ← │ ↓ │ → │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_ansi_tsangan_split_bs_rshift( + 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_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_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_ansi_tsangan_split_bs_rshift/info.json b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/info.json new file mode 100644 index 00000000000..9068a4692c6 --- /dev/null +++ b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/info.json @@ -0,0 +1,104 @@ +{ + "keyboard_name": "Tenkeyless ANSI layout with split Backspace, split Right Shift, and Tsangan Bottom Row", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_ansi_tsangan_split_bs_rshift": { + "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.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":2.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.5}, + {"x":1.5, "y":5.25}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":12.5, "y":5.25}, + {"x":13.5, "y":5.25, "w":1.5}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_ansi_tsangan_split_bs_rshift/layout.json b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/layout.json new file mode 100644 index 00000000000..d29ae38fe28 --- /dev/null +++ b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","","",{w:1.75},"","",{x:1.25},""], +[{w:1.5},"","",{w:1.5},"",{w:7},"",{w:1.5},"","",{w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_ansi_tsangan_split_bs_rshift/readme.md b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/readme.md new file mode 100644 index 00000000000..8194ac3829a --- /dev/null +++ b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/readme.md @@ -0,0 +1,5 @@ +# tkl_ansi_tsangan_split_bs_rshift + + LAYOUT_tkl_ansi_tsangan_split_bs_rshift + +Tenkeyless ANSI layout with split Backspace, split Right Shift, and Tsangan Bottom Row. diff --git a/layouts/default/tkl_iso/readme.md b/layouts/default/tkl_iso/readme.md index 27281687cd4..b7d954a9fbd 100644 --- a/layouts/default/tkl_iso/readme.md +++ b/layouts/default/tkl_iso/readme.md @@ -1,3 +1,5 @@ # tkl_iso LAYOUT_tkl_iso + +A standard ISO TKL layout. diff --git a/layouts/default/tkl_iso_split_bs_rshift/default_tkl_iso_split_bs_rshift/keymap.c b/layouts/default/tkl_iso_split_bs_rshift/default_tkl_iso_split_bs_rshift/keymap.c new file mode 100644 index 00000000000..992f7d9a2eb --- /dev/null +++ b/layouts/default/tkl_iso_split_bs_rshift/default_tkl_iso_split_bs_rshift/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2022 QMK / James Young (@noroadsleft) +// 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│ │PSc│Scr│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│Sft│ │ ↑ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_iso_split_bs_rshift( + 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_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_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_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_iso_split_bs_rshift/info.json b/layouts/default/tkl_iso_split_bs_rshift/info.json new file mode 100644 index 00000000000..4f0edaff2f2 --- /dev/null +++ b/layouts/default/tkl_iso_split_bs_rshift/info.json @@ -0,0 +1,106 @@ +{ + "keyboard_name": "Tenkeyless ISO layout with split Backspace and split Right Shift", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_iso_split_bs_rshift": { + "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.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":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}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"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} + ] + } + } +} diff --git a/layouts/default/tkl_iso_split_bs_rshift/layout.json b/layouts/default/tkl_iso_split_bs_rshift/layout.json new file mode 100644 index 00000000000..dd96902f736 --- /dev/null +++ b/layouts/default/tkl_iso_split_bs_rshift/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","","",{w:1.75},"","",{x:1.25},""], +[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_iso_split_bs_rshift/readme.md b/layouts/default/tkl_iso_split_bs_rshift/readme.md new file mode 100644 index 00000000000..e8cae42a028 --- /dev/null +++ b/layouts/default/tkl_iso_split_bs_rshift/readme.md @@ -0,0 +1,5 @@ +# tkl_iso_split_bs_rshift + + LAYOUT_tkl_iso_split_bs_rshift + +A standard ISO TKL layout with split Backspace and split Right Shift. diff --git a/layouts/default/tkl_iso_tsangan/default_tkl_iso_tsangan/keymap.c b/layouts/default/tkl_iso_tsangan/default_tkl_iso_tsangan/keymap.c new file mode 100644 index 00000000000..202110046a2 --- /dev/null +++ b/layouts/default/tkl_iso_tsangan/default_tkl_iso_tsangan/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2022 QMK / James Young (@noroadsleft) +// 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│ │PSc│Scr│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ + * │Ctrl │GUI│Alt │ │ Alt│App│ Ctrl│ │ ← │ ↓ │ → │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_iso_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_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_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_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_iso_tsangan/info.json b/layouts/default/tkl_iso_tsangan/info.json new file mode 100644 index 00000000000..8dd5e9f71e7 --- /dev/null +++ b/layouts/default/tkl_iso_tsangan/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "Tenkeyless ISO layout with Tsangan Bottom Row", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_iso_tsangan": { + "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.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, "w":2}, + {"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":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}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"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":2.75}, + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":1.5, "y":5.25}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":12.5, "y":5.25}, + {"x":13.5, "y":5.25, "w":1.5}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_iso_tsangan/layout.json b/layouts/default/tkl_iso_tsangan/layout.json new file mode 100644 index 00000000000..4c69641ab92 --- /dev/null +++ b/layouts/default/tkl_iso_tsangan/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","","",{w:2.75},"",{x:1.25},""], +[{w:1.5},"","",{w:1.5},"",{w:7},"",{w:1.5},"","",{w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_iso_tsangan/readme.md b/layouts/default/tkl_iso_tsangan/readme.md new file mode 100644 index 00000000000..a9f380dcef6 --- /dev/null +++ b/layouts/default/tkl_iso_tsangan/readme.md @@ -0,0 +1,5 @@ +# tkl_iso_tsangan + + LAYOUT_tkl_iso_tsangan + +Tenkeyless ISO layout with Tsangan Bottom Row. diff --git a/layouts/default/tkl_iso_tsangan_split_bs_rshift/default_tkl_iso_tsangan_split_bs_rshift/keymap.c b/layouts/default/tkl_iso_tsangan_split_bs_rshift/default_tkl_iso_tsangan_split_bs_rshift/keymap.c new file mode 100644 index 00000000000..b5635bc3b77 --- /dev/null +++ b/layouts/default/tkl_iso_tsangan_split_bs_rshift/default_tkl_iso_tsangan_split_bs_rshift/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2022 QMK / James Young (@noroadsleft) +// 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│ │PSc│Scr│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│Sft│ │ ↑ │ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ + * │Ctrl │GUI│Alt │ │ Alt│App│ Ctrl│ │ ← │ ↓ │ → │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_iso_tsangan_split_bs_rshift( + 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_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_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_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_iso_tsangan_split_bs_rshift/info.json b/layouts/default/tkl_iso_tsangan_split_bs_rshift/info.json new file mode 100644 index 00000000000..1a9abeb159f --- /dev/null +++ b/layouts/default/tkl_iso_tsangan_split_bs_rshift/info.json @@ -0,0 +1,105 @@ +{ + "keyboard_name": "Tenkeyless ISO layout with split Backspace, split Right Shift, and Tsangan Bottom Row", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_iso_tsangan_split_bs_rshift": { + "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.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":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}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"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.5}, + {"x":1.5, "y":5.25}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":12.5, "y":5.25}, + {"x":13.5, "y":5.25, "w":1.5}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/layouts/default/tkl_iso_tsangan_split_bs_rshift/layout.json b/layouts/default/tkl_iso_tsangan_split_bs_rshift/layout.json new file mode 100644 index 00000000000..4ee61a45cc9 --- /dev/null +++ b/layouts/default/tkl_iso_tsangan_split_bs_rshift/layout.json @@ -0,0 +1,6 @@ +[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""], +[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",""], +[{w:1.25},"","","","","","","","","","","","",{w:1.75},"","",{x:1.25},""], +[{w:1.5},"","",{w:1.5},"",{w:7},"",{w:1.5},"","",{w:1.5},"",{x:0.25},"","",""] diff --git a/layouts/default/tkl_iso_tsangan_split_bs_rshift/readme.md b/layouts/default/tkl_iso_tsangan_split_bs_rshift/readme.md new file mode 100644 index 00000000000..2c7f680ec1a --- /dev/null +++ b/layouts/default/tkl_iso_tsangan_split_bs_rshift/readme.md @@ -0,0 +1,5 @@ +# tkl_iso_tsangan_split_bs_rshift + + LAYOUT_tkl_iso_tsangan_split_bs_rshift + +Tenkeyless ISO layout with split Backspace, split Right Shift, and Tsangan Bottom Row. From 0e5d67145a649480fd49a72712997feb6303a471 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 5 Jul 2022 08:58:35 +1000 Subject: [PATCH 34/34] Allow for `keymaps` array to be implemented in a file other than `$(KEYMAP_C)` (#17559) --- builddefs/build_keyboard.mk | 6 ++++++ quantum/keymap_introspection.c | 5 +++++ users/manna-harbour_miryoku/post_rules.mk | 2 -- users/manna-harbour_miryoku/rules.mk | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/builddefs/build_keyboard.mk b/builddefs/build_keyboard.mk index b5616a438f0..fe95dcaf15b 100644 --- a/builddefs/build_keyboard.mk +++ b/builddefs/build_keyboard.mk @@ -400,6 +400,12 @@ endif OPT_DEFS += -DKEYMAP_C=\"$(KEYMAP_C)\" +# If a keymap or userspace places their keymap array in another file instead, allow for it to be included +# !!NOTE!! -- For this to work, the source file cannot be part of $(SRC), so users should not add it via `SRC += ` +ifneq ($(strip $(INTROSPECTION_KEYMAP_C)),) +OPT_DEFS += -DINTROSPECTION_KEYMAP_C=\"$(strip $(INTROSPECTION_KEYMAP_C))\" +endif + # project specific files SRC += \ $(KEYBOARD_SRC) \ diff --git a/quantum/keymap_introspection.c b/quantum/keymap_introspection.c index 9628b41eefc..7a96f802ef2 100644 --- a/quantum/keymap_introspection.c +++ b/quantum/keymap_introspection.c @@ -4,6 +4,11 @@ // Pull the actual keymap code so that we can inspect stuff from it #include KEYMAP_C +// Allow for keymap or userspace rules.mk to specify an alternate location for the keymap array +#ifdef INTROSPECTION_KEYMAP_C +# include INTROSPECTION_KEYMAP_C +#endif // INTROSPECTION_KEYMAP_C + #include "keymap_introspection.h" #define NUM_KEYMAP_LAYERS ((uint8_t)(sizeof(keymaps) / ((MATRIX_ROWS) * (MATRIX_COLS) * sizeof(uint16_t)))) diff --git a/users/manna-harbour_miryoku/post_rules.mk b/users/manna-harbour_miryoku/post_rules.mk index c5b4b7d28e2..8fece85e667 100644 --- a/users/manna-harbour_miryoku/post_rules.mk +++ b/users/manna-harbour_miryoku/post_rules.mk @@ -1,8 +1,6 @@ # Copyright 2019 Manna Harbour # https://github.com/manna-harbour/miryoku -SRC += manna-harbour_miryoku.c # keymaps - # alternative layouts: # alphas diff --git a/users/manna-harbour_miryoku/rules.mk b/users/manna-harbour_miryoku/rules.mk index 879c7fc43e9..ea226c4a3d3 100644 --- a/users/manna-harbour_miryoku/rules.mk +++ b/users/manna-harbour_miryoku/rules.mk @@ -5,7 +5,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control AUTO_SHIFT_ENABLE = yes # Auto Shift -SRC += manna-harbour_miryoku.c # keymaps +INTROSPECTION_KEYMAP_C = manna-harbour_miryoku.c # keymaps include users/manna-harbour_miryoku/custom_rules.mk