From 58ebb39d8161236f015175231cc858bbbb57b738 Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Mon, 4 Oct 2021 21:13:01 +0200 Subject: [PATCH 001/167] mkbd65 added --- keyboards/mkbd65/README.md | 17 ++ keyboards/mkbd65/config.h | 158 +++++++++++ keyboards/mkbd65/info.json | 310 +++++++++++++++++++++ keyboards/mkbd65/keymaps/default/README.md | 52 ++++ keyboards/mkbd65/keymaps/default/config.h | 19 ++ keyboards/mkbd65/keymaps/default/keymap.c | 45 +++ keyboards/mkbd65/mkbd65.c | 43 +++ keyboards/mkbd65/mkbd65.h | 56 ++++ keyboards/mkbd65/rules.mk | 80 ++++++ 9 files changed, 780 insertions(+) create mode 100644 keyboards/mkbd65/README.md create mode 100644 keyboards/mkbd65/config.h create mode 100644 keyboards/mkbd65/info.json create mode 100644 keyboards/mkbd65/keymaps/default/README.md create mode 100644 keyboards/mkbd65/keymaps/default/config.h create mode 100644 keyboards/mkbd65/keymaps/default/keymap.c create mode 100644 keyboards/mkbd65/mkbd65.c create mode 100644 keyboards/mkbd65/mkbd65.h create mode 100644 keyboards/mkbd65/rules.mk diff --git a/keyboards/mkbd65/README.md b/keyboards/mkbd65/README.md new file mode 100644 index 0000000000..b9946cfd26 --- /dev/null +++ b/keyboards/mkbd65/README.md @@ -0,0 +1,17 @@ +# mkbd65 + +![mkbd65](https://gitlab.com/mkbd65/pcb/raw/master/mkbd65.png) + +A mobile keyboard addon for smartphones. + +Keyboard Maintainer: [XenGi](https://xengi.de) +Hardware Supported: [mkbd65 PCB](https://gitlab.com/mkbd65) +Hardware Availability: - + +Make example for this keyboard (after setting up your build environment): + +``` +make mkbd65: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). diff --git a/keyboards/mkbd65/config.h b/keyboards/mkbd65/config.h new file mode 100644 index 0000000000..704fe8f4dc --- /dev/null +++ b/keyboards/mkbd65/config.h @@ -0,0 +1,158 @@ +/* +Copyright 2018 XenGi + +This 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 0xDEAD +#define PRODUCT_ID 0xBEAF +#define DEVICE_VER 0x0001 +#define MANUFACTURER XenGi +#define PRODUCT mkbd65 +#define DESCRIPTION Custom keyboard addon for smartphones + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 12 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D4, D6, D7, B4, B5 } +#define MATRIX_COL_PINS { D5, C7, C6, D3, D2, D1, D0, B7, B3, B2, B1, B0 } +#define UNUSED_PINS { E6, F0, F1, F4, F5, F6, F7 } + +/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B6 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 3 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 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 + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * 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 +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION diff --git a/keyboards/mkbd65/info.json b/keyboards/mkbd65/info.json new file mode 100644 index 0000000000..a63e1f9a43 --- /dev/null +++ b/keyboards/mkbd65/info.json @@ -0,0 +1,310 @@ +{ + "keyboard_name": "MKBD65", + "url": "https://gitlab.com/xengi/mkbd65", + "maintainer": "XenGi", + "width": 12, + "height": 5, + "layouts": { + "LAYOUT": { + "key_count": 58, + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "1", + "x": 1, + "y": 0 + }, + { + "label": "2", + "x": 2, + "y": 0 + }, + { + "label": "3", + "x": 3, + "y": 0 + }, + { + "label": "4", + "x": 4, + "y": 0 + }, + { + "label": "5", + "x": 5, + "y": 0 + }, + { + "label": "6", + "x": 6, + "y": 0 + }, + { + "label": "7", + "x": 7, + "y": 0 + }, + { + "label": "8", + "x": 8, + "y": 0 + }, + { + "label": "9", + "x": 9, + "y": 0 + }, + { + "label": "0", + "x": 10, + "y": 0 + }, + { + "label": "Delete", + "x": 11, + "y": 0 + }, + { + "label": "Q", + "x": 0, + "y": 1 + }, + { + "label": "W", + "x": 1, + "y": 1 + }, + { + "label": "E", + "x": 2, + "y": 1 + }, + { + "label": "R", + "x": 3, + "y": 1 + }, + { + "label": "T", + "x": 4, + "y": 1 + }, + { + "label": "Y", + "x": 5, + "y": 1 + }, + { + "label": "U", + "x": 6, + "y": 1 + }, + { + "label": "I", + "x": 7, + "y": 1 + }, + { + "label": "O", + "x": 8, + "y": 1 + }, + { + "label": "P", + "x": 9, + "y": 1 + }, + { + "label": "{", + "x": 10, + "y": 1 + }, + { + "label": "}", + "x": 11, + "y": 1 + }, + { + "label": "A", + "x": 0, + "y": 3 + }, + { + "label": "S", + "x": 1, + "y": 3 + }, + { + "label": "D", + "x": 2, + "y": 3 + }, + { + "label": "F", + "x": 3, + "y": 3 + }, + { + "label": "G", + "x": 4, + "y": 3 + }, + { + "label": "H", + "x": 5, + "y": 3 + }, + { + "label": "J", + "x": 6, + "y": 3 + }, + { + "label": "K", + "x": 7, + "y": 3 + }, + { + "label": "L", + "x": 8, + "y": 3 + }, + { + "label": ":", + "x": 9, + "y": 3 + }, + { + "label": "\"", + "x": 10, + "y": 3 + }, + { + "label": "Enter", + "x": 11, + "y": 3, + "w": 2.25 + }, + { + "label": "Z", + "x": 0, + "y": 4 + }, + { + "label": "X", + "x": 1, + "y": 4 + }, + { + "label": "C", + "x": 2, + "y": 4 + }, + { + "label": "V", + "x": 3, + "y": 4 + }, + { + "label": "B", + "x": 4, + "y": 4 + }, + { + "label": "N", + "x": 5, + "y": 4 + }, + { + "label": "M", + "x": 6, + "y": 4 + }, + { + "label": "<", + "x": 7, + "y": 4 + }, + { + "label": ">", + "x": 8, + "y": 4 + }, + { + "label": "?", + "x": 9, + "y": 4 + }, + { + "label": "↑", + "x": 10, + "y": 4 + }, + { + "label": "Shift", + "x": 11, + "y": 4 + }, + { + "label": "Ctrl", + "x": 0, + "y": 5 + }, + { + "label": "Fn", + "x": 1, + "y": 5 + }, + { + "label": "Shift", + "x": 2, + "y": 5 + }, + { + "label": "Alt", + "x": 3, + "y": 5 + }, + { + "label": "|", + "x": 4, + "y": 5 + }, + { + "x": 5, + "y": 5, + "w": 2 + }, + { + "label": "_", + "x": 7, + "y": 5 + }, + { + "label": "+", + "x": 8, + "y": 5 + }, + { + "label": "←", + "x": 9, + "y": 5 + }, + { + "label": "↓", + "x": 10, + "y": 5 + }, + { + "label": "→", + "x": 11, + "y": 5 + } + ] + } + } +} diff --git a/keyboards/mkbd65/keymaps/default/README.md b/keyboards/mkbd65/keymaps/default/README.md new file mode 100644 index 0000000000..2f7e9c220f --- /dev/null +++ b/keyboards/mkbd65/keymaps/default/README.md @@ -0,0 +1,52 @@ +# The default keymap for mkbd65 + +``` +0: no mod +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╗ +║ ESC║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║ 0 ║BKSP║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ q ║ w ║ e ║ r ║ t ║ y ║ u ║ i ║ o ║ p ║ [ ║ ] ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ a ║ s ║ d ║ f ║ g ║ h ║ j ║ k ║ l ║ ; ║ ' ║ RET║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ z ║ x ║ c ║ v ║ b ║ n ║ m ║ , ║ . ║ / ║ ▲ ║SHFT║ +╠════╬════╬════╬════╬════╬════╩════╬════╬════╬════╬════╬════╣ +║CTRL║ FN ║SHFT║ ALT║ \ ║ SPACE ║ - ║ = ║ ◀ ║ ▼ ║ ▶ ║ +╚════╩════╩════╩════╩════╩═════════╩════╩════╩════╩════╩════╝ +1: mod shift +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╗ +║ ~ ║ ! ║ @ ║ # ║ $ ║ % ║ ^ ║ & ║ * ║ ( ║ ) ║BKSP║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ Q ║ W ║ E ║ R ║ T ║ Y ║ U ║ I ║ O ║ P ║ { ║ } ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ A ║ S ║ D ║ F ║ G ║ H ║ J ║ K ║ L ║ : ║ " ║ RET║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ Z ║ X ║ C ║ V ║ B ║ N ║ M ║ < ║ > ║ ? ║ ▲ ║░░░░║ +╠════╬════╬════╬════╬════╬════╩════╬════╬════╬════╬════╬════╣ +║CTRL║ FN ║░░░░║ ALT║ | ║ SPACE ║ _ ║ + ║ ◀ ║ ▼ ║ ▶ ║ +╚════╩════╩════╩════╩════╩═════════╩════╩════╩════╩════╩════╝ +2: mod alt +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╗ +║ ║ ¹ ║ ² ║ ³ ║ ║ € ║ ║ ║ ║ ║ ║BKSP║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ ä ║ ║ ║ ║ ║ ü ║ ║ ║ ║ ö ║ « ║ » ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ ║ ß ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ RET║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ▲ ║SHFT║ +╠════╬════╬════╬════╬════╬════╩════╬════╬════╬════╬════╬════╣ +║CTRL║ FN ║SHFT║░░░░║ ║ SPACE ║ ║ ║ ◀ ║ ▼ ║ ▶ ║ +╚════╩════╩════╩════╩════╩═════════╩════╩════╩════╩════╩════╝ +3: mod fn +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╗ +║ Esc║ F1 ║ F2 ║ F3 ║ F4 ║ F5 ║ F6 ║ F7 ║ F8 ║ F9 ║ F10║ Del║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ F11║ F12║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║SUPR║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║PgUp║SHFT║ +╠════╬════╬════╬════╬════╬════╩════╬════╬════╬════╬════╬════╣ +║CTRL║░░░░║SHFT║ ALT║ ║ Tab ║ ║ ` ║Pos1║PgDn║ End║ +╚════╩════╩════╩════╩════╩═════════╩════╩════╩════╩════╩════╝ +``` diff --git a/keyboards/mkbd65/keymaps/default/config.h b/keyboards/mkbd65/keymaps/default/config.h new file mode 100644 index 0000000000..d08c67c094 --- /dev/null +++ b/keyboards/mkbd65/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2018 XenGi + * + * This 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 + +// place overrides here diff --git a/keyboards/mkbd65/keymaps/default/keymap.c b/keyboards/mkbd65/keymaps/default/keymap.c new file mode 100644 index 0000000000..f57e6871fb --- /dev/null +++ b/keyboards/mkbd65/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2018 XenGi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Base layer */ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, + KC_LCTL, MO(1), KC_LSFT, KC_RALT, KC_BSLS, KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( /* Function layer */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_LGUI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, + _______, _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END + ), +}; + +void matrix_init_user(void) { +} + +void matrix_scan_user(void) { +} + +void led_set_user(uint8_t usb_led) { +} + diff --git a/keyboards/mkbd65/mkbd65.c b/keyboards/mkbd65/mkbd65.c new file mode 100644 index 0000000000..ab03178a44 --- /dev/null +++ b/keyboards/mkbd65/mkbd65.c @@ -0,0 +1,43 @@ +/* Copyright 2018 XenGi + * + * This 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 "mkbd65.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} diff --git a/keyboards/mkbd65/mkbd65.h b/keyboards/mkbd65/mkbd65.h new file mode 100644 index 0000000000..b9437d02b3 --- /dev/null +++ b/keyboards/mkbd65/mkbd65.h @@ -0,0 +1,56 @@ +/* Copyright 2018 XenGi + * + * This 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 . + */ +#ifndef MKBD65_H +#define MKBD65_H + +#include "quantum.h" + +/* LAYOUT + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┼───┼───┼───┼───┼───┴───┼───┼───┼───┼───┼───┤ + * │ │ │ │ │ │ 2.0U │ │ │ │ │ │ + * └───┴───┴───┴───┴───┴───────┴───┴───┴───┴───┴───┘ + * This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, \ + K40, K41, K42, K43, K44, K45, K47, K48, K49, K410, K411 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311 }, \ + { K40, K41, K42, K43, K44, K45, KC_NO, K47, K48, K49, K410, K411 } \ +} + +#endif diff --git a/keyboards/mkbd65/rules.mk b/keyboards/mkbd65/rules.mk new file mode 100644 index 0000000000..0187f822d3 --- /dev/null +++ b/keyboards/mkbd65/rules.mk @@ -0,0 +1,80 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Bootloader selection +# Teensy halfkay +# Pro Micro caterina +# Atmel DFU atmel-dfu +# LUFA DFU lufa-dfu +# QMK DFU qmk-dfu +# atmega32a bootloadHID +BOOTLOADER = halfkay + + +# If you don't know the bootloader type, then you can specify the +# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +# OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 +FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches +HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) From d7ebb14089b49446dfdbbdd293290288eaec615c Mon Sep 17 00:00:00 2001 From: XenGi Date: Thu, 4 Nov 2021 17:45:28 +0000 Subject: [PATCH 002/167] Update README.md --- keyboards/mkbd65/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/mkbd65/README.md b/keyboards/mkbd65/README.md index b9946cfd26..887aa2a795 100644 --- a/keyboards/mkbd65/README.md +++ b/keyboards/mkbd65/README.md @@ -2,11 +2,11 @@ ![mkbd65](https://gitlab.com/mkbd65/pcb/raw/master/mkbd65.png) -A mobile keyboard addon for smartphones. +A mobile keyboard addon for modern smartphones. -Keyboard Maintainer: [XenGi](https://xengi.de) -Hardware Supported: [mkbd65 PCB](https://gitlab.com/mkbd65) -Hardware Availability: - +- Keyboard Maintainer: [XenGi](https://xengi.de) +- Hardware Supported: [mkbd65 PCB](https://gitlab.com/mkbd65/pcb) +- Hardware Availability: - Make example for this keyboard (after setting up your build environment): From 822e0caf42e190d846d4ef2496a740f1af625ef2 Mon Sep 17 00:00:00 2001 From: XenGi Date: Thu, 4 Nov 2021 17:48:29 +0000 Subject: [PATCH 003/167] Update keyboards/mkbd65/mkbd65.png, keyboards/mkbd65/README.md --- keyboards/mkbd65/README.md | 2 +- keyboards/mkbd65/mkbd65.png | Bin 0 -> 812 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 keyboards/mkbd65/mkbd65.png diff --git a/keyboards/mkbd65/README.md b/keyboards/mkbd65/README.md index 887aa2a795..08852e8fc2 100644 --- a/keyboards/mkbd65/README.md +++ b/keyboards/mkbd65/README.md @@ -1,6 +1,6 @@ # mkbd65 -![mkbd65](https://gitlab.com/mkbd65/pcb/raw/master/mkbd65.png) +![mkbd65](https://gitlab.com/mkbd65/qmk-firmware/-/raw/mkbd65/keyboards/mkbd65/mkbd65.png?inline=false) A mobile keyboard addon for modern smartphones. diff --git a/keyboards/mkbd65/mkbd65.png b/keyboards/mkbd65/mkbd65.png new file mode 100644 index 0000000000000000000000000000000000000000..b873771c748a467ea808d6c7f91220fe7642e11c GIT binary patch literal 812 zcmeAS@N?(olHy`uVBq!ia0y~yVDMsKU@+%kVqjoU;q$g+U|?*?baoE#baqxKD9TUE z%t>Wn(3n^|(bnUzgUr$R%UwZQO}ZM7CM>jy6c8=Eq9wA>X@zK1slm=K+_OwnboKh0 zvJW2YKf0>9d-FQJbxjIC7#}@*w&aD9>OXzWEgc^p?2v!|&i36sMyJJROtcO7GODin zs6I+k+pSf$U#WxPm*BC6GdjtBlO}zTiU0oL<5#_7oA;dmYgu)5&QXT>9yX_WHhb-H zwAmYJYVls!Jt8oy^L*!VpIr(cm9L9Vzi%NfBUX`i#Ao@lPURy>3!A6%rMU(x&r|AK zHOud()3Ma4pT*MG#w4$;{v_U3^y`$-^-MnHMpqrjCJt89DFJSxhEb(KI!iL_-#wHs z`XjVcq-g4a6B`@2OiuL4|KYDI&wi?|erHL5%!{gxZ~FxoREuX^%l-ZP#HAX4HWh(Z*iu2j;oqsWVlfw@&j&(ct zZv9sHi($#i)lYZ}3OIViG^+1DzH2*o@89ZWSMT$y&MWHZ6T5Pofq{Xuz$3Dlfk96h zgc&QA+LtjfFtC?+`ns||EZzkx!g~flkEm$e^vd7w~p1<#LG+X z*IfVhA#h>pBrff{Vawkv`gAnB?yBC`poGZxYvVRQS74qSe0$f27ImAh88;6swplmr z+l&v>$^!TQ5Wg?M;Zo6ZGT&?A$+H{^h3@A9WQsy!D$hO4KNXqFv;By~|DTgsa@wO} ztLrr0dRAYW_surb|JLMhOKdaW`)?_K8Q@~Md`tPVy$Al9uk*e5KsMk`{ULjX`!&i( VH6?xTGcYhPc)I$ztaD0e0s!C_ZHNE> literal 0 HcmV?d00001 From 706bbd9228da354a6a653421b4030b5f72e7fc19 Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Wed, 5 Jan 2022 00:59:33 +0100 Subject: [PATCH 004/167] support new PCB and ANSI and ISO layout --- keyboards/mkbd65/README.md | 11 ++- keyboards/mkbd65/config.h | 19 ++-- keyboards/mkbd65/info.json | 2 +- .../keymaps/{default => ansi}/README.md | 92 ++++++++++--------- .../mkbd65/keymaps/{default => ansi}/config.h | 2 +- keyboards/mkbd65/keymaps/ansi/keymap.c | 45 +++++++++ keyboards/mkbd65/keymaps/default | 1 + keyboards/mkbd65/keymaps/iso/README.md | 54 +++++++++++ keyboards/mkbd65/keymaps/iso/config.h | 19 ++++ .../mkbd65/keymaps/{default => iso}/keymap.c | 14 +-- keyboards/mkbd65/mkbd65.c | 2 +- keyboards/mkbd65/mkbd65.h | 78 +++++++++++----- 12 files changed, 248 insertions(+), 91 deletions(-) rename keyboards/mkbd65/keymaps/{default => ansi}/README.md (52%) rename keyboards/mkbd65/keymaps/{default => ansi}/config.h (96%) create mode 100644 keyboards/mkbd65/keymaps/ansi/keymap.c create mode 120000 keyboards/mkbd65/keymaps/default create mode 100644 keyboards/mkbd65/keymaps/iso/README.md create mode 100644 keyboards/mkbd65/keymaps/iso/config.h rename keyboards/mkbd65/keymaps/{default => iso}/keymap.c (78%) diff --git a/keyboards/mkbd65/README.md b/keyboards/mkbd65/README.md index 08852e8fc2..045589252f 100644 --- a/keyboards/mkbd65/README.md +++ b/keyboards/mkbd65/README.md @@ -1,7 +1,7 @@ -# mkbd65 - ![mkbd65](https://gitlab.com/mkbd65/qmk-firmware/-/raw/mkbd65/keyboards/mkbd65/mkbd65.png?inline=false) +# mkbd65 + A mobile keyboard addon for modern smartphones. - Keyboard Maintainer: [XenGi](https://xengi.de) @@ -14,4 +14,11 @@ Make example for this keyboard (after setting up your build environment): make mkbd65:default ``` +Available layouts: + + - ansi (default) + - iso (upright `Enter` key) + +_Don't forget to connect the correct solder joints on the PCB to switch the layout._ + 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/mkbd65/config.h b/keyboards/mkbd65/config.h index 704fe8f4dc..6b4e2fbe05 100644 --- a/keyboards/mkbd65/config.h +++ b/keyboards/mkbd65/config.h @@ -1,5 +1,5 @@ /* -Copyright 2018 XenGi +Copyright 2022 XenGi This 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,8 +20,8 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xDEAD -#define PRODUCT_ID 0xBEAF +#define VENDOR_ID 0x1209 +#define PRODUCT_ID 0x4803 #define DEVICE_VER 0x0001 #define MANUFACTURER XenGi #define PRODUCT mkbd65 @@ -29,7 +29,7 @@ along with this program. If not, see . /* key matrix size */ #define MATRIX_ROWS 5 -#define MATRIX_COLS 12 +#define MATRIX_COLS 13 /* * Keyboard Matrix Assignments @@ -41,16 +41,17 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { D4, D6, D7, B4, B5 } -#define MATRIX_COL_PINS { D5, C7, C6, D3, D2, D1, D0, B7, B3, B2, B1, B0 } -#define UNUSED_PINS { E6, F0, F1, F4, F5, F6, F7 } +#define MATRIX_COL_PINS { D4, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 } +#define MATRIX_ROW_PINS { D5, D3, D2, D1, D0 } +#define UNUSED_PINS { B3, B2, B1, B0, E6 } /* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ -#define DIODE_DIRECTION COL2ROW +#define DIODE_DIRECTION ROW2COL -#define BACKLIGHT_PIN B6 +#define BACKLIGHT_PIN B7 #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_ON_STATE 1 /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCING_DELAY 5 diff --git a/keyboards/mkbd65/info.json b/keyboards/mkbd65/info.json index a63e1f9a43..dd4edfcd06 100644 --- a/keyboards/mkbd65/info.json +++ b/keyboards/mkbd65/info.json @@ -1,6 +1,6 @@ { "keyboard_name": "MKBD65", - "url": "https://gitlab.com/xengi/mkbd65", + "url": "https://gitlab.com/mkbd65", "maintainer": "XenGi", "width": 12, "height": 5, diff --git a/keyboards/mkbd65/keymaps/default/README.md b/keyboards/mkbd65/keymaps/ansi/README.md similarity index 52% rename from keyboards/mkbd65/keymaps/default/README.md rename to keyboards/mkbd65/keymaps/ansi/README.md index 2f7e9c220f..00feeefc77 100644 --- a/keyboards/mkbd65/keymaps/default/README.md +++ b/keyboards/mkbd65/keymaps/ansi/README.md @@ -1,52 +1,54 @@ -# The default keymap for mkbd65 +# The ANSI keymap for mkbd65 + +This is the default layout. ``` 0: no mod -╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╗ -║ ESC║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║ 0 ║BKSP║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ q ║ w ║ e ║ r ║ t ║ y ║ u ║ i ║ o ║ p ║ [ ║ ] ║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ a ║ s ║ d ║ f ║ g ║ h ║ j ║ k ║ l ║ ; ║ ' ║ RET║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ z ║ x ║ c ║ v ║ b ║ n ║ m ║ , ║ . ║ / ║ ▲ ║SHFT║ -╠════╬════╬════╬════╬════╬════╩════╬════╬════╬════╬════╬════╣ -║CTRL║ FN ║SHFT║ ALT║ \ ║ SPACE ║ - ║ = ║ ◀ ║ ▼ ║ ▶ ║ -╚════╩════╩════╩════╩════╩═════════╩════╩════╩════╩════╩════╝ +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ Esc║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║ 0 ║Backspace║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ q ║ w ║ e ║ r ║ t ║ y ║ u ║ i ║ o ║ p ║ [ ║ ] ║ \ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ +║ a ║ s ║ d ║ f ║ g ║ h ║ j ║ k ║ l ║ ; ║ ' ║ Return ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ +║ z ║ x ║ c ║ v ║ b ║ n ║ m ║ , ║ . ║ / ║ ▲ ║ Shift ║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ +║Ctrl║ Fn ║Shft║AltG║ Space ║ - ║ = ║ ◀ ║ ▼ ║ ▶ ║Ctrl║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ 1: mod shift -╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╗ -║ ~ ║ ! ║ @ ║ # ║ $ ║ % ║ ^ ║ & ║ * ║ ( ║ ) ║BKSP║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ Q ║ W ║ E ║ R ║ T ║ Y ║ U ║ I ║ O ║ P ║ { ║ } ║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ A ║ S ║ D ║ F ║ G ║ H ║ J ║ K ║ L ║ : ║ " ║ RET║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ Z ║ X ║ C ║ V ║ B ║ N ║ M ║ < ║ > ║ ? ║ ▲ ║░░░░║ -╠════╬════╬════╬════╬════╬════╩════╬════╬════╬════╬════╬════╣ -║CTRL║ FN ║░░░░║ ALT║ | ║ SPACE ║ _ ║ + ║ ◀ ║ ▼ ║ ▶ ║ -╚════╩════╩════╩════╩════╩═════════╩════╩════╩════╩════╩════╝ +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ ~ ║ ! ║ @ ║ # ║ $ ║ % ║ ^ ║ & ║ * ║ ( ║ ) ║Backspace║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ Q ║ W ║ E ║ R ║ T ║ Y ║ U ║ I ║ O ║ P ║ { ║ } ║ | ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ +║ A ║ S ║ D ║ F ║ G ║ H ║ J ║ K ║ L ║ : ║ " ║ Return ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ +║ Z ║ X ║ C ║ V ║ B ║ N ║ M ║ < ║ > ║ ? ║ ▲ ║░░░░░░░░░║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ +║Ctrl║ Fn ║░░░░║AltG║ Space ║ _ ║ + ║ ◀ ║ ▼ ║ ▶ ║Ctrl║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ 2: mod alt -╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╗ -║ ║ ¹ ║ ² ║ ³ ║ ║ € ║ ║ ║ ║ ║ ║BKSP║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ ä ║ ║ ║ ║ ║ ü ║ ║ ║ ║ ö ║ « ║ » ║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ ║ ß ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ RET║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ▲ ║SHFT║ -╠════╬════╬════╬════╬════╬════╩════╬════╬════╬════╬════╬════╣ -║CTRL║ FN ║SHFT║░░░░║ ║ SPACE ║ ║ ║ ◀ ║ ▼ ║ ▶ ║ -╚════╩════╩════╩════╩════╩═════════╩════╩════╩════╩════╩════╝ +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ ║ ¹ ║ ² ║ ³ ║ ║ € ║ ║ ║ ║ ║ ║Backspace║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ ä ║ ║ ║ ║ ║ ü ║ ║ ║ ║ ö ║ « ║ » ║ ¬ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ +║ ║ ß ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ Return ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ +║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ▲ ║ Shift ║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ +║Ctrl║ Fn ║Shft║░░░░║ Space ║ ║ ║ ◀ ║ ▼ ║ ▶ ║Ctrl║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ 3: mod fn -╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╗ -║ Esc║ F1 ║ F2 ║ F3 ║ F4 ║ F5 ║ F6 ║ F7 ║ F8 ║ F9 ║ F10║ Del║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ F11║ F12║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║SUPR║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║PgUp║SHFT║ -╠════╬════╬════╬════╬════╬════╩════╬════╬════╬════╬════╬════╣ -║CTRL║░░░░║SHFT║ ALT║ ║ Tab ║ ║ ` ║Pos1║PgDn║ End║ -╚════╩════╩════╩════╩════╩═════════╩════╩════╩════╩════╩════╝ +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ Esc║ F1 ║ F2 ║ F3 ║ F4 ║ F5 ║ F6 ║ F7 ║ F8 ║ F9 ║ F10║ Delete ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ F11║ F12║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ Super ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║PgUp║ Shift ║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ +║Ctrl║░░░░║Shft║AltG║ Tab ║ ║ ` ║Pos1║PgDn║ End║Ctrl║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ ``` diff --git a/keyboards/mkbd65/keymaps/default/config.h b/keyboards/mkbd65/keymaps/ansi/config.h similarity index 96% rename from keyboards/mkbd65/keymaps/default/config.h rename to keyboards/mkbd65/keymaps/ansi/config.h index d08c67c094..b0d0727509 100644 --- a/keyboards/mkbd65/keymaps/default/config.h +++ b/keyboards/mkbd65/keymaps/ansi/config.h @@ -1,4 +1,4 @@ -/* Copyright 2018 XenGi +/* Copyright 2022 XenGi * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/mkbd65/keymaps/ansi/keymap.c b/keyboards/mkbd65/keymaps/ansi/keymap.c new file mode 100644 index 0000000000..4b7b3520a4 --- /dev/null +++ b/keyboards/mkbd65/keymaps/ansi/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2022 XenGi + * + * This 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_ANSI( /* Base layer */ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, + KC_LCTL, MO(1), KC_LSFT, KC_RALT, KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL, + ), + + [1] = LAYOUT_ANSI( /* Function layer */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_LGUI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, + _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______, + ), +}; + +void matrix_init_user(void) { +} + +void matrix_scan_user(void) { +} + +void led_set_user(uint8_t usb_led) { +} + diff --git a/keyboards/mkbd65/keymaps/default b/keyboards/mkbd65/keymaps/default new file mode 120000 index 0000000000..44ad4f4f7e --- /dev/null +++ b/keyboards/mkbd65/keymaps/default @@ -0,0 +1 @@ +ansi \ No newline at end of file diff --git a/keyboards/mkbd65/keymaps/iso/README.md b/keyboards/mkbd65/keymaps/iso/README.md new file mode 100644 index 0000000000..d08f8c1b9e --- /dev/null +++ b/keyboards/mkbd65/keymaps/iso/README.md @@ -0,0 +1,54 @@ +# The iso-like keymap for mkbd65 + +It's actually just ANSI but with an upright `Enter` key. + +``` +0: no mod +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ Esc║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║ 0 ║Backspace║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ q ║ w ║ e ║ r ║ t ║ y ║ u ║ i ║ o ║ p ║ [ ║ ] ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ Ret║ +║ a ║ s ║ d ║ f ║ g ║ h ║ j ║ k ║ l ║ ; ║ ' ║ \ ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ +║ z ║ x ║ c ║ v ║ b ║ n ║ m ║ , ║ . ║ / ║ ▲ ║ Shift ║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ +║Ctrl║ Fn ║Shft║AltG║ SPACE ║ - ║ = ║ ◀ ║ ▼ ║ ▶ ║Ctrl║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ +1: mod shift +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ ~ ║ ! ║ @ ║ # ║ $ ║ % ║ ^ ║ & ║ * ║ ( ║ ) ║Backspace║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ Q ║ W ║ E ║ R ║ T ║ Y ║ U ║ I ║ O ║ P ║ { ║ } ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ Ret║ +║ A ║ S ║ D ║ F ║ G ║ H ║ J ║ K ║ L ║ : ║ " ║ | ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ +║ Z ║ X ║ C ║ V ║ B ║ N ║ M ║ < ║ > ║ ? ║ ▲ ║░░░░░░░░░║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ +║Ctrl║ Fn ║░░░░║AltG║ SPACE ║ _ ║ + ║ ◀ ║ ▼ ║ ▶ ║Ctrl║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ +2: mod alt +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ ║ ¹ ║ ² ║ ³ ║ ║ € ║ ║ ║ ║ ║ ║Backspace║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ ä ║ ║ ║ ║ ║ ü ║ ║ ║ ║ ö ║ « ║ » ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ Ret║ +║ ║ ß ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ¬ ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ +║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ▲ ║ Shift ║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ +║Ctrl║ Fn ║Shft║░░░░║ SPACE ║ ║ ║ ◀ ║ ▼ ║ ▶ ║Ctrl║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ +3: mod fn +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ Esc║ F1 ║ F2 ║ F3 ║ F4 ║ F5 ║ F6 ║ F7 ║ F8 ║ F9 ║ F10║ Delete ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ F11║ F12║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣Supr║ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║PgUp║ Shift ║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ +║Ctrl║░░░░║Shft║AltG║ Tab ║ ║ ` ║Pos1║PgDn║ End║Ctrl║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ +``` diff --git a/keyboards/mkbd65/keymaps/iso/config.h b/keyboards/mkbd65/keymaps/iso/config.h new file mode 100644 index 0000000000..b0d0727509 --- /dev/null +++ b/keyboards/mkbd65/keymaps/iso/config.h @@ -0,0 +1,19 @@ +/* Copyright 2022 XenGi + * + * This 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 + +// place overrides here diff --git a/keyboards/mkbd65/keymaps/default/keymap.c b/keyboards/mkbd65/keymaps/iso/keymap.c similarity index 78% rename from keyboards/mkbd65/keymaps/default/keymap.c rename to keyboards/mkbd65/keymaps/iso/keymap.c index f57e6871fb..155a2b205b 100644 --- a/keyboards/mkbd65/keymaps/default/keymap.c +++ b/keyboards/mkbd65/keymaps/iso/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2018 XenGi +/* Copyright 2022 XenGi * * This 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,20 +17,20 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( /* Base layer */ + [0] = LAYOUT_ISO( /* Base layer */ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, - KC_LCTL, MO(1), KC_LSFT, KC_RALT, KC_BSLS, KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, MO(1), KC_LSFT, KC_RALT, KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL, ), - [1] = LAYOUT( /* Function layer */ + [1] = LAYOUT_ISO( /* Function layer */ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_LGUI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GRV, _______, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, - _______, _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END + _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______, ), }; diff --git a/keyboards/mkbd65/mkbd65.c b/keyboards/mkbd65/mkbd65.c index ab03178a44..fae93a8ea5 100644 --- a/keyboards/mkbd65/mkbd65.c +++ b/keyboards/mkbd65/mkbd65.c @@ -1,4 +1,4 @@ -/* Copyright 2018 XenGi +/* Copyright 2022 XenGi * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/mkbd65/mkbd65.h b/keyboards/mkbd65/mkbd65.h index b9437d02b3..1a53cad69f 100644 --- a/keyboards/mkbd65/mkbd65.h +++ b/keyboards/mkbd65/mkbd65.h @@ -1,4 +1,4 @@ -/* Copyright 2018 XenGi +/* Copyright 2022 XenGi * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,19 +18,19 @@ #include "quantum.h" -/* LAYOUT - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ - * │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ - * │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ - * │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├───┼───┼───┼───┼───┼───┴───┼───┼───┼───┼───┼───┤ - * │ │ │ │ │ │ 2.0U │ │ │ │ │ │ - * └───┴───┴───┴───┴───┴───────┴───┴───┴───┴───┴───┘ - * This a shortcut to help you visually see your layout. +/* LAYOUT_ANSI + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ │ │ │ │ │ │ │ │ │ │ │ 2.0U │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ 2.0U │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───────┤ + * │ │ │ │ │ │ │ │ │ │ │ │ 2.0U │ + * ├───┼───┼───┼───┼───┴───┴───┼───┼───┼───┼───┼───┬───┤ + * │ │ │ │ │ 3.0U │ │ │ │ │ │ │ + * └───┴───┴───┴───┴───────────┴───┴───┴───┴───┴───┴───┘ + * This is a shortcut to help you visually see your layout. * * The first section contains all of the arguments representing the physical * layout of the board and position of the keys. @@ -38,19 +38,47 @@ * The second converts the arguments into a two-dimensional array which * represents the switch matrix. */ -#define LAYOUT( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, \ - K40, K41, K42, K43, K44, K45, K47, K48, K49, K410, K411 \ +#define LAYOUT_ANSI( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, \ + K40, K41, K42, K43, K44, K47, K48, K49, K410, K411, K412 \ ) \ { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011 }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111 }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211 }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311 }, \ - { K40, K41, K42, K43, K44, K45, KC_NO, K47, K48, K49, K410, K411 } \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, KC_NO }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, KC_NO }, \ + { K40, K41, K42, K43, K44, KC_NO, KC_NO, K47, K48, K49, K410, K411, K412 } \ +} + +/* LAYOUT_ISO + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ │ │ │ │ │ │ │ │ │ │ │ 2.0U │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ 2.0U │ + * ├───┼───┼───┼───┼───┴───┴───┼───┼───┼───┼───┼───┬───┤ + * │ │ │ │ │ 3.0U │ │ │ │ │ │ │ + * └───┴───┴───┴───┴───────────┴───┴───┴───┴───┴───┴───┘ + */ +#define LAYOUT_ISO( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, \ + K40, K41, K42, K43, K44, K47, K48, K49, K410, K411, K412 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, KC_NO }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, KC_NO }, \ + { K40, K41, K42, K43, K44, KC_NO, KC_NO, K47, K48, K49, K410, K411, K412 } \ } #endif From ae675071394ce10ae1698f34b4bbae446cf070bc Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Wed, 26 Jan 2022 00:06:05 +0100 Subject: [PATCH 005/167] fix code; first successful flash --- keyboards/mkbd65/README.md | 4 +- keyboards/mkbd65/info.json | 310 ------------------------- keyboards/mkbd65/keymaps/ansi/keymap.c | 6 +- keyboards/mkbd65/rules.mk | 2 +- 4 files changed, 6 insertions(+), 316 deletions(-) delete mode 100644 keyboards/mkbd65/info.json diff --git a/keyboards/mkbd65/README.md b/keyboards/mkbd65/README.md index 045589252f..d130cbf8e2 100644 --- a/keyboards/mkbd65/README.md +++ b/keyboards/mkbd65/README.md @@ -8,10 +8,10 @@ A mobile keyboard addon for modern smartphones. - Hardware Supported: [mkbd65 PCB](https://gitlab.com/mkbd65/pcb) - Hardware Availability: - -Make example for this keyboard (after setting up your build environment): +Flashing this keyboard with ANSI layout (after setting up your build environment): ``` -make mkbd65:default +qmk flash -kb mkbd65 -km ansi ``` Available layouts: diff --git a/keyboards/mkbd65/info.json b/keyboards/mkbd65/info.json deleted file mode 100644 index dd4edfcd06..0000000000 --- a/keyboards/mkbd65/info.json +++ /dev/null @@ -1,310 +0,0 @@ -{ - "keyboard_name": "MKBD65", - "url": "https://gitlab.com/mkbd65", - "maintainer": "XenGi", - "width": 12, - "height": 5, - "layouts": { - "LAYOUT": { - "key_count": 58, - "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "1", - "x": 1, - "y": 0 - }, - { - "label": "2", - "x": 2, - "y": 0 - }, - { - "label": "3", - "x": 3, - "y": 0 - }, - { - "label": "4", - "x": 4, - "y": 0 - }, - { - "label": "5", - "x": 5, - "y": 0 - }, - { - "label": "6", - "x": 6, - "y": 0 - }, - { - "label": "7", - "x": 7, - "y": 0 - }, - { - "label": "8", - "x": 8, - "y": 0 - }, - { - "label": "9", - "x": 9, - "y": 0 - }, - { - "label": "0", - "x": 10, - "y": 0 - }, - { - "label": "Delete", - "x": 11, - "y": 0 - }, - { - "label": "Q", - "x": 0, - "y": 1 - }, - { - "label": "W", - "x": 1, - "y": 1 - }, - { - "label": "E", - "x": 2, - "y": 1 - }, - { - "label": "R", - "x": 3, - "y": 1 - }, - { - "label": "T", - "x": 4, - "y": 1 - }, - { - "label": "Y", - "x": 5, - "y": 1 - }, - { - "label": "U", - "x": 6, - "y": 1 - }, - { - "label": "I", - "x": 7, - "y": 1 - }, - { - "label": "O", - "x": 8, - "y": 1 - }, - { - "label": "P", - "x": 9, - "y": 1 - }, - { - "label": "{", - "x": 10, - "y": 1 - }, - { - "label": "}", - "x": 11, - "y": 1 - }, - { - "label": "A", - "x": 0, - "y": 3 - }, - { - "label": "S", - "x": 1, - "y": 3 - }, - { - "label": "D", - "x": 2, - "y": 3 - }, - { - "label": "F", - "x": 3, - "y": 3 - }, - { - "label": "G", - "x": 4, - "y": 3 - }, - { - "label": "H", - "x": 5, - "y": 3 - }, - { - "label": "J", - "x": 6, - "y": 3 - }, - { - "label": "K", - "x": 7, - "y": 3 - }, - { - "label": "L", - "x": 8, - "y": 3 - }, - { - "label": ":", - "x": 9, - "y": 3 - }, - { - "label": "\"", - "x": 10, - "y": 3 - }, - { - "label": "Enter", - "x": 11, - "y": 3, - "w": 2.25 - }, - { - "label": "Z", - "x": 0, - "y": 4 - }, - { - "label": "X", - "x": 1, - "y": 4 - }, - { - "label": "C", - "x": 2, - "y": 4 - }, - { - "label": "V", - "x": 3, - "y": 4 - }, - { - "label": "B", - "x": 4, - "y": 4 - }, - { - "label": "N", - "x": 5, - "y": 4 - }, - { - "label": "M", - "x": 6, - "y": 4 - }, - { - "label": "<", - "x": 7, - "y": 4 - }, - { - "label": ">", - "x": 8, - "y": 4 - }, - { - "label": "?", - "x": 9, - "y": 4 - }, - { - "label": "↑", - "x": 10, - "y": 4 - }, - { - "label": "Shift", - "x": 11, - "y": 4 - }, - { - "label": "Ctrl", - "x": 0, - "y": 5 - }, - { - "label": "Fn", - "x": 1, - "y": 5 - }, - { - "label": "Shift", - "x": 2, - "y": 5 - }, - { - "label": "Alt", - "x": 3, - "y": 5 - }, - { - "label": "|", - "x": 4, - "y": 5 - }, - { - "x": 5, - "y": 5, - "w": 2 - }, - { - "label": "_", - "x": 7, - "y": 5 - }, - { - "label": "+", - "x": 8, - "y": 5 - }, - { - "label": "←", - "x": 9, - "y": 5 - }, - { - "label": "↓", - "x": 10, - "y": 5 - }, - { - "label": "→", - "x": 11, - "y": 5 - } - ] - } - } -} diff --git a/keyboards/mkbd65/keymaps/ansi/keymap.c b/keyboards/mkbd65/keymaps/ansi/keymap.c index 4b7b3520a4..cc7c6018cc 100644 --- a/keyboards/mkbd65/keymaps/ansi/keymap.c +++ b/keyboards/mkbd65/keymaps/ansi/keymap.c @@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, - KC_LCTL, MO(1), KC_LSFT, KC_RALT, KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL, + KC_LCTL, MO(1), KC_LSFT, KC_RALT, KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL ), [1] = LAYOUT_ANSI( /* Function layer */ @@ -30,8 +30,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, - _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______, - ), + _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______ + ) }; void matrix_init_user(void) { diff --git a/keyboards/mkbd65/rules.mk b/keyboards/mkbd65/rules.mk index 0187f822d3..a6bdd38bae 100644 --- a/keyboards/mkbd65/rules.mk +++ b/keyboards/mkbd65/rules.mk @@ -45,7 +45,7 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # LUFA DFU lufa-dfu # QMK DFU qmk-dfu # atmega32a bootloadHID -BOOTLOADER = halfkay +BOOTLOADER = atmel-dfu # If you don't know the bootloader type, then you can specify the From 7b8e2a8ea070d6bf4b9878788fb52892fef71447 Mon Sep 17 00:00:00 2001 From: XenGi Date: Thu, 27 Jan 2022 19:46:54 +0000 Subject: [PATCH 006/167] Update keyboards/mkbd65/keymaps/ansi/README.md --- keyboards/mkbd65/keymaps/ansi/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/mkbd65/keymaps/ansi/README.md b/keyboards/mkbd65/keymaps/ansi/README.md index 00feeefc77..99bec108a1 100644 --- a/keyboards/mkbd65/keymaps/ansi/README.md +++ b/keyboards/mkbd65/keymaps/ansi/README.md @@ -30,7 +30,7 @@ This is the default layout. 2: mod alt ╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ ║ ║ ¹ ║ ² ║ ³ ║ ║ € ║ ║ ║ ║ ║ ║Backspace║ -╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +╠════╬════╬════╬════╬════╬════╬════╬════╬══` ══╬════╬════╬════╦════╣ ║ ä ║ ║ ║ ║ ║ ü ║ ║ ║ ║ ö ║ « ║ » ║ ¬ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ ║ ║ ß ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ Return ║ @@ -45,10 +45,10 @@ This is the default layout. ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ F11║ F12║ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ -║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ Super ║ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ` ║ Super ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║PgUp║ Shift ║ ╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ -║Ctrl║░░░░║Shft║AltG║ Tab ║ ║ ` ║Pos1║PgDn║ End║Ctrl║ +║Ctrl║░░░░║Shft║AltG║ Tab ║ ║ ║Pos1║PgDn║ End║Ctrl║ ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ ``` From f0cb73c17581fb40cc5db36d7a182218aaabfb49 Mon Sep 17 00:00:00 2001 From: XenGi Date: Thu, 27 Jan 2022 19:47:25 +0000 Subject: [PATCH 007/167] Update keyboards/mkbd65/keymaps/ansi/README.md --- keyboards/mkbd65/keymaps/ansi/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/mkbd65/keymaps/ansi/README.md b/keyboards/mkbd65/keymaps/ansi/README.md index 99bec108a1..87759b323b 100644 --- a/keyboards/mkbd65/keymaps/ansi/README.md +++ b/keyboards/mkbd65/keymaps/ansi/README.md @@ -30,12 +30,12 @@ This is the default layout. 2: mod alt ╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ ║ ║ ¹ ║ ² ║ ³ ║ ║ € ║ ║ ║ ║ ║ ║Backspace║ -╠════╬════╬════╬════╬════╬════╬════╬════╬══` ══╬════╬════╬════╦════╣ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ ║ ä ║ ║ ║ ║ ║ ü ║ ║ ║ ║ ö ║ « ║ » ║ ¬ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ ║ ║ ß ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ Return ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ -║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ▲ ║ Shift ║ +║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ▲ ║ Shift ║ ╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ ║Ctrl║ Fn ║Shft║░░░░║ Space ║ ║ ║ ◀ ║ ▼ ║ ▶ ║Ctrl║ ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ From acb282080a689bfe8eb64792f15433f8a14501c4 Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Sat, 19 Feb 2022 18:31:46 +0100 Subject: [PATCH 008/167] make AltGr a sticky key, Fixes #1 --- keyboards/mkbd65/config.h | 5 +++-- keyboards/mkbd65/keymaps/ansi/keymap.c | 2 +- keyboards/mkbd65/keymaps/iso/keymap.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/keyboards/mkbd65/config.h b/keyboards/mkbd65/config.h index 6b4e2fbe05..8eff7c175d 100644 --- a/keyboards/mkbd65/config.h +++ b/keyboards/mkbd65/config.h @@ -22,9 +22,9 @@ along with this program. If not, see . /* USB Device descriptor parameter */ #define VENDOR_ID 0x1209 #define PRODUCT_ID 0x4803 -#define DEVICE_VER 0x0001 +#define DEVICE_VER 0x0002 #define MANUFACTURER XenGi -#define PRODUCT mkbd65 +#define PRODUCT mkbd65 rev1 #define DESCRIPTION Custom keyboard addon for smartphones /* key matrix size */ @@ -48,6 +48,7 @@ along with this program. If not, see . /* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ #define DIODE_DIRECTION ROW2COL +/* (back)light configuration */ #define BACKLIGHT_PIN B7 #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/mkbd65/keymaps/ansi/keymap.c b/keyboards/mkbd65/keymaps/ansi/keymap.c index cc7c6018cc..52e6bb289e 100644 --- a/keyboards/mkbd65/keymaps/ansi/keymap.c +++ b/keyboards/mkbd65/keymaps/ansi/keymap.c @@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, - KC_LCTL, MO(1), KC_LSFT, KC_RALT, KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL + KC_LCTL, MO(1), KC_LSFT, OSM(MOD_RALT), KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL ), [1] = LAYOUT_ANSI( /* Function layer */ diff --git a/keyboards/mkbd65/keymaps/iso/keymap.c b/keyboards/mkbd65/keymaps/iso/keymap.c index 155a2b205b..9187478d99 100644 --- a/keyboards/mkbd65/keymaps/iso/keymap.c +++ b/keyboards/mkbd65/keymaps/iso/keymap.c @@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, - KC_LCTL, MO(1), KC_LSFT, KC_RALT, KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL, + KC_LCTL, MO(1), KC_LSFT, OSM(MOD_RALT), KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL, ), [1] = LAYOUT_ISO( /* Function layer */ From 4dcbaafb78c86cdbb7d0bdf70413bcd55db1c8ae Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Sat, 19 Feb 2022 21:58:06 +0100 Subject: [PATCH 009/167] add media controls --- keyboards/mkbd65/keymaps/ansi/keymap.c | 6 +++--- keyboards/mkbd65/keymaps/iso/keymap.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/mkbd65/keymaps/ansi/keymap.c b/keyboards/mkbd65/keymaps/ansi/keymap.c index 52e6bb289e..972410b3dd 100644 --- a/keyboards/mkbd65/keymaps/ansi/keymap.c +++ b/keyboards/mkbd65/keymaps/ansi/keymap.c @@ -27,9 +27,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT_ANSI( /* Function layer */ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_LGUI, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, KC_APP, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_GRV, KC_LGUI, + _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PGUP, _______, _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______ ) }; diff --git a/keyboards/mkbd65/keymaps/iso/keymap.c b/keyboards/mkbd65/keymaps/iso/keymap.c index 9187478d99..eff19b0c4f 100644 --- a/keyboards/mkbd65/keymaps/iso/keymap.c +++ b/keyboards/mkbd65/keymaps/iso/keymap.c @@ -28,8 +28,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT_ISO( /* Function layer */ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GRV, _______, KC_LGUI, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_GRV, KC_APP, KC_LGUI, + _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PGUP, _______, _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______, ), }; From 9c3912ba8fb9cc211bbe57ee56b08cbb057affa6 Mon Sep 17 00:00:00 2001 From: XenGi Date: Fri, 26 May 2023 11:11:10 +0000 Subject: [PATCH 010/167] Update README.md --- keyboards/mkbd65/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/keyboards/mkbd65/README.md b/keyboards/mkbd65/README.md index d130cbf8e2..6c694a5f92 100644 --- a/keyboards/mkbd65/README.md +++ b/keyboards/mkbd65/README.md @@ -19,6 +19,4 @@ Available layouts: - ansi (default) - iso (upright `Enter` key) -_Don't forget to connect the correct solder joints on the PCB to switch the layout._ - See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). From 2ba9ed711088e7ccfa0df89fa9948aed6161cae9 Mon Sep 17 00:00:00 2001 From: XenGi Date: Fri, 26 May 2023 11:13:43 +0000 Subject: [PATCH 011/167] Update README.md --- keyboards/mkbd65/README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/keyboards/mkbd65/README.md b/keyboards/mkbd65/README.md index 6c694a5f92..f30b7c91ea 100644 --- a/keyboards/mkbd65/README.md +++ b/keyboards/mkbd65/README.md @@ -8,15 +8,19 @@ A mobile keyboard addon for modern smartphones. - Hardware Supported: [mkbd65 PCB](https://gitlab.com/mkbd65/pcb) - Hardware Availability: - -Flashing this keyboard with ANSI layout (after setting up your build environment): +Flashing this keyboard with `en-us-intl` layout (after setting up your build environment): ``` -qmk flash -kb mkbd65 -km ansi +qmk flash -kb mkbd65 -km en-us-intl ``` Available layouts: - - ansi (default) - - iso (upright `Enter` key) + - en-us-intl (ansi) + - de-de (iso) + +You can find community provided layouts here: https://gitlab.com/mkbd65/community + +--- See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). From 1bb2a178572b1fb6416032b5898d956436902aab Mon Sep 17 00:00:00 2001 From: XenGi Date: Fri, 26 May 2023 11:27:32 +0000 Subject: [PATCH 012/167] Update README.md --- keyboards/mkbd65/keymaps/ansi/README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/keyboards/mkbd65/keymaps/ansi/README.md b/keyboards/mkbd65/keymaps/ansi/README.md index 87759b323b..923a3ccf57 100644 --- a/keyboards/mkbd65/keymaps/ansi/README.md +++ b/keyboards/mkbd65/keymaps/ansi/README.md @@ -1,6 +1,9 @@ -# The ANSI keymap for mkbd65 +# The English US International keymap for mkbd65 by XenGi + +This is the default layout for the mkbd65 keyboard. You can use it as a reference for other layouts. + +It is based on the "English (intl., with AltGr dead keys)" layout. -This is the default layout. ``` 0: no mod From 462077f2dd3d5069986ac9a34ac779c36047c900 Mon Sep 17 00:00:00 2001 From: XenGi Date: Fri, 26 May 2023 11:33:48 +0000 Subject: [PATCH 013/167] Update README.md --- keyboards/mkbd65/keymaps/ansi/README.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/keyboards/mkbd65/keymaps/ansi/README.md b/keyboards/mkbd65/keymaps/ansi/README.md index 923a3ccf57..b394d98f2c 100644 --- a/keyboards/mkbd65/keymaps/ansi/README.md +++ b/keyboards/mkbd65/keymaps/ansi/README.md @@ -4,6 +4,7 @@ This is the default layout for the mkbd65 keyboard. You can use it as a referenc It is based on the "English (intl., with AltGr dead keys)" layout. +This is the key matrix (no label means the key from layer 0 will be used): ``` 0: no mod @@ -20,27 +21,27 @@ It is based on the "English (intl., with AltGr dead keys)" layout. ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ 1: mod shift ╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ -║ ~ ║ ! ║ @ ║ # ║ $ ║ % ║ ^ ║ & ║ * ║ ( ║ ) ║Backspace║ +║ ~ ║ ! ║ @ ║ # ║ $ ║ % ║ ^ ║ & ║ * ║ ( ║ ) ║ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ ║ Q ║ W ║ E ║ R ║ T ║ Y ║ U ║ I ║ O ║ P ║ { ║ } ║ | ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ -║ A ║ S ║ D ║ F ║ G ║ H ║ J ║ K ║ L ║ : ║ " ║ Return ║ +║ A ║ S ║ D ║ F ║ G ║ H ║ J ║ K ║ L ║ : ║ " ║ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ -║ Z ║ X ║ C ║ V ║ B ║ N ║ M ║ < ║ > ║ ? ║ ▲ ║░░░░░░░░░║ +║ Z ║ X ║ C ║ V ║ B ║ N ║ M ║ < ║ > ║ ? ║ ║░░░░░░░░░║ ╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ -║Ctrl║ Fn ║░░░░║AltG║ Space ║ _ ║ + ║ ◀ ║ ▼ ║ ▶ ║Ctrl║ +║ ║ ║░░░░║ ║ ║ _ ║ + ║ ║ ║ ║ ║ ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ -2: mod alt +2: mod altgr ╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ -║ ║ ¹ ║ ² ║ ³ ║ ║ € ║ ║ ║ ║ ║ ║Backspace║ +║ ║ ¹ ║ ² ║ ³ ║ ║ € ║ ║ ║ ║ ║ ║ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ ║ ä ║ ║ ║ ║ ║ ü ║ ║ ║ ║ ö ║ « ║ » ║ ¬ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ -║ ║ ß ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ Return ║ +║ ║ ß ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ -║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ▲ ║ Shift ║ +║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ║ ║ ╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ -║Ctrl║ Fn ║Shft║░░░░║ Space ║ ║ ║ ◀ ║ ▼ ║ ▶ ║Ctrl║ +║ ║ ║ ║░░░░║ ║ ║ ║ ║ ║ ║ ║ ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ 3: mod fn ╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ @@ -50,8 +51,8 @@ It is based on the "English (intl., with AltGr dead keys)" layout. ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ` ║ Super ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ -║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║PgUp║ Shift ║ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║PgUp║ ║ ╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ -║Ctrl║░░░░║Shft║AltG║ Tab ║ ║ ║Pos1║PgDn║ End║Ctrl║ +║ ║░░░░║ ║ ║ Tab ║ ║ ║Pos1║PgDn║ End║ ║ ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ ``` From 725bf551684ee117cea6e60208289ecb043c6593 Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Sun, 11 Jun 2023 19:51:12 +0200 Subject: [PATCH 014/167] updated to fit qmk standards --- keyboards/mkbd65/README.md | 21 ++- keyboards/mkbd65/config.h | 159 +----------------- keyboards/mkbd65/info.json | 20 +++ keyboards/mkbd65/keymaps/ansi/README.md | 2 +- keyboards/mkbd65/keymaps/ansi/config.h | 19 --- keyboards/mkbd65/keymaps/ansi/keymap.c | 49 ++---- keyboards/mkbd65/keymaps/de/README.md | 56 ++++++ keyboards/mkbd65/keymaps/de/keymap.c | 23 +++ .../mkbd65/keymaps/{default => en-us-intl} | 0 keyboards/mkbd65/keymaps/iso/README.md | 2 +- keyboards/mkbd65/keymaps/iso/config.h | 19 --- keyboards/mkbd65/keymaps/iso/keymap.c | 27 +-- keyboards/mkbd65/mkbd65.c | 43 ----- keyboards/mkbd65/rev0/info.json | 147 ++++++++++++++++ keyboards/mkbd65/rev0/mkbd65.c | 4 + keyboards/mkbd65/{ => rev0}/mkbd65.h | 48 ++---- keyboards/mkbd65/rev0/rules.mk | 9 + keyboards/mkbd65/rev1/info.json | 157 +++++++++++++++++ keyboards/mkbd65/rev1/mkbd65.c | 4 + keyboards/mkbd65/rev1/mkbd65.h | 42 +++++ keyboards/mkbd65/rev1/rules.mk | 3 + keyboards/mkbd65/rules.mk | 85 +--------- 22 files changed, 530 insertions(+), 409 deletions(-) create mode 100644 keyboards/mkbd65/info.json delete mode 100644 keyboards/mkbd65/keymaps/ansi/config.h create mode 100644 keyboards/mkbd65/keymaps/de/README.md create mode 100644 keyboards/mkbd65/keymaps/de/keymap.c rename keyboards/mkbd65/keymaps/{default => en-us-intl} (100%) delete mode 100644 keyboards/mkbd65/keymaps/iso/config.h delete mode 100644 keyboards/mkbd65/mkbd65.c create mode 100644 keyboards/mkbd65/rev0/info.json create mode 100644 keyboards/mkbd65/rev0/mkbd65.c rename keyboards/mkbd65/{ => rev0}/mkbd65.h (65%) create mode 100644 keyboards/mkbd65/rev0/rules.mk create mode 100644 keyboards/mkbd65/rev1/info.json create mode 100644 keyboards/mkbd65/rev1/mkbd65.c create mode 100644 keyboards/mkbd65/rev1/mkbd65.h create mode 100644 keyboards/mkbd65/rev1/rules.mk diff --git a/keyboards/mkbd65/README.md b/keyboards/mkbd65/README.md index f30b7c91ea..817bde28b3 100644 --- a/keyboards/mkbd65/README.md +++ b/keyboards/mkbd65/README.md @@ -11,16 +11,31 @@ A mobile keyboard addon for modern smartphones. Flashing this keyboard with `en-us-intl` layout (after setting up your build environment): ``` -qmk flash -kb mkbd65 -km en-us-intl +qmk flash -kb mkbd65:rev1 -km en-us-intl ``` Available layouts: - en-us-intl (ansi) - - de-de (iso) + - de (iso) You can find community provided layouts here: https://gitlab.com/mkbd65/community +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). + --- -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). +Copyright 2023 XenGi mkbd65@xengi.de @XenGi + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . diff --git a/keyboards/mkbd65/config.h b/keyboards/mkbd65/config.h index 8eff7c175d..4ac3a7eaf5 100644 --- a/keyboards/mkbd65/config.h +++ b/keyboards/mkbd65/config.h @@ -1,160 +1,13 @@ -/* -Copyright 2022 XenGi - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// Copyright 2023 XenGi (@XenGi) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x1209 -#define PRODUCT_ID 0x4803 -#define DEVICE_VER 0x0002 -#define MANUFACTURER XenGi -#define PRODUCT mkbd65 rev1 -#define DESCRIPTION Custom keyboard addon for smartphones - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 13 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ -#define MATRIX_COL_PINS { D4, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 } -#define MATRIX_ROW_PINS { D5, D3, D2, D1, D0 } -#define UNUSED_PINS { B3, B2, B1, B0, E6 } - -/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ -#define DIODE_DIRECTION ROW2COL - -/* (back)light configuration */ -#define BACKLIGHT_PIN B7 -#define BACKLIGHT_BREATHING -#define BACKLIGHT_LEVELS 3 -#define BACKLIGHT_ON_STATE 1 - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCING_DELAY 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 - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is userful for the Windows task manager shortcut (ctrl+shift+esc). - */ -#define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ -) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ +// disable debugging //#define NO_DEBUG - -/* disable print */ +// disable printing/debugging using hid_listen //#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER +// disable tap dance and other tapping features //#define NO_ACTION_TAPPING +// disable one-shot modifiers //#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION diff --git a/keyboards/mkbd65/info.json b/keyboards/mkbd65/info.json new file mode 100644 index 0000000000..aea164d043 --- /dev/null +++ b/keyboards/mkbd65/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "mkbd65", + "manufacturer": "XenGi", + "url": "https://mkbd65.xengi.de", + "maintainer": "XenGi", + "author": ["XenGi"], + "usb": { + "vid": "0x1209", + "pid": "0x4803" + }, + "debounce": 5, + "diode_direction": "ROW2COL", + "bootmagic": { + "enabled": true, + "matrix": [0, 0] + }, + "tags": ["mobile", "65%"], + "description": "A mobile keyboard addon for modern smartphones. Fits any smartphones within some minimal size requirements. Supports any keyboard layout you want, as long as it doesn't need more keys.", + "short": "A mobile keyboard addon for modern smartphones." +} diff --git a/keyboards/mkbd65/keymaps/ansi/README.md b/keyboards/mkbd65/keymaps/ansi/README.md index b394d98f2c..96e8f7bb14 100644 --- a/keyboards/mkbd65/keymaps/ansi/README.md +++ b/keyboards/mkbd65/keymaps/ansi/README.md @@ -1,4 +1,4 @@ -# The English US International keymap for mkbd65 by XenGi +# The English US International keymap for mkbd65 rev0 by XenGi This is the default layout for the mkbd65 keyboard. You can use it as a reference for other layouts. diff --git a/keyboards/mkbd65/keymaps/ansi/config.h b/keyboards/mkbd65/keymaps/ansi/config.h deleted file mode 100644 index b0d0727509..0000000000 --- a/keyboards/mkbd65/keymaps/ansi/config.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright 2022 XenGi - * - * This 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 - -// place overrides here diff --git a/keyboards/mkbd65/keymaps/ansi/keymap.c b/keyboards/mkbd65/keymaps/ansi/keymap.c index 972410b3dd..ddda2b83bc 100644 --- a/keyboards/mkbd65/keymaps/ansi/keymap.c +++ b/keyboards/mkbd65/keymaps/ansi/keymap.c @@ -1,45 +1,22 @@ -/* Copyright 2022 XenGi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +// Copyright 2023 XenGi (@XenGi) +// SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_ANSI( /* Base layer */ - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, - KC_LCTL, MO(1), KC_LSFT, OSM(MOD_RALT), KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL + [0] = LAYOUT( /* Base layer */ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_BSPC, + 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, KC_RSFT, + KC_LCTL, MO(1), KC_LSFT, OSM(MOD_RALT), KC_SPC, KC_SPC, KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL ), - [1] = LAYOUT_ANSI( /* Function layer */ - RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + [1] = LAYOUT( /* Function layer */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, KC_APP, - _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_GRV, KC_LGUI, - _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PGUP, _______, - _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_GRV, KC_LGUI, KC_LGUI, + _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PGUP, _______, _______, + _______, _______, _______, _______, KC_TAB, KC_TAB, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______ ) }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -void led_set_user(uint8_t usb_led) { -} - diff --git a/keyboards/mkbd65/keymaps/de/README.md b/keyboards/mkbd65/keymaps/de/README.md new file mode 100644 index 0000000000..f5c29d8e85 --- /dev/null +++ b/keyboards/mkbd65/keymaps/de/README.md @@ -0,0 +1,56 @@ +# The German keymap for mkbd65 rev1 by XenGi + +This is the german layout for the mkbd65 keyboard. You can use it as a reference for other ISO based layouts. + +This is the key matrix (no label means the key from layer 0 will be used): + +``` +0: no mod +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ Esc║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║ 0 ║Backspace║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ q ║ w ║ e ║ r ║ t ║ z ║ u ║ i ║ o ║ p ║ ü ║ + ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ Ret║ +║ a ║ s ║ d ║ f ║ g ║ h ║ j ║ k ║ l ║ ö ║ ä ║ # ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ y ║ x ║ c ║ v ║ b ║ n ║ m ║ , ║ . ║ - ║ ▲ ║ < ║Shft║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╬════╣ +║Ctrl║ Fn ║Shft║AltG║ Space ║ ß ║ ´ ║ ◀ ║ ▼ ║ ▶ ║Ctrl║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ +1: mod shift +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ ° ║ ! ║ " ║ § ║ $ ║ % ║ & ║ / ║ ( ║ ) ║ = ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ Q ║ W ║ E ║ R ║ T ║ Y ║ U ║ I ║ O ║ P ║ Ü ║ * ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ ║ +║ A ║ S ║ D ║ F ║ G ║ H ║ J ║ K ║ L ║ Ö ║ Ä ║ ' ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ Z ║ X ║ C ║ V ║ B ║ N ║ M ║ ; ║ : ║ _ ║ ║ > ║░░░░║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╬════╣ +║ ║ ║░░░░║ ║ ║ ? ║ ` ║ ║ ║ ║ ║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ +2: mod altgr +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ ║ ¹ ║ ² ║ ³ ║ ║ ║ ║ { ║ [ ║ ] ║ } ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ @ ║ ║ € ║ ║ ║ ║ ║ ║ ║ ║ ║ ~ ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ ║ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ║ ║ | ║ ║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╬════╣ +║ ║ ║ ║░░░░║ ║ \ ║ ║ ║ ║ ║ ║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ +3: mod fn +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ Esc║ F1 ║ F2 ║ F3 ║ F4 ║ F5 ║ F6 ║ F7 ║ F8 ║ F9 ║ F10║ Delete ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ F11║ F12║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣Supr║ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ^ ║ ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║PgUp║ ║ ║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╬════╣ +║ ║░░░░║ ║ ║ Tab ║ ║ ║Pos1║PgDn║ End║ ║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ +``` diff --git a/keyboards/mkbd65/keymaps/de/keymap.c b/keyboards/mkbd65/keymaps/de/keymap.c new file mode 100644 index 0000000000..1246f1e8bc --- /dev/null +++ b/keyboards/mkbd65/keymaps/de/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2023 XenGi (@XenGi) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#include "keymap_german.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Base layer */ + KC_GESC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7, DE_8, DE_9, DE_0, KC_BSPC, KC_BSPC, + DE_Q, DE_W, DE_E, DE_R, DE_T, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UDIA, DE_PLUS, KC_ENT, + DE_A, DE_S, DE_D, DE_F, DE_G, DE_H, DE_J, DE_K, DE_L, DE_ODIA, DE_ADIA, DE_HASH, KC_ENT, + DE_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_UP, DE_LABK, KC_RSFT, + KC_LCTL, MO(1), KC_LSFT, OSM(MOD_RALT), KC_SPC, KC_SPC, KC_SPC, DE_SS, DE_ACUT, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL + ), + + [1] = LAYOUT( /* Function layer */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, KC_APP, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_GRV, KC_LGUI, KC_LGUI, + _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PGUP, _______, _______, + _______, _______, _______, _______, KC_TAB, KC_TAB, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______ + ) +}; diff --git a/keyboards/mkbd65/keymaps/default b/keyboards/mkbd65/keymaps/en-us-intl similarity index 100% rename from keyboards/mkbd65/keymaps/default rename to keyboards/mkbd65/keymaps/en-us-intl diff --git a/keyboards/mkbd65/keymaps/iso/README.md b/keyboards/mkbd65/keymaps/iso/README.md index d08f8c1b9e..beb5cc2783 100644 --- a/keyboards/mkbd65/keymaps/iso/README.md +++ b/keyboards/mkbd65/keymaps/iso/README.md @@ -1,4 +1,4 @@ -# The iso-like keymap for mkbd65 +# The iso-like keymap for mkbd65 rev0 It's actually just ANSI but with an upright `Enter` key. diff --git a/keyboards/mkbd65/keymaps/iso/config.h b/keyboards/mkbd65/keymaps/iso/config.h deleted file mode 100644 index b0d0727509..0000000000 --- a/keyboards/mkbd65/keymaps/iso/config.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright 2022 XenGi - * - * This 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 - -// place overrides here diff --git a/keyboards/mkbd65/keymaps/iso/keymap.c b/keyboards/mkbd65/keymaps/iso/keymap.c index eff19b0c4f..2b59ffd0cf 100644 --- a/keyboards/mkbd65/keymaps/iso/keymap.c +++ b/keyboards/mkbd65/keymaps/iso/keymap.c @@ -1,18 +1,5 @@ -/* Copyright 2022 XenGi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +// Copyright 2023 XenGi (@XenGi) +// SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H @@ -33,13 +20,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______, ), }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -void led_set_user(uint8_t usb_led) { -} - diff --git a/keyboards/mkbd65/mkbd65.c b/keyboards/mkbd65/mkbd65.c deleted file mode 100644 index fae93a8ea5..0000000000 --- a/keyboards/mkbd65/mkbd65.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright 2022 XenGi - * - * This 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 "mkbd65.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/mkbd65/rev0/info.json b/keyboards/mkbd65/rev0/info.json new file mode 100644 index 0000000000..cea5523e84 --- /dev/null +++ b/keyboards/mkbd65/rev0/info.json @@ -0,0 +1,147 @@ +{ + "usb": { + "device_version": "0.0.0" + }, + "layouts": { + "LAYOUT_ansi": { + "layout": [ + {"x": 0, "y": 0, "label": "Esc", "matrix": [0, 0]}, + {"x": 1, "y": 0, "label": "1", "matrix": [0, 1]}, + {"x": 2, "y": 0, "label": "2", "matrix": [0, 2]}, + {"x": 3, "y": 0, "label": "3", "matrix": [0, 3]}, + {"x": 4, "y": 0, "label": "4", "matrix": [0, 4]}, + {"x": 5, "y": 0, "label": "5", "matrix": [0, 5]}, + {"x": 6, "y": 0, "label": "6", "matrix": [0, 6]}, + {"x": 7, "y": 0, "label": "7", "matrix": [0, 7]}, + {"x": 8, "y": 0, "label": "8", "matrix": [0, 8]}, + {"x": 9, "y": 0, "label": "9", "matrix": [0, 9]}, + {"x": 10, "y": 0, "label": "0", "matrix": [0, 10]}, + {"x": 11, "y": 0, "w": 2, "label": "Backspace", "matrix": [0, 11]}, + + {"x": 0, "y": 1, "label": "Q", "matrix": [1, 0]}, + {"x": 1, "y": 1, "label": "W", "matrix": [1, 1]}, + {"x": 2, "y": 1, "label": "E", "matrix": [1, 2]}, + {"x": 3, "y": 1, "label": "R", "matrix": [1, 3]}, + {"x": 4, "y": 1, "label": "T", "matrix": [1, 4]}, + {"x": 5, "y": 1, "label": "Y", "matrix": [1, 5]}, + {"x": 6, "y": 1, "label": "U", "matrix": [1, 6]}, + {"x": 7, "y": 1, "label": "I", "matrix": [1, 7]}, + {"x": 8, "y": 1, "label": "O", "matrix": [1, 8]}, + {"x": 9, "y": 1, "label": "P", "matrix": [1, 9]}, + {"x": 10, "y": 1, "label": "[", "matrix": [1, 10]}, + {"x": 11, "y": 1, "label": "]", "matrix": [1, 11]}, + {"x": 12, "y": 1, "label": "\\", "matrix": [1, 12]}, + + {"x": 0, "y": 2, "label": "A", "matrix": [2, 0]}, + {"x": 1, "y": 2, "label": "S", "matrix": [2, 1]}, + {"x": 2, "y": 2, "label": "D", "matrix": [2, 2]}, + {"x": 3, "y": 2, "label": "F", "matrix": [2, 3]}, + {"x": 4, "y": 2, "label": "G", "matrix": [2, 4]}, + {"x": 5, "y": 2, "label": "H", "matrix": [2, 5]}, + {"x": 6, "y": 2, "label": "J", "matrix": [2, 6]}, + {"x": 7, "y": 2, "label": "K", "matrix": [2, 7]}, + {"x": 8, "y": 2, "label": "L", "matrix": [2, 8]}, + {"x": 9, "y": 2, "label": ";", "matrix": [2, 9]}, + {"x": 10, "y": 2, "label": "'", "matrix": [2, 10]}, + {"x": 11, "y": 2, "w": 2, "label": "Enter", "matrix": [2, 11]}, + + {"x": 0, "y": 3, "label": "Z", "matrix": [3, 0]}, + {"x": 1, "y": 3, "label": "X", "matrix": [3, 1]}, + {"x": 2, "y": 3, "label": "C", "matrix": [3, 2]}, + {"x": 3, "y": 3, "label": "V", "matrix": [3, 3]}, + {"x": 4, "y": 3, "label": "B", "matrix": [3, 4]}, + {"x": 5, "y": 3, "label": "N", "matrix": [3, 5]}, + {"x": 6, "y": 3, "label": "M", "matrix": [3, 6]}, + {"x": 7, "y": 3, "label": ",", "matrix": [3, 7]}, + {"x": 8, "y": 3, "label": ".", "matrix": [3, 8]}, + {"x": 9, "y": 3, "label": "/", "matrix": [3, 9]}, + {"x": 10, "y": 3, "label": "Up", "matrix": [3, 10]}, + {"x": 11, "y": 3, "w": 2, "label": "RShift", "matrix": [3, 11]}, + + {"x": 0, "y": 4, "label": "LCtrl", "matrix": [4, 0]}, + {"x": 1, "y": 4, "label": "LShift", "matrix": [4, 1]}, + {"x": 2, "y": 4, "label": "Fn", "matrix": [4, 2]}, + {"x": 3, "y": 4, "label": "AltGr", "matrix": [4, 3]}, + {"x": 4, "y": 4, "w": 3, "label": "Space", "matrix": [4, 4]}, + {"x": 7, "y": 4, "label": "-", "matrix": [4, 7]}, + {"x": 8, "y": 4, "label": "=", "matrix": [4, 8]}, + {"x": 9, "y": 4, "label": "Left", "matrix": [4, 9]}, + {"x": 10, "y": 4, "label": "Down", "matrix": [4, 10]}, + {"x": 11, "y": 4, "label": "Right", "matrix": [4, 11]}, + {"x": 12, "y": 4, "label": "RCtrl", "matrix": [4, 12]} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"x": 0, "y": 0, "label": "Esc", "matrix": [0, 0]}, + {"x": 1, "y": 0, "label": "1", "matrix": [0, 1]}, + {"x": 2, "y": 0, "label": "2", "matrix": [0, 2]}, + {"x": 3, "y": 0, "label": "3", "matrix": [0, 3]}, + {"x": 4, "y": 0, "label": "4", "matrix": [0, 4]}, + {"x": 5, "y": 0, "label": "5", "matrix": [0, 5]}, + {"x": 6, "y": 0, "label": "6", "matrix": [0, 6]}, + {"x": 7, "y": 0, "label": "7", "matrix": [0, 7]}, + {"x": 8, "y": 0, "label": "8", "matrix": [0, 8]}, + {"x": 9, "y": 0, "label": "9", "matrix": [0, 9]}, + {"x": 10, "y": 0, "label": "0", "matrix": [0, 10]}, + {"x": 11, "y": 0, "w": 2, "label": "Backspace", "matrix": [0, 11]}, + + {"x": 0, "y": 1, "label": "Q", "matrix": [1, 0]}, + {"x": 1, "y": 1, "label": "W", "matrix": [1, 1]}, + {"x": 2, "y": 1, "label": "E", "matrix": [1, 2]}, + {"x": 3, "y": 1, "label": "R", "matrix": [1, 3]}, + {"x": 4, "y": 1, "label": "T", "matrix": [1, 4]}, + {"x": 5, "y": 1, "label": "Y", "matrix": [1, 5]}, + {"x": 6, "y": 1, "label": "U", "matrix": [1, 6]}, + {"x": 7, "y": 1, "label": "I", "matrix": [1, 7]}, + {"x": 8, "y": 1, "label": "O", "matrix": [1, 8]}, + {"x": 9, "y": 1, "label": "P", "matrix": [1, 9]}, + {"x": 10, "y": 1, "label": "[", "matrix": [1, 10]}, + {"x": 11, "y": 1, "label": "]", "matrix": [1, 11]}, + + {"x": 0, "y": 2, "label": "A", "matrix": [2, 0]}, + {"x": 1, "y": 2, "label": "S", "matrix": [2, 1]}, + {"x": 2, "y": 2, "label": "D", "matrix": [2, 2]}, + {"x": 3, "y": 2, "label": "F", "matrix": [2, 3]}, + {"x": 4, "y": 2, "label": "G", "matrix": [2, 4]}, + {"x": 5, "y": 2, "label": "H", "matrix": [2, 5]}, + {"x": 6, "y": 2, "label": "J", "matrix": [2, 6]}, + {"x": 7, "y": 2, "label": "K", "matrix": [2, 7]}, + {"x": 8, "y": 2, "label": "L", "matrix": [2, 8]}, + {"x": 9, "y": 2, "label": ";", "matrix": [2, 9]}, + {"x": 10, "y": 2, "label": "'", "matrix": [2, 10]}, + {"x": 11, "y": 2, "label": "\\", "matrix": [2, 11]}, + {"x": 12, "y": 2, "h": 2, "label": "Enter", "matrix": [2, 12]}, + + {"x": 0, "y": 3, "label": "Z", "matrix": [3, 0]}, + {"x": 1, "y": 3, "label": "X", "matrix": [3, 1]}, + {"x": 2, "y": 3, "label": "C", "matrix": [3, 2]}, + {"x": 3, "y": 3, "label": "V", "matrix": [3, 3]}, + {"x": 4, "y": 3, "label": "B", "matrix": [3, 4]}, + {"x": 5, "y": 3, "label": "N", "matrix": [3, 5]}, + {"x": 6, "y": 3, "label": "M", "matrix": [3, 6]}, + {"x": 7, "y": 3, "label": ",", "matrix": [3, 7]}, + {"x": 8, "y": 3, "label": ".", "matrix": [3, 8]}, + {"x": 9, "y": 3, "label": "/", "matrix": [3, 9]}, + {"x": 10, "y": 3, "label": "Up", "matrix": [3, 10]}, + {"x": 11, "y": 3, "w": 2, "label": "RShift", "matrix": [3, 11]}, + + {"x": 0, "y": 4, "label": "LCtrl", "matrix": [4, 0]}, + {"x": 1, "y": 4, "label": "LShift", "matrix": [4, 1]}, + {"x": 2, "y": 4, "label": "Fn", "matrix": [4, 2]}, + {"x": 3, "y": 4, "label": "AltGr", "matrix": [4, 3]}, + {"x": 4, "y": 4, "w": 3, "label": "Space", "matrix": [4, 4]}, + {"x": 7, "y": 4, "label": "-", "matrix": [4, 7]}, + {"x": 8, "y": 4, "label": "=", "matrix": [4, 8]}, + {"x": 9, "y": 4, "label": "Left", "matrix": [4, 9]}, + {"x": 10, "y": 4, "label": "Down", "matrix": [4, 10]}, + {"x": 11, "y": 4, "label": "Right", "matrix": [4, 11]}, + {"x": 12, "y": 4, "label": "RCtrl", "matrix": [4, 12]} + ] + } + }, + "matrix_pins": { + "cols": ["D4", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"], + "rows": ["D5", "D3", "D2", "D1", "D0"] + } +} diff --git a/keyboards/mkbd65/rev0/mkbd65.c b/keyboards/mkbd65/rev0/mkbd65.c new file mode 100644 index 0000000000..baca6508d4 --- /dev/null +++ b/keyboards/mkbd65/rev0/mkbd65.c @@ -0,0 +1,4 @@ +// Copyright 2023 XenGi (@XenGi) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "mkbd65.h" diff --git a/keyboards/mkbd65/mkbd65.h b/keyboards/mkbd65/rev0/mkbd65.h similarity index 65% rename from keyboards/mkbd65/mkbd65.h rename to keyboards/mkbd65/rev0/mkbd65.h index 1a53cad69f..aae0d388fa 100644 --- a/keyboards/mkbd65/mkbd65.h +++ b/keyboards/mkbd65/rev0/mkbd65.h @@ -1,24 +1,12 @@ -/* Copyright 2022 XenGi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +// Copyright 2023 XenGi (@XenGi) +// SPDX-License-Identifier: GPL-2.0-or-later + #ifndef MKBD65_H #define MKBD65_H #include "quantum.h" -/* LAYOUT_ANSI +/* LAYOUT_ansi * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ * │ │ │ │ │ │ │ │ │ │ │ │ 2.0U │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┬───┤ @@ -38,7 +26,7 @@ * The second converts the arguments into a two-dimensional array which * represents the switch matrix. */ -#define LAYOUT_ANSI( \ +#define LAYOUT_ansi( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, \ @@ -53,20 +41,20 @@ { K40, K41, K42, K43, K44, KC_NO, KC_NO, K47, K48, K49, K410, K411, K412 } \ } -/* LAYOUT_ISO - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ │ │ │ │ │ │ │ │ │ │ │ 2.0U │ - * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┬───┤ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ │ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┤ - * │ │ │ │ │ │ │ │ │ │ │ │ 2.0U │ - * ├───┼───┼───┼───┼───┴───┴───┼───┼───┼───┼───┼───┬───┤ - * │ │ │ │ │ 3.0U │ │ │ │ │ │ │ - * └───┴───┴───┴───┴───────────┴───┴───┴───┴───┴───┴───┘ +/* LAYOUT_iso + * ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══════╗ + * ║ │ │ │ │ │ │ │ │ │ │ │ 2.0U ║ + * ╟───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┬───╢ + * ║ │ │ │ │ │ │ │ │ │ │ │ │ ║ + * ╟───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ ║ + * ║ │ │ │ │ │ │ │ │ │ │ │ │ ║ + * ╟───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───╢ + * ║ │ │ │ │ │ │ │ │ │ │ │ 2.0U ║ + * ╟───┼───┼───┼───┼───┴───┴───┼───┼───┼───┼───┼───┬───╢ + * ║ │ │ │ │ 3.0U │ │ │ │ │ │ ║ + * ╚═══╧═══╧═══╧═══╧═══════════╧═══╧═══╧═══╧═══╧═══╧═══╝ */ -#define LAYOUT_ISO( \ +#define LAYOUT_iso( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, \ diff --git a/keyboards/mkbd65/rev0/rules.mk b/keyboards/mkbd65/rev0/rules.mk new file mode 100644 index 0000000000..94d4ac53b6 --- /dev/null +++ b/keyboards/mkbd65/rev0/rules.mk @@ -0,0 +1,9 @@ +# A list of layouts this keyboard supports. +LAYOUTS = ansi iso + +MCU = atmega32u4 +F_CPU = 16000000 +ARCH = AVR8 +F_USB = $(F_CPU) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT +BOOTLOADER = atmel-dfu diff --git a/keyboards/mkbd65/rev1/info.json b/keyboards/mkbd65/rev1/info.json new file mode 100644 index 0000000000..276775db17 --- /dev/null +++ b/keyboards/mkbd65/rev1/info.json @@ -0,0 +1,157 @@ +{ + "usb": { + "device_version": "1.0.0" + }, + "layouts": { + "LAYOUT_en-us-intl": { + "layout": [ + {"x": 0, "y": 0, "label": "Esc", "matrix": [0, 0]}, + {"x": 1, "y": 0, "label": "1", "matrix": [0, 1]}, + {"x": 2, "y": 0, "label": "2", "matrix": [0, 2]}, + {"x": 3, "y": 0, "label": "3", "matrix": [0, 3]}, + {"x": 4, "y": 0, "label": "4", "matrix": [0, 4]}, + {"x": 5, "y": 0, "label": "5", "matrix": [0, 5]}, + {"x": 6, "y": 0, "label": "6", "matrix": [0, 6]}, + {"x": 7, "y": 0, "label": "7", "matrix": [0, 7]}, + {"x": 8, "y": 0, "label": "8", "matrix": [0, 8]}, + {"x": 9, "y": 0, "label": "9", "matrix": [0, 9]}, + {"x": 10, "y": 0, "label": "0", "matrix": [0, 10]}, + {"x": 11, "y": 0, "label": "Backspace", "matrix": [0, 11]}, + {"x": 12, "y": 0, "label": "Backspace", "matrix": [0, 12]}, + + {"x": 0, "y": 1, "label": "Q", "matrix": [1, 0]}, + {"x": 1, "y": 1, "label": "W", "matrix": [1, 1]}, + {"x": 2, "y": 1, "label": "E", "matrix": [1, 2]}, + {"x": 3, "y": 1, "label": "R", "matrix": [1, 3]}, + {"x": 4, "y": 1, "label": "T", "matrix": [1, 4]}, + {"x": 5, "y": 1, "label": "Y", "matrix": [1, 5]}, + {"x": 6, "y": 1, "label": "U", "matrix": [1, 6]}, + {"x": 7, "y": 1, "label": "I", "matrix": [1, 7]}, + {"x": 8, "y": 1, "label": "O", "matrix": [1, 8]}, + {"x": 9, "y": 1, "label": "P", "matrix": [1, 9]}, + {"x": 10, "y": 1, "label": "[", "matrix": [1, 10]}, + {"x": 11, "y": 1, "label": "]", "matrix": [1, 11]}, + {"x": 12, "y": 1, "label": "\\", "matrix": [1, 12]}, + + {"x": 0, "y": 2, "label": "A", "matrix": [2, 0]}, + {"x": 1, "y": 2, "label": "S", "matrix": [2, 1]}, + {"x": 2, "y": 2, "label": "D", "matrix": [2, 2]}, + {"x": 3, "y": 2, "label": "F", "matrix": [2, 3]}, + {"x": 4, "y": 2, "label": "G", "matrix": [2, 4]}, + {"x": 5, "y": 2, "label": "H", "matrix": [2, 5]}, + {"x": 6, "y": 2, "label": "J", "matrix": [2, 6]}, + {"x": 7, "y": 2, "label": "K", "matrix": [2, 7]}, + {"x": 8, "y": 2, "label": "L", "matrix": [2, 8]}, + {"x": 9, "y": 2, "label": ";", "matrix": [2, 9]}, + {"x": 10, "y": 2, "label": "'", "matrix": [2, 10]}, + {"x": 11, "y": 2, "label": "Enter", "matrix": [2, 11]}, + {"x": 12, "y": 2, "label": "Enter", "matrix": [2, 12]}, + + {"x": 0, "y": 3, "label": "Z", "matrix": [3, 0]}, + {"x": 1, "y": 3, "label": "X", "matrix": [3, 1]}, + {"x": 2, "y": 3, "label": "C", "matrix": [3, 2]}, + {"x": 3, "y": 3, "label": "V", "matrix": [3, 3]}, + {"x": 4, "y": 3, "label": "B", "matrix": [3, 4]}, + {"x": 5, "y": 3, "label": "N", "matrix": [3, 5]}, + {"x": 6, "y": 3, "label": "M", "matrix": [3, 6]}, + {"x": 7, "y": 3, "label": ",", "matrix": [3, 7]}, + {"x": 8, "y": 3, "label": ".", "matrix": [3, 8]}, + {"x": 9, "y": 3, "label": "/", "matrix": [3, 9]}, + {"x": 10, "y": 3, "label": "Up", "matrix": [3, 10]}, + {"x": 11, "y": 3, "label": "RShift", "matrix": [3, 11]}, + {"x": 12, "y": 3, "label": "RShift", "matrix": [3, 12]}, + + {"x": 0, "y": 4, "label": "LCtrl", "matrix": [4, 0]}, + {"x": 1, "y": 4, "label": "LShift", "matrix": [4, 1]}, + {"x": 2, "y": 4, "label": "Fn", "matrix": [4, 2]}, + {"x": 3, "y": 4, "label": "AltGr", "matrix": [4, 3]}, + {"x": 4, "y": 4, "label": "Space", "matrix": [4, 4]}, + {"x": 5, "y": 4, "label": "Space", "matrix": [4, 5]}, + {"x": 6, "y": 4, "label": "Space", "matrix": [4, 6]}, + {"x": 7, "y": 4, "label": "-", "matrix": [4, 7]}, + {"x": 8, "y": 4, "label": "=", "matrix": [4, 8]}, + {"x": 9, "y": 4, "label": "Left", "matrix": [4, 9]}, + {"x": 10, "y": 4, "label": "Down", "matrix": [4, 10]}, + {"x": 11, "y": 4, "label": "Right", "matrix": [4, 11]}, + {"x": 12, "y": 4, "label": "RCtrl", "matrix": [4, 12]} + ] + }, + "LAYOUT_de": { + "layout": [ + {"x": 0, "y": 0, "label": "Esc", "matrix": [0, 0]}, + {"x": 1, "y": 0, "label": "1", "matrix": [0, 1]}, + {"x": 2, "y": 0, "label": "2", "matrix": [0, 2]}, + {"x": 3, "y": 0, "label": "3", "matrix": [0, 3]}, + {"x": 4, "y": 0, "label": "4", "matrix": [0, 4]}, + {"x": 5, "y": 0, "label": "5", "matrix": [0, 5]}, + {"x": 6, "y": 0, "label": "6", "matrix": [0, 6]}, + {"x": 7, "y": 0, "label": "7", "matrix": [0, 7]}, + {"x": 8, "y": 0, "label": "8", "matrix": [0, 8]}, + {"x": 9, "y": 0, "label": "9", "matrix": [0, 9]}, + {"x": 10, "y": 0, "label": "0", "matrix": [0, 10]}, + {"x": 11, "y": 0, "label": "Backspace", "matrix": [0, 11]}, + {"x": 12, "y": 0, "label": "Backspace", "matrix": [0, 12]}, + + {"x": 0, "y": 1, "label": "Q", "matrix": [1, 0]}, + {"x": 1, "y": 1, "label": "W", "matrix": [1, 1]}, + {"x": 2, "y": 1, "label": "E", "matrix": [1, 2]}, + {"x": 3, "y": 1, "label": "R", "matrix": [1, 3]}, + {"x": 4, "y": 1, "label": "T", "matrix": [1, 4]}, + {"x": 5, "y": 1, "label": "Z", "matrix": [1, 5]}, + {"x": 6, "y": 1, "label": "U", "matrix": [1, 6]}, + {"x": 7, "y": 1, "label": "I", "matrix": [1, 7]}, + {"x": 8, "y": 1, "label": "O", "matrix": [1, 8]}, + {"x": 9, "y": 1, "label": "P", "matrix": [1, 9]}, + {"x": 10, "y": 1, "label": "Ü", "matrix": [1, 10]}, + {"x": 11, "y": 1, "label": "+", "matrix": [1, 11]}, + {"x": 12, "y": 1, "label": "Enter", "matrix": [1, 12]}, + + {"x": 0, "y": 2, "label": "A", "matrix": [2, 0]}, + {"x": 1, "y": 2, "label": "S", "matrix": [2, 1]}, + {"x": 2, "y": 2, "label": "D", "matrix": [2, 2]}, + {"x": 3, "y": 2, "label": "F", "matrix": [2, 3]}, + {"x": 4, "y": 2, "label": "G", "matrix": [2, 4]}, + {"x": 5, "y": 2, "label": "H", "matrix": [2, 5]}, + {"x": 6, "y": 2, "label": "J", "matrix": [2, 6]}, + {"x": 7, "y": 2, "label": "K", "matrix": [2, 7]}, + {"x": 8, "y": 2, "label": "L", "matrix": [2, 8]}, + {"x": 9, "y": 2, "label": "Ö", "matrix": [2, 9]}, + {"x": 10, "y": 2, "label": "Ä", "matrix": [2, 10]}, + {"x": 11, "y": 2, "label": "#", "matrix": [2, 11]}, + {"x": 12, "y": 2, "label": "Enter", "matrix": [2, 12]}, + + {"x": 0, "y": 3, "label": "Y", "matrix": [3, 0]}, + {"x": 1, "y": 3, "label": "X", "matrix": [3, 1]}, + {"x": 2, "y": 3, "label": "C", "matrix": [3, 2]}, + {"x": 3, "y": 3, "label": "V", "matrix": [3, 3]}, + {"x": 4, "y": 3, "label": "B", "matrix": [3, 4]}, + {"x": 5, "y": 3, "label": "N", "matrix": [3, 5]}, + {"x": 6, "y": 3, "label": "M", "matrix": [3, 6]}, + {"x": 7, "y": 3, "label": ",", "matrix": [3, 7]}, + {"x": 8, "y": 3, "label": ".", "matrix": [3, 8]}, + {"x": 9, "y": 3, "label": "-", "matrix": [3, 9]}, + {"x": 10, "y": 3, "label": "Up", "matrix": [3, 10]}, + {"x": 11, "y": 3, "label": "<", "matrix": [3, 11]}, + {"x": 12, "y": 3, "label": "RShift", "matrix": [3, 12]}, + + {"x": 0, "y": 4, "label": "LCtrl", "matrix": [4, 0]}, + {"x": 1, "y": 4, "label": "LShift", "matrix": [4, 1]}, + {"x": 2, "y": 4, "label": "Fn", "matrix": [4, 2]}, + {"x": 3, "y": 4, "label": "AltGr", "matrix": [4, 3]}, + {"x": 4, "y": 4, "label": "Space", "matrix": [4, 4]}, + {"x": 5, "y": 4, "label": "Space", "matrix": [4, 5]}, + {"x": 6, "y": 4, "label": "Space", "matrix": [4, 6]}, + {"x": 7, "y": 4, "label": "ß", "matrix": [4, 7]}, + {"x": 8, "y": 4, "label": "´", "matrix": [4, 8]}, + {"x": 9, "y": 4, "label": "Left", "matrix": [4, 9]}, + {"x": 10, "y": 4, "label": "Down", "matrix": [4, 10]}, + {"x": 11, "y": 4, "label": "Right", "matrix": [4, 11]}, + {"x": 12, "y": 4, "label": "RCtrl", "matrix": [4, 12]} + ] + } + }, + "matrix_pins": { + "cols": [], + "rows": [] + } +} diff --git a/keyboards/mkbd65/rev1/mkbd65.c b/keyboards/mkbd65/rev1/mkbd65.c new file mode 100644 index 0000000000..baca6508d4 --- /dev/null +++ b/keyboards/mkbd65/rev1/mkbd65.c @@ -0,0 +1,4 @@ +// Copyright 2023 XenGi (@XenGi) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "mkbd65.h" diff --git a/keyboards/mkbd65/rev1/mkbd65.h b/keyboards/mkbd65/rev1/mkbd65.h new file mode 100644 index 0000000000..0e4293dd98 --- /dev/null +++ b/keyboards/mkbd65/rev1/mkbd65.h @@ -0,0 +1,42 @@ +// Copyright 2023 XenGi (@XenGi) +// SPDX-License-Identifier: GPL-2.0-or-later + +#ifndef MKBD65_H +#define MKBD65_H + +#include "quantum.h" + +/* LAYOUT + * ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗ + * ║ │ │ │ │ │ │ │ │ │ │ │ │ ║ + * ╟───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───╢ + * ║ │ │ │ │ │ │ │ │ │ │ │ │ ║ + * ╟───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───╢ + * ║ │ │ │ │ │ │ │ │ │ │ │ │ ║ + * ╟───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───╢ + * ║ │ │ │ │ │ │ │ │ │ │ │ │ ║ + * ╟───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───╢ + * ║ │ │ │ │ │ │ │ │ │ │ │ │ ║ + * ╚═══╧═══╧═══╧═══╧═══╧═══╧═══╧═══╧═══╧═══╧═══╧═══╧═══╝ + * This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, K012, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, K012 }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312 }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412 } \ +} diff --git a/keyboards/mkbd65/rev1/rules.mk b/keyboards/mkbd65/rev1/rules.mk new file mode 100644 index 0000000000..84345ec0aa --- /dev/null +++ b/keyboards/mkbd65/rev1/rules.mk @@ -0,0 +1,3 @@ +# A list of layouts this keyboard supports. +LAYOUTS = en-us-intl de + \ No newline at end of file diff --git a/keyboards/mkbd65/rules.mk b/keyboards/mkbd65/rules.mk index a6bdd38bae..8e66f2e4d8 100644 --- a/keyboards/mkbd65/rules.mk +++ b/keyboards/mkbd65/rules.mk @@ -1,80 +1,7 @@ -# MCU name -MCU = atmega32u4 +DEFAULT_FOLDER = rev1 +# Enables Link Time Optimization (LTO) when compiling the keyboard. This makes the process take longer, but it can +# significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable). +LTO_ENABLE = 1 -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# atmega32a bootloadHID -BOOTLOADER = atmel-dfu - - -# If you don't know the bootloader type, then you can specify the -# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -# OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches -HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400) +BOOTMAGIC_ENABLE = 1 +EXTRAKEY_ENABLE = 1 From f57bc9bdca5a63636cc0e1bff5de00a39dcdd850 Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Sun, 11 Jun 2023 20:22:50 +0200 Subject: [PATCH 015/167] fix layout name --- keyboards/mkbd65/config.h | 4 ++++ keyboards/mkbd65/info.json | 4 ---- keyboards/mkbd65/keymaps/{en-us-intl => en_us_intl} | 0 keyboards/mkbd65/rev0/info.json | 2 ++ keyboards/mkbd65/rev0/rules.mk | 3 +++ keyboards/mkbd65/rev1/info.json | 2 ++ keyboards/mkbd65/rev1/rules.mk | 9 +++++++-- 7 files changed, 18 insertions(+), 6 deletions(-) rename keyboards/mkbd65/keymaps/{en-us-intl => en_us_intl} (100%) diff --git a/keyboards/mkbd65/config.h b/keyboards/mkbd65/config.h index 4ac3a7eaf5..c6367adeab 100644 --- a/keyboards/mkbd65/config.h +++ b/keyboards/mkbd65/config.h @@ -11,3 +11,7 @@ //#define NO_ACTION_TAPPING // disable one-shot modifiers //#define NO_ACTION_ONESHOT + +// disable these deprecated features by default +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION \ No newline at end of file diff --git a/keyboards/mkbd65/info.json b/keyboards/mkbd65/info.json index aea164d043..7a2cd0c8f7 100644 --- a/keyboards/mkbd65/info.json +++ b/keyboards/mkbd65/info.json @@ -4,10 +4,6 @@ "url": "https://mkbd65.xengi.de", "maintainer": "XenGi", "author": ["XenGi"], - "usb": { - "vid": "0x1209", - "pid": "0x4803" - }, "debounce": 5, "diode_direction": "ROW2COL", "bootmagic": { diff --git a/keyboards/mkbd65/keymaps/en-us-intl b/keyboards/mkbd65/keymaps/en_us_intl similarity index 100% rename from keyboards/mkbd65/keymaps/en-us-intl rename to keyboards/mkbd65/keymaps/en_us_intl diff --git a/keyboards/mkbd65/rev0/info.json b/keyboards/mkbd65/rev0/info.json index cea5523e84..5d2c940129 100644 --- a/keyboards/mkbd65/rev0/info.json +++ b/keyboards/mkbd65/rev0/info.json @@ -1,5 +1,7 @@ { "usb": { + "vid": "0x1209", + "pid": "0x4803", "device_version": "0.0.0" }, "layouts": { diff --git a/keyboards/mkbd65/rev0/rules.mk b/keyboards/mkbd65/rev0/rules.mk index 94d4ac53b6..2f6c65ff11 100644 --- a/keyboards/mkbd65/rev0/rules.mk +++ b/keyboards/mkbd65/rev0/rules.mk @@ -7,3 +7,6 @@ ARCH = AVR8 F_USB = $(F_CPU) OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT BOOTLOADER = atmel-dfu + +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +EXTRAKEY_ENABLE = yes # Audio control and System control \ No newline at end of file diff --git a/keyboards/mkbd65/rev1/info.json b/keyboards/mkbd65/rev1/info.json index 276775db17..9e3dd7105e 100644 --- a/keyboards/mkbd65/rev1/info.json +++ b/keyboards/mkbd65/rev1/info.json @@ -1,5 +1,7 @@ { "usb": { + "vid": "0x1209", + "pid": "0x4803", "device_version": "1.0.0" }, "layouts": { diff --git a/keyboards/mkbd65/rev1/rules.mk b/keyboards/mkbd65/rev1/rules.mk index 84345ec0aa..ef6c3bb862 100644 --- a/keyboards/mkbd65/rev1/rules.mk +++ b/keyboards/mkbd65/rev1/rules.mk @@ -1,3 +1,8 @@ # A list of layouts this keyboard supports. -LAYOUTS = en-us-intl de - \ No newline at end of file +LAYOUTS = en_us_intl de + +MCU = STM32F072 +BOOTLOADER = stm32-dfu + +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +EXTRAKEY_ENABLE = yes # Audio control and System control \ No newline at end of file From 6f63dca06f1d9c4c9e61725bd5479c0252aad6b7 Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Sun, 11 Jun 2023 20:58:20 +0200 Subject: [PATCH 016/167] rev0 compiles --- keyboards/mkbd65/config.h | 4 -- keyboards/mkbd65/keymaps/ansi/keymap.c | 20 +++---- keyboards/mkbd65/keymaps/de/keymap.c | 4 +- keyboards/mkbd65/keymaps/en_us_intl | 1 - keyboards/mkbd65/keymaps/en_us_intl/README.md | 58 +++++++++++++++++++ keyboards/mkbd65/keymaps/en_us_intl/keymap.c | 22 +++++++ keyboards/mkbd65/keymaps/iso/keymap.c | 12 ++-- keyboards/mkbd65/rev0/rules.mk | 6 -- keyboards/mkbd65/rev1/info.json | 6 +- keyboards/mkbd65/rev1/mkbd65.h | 4 +- keyboards/mkbd65/rev1/rules.mk | 6 -- keyboards/mkbd65/rules.mk | 5 +- 12 files changed, 106 insertions(+), 42 deletions(-) delete mode 120000 keyboards/mkbd65/keymaps/en_us_intl create mode 100644 keyboards/mkbd65/keymaps/en_us_intl/README.md create mode 100644 keyboards/mkbd65/keymaps/en_us_intl/keymap.c diff --git a/keyboards/mkbd65/config.h b/keyboards/mkbd65/config.h index c6367adeab..4ac3a7eaf5 100644 --- a/keyboards/mkbd65/config.h +++ b/keyboards/mkbd65/config.h @@ -11,7 +11,3 @@ //#define NO_ACTION_TAPPING // disable one-shot modifiers //#define NO_ACTION_ONESHOT - -// disable these deprecated features by default -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION \ No newline at end of file diff --git a/keyboards/mkbd65/keymaps/ansi/keymap.c b/keyboards/mkbd65/keymaps/ansi/keymap.c index ddda2b83bc..fb5f196098 100644 --- a/keyboards/mkbd65/keymaps/ansi/keymap.c +++ b/keyboards/mkbd65/keymaps/ansi/keymap.c @@ -4,19 +4,19 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( /* Base layer */ - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_BSPC, + [0] = LAYOUT_ansi( /* Base layer */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, KC_RSFT, - KC_LCTL, MO(1), KC_LSFT, OSM(MOD_RALT), KC_SPC, KC_SPC, KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL + 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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, + KC_LCTL, MO(1), KC_LSFT, OSM(MOD_RALT), KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL ), - [1] = LAYOUT( /* Function layer */ - RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, KC_DEL, + [1] = LAYOUT_ansi( /* Function layer */ + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, KC_APP, - _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_GRV, KC_LGUI, KC_LGUI, - _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PGUP, _______, _______, - _______, _______, _______, _______, KC_TAB, KC_TAB, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_GRV, KC_LGUI, + _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PGUP, _______, + _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______ ) }; diff --git a/keyboards/mkbd65/keymaps/de/keymap.c b/keyboards/mkbd65/keymaps/de/keymap.c index 1246f1e8bc..6ba90e876f 100644 --- a/keyboards/mkbd65/keymaps/de/keymap.c +++ b/keyboards/mkbd65/keymaps/de/keymap.c @@ -6,7 +6,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( /* Base layer */ - KC_GESC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7, DE_8, DE_9, DE_0, KC_BSPC, KC_BSPC, + QK_GESC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7, DE_8, DE_9, DE_0, KC_BSPC, KC_BSPC, DE_Q, DE_W, DE_E, DE_R, DE_T, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UDIA, DE_PLUS, KC_ENT, DE_A, DE_S, DE_D, DE_F, DE_G, DE_H, DE_J, DE_K, DE_L, DE_ODIA, DE_ADIA, DE_HASH, KC_ENT, DE_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_UP, DE_LABK, KC_RSFT, @@ -14,7 +14,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [1] = LAYOUT( /* Function layer */ - RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, KC_DEL, + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, KC_APP, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_GRV, KC_LGUI, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PGUP, _______, _______, diff --git a/keyboards/mkbd65/keymaps/en_us_intl b/keyboards/mkbd65/keymaps/en_us_intl deleted file mode 120000 index 44ad4f4f7e..0000000000 --- a/keyboards/mkbd65/keymaps/en_us_intl +++ /dev/null @@ -1 +0,0 @@ -ansi \ No newline at end of file diff --git a/keyboards/mkbd65/keymaps/en_us_intl/README.md b/keyboards/mkbd65/keymaps/en_us_intl/README.md new file mode 100644 index 0000000000..96e8f7bb14 --- /dev/null +++ b/keyboards/mkbd65/keymaps/en_us_intl/README.md @@ -0,0 +1,58 @@ +# The English US International keymap for mkbd65 rev0 by XenGi + +This is the default layout for the mkbd65 keyboard. You can use it as a reference for other layouts. + +It is based on the "English (intl., with AltGr dead keys)" layout. + +This is the key matrix (no label means the key from layer 0 will be used): + +``` +0: no mod +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ Esc║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║ 0 ║Backspace║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ q ║ w ║ e ║ r ║ t ║ y ║ u ║ i ║ o ║ p ║ [ ║ ] ║ \ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ +║ a ║ s ║ d ║ f ║ g ║ h ║ j ║ k ║ l ║ ; ║ ' ║ Return ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ +║ z ║ x ║ c ║ v ║ b ║ n ║ m ║ , ║ . ║ / ║ ▲ ║ Shift ║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ +║Ctrl║ Fn ║Shft║AltG║ Space ║ - ║ = ║ ◀ ║ ▼ ║ ▶ ║Ctrl║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ +1: mod shift +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ ~ ║ ! ║ @ ║ # ║ $ ║ % ║ ^ ║ & ║ * ║ ( ║ ) ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ Q ║ W ║ E ║ R ║ T ║ Y ║ U ║ I ║ O ║ P ║ { ║ } ║ | ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ +║ A ║ S ║ D ║ F ║ G ║ H ║ J ║ K ║ L ║ : ║ " ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ +║ Z ║ X ║ C ║ V ║ B ║ N ║ M ║ < ║ > ║ ? ║ ║░░░░░░░░░║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ +║ ║ ║░░░░║ ║ ║ _ ║ + ║ ║ ║ ║ ║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ +2: mod altgr +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ ║ ¹ ║ ² ║ ³ ║ ║ € ║ ║ ║ ║ ║ ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ ä ║ ║ ║ ║ ║ ü ║ ║ ║ ║ ö ║ « ║ » ║ ¬ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ +║ ║ ß ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ +║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ║ ║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ +║ ║ ║ ║░░░░║ ║ ║ ║ ║ ║ ║ ║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ +3: mod fn +╔════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦════╦═════════╗ +║ Esc║ F1 ║ F2 ║ F3 ║ F4 ║ F5 ║ F6 ║ F7 ║ F8 ║ F9 ║ F10║ Delete ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ F11║ F12║ ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ` ║ Super ║ +╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║PgUp║ ║ +╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ +║ ║░░░░║ ║ ║ Tab ║ ║ ║Pos1║PgDn║ End║ ║ +╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ +``` diff --git a/keyboards/mkbd65/keymaps/en_us_intl/keymap.c b/keyboards/mkbd65/keymaps/en_us_intl/keymap.c new file mode 100644 index 0000000000..96d7855ff8 --- /dev/null +++ b/keyboards/mkbd65/keymaps/en_us_intl/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2023 XenGi (@XenGi) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( /* Base layer */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_BSPC, + 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, KC_RSFT, + KC_LCTL, MO(1), KC_LSFT, OSM(MOD_RALT), KC_SPC, KC_SPC, KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL + ), + + [1] = LAYOUT_all( /* Function layer */ + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, KC_APP, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_GRV, KC_LGUI, KC_LGUI, + _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PGUP, _______, _______, + _______, _______, _______, _______, KC_TAB, KC_TAB, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______ + ) +}; diff --git a/keyboards/mkbd65/keymaps/iso/keymap.c b/keyboards/mkbd65/keymaps/iso/keymap.c index 2b59ffd0cf..a7dd99463e 100644 --- a/keyboards/mkbd65/keymaps/iso/keymap.c +++ b/keyboards/mkbd65/keymaps/iso/keymap.c @@ -4,19 +4,19 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_ISO( /* Base layer */ - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + [0] = LAYOUT_iso( /* Base layer */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, 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_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, - KC_LCTL, MO(1), KC_LSFT, OSM(MOD_RALT), KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL, + KC_LCTL, MO(1), KC_LSFT, OSM(MOD_RALT), KC_SPC, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, KC_RCTL ), - [1] = LAYOUT_ISO( /* Function layer */ - RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + [1] = LAYOUT_iso( /* Function layer */ + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_GRV, KC_APP, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PGUP, _______, - _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______, + _______, _______, _______, _______, KC_TAB, _______, _______, KC_HOME, KC_PGDN, KC_END, _______ ), }; diff --git a/keyboards/mkbd65/rev0/rules.mk b/keyboards/mkbd65/rev0/rules.mk index 2f6c65ff11..2d23977af0 100644 --- a/keyboards/mkbd65/rev0/rules.mk +++ b/keyboards/mkbd65/rev0/rules.mk @@ -1,12 +1,6 @@ -# A list of layouts this keyboard supports. -LAYOUTS = ansi iso - MCU = atmega32u4 F_CPU = 16000000 ARCH = AVR8 F_USB = $(F_CPU) OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT BOOTLOADER = atmel-dfu - -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -EXTRAKEY_ENABLE = yes # Audio control and System control \ No newline at end of file diff --git a/keyboards/mkbd65/rev1/info.json b/keyboards/mkbd65/rev1/info.json index 9e3dd7105e..42ed48f137 100644 --- a/keyboards/mkbd65/rev1/info.json +++ b/keyboards/mkbd65/rev1/info.json @@ -5,7 +5,7 @@ "device_version": "1.0.0" }, "layouts": { - "LAYOUT_en-us-intl": { + "LAYOUT_en_us_intl": { "layout": [ {"x": 0, "y": 0, "label": "Esc", "matrix": [0, 0]}, {"x": 1, "y": 0, "label": "1", "matrix": [0, 1]}, @@ -153,7 +153,7 @@ } }, "matrix_pins": { - "cols": [], - "rows": [] + "cols": ["A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "B2", "B10", "B11"], + "rows": ["B12", "B13", "B14", "B15", "A8"] } } diff --git a/keyboards/mkbd65/rev1/mkbd65.h b/keyboards/mkbd65/rev1/mkbd65.h index 0e4293dd98..759166bbcf 100644 --- a/keyboards/mkbd65/rev1/mkbd65.h +++ b/keyboards/mkbd65/rev1/mkbd65.h @@ -26,7 +26,7 @@ * The second converts the arguments into a two-dimensional array which * represents the switch matrix. */ -#define LAYOUT( \ +#define LAYOUT_all( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, K012, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, \ @@ -40,3 +40,5 @@ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312 }, \ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412 } \ } + +#endif diff --git a/keyboards/mkbd65/rev1/rules.mk b/keyboards/mkbd65/rev1/rules.mk index ef6c3bb862..e5116166cc 100644 --- a/keyboards/mkbd65/rev1/rules.mk +++ b/keyboards/mkbd65/rev1/rules.mk @@ -1,8 +1,2 @@ -# A list of layouts this keyboard supports. -LAYOUTS = en_us_intl de - MCU = STM32F072 BOOTLOADER = stm32-dfu - -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -EXTRAKEY_ENABLE = yes # Audio control and System control \ No newline at end of file diff --git a/keyboards/mkbd65/rules.mk b/keyboards/mkbd65/rules.mk index 8e66f2e4d8..cc4a04ee68 100644 --- a/keyboards/mkbd65/rules.mk +++ b/keyboards/mkbd65/rules.mk @@ -1,7 +1,6 @@ DEFAULT_FOLDER = rev1 # Enables Link Time Optimization (LTO) when compiling the keyboard. This makes the process take longer, but it can # significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable). -LTO_ENABLE = 1 +LTO_ENABLE = yes -BOOTMAGIC_ENABLE = 1 -EXTRAKEY_ENABLE = 1 +EXTRAKEY_ENABLE = yes # Audio control and System control From 1ac255fd1ceda45d551817a80d7dc1a2c8986771 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 22 Jun 2025 12:33:53 +1000 Subject: [PATCH 017/167] [docs] Change GUI key references to "Meta" -> "Super" (#25394) --- docs/keycodes.md | 4 ++-- docs/keycodes_basic.md | 20 ++++++++++---------- docs/mod_tap.md | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/keycodes.md b/docs/keycodes.md index cf170721c8..891a4f6f17 100644 --- a/docs/keycodes.md +++ b/docs/keycodes.md @@ -176,11 +176,11 @@ See also: [Basic Keycodes](keycodes_basic) |`KC_LEFT_CTRL` |`KC_LCTL` |Left Control |✔ |✔ |✔ | |`KC_LEFT_SHIFT` |`KC_LSFT` |Left Shift |✔ |✔ |✔ | |`KC_LEFT_ALT` |`KC_LALT`, `KC_LOPT` |Left Alt (Option) |✔ |✔ |✔ | -|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Meta key) |✔ |✔ |✔ | +|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Super key) |✔ |✔ |✔ | |`KC_RIGHT_CTRL` |`KC_RCTL` |Right Control |✔ |✔ |✔ | |`KC_RIGHT_SHIFT` |`KC_RSFT` |Right Shift |✔ |✔ |✔ | |`KC_RIGHT_ALT` |`KC_RALT`, `KC_ROPT`, `KC_ALGR`|Right Alt (Option/AltGr) |✔ |✔ |✔ | -|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Meta key) |✔ |✔ |✔ | +|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Super key) |✔ |✔ |✔ | |`KC_SYSTEM_POWER` |`KC_PWR` |System Power Down |✔ |✔3|✔ | |`KC_SYSTEM_SLEEP` |`KC_SLEP` |System Sleep |✔ |✔3|✔ | |`KC_SYSTEM_WAKE` |`KC_WAKE` |System Wake | |✔3|✔ | diff --git a/docs/keycodes_basic.md b/docs/keycodes_basic.md index 6ff422f89b..66dfbe6ded 100644 --- a/docs/keycodes_basic.md +++ b/docs/keycodes_basic.md @@ -108,16 +108,16 @@ The basic set of keycodes are based on the [HID Keyboard/Keypad Usage Page (0x07 ## Modifiers -|Key |Aliases |Description | -|----------------|-------------------------------|------------------------------------| -|`KC_LEFT_CTRL` |`KC_LCTL` |Left Control | -|`KC_LEFT_SHIFT` |`KC_LSFT` |Left Shift | -|`KC_LEFT_ALT` |`KC_LALT`, `KC_LOPT` |Left Alt (Option) | -|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Meta key) | -|`KC_RIGHT_CTRL` |`KC_RCTL` |Right Control | -|`KC_RIGHT_SHIFT`|`KC_RSFT` |Right Shift | -|`KC_RIGHT_ALT` |`KC_RALT`, `KC_ROPT`, `KC_ALGR`|Right Alt (Option/AltGr) | -|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Meta key)| +|Key |Aliases |Description | +|----------------|-------------------------------|-------------------------------------| +|`KC_LEFT_CTRL` |`KC_LCTL` |Left Control | +|`KC_LEFT_SHIFT` |`KC_LSFT` |Left Shift | +|`KC_LEFT_ALT` |`KC_LALT`, `KC_LOPT` |Left Alt (Option) | +|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Super key) | +|`KC_RIGHT_CTRL` |`KC_RCTL` |Right Control | +|`KC_RIGHT_SHIFT`|`KC_RSFT` |Right Shift | +|`KC_RIGHT_ALT` |`KC_RALT`, `KC_ROPT`, `KC_ALGR`|Right Alt (Option/AltGr) | +|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Super key)| ## International diff --git a/docs/mod_tap.md b/docs/mod_tap.md index da2ecc9a85..8b420d30b6 100644 --- a/docs/mod_tap.md +++ b/docs/mod_tap.md @@ -9,11 +9,11 @@ The modifiers (`mod`) argument to the `MT()` macro are prefixed with `MOD_`, not |`MOD_LCTL`|Left Control | |`MOD_LSFT`|Left Shift | |`MOD_LALT`|Left Alt | -|`MOD_LGUI`|Left GUI (Windows/Command/Meta key) | +|`MOD_LGUI`|Left GUI (Windows/Command/Super key) | |`MOD_RCTL`|Right Control | |`MOD_RSFT`|Right Shift | |`MOD_RALT`|Right Alt (AltGr) | -|`MOD_RGUI`|Right GUI (Windows/Command/Meta key) | +|`MOD_RGUI`|Right GUI (Windows/Command/Super key) | |`MOD_HYPR`|Hyper (Left Control, Shift, Alt and GUI)| |`MOD_MEH` |Meh (Left Control, Shift, and Alt) | From 611460c9db39f62659e5a4e481d36e44c590d40d Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 22 Jun 2025 17:11:53 +1000 Subject: [PATCH 018/167] ymdk/id75: fix keymap (#25396) --- keyboards/ymdk/id75/keymaps/default/keymap.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ymdk/id75/keymaps/default/keymap.json b/keyboards/ymdk/id75/keymaps/default/keymap.json index 7d0664c0a6..595841449e 100644 --- a/keyboards/ymdk/id75/keymaps/default/keymap.json +++ b/keyboards/ymdk/id75/keymaps/default/keymap.json @@ -2,7 +2,7 @@ "version": 1, "author": "qmk", "notes": "", - "keyboard": "ymdk/id75", + "keyboard": "ymdk/id75/f103", "keymap": "default", "layout": "LAYOUT_ortho_5x15", "layers": [ From f5b02fbc116d7c6444db1e5e4de84d357fb931c8 Mon Sep 17 00:00:00 2001 From: Andrew Litt Date: Mon, 23 Jun 2025 04:18:48 -0500 Subject: [PATCH 019/167] Fix inverted encoder on Inland KB83 (#25400) --- keyboards/inland/kb83/keyboard.json | 2 +- keyboards/inland/kb83/keymaps/default/keymap.c | 8 ++++---- keyboards/inland/kb83/keymaps/default/rules.mk | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 keyboards/inland/kb83/keymaps/default/rules.mk diff --git a/keyboards/inland/kb83/keyboard.json b/keyboards/inland/kb83/keyboard.json index 4c82a557ee..2920da52e1 100644 --- a/keyboards/inland/kb83/keyboard.json +++ b/keyboards/inland/kb83/keyboard.json @@ -60,7 +60,7 @@ }, "encoder": { "rotary": [ - {"pin_a": "B14", "pin_b": "B13", "resolution": 4} + {"pin_a": "B13", "pin_b": "B14", "resolution": 4} ] }, "qmk": { diff --git a/keyboards/inland/kb83/keymaps/default/keymap.c b/keyboards/inland/kb83/keymaps/default/keymap.c index a564e4e4e1..df7df65678 100644 --- a/keyboards/inland/kb83/keymaps/default/keymap.c +++ b/keyboards/inland/kb83/keymaps/default/keymap.c @@ -64,10 +64,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [WIN_B] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, - [WIN_FN] = { ENCODER_CCW_CW(RM_SATU, RM_SATD) }, - [MAC_B] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, - [MAC_FN] = { ENCODER_CCW_CW(RM_SATU, RM_SATD) }, + [WIN_B] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [WIN_FN] = { ENCODER_CCW_CW(RM_SATD, RM_SATU) }, + [MAC_B] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [MAC_FN] = { ENCODER_CCW_CW(RM_SATD, RM_SATU) }, }; #endif diff --git a/keyboards/inland/kb83/keymaps/default/rules.mk b/keyboards/inland/kb83/keymaps/default/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/inland/kb83/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes From de5fd5d4e2efe05373eacefc95aa1deb15a3ebb9 Mon Sep 17 00:00:00 2001 From: Andrew Litt Date: Mon, 23 Jun 2025 17:01:56 -0500 Subject: [PATCH 020/167] Orient side LEDs on GMMK2 65% ANSI to match the rest of the matrix (#25402) Orient side LEDs on GMMK2 65% to match the rest of the matrix On GMMK2 P65 ANSI, the side LEDs were mapped to the wrong sides of the keyboard resulting in effects not being consistent with the key surface. This was most jarring in effects like pinwheel where the pattern involves the side LEDs and there is a distinctly different flow on the left and right halves of the board. This PR swaps the side LEDs in the map so that they are correctly oriented. Applied to both ANSI and ISO variants. --- keyboards/gmmk/gmmk2/p65/ansi/ansi.c | 40 ++++++++++++++-------------- keyboards/gmmk/gmmk2/p65/iso/iso.c | 40 ++++++++++++++-------------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/keyboards/gmmk/gmmk2/p65/ansi/ansi.c b/keyboards/gmmk/gmmk2/p65/ansi/ansi.c index d1f01fc8cb..b3ac9906db 100644 --- a/keyboards/gmmk/gmmk2/p65/ansi/ansi.c +++ b/keyboards/gmmk/gmmk2/p65/ansi/ansi.c @@ -204,26 +204,26 @@ led_config_t g_led_config = {{ {196, 64}, // 65 Down {210, 64}, // 66 Right - {0, 0}, // 69 LED 1 - {0, 7}, // 70 LED 2 - {0, 14}, // 71 LED 3 - {0, 21}, // 72 LED 4 - {0, 28}, // 73 LED 5 - {0, 35}, // 74 LED 6 - {0, 42}, // 75 LED 7 - {0, 49}, // 76 LED 8 - {0, 56}, // 77 LED 9 - {0, 64}, // 78 LED 10 - {224, 0 }, // 79 LED 11 - {224, 7 }, // 80 LED 12 - {224, 14}, // 81 LED 13 - {224, 21}, // 82 LED 14 - {224, 28}, // 83 LED 15 - {224, 35}, // 84 LED 16 - {224, 42}, // 85 LED 17 - {224, 49}, // 86 LED 18 - {224, 56}, // 87 LED 19 - {224, 64}, // 88 LED 20 + {224, 0 }, // 69 LED 1 + {224, 7 }, // 70 LED 2 + {224, 14}, // 71 LED 3 + {224, 21}, // 72 LED 4 + {224, 28}, // 73 LED 5 + {224, 35}, // 74 LED 6 + {224, 42}, // 75 LED 7 + {224, 49}, // 76 LED 8 + {224, 56}, // 77 LED 9 + {224, 64}, // 78 LED 10 + {0, 0 }, // 79 LED 11 + {0, 7 }, // 80 LED 12 + {0, 14}, // 81 LED 13 + {0, 21}, // 82 LED 14 + {0, 28}, // 83 LED 15 + {0, 35}, // 84 LED 16 + {0, 42}, // 85 LED 17 + {0, 49}, // 86 LED 18 + {0, 56}, // 87 LED 19 + {0, 64}, // 88 LED 20 }, { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, diff --git a/keyboards/gmmk/gmmk2/p65/iso/iso.c b/keyboards/gmmk/gmmk2/p65/iso/iso.c index 2be5285394..abadaccd34 100644 --- a/keyboards/gmmk/gmmk2/p65/iso/iso.c +++ b/keyboards/gmmk/gmmk2/p65/iso/iso.c @@ -206,26 +206,26 @@ led_config_t g_led_config = {{ {196, 64}, // 66 Down {210, 64}, // 67 Right - {0, 0}, // 68 LED 1 - {0, 7}, // 69 LED 2 - {0, 14}, // 70 LED 3 - {0, 21}, // 71 LED 4 - {0, 28}, // 72 LED 5 - {0, 35}, // 73 LED 6 - {0, 42}, // 74 LED 7 - {0, 49}, // 75 LED 8 - {0, 56}, // 76 LED 9 - {0, 64}, // 77 LED 10 - {224, 0 }, // 78 LED 11 - {224, 7 }, // 79 LED 12 - {224, 14}, // 80 LED 13 - {224, 21}, // 81 LED 14 - {224, 28}, // 82 LED 15 - {224, 35}, // 83 LED 16 - {224, 42}, // 84 LED 17 - {224, 49}, // 85 LED 18 - {224, 56}, // 86 LED 19 - {224, 64}, // 87 LED 20 + {224, 0 }, // 68 LED 1 + {224, 7 }, // 69 LED 2 + {224, 14}, // 70 LED 3 + {224, 21}, // 71 LED 4 + {224, 28}, // 72 LED 5 + {224, 35}, // 73 LED 6 + {224, 42}, // 74 LED 7 + {224, 49}, // 75 LED 8 + {224, 56}, // 76 LED 9 + {224, 64}, // 77 LED 10 + {0, 0 }, // 78 LED 11 + {0, 7 }, // 79 LED 12 + {0, 14}, // 80 LED 13 + {0, 21}, // 81 LED 14 + {0, 28}, // 82 LED 15 + {0, 35}, // 83 LED 16 + {0, 42}, // 84 LED 17 + {0, 49}, // 85 LED 18 + {0, 56}, // 86 LED 19 + {0, 64}, // 87 LED 20 }, { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, From 235d18f360dbb5ab0585c734050d5b2b332fd592 Mon Sep 17 00:00:00 2001 From: Dave Alvarado Date: Thu, 26 Jun 2025 01:38:15 -0500 Subject: [PATCH 021/167] Update readme.md to clarify Lily Pad V2 support (#25405) --- keyboards/boardsource/lulu/readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/boardsource/lulu/readme.md b/keyboards/boardsource/lulu/readme.md index a1c184eaac..9304a0fa8d 100644 --- a/keyboards/boardsource/lulu/readme.md +++ b/keyboards/boardsource/lulu/readme.md @@ -6,8 +6,8 @@ The lulu is what the ergo community has needed for a long time, a high-end aesth * Keyboard Maintainer: [Boardsource](https://github.com/daysgobye) -* Hardware Supported: lulu v1 -* Hardware Availability: this keyboard is available from the [Boardsource store](https://boardsource.xyz/store/61d0b772319a1f3cc53ba2fb) +* Hardware Supported: lulu v1/v2, lily pad v2 +* Hardware Availability: this keyboard is available from the [Boardsource store](https://boardsource.xyz/products/lily-pad-pcb) Make example for this keyboard (after setting up your build environment): @@ -21,7 +21,7 @@ Flashing example for this keyboard: make boardsource/lulu/avr:default:flash -Compile `rp2040` firmware if you purchased PCB in lulu group buy (integrated microcontroller). +Compile `rp2040` firmware if you purchased PCB in lulu group buy or lily pad (integrated microcontroller). Compile `avr` firmware if your PCB uses a drop-in microcontroller like Pro Micro. From 5354ec57915d2a17f977583ff21ee8bfe3bf6747 Mon Sep 17 00:00:00 2001 From: timovp Date: Thu, 26 Jun 2025 09:19:42 +0200 Subject: [PATCH 022/167] fix order of code in tapdance example3 (#25410) --- docs/features/tap_dance.md | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/docs/features/tap_dance.md b/docs/features/tap_dance.md index 8fdd83c18d..d533e41aaa 100644 --- a/docs/features/tap_dance.md +++ b/docs/features/tap_dance.md @@ -170,20 +170,6 @@ typedef struct { uint16_t held; } tap_dance_tap_hold_t; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - tap_dance_action_t *action; - - switch (keycode) { - case TD(CT_CLN): // list all tap dance keycodes with tap-hold configurations - action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)]; - if (!record->event.pressed && action->state.count && !action->state.finished) { - tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data; - tap_code16(tap_hold->tap); - } - } - return true; -} - void tap_dance_tap_hold_finished(tap_dance_state_t *state, void *user_data) { tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data; @@ -211,12 +197,29 @@ void tap_dance_tap_hold_reset(tap_dance_state_t *state, void *user_data) { } } -#define ACTION_TAP_DANCE_TAP_HOLD(tap, hold) \ - { .fn = {NULL, tap_dance_tap_hold_finished, tap_dance_tap_hold_reset}, .user_data = (void *)&((tap_dance_tap_hold_t){tap, hold, 0}), } +#define ACTION_TAP_DANCE_TAP_HOLD(tap, hold) \ + { \ + .fn = {NULL, tap_dance_tap_hold_finished, tap_dance_tap_hold_reset}, \ + .user_data = (void *)&((tap_dance_tap_hold_t){tap, hold, 0}), \ + } tap_dance_action_t tap_dance_actions[] = { [CT_CLN] = ACTION_TAP_DANCE_TAP_HOLD(KC_COLN, KC_SCLN), }; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + tap_dance_action_t *action; + + switch (keycode) { + case TD(CT_CLN): // list all tap dance keycodes with tap-hold configurations + action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)]; + if (!record->event.pressed && action->state.count && !action->state.finished) { + tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data; + tap_code16(tap_hold->tap); + } + } + return true; +} ``` #### Example 4: 'Quad Function Tap-Dance' {#example-4} From e15d9ca4b3329c5c97f920547c086ad768ec3808 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 27 Jun 2025 06:49:26 +0100 Subject: [PATCH 023/167] Update link to AW20216S datasheet (#25416) --- docs/drivers/aw20216s.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/drivers/aw20216s.md b/docs/drivers/aw20216s.md index 36a6d63c33..042c8df129 100644 --- a/docs/drivers/aw20216s.md +++ b/docs/drivers/aw20216s.md @@ -2,7 +2,7 @@ SPI 18x12 LED matrix driver by Awinic. Supports a maximum of four drivers, each controlling up to 216 single-color LEDs, or 72 RGB LEDs. -[AW20216S Datasheet](https://doc.awinic.com/doc/20230609wm/b6a9c70b-e1bd-495b-925f-bcbed3fc2620.pdf) +[AW20216S Datasheet](https://doc.awinic.com/doc/202412/a055779b-49c0-4d09-8f04-73029f44b72b.pdf) ## Usage {#usage} From bc5c5e3251d019f3e070d7ea9e5c77501b25738d Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 27 Jun 2025 08:17:28 +0100 Subject: [PATCH 024/167] Align sleep_led logic (#25395) --- quantum/command.c | 5 ++++- quantum/quantum.c | 12 ++++++++++++ tmk_core/protocol/chibios/chibios.c | 3 --- tmk_core/protocol/chibios/usb_main.c | 12 ------------ tmk_core/protocol/lufa/lufa.c | 13 ------------- tmk_core/protocol/vusb/protocol.c | 24 ++---------------------- 6 files changed, 18 insertions(+), 51 deletions(-) diff --git a/quantum/command.c b/quantum/command.c index 998d9b9aa1..ea2fd68e2b 100644 --- a/quantum/command.c +++ b/quantum/command.c @@ -28,7 +28,6 @@ along with this program. If not, see . #include "action_layer.h" #include "action_util.h" #include "eeconfig.h" -#include "sleep_led.h" #include "led.h" #include "command.h" #include "quantum.h" @@ -39,6 +38,10 @@ along with this program. If not, see . # include "backlight.h" #endif +#ifdef SLEEP_LED_ENABLE +# include "sleep_led.h" +#endif + #if defined(MOUSEKEY_ENABLE) # include "mousekey.h" #endif diff --git a/quantum/quantum.c b/quantum/quantum.c index cc20c7db2b..09e5fe1dac 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -17,6 +17,10 @@ #include "quantum.h" #include "process_quantum.h" +#ifdef SLEEP_LED_ENABLE +# include "sleep_led.h" +#endif + #ifdef BACKLIGHT_ENABLE # include "process_backlight.h" #endif @@ -487,6 +491,10 @@ void suspend_power_down_quantum(void) { backlight_level_noeeprom(0); # endif +# ifdef SLEEP_LED_ENABLE + sleep_led_enable(); +# endif + # ifdef LED_MATRIX_ENABLE led_matrix_task(); # endif @@ -533,6 +541,10 @@ __attribute__((weak)) void suspend_wakeup_init_quantum(void) { backlight_init(); #endif +#ifdef SLEEP_LED_ENABLE + sleep_led_disable(); +#endif + // Restore LED indicators led_wakeup(); diff --git a/tmk_core/protocol/chibios/chibios.c b/tmk_core/protocol/chibios/chibios.c index 19d8121e34..5720bc3c4c 100644 --- a/tmk_core/protocol/chibios/chibios.c +++ b/tmk_core/protocol/chibios/chibios.c @@ -40,9 +40,6 @@ # define EARLY_INIT_PERFORM_BOOTLOADER_JUMP FALSE #endif -#ifdef SLEEP_LED_ENABLE -# include "sleep_led.h" -#endif #ifdef MIDI_ENABLE # include "qmk_midi.h" #endif diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c index f9d7f5c4d6..b798a8d1cb 100644 --- a/tmk_core/protocol/chibios/usb_main.c +++ b/tmk_core/protocol/chibios/usb_main.c @@ -21,10 +21,6 @@ #include "host.h" #include "suspend.h" #include "timer.h" -#ifdef SLEEP_LED_ENABLE -# include "sleep_led.h" -# include "led.h" -#endif #include "wait.h" #include "usb_endpoints.h" #include "usb_device_state.h" @@ -131,19 +127,11 @@ static inline bool usb_event_queue_dequeue(usbevent_t *event) { static inline void usb_event_suspend_handler(void) { usb_device_state_set_suspend(USB_DRIVER.configuration != 0, USB_DRIVER.configuration); -#ifdef SLEEP_LED_ENABLE - sleep_led_enable(); -#endif /* SLEEP_LED_ENABLE */ } static inline void usb_event_wakeup_handler(void) { suspend_wakeup_init(); usb_device_state_set_resume(USB_DRIVER.configuration != 0, USB_DRIVER.configuration); -#ifdef SLEEP_LED_ENABLE - sleep_led_disable(); - // NOTE: converters may not accept this - led_set(host_keyboard_leds()); -#endif /* SLEEP_LED_ENABLE */ } bool last_suspend_state = false; diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index d59468133c..e13f4b548e 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -44,9 +44,6 @@ #include "led.h" #include "sendchar.h" #include "debug.h" -#ifdef SLEEP_LED_ENABLE -# include "sleep_led.h" -#endif #include "suspend.h" #include "wait.h" @@ -278,10 +275,6 @@ void EVENT_USB_Device_Reset(void) { void EVENT_USB_Device_Suspend(void) { print("[S]"); usb_device_state_set_suspend(USB_Device_ConfigurationNumber != 0, USB_Device_ConfigurationNumber); - -#ifdef SLEEP_LED_ENABLE - sleep_led_enable(); -#endif } /** \brief Event USB Device Connect @@ -295,12 +288,6 @@ void EVENT_USB_Device_WakeUp(void) { #endif usb_device_state_set_resume(USB_DeviceState == DEVICE_STATE_Configured, USB_Device_ConfigurationNumber); - -#ifdef SLEEP_LED_ENABLE - sleep_led_disable(); - // NOTE: converters may not accept this - led_set(host_keyboard_leds()); -#endif } #ifdef CONSOLE_ENABLE diff --git a/tmk_core/protocol/vusb/protocol.c b/tmk_core/protocol/vusb/protocol.c index 41ccf451fd..e2d0c4112e 100644 --- a/tmk_core/protocol/vusb/protocol.c +++ b/tmk_core/protocol/vusb/protocol.c @@ -27,10 +27,6 @@ #include "wait.h" #include "sendchar.h" -#ifdef SLEEP_LED_ENABLE -# include "sleep_led.h" -#endif - /* This is from main.c of USBaspLoader */ static void initForUsbConnectivity(void) { uint8_t i = 0; @@ -64,22 +60,6 @@ static inline void vusb_send_remote_wakeup(void) { bool vusb_suspended = false; -static inline void vusb_suspend(void) { -#ifdef SLEEP_LED_ENABLE - sleep_led_enable(); -#endif - - suspend_power_down(); -} - -static inline void vusb_wakeup(void) { - suspend_wakeup_init(); - -#ifdef SLEEP_LED_ENABLE - sleep_led_disable(); -#endif -} - /** \brief Setup USB * * FIXME: Needs doc @@ -133,7 +113,7 @@ void protocol_pre_task(void) { if (should_do_suspend()) { dprintln("suspending keyboard"); while (should_do_suspend()) { - vusb_suspend(); + suspend_power_down(); if (suspend_wakeup_condition()) { vusb_send_remote_wakeup(); @@ -148,7 +128,7 @@ void protocol_pre_task(void) { # endif } } - vusb_wakeup(); + suspend_wakeup_init(); } #endif } From a1a5869ef871937c2ae7646ab639c4f5ffe59355 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 27 Jun 2025 08:17:45 +0100 Subject: [PATCH 025/167] Add MATRIX_MASKED DD config (#25383) --- data/mappings/info_config.hjson | 1 + data/schemas/keyboard.jsonschema | 1 + docs/reference_info_json.md | 3 +++ lib/python/qmk/cli/generate/config_h.py | 15 --------------- lib/python/qmk/info.py | 20 ++++++++++++++++++++ 5 files changed, 25 insertions(+), 15 deletions(-) diff --git a/data/mappings/info_config.hjson b/data/mappings/info_config.hjson index e4def1a4d7..356dd6ba52 100644 --- a/data/mappings/info_config.hjson +++ b/data/mappings/info_config.hjson @@ -120,6 +120,7 @@ "MATRIX_HAS_GHOST": {"info_key": "matrix_pins.ghost", "value_type": "flag"}, "MATRIX_INPUT_PRESSED_STATE": {"info_key": "matrix_pins.input_pressed_state", "value_type": "int"}, "MATRIX_IO_DELAY": {"info_key": "matrix_pins.io_delay", "value_type": "int"}, + "MATRIX_MASKED": {"info_key": "matrix_pins.masked", "value_type": "flag"}, // Mouse Keys "MOUSEKEY_DELAY": {"info_key": "mousekey.delay", "value_type": "int"}, diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index 3aa259605e..13ceec5afa 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -473,6 +473,7 @@ "ghost": {"type": "boolean"}, "input_pressed_state": {"$ref": "./definitions.jsonschema#/unsigned_int"}, "io_delay": {"$ref": "./definitions.jsonschema#/unsigned_int"}, + "masked": {"type": "boolean"}, "direct": { "type": "array", "items": {"$ref": "./definitions.jsonschema#/mcu_pin_array"} diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md index a64f2992b5..71d1c5c865 100644 --- a/docs/reference_info_json.md +++ b/docs/reference_info_json.md @@ -480,6 +480,9 @@ Configures the [LED Matrix](features/led_matrix) feature. * `io_delay` Number * The amount of time to wait between row/col selection and col/row pin reading, in microseconds. * Default: `30` (30 µs) + * `masked` Boolean + * Whether configured intersections should be ignored. + * Default: `false` * `rows` Array: Pin * A list of GPIO pins connected to the matrix rows. * Example: `["B0", "B1", "B2"]` diff --git a/lib/python/qmk/cli/generate/config_h.py b/lib/python/qmk/cli/generate/config_h.py index d613f7b92c..d6d0299291 100755 --- a/lib/python/qmk/cli/generate/config_h.py +++ b/lib/python/qmk/cli/generate/config_h.py @@ -72,19 +72,6 @@ def generate_matrix_size(kb_info_json, config_h_lines): config_h_lines.append(generate_define('MATRIX_ROWS', kb_info_json['matrix_size']['rows'])) -def generate_matrix_masked(kb_info_json, config_h_lines): - """"Enable matrix mask if required""" - mask_required = False - - if 'matrix_grid' in kb_info_json.get('dip_switch', {}): - mask_required = True - if 'matrix_grid' in kb_info_json.get('split', {}).get('handedness', {}): - mask_required = True - - if mask_required: - config_h_lines.append(generate_define('MATRIX_MASKED')) - - def generate_config_items(kb_info_json, config_h_lines): """Iterate through the info_config map to generate basic config values. """ @@ -202,8 +189,6 @@ def generate_config_h(cli): generate_matrix_size(kb_info_json, config_h_lines) - generate_matrix_masked(kb_info_json, config_h_lines) - if 'matrix_pins' in kb_info_json: config_h_lines.append(matrix_pins(kb_info_json['matrix_pins'])) diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index db8a02d132..b4fa481b1b 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -254,6 +254,7 @@ def info_json(keyboard, force_layout=None): # Ensure that we have various calculated values info_data = _matrix_size(info_data) info_data = _joystick_axis_count(info_data) + info_data = _matrix_masked(info_data) # Merge in data from info_data = _extract_led_config(info_data, str(keyboard)) @@ -830,6 +831,25 @@ def _joystick_axis_count(info_data): return info_data +def _matrix_masked(info_data): + """"Add info_data['matrix_pins.masked'] if required""" + mask_required = False + + if 'matrix_grid' in info_data.get('dip_switch', {}): + mask_required = True + if 'matrix_grid' in info_data.get('split', {}).get('handedness', {}): + mask_required = True + + if mask_required: + if 'masked' not in info_data.get('matrix_pins', {}): + if 'matrix_pins' not in info_data: + info_data['matrix_pins'] = {} + + info_data['matrix_pins']['masked'] = True + + return info_data + + def _check_matrix(info_data): """Check the matrix to ensure that row/column count is consistent. """ From 21ca1eb7aefaec962057185b7903897824604c17 Mon Sep 17 00:00:00 2001 From: Less/Rikki <86894501+lesshonor@users.noreply.github.com> Date: Fri, 27 Jun 2025 15:04:52 -0400 Subject: [PATCH 026/167] refactor(mercutio): layouts & reformatting (#25408) --- keyboards/mechwild/mercutio/keyboard.json | 339 ++++++++++++++++-- .../mercutio/keymaps/default/keymap.c | 24 +- .../keymaps/default_625u_space/keymap.c | 10 +- 3 files changed, 318 insertions(+), 55 deletions(-) diff --git a/keyboards/mechwild/mercutio/keyboard.json b/keyboards/mechwild/mercutio/keyboard.json index d0b7d51029..58ff0b216e 100644 --- a/keyboards/mechwild/mercutio/keyboard.json +++ b/keyboards/mechwild/mercutio/keyboard.json @@ -1,12 +1,14 @@ { - "keyboard_name": "Mercutio", "manufacturer": "MechWild", - "url": "mechwild.com", + "keyboard_name": "Mercutio", "maintainer": "kylemccreery", - "usb": { - "vid": "0x6D77", - "pid": "0x1703", - "device_version": "1.0.0" + "bootloader": "usbasploader", + "bootloader_instructions": "Hold down the BOOT button, then tap the RESET button.", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "B4", "pin_b": "B5"} + ] }, "features": { "bootmagic": true, @@ -20,26 +22,72 @@ "cols": ["B0", "D7", "D6", "D5", "B1", "B2", "B3"], "rows": ["D0", "D1", "D4", "C3", "C0", "C1", "C2"] }, - "diode_direction": "COL2ROW", - "encoder": { - "rotary": [ - {"pin_a": "B4", "pin_b": "B5"} - ] - }, + "processor": "atmega328p", "qmk": { - "tap_keycode_delay": 10, "locking": { "enabled": true, "resync": true - } + }, + "tap_keycode_delay": 10 + }, + "url": "https://mechwild.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x1703", + "vid": "0x6D77" }, - "processor": "atmega328p", - "bootloader": "usbasploader", "layouts": { - "LAYOUT_all": { + "LAYOUT_625u_space": { "layout": [ - {"label": "Mute", "matrix": [4, 2], "x": 12, "y": 0}, - + {"label": "Mute", "matrix": [4, 2], "x": 12, "y": 0, "encoder": 0}, + {"label": "Tab", "matrix": [0, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [0, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [0, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [0, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [0, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [0, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [0, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [4, 6], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [4, 5], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [4, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [4, 3], "x": 10.5, "y": 1}, + {"label": "Backspace", "matrix": [5, 2], "x": 11.5, "y": 1, "w": 1.5}, + {"label": "Fn", "matrix": [1, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [1, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [1, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [1, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [1, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [1, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [1, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 6], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [5, 5], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": "'", "matrix": [4, 1], "x": 10.75, "y": 2}, + {"label": "Enter", "matrix": [5, 3], "x": 11.75, "y": 2, "w": 1.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "/", "matrix": [2, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [2, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [2, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [2, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [2, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [6, 6], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 5], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [6, 4], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [6, 3], "x": 10.25, "y": 3}, + {"label": "Shift", "matrix": [6, 2], "x": 11.25, "y": 3, "w": 1.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.25, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [3, 5], "x": 3.25, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [3, 3], "x": 9.5, "y": 4, "w": 1.25}, + {"label": "Fn2", "matrix": [3, 2], "x": 10.75, "y": 4}, + {"label": "Ctrl", "matrix": [2, 2], "x": 11.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "Mute", "matrix": [4, 2], "x": 12, "y": 0, "encoder": 0}, {"label": "Tab", "matrix": [0, 0], "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "matrix": [0, 1], "x": 1.5, "y": 1}, {"label": "W", "matrix": [0, 2], "x": 2.5, "y": 1}, @@ -52,7 +100,6 @@ {"label": "O", "matrix": [4, 4], "x": 9.5, "y": 1}, {"label": "P", "matrix": [4, 3], "x": 10.5, "y": 1}, {"label": "Backspace", "matrix": [5, 2], "x": 11.5, "y": 1, "w": 1.5}, - {"label": "Fn", "matrix": [1, 0], "x": 0, "y": 2, "w": 1.75}, {"label": "A", "matrix": [1, 1], "x": 1.75, "y": 2}, {"label": "S", "matrix": [1, 2], "x": 2.75, "y": 2}, @@ -65,7 +112,6 @@ {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, {"label": "'", "matrix": [4, 1], "x": 10.75, "y": 2}, {"label": "Enter", "matrix": [5, 3], "x": 11.75, "y": 2, "w": 1.25}, - {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, {"label": "/", "matrix": [2, 1], "x": 1.25, "y": 3}, {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, @@ -78,7 +124,6 @@ {"label": ",", "matrix": [6, 4], "x": 9.25, "y": 3}, {"label": ".", "matrix": [6, 3], "x": 10.25, "y": 3}, {"label": "Shift", "matrix": [6, 2], "x": 11.25, "y": 3, "w": 1.75}, - {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.25}, {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 4}, {"label": "Alt", "matrix": [3, 1], "x": 2.25, "y": 4, "w": 1.25}, @@ -90,10 +135,9 @@ {"label": "Ctrl", "matrix": [2, 2], "x": 11.75, "y": 4, "w": 1.25} ] }, - "LAYOUT_625u_space": { + "LAYOUT_full_enter": { "layout": [ - {"label": "Mute", "matrix": [4, 2], "x": 12, "y": 0}, - + {"label": "Mute", "matrix": [4, 2], "x": 12, "y": 0, "encoder": 0}, {"label": "Tab", "matrix": [0, 0], "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "matrix": [0, 1], "x": 1.5, "y": 1}, {"label": "W", "matrix": [0, 2], "x": 2.5, "y": 1}, @@ -106,7 +150,6 @@ {"label": "O", "matrix": [4, 4], "x": 9.5, "y": 1}, {"label": "P", "matrix": [4, 3], "x": 10.5, "y": 1}, {"label": "Backspace", "matrix": [5, 2], "x": 11.5, "y": 1, "w": 1.5}, - {"label": "Fn", "matrix": [1, 0], "x": 0, "y": 2, "w": 1.75}, {"label": "A", "matrix": [1, 1], "x": 1.75, "y": 2}, {"label": "S", "matrix": [1, 2], "x": 2.75, "y": 2}, @@ -117,9 +160,56 @@ {"label": "J", "matrix": [5, 6], "x": 7.75, "y": 2}, {"label": "K", "matrix": [5, 5], "x": 8.75, "y": 2}, {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, - {"label": "'", "matrix": [4, 1], "x": 10.75, "y": 2}, - {"label": "Enter", "matrix": [5, 3], "x": 11.75, "y": 2, "w": 1.25}, - + {"label": "Enter", "matrix": [5, 3], "x": 10.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "/", "matrix": [2, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [2, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [2, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [2, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [2, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [6, 6], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 5], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [6, 4], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [6, 3], "x": 10.25, "y": 3}, + {"label": "Shift", "matrix": [6, 2], "x": 11.25, "y": 3, "w": 1.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.25, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [3, 4], "x": 3.5, "y": 4, "w": 2.25}, + {"label": "Space", "matrix": [3, 5], "x": 5.75, "y": 4}, + {"label": "Space", "matrix": [3, 6], "x": 6.75, "y": 4, "w": 2.75}, + {"label": "Alt", "matrix": [3, 3], "x": 9.5, "y": 4, "w": 1.25}, + {"label": "Fn2", "matrix": [3, 2], "x": 10.75, "y": 4}, + {"label": "Ctrl", "matrix": [2, 2], "x": 11.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_full_enter_625u_space": { + "layout": [ + {"label": "Mute", "matrix": [4, 2], "x": 12, "y": 0, "encoder": 0}, + {"label": "Tab", "matrix": [0, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [0, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [0, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [0, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [0, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [0, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [0, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [4, 6], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [4, 5], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [4, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [4, 3], "x": 10.5, "y": 1}, + {"label": "Backspace", "matrix": [5, 2], "x": 11.5, "y": 1, "w": 1.5}, + {"label": "Fn", "matrix": [1, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [1, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [1, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [1, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [1, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [1, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [1, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 6], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [5, 5], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": "Enter", "matrix": [5, 3], "x": 10.75, "y": 2, "w": 2.25}, {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 1.25}, {"label": "/", "matrix": [2, 1], "x": 1.25, "y": 3}, {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, @@ -132,7 +222,6 @@ {"label": ",", "matrix": [6, 4], "x": 9.25, "y": 3}, {"label": ".", "matrix": [6, 3], "x": 10.25, "y": 3}, {"label": "Shift", "matrix": [6, 2], "x": 11.25, "y": 3, "w": 1.75}, - {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.25}, {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 4}, {"label": "Alt", "matrix": [3, 1], "x": 2.25, "y": 4}, @@ -141,6 +230,196 @@ {"label": "Fn2", "matrix": [3, 2], "x": 10.75, "y": 4}, {"label": "Ctrl", "matrix": [2, 2], "x": 11.75, "y": 4, "w": 1.25} ] + }, + "LAYOUT_full_enter_full_lshift_625u_space": { + "layout": [ + {"label": "Mute", "matrix": [4, 2], "x": 12, "y": 0, "encoder": 0}, + {"label": "Tab", "matrix": [0, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [0, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [0, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [0, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [0, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [0, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [0, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [4, 6], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [4, 5], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [4, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [4, 3], "x": 10.5, "y": 1}, + {"label": "Backspace", "matrix": [5, 2], "x": 11.5, "y": 1, "w": 1.5}, + {"label": "Fn", "matrix": [1, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [1, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [1, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [1, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [1, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [1, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [1, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 6], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [5, 5], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": "Enter", "matrix": [5, 3], "x": 10.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [2, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [2, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [2, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [2, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [6, 6], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 5], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [6, 4], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [6, 3], "x": 10.25, "y": 3}, + {"label": "Shift", "matrix": [6, 2], "x": 11.25, "y": 3, "w": 1.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.25, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [3, 5], "x": 3.25, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [3, 3], "x": 9.5, "y": 4, "w": 1.25}, + {"label": "Fn2", "matrix": [3, 2], "x": 10.75, "y": 4}, + {"label": "Ctrl", "matrix": [2, 2], "x": 11.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_full_lshift": { + "layout": [ + {"label": "Mute", "matrix": [4, 2], "x": 12, "y": 0, "encoder": 0}, + {"label": "Tab", "matrix": [0, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [0, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [0, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [0, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [0, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [0, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [0, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [4, 6], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [4, 5], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [4, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [4, 3], "x": 10.5, "y": 1}, + {"label": "Backspace", "matrix": [5, 2], "x": 11.5, "y": 1, "w": 1.5}, + {"label": "Fn", "matrix": [1, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [1, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [1, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [1, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [1, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [1, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [1, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 6], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [5, 5], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": "'", "matrix": [4, 1], "x": 10.75, "y": 2}, + {"label": "Enter", "matrix": [5, 3], "x": 11.75, "y": 2, "w": 1.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [2, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [2, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [2, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [2, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [6, 6], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 5], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [6, 4], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [6, 3], "x": 10.25, "y": 3}, + {"label": "Shift", "matrix": [6, 2], "x": 11.25, "y": 3, "w": 1.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.25, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [3, 4], "x": 3.5, "y": 4, "w": 2.25}, + {"label": "Space", "matrix": [3, 5], "x": 5.75, "y": 4}, + {"label": "Space", "matrix": [3, 6], "x": 6.75, "y": 4, "w": 2.75}, + {"label": "Alt", "matrix": [3, 3], "x": 9.5, "y": 4, "w": 1.25}, + {"label": "Fn2", "matrix": [3, 2], "x": 10.75, "y": 4}, + {"label": "Ctrl", "matrix": [2, 2], "x": 11.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_full_lshift_625u_space": { + "layout": [ + {"label": "Mute", "matrix": [4, 2], "x": 12, "y": 0, "encoder": 0}, + {"label": "Tab", "matrix": [0, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [0, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [0, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [0, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [0, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [0, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [0, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [4, 6], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [4, 5], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [4, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [4, 3], "x": 10.5, "y": 1}, + {"label": "Backspace", "matrix": [5, 2], "x": 11.5, "y": 1, "w": 1.5}, + {"label": "Fn", "matrix": [1, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [1, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [1, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [1, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [1, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [1, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [1, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 6], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [5, 5], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": "'", "matrix": [4, 1], "x": 10.75, "y": 2}, + {"label": "Enter", "matrix": [5, 3], "x": 11.75, "y": 2, "w": 1.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [2, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [2, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [2, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [2, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [6, 6], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 5], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [6, 4], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [6, 3], "x": 10.25, "y": 3}, + {"label": "Shift", "matrix": [6, 2], "x": 11.25, "y": 3, "w": 1.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.25, "y": 4}, + {"label": "Space", "matrix": [3, 5], "x": 3.25, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [3, 3], "x": 9.5, "y": 4, "w": 1.25}, + {"label": "Fn2", "matrix": [3, 2], "x": 10.75, "y": 4}, + {"label": "Ctrl", "matrix": [2, 2], "x": 11.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_full_lshift_full_enter": { + "layout": [ + {"label": "Mute", "matrix": [4, 2], "x": 12, "y": 0, "encoder": 0}, + {"label": "Tab", "matrix": [0, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [0, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [0, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [0, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [0, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [0, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [0, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [4, 6], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [4, 5], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [4, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [4, 3], "x": 10.5, "y": 1}, + {"label": "Backspace", "matrix": [5, 2], "x": 11.5, "y": 1, "w": 1.5}, + {"label": "Fn", "matrix": [1, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [1, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [1, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [1, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [1, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [1, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [1, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 6], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [5, 5], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": "Enter", "matrix": [5, 3], "x": 10.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [2, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [2, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [2, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [2, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [6, 6], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 5], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [6, 4], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [6, 3], "x": 10.25, "y": 3}, + {"label": "Shift", "matrix": [6, 2], "x": 11.25, "y": 3, "w": 1.75}, + {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 4}, + {"label": "Alt", "matrix": [3, 1], "x": 2.25, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [3, 4], "x": 3.5, "y": 4, "w": 2.25}, + {"label": "Space", "matrix": [3, 5], "x": 5.75, "y": 4}, + {"label": "Space", "matrix": [3, 6], "x": 6.75, "y": 4, "w": 2.75}, + {"label": "Alt", "matrix": [3, 3], "x": 9.5, "y": 4, "w": 1.25}, + {"label": "Fn2", "matrix": [3, 2], "x": 10.75, "y": 4}, + {"label": "Ctrl", "matrix": [2, 2], "x": 11.75, "y": 4, "w": 1.25} + ] } } } diff --git a/keyboards/mechwild/mercutio/keymaps/default/keymap.c b/keyboards/mechwild/mercutio/keymaps/default/keymap.c index 9d5d174c60..bf6b96b8be 100644 --- a/keyboards/mechwild/mercutio/keymaps/default/keymap.c +++ b/keyboards/mechwild/mercutio/keymaps/default/keymap.c @@ -26,24 +26,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT_all( KC_TRNS, - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - KC_TRNS, KC_TRNS, KC_GRV, KC_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_TRNS, KC_QUOT, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_SLSH, KC_UP, - KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_END, KC_LEFT, KC_DOWN, KC_RIGHT ), + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_TRNS, KC_TRNS, KC_GRV, KC_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_TRNS, KC_QUOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_SLSH, KC_UP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_END, KC_LEFT, KC_DOWN, KC_RIGHT ), [2] = LAYOUT_all( KC_TRNS, - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, - KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_all( - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; #ifdef ENCODER_MAP_ENABLE @@ -51,6 +44,5 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, - [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, }; #endif diff --git a/keyboards/mechwild/mercutio/keymaps/default_625u_space/keymap.c b/keyboards/mechwild/mercutio/keymaps/default_625u_space/keymap.c index a4cd13134c..b76479a5b9 100644 --- a/keyboards/mechwild/mercutio/keymaps/default_625u_space/keymap.c +++ b/keyboards/mechwild/mercutio/keymaps/default_625u_space/keymap.c @@ -36,13 +36,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______ ), - - [3] = LAYOUT_625u_space( - _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; @@ -50,7 +43,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, [1] = { ENCODER_CCW_CW(_______, _______) }, - [2] = { ENCODER_CCW_CW(_______, _______) }, - [3] = { ENCODER_CCW_CW(_______, _______) }, + [2] = { ENCODER_CCW_CW(_______, _______) } }; #endif From 6e55870a82e8cfecd379242fd58829b37fa8ffa4 Mon Sep 17 00:00:00 2001 From: Andrew Litt Date: Fri, 27 Jun 2025 14:11:43 -0500 Subject: [PATCH 027/167] `inland/kb83`: Remove unnecessary EEPROM write (#25401) There's no reason to save the base layer to EEPROM when the base layer is set based on DIP switch. --- keyboards/inland/kb83/kb83.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/keyboards/inland/kb83/kb83.c b/keyboards/inland/kb83/kb83.c index 41a3ad8df7..07d8bdbdb4 100644 --- a/keyboards/inland/kb83/kb83.c +++ b/keyboards/inland/kb83/kb83.c @@ -313,11 +313,7 @@ bool dip_switch_update_kb(uint8_t index, bool active) { return false; } if (index == 0) { - default_layer_set(1UL << (active ? 2 : 0)); - } - if(active){ - keymap_config.no_gui = 0; - eeconfig_update_keymap(&keymap_config); + default_layer_set(1UL << (active ? MAC_B : WIN_B)); } return true; } From 4ae2b4f371f6ed4a8b35a55ff6a244645c28e612 Mon Sep 17 00:00:00 2001 From: Thanh Son Tran <62438883+trnthsn@users.noreply.github.com> Date: Sat, 28 Jun 2025 03:00:50 +0700 Subject: [PATCH 028/167] [Keyboard] Add support S6xty Tsangan (#24898) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update support S6xty5 * Delete chconf.h * Update manufacturer, community layout for hhkb * Update layout * fix row index * Update tyson60s * Update community layout and layout name * Update remove rgb test mode * Update capslock led * Apply suggestions from code review Co-authored-by: Duncan Sutherland * Remove deprecated s6xty5 * Update support S6xty Tsangan * Update pinout config * Update render * Update default animation * Update layout * Update keymap keycode * Update hardware supported * Update keyboard.json * Update layout s6xty tsangan * Update led indicator for s6xtyfs * Apply suggestions from code review Co-authored-by: Duncan Sutherland --------- Co-authored-by: Trần Thanh Sơn Co-authored-by: Duncan Sutherland --- keyboards/trnthsn/s6xtyfs/config.h | 23 + keyboards/trnthsn/s6xtyfs/halconf.h | 22 + keyboards/trnthsn/s6xtyfs/info.json | 742 ++++++++++++++++++ .../trnthsn/s6xtyfs/keymaps/default/keymap.c | 40 + keyboards/trnthsn/s6xtyfs/mcuconf.h | 23 + keyboards/trnthsn/s6xtyfs/readme.md | 27 + keyboards/trnthsn/s6xtyfs/s6xtyfs.c | 24 + .../trnthsn/s6xtyfs/stm32f072/keyboard.json | 4 + .../trnthsn/s6xtyfs/stm32f103/keyboard.json | 4 + 9 files changed, 909 insertions(+) create mode 100644 keyboards/trnthsn/s6xtyfs/config.h create mode 100644 keyboards/trnthsn/s6xtyfs/halconf.h create mode 100644 keyboards/trnthsn/s6xtyfs/info.json create mode 100644 keyboards/trnthsn/s6xtyfs/keymaps/default/keymap.c create mode 100644 keyboards/trnthsn/s6xtyfs/mcuconf.h create mode 100644 keyboards/trnthsn/s6xtyfs/readme.md create mode 100644 keyboards/trnthsn/s6xtyfs/s6xtyfs.c create mode 100644 keyboards/trnthsn/s6xtyfs/stm32f072/keyboard.json create mode 100644 keyboards/trnthsn/s6xtyfs/stm32f103/keyboard.json diff --git a/keyboards/trnthsn/s6xtyfs/config.h b/keyboards/trnthsn/s6xtyfs/config.h new file mode 100644 index 0000000000..5e5c1eb155 --- /dev/null +++ b/keyboards/trnthsn/s6xtyfs/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2025 Tyson.Keebs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define WS2812_SPI_DRIVER SPID2 +#define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/trnthsn/s6xtyfs/halconf.h b/keyboards/trnthsn/s6xtyfs/halconf.h new file mode 100644 index 0000000000..737b1927a3 --- /dev/null +++ b/keyboards/trnthsn/s6xtyfs/halconf.h @@ -0,0 +1,22 @@ +/* +Copyright 2025 Tyson.Keebs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/trnthsn/s6xtyfs/info.json b/keyboards/trnthsn/s6xtyfs/info.json new file mode 100644 index 0000000000..132c1a4e97 --- /dev/null +++ b/keyboards/trnthsn/s6xtyfs/info.json @@ -0,0 +1,742 @@ +{ + "manufacturer": "Tyson.Keebs", + "keyboard_name": "S6xty Tsangan", + "maintainer": "trnthsn", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "indicators": { + "caps_lock": "B0" + }, + "matrix_pins": { + "cols": ["A10", "A9", "A8", "B14", "B12", "A6", "B9", "B8", "B7", "B6", "B5", "B4", "B3", "A15"], + "rows": ["C13", "C14", "C15", "A1", "B1"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "default": { + "animation": "rainbow_swirl" + }, + "layers": { + "enabled": true, + "override_rgb": false + }, + "led_count": 28, + "sleep": true + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x3666", + "vid": "0x5453" + }, + "ws2812": { + "driver": "spi", + "pin": "B15" + }, + "community_layouts": ["60_ansi_tsangan", "60_ansi_tsangan_split_bs_rshift", "60_ansi_wkl", "60_ansi_wkl_split_bs_rshift", "60_hhkb", "60_iso_tsangan", "60_iso_tsangan_split_bs_rshift", "60_iso_wkl", "60_iso_wkl_split_bs_rshift"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [2, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 0, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [2, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [2, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [2, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h":2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [2, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h":2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h":2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [2, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h":2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/trnthsn/s6xtyfs/keymaps/default/keymap.c b/keyboards/trnthsn/s6xtyfs/keymaps/default/keymap.c new file mode 100644 index 0000000000..ecddf112d2 --- /dev/null +++ b/keyboards/trnthsn/s6xtyfs/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +// Copyright 2025 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│ + // ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + // │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ + // ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤ + // │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Ent │ + // ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ + // │Sft │Sft│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Fn │ + // ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ + // │Ctrl │Win│Alt │ │Alt │Win│Ctrl │ + // └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_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_RALT, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, UG_NEXT, UG_VALD, UG_VALU, KC_PSCR, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + MO(2) , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/trnthsn/s6xtyfs/mcuconf.h b/keyboards/trnthsn/s6xtyfs/mcuconf.h new file mode 100644 index 0000000000..03624a3d2f --- /dev/null +++ b/keyboards/trnthsn/s6xtyfs/mcuconf.h @@ -0,0 +1,23 @@ +/* +Copyright 2025 Tyson.Keebs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include_next + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/trnthsn/s6xtyfs/readme.md b/keyboards/trnthsn/s6xtyfs/readme.md new file mode 100644 index 0000000000..be888ece75 --- /dev/null +++ b/keyboards/trnthsn/s6xtyfs/readme.md @@ -0,0 +1,27 @@ +# S6xty Tsangan + +![S6xtyfs](https://i.imgur.com/uS2Okww.png) + +A 60% keyboard PCB. Supports multiple layout such as split backspace, split shift, iso. + +* Keyboard Maintainer: [Trnthsn](https://github.com/trnthsn) +* Hardware Supported: STM32, S6xtyfs +* Hardware Availability: [ThanhSon.Mech](https://www.facebook.com/ThanhSon.mech) + +Make example for this keyboard (after setting up your build environment): + + make trnthsn/s6xtyfs/stm32f103:default + +Flashing example for this keyboard: + + make trnthsn/s6xtyfs/stm32f103:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/trnthsn/s6xtyfs/s6xtyfs.c b/keyboards/trnthsn/s6xtyfs/s6xtyfs.c new file mode 100644 index 0000000000..9a9df177b9 --- /dev/null +++ b/keyboards/trnthsn/s6xtyfs/s6xtyfs.c @@ -0,0 +1,24 @@ +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#include "quantum.h" + +#ifdef RGBLIGHT_ENABLE +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {5, 2, HSV_WHITE} +); +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_capslock_layer +); + +void keyboard_post_init_kb(void) { + rgblight_layers = my_rgb_layers; + keyboard_post_init_user(); +} +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if (res) { + rgblight_set_layer_state(0, led_state.caps_lock); + } + return res; +} +#endif diff --git a/keyboards/trnthsn/s6xtyfs/stm32f072/keyboard.json b/keyboards/trnthsn/s6xtyfs/stm32f072/keyboard.json new file mode 100644 index 0000000000..8bba6f5d5d --- /dev/null +++ b/keyboards/trnthsn/s6xtyfs/stm32f072/keyboard.json @@ -0,0 +1,4 @@ +{ + "processor": "STM32F072", + "bootloader": "stm32-dfu" +} diff --git a/keyboards/trnthsn/s6xtyfs/stm32f103/keyboard.json b/keyboards/trnthsn/s6xtyfs/stm32f103/keyboard.json new file mode 100644 index 0000000000..4dc77604c4 --- /dev/null +++ b/keyboards/trnthsn/s6xtyfs/stm32f103/keyboard.json @@ -0,0 +1,4 @@ +{ + "processor": "STM32F103", + "bootloader": "uf2boot" +} From 89e39b98587f9d12d3b4b6659c7655df63b8633b Mon Sep 17 00:00:00 2001 From: Peter Cock Date: Sat, 28 Jun 2025 05:23:05 +0900 Subject: [PATCH 029/167] [Docs] Link to `awesome-qmk` userspaces repository (#25357) * Fix link - users folder now empty on default branch * Point at drashna/qmk_userspace repo * Link to awesome-qmk instead --- docs/feature_userspace.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/feature_userspace.md b/docs/feature_userspace.md index d19b86cb46..0f5c4a5f96 100644 --- a/docs/feature_userspace.md +++ b/docs/feature_userspace.md @@ -119,7 +119,7 @@ This is ideal for when you want ensure everything compiles successfully when pre ## Examples For a brief example, checkout [`/users/_example/`](https://github.com/qmk/qmk_firmware/tree/master/users/_example). -For a more complicated example, checkout [`/users/drashna/`](https://github.com/qmk/qmk_firmware/tree/master/users/drashna)'s userspace. +For more complicated examples, checkout the [`awesome-qmk` colletion](https://github.com/qmk/awesome-qmk). ### Customized Functions From 5b0039aae60b97dad7a07f80e3ed2f60fe3bb45c Mon Sep 17 00:00:00 2001 From: Grigory Avdyushin Date: Fri, 27 Jun 2025 22:31:09 +0200 Subject: [PATCH 030/167] Update franky36 VID/PID (#25160) * Update franky36 pid and vid * Update keyboard.json --- keyboards/handwired/franky36/keyboard.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/handwired/franky36/keyboard.json b/keyboards/handwired/franky36/keyboard.json index 038fc1eb67..871e6abf9d 100644 --- a/keyboards/handwired/franky36/keyboard.json +++ b/keyboards/handwired/franky36/keyboard.json @@ -23,8 +23,8 @@ "url": "https://github.com/avdyushin/franky36", "usb": { "device_version": "0.2.0", - "pid": "0x0001", - "vid": "0xFEED" + "pid": "0x3336", + "vid": "0x1209" }, "community_layouts": ["split_3x5_3"], "layouts": { From 36636205ddc835a6bb6f630179cd9395ea8b0689 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 28 Jun 2025 12:44:24 +1000 Subject: [PATCH 031/167] Clean up mod & mod-tap shortcuts (#25399) --- docs/feature_advanced_keycodes.md | 55 +++++++------ docs/keycodes.md | 110 +++++++++++++++----------- docs/mod_tap.md | 55 +++++++------ quantum/quantum_keycodes.h | 124 ++++++++++++++++++------------ quantum/quantum_keycodes_legacy.h | 2 + 5 files changed, 206 insertions(+), 140 deletions(-) diff --git a/docs/feature_advanced_keycodes.md b/docs/feature_advanced_keycodes.md index 18740044f4..b21accd367 100644 --- a/docs/feature_advanced_keycodes.md +++ b/docs/feature_advanced_keycodes.md @@ -2,29 +2,40 @@ These allow you to combine a modifier with a keycode. When pressed, the keydown event for the modifier, then `kc` will be sent. On release, the keyup event for `kc`, then the modifier will be sent. -|Key |Aliases |Description | -|----------|----------------------------------|------------------------------------------------------| -|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` | -|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` | -|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` | -|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)` |Hold Left GUI and press `kc` | -|`RCTL(kc)`| |Hold Right Control and press `kc` | -|`RSFT(kc)`| |Hold Right Shift and press `kc` | -|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` | -|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` | -|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and GUI and press `kc` | -|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` | -|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` | -|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` | -|`LCA(kc)` | |Hold Left Control and Alt and press `kc` | -|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` | -|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt (AltGr) and press `kc` | -|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` | -|`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` | -|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` | -|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc` | +|Key |Aliases |Description | +|----------|----------------------------------|-------------------------------------------------------------------------------| +|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` | +|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` | +|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` | +|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)` |Hold Left GUI and press `kc` | +|`LCS(kc)` | |Hold Left Control and Left Shift and press `kc` | +|`LCA(kc)` | |Hold Left Control and Left Alt and press `kc` | +|`LCG(kc)` | |Hold Left Control and Left GUI and press `kc` | +|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` | +|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and Left GUI and press `kc` | +|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` | +|`LCSG(kc)`| |Hold Left Control, Left Shift and Left GUI and press `kc` | +|`LCAG(kc)`| |Hold Left Control, Left Alt and Left GUI and press `kc` | +|`LSAG(kc)`| |Hold Left Shift, Left Alt and Left GUI and press `kc` | +|`RCTL(kc)`| |Hold Right Control and press `kc` | +|`RSFT(kc)`| |Hold Right Shift and press `kc` | +|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` | +|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` | +|`RCA(kc)` | |Hold Right Control and Right Alt and press `kc` | +|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` | +|`RCG(kc)` | |Hold Right Control and Right GUI and press `kc` | +|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt and press `kc` | +|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` | +|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` | +|`RCSG(kc)`| |Hold Right Control, Right Shift and Right GUI and press `kc` | +|`RCAG(kc)`| |Hold Right Control, Right Alt and Right GUI and press `kc` | +|`RSAG(kc)`| |Hold Right Shift, Right Alt and Right GUI and press `kc` | +|`MEH(kc)` | |Hold Left Control, Left Shift and Left Alt and press `kc` | +|`HYPR(kc)`| |Hold Left Control, Left Shift, Left Alt and Left GUI and press `kc`1| -You can also chain them, for example `LCTL(LALT(KC_DEL))` or `C(A(KC_DEL))` makes a key that sends Control+Alt+Delete with a single keypress. +1. More information on the Hyper key can be found on [this blog post by Brett Terpstra](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/). + +You can also chain them, for example `LCTL(LALT(KC_DEL))`, `C(A(KC_DEL))`, or `LCA(KC_DEL)` all make a key that sends Control+Alt+Delete with a single keypress. # Checking Modifier State {#checking-modifier-state} diff --git a/docs/keycodes.md b/docs/keycodes.md index 891a4f6f17..5d983e347e 100644 --- a/docs/keycodes.md +++ b/docs/keycodes.md @@ -658,58 +658,74 @@ See also: [Mouse Keys](features/mouse_keys) See also: [Modifier Keys](feature_advanced_keycodes#modifier-keys) -|Key |Aliases |Description | -|----------|----------------------------------|------------------------------------------------------| -|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` | -|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` | -|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` | -|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)` |Hold Left GUI and press `kc` | -|`RCTL(kc)`| |Hold Right Control and press `kc` | -|`RSFT(kc)`| |Hold Right Shift and press `kc` | -|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt (AltGr) and press `kc` | -|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` | -|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and Left GUI and press `kc` | -|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` | -|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` | -|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` | -|`LCA(kc)` | |Hold Left Control and Alt and press `kc` | -|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` | -|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt (AltGr) and press `kc` | -|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` | -|`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` | -|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` | -|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc` | -|`KC_MEH` | |Left Control, Shift and Alt | -|`KC_HYPR` | |Left Control, Shift, Alt and GUI | +|Key |Aliases |Description | +|----------|----------------------------------|-------------------------------------------------------------------| +|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` | +|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` | +|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` | +|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)` |Hold Left GUI and press `kc` | +|`LCS(kc)` | |Hold Left Control and Left Shift and press `kc` | +|`LCA(kc)` | |Hold Left Control and Left Alt and press `kc` | +|`LCG(kc)` | |Hold Left Control and Left GUI and press `kc` | +|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` | +|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and Left GUI and press `kc` | +|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` | +|`LCSG(kc)`| |Hold Left Control, Left Shift and Left GUI and press `kc` | +|`LCAG(kc)`| |Hold Left Control, Left Alt and Left GUI and press `kc` | +|`LSAG(kc)`| |Hold Left Shift, Left Alt and Left GUI and press `kc` | +|`RCTL(kc)`| |Hold Right Control and press `kc` | +|`RSFT(kc)`| |Hold Right Shift and press `kc` | +|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` | +|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` | +|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` | +|`RCA(kc)` | |Hold Right Control and Right Alt and press `kc` | +|`RCG(kc)` | |Hold Right Control and Right GUI and press `kc` | +|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt and press `kc` | +|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` | +|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` | +|`RCSG(kc)`| |Hold Right Control, Right Shift and Right GUI and press `kc` | +|`RCAG(kc)`| |Hold Right Control, Right Alt and Right GUI and press `kc` | +|`RSAG(kc)`| |Hold Right Shift, Right Alt and Right GUI and press `kc` | +|`MEH(kc)` | |Hold Left Control, Left Shift and Left Alt and press `kc` | +|`HYPR(kc)`| |Hold Left Control, Left Shift, Left Alt and Left GUI and press `kc`| +|`KC_MEH` | |Left Control, Left Shift and Left Alt | +|`KC_HYPR` | |Left Control, Left Shift, Left Alt and Left GUI | ## Mod-Tap Keys {#mod-tap-keys} See also: [Mod-Tap](mod_tap) -|Key |Aliases |Description | -|-------------|-----------------------------------------------------------------|--------------------------------------------------------------| -|`MT(mod, kc)`| |`mod` when held, `kc` when tapped | -|`LCTL_T(kc)` |`CTL_T(kc)` |Left Control when held, `kc` when tapped | -|`LSFT_T(kc)` |`SFT_T(kc)` |Left Shift when held, `kc` when tapped | -|`LALT_T(kc)` |`LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` |Left Alt when held, `kc` when tapped | -|`LGUI_T(kc)` |`LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)`|Left GUI when held, `kc` when tapped | -|`RCTL_T(kc)` | |Right Control when held, `kc` when tapped | -|`RSFT_T(kc)` | |Right Shift when held, `kc` when tapped | -|`RALT_T(kc)` |`ROPT_T(kc)`, `ALGR_T(kc)` |Right Alt (AltGr) when held, `kc` when tapped | -|`RGUI_T(kc)` |`RCMD_T(kc)`, `RWIN_T(kc)` |Right GUI when held, `kc` when tapped | -|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and GUI when held, `kc` when tapped | -|`LAG_T(kc)` | |Left Alt and GUI when held, `kc` when tapped | -|`RSG_T(kc)` | |Right Shift and GUI when held, `kc` when tapped | -|`RAG_T(kc)` | |Right Alt and GUI when held, `kc` when tapped | -|`LCA_T(kc)` | |Left Control and Alt when held, `kc` when tapped | -|`LSA_T(kc)` | |Left Shift and Left Alt when held, `kc` when tapped | -|`RSA_T(kc)` |`SAGR_T(kc)` |Right Shift and Right Alt (AltGr) when held, `kc` when tapped | -|`RCS_T(kc)` | |Right Control and Right Shift when held, `kc` when tapped | -|`LCAG_T(kc)` | |Left Control, Alt and GUI when held, `kc` when tapped | -|`RCAG_T(kc)` | |Right Control, Alt and GUI when held, `kc` when tapped | -|`C_S_T(kc)` | |Left Control and Shift when held, `kc` when tapped | -|`MEH_T(kc)` | |Left Control, Shift and Alt when held, `kc` when tapped | -|`HYPR_T(kc)` |`ALL_T(kc)` |Left Control, Shift, Alt and GUI when held, `kc` when tapped - more info [here](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)| +|Key |Aliases |Description | +|-------------|-----------------------------------------------------------------|---------------------------------------------------------------------------| +|`MT(mod, kc)`| |`mod` when held, `kc` when tapped | +|`LCTL_T(kc)` |`CTL_T(kc)` |Left Control when held, `kc` when tapped | +|`LSFT_T(kc)` |`SFT_T(kc)` |Left Shift when held, `kc` when tapped | +|`LALT_T(kc)` |`ALT_T(kc)`, `LOPT_T(kc)`, `OPT_T(kc)` |Left Alt when held, `kc` when tapped | +|`LGUI_T(kc)` |`GUI_T(kc)`, `LCMD_T(kc)`, `LWIN_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)`|Left GUI when held, `kc` when tapped | +|`LCS_T(kc)` | |Left Control and Left Shift when held, `kc` when tapped | +|`LCA_T(kc)` | |Left Control and Left Alt when held, `kc` when tapped | +|`LCG_T(kc)` | |Left Control and Left GUI when held, `kc` when tapped | +|`LSA_T(kc)` | |Left Shift and Left Alt when held, `kc` when tapped | +|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and Left GUI when held, `kc` when tapped | +|`LAG_T(kc)` | |Left Alt and Left GUI when held, `kc` when tapped | +|`LCSG_T(kc)` | |Left Control, Left Shift and Left GUI when held, `kc` when tapped | +|`LCAG_T(kc)` | |Left Control, Left Alt and Left GUI when held, `kc` when tapped | +|`LSAG_T(kc)` | |Left Shift, Left Alt and Left GUI when held, `kc` when tapped | +|`RCTL_T(kc)` | |Right Control when held, `kc` when tapped | +|`RSFT_T(kc)` | |Right Shift when held, `kc` when tapped | +|`RALT_T(kc)` |`ROPT_T(kc)`, `ALGR_T(kc)` |Right Alt when held, `kc` when tapped | +|`RGUI_T(kc)` |`RCMD_T(kc)`, `RWIN_T(kc)` |Right GUI when held, `kc` when tapped | +|`RCS_T(kc)` | |Right Control and Right Shift when held, `kc` when tapped | +|`RCA_T(kc)` | |Right Control and Right Alt when held, `kc` when tapped | +|`RCG_T(kc)` | |Right Control and Right GUI when held, `kc` when tapped | +|`RSA_T(kc)` |`SAGR_T(kc)` |Right Shift and Right Alt when held, `kc` when tapped | +|`RSG_T(kc)` | |Right Shift and Right GUI when held, `kc` when tapped | +|`RAG_T(kc)` | |Right Alt and Right GUI when held, `kc` when tapped | +|`RCSG_T(kc)` | |Right Control, Right Shift and Right GUI when held, `kc` when tapped | +|`RCAG_T(kc)` | |Right Control, Right Alt and Right GUI when held, `kc` when tapped | +|`RSAG_T(kc)` | |Right Shift, Right Alt and Right GUI when held, `kc` when tapped | +|`MEH_T(kc)` | |Left Control, Left Shift and Left Alt when held, `kc` when tapped | +|`HYPR_T(kc)` |`ALL_T(kc)` |Left Control, Left Shift, Left Alt and Left GUI when held, `kc` when tapped| ## Tapping Term Keys {#tapping-term-keys} diff --git a/docs/mod_tap.md b/docs/mod_tap.md index 8b420d30b6..ebf79adb7f 100644 --- a/docs/mod_tap.md +++ b/docs/mod_tap.md @@ -27,29 +27,38 @@ This key would activate Left Control and Left Shift when held, and send Escape w For convenience, QMK includes some Mod-Tap shortcuts to make common combinations more compact in your keymap: -|Key |Aliases |Description | -|------------|-----------------------------------------------------------------|--------------------------------------------------------------| -|`LCTL_T(kc)`|`CTL_T(kc)` |Left Control when held, `kc` when tapped | -|`LSFT_T(kc)`|`SFT_T(kc)` |Left Shift when held, `kc` when tapped | -|`LALT_T(kc)`|`LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` |Left Alt when held, `kc` when tapped | -|`LGUI_T(kc)`|`LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)`|Left GUI when held, `kc` when tapped | -|`RCTL_T(kc)`| |Right Control when held, `kc` when tapped | -|`RSFT_T(kc)`| |Right Shift when held, `kc` when tapped | -|`RALT_T(kc)`|`ROPT_T(kc)`, `ALGR_T(kc)` |Right Alt when held, `kc` when tapped | -|`RGUI_T(kc)`|`RCMD_T(kc)`, `RWIN_T(kc)` |Right GUI when held, `kc` when tapped | -|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and GUI when held, `kc` when tapped | -|`LAG_T(kc)` | |Left Alt and GUI when held, `kc` when tapped | -|`RSG_T(kc)` | |Right Shift and GUI when held, `kc` when tapped | -|`RAG_T(kc)` | |Right Alt and GUI when held, `kc` when tapped | -|`LCA_T(kc)` | |Left Control and Alt when held, `kc` when tapped | -|`LSA_T(kc)` | |Left Shift and Alt when held, `kc` when tapped | -|`RSA_T(kc)` |`SAGR_T(kc)` |Right Shift and Right Alt (AltGr) when held, `kc` when tapped | -|`RCS_T(kc)` | |Right Control and Right Shift when held, `kc` when tapped | -|`LCAG_T(kc)`| |Left Control, Alt and GUI when held, `kc` when tapped | -|`RCAG_T(kc)`| |Right Control, Alt and GUI when held, `kc` when tapped | -|`C_S_T(kc)` | |Left Control and Shift when held, `kc` when tapped | -|`MEH_T(kc)` | |Left Control, Shift and Alt when held, `kc` when tapped | -|`HYPR_T(kc)`|`ALL_T(kc)` |Left Control, Shift, Alt and GUI when held, `kc` when tapped - more info [here](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)| +|Key |Aliases |Description | +|------------|-----------------------------------------------------------------|---------------------------------------------------------------------------------------| +|`LCTL_T(kc)`|`CTL_T(kc)` |Left Control when held, `kc` when tapped | +|`LSFT_T(kc)`|`SFT_T(kc)` |Left Shift when held, `kc` when tapped | +|`LALT_T(kc)`|`ALT_T(kc)`, `LOPT_T(kc)`, `OPT_T(kc)` |Left Alt when held, `kc` when tapped | +|`LGUI_T(kc)`|`GUI_T(kc)`, `LCMD_T(kc)`, `LWIN_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)`|Left GUI when held, `kc` when tapped | +|`LCS_T(kc)` | |Left Control and Left Shift when held, `kc` when tapped | +|`LCA_T(kc)` | |Left Control and Left Alt when held, `kc` when tapped | +|`LCG_T(kc)` | |Left Control and Left GUI when held, `kc` when tapped | +|`LSA_T(kc)` | |Left Shift and Left Alt when held, `kc` when tapped | +|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and Left GUI when held, `kc` when tapped | +|`LAG_T(kc)` | |Left Alt and Left GUI when held, `kc` when tapped | +|`LCSG_T(kc)`| |Left Control, Left Shift and Left GUI when held, `kc` when tapped | +|`LCAG_T(kc)`| |Left Control, Left Alt and Left GUI when held, `kc` when tapped | +|`LSAG_T(kc)`| |Left Shift, Left Alt and Left GUI when held, `kc` when tapped | +|`RCTL_T(kc)`| |Right Control when held, `kc` when tapped | +|`RSFT_T(kc)`| |Right Shift when held, `kc` when tapped | +|`RALT_T(kc)`|`ROPT_T(kc)`, `ALGR_T(kc)` |Right Alt when held, `kc` when tapped | +|`RGUI_T(kc)`|`RCMD_T(kc)`, `RWIN_T(kc)` |Right GUI when held, `kc` when tapped | +|`RCS_T(kc)` | |Right Control and Right Shift when held, `kc` when tapped | +|`RCA_T(kc)` | |Right Control and Right Alt when held, `kc` when tapped | +|`RCG_T(kc)` | |Right Control and Right GUI when held, `kc` when tapped | +|`RSA_T(kc)` |`SAGR_T(kc)` |Right Shift and Right Alt when held, `kc` when tapped | +|`RSG_T(kc)` | |Right Shift and Right GUI when held, `kc` when tapped | +|`RAG_T(kc)` | |Right Alt and Right GUI when held, `kc` when tapped | +|`RCSG_T(kc)`| |Right Control, Right Shift and Right GUI when held, `kc` when tapped | +|`RCAG_T(kc)`| |Right Control, Right Alt and Right GUI when held, `kc` when tapped | +|`RSAG_T(kc)`| |Right Shift, Right Alt and Right GUI when held, `kc` when tapped | +|`MEH_T(kc)` | |Left Control, Left Shift and Left Alt when held, `kc` when tapped | +|`HYPR_T(kc)`|`ALL_T(kc)` |Left Control, Left Shift, Left Alt and Left GUI when held, `kc` when tapped1| + +1. More information on the Hyper key can be found on [this blog post by Brett Terpstra](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/). ## Caveats diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index bcaf94af8b..a2a86e175c 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -41,44 +41,59 @@ #define QK_MODS_GET_MODS(kc) (((kc) >> 8) & 0x1F) #define QK_MODS_GET_BASIC_KEYCODE(kc) ((kc)&0xFF) -// Keycode modifiers & aliases +// Modified keycodes #define LCTL(kc) (QK_LCTL | (kc)) #define LSFT(kc) (QK_LSFT | (kc)) #define LALT(kc) (QK_LALT | (kc)) #define LGUI(kc) (QK_LGUI | (kc)) + #define LOPT(kc) LALT(kc) #define LCMD(kc) LGUI(kc) #define LWIN(kc) LGUI(kc) + +#define C(kc) LCTL(kc) +#define S(kc) LSFT(kc) +#define A(kc) LALT(kc) +#define G(kc) LGUI(kc) + +#define LCS(kc) (QK_LCTL | QK_LSFT | (kc)) +#define LCA(kc) (QK_LCTL | QK_LALT | (kc)) +#define LCG(kc) (QK_LCTL | QK_LGUI | (kc)) +#define LSA(kc) (QK_LSFT | QK_LALT | (kc)) +#define LSG(kc) (QK_LSFT | QK_LGUI | (kc)) +#define LAG(kc) (QK_LALT | QK_LGUI | (kc)) +#define LCSG(kc) (QK_LCTL | QK_LSFT | QK_LGUI | (kc)) +#define LCAG(kc) (QK_LCTL | QK_LALT | QK_LGUI | (kc)) +#define LSAG(kc) (QK_LSFT | QK_LALT | QK_LGUI | (kc)) + +#define SGUI(kc) LSG(kc) +#define SCMD(kc) LSG(kc) +#define SWIN(kc) LSG(kc) + #define RCTL(kc) (QK_RCTL | (kc)) #define RSFT(kc) (QK_RSFT | (kc)) #define RALT(kc) (QK_RALT | (kc)) #define RGUI(kc) (QK_RGUI | (kc)) + #define ALGR(kc) RALT(kc) #define ROPT(kc) RALT(kc) #define RCMD(kc) RGUI(kc) #define RWIN(kc) RGUI(kc) -#define HYPR(kc) (QK_LCTL | QK_LSFT | QK_LALT | QK_LGUI | (kc)) -#define MEH(kc) (QK_LCTL | QK_LSFT | QK_LALT | (kc)) -#define LCAG(kc) (QK_LCTL | QK_LALT | QK_LGUI | (kc)) -#define LSG(kc) (QK_LSFT | QK_LGUI | (kc)) -#define SGUI(kc) LSG(kc) -#define SCMD(kc) LSG(kc) -#define SWIN(kc) LSG(kc) -#define LAG(kc) (QK_LALT | QK_LGUI | (kc)) +#define RCA(kc) (QK_RCTL | QK_RALT | (kc)) +#define RCS(kc) (QK_RCTL | QK_RSFT | (kc)) +#define RCG(kc) (QK_RCTL | QK_RGUI | (kc)) +#define RSA(kc) (QK_RSFT | QK_RALT | (kc)) #define RSG(kc) (QK_RSFT | QK_RGUI | (kc)) #define RAG(kc) (QK_RALT | QK_RGUI | (kc)) -#define LCA(kc) (QK_LCTL | QK_LALT | (kc)) -#define LSA(kc) (QK_LSFT | QK_LALT | (kc)) -#define RSA(kc) (QK_RSFT | QK_RALT | (kc)) -#define RCS(kc) (QK_RCTL | QK_RSFT | (kc)) +#define RCSG(kc) (QK_RCTL | QK_RSFT | QK_RGUI | (kc)) +#define RCAG(kc) (QK_RCTL | QK_RALT | QK_RGUI | (kc)) +#define RSAG(kc) (QK_RSFT | QK_RALT | QK_RGUI | (kc)) + #define SAGR(kc) RSA(kc) -// Modified keycode aliases -#define C(kc) LCTL(kc) -#define S(kc) LSFT(kc) -#define A(kc) LALT(kc) -#define G(kc) LGUI(kc) +#define HYPR(kc) (QK_LCTL | QK_LSFT | QK_LALT | QK_LGUI | (kc)) +#define MEH(kc) (QK_LCTL | QK_LSFT | QK_LALT | (kc)) // GOTO layer - 32 layer max #define TO(layer) (QK_TO | ((layer)&0x1F)) @@ -127,50 +142,63 @@ #define QK_MOD_TAP_GET_MODS(kc) (((kc) >> 8) & 0x1F) #define QK_MOD_TAP_GET_TAP_KEYCODE(kc) ((kc)&0xFF) +// Mod-Tap shortcuts #define LCTL_T(kc) MT(MOD_LCTL, kc) -#define RCTL_T(kc) MT(MOD_RCTL, kc) -#define CTL_T(kc) LCTL_T(kc) - #define LSFT_T(kc) MT(MOD_LSFT, kc) -#define RSFT_T(kc) MT(MOD_RSFT, kc) -#define SFT_T(kc) LSFT_T(kc) - #define LALT_T(kc) MT(MOD_LALT, kc) -#define RALT_T(kc) MT(MOD_RALT, kc) -#define LOPT_T(kc) LALT_T(kc) -#define ROPT_T(kc) RALT_T(kc) -#define ALGR_T(kc) RALT_T(kc) -#define ALT_T(kc) LALT_T(kc) -#define OPT_T(kc) LOPT_T(kc) - #define LGUI_T(kc) MT(MOD_LGUI, kc) -#define RGUI_T(kc) MT(MOD_RGUI, kc) + +#define CTL_T(kc) LCTL_T(kc) +#define SFT_T(kc) LSFT_T(kc) +#define ALT_T(kc) LALT_T(kc) +#define GUI_T(kc) LGUI_T(kc) + +#define LOPT_T(kc) LALT_T(kc) #define LCMD_T(kc) LGUI_T(kc) #define LWIN_T(kc) LGUI_T(kc) -#define RCMD_T(kc) RGUI_T(kc) -#define RWIN_T(kc) RGUI_T(kc) -#define GUI_T(kc) LGUI_T(kc) + +#define OPT_T(kc) LOPT_T(kc) #define CMD_T(kc) LCMD_T(kc) #define WIN_T(kc) LWIN_T(kc) -#define C_S_T(kc) MT(MOD_LCTL | MOD_LSFT, kc) // Left Control + Shift e.g. for gnome-terminal -#define MEH_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT, kc) // Meh is a less hyper version of the Hyper key -- doesn't include GUI, so just Left Control + Shift + Alt -#define LCAG_T(kc) MT(MOD_LCTL | MOD_LALT | MOD_LGUI, kc) // Left Control + Alt + GUI -#define RCAG_T(kc) MT(MOD_RCTL | MOD_RALT | MOD_RGUI, kc) // Right Control + Alt + GUI -#define HYPR_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI, kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/ -#define LSG_T(kc) MT(MOD_LSFT | MOD_LGUI, kc) // Left Shift + GUI +#define LCS_T(kc) MT(MOD_LCTL | MOD_LSFT, kc) +#define LCA_T(kc) MT(MOD_LCTL | MOD_LALT, kc) +#define LCG_T(kc) MT(MOD_LCTL | MOD_LGUI, kc) +#define LSA_T(kc) MT(MOD_LSFT | MOD_LALT, kc) +#define LSG_T(kc) MT(MOD_LSFT | MOD_LGUI, kc) +#define LAG_T(kc) MT(MOD_LALT | MOD_LGUI, kc) +#define LCSG_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LGUI, kc) +#define LCAG_T(kc) MT(MOD_LCTL | MOD_LALT | MOD_LGUI, kc) +#define LSAG_T(kc) MT(MOD_LSFT | MOD_LALT | MOD_LGUI, kc) + #define SGUI_T(kc) LSG_T(kc) #define SCMD_T(kc) LSG_T(kc) #define SWIN_T(kc) LSG_T(kc) -#define LAG_T(kc) MT(MOD_LALT | MOD_LGUI, kc) // Left Alt + GUI -#define RSG_T(kc) MT(MOD_RSFT | MOD_RGUI, kc) // Right Shift + GUI -#define RAG_T(kc) MT(MOD_RALT | MOD_RGUI, kc) // Right Alt + GUI -#define LCA_T(kc) MT(MOD_LCTL | MOD_LALT, kc) // Left Control + Alt -#define LSA_T(kc) MT(MOD_LSFT | MOD_LALT, kc) // Left Shift + Alt -#define RSA_T(kc) MT(MOD_RSFT | MOD_RALT, kc) // Right Shift + Alt -#define RCS_T(kc) MT(MOD_RCTL | MOD_RSFT, kc) // Right Control + Shift + +#define RCTL_T(kc) MT(MOD_RCTL, kc) +#define RSFT_T(kc) MT(MOD_RSFT, kc) +#define RALT_T(kc) MT(MOD_RALT, kc) +#define RGUI_T(kc) MT(MOD_RGUI, kc) + +#define ROPT_T(kc) RALT_T(kc) +#define ALGR_T(kc) RALT_T(kc) +#define RCMD_T(kc) RGUI_T(kc) +#define RWIN_T(kc) RGUI_T(kc) + +#define RCS_T(kc) MT(MOD_RCTL | MOD_RSFT, kc) +#define RCA_T(kc) MT(MOD_RCTL | MOD_RALT, kc) +#define RCG_T(kc) MT(MOD_RCTL | MOD_RGUI, kc) +#define RSA_T(kc) MT(MOD_RSFT | MOD_RALT, kc) +#define RSG_T(kc) MT(MOD_RSFT | MOD_RGUI, kc) +#define RAG_T(kc) MT(MOD_RALT | MOD_RGUI, kc) +#define RCSG_T(kc) MT(MOD_RCTL | MOD_RSFT | MOD_RGUI, kc) +#define RCAG_T(kc) MT(MOD_RCTL | MOD_RALT | MOD_RGUI, kc) +#define RSAG_T(kc) MT(MOD_RSFT | MOD_RALT | MOD_RGUI, kc) + #define SAGR_T(kc) RSA_T(kc) +#define MEH_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT, kc) +#define HYPR_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI, kc) #define ALL_T(kc) HYPR_T(kc) // Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap diff --git a/quantum/quantum_keycodes_legacy.h b/quantum/quantum_keycodes_legacy.h index 21aec90675..55b0fc3596 100644 --- a/quantum/quantum_keycodes_legacy.h +++ b/quantum/quantum_keycodes_legacy.h @@ -57,3 +57,5 @@ #define KC_ACL2 QK_MOUSE_ACCELERATION_2 #define QK_OUTPUT_AUTO OU_AUTO + +#define C_S_T(kc) LCS_T(kc) From 48a421bb10537780c88c7dff3762def31e38d4bd Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 28 Jun 2025 03:57:32 +0100 Subject: [PATCH 032/167] Fix `keebio/quefrency/rev1:default60` (#25423) --- keyboards/keebio/quefrency/rev1/keyboard.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboards/keebio/quefrency/rev1/keyboard.json b/keyboards/keebio/quefrency/rev1/keyboard.json index 73f6d0d660..00eef3f661 100644 --- a/keyboards/keebio/quefrency/rev1/keyboard.json +++ b/keyboards/keebio/quefrency/rev1/keyboard.json @@ -63,8 +63,11 @@ "build": { "lto": true }, + "layout_aliases": { + "LAYOUT": "LAYOUT_60" + }, "layouts": { - "LAYOUT": { + "LAYOUT_60": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, From b42191a2dda9b52470c1fd8cca341fe5f7ca0576 Mon Sep 17 00:00:00 2001 From: Pascal Getreuer <50221757+getreuer@users.noreply.github.com> Date: Fri, 27 Jun 2025 20:21:12 -0700 Subject: [PATCH 033/167] [Docs] Fix typo in Chordal Hold example JSON, comma to colon. (#25424) --- docs/tap_hold.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tap_hold.md b/docs/tap_hold.md index 55cb64a498..164be229f6 100644 --- a/docs/tap_hold.md +++ b/docs/tap_hold.md @@ -602,7 +602,7 @@ either `"L"`, `"R"`, or `"*"`. Note that if `"layouts"` contains multiple layouts, only the first one is read. For example: ```json -{"matrix": [5, 6], "x": 0, "y": 5.5, "w": 1.25, "hand", "*"}, +{"matrix": [5, 6], "x": 0, "y": 5.5, "w": 1.25, "hand": "*"}, ``` Alternatively, handedness may be defined functionally with From 177e461d903e6414e6d7b5b80eb36f48b0d68626 Mon Sep 17 00:00:00 2001 From: Jon Henry Fernandez Date: Sat, 28 Jun 2025 11:29:57 -0500 Subject: [PATCH 034/167] [Keyboard] Add togkey pad & pad_plus (#25217) * Initial Commit for Adding TogKey Pad and TogKey Pad Plus to QMK * Added TogKey Pad default Keymap * Changed Pins for Encoder * added images to read me * Updated Read Me Pictures Links * Applied Suggested Changes and Formatting to keyboard.json * Applied suggested keycodes to keymap.c for togkey pad * Updated Hardware Availability Links in Readme * Set development board instead of seperate bootloader and processor. * Added pad_plus.c for oled. Added config.h for pad_plus. Applied Suggested Changes. * - Moved oled arrays outside of oled_task function. - Removed white spaces from pad_plus keymaps. - Made suggested changes to oled_task function. * Updated with Changes - Updated pad json. Removed extra features, remvoed rgb test from rgb animations. - Updated pad_plus functions - Updated Pad Plus Config file * Readded display defintion. * Corrected OLED resolution definition. * Applied Suggested Changes - Updated Copyright Information - Updated Layout Names - Updated TogKey Pad Layout * Applied Suggested Changes - Removed move layer function. - Repolaced with "TO" keycodes - Updated OLED images * Fixed Layout name in keyboard.json for togkey pad * - Updated Readme for both pad and pad plus. - Updated Oled pictures for pad plus. * - Added bootmagic and extrakey features to togkey pad keyboard.json. --- keyboards/togkey/pad/keyboard.json | 52 ++ keyboards/togkey/pad/keymaps/default/keymap.c | 11 + keyboards/togkey/pad/readme.md | 27 + keyboards/togkey/pad_plus/config.h | 10 + keyboards/togkey/pad_plus/keyboard.json | 63 ++ .../togkey/pad_plus/keymaps/default/keymap.c | 30 + keyboards/togkey/pad_plus/pad_plus.c | 731 ++++++++++++++++++ keyboards/togkey/pad_plus/readme.md | 27 + 8 files changed, 951 insertions(+) create mode 100644 keyboards/togkey/pad/keyboard.json create mode 100644 keyboards/togkey/pad/keymaps/default/keymap.c create mode 100644 keyboards/togkey/pad/readme.md create mode 100644 keyboards/togkey/pad_plus/config.h create mode 100644 keyboards/togkey/pad_plus/keyboard.json create mode 100644 keyboards/togkey/pad_plus/keymaps/default/keymap.c create mode 100644 keyboards/togkey/pad_plus/pad_plus.c create mode 100644 keyboards/togkey/pad_plus/readme.md diff --git a/keyboards/togkey/pad/keyboard.json b/keyboards/togkey/pad/keyboard.json new file mode 100644 index 0000000000..f93346deb6 --- /dev/null +++ b/keyboards/togkey/pad/keyboard.json @@ -0,0 +1,52 @@ +{ + "manufacturer": "TogKey", + "keyboard_name": "Pad", + "maintainer": "togkey86", + "development_board": "promicro_rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["GP2", "GP3", "GP4"], + "rows": ["GP5", "GP6"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "hue_steps": 10, + "led_count": 5 + }, + "url": "https://togkey.com/products/togkey-pad", + "usb": { + "device_version": "1.0.0", + "pid": "0x8686", + "vid": "0xFEED" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP7" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0.5, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1} + ] + } + } +} diff --git a/keyboards/togkey/pad/keymaps/default/keymap.c b/keyboards/togkey/pad/keymaps/default/keymap.c new file mode 100644 index 0000000000..4c55f41e69 --- /dev/null +++ b/keyboards/togkey/pad/keymaps/default/keymap.c @@ -0,0 +1,11 @@ +// Copyright 2025 TogKey +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_VOLD, KC_VOLU, + KC_MPRV, KC_MPLY, KC_MNXT + ) +}; diff --git a/keyboards/togkey/pad/readme.md b/keyboards/togkey/pad/readme.md new file mode 100644 index 0000000000..3c34876970 --- /dev/null +++ b/keyboards/togkey/pad/readme.md @@ -0,0 +1,27 @@ +# pad + +![pad](https://i.imgur.com/KMS1btN.jpeg) + +A simple 5-Key Macropad based off an RP2040 and custom PCB. + +* Keyboard Maintainer: [Jon Henry](https://github.com/togkey86) +* Hardware Supported: TogKey Pad PCB, RP2040 Pro Micro Development Board +* Hardware Availability: (https://togkey.com) + +Make example for this keyboard (after setting up your build environment): + + make togkey/pad:default + +Flashing example for this keyboard: + + make togkey/pad:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/togkey/pad_plus/config.h b/keyboards/togkey/pad_plus/config.h new file mode 100644 index 0000000000..525f02feb0 --- /dev/null +++ b/keyboards/togkey/pad_plus/config.h @@ -0,0 +1,10 @@ +// Copyright 2025 TogKey +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +//OLED +#define OLED_DISPLAY_128X64 +#define I2C_DRIVER I2CD1 +#define I2C1_SDA_PIN GP2 +#define I2C1_SCL_PIN GP3 diff --git a/keyboards/togkey/pad_plus/keyboard.json b/keyboards/togkey/pad_plus/keyboard.json new file mode 100644 index 0000000000..ca5eabf902 --- /dev/null +++ b/keyboards/togkey/pad_plus/keyboard.json @@ -0,0 +1,63 @@ +{ + "manufacturer": "TogKey", + "keyboard_name": "Pad Plus", + "maintainer": "togkey86", + "development_board": "promicro_rp2040", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "GP28", "pin_b": "GP29", "resolution": 2} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "oled": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["GP4", "GP5", "GP6"], + "rows": ["GP26", "GP22", "GP20"] + }, + + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "hue_steps": 10, + "led_count": 3 + }, + "url": "https://togkey.com/products/togkey-pad-plus", + "usb": { + "device_version": "1.0.0", + "pid": "0x8687", + "vid": "0xFEED" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP27" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2} + ] + } + } +} diff --git a/keyboards/togkey/pad_plus/keymaps/default/keymap.c b/keyboards/togkey/pad_plus/keymaps/default/keymap.c new file mode 100644 index 0000000000..3d1979b2e1 --- /dev/null +++ b/keyboards/togkey/pad_plus/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +// Copyright 2025 TogKey +// SPDX-License-Identifier: GPL-2.0-or-later6 + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + TO(1), + KC_VOLD, KC_MUTE, KC_VOLU, + KC_MPRV, KC_MPLY, KC_MNXT + ), + + [1] = LAYOUT( + TO(2), + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6 + ), + + [2] = LAYOUT( + TO(3), + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F + ), + + [3] = LAYOUT( + TO(0), + KC_J, KC_K, KC_L, + KC_M, KC_N, KC_O + ) +}; diff --git a/keyboards/togkey/pad_plus/pad_plus.c b/keyboards/togkey/pad_plus/pad_plus.c new file mode 100644 index 0000000000..c1db5edfe6 --- /dev/null +++ b/keyboards/togkey/pad_plus/pad_plus.c @@ -0,0 +1,731 @@ +// Copyright 2025 TogKey +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#if defined(OLED_ENABLE) +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static const char image_layer_1[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0xE0, 0xE0, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 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, 0xFF, 0xFF, 0xFF, 0xFF, + 0x8F, 0x8F, 0x70, 0xFC, 0xFE, 0xFE, + 0xCF, 0x8F, 0x8F, 0x8F, 0xFE, 0xFE, + 0xFC, 0x78, 0xF8, 0xFC, 0xFE, 0xFF, + 0x8F, 0x8F, 0x8F, 0xCE, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0xFC, 0xFE, 0xDF, 0x8F, + 0x07, 0x23, 0xFC, 0xFE, 0xFE, 0xFF, + 0xB7, 0xB7, 0xBF, 0xBE, 0xBE, 0xB8, + 0x07, 0x1F, 0x3F, 0xFE, 0xFC, 0xF0, + 0xF0, 0xFE, 0xFF, 0x3F, 0x0F, 0x03, + 0xC0, 0xC0, 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, 0x03, + 0x03, 0x07, 0x07, 0x03, 0x00, 0x01, + 0x03, 0x03, 0x03, 0x07, 0x07, 0x03, + 0x03, 0x03, 0x01, 0x00, 0x00, 0x39, + 0x7B, 0x7B, 0x77, 0x77, 0x73, 0x7B, + 0x7F, 0x3F, 0x1F, 0x07, 0x00, 0x03, + 0x03, 0x03, 0x03, 0x00, 0x01, 0x03, + 0x03, 0x03, 0x03, 0x02, 0x00, 0x01, + 0x03, 0x03, 0x07, 0x07, 0x03, 0x03, + 0x03, 0x01, 0x00, 0x60, 0x78, 0x7E, + 0x7F, 0x3F, 0x0F, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x07, 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, 0xF0, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, + 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0xF0, + 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xF0, 0xF0, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x78, 0xF0, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0xF0, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBF, 0x9F, 0xDF, 0x0F, + 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, + 0x30, 0x30, 0x30, 0xF0, 0xF0, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x70, 0x70, 0x30, 0x30, 0xF0, + 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, + 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xBF, + 0xBF, 0x80, 0x80, 0xBF, 0xBF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0xF0, 0xF8, 0xFC, 0xEE, 0xEF, 0xE7, + 0xE3, 0xC1, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x70, 0xE7, 0xE7, + 0xE7, 0xEF, 0xFF, 0x7C, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1F, + 0x1F, 0x1B, 0x18, 0xFF, 0xFF, 0x7F, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, + 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0x1F, 0x7F, 0xFF, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0x7F, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 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 image_layer_2[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0xE0, 0xE0, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 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, 0xFF, 0xFF, 0xFF, 0xFF, + 0x8F, 0x8F, 0x70, 0xFC, 0xFE, 0xFE, + 0xCF, 0x8F, 0x8F, 0x8F, 0xFE, 0xFE, + 0xFC, 0x78, 0xF8, 0xFC, 0xFE, 0xFF, + 0x8F, 0x8F, 0x8F, 0xCE, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0xFC, 0xFE, 0xDF, 0x8F, + 0x07, 0x23, 0xFC, 0xFE, 0xFE, 0xFF, + 0xB7, 0xB7, 0xBF, 0xBE, 0xBE, 0xB8, + 0x07, 0x1F, 0x3F, 0xFE, 0xFC, 0xF0, + 0xF0, 0xFE, 0xFF, 0x3F, 0x0F, 0x03, + 0xC0, 0xC0, 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, 0x03, + 0x03, 0x07, 0x07, 0x03, 0x00, 0x01, + 0x03, 0x03, 0x03, 0x07, 0x07, 0x03, + 0x03, 0x03, 0x01, 0x00, 0x00, 0x39, + 0x7B, 0x7B, 0x77, 0x77, 0x73, 0x7B, + 0x7F, 0x3F, 0x1F, 0x07, 0x00, 0x03, + 0x03, 0x03, 0x03, 0x00, 0x01, 0x03, + 0x03, 0x03, 0x03, 0x02, 0x00, 0x01, + 0x03, 0x03, 0x07, 0x07, 0x03, 0x03, + 0x03, 0x01, 0x00, 0x60, 0x78, 0x7E, + 0x7F, 0x3F, 0x0F, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x07, 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, 0xF0, 0xF8, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0xF8, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, + 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xF0, 0xF0, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x78, 0xF0, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0xF0, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x60, 0xF0, 0xF0, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xDF, + 0xCF, 0xCF, 0xCF, 0x1F, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x70, 0x70, 0x30, 0x30, 0xF0, + 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, + 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, + 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x9F, 0x87, 0xB7, 0xB3, 0xB9, 0xBC, + 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x70, 0xE7, 0xE7, + 0xE7, 0xEF, 0xFF, 0x7C, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1F, + 0x1F, 0x1B, 0x18, 0xFF, 0xFF, 0x7F, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x3F, 0x7F, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x7F, 0x3F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0x1F, 0x7F, 0xFF, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0x7F, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 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 image_layer_3[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0xE0, 0xE0, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 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, 0xFF, 0xFF, 0xFF, 0xFF, + 0x8F, 0x8F, 0x70, 0xFC, 0xFE, 0xFE, + 0xCF, 0x8F, 0x8F, 0x8F, 0xFE, 0xFE, + 0xFC, 0x78, 0xF8, 0xFC, 0xFE, 0xFF, + 0x8F, 0x8F, 0x8F, 0xCE, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0xFC, 0xFE, 0xDF, 0x8F, + 0x07, 0x23, 0xFC, 0xFE, 0xFE, 0xFF, + 0xB7, 0xB7, 0xBF, 0xBE, 0xBE, 0xB8, + 0x07, 0x1F, 0x3F, 0xFE, 0xFC, 0xF0, + 0xF0, 0xFE, 0xFF, 0x3F, 0x0F, 0x03, + 0xC0, 0xC0, 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, 0x03, + 0x03, 0x07, 0x07, 0x03, 0x00, 0x01, + 0x03, 0x03, 0x03, 0x07, 0x07, 0x03, + 0x03, 0x03, 0x01, 0x00, 0x00, 0x39, + 0x7B, 0x7B, 0x77, 0x77, 0x73, 0x7B, + 0x7F, 0x3F, 0x1F, 0x07, 0x00, 0x03, + 0x03, 0x03, 0x03, 0x00, 0x01, 0x03, + 0x03, 0x03, 0x03, 0x02, 0x00, 0x01, + 0x03, 0x03, 0x07, 0x07, 0x03, 0x03, + 0x03, 0x01, 0x00, 0x60, 0x78, 0x7E, + 0x7F, 0x3F, 0x0F, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x07, 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, 0xF0, 0xF8, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0xF8, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, + 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0xF0, + 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF0, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0xF0, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x60, 0xF0, 0xF0, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, + 0x30, 0x30, 0x30, 0xF0, 0xF0, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x9F, 0xDF, 0xEF, 0xCF, 0xCF, + 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, + 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, + 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0xF0, 0xF8, 0xFC, 0xEE, 0xEF, 0xE7, + 0xE3, 0xC1, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xDF, 0x8F, 0xBF, 0xBD, + 0xBD, 0xB8, 0x82, 0xC7, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1F, + 0x1F, 0x1B, 0x18, 0xFF, 0xFF, 0x7F, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x3F, 0x7F, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x7F, 0x3F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, + 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 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 image_layer_4[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0xE0, 0xE0, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 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, 0xFF, 0xFF, 0xFF, 0xFF, + 0x8F, 0x8F, 0x70, 0xFC, 0xFE, 0xFE, + 0xCF, 0x8F, 0x8F, 0x8F, 0xFE, 0xFE, + 0xFC, 0x78, 0xF8, 0xFC, 0xFE, 0xFF, + 0x8F, 0x8F, 0x8F, 0xCE, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0xFC, 0xFE, 0xDF, 0x8F, + 0x07, 0x23, 0xFC, 0xFE, 0xFE, 0xFF, + 0xB7, 0xB7, 0xBF, 0xBE, 0xBE, 0xB8, + 0x07, 0x1F, 0x3F, 0xFE, 0xFC, 0xF0, + 0xF0, 0xFE, 0xFF, 0x3F, 0x0F, 0x03, + 0xC0, 0xC0, 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, 0x03, + 0x03, 0x07, 0x07, 0x03, 0x00, 0x01, + 0x03, 0x03, 0x03, 0x07, 0x07, 0x03, + 0x03, 0x03, 0x01, 0x00, 0x00, 0x39, + 0x7B, 0x7B, 0x77, 0x77, 0x73, 0x7B, + 0x7F, 0x3F, 0x1F, 0x07, 0x00, 0x03, + 0x03, 0x03, 0x03, 0x00, 0x01, 0x03, + 0x03, 0x03, 0x03, 0x02, 0x00, 0x01, + 0x03, 0x03, 0x07, 0x07, 0x03, 0x03, + 0x03, 0x01, 0x00, 0x60, 0x78, 0x7E, + 0x7F, 0x3F, 0x0F, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x07, 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, 0xF0, 0xF8, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0xF8, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, + 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0xF0, + 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xF0, 0xF0, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x78, 0xF0, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x60, 0xF0, 0xF0, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, + 0x30, 0x30, 0x30, 0xF0, 0xF0, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x70, 0x70, 0x30, 0x30, 0xF0, + 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, + 0x9F, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, + 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0xF0, 0xF8, 0xFC, 0xEE, 0xEF, 0xE7, + 0xE3, 0xC1, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x70, 0xE7, 0xE7, + 0xE7, 0xEF, 0xFF, 0x7C, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xE1, + 0xE4, 0xEF, 0xEF, 0x80, 0x80, 0xE7, + 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x3F, 0x7F, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x7F, 0x3F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, + 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0x1F, 0x7F, 0xFF, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0x7F, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, +}; + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_raw_P(image_layer_1, sizeof(image_layer_1)); + break; + case 1: + oled_write_raw_P(image_layer_2, sizeof(image_layer_2)); + break; + case 2: + oled_write_raw_P(image_layer_3, sizeof(image_layer_3)); + break; + case 3: + oled_write_raw_P(image_layer_4, sizeof(image_layer_4)); + break; + default: + oled_write_ln_P(PSTR("Undefined"), false); + } + + return false; +} +#endif diff --git a/keyboards/togkey/pad_plus/readme.md b/keyboards/togkey/pad_plus/readme.md new file mode 100644 index 0000000000..99512f07e7 --- /dev/null +++ b/keyboards/togkey/pad_plus/readme.md @@ -0,0 +1,27 @@ +# pad_plus + +![pad_plus](https://i.imgur.com/9g3gNMZ.jpeg) + +A 6-Key Macropad featuring a Oled Screen and Rotary Encoder based off an RP2040 and custom PCB. + +* Keyboard Maintainer: [Jon Henry](https://github.com/togkey86) +* Hardware Supported: TogKey Pad Plus PCB, RP2040 Development Board +* Hardware Availability: (https://togkey.com) + +Make example for this keyboard (after setting up your build environment): + + make togkey/pad_plus:default + +Flashing example for this keyboard: + + make togkey/pad_plus:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From d7b09ad5602888e94f75cb8ed3c3e0931df4234e Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 28 Jun 2025 22:34:50 +0100 Subject: [PATCH 035/167] Configure boards to use development_board - K (#25421) --- keyboards/kakunpc/angel17/info.json | 3 +-- keyboards/kakunpc/rabbit_capture_plan/keyboard.json | 3 +-- keyboards/kapl/rev1/keyboard.json | 3 +-- keyboards/keaboard/rev1/keyboard.json | 3 +-- keyboards/keebformom/keyboard.json | 3 +-- keyboards/keebio/bdn9/rev1/keyboard.json | 3 +-- keyboards/keebio/bfo9000/keyboard.json | 3 +-- keyboards/keebio/dilly/keyboard.json | 3 +-- keyboards/keebio/fourier/keyboard.json | 3 +-- keyboards/keebio/iris/rev1/keyboard.json | 3 +-- keyboards/keebio/iris/rev1_led/keyboard.json | 3 +-- keyboards/keebio/iris/rev2/keyboard.json | 3 +-- keyboards/keebio/laplace/keyboard.json | 3 +-- keyboards/keebio/levinson/info.json | 3 +-- keyboards/keebio/nyquist/rev1/keyboard.json | 3 +-- keyboards/keebio/nyquist/rev2/keyboard.json | 3 +-- keyboards/keebio/quefrency/rev1/keyboard.json | 3 +-- keyboards/keebio/rorschach/rev1/keyboard.json | 3 +-- keyboards/keebio/stick/keyboard.json | 3 +-- keyboards/keebio/tragicforce68/keyboard.json | 3 +-- keyboards/keebio/tukey/keyboard.json | 3 +-- keyboards/keebio/viterbi/info.json | 3 +-- keyboards/keebio/wavelet/keyboard.json | 3 +-- keyboards/keybage/radpad/keyboard.json | 3 +-- keyboards/keycapsss/o4l_5x12/keyboard.json | 3 +-- keyboards/keyhive/ergosaurus/keyboard.json | 3 +-- keyboards/keyhive/maypad/keyboard.json | 3 +-- keyboards/keyhive/navi10/rev0/keyboard.json | 3 +-- keyboards/keyhive/navi10/rev2/keyboard.json | 3 +-- keyboards/keyhive/navi10/rev3/keyboard.json | 3 +-- keyboards/keyhive/opus/keyboard.json | 3 +-- keyboards/keyprez/unicorn/keyboard.json | 3 +-- keyboards/keysofkings/twokey/keyboard.json | 3 +-- keyboards/kingly_keys/little_foot/keyboard.json | 3 +-- keyboards/kingly_keys/romac/keyboard.json | 3 +-- keyboards/kingly_keys/romac_plus/keyboard.json | 3 +-- keyboards/knobgoblin/keyboard.json | 3 +-- keyboards/ktec/ergodone/keyboard.json | 3 +-- keyboards/kumaokobo/kudox/columner/keyboard.json | 3 +-- keyboards/kumaokobo/kudox/rev1/keyboard.json | 3 +-- keyboards/kumaokobo/kudox/rev2/keyboard.json | 3 +-- keyboards/kumaokobo/kudox/rev3/keyboard.json | 3 +-- keyboards/kumaokobo/kudox_full/rev1/keyboard.json | 3 +-- keyboards/kumaokobo/kudox_game/info.json | 3 +-- keyboards/kumaokobo/pico/65keys/keyboard.json | 3 +-- keyboards/kumaokobo/pico/70keys/keyboard.json | 3 +-- 46 files changed, 46 insertions(+), 92 deletions(-) diff --git a/keyboards/kakunpc/angel17/info.json b/keyboards/kakunpc/angel17/info.json index a8a4f2c148..c0d7287052 100644 --- a/keyboards/kakunpc/angel17/info.json +++ b/keyboards/kakunpc/angel17/info.json @@ -8,7 +8,6 @@ "pid": "0x0000", "device_version": "0.0.1" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["numpad_5x4"] } diff --git a/keyboards/kakunpc/rabbit_capture_plan/keyboard.json b/keyboards/kakunpc/rabbit_capture_plan/keyboard.json index dce62c64d8..357d1a1ed1 100644 --- a/keyboards/kakunpc/rabbit_capture_plan/keyboard.json +++ b/keyboards/kakunpc/rabbit_capture_plan/keyboard.json @@ -55,8 +55,7 @@ "pin": "D2" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT_all": "LAYOUT_ansi_split_rshift" }, diff --git a/keyboards/kapl/rev1/keyboard.json b/keyboards/kapl/rev1/keyboard.json index 820c647ccf..843847d8fe 100644 --- a/keyboards/kapl/rev1/keyboard.json +++ b/keyboards/kapl/rev1/keyboard.json @@ -72,8 +72,7 @@ } } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": true, diff --git a/keyboards/keaboard/rev1/keyboard.json b/keyboards/keaboard/rev1/keyboard.json index 1b5b492075..c8dea471f6 100644 --- a/keyboards/keaboard/rev1/keyboard.json +++ b/keyboards/keaboard/rev1/keyboard.json @@ -13,8 +13,7 @@ "rows": ["D7", "E6", "B4", "B5"], "cols": ["F5", "F6", "F7", "B1", "B3", "B2", "B6"] }, - "bootloader": "caterina", - "processor": "atmega32u4", + "development_board": "promicro", "split": { "enabled": true, "serial": { diff --git a/keyboards/keebformom/keyboard.json b/keyboards/keebformom/keyboard.json index 7fbaa5737f..bcc3a7d8b2 100644 --- a/keyboards/keebformom/keyboard.json +++ b/keyboards/keebformom/keyboard.json @@ -28,8 +28,7 @@ "rows": ["F5", "F6", "F7", "B1"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": false, diff --git a/keyboards/keebio/bdn9/rev1/keyboard.json b/keyboards/keebio/bdn9/rev1/keyboard.json index 1deecf0d5b..5c677db78d 100644 --- a/keyboards/keebio/bdn9/rev1/keyboard.json +++ b/keyboards/keebio/bdn9/rev1/keyboard.json @@ -36,8 +36,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": false, diff --git a/keyboards/keebio/bfo9000/keyboard.json b/keyboards/keebio/bfo9000/keyboard.json index 08d9997d43..159334cc07 100644 --- a/keyboards/keebio/bfo9000/keyboard.json +++ b/keyboards/keebio/bfo9000/keyboard.json @@ -39,8 +39,7 @@ "ws2812": { "pin": "B4" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/dilly/keyboard.json b/keyboards/keebio/dilly/keyboard.json index 82a565ae62..0f7bce7d3f 100644 --- a/keyboards/keebio/dilly/keyboard.json +++ b/keyboards/keebio/dilly/keyboard.json @@ -49,8 +49,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["ortho_3x10"], "layouts": { "LAYOUT_ortho_3x10": { diff --git a/keyboards/keebio/fourier/keyboard.json b/keyboards/keebio/fourier/keyboard.json index ae4985787d..74620068a2 100644 --- a/keyboards/keebio/fourier/keyboard.json +++ b/keyboards/keebio/fourier/keyboard.json @@ -61,8 +61,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/iris/rev1/keyboard.json b/keyboards/keebio/iris/rev1/keyboard.json index fbccf0de84..74dc366413 100644 --- a/keyboards/keebio/iris/rev1/keyboard.json +++ b/keyboards/keebio/iris/rev1/keyboard.json @@ -53,8 +53,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/iris/rev1_led/keyboard.json b/keyboards/keebio/iris/rev1_led/keyboard.json index cb171fcec3..4dc003f271 100644 --- a/keyboards/keebio/iris/rev1_led/keyboard.json +++ b/keyboards/keebio/iris/rev1_led/keyboard.json @@ -52,8 +52,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/iris/rev2/keyboard.json b/keyboards/keebio/iris/rev2/keyboard.json index 37a4764c6b..9ea21851ee 100644 --- a/keyboards/keebio/iris/rev2/keyboard.json +++ b/keyboards/keebio/iris/rev2/keyboard.json @@ -38,8 +38,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": false, diff --git a/keyboards/keebio/laplace/keyboard.json b/keyboards/keebio/laplace/keyboard.json index 3a2ed70905..3ae9f6474b 100644 --- a/keyboards/keebio/laplace/keyboard.json +++ b/keyboards/keebio/laplace/keyboard.json @@ -38,8 +38,7 @@ "rows": ["D3", "F4", "D2", "F5", "D7", "B4", "C6", "E6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/levinson/info.json b/keyboards/keebio/levinson/info.json index 29ae8be8cb..1f4541a5e9 100644 --- a/keyboards/keebio/levinson/info.json +++ b/keyboards/keebio/levinson/info.json @@ -9,7 +9,6 @@ "split": { "enabled": true }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["ortho_4x12"] } diff --git a/keyboards/keebio/nyquist/rev1/keyboard.json b/keyboards/keebio/nyquist/rev1/keyboard.json index f684332bdb..b7cf0ae0d5 100644 --- a/keyboards/keebio/nyquist/rev1/keyboard.json +++ b/keyboards/keebio/nyquist/rev1/keyboard.json @@ -35,8 +35,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT": "LAYOUT_ortho_5x12" }, diff --git a/keyboards/keebio/nyquist/rev2/keyboard.json b/keyboards/keebio/nyquist/rev2/keyboard.json index dede204981..69639db6bf 100644 --- a/keyboards/keebio/nyquist/rev2/keyboard.json +++ b/keyboards/keebio/nyquist/rev2/keyboard.json @@ -40,8 +40,7 @@ "pin": "D0" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT": "LAYOUT_ortho_5x12" }, diff --git a/keyboards/keebio/quefrency/rev1/keyboard.json b/keyboards/keebio/quefrency/rev1/keyboard.json index 00eef3f661..651e3f1362 100644 --- a/keyboards/keebio/quefrency/rev1/keyboard.json +++ b/keyboards/keebio/quefrency/rev1/keyboard.json @@ -46,8 +46,7 @@ "pin": "D0" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": true, diff --git a/keyboards/keebio/rorschach/rev1/keyboard.json b/keyboards/keebio/rorschach/rev1/keyboard.json index 63fe877246..6f07992f1e 100644 --- a/keyboards/keebio/rorschach/rev1/keyboard.json +++ b/keyboards/keebio/rorschach/rev1/keyboard.json @@ -43,8 +43,7 @@ "pin": "D0" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": true, diff --git a/keyboards/keebio/stick/keyboard.json b/keyboards/keebio/stick/keyboard.json index 93d78837eb..b8d1184ec1 100644 --- a/keyboards/keebio/stick/keyboard.json +++ b/keyboards/keebio/stick/keyboard.json @@ -83,8 +83,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": true, "encoder": true, diff --git a/keyboards/keebio/tragicforce68/keyboard.json b/keyboards/keebio/tragicforce68/keyboard.json index 3173ed3f50..f257cc26a8 100644 --- a/keyboards/keebio/tragicforce68/keyboard.json +++ b/keyboards/keebio/tragicforce68/keyboard.json @@ -31,8 +31,7 @@ "levels": 7, "breathing": true }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["68_ansi"], "layout_aliases": { "LAYOUT": "LAYOUT_68_ansi" diff --git a/keyboards/keebio/tukey/keyboard.json b/keyboards/keebio/tukey/keyboard.json index a030f041b7..3f4e5e947a 100644 --- a/keyboards/keebio/tukey/keyboard.json +++ b/keyboards/keebio/tukey/keyboard.json @@ -28,8 +28,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "command": true, diff --git a/keyboards/keebio/viterbi/info.json b/keyboards/keebio/viterbi/info.json index 8b1063ea98..f547514cdb 100644 --- a/keyboards/keebio/viterbi/info.json +++ b/keyboards/keebio/viterbi/info.json @@ -8,7 +8,6 @@ "split": { "enabled": true }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["ortho_5x14"] } diff --git a/keyboards/keebio/wavelet/keyboard.json b/keyboards/keebio/wavelet/keyboard.json index 70430e0f4d..fa14bfd62c 100644 --- a/keyboards/keebio/wavelet/keyboard.json +++ b/keyboards/keebio/wavelet/keyboard.json @@ -23,8 +23,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": true, diff --git a/keyboards/keybage/radpad/keyboard.json b/keyboards/keybage/radpad/keyboard.json index 24f84477a8..d8a3c827df 100644 --- a/keyboards/keybage/radpad/keyboard.json +++ b/keyboards/keybage/radpad/keyboard.json @@ -52,8 +52,7 @@ "ws2812": { "pin": "F4" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT_4x4_encoders": { "layout": [ diff --git a/keyboards/keycapsss/o4l_5x12/keyboard.json b/keyboards/keycapsss/o4l_5x12/keyboard.json index 5a516adca0..7425dc7a0b 100644 --- a/keyboards/keycapsss/o4l_5x12/keyboard.json +++ b/keyboards/keycapsss/o4l_5x12/keyboard.json @@ -48,8 +48,7 @@ "rows": ["F7", "B1", "B3", "B2", "B6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["ortho_5x12"], "layouts": { "LAYOUT_ortho_5x12": { diff --git a/keyboards/keyhive/ergosaurus/keyboard.json b/keyboards/keyhive/ergosaurus/keyboard.json index 9a4810a9a5..754201c2b1 100644 --- a/keyboards/keyhive/ergosaurus/keyboard.json +++ b/keyboards/keyhive/ergosaurus/keyboard.json @@ -42,8 +42,7 @@ "rows": ["B5", "B4", "E6", "D4", "F6", "D3", "D2", "F4", "F5"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["alice_split_bs"], "layout_aliases": { "LAYOUT": "LAYOUT_alice_split_bs" diff --git a/keyboards/keyhive/maypad/keyboard.json b/keyboards/keyhive/maypad/keyboard.json index d0dad2b6cf..adc04dc386 100644 --- a/keyboards/keyhive/maypad/keyboard.json +++ b/keyboards/keyhive/maypad/keyboard.json @@ -27,8 +27,7 @@ "rows": ["C6", "D7", "E6", "B4", "B5"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["ortho_5x4", "numpad_5x4"], "layouts": { "LAYOUT_numpad_5x4": { diff --git a/keyboards/keyhive/navi10/rev0/keyboard.json b/keyboards/keyhive/navi10/rev0/keyboard.json index ab0e63ef1e..9e362651ef 100644 --- a/keyboards/keyhive/navi10/rev0/keyboard.json +++ b/keyboards/keyhive/navi10/rev0/keyboard.json @@ -7,8 +7,7 @@ "rows": ["B6", "B2", "B3", "B4"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": false, diff --git a/keyboards/keyhive/navi10/rev2/keyboard.json b/keyboards/keyhive/navi10/rev2/keyboard.json index ac5148b787..df4d11b6e3 100644 --- a/keyboards/keyhive/navi10/rev2/keyboard.json +++ b/keyboards/keyhive/navi10/rev2/keyboard.json @@ -7,8 +7,7 @@ "rows": ["B6", "B2", "B3", "B4"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": false, diff --git a/keyboards/keyhive/navi10/rev3/keyboard.json b/keyboards/keyhive/navi10/rev3/keyboard.json index 9f403a3513..8fa609c52f 100644 --- a/keyboards/keyhive/navi10/rev3/keyboard.json +++ b/keyboards/keyhive/navi10/rev3/keyboard.json @@ -7,8 +7,7 @@ "rows": ["B6", "B2", "B3", "B4"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": false, diff --git a/keyboards/keyhive/opus/keyboard.json b/keyboards/keyhive/opus/keyboard.json index 6072a59f5d..58bd2238db 100644 --- a/keyboards/keyhive/opus/keyboard.json +++ b/keyboards/keyhive/opus/keyboard.json @@ -24,8 +24,7 @@ "rows": ["B1", "B3", "B2", "B6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keyprez/unicorn/keyboard.json b/keyboards/keyprez/unicorn/keyboard.json index 20aa2e3e73..9a8d39a416 100644 --- a/keyboards/keyprez/unicorn/keyboard.json +++ b/keyboards/keyprez/unicorn/keyboard.json @@ -42,8 +42,7 @@ "pin": "D0" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keysofkings/twokey/keyboard.json b/keyboards/keysofkings/twokey/keyboard.json index 2ec17f2b93..f0c46e34a6 100644 --- a/keyboards/keysofkings/twokey/keyboard.json +++ b/keyboards/keysofkings/twokey/keyboard.json @@ -53,8 +53,7 @@ {"pin_a": "D7", "pin_b": "E6", "resolution": 1} ] }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/kingly_keys/little_foot/keyboard.json b/keyboards/kingly_keys/little_foot/keyboard.json index 2af4432d47..6188bed595 100644 --- a/keyboards/kingly_keys/little_foot/keyboard.json +++ b/keyboards/kingly_keys/little_foot/keyboard.json @@ -47,8 +47,7 @@ "rows": ["F6", "B6", "B2", "B3", "B1"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT_split_space_base": { "layout": [ diff --git a/keyboards/kingly_keys/romac/keyboard.json b/keyboards/kingly_keys/romac/keyboard.json index 40c8dea64f..d9993f9917 100644 --- a/keyboards/kingly_keys/romac/keyboard.json +++ b/keyboards/kingly_keys/romac/keyboard.json @@ -24,8 +24,7 @@ "rows": ["D4", "C6", "D7", "E6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/kingly_keys/romac_plus/keyboard.json b/keyboards/kingly_keys/romac_plus/keyboard.json index b0b2f487cb..db34d4b465 100644 --- a/keyboards/kingly_keys/romac_plus/keyboard.json +++ b/keyboards/kingly_keys/romac_plus/keyboard.json @@ -53,8 +53,7 @@ "ws2812": { "pin": "F7" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/knobgoblin/keyboard.json b/keyboards/knobgoblin/keyboard.json index 4cc00e26cd..d20191c82d 100644 --- a/keyboards/knobgoblin/keyboard.json +++ b/keyboards/knobgoblin/keyboard.json @@ -30,8 +30,7 @@ "bootmagic": { "matrix": [0, 1] }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "debounce": 2, "layouts": { "LAYOUT_ortho": { diff --git a/keyboards/ktec/ergodone/keyboard.json b/keyboards/ktec/ergodone/keyboard.json index 3c9b0208bb..d88d0f2090 100644 --- a/keyboards/ktec/ergodone/keyboard.json +++ b/keyboards/ktec/ergodone/keyboard.json @@ -2,8 +2,7 @@ "keyboard_name": "Ergodone", "manufacturer": "K.T.E.C.", "maintainer": "Yu He", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "usb": { "vid": "0x1209", "pid": "0x2328", diff --git a/keyboards/kumaokobo/kudox/columner/keyboard.json b/keyboards/kumaokobo/kudox/columner/keyboard.json index 4345866382..ac3125abc7 100644 --- a/keyboards/kumaokobo/kudox/columner/keyboard.json +++ b/keyboards/kumaokobo/kudox/columner/keyboard.json @@ -39,8 +39,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": true, diff --git a/keyboards/kumaokobo/kudox/rev1/keyboard.json b/keyboards/kumaokobo/kudox/rev1/keyboard.json index 65c01a798e..f056514c52 100644 --- a/keyboards/kumaokobo/kudox/rev1/keyboard.json +++ b/keyboards/kumaokobo/kudox/rev1/keyboard.json @@ -39,8 +39,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": true, diff --git a/keyboards/kumaokobo/kudox/rev2/keyboard.json b/keyboards/kumaokobo/kudox/rev2/keyboard.json index 9df232c641..64940bfcdd 100644 --- a/keyboards/kumaokobo/kudox/rev2/keyboard.json +++ b/keyboards/kumaokobo/kudox/rev2/keyboard.json @@ -39,8 +39,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": true, diff --git a/keyboards/kumaokobo/kudox/rev3/keyboard.json b/keyboards/kumaokobo/kudox/rev3/keyboard.json index cfd1511123..8c935a80da 100644 --- a/keyboards/kumaokobo/kudox/rev3/keyboard.json +++ b/keyboards/kumaokobo/kudox/rev3/keyboard.json @@ -39,8 +39,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": true, diff --git a/keyboards/kumaokobo/kudox_full/rev1/keyboard.json b/keyboards/kumaokobo/kudox_full/rev1/keyboard.json index b79deec7dc..81a3d5c4dd 100644 --- a/keyboards/kumaokobo/kudox_full/rev1/keyboard.json +++ b/keyboards/kumaokobo/kudox_full/rev1/keyboard.json @@ -39,8 +39,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": true, "mousekey": true, diff --git a/keyboards/kumaokobo/kudox_game/info.json b/keyboards/kumaokobo/kudox_game/info.json index 8750facede..498f2c581d 100644 --- a/keyboards/kumaokobo/kudox_game/info.json +++ b/keyboards/kumaokobo/kudox_game/info.json @@ -6,6 +6,5 @@ "vid": "0xABBA", "pid": "0x9696" }, - "processor": "atmega32u4", - "bootloader": "caterina" + "development_board": "promicro" } diff --git a/keyboards/kumaokobo/pico/65keys/keyboard.json b/keyboards/kumaokobo/pico/65keys/keyboard.json index db2ca9fdca..2e8db34b38 100644 --- a/keyboards/kumaokobo/pico/65keys/keyboard.json +++ b/keyboards/kumaokobo/pico/65keys/keyboard.json @@ -39,8 +39,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": true, diff --git a/keyboards/kumaokobo/pico/70keys/keyboard.json b/keyboards/kumaokobo/pico/70keys/keyboard.json index 00add13874..3a8e41ecba 100644 --- a/keyboards/kumaokobo/pico/70keys/keyboard.json +++ b/keyboards/kumaokobo/pico/70keys/keyboard.json @@ -39,8 +39,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": false, "mousekey": true, From 6347d18a2d4ffa041e175655e8669041e1f45d53 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 28 Jun 2025 22:34:59 +0100 Subject: [PATCH 036/167] Configure boards to use development_board - ABC (#25417) --- keyboards/adpenrose/akemipad/keyboard.json | 3 +-- keyboards/ai/keyboard.json | 3 +-- keyboards/aleblazer/zodiark/keyboard.json | 3 +-- keyboards/alpha/keyboard.json | 3 +-- keyboards/aplyard/aplx6/rev1/keyboard.json | 3 +-- keyboards/aplyard/aplx6/rev2/keyboard.json | 3 +-- keyboards/arabica37/rev1/keyboard.json | 3 +-- keyboards/atreus62/keyboard.json | 3 +-- keyboards/avalanche/v1/keyboard.json | 3 +-- keyboards/avalanche/v2/keyboard.json | 3 +-- keyboards/avalanche/v3/keyboard.json | 3 +-- keyboards/avalanche/v4/keyboard.json | 3 +-- keyboards/b_sides/rev41lp/keyboard.json | 3 +-- keyboards/balloondogcaps/tr90pm/keyboard.json | 3 +-- keyboards/bandominedoni/keyboard.json | 3 +-- keyboards/basekeys/slice/rev1/keyboard.json | 3 +-- keyboards/basekeys/slice/rev1_rgb/keyboard.json | 3 +-- keyboards/beatervan/keyboard.json | 3 +-- keyboards/biacco42/ergo42/rev1/keyboard.json | 3 +-- keyboards/biacco42/meishi/keyboard.json | 3 +-- keyboards/biacco42/meishi2/keyboard.json | 3 +-- keyboards/blockey/keyboard.json | 3 +-- keyboards/bluebell/swoop/keyboard.json | 3 +-- keyboards/bthlabs/geekpad/keyboard.json | 3 +-- keyboards/catch22/keyboard.json | 3 +-- keyboards/chocofly/v1/keyboard.json | 3 +-- keyboards/ckeys/handwire_101/keyboard.json | 3 +-- keyboards/clawsome/coupe/keyboard.json | 3 +-- keyboards/clawsome/doodle/keyboard.json | 3 +-- keyboards/clawsome/fightpad/keyboard.json | 3 +-- keyboards/clawsome/gamebuddy/v1_0/keyboard.json | 3 +-- keyboards/clawsome/gamebuddy/v1_m/keyboard.json | 3 +-- keyboards/clawsome/numeros/keyboard.json | 3 +-- keyboards/clawsome/roadster/keyboard.json | 3 +-- keyboards/contra/keyboard.json | 3 +-- keyboards/crbn/keyboard.json | 3 +-- keyboards/cybergear/macro25/keyboard.json | 3 +-- 37 files changed, 37 insertions(+), 74 deletions(-) diff --git a/keyboards/adpenrose/akemipad/keyboard.json b/keyboards/adpenrose/akemipad/keyboard.json index 2dcfed3b5a..085ca5e406 100644 --- a/keyboards/adpenrose/akemipad/keyboard.json +++ b/keyboards/adpenrose/akemipad/keyboard.json @@ -42,8 +42,7 @@ "qmk": { "tap_keycode_delay": 10 }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/ai/keyboard.json b/keyboards/ai/keyboard.json index bf594d306a..f8a5ba9925 100644 --- a/keyboards/ai/keyboard.json +++ b/keyboards/ai/keyboard.json @@ -2,7 +2,7 @@ "manufacturer": "Louis Dalibard", "keyboard_name": "ai", "maintainer": "make42", - "bootloader": "caterina", + "development_board": "promicro", "diode_direction": "COL2ROW", "features": { "bootmagic": true, @@ -14,7 +14,6 @@ "cols": ["F5", "F6", "F7", "B1"], "rows": ["D0", "D4", "C6", "D7", "D1"] }, - "processor": "atmega32u4", "usb": { "device_version": "1.0.0", "pid": "0x0000", diff --git a/keyboards/aleblazer/zodiark/keyboard.json b/keyboards/aleblazer/zodiark/keyboard.json index fba239866e..6818797809 100644 --- a/keyboards/aleblazer/zodiark/keyboard.json +++ b/keyboards/aleblazer/zodiark/keyboard.json @@ -71,8 +71,7 @@ "pin": "D3" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/alpha/keyboard.json b/keyboards/alpha/keyboard.json index 84a25eb180..7c18d47045 100644 --- a/keyboards/alpha/keyboard.json +++ b/keyboards/alpha/keyboard.json @@ -45,8 +45,7 @@ "rows": ["D4", "B4", "B5"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/aplyard/aplx6/rev1/keyboard.json b/keyboards/aplyard/aplx6/rev1/keyboard.json index 667ebdba02..5e3c35b49b 100644 --- a/keyboards/aplyard/aplx6/rev1/keyboard.json +++ b/keyboards/aplyard/aplx6/rev1/keyboard.json @@ -15,8 +15,7 @@ "rows": ["E6", "B3"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/aplyard/aplx6/rev2/keyboard.json b/keyboards/aplyard/aplx6/rev2/keyboard.json index 4c881534f4..56ec03479f 100644 --- a/keyboards/aplyard/aplx6/rev2/keyboard.json +++ b/keyboards/aplyard/aplx6/rev2/keyboard.json @@ -25,8 +25,7 @@ "qmk": { "tap_keycode_delay": 50 }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/arabica37/rev1/keyboard.json b/keyboards/arabica37/rev1/keyboard.json index d1db9a276c..1433875e29 100644 --- a/keyboards/arabica37/rev1/keyboard.json +++ b/keyboards/arabica37/rev1/keyboard.json @@ -31,8 +31,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/atreus62/keyboard.json b/keyboards/atreus62/keyboard.json index 5fb786fa98..34e19925e9 100644 --- a/keyboards/atreus62/keyboard.json +++ b/keyboards/atreus62/keyboard.json @@ -27,8 +27,7 @@ "rows": ["D2", "D3", "D1", "D0", "D4"] }, "diode_direction": "ROW2COL", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/avalanche/v1/keyboard.json b/keyboards/avalanche/v1/keyboard.json index 0e539bdefc..4a6e2fbcbb 100644 --- a/keyboards/avalanche/v1/keyboard.json +++ b/keyboards/avalanche/v1/keyboard.json @@ -25,8 +25,7 @@ "pin": "D2" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/avalanche/v2/keyboard.json b/keyboards/avalanche/v2/keyboard.json index 2c38fd1056..f1fd8e1a53 100644 --- a/keyboards/avalanche/v2/keyboard.json +++ b/keyboards/avalanche/v2/keyboard.json @@ -39,8 +39,7 @@ "pin": "D2" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/avalanche/v3/keyboard.json b/keyboards/avalanche/v3/keyboard.json index 84191a103f..fb15395524 100644 --- a/keyboards/avalanche/v3/keyboard.json +++ b/keyboards/avalanche/v3/keyboard.json @@ -38,8 +38,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/avalanche/v4/keyboard.json b/keyboards/avalanche/v4/keyboard.json index 2a548c5665..33abc8c96b 100644 --- a/keyboards/avalanche/v4/keyboard.json +++ b/keyboards/avalanche/v4/keyboard.json @@ -53,8 +53,7 @@ "alternating": true } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/b_sides/rev41lp/keyboard.json b/keyboards/b_sides/rev41lp/keyboard.json index 75c7affbf5..39f994eea1 100644 --- a/keyboards/b_sides/rev41lp/keyboard.json +++ b/keyboards/b_sides/rev41lp/keyboard.json @@ -27,8 +27,7 @@ "levels": 7, "max_brightness": 150 }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT_rev41lp": "LAYOUT" }, diff --git a/keyboards/balloondogcaps/tr90pm/keyboard.json b/keyboards/balloondogcaps/tr90pm/keyboard.json index da8f29e977..e103091bd7 100644 --- a/keyboards/balloondogcaps/tr90pm/keyboard.json +++ b/keyboards/balloondogcaps/tr90pm/keyboard.json @@ -2,7 +2,7 @@ "manufacturer": "Balloondog", "keyboard_name": "TR90PM", "maintainer": "balloondogcaps", - "bootloader": "caterina", + "development_board": "promicro", "diode_direction": "COL2ROW", "features": { "bootmagic": true, @@ -14,7 +14,6 @@ "cols": ["D1", "D0", "D4"], "rows": ["C6", "D7", "E6"] }, - "processor": "atmega32u4", "usb": { "device_version": "1.0.0", "pid": "0x0002", diff --git a/keyboards/bandominedoni/keyboard.json b/keyboards/bandominedoni/keyboard.json index 41212aedef..f6ea0f43c3 100644 --- a/keyboards/bandominedoni/keyboard.json +++ b/keyboards/bandominedoni/keyboard.json @@ -47,8 +47,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/basekeys/slice/rev1/keyboard.json b/keyboards/basekeys/slice/rev1/keyboard.json index a6097e560a..209e4ef57a 100644 --- a/keyboards/basekeys/slice/rev1/keyboard.json +++ b/keyboards/basekeys/slice/rev1/keyboard.json @@ -30,8 +30,7 @@ "pin": "D2" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/basekeys/slice/rev1_rgb/keyboard.json b/keyboards/basekeys/slice/rev1_rgb/keyboard.json index d6d7b8ad45..6747729363 100644 --- a/keyboards/basekeys/slice/rev1_rgb/keyboard.json +++ b/keyboards/basekeys/slice/rev1_rgb/keyboard.json @@ -56,8 +56,7 @@ "twinkle": true } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/beatervan/keyboard.json b/keyboards/beatervan/keyboard.json index f1a6380727..685f713501 100644 --- a/keyboards/beatervan/keyboard.json +++ b/keyboards/beatervan/keyboard.json @@ -26,8 +26,7 @@ "rows": ["D1", "D0", "D4", "C6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/biacco42/ergo42/rev1/keyboard.json b/keyboards/biacco42/ergo42/rev1/keyboard.json index 4639bf9639..2ccf9887df 100644 --- a/keyboards/biacco42/ergo42/rev1/keyboard.json +++ b/keyboards/biacco42/ergo42/rev1/keyboard.json @@ -36,8 +36,7 @@ "pin": "D0" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT": "LAYOUT_ortho_4x14" }, diff --git a/keyboards/biacco42/meishi/keyboard.json b/keyboards/biacco42/meishi/keyboard.json index 99f7c5debb..08f2edcb38 100644 --- a/keyboards/biacco42/meishi/keyboard.json +++ b/keyboards/biacco42/meishi/keyboard.json @@ -26,8 +26,7 @@ "rows": ["B5"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/biacco42/meishi2/keyboard.json b/keyboards/biacco42/meishi2/keyboard.json index 137c429ff1..9e630c7df8 100644 --- a/keyboards/biacco42/meishi2/keyboard.json +++ b/keyboards/biacco42/meishi2/keyboard.json @@ -26,8 +26,7 @@ "rows": ["D7", "E6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/blockey/keyboard.json b/keyboards/blockey/keyboard.json index e9c5ceafa1..a8d7113846 100644 --- a/keyboards/blockey/keyboard.json +++ b/keyboards/blockey/keyboard.json @@ -46,8 +46,7 @@ "rows": ["D3", "D1", "D4", "E6", "B5", "D2", "F6", "B3", "B2", "B6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/bluebell/swoop/keyboard.json b/keyboards/bluebell/swoop/keyboard.json index 08f61ac20d..1ab8cd090a 100644 --- a/keyboards/bluebell/swoop/keyboard.json +++ b/keyboards/bluebell/swoop/keyboard.json @@ -53,8 +53,7 @@ "pin": "D2" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["split_3x5_3"], "layouts": { "LAYOUT_split_3x5_3": { diff --git a/keyboards/bthlabs/geekpad/keyboard.json b/keyboards/bthlabs/geekpad/keyboard.json index 1ea302612a..2519925333 100644 --- a/keyboards/bthlabs/geekpad/keyboard.json +++ b/keyboards/bthlabs/geekpad/keyboard.json @@ -19,8 +19,7 @@ "rows": ["F4", "F5", "F6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/catch22/keyboard.json b/keyboards/catch22/keyboard.json index 3c1d9c5777..22aebe844a 100644 --- a/keyboards/catch22/keyboard.json +++ b/keyboards/catch22/keyboard.json @@ -38,8 +38,7 @@ "rows": ["B6", "B2", "B3", "B1", "F7"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/chocofly/v1/keyboard.json b/keyboards/chocofly/v1/keyboard.json index ae2a710070..7765d721f4 100644 --- a/keyboards/chocofly/v1/keyboard.json +++ b/keyboards/chocofly/v1/keyboard.json @@ -25,8 +25,7 @@ {"pin_a": "D3", "pin_b": "D2", "resolution": 2} ] }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ckeys/handwire_101/keyboard.json b/keyboards/ckeys/handwire_101/keyboard.json index 781cd25c83..088d3b5227 100644 --- a/keyboards/ckeys/handwire_101/keyboard.json +++ b/keyboards/ckeys/handwire_101/keyboard.json @@ -25,8 +25,7 @@ "rows": ["F4", "F5", "F6", "F7"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT": "LAYOUT_ortho_4x4" }, diff --git a/keyboards/clawsome/coupe/keyboard.json b/keyboards/clawsome/coupe/keyboard.json index 576b8e7164..8910221eb6 100644 --- a/keyboards/clawsome/coupe/keyboard.json +++ b/keyboards/clawsome/coupe/keyboard.json @@ -21,8 +21,7 @@ "rows": ["D7", "D2", "C6", "B5", "D4", "B4", "D0", "D3", "D1", "E6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["60_ansi"], "layouts": { "LAYOUT_60_ansi": { diff --git a/keyboards/clawsome/doodle/keyboard.json b/keyboards/clawsome/doodle/keyboard.json index 0b3f4cc4e7..51eeacc02c 100644 --- a/keyboards/clawsome/doodle/keyboard.json +++ b/keyboards/clawsome/doodle/keyboard.json @@ -21,8 +21,7 @@ "rows": ["D4", "C6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/clawsome/fightpad/keyboard.json b/keyboards/clawsome/fightpad/keyboard.json index ac5f83af23..2ac2fdff0d 100644 --- a/keyboards/clawsome/fightpad/keyboard.json +++ b/keyboards/clawsome/fightpad/keyboard.json @@ -19,8 +19,7 @@ "rows": ["B5", "B6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/clawsome/gamebuddy/v1_0/keyboard.json b/keyboards/clawsome/gamebuddy/v1_0/keyboard.json index 978a3ad974..ebfd7970c4 100644 --- a/keyboards/clawsome/gamebuddy/v1_0/keyboard.json +++ b/keyboards/clawsome/gamebuddy/v1_0/keyboard.json @@ -21,8 +21,7 @@ "rows": ["D1", "D0", "E6", "B3", "B2"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/clawsome/gamebuddy/v1_m/keyboard.json b/keyboards/clawsome/gamebuddy/v1_m/keyboard.json index dd9f39f97e..1a0014a1ac 100644 --- a/keyboards/clawsome/gamebuddy/v1_m/keyboard.json +++ b/keyboards/clawsome/gamebuddy/v1_m/keyboard.json @@ -21,8 +21,7 @@ "rows": ["C6", "D7", "B5", "B3", "B2"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/clawsome/numeros/keyboard.json b/keyboards/clawsome/numeros/keyboard.json index 728a1a1853..2b9e0331ab 100644 --- a/keyboards/clawsome/numeros/keyboard.json +++ b/keyboards/clawsome/numeros/keyboard.json @@ -21,8 +21,7 @@ "rows": ["D0", "C6", "B2", "B6", "B5"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["numpad_5x4"], "layouts": { "LAYOUT_numpad_5x4": { diff --git a/keyboards/clawsome/roadster/keyboard.json b/keyboards/clawsome/roadster/keyboard.json index 895b97721b..1300a29623 100644 --- a/keyboards/clawsome/roadster/keyboard.json +++ b/keyboards/clawsome/roadster/keyboard.json @@ -21,8 +21,7 @@ "rows": ["D2", "D3", "D0", "D1"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/contra/keyboard.json b/keyboards/contra/keyboard.json index b3179564fe..5c02afd061 100644 --- a/keyboards/contra/keyboard.json +++ b/keyboards/contra/keyboard.json @@ -13,8 +13,7 @@ "pid": "0x0001", "device_version": "0.0.1" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "diode_direction": "COL2ROW", "matrix_pins": { "cols": ["F4", "F5", "B5", "B4", "E6", "D7", "C6", "D4", "D0", "D1", "D2", "D3"], diff --git a/keyboards/crbn/keyboard.json b/keyboards/crbn/keyboard.json index a2666c6c52..a0fd785111 100644 --- a/keyboards/crbn/keyboard.json +++ b/keyboards/crbn/keyboard.json @@ -31,8 +31,7 @@ {"pin_a": "F5", "pin_b": "F4", "resolution": 2} ] }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["ortho_4x12", "planck_mit"], "layout_aliases": { "LAYOUT_crbn_1x2u": "LAYOUT_planck_mit", diff --git a/keyboards/cybergear/macro25/keyboard.json b/keyboards/cybergear/macro25/keyboard.json index 14ea5cc77d..8b0bcc8ef4 100644 --- a/keyboards/cybergear/macro25/keyboard.json +++ b/keyboards/cybergear/macro25/keyboard.json @@ -8,8 +8,7 @@ "pid": "0x69A1", "device_version": "0.0.1" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "diode_direction": "COL2ROW", "layouts": { "LAYOUT_ortho_2x5": { From 711b109246dc7d7e3881ccf70dce4adceefb4b02 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 29 Jun 2025 02:29:33 +0100 Subject: [PATCH 037/167] Mitigate VIA keylogger security issues (#25414) Co-authored-by: Nick Brassel --- builddefs/common_features.mk | 3 +++ docs/ChangeLog/20250831/PR25414.md | 5 +++++ quantum/via.c | 8 ++++++++ 3 files changed, 16 insertions(+) create mode 100644 docs/ChangeLog/20250831/PR25414.md diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk index 90231c9a96..c122afcff9 100644 --- a/builddefs/common_features.mk +++ b/builddefs/common_features.mk @@ -635,6 +635,9 @@ ifeq ($(strip $(VIA_ENABLE)), yes) RAW_ENABLE := yes BOOTMAGIC_ENABLE := yes TRI_LAYER_ENABLE := yes + ifeq ($(strip $(VIA_INSECURE)), yes) + OPT_DEFS += -DVIA_INSECURE + endif endif ifeq ($(strip $(RAW_ENABLE)), yes) diff --git a/docs/ChangeLog/20250831/PR25414.md b/docs/ChangeLog/20250831/PR25414.md new file mode 100644 index 0000000000..bee901c6ca --- /dev/null +++ b/docs/ChangeLog/20250831/PR25414.md @@ -0,0 +1,5 @@ +# Mitigate VIA keylogger security issues [#25414](https://github.com/qmk/qmk_firmware/pull/25414) + +VIA's keyboard matrix testing functionality, which allows users to identify active key presses, has been identified as a potential security concern by community members and security researchers. This feature has been demonstrated to enable unauthorized keystroke capture, with documented examples showing how malicious scripts could exploit this capability to create keyloggers. A recent security assessment revealed that user credentials could be compromised by exploiting the matrix testing function combined with VIA's keycode assignment queries. In this attack scenario, a script could remain active during a locked session and capture password input when users authenticate upon return. + +The QMK team notified the VIA team of this security vulnerability on May 17, 2022, and made multiple subsequent attempts to coordinate a mitigation strategy. Despite repeated outreach, the VIA team has provided no acknowledgment or response to these security concerns. Given the severity of the potential security implications and the lack of engagement from the VIA team, the QMK team has unilaterally implemented a security enhancement that modifies the keyboard matrix testing functionality to prevent the reporting of key press events. This change prioritizes user security and data protection over potential feature compatibility concerns within VIA. diff --git a/quantum/via.c b/quantum/via.c index 3682b4ab2b..9446811af6 100644 --- a/quantum/via.c +++ b/quantum/via.c @@ -22,6 +22,10 @@ # error "DYNAMIC_KEYMAP_ENABLE is not enabled" #endif +#ifdef VIA_INSECURE +# pragma message "VIA_INSECURE is enabled - firmware is susceptible to keyloggers" +#endif + #include "via.h" #include "raw_hid.h" @@ -318,7 +322,11 @@ void raw_hid_receive(uint8_t *data, uint8_t length) { uint8_t rows = 28 / ((MATRIX_COLS + 7) / 8); uint8_t i = 2; for (uint8_t row = 0; row < rows && row + offset < MATRIX_ROWS; row++) { +#ifdef VIA_INSECURE matrix_row_t value = matrix_get_row(row + offset); +#else + matrix_row_t value = 0; +#endif #if (MATRIX_COLS > 24) command_data[i++] = (value >> 24) & 0xFF; #endif From 9e103614f8aa7420305f11b8b3fd3038d0656121 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 4 Jul 2025 20:09:27 +0100 Subject: [PATCH 038/167] Fix invalid layer API usage in RGB Matrix docs (#25449) --- docs/features/rgb_matrix.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/rgb_matrix.md b/docs/features/rgb_matrix.md index ca50fc5257..130c1c5a5e 100644 --- a/docs/features/rgb_matrix.md +++ b/docs/features/rgb_matrix.md @@ -486,7 +486,7 @@ This example sets the modifiers to be a specific color based on the layer state. bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { hsv_t hsv = {0, 255, 255}; - if (layer_state_is(layer_state, 2)) { + if (get_highest_layer(layer_state|default_layer_state) == 2) { hsv = (hsv_t){130, 255, 255}; } else { hsv = (hsv_t){30, 255, 255}; From da7811f82aad8997495750c9ef70117f9934f340 Mon Sep 17 00:00:00 2001 From: SneakboxKB <67670271+SneakboxKB@users.noreply.github.com> Date: Sun, 6 Jul 2025 00:59:20 -0500 Subject: [PATCH 039/167] Add lilBAE support (#25259) --- keyboards/sneakbox/lilbae/keyboard.json | 69 +++++++++++++++++++ .../lilbae/keymaps/ansi_enter/keymap.c | 29 ++++++++ .../sneakbox/lilbae/keymaps/default/keymap.c | 28 ++++++++ .../sneakbox/lilbae/keymaps/iso/keymap.c | 35 ++++++++++ .../sneakbox/lilbae/keymaps/iso/rules.mk | 1 + .../lilbae/keymaps/split_ansi_enter/keymap.c | 35 ++++++++++ .../lilbae/keymaps/split_ansi_enter/rules.mk | 1 + keyboards/sneakbox/lilbae/readme.md | 27 ++++++++ 8 files changed, 225 insertions(+) create mode 100644 keyboards/sneakbox/lilbae/keyboard.json create mode 100644 keyboards/sneakbox/lilbae/keymaps/ansi_enter/keymap.c create mode 100644 keyboards/sneakbox/lilbae/keymaps/default/keymap.c create mode 100644 keyboards/sneakbox/lilbae/keymaps/iso/keymap.c create mode 100644 keyboards/sneakbox/lilbae/keymaps/iso/rules.mk create mode 100644 keyboards/sneakbox/lilbae/keymaps/split_ansi_enter/keymap.c create mode 100644 keyboards/sneakbox/lilbae/keymaps/split_ansi_enter/rules.mk create mode 100644 keyboards/sneakbox/lilbae/readme.md diff --git a/keyboards/sneakbox/lilbae/keyboard.json b/keyboards/sneakbox/lilbae/keyboard.json new file mode 100644 index 0000000000..b1aa92cb68 --- /dev/null +++ b/keyboards/sneakbox/lilbae/keyboard.json @@ -0,0 +1,69 @@ +{ + "keyboard_name": "Lil' BAE", + "manufacturer": "Sneakbox", + "maintainer": "mujimanic", + "bootloader": "atmel-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "D2", "pin_b": "D3"} + ] + }, + "bootmagic": { + "matrix": [0, 2] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "cols": ["B7", "D4", "D5", "D6"], + "rows": ["B4"] + }, + "processor": "atmega32u2", + "url": "https://sneakbox.com", + "usb": { + "device_version": "0.0.1", + "pid": "0x0012", + "vid": "0x5342" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 1.75, "y": 0, "w": 1.5}, + {"matrix": [0, 1], "x": 0, "y": 1}, + {"matrix": [0, 2], "x": 1, "y": 1}, + {"matrix": [0, 3], "x": 2, "y": 1, "w": 1.25} + ] + }, + "LAYOUT_ansi_enter": { + "layout": [ + {"matrix": [0, 0], "x": 0.75, "y": 0, "w": 1.5}, + {"matrix": [0, 2], "x": 0, "y": 1, "w": 2.25} + ] + }, + "LAYOUT_bae": { + "layout": [ + {"matrix": [0, 2], "x": 0, "y": 0, "w": 2.25, "h": 2} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"matrix": [0, 0], "x": 1, "y": 0, "w": 1.25, "h": 2}, + {"matrix": [0, 1], "x": 0, "y": 1} + ] + }, + "LAYOUT_split_ansi_enter": { + "layout": [ + {"matrix": [0, 0], "x": 0.75, "y": 0, "w": 1.5}, + {"matrix": [0, 1], "x": 0, "y": 1}, + {"matrix": [0, 3], "x": 1, "y": 1, "w": 1.25} + ] + } + } +} diff --git a/keyboards/sneakbox/lilbae/keymaps/ansi_enter/keymap.c b/keyboards/sneakbox/lilbae/keymaps/ansi_enter/keymap.c new file mode 100644 index 0000000000..775d33ff15 --- /dev/null +++ b/keyboards/sneakbox/lilbae/keymaps/ansi_enter/keymap.c @@ -0,0 +1,29 @@ +/* +Copyright 2022 Bryan Ong + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_ansi_enter( + KC_BSLS, + KC_ENT) +}; diff --git a/keyboards/sneakbox/lilbae/keymaps/default/keymap.c b/keyboards/sneakbox/lilbae/keymaps/default/keymap.c new file mode 100644 index 0000000000..4a4f4c80a6 --- /dev/null +++ b/keyboards/sneakbox/lilbae/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* +Copyright 2022 Bryan Ong + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_bae( + KC_ENT) +}; diff --git a/keyboards/sneakbox/lilbae/keymaps/iso/keymap.c b/keyboards/sneakbox/lilbae/keymaps/iso/keymap.c new file mode 100644 index 0000000000..3f15660c07 --- /dev/null +++ b/keyboards/sneakbox/lilbae/keymaps/iso/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2022 Bryan Ong + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_iso( + KC_ENT, + KC_UNDO ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = { ENCODER_CCW_CW(KC_1, KC_2)} +}; +#endif diff --git a/keyboards/sneakbox/lilbae/keymaps/iso/rules.mk b/keyboards/sneakbox/lilbae/keymaps/iso/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/sneakbox/lilbae/keymaps/iso/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/sneakbox/lilbae/keymaps/split_ansi_enter/keymap.c b/keyboards/sneakbox/lilbae/keymaps/split_ansi_enter/keymap.c new file mode 100644 index 0000000000..00d44fb935 --- /dev/null +++ b/keyboards/sneakbox/lilbae/keymaps/split_ansi_enter/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2022 Bryan Ong + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_split_ansi_enter( + KC_BSLS, + KC_UNDO, KC_LGUI) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = { ENCODER_CCW_CW(KC_1, KC_2)} +}; +#endif diff --git a/keyboards/sneakbox/lilbae/keymaps/split_ansi_enter/rules.mk b/keyboards/sneakbox/lilbae/keymaps/split_ansi_enter/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/sneakbox/lilbae/keymaps/split_ansi_enter/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/sneakbox/lilbae/readme.md b/keyboards/sneakbox/lilbae/readme.md new file mode 100644 index 0000000000..f637df1c1b --- /dev/null +++ b/keyboards/sneakbox/lilbae/readme.md @@ -0,0 +1,27 @@ +# Sneakbox Lil' BAE + +![Lil' BAE](https://i.imgur.com/WGNgOhM.jpeg) + +A small macropad featuring key positions for a Big-Ass Enter (Reverse L-shaped enter key) + +Keyboard Maintainer: [mujimanic](https://sneakbox.com) +Hardware Supported: Lil' BAE Case +Hardware Availability: [sneakbox.design](https://sneakbox.com/products/lil-bae-macropad) + +Make example for this keyboard (after setting up your build environment): + + make sneakbox/lilbae:default + +Flashing example for this keyboard: + + make sneakbox/lilbae: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,2) in the matrix (position mapped to ANSI enter key) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From 0b33318a249eda0b0163e67a79db4a75bbc7fffd Mon Sep 17 00:00:00 2001 From: Thanh Son Tran <62438883+trnthsn@users.noreply.github.com> Date: Sun, 6 Jul 2025 13:00:39 +0700 Subject: [PATCH 040/167] [Update] E8ghtyNeo caps indicator (#25009) --- keyboards/trnthsn/e8ghtyneo/e8ghtyneo.c | 24 ++++++++++++++++++++++++ keyboards/trnthsn/e8ghtyneo/info.json | 7 +++++-- 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 keyboards/trnthsn/e8ghtyneo/e8ghtyneo.c diff --git a/keyboards/trnthsn/e8ghtyneo/e8ghtyneo.c b/keyboards/trnthsn/e8ghtyneo/e8ghtyneo.c new file mode 100644 index 0000000000..b1af2c63a8 --- /dev/null +++ b/keyboards/trnthsn/e8ghtyneo/e8ghtyneo.c @@ -0,0 +1,24 @@ +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#include "quantum.h" + +#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS) +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,4, HSV_GREEN} +); +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_capslock_layer +); + +void keyboard_post_init_kb(void) { + rgblight_layers = my_rgb_layers; + keyboard_post_init_user(); +} +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if (res) { + rgblight_set_layer_state(0, led_state.caps_lock); + } + return res; +} +#endif diff --git a/keyboards/trnthsn/e8ghtyneo/info.json b/keyboards/trnthsn/e8ghtyneo/info.json index e81c5fbb22..6bd6d5ca66 100644 --- a/keyboards/trnthsn/e8ghtyneo/info.json +++ b/keyboards/trnthsn/e8ghtyneo/info.json @@ -10,8 +10,8 @@ "nkro": true }, "matrix_pins": { - "cols": ["A9", "A8", "B14", "B12", "B11", "B10", "B0", "A7", "A6", "A4", "A3", "A2", "A1", "A0", "C13", "B9", "B7"], - "rows": ["B8", "A10", "B1", "A5", "C15", "C14"] + "cols": ["A9", "A8", "B14", "B12", "B11", "B10", "B0", "A7", "A6", "A5", "A3", "A2", "A1", "A0", "C13", "B9", "B7"], + "rows": ["B8", "A10", "B1", "A4", "C15", "C14"] }, "rgblight": { "animations": { @@ -28,6 +28,9 @@ "default": { "animation": "rainbow_mood" }, + "layers": { + "enabled": true, + }, "led_count": 4, "sleep": true }, From 90b5c170347e7a46a8f56628a9830ea5a719a326 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sun, 6 Jul 2025 07:20:48 +0100 Subject: [PATCH 041/167] Fix SPI bus lock issue in spi_start_extended when using mutual exclusion (#25447) --- platforms/chibios/drivers/spi_master.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/platforms/chibios/drivers/spi_master.c b/platforms/chibios/drivers/spi_master.c index f5e48edfda..84d027bf49 100644 --- a/platforms/chibios/drivers/spi_master.c +++ b/platforms/chibios/drivers/spi_master.c @@ -130,10 +130,16 @@ bool spi_start_extended(spi_start_config_t *start_config) { #endif // (SPI_USE_MUTUAL_EXCLUSION == TRUE) if (spiStarted) { +#if (SPI_USE_MUTUAL_EXCLUSION == TRUE) + spiReleaseBus(&SPI_DRIVER); +#endif // (SPI_USE_MUTUAL_EXCLUSION == TRUE) return false; } #if SPI_SELECT_MODE != SPI_SELECT_MODE_NONE if (start_config->slave_pin == NO_PIN) { +# if (SPI_USE_MUTUAL_EXCLUSION == TRUE) + spiReleaseBus(&SPI_DRIVER); +# endif // (SPI_USE_MUTUAL_EXCLUSION == TRUE) return false; } #endif @@ -146,10 +152,16 @@ bool spi_start_extended(spi_start_config_t *start_config) { # if defined(AT32F415) if (roundedDivisor < 2 || roundedDivisor > 1024) { +# if (SPI_USE_MUTUAL_EXCLUSION == TRUE) + spiReleaseBus(&SPI_DRIVER); +# endif // (SPI_USE_MUTUAL_EXCLUSION == TRUE) return false; } # else if (roundedDivisor < 2 || roundedDivisor > 256) { +# if (SPI_USE_MUTUAL_EXCLUSION == TRUE) + spiReleaseBus(&SPI_DRIVER); +# endif // (SPI_USE_MUTUAL_EXCLUSION == TRUE) return false; } # endif @@ -234,6 +246,9 @@ bool spi_start_extended(spi_start_config_t *start_config) { } if (start_config->divisor < 1) { +# if (SPI_USE_MUTUAL_EXCLUSION == TRUE) + spiReleaseBus(&SPI_DRIVER); +# endif // (SPI_USE_MUTUAL_EXCLUSION == TRUE) return false; } From e92f1fb220e3556e707d51db44bf9dbec98ed65d Mon Sep 17 00:00:00 2001 From: jack Date: Sun, 6 Jul 2025 00:42:42 -0600 Subject: [PATCH 042/167] Refactor `helix/pico` (#25428) Refactor helix/pico - Updates keyboard aliases accordingly - Removes redundant back, base, sc, under, & qmk_conf revisions - Migrates legacy defines and configuration to keyboard.json - Tidy's keymap and migrates to JSON - Fixes RGB configuration to illuminate 25 LEDs per half - Enables standard features (bootmagic, extrakey, etc.) --- data/mappings/keyboard_aliases.hjson | 9 - keyboards/helix/pico/back/keyboard.json | 1 - keyboards/helix/pico/back/rules.mk | 1 - keyboards/helix/pico/base/keyboard.json | 1 - keyboards/helix/pico/config.h | 97 +----- .../helix/pico/{info.json => keyboard.json} | 61 ++-- keyboards/helix/pico/keymaps/default/config.h | 42 --- keyboards/helix/pico/keymaps/default/keymap.c | 329 ------------------ .../helix/pico/keymaps/default/keymap.json | 25 ++ .../helix/pico/keymaps/default/readme.md | 137 -------- .../helix/pico/keymaps/default/readme_jp.md | 138 -------- keyboards/helix/pico/keymaps/default/rules.mk | 11 - .../override_helix_options.mk-maintenance | 42 --- keyboards/helix/pico/pico.c | 37 -- keyboards/helix/pico/pico.h | 24 -- keyboards/helix/pico/post_config.h | 7 - keyboards/helix/pico/post_rules.mk | 77 ---- keyboards/helix/pico/qmk_conf/config.h | 28 -- keyboards/helix/pico/qmk_conf/keyboard.json | 6 - keyboards/helix/pico/rules.mk | 5 - keyboards/helix/pico/sc/keyboard.json | 1 - keyboards/helix/pico/sc/rules.mk | 1 - keyboards/helix/pico/under/keyboard.json | 1 - keyboards/helix/pico/under/rules.mk | 1 - 24 files changed, 60 insertions(+), 1022 deletions(-) delete mode 100644 keyboards/helix/pico/back/keyboard.json delete mode 100644 keyboards/helix/pico/back/rules.mk delete mode 100644 keyboards/helix/pico/base/keyboard.json rename keyboards/helix/pico/{info.json => keyboard.json} (84%) delete mode 100644 keyboards/helix/pico/keymaps/default/config.h delete mode 100644 keyboards/helix/pico/keymaps/default/keymap.c create mode 100644 keyboards/helix/pico/keymaps/default/keymap.json delete mode 100644 keyboards/helix/pico/keymaps/default/readme.md delete mode 100644 keyboards/helix/pico/keymaps/default/readme_jp.md delete mode 100644 keyboards/helix/pico/keymaps/default/rules.mk delete mode 100644 keyboards/helix/pico/override_helix_options.mk-maintenance delete mode 100644 keyboards/helix/pico/pico.c delete mode 100644 keyboards/helix/pico/pico.h delete mode 100644 keyboards/helix/pico/post_config.h delete mode 100644 keyboards/helix/pico/post_rules.mk delete mode 100644 keyboards/helix/pico/qmk_conf/config.h delete mode 100644 keyboards/helix/pico/qmk_conf/keyboard.json delete mode 100644 keyboards/helix/pico/rules.mk delete mode 100644 keyboards/helix/pico/sc/keyboard.json delete mode 100644 keyboards/helix/pico/sc/rules.mk delete mode 100644 keyboards/helix/pico/under/keyboard.json delete mode 100644 keyboards/helix/pico/under/rules.mk diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index 13c3b81305..e976ff6cac 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -257,12 +257,6 @@ "handwired/jscotto/scottostarter": { "target": "handwired/scottokeebs/scottostarter" }, - "helix/pico/sc/back": { - "target": "helix/pico/sc" - }, - "helix/pico/sc/under": { - "target": "helix/pico/sc" - }, "helix/rev2/back/oled": { "target": "helix/rev2/back" }, @@ -2284,9 +2278,6 @@ "handwired/dygma/raise": { "target": "handwired/dygma/raise/ansi" }, - "helix/pico": { - "target": "helix/pico/base" - }, "helix": { "target": "helix/rev2/base" }, diff --git a/keyboards/helix/pico/back/keyboard.json b/keyboards/helix/pico/back/keyboard.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/keyboards/helix/pico/back/keyboard.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/keyboards/helix/pico/back/rules.mk b/keyboards/helix/pico/back/rules.mk deleted file mode 100644 index 066fffb74a..0000000000 --- a/keyboards/helix/pico/back/rules.mk +++ /dev/null @@ -1 +0,0 @@ -LED_BACK_ENABLE = yes diff --git a/keyboards/helix/pico/base/keyboard.json b/keyboards/helix/pico/base/keyboard.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/keyboards/helix/pico/base/keyboard.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/keyboards/helix/pico/config.h b/keyboards/helix/pico/config.h index 6ba88a559c..13de9d5178 100644 --- a/keyboards/helix/pico/config.h +++ b/keyboards/helix/pico/config.h @@ -1,96 +1,5 @@ -/* -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert -Copyright 2018 MakotoKurauchi - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define QUICK_TAP_TERM 0 - -#define SERIAL_SLAVE_BUFFER_LENGTH ((MATRIX_ROWS)/2) -#define SERIAL_MASTER_BUFFER_LENGTH ((MATRIX_ROWS)/2) - -/* key matrix size */ -// Rows are doubled-up -#define MATRIX_ROWS 8 -#define MATRIX_ROW_PINS { D4, C6, D7, E6 } - -// wiring of each half -#define MATRIX_COLS 7 -#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 } -// #define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - -/* Audio */ -#ifdef AUDIO_ENABLE - #define AUDIO_PIN B5 -#endif - -// Helix keyboard RGB LED support -// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes -#ifdef RGBLED_BACK - #define RGBLIGHT_LED_COUNT 25 -#else - #define RGBLIGHT_LED_COUNT 6 -#endif - -#ifndef IOS_DEVICE_ENABLE - #if RGBLIGHT_LED_COUNT <= 6 - #define RGBLIGHT_LIMIT_VAL 255 - #else - #define RGBLIGHT_LIMIT_VAL 130 - #endif - #define RGBLIGHT_VAL_STEP 17 -#else - #if RGBLIGHT_LED_COUNT <= 6 - #define RGBLIGHT_LIMIT_VAL 90 - #else - #define RGBLIGHT_LIMIT_VAL 45 - #endif - #define RGBLIGHT_VAL_STEP 4 -#endif - -#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) -// USB_MAX_POWER_CONSUMPTION value for Helix keyboard -// 120 RGBoff -// 330 RGB 6 -// 300 RGB 32 -// 310 OLED & RGB 32 - #define USB_MAX_POWER_CONSUMPTION 400 -#else - // fix iPhone and iPad power adapter issue - // iOS device need lessthan 100 - #define USB_MAX_POWER_CONSUMPTION 100 -#endif - -/* - * 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 +#define AUDIO_PIN B5 diff --git a/keyboards/helix/pico/info.json b/keyboards/helix/pico/keyboard.json similarity index 84% rename from keyboards/helix/pico/info.json rename to keyboards/helix/pico/keyboard.json index 7909bb0b30..61ea537576 100644 --- a/keyboards/helix/pico/info.json +++ b/keyboards/helix/pico/keyboard.json @@ -1,12 +1,33 @@ { - "keyboard_name": "HelixPico", "manufacturer": "Yushakobo", - "url": "https://github.com/MakotoKurauchi/helix", + "keyboard_name": "Helix Pico", "maintainer": "MakotoKurauchi", - "usb": { - "vid": "0x3265", - "pid": "0x0001", - "device_version": "0.0.2" + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "audio": false, + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"], + "rows": ["D4", "C6", "D7", "E6"] + }, + "rgblight": { + "animations": { + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true + }, + "led_count": 50, + "max_brightness": 45, + "split_count": [25, 25] }, "split": { "enabled": true, @@ -14,26 +35,15 @@ "pin": "D2" } }, - "tapping": { - "term": 100 - }, - "rgblight": { - "hue_steps": 10, - "animations": { - "breathing": true, - "rainbow_mood": true, - "rainbow_swirl": true, - "snake": true, - "knight": true, - "christmas": true, - "static_gradient": true - } + "url": "https://shop.yushakobo.jp/products/helixpico-pcb", + "usb": { + "device_version": "0.0.2", + "pid": "0x0001", + "vid": "0x3265" }, "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", "layouts": { "LAYOUT": { "layout": [ @@ -43,42 +53,36 @@ {"matrix": [0, 3], "x": 3, "y": 0}, {"matrix": [0, 4], "x": 4, "y": 0}, {"matrix": [0, 5], "x": 5, "y": 0}, - {"matrix": [4, 5], "x": 9, "y": 0}, {"matrix": [4, 4], "x": 10, "y": 0}, {"matrix": [4, 3], "x": 11, "y": 0}, {"matrix": [4, 2], "x": 12, "y": 0}, {"matrix": [4, 1], "x": 13, "y": 0}, {"matrix": [4, 0], "x": 14, "y": 0}, - {"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1}, {"matrix": [1, 2], "x": 2, "y": 1}, {"matrix": [1, 3], "x": 3, "y": 1}, {"matrix": [1, 4], "x": 4, "y": 1}, {"matrix": [1, 5], "x": 5, "y": 1}, - {"matrix": [5, 5], "x": 9, "y": 1}, {"matrix": [5, 4], "x": 10, "y": 1}, {"matrix": [5, 3], "x": 11, "y": 1}, {"matrix": [5, 2], "x": 12, "y": 1}, {"matrix": [5, 1], "x": 13, "y": 1}, {"matrix": [5, 0], "x": 14, "y": 1}, - {"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, {"matrix": [2, 2], "x": 2, "y": 2}, {"matrix": [2, 3], "x": 3, "y": 2}, {"matrix": [2, 4], "x": 4, "y": 2}, {"matrix": [2, 5], "x": 5, "y": 2}, - {"matrix": [6, 5], "x": 9, "y": 2}, {"matrix": [6, 4], "x": 10, "y": 2}, {"matrix": [6, 3], "x": 11, "y": 2}, {"matrix": [6, 2], "x": 12, "y": 2}, {"matrix": [6, 1], "x": 13, "y": 2}, {"matrix": [6, 0], "x": 14, "y": 2}, - {"matrix": [3, 0], "x": 0, "y": 3}, {"matrix": [3, 1], "x": 1, "y": 3}, {"matrix": [3, 2], "x": 2, "y": 3}, @@ -86,7 +90,6 @@ {"matrix": [3, 4], "x": 4, "y": 3}, {"matrix": [3, 5], "x": 5, "y": 3}, {"matrix": [3, 6], "x": 6, "y": 3}, - {"matrix": [7, 6], "x": 8, "y": 3}, {"matrix": [7, 5], "x": 9, "y": 3}, {"matrix": [7, 4], "x": 10, "y": 3}, diff --git a/keyboards/helix/pico/keymaps/default/config.h b/keyboards/helix/pico/keymaps/default/config.h deleted file mode 100644 index 0bd76a18b4..0000000000 --- a/keyboards/helix/pico/keymaps/default/config.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -This is the c configuration file for the keymap - -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -// place overrides here - -#ifdef AUDIO_ENABLE - #define STARTUP_SONG SONG(STARTUP_SOUND) - #define AUDIO_CLICKY -#endif - -// If you need more program area, try select and reduce rgblight modes to use. - -// Selection of RGBLIGHT MODE to use. -#if defined(LED_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_STATIC_GRADIENT - //#define RGBLIGHT_EFFECT_RGB_TEST - //#define RGBLIGHT_EFFECT_ALTERNATING -#endif diff --git a/keyboards/helix/pico/keymaps/default/keymap.c b/keyboards/helix/pico/keymaps/default/keymap.c deleted file mode 100644 index 28f6a20f9b..0000000000 --- a/keyboards/helix/pico/keymaps/default/keymap.c +++ /dev/null @@ -1,329 +0,0 @@ -/* Copyright 2018 MakotoKurauchi - * - * This 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 - -#ifdef RGBLIGHT_ENABLE -//Following line allows macro to read current RGB settings -extern rgblight_config_t rgblight_config; -#endif - -// 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_number { - _QWERTY = 0, - _COLEMAK, - _DVORAK, - _LOWER, - _RAISE, - _ADJUST -}; - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - DVORAK, - LOWER, - RAISE, - ADJUST, - BACKLIT, - EISU, - KANA, - RGBRST -}; - -enum macro_keycodes { - KC_SAMPLEMACRO, -}; - -//Macros -#define M_SAMPLE M(KC_SAMPLEMACRO) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Qwerty - * ,-----------------------------------------. ,-----------------------------------------. - * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - * `-------------------------------------------------------------------------------------------------' - */ - -[_QWERTY] = LAYOUT( - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , - ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - /* Colemak - * ,-----------------------------------------. ,-----------------------------------------. - * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - * `-------------------------------------------------------------------------------------------------' - */ - [_COLEMAK] = LAYOUT( - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, - KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , - ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - - /* Dvorak - * ,-----------------------------------------. ,-----------------------------------------. - * | Tab | ' | , | . | P | Y | | F | G | C | R | L | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | O | E | U | I | | D | H | T | N | S | / | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - * `-------------------------------------------------------------------------------------------------' - */ - [_DVORAK] = LAYOUT( - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, - KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , - ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - - /* Lower - * ,-----------------------------------------. ,-----------------------------------------. - * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | | F12 | | PrSc | Home | End | | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * `-------------------------------------------------------------------------------------------------' - */ - [_LOWER] = LAYOUT( - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, KC_HOME, KC_END, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - ), - - /* Raise - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | | F12 | | PrSc |PageDn|PageUp| | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * `-------------------------------------------------------------------------------------------------' - */ - [_RAISE] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, KC_PGDN, KC_PGUP, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - ), - - /* Adjust (Lower + Raise) - * ,-----------------------------------------. ,-----------------------------------------. - * | | Reset|RGBRST| | | | | | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | |Aud on|Audoff|MU TOG|MU MOD| Mac | | Win |Qwerty|Colemk|Dvorak| | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | |CK TOG|CK RST| CK UP|CK DWN| | | | |RGB ON| HUE+ | SAT+ | VAL+ | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * | | | | | | | | | | | MODE | HUE- | SAT- | VAL- | - * `-------------------------------------------------------------------------------------------------' - */ - [_ADJUST] = LAYOUT( - _______, QK_BOOT, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, AU_ON, AU_OFF, MU_TOGG, MU_NEXT, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, - _______, CK_TOGG, CK_RST, CK_UP, CK_DOWN, _______, _______, _______, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD - ) -}; - - - -#ifdef AUDIO_ENABLE - -float tone_qwerty[][2] = SONG(QWERTY_SOUND); -float tone_dvorak[][2] = SONG(DVORAK_SOUND); -float tone_colemak[][2] = SONG(COLEMAK_SOUND); -float tone_plover[][2] = SONG(PLOVER_SOUND); -float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); -#endif - -// define variables for reactive RGB -bool TOG_STATUS = false; -int RGB_current_mode; - -// Setting ADJUST layer RGB back to default -void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGB_current_mode); - #endif - layer_on(layer3); - } else { - layer_off(layer3); - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_qwerty); - #endif - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case COLEMAK: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_colemak); - #endif - set_single_persistent_default_layer(_COLEMAK); - } - return false; - break; - case DVORAK: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_dvorak); - #endif - set_single_persistent_default_layer(_DVORAK); - } - return false; - break; - case LOWER: - if (record->event.pressed) { - //not sure how to have keyboard check mode and set it to a variable, so my work around - //uses another variable that would be set to true after the first time a reactive key is pressed. - if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false - } else { - TOG_STATUS = !TOG_STATUS; - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGBLIGHT_MODE_SNAKE + 1); - #endif - } - layer_on(_LOWER); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } else { - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change - #endif - TOG_STATUS = false; - layer_off(_LOWER); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case RAISE: - if (record->event.pressed) { - //not sure how to have keyboard check mode and set it to a variable, so my work around - //uses another variable that would be set to true after the first time a reactive key is pressed. - if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false - } else { - TOG_STATUS = !TOG_STATUS; - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGBLIGHT_MODE_SNAKE); - #endif - } - layer_on(_RAISE); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } else { - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change - #endif - layer_off(_RAISE); - TOG_STATUS = false; - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case ADJUST: - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - break; - //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released - case QK_UNDERGLOW_MODE_NEXT: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - rgblight_mode(RGB_current_mode); - rgblight_step(); - RGB_current_mode = rgblight_config.mode; - } - #endif - return false; - break; - case EISU: - if (record->event.pressed) { - if(keymap_config.swap_lalt_lgui==false){ - register_code(KC_LNG2); - }else{ - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG2); - } - return false; - break; - case KANA: - if (record->event.pressed) { - if(keymap_config.swap_lalt_lgui==false){ - register_code(KC_LNG1); - }else{ - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG1); - } - return false; - break; - case RGBRST: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - RGB_current_mode = rgblight_config.mode; - } - #endif - break; - } - return true; -} - -void matrix_init_user(void) { - #ifdef RGBLIGHT_ENABLE - RGB_current_mode = rgblight_config.mode; - #endif -} diff --git a/keyboards/helix/pico/keymaps/default/keymap.json b/keyboards/helix/pico/keymaps/default/keymap.json new file mode 100644 index 0000000000..031ca79677 --- /dev/null +++ b/keyboards/helix/pico/keymaps/default/keymap.json @@ -0,0 +1,25 @@ +{ + "keyboard": "helix/pico", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ENT" , + "MO(3)", "KC_ESC", "KC_LALT", "KC_LGUI", "LALT(KC_GRV)", "MO(1)", "KC_SPC", "KC_SPC", "MO(2)", "LALT(KC_GRV)", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT" + ], + [ + "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL", + "_______", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_BSLS", + "KC_CAPS", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "_______", "_______", "KC_PGDN", "KC_PGUP", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY" + ], + [ + "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", + "QK_BOOT", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "EE_CLR", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "UG_TOGG", "UG_HUEU", "UG_SATU", "UG_VALU", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "UG_NEXT", "UG_HUED", "UG_SATD", "UG_VALD" + ] + ] +} diff --git a/keyboards/helix/pico/keymaps/default/readme.md b/keyboards/helix/pico/keymaps/default/readme.md deleted file mode 100644 index a6c81651a3..0000000000 --- a/keyboards/helix/pico/keymaps/default/readme.md +++ /dev/null @@ -1,137 +0,0 @@ -# The Default HelixPico Layout -## Layout - -### Qwerty -``` - ,-----------------------------------------. ,-----------------------------------------. - | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter | - |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - `-------------------------------------------------------------------------------------------------' -``` - -### Colemak -``` - ,-----------------------------------------. ,-----------------------------------------. - | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Shift| Z | X | C | V | B | | K | M | , | . | / |Enter | - |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - `-------------------------------------------------------------------------------------------------' -``` - -### Dvorak -``` - ,-----------------------------------------. ,-----------------------------------------. - | Tab | ' | , | . | P | Y | | F | G | C | R | L | Bksp | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Ctrl | A | O | E | U | I | | D | H | T | N | S | / | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter | - |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - `-------------------------------------------------------------------------------------------------' -``` - -## Layers - -|Priority|number|name|description| -| ---- | ---- | --- | --- | -|high|16|Adjust|Functions| -||4|Raise|Numeric charactors| -||3|Lower|Other charactors| -||2|Dvorak|Dvorak leyout| -||1|Colemak|Colemak leyout| -|low|0|Qwerty|QWERTY leyout(base)| - -### Lower -``` - ,-----------------------------------------. ,-----------------------------------------. - | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | F7 | F8 | F9 | F10 | F11 | | F12 | | PrSc | Home | End | | - |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - | | | | | | | | | | | Next | Vol- | Vol+ | Play | - `-------------------------------------------------------------------------------------------------' -``` - -### Raise -``` - ,-----------------------------------------. ,-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | F7 | F8 | F9 | F10 | F11 | | F12 | | PrSc |PageDn|PageUp| | - |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - | | | | | | | | | | | Next | Vol- | Vol+ | Play | - `-------------------------------------------------------------------------------------------------' -``` - -### Adjust (Lower + Raise) -``` - ,-----------------------------------------. ,-----------------------------------------. - | | Reset| | | | | | | | | | | | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | |Aud on|Audoff|MU TOG|MU MOD| Mac | | Win |Qwerty|Colemk|Dvorak| | | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | |CK TOG|CK RST| CK UP|CK DWN| | | | |RGB ON| HUE+ | SAT+ | VAL+ | - |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - | | | | | | | | | | | MODE | HUE- | SAT- | VAL- | - `-------------------------------------------------------------------------------------------------' -``` - -## Customize - -see `qmk_firmware/keyboards/helix/pico/keymaps/default/rules.mk` - -``` -# Helix Spacific Build Options -# you can uncomment and edit follows 4 Variables -# jp: 以下の4つの変数を必要に応じて編集し、コメントアウトをはずします。 -# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.) -# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -# LED_ANIMATIONS = yes # LED animations -# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) -``` -## Compile - -go to qmk top directory. -``` -$ cd qmk_firmware -``` - -build -``` -$ make helix/pico:default -$ make helix/pico/back:default # with backlight -$ make HELIX=no-ani helix/pico/back:default # with backlight without animation -$ make helix/pico/under:default # with underglow -``` - -build (experimental use of split_common with backlight) -``` -$ make helix/pico/sc:default -``` - -flash to keyboard -``` -$ make helix/pico:default:flash -$ make helix/pico/back:default:flash # with backlight -$ make HELIX=no_ani helix/pico/back:default:flash # with backlight without animation -$ make helix/pico/under:default:flash # with underglow - -``` - -## Link -* more detail wrote in Japanese [helix/Doc/firmware_jp.md](https://github.com/MakotoKurauchi/helix/blob/master/Doc/firmware_jp.md) -* [Helix top](https://github.com/MakotoKurauchi/helix) diff --git a/keyboards/helix/pico/keymaps/default/readme_jp.md b/keyboards/helix/pico/keymaps/default/readme_jp.md deleted file mode 100644 index 73f97ad9a6..0000000000 --- a/keyboards/helix/pico/keymaps/default/readme_jp.md +++ /dev/null @@ -1,138 +0,0 @@ -# The Default HelixPico Layout -## 配列 - -### Qwerty配列 - -``` - ,-----------------------------------------. ,-----------------------------------------. - | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter | - |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - `-------------------------------------------------------------------------------------------------' -``` - -### Lower -``` - ,-----------------------------------------. ,-----------------------------------------. - | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | F7 | F8 | F9 | F10 | F11 | | F12 | | PrSc | Home | End | | - |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - | | | | | | | | | | | Next | Vol- | Vol+ | Play | - `-------------------------------------------------------------------------------------------------' -``` - -### Raise -``` - ,-----------------------------------------. ,-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | F7 | F8 | F9 | F10 | F11 | | F12 | | PrSc |PageDn|PageUp| | - |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - | | | | | | | | | | | Next | Vol- | Vol+ | Play | - `-------------------------------------------------------------------------------------------------' -``` - -### Adjust (Lower + Raise) -``` - ,-----------------------------------------. ,-----------------------------------------. - | | Reset| | | | | | | | | | | | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | |Aud on|Audoff|MU TOG|MU MOD| Mac | | Win |Qwerty|Colemk|Dvorak| | | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | |CK TOG|CK RST| CK UP|CK DWN| | | | |RGB ON| HUE+ | SAT+ | VAL+ | - |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - | | | | | | | | | | | MODE | HUE- | SAT- | VAL- | - `-------------------------------------------------------------------------------------------------' -``` - -他の配列(Colemak,Dvorak)は、[readme.md](readme.md) を参照 - -## カスタマイズ - -RGB バックライトまたは、RGB Underglow をつけた場合は、 -`qmk_firmware/keyboards/helix/pico/keymaps/default/rules.mk` の以下の部分を編集して機能を有効化してください。 - -``` -# Helix Spacific Build Options -# you can uncomment and edit follows 4 Variables -# jp: 以下の4つの変数を必要に応じて編集し、コメントアウトをはずします。 -# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.) -# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -# LED_ANIMATIONS = yes # LED animations -# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) -``` - -## RGB バックライトを有効にする - -rules.mk の下記の部分を編集して no を yes に変更してください。 - -``` -LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.) -``` - -## RGB Underglow を有効にする - -rules.mk の下記の部分を編集して no を yes に変更してください。 -``` -LED_UNDERGLOW_ENABLE = yes # LED underglow (Enable WS2812 RGB underlight.) -``` - -## iPad/iPhoneサポートを有効にする。 - -rules.mk の下記の部分を編集して no を yes に変更してください。 -RBG Underglow や RGBバックライトの輝度を抑えて、iPad, iPhone にも接続できるようになります。 - -``` -IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) -``` - -## コンパイルの仕方 - -コンパイルは、qmk_firmware のトップディレクトリで行います。 - -``` -$ cd qmk_firmware -``` -qmk_firmwareでは各キーボードのコンパイルは、`<キーボード名>:<キーマップ名>`という指定で行います。 - -``` -$ make helix/pico:default -``` - -キーボードへの書き込みまで同時に行うには下記のように`:flash`を付けます。 - -``` -$ make helix/pico:default:flash -``` - -コンパイル結果と中間生成物を消去したい場合は以下のようにします。 - -``` -$ make helix/pico:default:clean -``` - -上記の、rules.mk によるカスタマイズ項目の一部は下記のようにコマンド上で直接指定することも可能です。 - -RGB バックライトを有効にしてコンパイルしてキーボードへ書き込む。 -``` -$ make helix/pico/back:default:flash -``` - -RGB Underglow を有効にしてコンパイルしてキーボードへ書き込む。 -``` -$ make helix/pico/under:default:flash -``` - -## リンク - -* さらに詳細は、[こちら helix/Doc/firmware_jp.md](https://github.com/MakotoKurauchi/helix/blob/master/Doc/firmware_jp.md)をご覧ください。 -* [Helix top](https://github.com/MakotoKurauchi/helix) diff --git a/keyboards/helix/pico/keymaps/default/rules.mk b/keyboards/helix/pico/keymaps/default/rules.mk deleted file mode 100644 index 9a29406c17..0000000000 --- a/keyboards/helix/pico/keymaps/default/rules.mk +++ /dev/null @@ -1,11 +0,0 @@ -EXTRAKEY_ENABLE = yes # Audio control and System control -AUDIO_ENABLE = yes # Audio output -LTO_ENABLE = no # if firmware size over limit, try this option - -# Helix Spacific Build Options -# you can uncomment and edit follows 4 Variables -# jp: 以下の4つの変数を必要に応じて編集し、コメントアウトをはずします。 -# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.) -# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -# LED_ANIMATIONS = yes # LED animations -# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) diff --git a/keyboards/helix/pico/override_helix_options.mk-maintenance b/keyboards/helix/pico/override_helix_options.mk-maintenance deleted file mode 100644 index 0ff930957e..0000000000 --- a/keyboards/helix/pico/override_helix_options.mk-maintenance +++ /dev/null @@ -1,42 +0,0 @@ -# -# This file is not normally used. It is used for maintenance testing purposes. -# To use it, do the following: -# -# $ cp override_helix_options.mk-maintenance override_helix_options.mk -# -$(info -------------------------) -$(info override_helix_options.mk) -$(info -------------------------) - -define HELIX_OVERRIDE_PARSE - ifeq ($(strip $1),back) - LED_BACK_ENABLE = yes - LED_UNDERGLOW_ENABLE = no - endif - ifeq ($(strip $1),under) - LED_BACK_ENABLE = no - LED_UNDERGLOW_ENABLE = yes - endif - ifneq ($(filter noled led-off led_off,$(strip $1)),) - LED_BACK_ENABLE = no - LED_UNDERGLOW_ENABLE = no - endif - ifneq ($(filter noaudio audio-off audio_off,$(strip $1)),) - AUDIO_ENABLE = no - endif - ifneq ($(filter audio audio-on audio_on,$(strip $1)),) - AUDIO_ENABLE = yes - endif - ifneq ($(filter sc split-common split_common,$(strip $1)),) - SPLIT_KEYBOARD = yes - endif - ifneq ($(filter nosc no-sc no-split-common no-split_common,$(strip $1)),) - SPLIT_KEYBOARD = no - endif - ifeq ($(strip $1),scan) - DEBUG_MATRIX_SCAN_RATE_ENABLE = yes - endif - ifeq ($(strip $1),scan-api) - DEBUG_MATRIX_SCAN_RATE_ENABLE = api - endif -endef # end of HELIX_OVERRIDE_PARSE diff --git a/keyboards/helix/pico/pico.c b/keyboards/helix/pico/pico.c deleted file mode 100644 index cc98fe8f61..0000000000 --- a/keyboards/helix/pico/pico.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright 2018 MakotoKurauchi - * - * This 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 "pico.h" - -// Each keymap.c should use is_keyboard_master() instead of 'is_master'. -// But keep 'is_master' for a while for backwards compatibility -// for the old keymap.c. -uint8_t is_master = false; - -void matrix_init_kb(void) { - // Each keymap.c should use is_keyboard_master() instead of is_master. - // But keep is_master for a while for backwards compatibility - // for the old keymap.c. - is_master = is_keyboard_master(); - - matrix_init_user(); -}; - -void keyboard_post_init_kb(void) { -#if defined(DEBUG_MATRIX_SCAN_RATE) - debug_enable = true; -#endif - keyboard_post_init_user(); -} diff --git a/keyboards/helix/pico/pico.h b/keyboards/helix/pico/pico.h deleted file mode 100644 index 7f2d795ca8..0000000000 --- a/keyboards/helix/pico/pico.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2018 MakotoKurauchi - * - * This 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" - -// Each keymap.c should use is_keyboard_master() instead of 'is_master', 'has_usb()'. -// But keep 'is_master' for a while for backwards compatibility -// for the old keymap.c. -extern uint8_t is_master; // 'is_master' will be obsolete, it is recommended to use 'is_keyboard_master ()' instead. -#define has_usb() is_keyboard_master() diff --git a/keyboards/helix/pico/post_config.h b/keyboards/helix/pico/post_config.h deleted file mode 100644 index dda73d5d22..0000000000 --- a/keyboards/helix/pico/post_config.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#if defined(SPLIT_KEYBOARD) /* if use split_common */ -# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_SPLIT) -# define RGBLIGHT_SPLIT /* helix hardware need this */ -# endif -#endif diff --git a/keyboards/helix/pico/post_rules.mk b/keyboards/helix/pico/post_rules.mk deleted file mode 100644 index 88bb5482ba..0000000000 --- a/keyboards/helix/pico/post_rules.mk +++ /dev/null @@ -1,77 +0,0 @@ -# -# post_rules.mk contains post-processing rules for the Helix keyboard. -# -# Post-processing rules convert keyboard-specific shortcuts (that represent -# combinations of standard options) into QMK standard options. -# --include $(strip $(HELIX_TOP_DIR)/pico/override_helix_options.mk) ## File dedicated to maintenance - -# Parse 'HELIX=xx,yy,zz' option -ifneq ($(strip $(HELIX)),) - # make HELIX=ios helix/pico:AKEYMAP - # make HELIX=no-ani helix/pico:AKEYMAP - # make HELIX=ios,no-ani helix/pico:AKEYMAP - define HELIX_OPTION_PARSE - # parce 'no-ani' 'ios' - $(if $(SHOW_PARCE),$(info parse .$1.)) #debug - $(if $(HELIX_OVERRIDE_PARSE),$(call HELIX_OVERRIDE_PARSE,$1)) - - ifeq ($(strip $1),ios) - IOS_DEVICE_ENABLE = yes - endif - ifneq ($(filter na no_ani no-ani,$(strip $1)),) - LED_ANIMATIONS = no - endif - endef # end of HELIX_OPTION_PARSE - - COMMA=, - $(eval $(foreach A_OPTION_NAME,$(subst $(COMMA), ,$(HELIX)), \ - $(call HELIX_OPTION_PARSE,$(A_OPTION_NAME)))) - SHOW_HELIX_OPTIONS = yes -endif - -######## -# convert Helix-specific options (that represent combinations of standard options) -# into QMK standard options. - -ifeq ($(strip $(LED_BACK_ENABLE)), yes) - RGBLIGHT_ENABLE = yes - OPT_DEFS += -DRGBLED_BACK - ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes) - $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes') - endif -else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes) - RGBLIGHT_ENABLE = yes -endif - -ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes) - OPT_DEFS += -DIOS_DEVICE_ENABLE -endif - -ifeq ($(strip $(LED_ANIMATIONS)), yes) - OPT_DEFS += -DLED_ANIMATIONS -endif - -ifeq ($(strip $(AUDIO_ENABLE)),yes) - ifeq ($(strip $(RGBLIGHT_ENABLE)),yes) - LTO_ENABLE = yes - endif -endif - -ifneq ($(strip $(SHOW_HELIX_OPTIONS)),) - $(info Helix Spacific Build Options) - $(info - LED_BACK_ENABLE = $(LED_BACK_ENABLE)) - $(info - LED_UNDERGLOW_ENABLE = $(LED_UNDERGLOW_ENABLE)) - $(info - LED_ANIMATIONS = $(LED_ANIMATIONS)) - $(info - IOS_DEVICE_ENABLE = $(IOS_DEVICE_ENABLE)) - $(info ) - $(info QMK Build Options) - $(info -- SPLIT_KEYBOARD = $(SPLIT_KEYBOARD)) - $(info -- AUDIO_ENABLE = $(AUDIO_ENABLE)) - $(info -- RGBLIGHT_ENABLE = $(RGBLIGHT_ENABLE)) - $(info -- CONSOLE_ENABLE = $(CONSOLE_ENABLE)) - $(info -- OPT_DEFS = $(OPT_DEFS)) - $(info -- LTO_ENABLE = $(LTO_ENABLE)) - $(info -- DEBUG_MATRIX_SCAN_RATE_ENABLE = $(DEBUG_MATRIX_SCAN_RATE_ENABLE)) - $(info ) -endif diff --git a/keyboards/helix/pico/qmk_conf/config.h b/keyboards/helix/pico/qmk_conf/config.h deleted file mode 100644 index 15b3392895..0000000000 --- a/keyboards/helix/pico/qmk_conf/config.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -This is the c configuration file for the keymap - -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -// place overrides here - -#ifdef AUDIO_ENABLE - #define STARTUP_SONG SONG(STARTUP_SOUND) - #define AUDIO_CLICKY -#endif diff --git a/keyboards/helix/pico/qmk_conf/keyboard.json b/keyboards/helix/pico/qmk_conf/keyboard.json deleted file mode 100644 index ddb7220342..0000000000 --- a/keyboards/helix/pico/qmk_conf/keyboard.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "features": { - "audio": true, - "extrakey": true - } -} diff --git a/keyboards/helix/pico/rules.mk b/keyboards/helix/pico/rules.mk deleted file mode 100644 index e18b8fb0c4..0000000000 --- a/keyboards/helix/pico/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -# Helix Spacific Build Options default values -LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.) -LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -LED_ANIMATIONS = yes # LED animations -IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) diff --git a/keyboards/helix/pico/sc/keyboard.json b/keyboards/helix/pico/sc/keyboard.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/keyboards/helix/pico/sc/keyboard.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/keyboards/helix/pico/sc/rules.mk b/keyboards/helix/pico/sc/rules.mk deleted file mode 100644 index 066fffb74a..0000000000 --- a/keyboards/helix/pico/sc/rules.mk +++ /dev/null @@ -1 +0,0 @@ -LED_BACK_ENABLE = yes diff --git a/keyboards/helix/pico/under/keyboard.json b/keyboards/helix/pico/under/keyboard.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/keyboards/helix/pico/under/keyboard.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/keyboards/helix/pico/under/rules.mk b/keyboards/helix/pico/under/rules.mk deleted file mode 100644 index a37aa6fab3..0000000000 --- a/keyboards/helix/pico/under/rules.mk +++ /dev/null @@ -1 +0,0 @@ -LED_UNDERGLOW_ENABLE = yes From 584ad807cc145dead82a727b49ddbb972ebe6e50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=95=E3=82=A3=E3=83=AB=E3=82=BF=E3=83=BC=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=83=91=E3=83=BC?= <76888457+filterpaper@users.noreply.github.com> Date: Sun, 6 Jul 2025 14:44:44 +0800 Subject: [PATCH 043/167] Refactor Starlight Smooth matrix effect (#25442) --- quantum/rgb_matrix/animations/starlight_smooth_anim.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/rgb_matrix/animations/starlight_smooth_anim.h b/quantum/rgb_matrix/animations/starlight_smooth_anim.h index a87c06f9df..5467ea0a59 100644 --- a/quantum/rgb_matrix/animations/starlight_smooth_anim.h +++ b/quantum/rgb_matrix/animations/starlight_smooth_anim.h @@ -9,7 +9,7 @@ static uint8_t phase_offsets[RGB_MATRIX_LED_COUNT]; hsv_t STARLIGHT_SMOOTH_math(hsv_t hsv, uint8_t i, uint8_t time) { if (phase_offsets[i] == 0) { - phase_offsets[i] = rand() % 255; + phase_offsets[i] = random8(); } hsv.v = scale8(abs8(sin8((time + phase_offsets[i]) / 2) - 128) * 2, hsv.v); return hsv; From 0842f54a272ab8324dcfda38d1b5645a3b97372f Mon Sep 17 00:00:00 2001 From: jack Date: Sun, 6 Jul 2025 00:50:37 -0600 Subject: [PATCH 044/167] Refactor `bastardkb/tbkmini` (#25438) --- data/mappings/keyboard_aliases.hjson | 12 +++ keyboards/bastardkb/readme.md | 19 +++++ .../bastardkb/tbkmini/blackpill/config.h | 33 +------- .../bastardkb/tbkmini/blackpill/halconf.h | 21 +---- .../bastardkb/tbkmini/blackpill/keyboard.json | 42 ++++------ .../bastardkb/tbkmini/blackpill/mcuconf.h | 23 +----- .../bastardkb/tbkmini/blackpill/rules.mk | 5 -- keyboards/bastardkb/tbkmini/info.json | 79 ++++++++++++++----- .../tbkmini/keymaps/default/keymap.c | 69 ---------------- .../tbkmini/keymaps/default/keymap.json | 25 ++++++ .../bastardkb/tbkmini/promicro/keyboard.json | 15 ++++ keyboards/bastardkb/tbkmini/readme.md | 36 ++++----- keyboards/bastardkb/tbkmini/tbkmini.c | 61 -------------- .../bastardkb/tbkmini/v1/elitec/config.h | 22 ------ .../bastardkb/tbkmini/v1/elitec/keyboard.json | 31 -------- .../bastardkb/tbkmini/v1/elitec/rules.mk | 1 - .../bastardkb/tbkmini/v2/elitec/config.h | 21 ----- .../bastardkb/tbkmini/v2/elitec/keyboard.json | 31 -------- .../bastardkb/tbkmini/v2/elitec/rules.mk | 1 - .../bastardkb/tbkmini/v2/splinky_2/config.h | 31 -------- .../tbkmini/v2/splinky_2/keyboard.json | 32 -------- .../bastardkb/tbkmini/v2/splinky_2/readme.md | 5 -- .../bastardkb/tbkmini/v2/splinky_2/rules.mk | 3 - .../bastardkb/tbkmini/v2/splinky_3/config.h | 31 -------- .../tbkmini/v2/splinky_3/keyboard.json | 32 -------- .../bastardkb/tbkmini/v2/splinky_3/readme.md | 5 -- .../bastardkb/tbkmini/v2/splinky_3/rules.mk | 3 - .../bastardkb/tbkmini/v2/stemcell/config.h | 38 --------- .../bastardkb/tbkmini/v2/stemcell/halconf.h | 23 ------ .../tbkmini/v2/stemcell/keyboard.json | 34 -------- .../bastardkb/tbkmini/v2/stemcell/mcuconf.h | 29 ------- .../bastardkb/tbkmini/v2/stemcell/rules.mk | 3 - 32 files changed, 172 insertions(+), 644 deletions(-) create mode 100644 keyboards/bastardkb/readme.md delete mode 100644 keyboards/bastardkb/tbkmini/blackpill/rules.mk delete mode 100644 keyboards/bastardkb/tbkmini/keymaps/default/keymap.c create mode 100644 keyboards/bastardkb/tbkmini/keymaps/default/keymap.json create mode 100644 keyboards/bastardkb/tbkmini/promicro/keyboard.json delete mode 100644 keyboards/bastardkb/tbkmini/tbkmini.c delete mode 100644 keyboards/bastardkb/tbkmini/v1/elitec/config.h delete mode 100644 keyboards/bastardkb/tbkmini/v1/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/tbkmini/v1/elitec/rules.mk delete mode 100644 keyboards/bastardkb/tbkmini/v2/elitec/config.h delete mode 100644 keyboards/bastardkb/tbkmini/v2/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/tbkmini/v2/elitec/rules.mk delete mode 100644 keyboards/bastardkb/tbkmini/v2/splinky_2/config.h delete mode 100644 keyboards/bastardkb/tbkmini/v2/splinky_2/keyboard.json delete mode 100644 keyboards/bastardkb/tbkmini/v2/splinky_2/readme.md delete mode 100644 keyboards/bastardkb/tbkmini/v2/splinky_2/rules.mk delete mode 100644 keyboards/bastardkb/tbkmini/v2/splinky_3/config.h delete mode 100644 keyboards/bastardkb/tbkmini/v2/splinky_3/keyboard.json delete mode 100644 keyboards/bastardkb/tbkmini/v2/splinky_3/readme.md delete mode 100644 keyboards/bastardkb/tbkmini/v2/splinky_3/rules.mk delete mode 100644 keyboards/bastardkb/tbkmini/v2/stemcell/config.h delete mode 100644 keyboards/bastardkb/tbkmini/v2/stemcell/halconf.h delete mode 100644 keyboards/bastardkb/tbkmini/v2/stemcell/keyboard.json delete mode 100644 keyboards/bastardkb/tbkmini/v2/stemcell/mcuconf.h delete mode 100644 keyboards/bastardkb/tbkmini/v2/stemcell/rules.mk diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index e976ff6cac..fb4f782844 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -68,6 +68,18 @@ "bakeneko80": { "target": "kkatano/bakeneko80" }, + "bastardkb/tbkmini/v2/elitec": { + "target": "bastardkb/tbkmini/promicro" + }, + "bastardkb/tbkmini/v2/splinky_2": { + "target": "bastardkb/tbkmini/promicro" + }, + "bastardkb/tbkmini/v2/splinky_3": { + "target": "bastardkb/tbkmini/promicro" + }, + "bastardkb/tbkmini/v2/stemcell": { + "target": "bastardkb/tbkmini/promicro" + }, "bear_face": { "target": "bear_face/v1" }, diff --git a/keyboards/bastardkb/readme.md b/keyboards/bastardkb/readme.md new file mode 100644 index 0000000000..1b95e09946 --- /dev/null +++ b/keyboards/bastardkb/readme.md @@ -0,0 +1,19 @@ +# Information for Various BastardKB Hardware + +## Handedness Pin on Elite-C Holder +The [Elite-C Holder](https://github.com/Bastardkb/Elite-C-holder) supports setting [handedness by pin](https://docs.qmk.fm/features/split_keyboard#handedness-by-pin) on pin F1 of an Elite-C. + +To utilise this, you must be using an Elite-C compatible development board (with the bottom 5 pins broken out) and install the necessary resistor. The following firmware configuration can be made in your keymap directory: +```Makefile +# rules.mk + +PIN_COMPATIBLE = elite_c +``` + +```c +// config.h +#pragma once + +#define SPLIT_HAND_PIN F1 +#define SPLIT_HAND_PIN_LOW_IS_LEFT +``` diff --git a/keyboards/bastardkb/tbkmini/blackpill/config.h b/keyboards/bastardkb/tbkmini/blackpill/config.h index bf7879edbe..c6b40f3e5f 100644 --- a/keyboards/bastardkb/tbkmini/blackpill/config.h +++ b/keyboards/bastardkb/tbkmini/blackpill/config.h @@ -1,27 +1,9 @@ -/* - * Copyright 2020 Christopher Courtney (@drashna) - * Copyright 2021 Stefan Kerkmann (@KarlK90) - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Publicw License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Christopher Courtney (@drashna) +// Copyright 2021 Stefan Kerkmann (@KarlK90) +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -/* Handedness. */ -#define SPLIT_HAND_PIN A3 // High -> left, Low -> right. - /* RGB settings. */ #define WS2812_PWM_DRIVER PWMD2 #define WS2812_PWM_CHANNEL 2 @@ -30,13 +12,6 @@ #define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM1 #define WS2812_PWM_DMA_CHANNEL 3 -/* Serial configuration for split keyboard. */ -#define SERIAL_USART_TX_PIN A9 - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED - /* SPI config for EEPROM. */ #define SPI_DRIVER SPID1 #define SPI_SCK_PIN A5 diff --git a/keyboards/bastardkb/tbkmini/blackpill/halconf.h b/keyboards/bastardkb/tbkmini/blackpill/halconf.h index 5c5dff98d4..545fc20cb3 100644 --- a/keyboards/bastardkb/tbkmini/blackpill/halconf.h +++ b/keyboards/bastardkb/tbkmini/blackpill/halconf.h @@ -1,21 +1,6 @@ -/** - * Copyright 2020 Nick Brassel (tzarc) - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Nick Brassel (tzarc) +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #define HAL_USE_PWM TRUE diff --git a/keyboards/bastardkb/tbkmini/blackpill/keyboard.json b/keyboards/bastardkb/tbkmini/blackpill/keyboard.json index 61d0e741fe..df77023bd6 100644 --- a/keyboards/bastardkb/tbkmini/blackpill/keyboard.json +++ b/keyboards/bastardkb/tbkmini/blackpill/keyboard.json @@ -1,37 +1,23 @@ { - "keyboard_name": "TBK Mini Blackpill", - "usb": { - "device_version": "1.0.0", - "shared_endpoint": { - "keyboard": true - } - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true - }, + "development_board": "blackpill_f411", "eeprom": { "driver": "spi" }, - "split": { - "enabled": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "ws2812": { - "pin": "A1", - "driver": "pwm" - }, - "build": { - "debounce_type": "asym_eager_defer_pk" - }, "matrix_pins": { "cols": ["B0", "B1", "B10", "B3", "B4", "B5"], "rows": ["A2", "B8", "A8", "B9"] }, - "diode_direction": "ROW2COL", - "development_board": "blackpill_f411" + "split": { + "handedness": { + "pin": "A3" + }, + "serial": { + "driver": "usart", + "pin": "A9" + } + }, + "ws2812": { + "driver": "pwm", + "pin": "A1" + } } diff --git a/keyboards/bastardkb/tbkmini/blackpill/mcuconf.h b/keyboards/bastardkb/tbkmini/blackpill/mcuconf.h index 2b3f30cbfe..cc77ec94ae 100644 --- a/keyboards/bastardkb/tbkmini/blackpill/mcuconf.h +++ b/keyboards/bastardkb/tbkmini/blackpill/mcuconf.h @@ -1,22 +1,7 @@ -/* - * Copyright 2020 Nick Brassel (tzarc) - * Copyright 2021 Stefan Kerkmann (@KarlK90) - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Nick Brassel (tzarc) +// Copyright 2021 Stefan Kerkmann (@KarlK90) +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include_next diff --git a/keyboards/bastardkb/tbkmini/blackpill/rules.mk b/keyboards/bastardkb/tbkmini/blackpill/rules.mk deleted file mode 100644 index 48c904dd64..0000000000 --- a/keyboards/bastardkb/tbkmini/blackpill/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint - -SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/tbkmini/info.json b/keyboards/bastardkb/tbkmini/info.json index ff2df9cdd6..f37e092c2d 100644 --- a/keyboards/bastardkb/tbkmini/info.json +++ b/keyboards/bastardkb/tbkmini/info.json @@ -1,24 +1,70 @@ { - "url": "https://www.bastardkb.com/tbk-mini", + "url": "https://github.com/Bastardkb/TBK-Mini", + "keyboard_name": "TBK Mini", "usb": { - "pid": "0x1828" + "pid": "0x1828", + "device_version": "2.0.0" }, + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "rgb_matrix": true + }, + "split": { + "enabled": true + }, + "diode_direction": "ROW2COL", "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 2}, + {"matrix": [1, 0], "x": 0, "y": 21, "flags": 2}, + {"matrix": [2, 0], "x": 0, "y": 42, "flags": 2}, + {"matrix": [2, 1], "x": 20, "y": 42, "flags": 4}, + {"matrix": [1, 1], "x": 20, "y": 21, "flags": 4}, + {"matrix": [0, 1], "x": 20, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 41, "y": 0, "flags": 4}, + {"matrix": [1, 2], "x": 41, "y": 21, "flags": 4}, + {"matrix": [2, 2], "x": 41, "y": 42, "flags": 4}, + {"matrix": [2, 3], "x": 61, "y": 42, "flags": 4}, + {"matrix": [1, 3], "x": 61, "y": 21, "flags": 4}, + {"matrix": [0, 3], "x": 61, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 81, "y": 0, "flags": 4}, + {"matrix": [1, 4], "x": 81, "y": 21, "flags": 4}, + {"matrix": [2, 4], "x": 81, "y": 42, "flags": 4}, + {"matrix": [0, 5], "x": 102, "y": 0, "flags": 4}, + {"matrix": [1, 5], "x": 102, "y": 21, "flags": 4}, + {"matrix": [2, 5], "x": 102, "y": 42, "flags": 4}, + {"matrix": [3, 1], "x": 61, "y": 64, "flags": 2}, + {"matrix": [3, 3], "x": 81, "y": 64, "flags": 2}, + {"matrix": [3, 4], "x": 102, "y": 64, "flags": 2}, + {"matrix": [4, 0], "x": 224, "y": 0, "flags": 2}, + {"matrix": [5, 0], "x": 224, "y": 21, "flags": 2}, + {"matrix": [6, 0], "x": 224, "y": 42, "flags": 2}, + {"matrix": [6, 1], "x": 204, "y": 42, "flags": 4}, + {"matrix": [5, 1], "x": 204, "y": 21, "flags": 4}, + {"matrix": [4, 1], "x": 204, "y": 0, "flags": 4}, + {"matrix": [4, 2], "x": 183, "y": 0, "flags": 4}, + {"matrix": [5, 2], "x": 183, "y": 21, "flags": 4}, + {"matrix": [6, 2], "x": 183, "y": 42, "flags": 4}, + {"matrix": [6, 3], "x": 163, "y": 42, "flags": 4}, + {"matrix": [5, 3], "x": 163, "y": 21, "flags": 4}, + {"matrix": [4, 3], "x": 163, "y": 0, "flags": 4}, + {"matrix": [4, 4], "x": 142, "y": 0, "flags": 4}, + {"matrix": [5, 4], "x": 142, "y": 21, "flags": 4}, + {"matrix": [6, 4], "x": 142, "y": 42, "flags": 4}, + {"matrix": [4, 5], "x": 122, "y": 0, "flags": 4}, + {"matrix": [5, 5], "x": 122, "y": 21, "flags": 4}, + {"matrix": [6, 5], "x": 122, "y": 42, "flags": 4}, + {"matrix": [7, 1], "x": 163, "y": 64, "flags": 2}, + {"matrix": [7, 3], "x": 142, "y": 64, "flags": 2}, + {"matrix": [7, 4], "x": 122, "y": 64, "flags": 2} + ], "max_brightness": 50, "sleep": true, "split_count": [21, 21] }, - "rgblight": { - "led_count": 42, - "split_count": [21, 21] - }, - "split": { - "transport": { - "sync": { - "matrix_state": true - } - } - }, "community_layouts": ["split_3x6_3"], "layouts": { "LAYOUT_split_3x6_3": { @@ -29,46 +75,39 @@ {"matrix": [0, 3], "x": 3, "y": 0}, {"matrix": [0, 4], "x": 4, "y": 0}, {"matrix": [0, 5], "x": 5, "y": 0}, - {"matrix": [4, 5], "x": 11, "y": 0}, {"matrix": [4, 4], "x": 12, "y": 0}, {"matrix": [4, 3], "x": 13, "y": 0}, {"matrix": [4, 2], "x": 14, "y": 0}, {"matrix": [4, 1], "x": 15, "y": 0}, {"matrix": [4, 0], "x": 16, "y": 0}, - {"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1}, {"matrix": [1, 2], "x": 2, "y": 1}, {"matrix": [1, 3], "x": 3, "y": 1}, {"matrix": [1, 4], "x": 4, "y": 1}, {"matrix": [1, 5], "x": 5, "y": 1}, - {"matrix": [5, 5], "x": 11, "y": 1}, {"matrix": [5, 4], "x": 12, "y": 1}, {"matrix": [5, 3], "x": 13, "y": 1}, {"matrix": [5, 2], "x": 14, "y": 1}, {"matrix": [5, 1], "x": 15, "y": 1}, {"matrix": [5, 0], "x": 16, "y": 1}, - {"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, {"matrix": [2, 2], "x": 2, "y": 2}, {"matrix": [2, 3], "x": 3, "y": 2}, {"matrix": [2, 4], "x": 4, "y": 2}, {"matrix": [2, 5], "x": 5, "y": 2}, - {"matrix": [6, 5], "x": 11, "y": 2}, {"matrix": [6, 4], "x": 12, "y": 2}, {"matrix": [6, 3], "x": 13, "y": 2}, {"matrix": [6, 2], "x": 14, "y": 2}, {"matrix": [6, 1], "x": 15, "y": 2}, {"matrix": [6, 0], "x": 16, "y": 2}, - {"matrix": [3, 3], "x": 5, "y": 3}, {"matrix": [3, 4], "x": 6, "y": 3}, {"matrix": [3, 1], "x": 7, "y": 3}, - {"matrix": [7, 1], "x": 9, "y": 3}, {"matrix": [7, 4], "x": 10, "y": 3}, {"matrix": [7, 3], "x": 11, "y": 3} diff --git a/keyboards/bastardkb/tbkmini/keymaps/default/keymap.c b/keyboards/bastardkb/tbkmini/keymaps/default/keymap.c deleted file mode 100644 index d87e9c2a44..0000000000 --- a/keyboards/bastardkb/tbkmini/keymaps/default/keymap.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * - * This 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_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, KC_SPC, MO(1), MO(2), KC_ENT, KC_RALT - //`--------------------------' `--------------------------' - - ), - - [1] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, KC_SPC, _______, MO(3), KC_ENT, KC_RALT - //`--------------------------' `--------------------------' - ), - - [2] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, KC_SPC, MO(3), _______, KC_ENT, KC_RALT - //`--------------------------' `--------------------------' - ), - - [3] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - RM_TOGG, RM_HUEU, RM_SATU, RM_VALU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - RM_NEXT, RM_HUED, RM_SATD, RM_VALD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, KC_SPC, _______, _______, KC_ENT, KC_RALT - //`--------------------------' `--------------------------' - )}; diff --git a/keyboards/bastardkb/tbkmini/keymaps/default/keymap.json b/keyboards/bastardkb/tbkmini/keymaps/default/keymap.json new file mode 100644 index 0000000000..58a02b797c --- /dev/null +++ b/keyboards/bastardkb/tbkmini/keymaps/default/keymap.json @@ -0,0 +1,25 @@ +{ + "keyboard": "bastardkb/tbkmini", + "keymap": "default", + "layout": "LAYOUT_split_3x6_3", + "layers": [ + [ + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ESC", + "KC_LGUI", "MO(1)", "KC_SPC", "KC_ENT", "MO(2)", "KC_RALT" + ], + [ + "_______", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "_______", + "_______", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", "_______" + ], + [ + "QK_BOOT", "_______", "_______", "_______", "_______", "_______", "RM_VALU", "RM_HUEU", "RM_SATU", "RM_NEXT", "RM_TOGG", "_______", + "EE_CLR", "_______", "_______", "_______", "_______", "_______", "RM_VALD", "RM_HUED", "RM_SATD", "RM_PREV", "CK_TOGG", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", "_______" + ] + ] +} diff --git a/keyboards/bastardkb/tbkmini/promicro/keyboard.json b/keyboards/bastardkb/tbkmini/promicro/keyboard.json new file mode 100644 index 0000000000..c1e653ffc1 --- /dev/null +++ b/keyboards/bastardkb/tbkmini/promicro/keyboard.json @@ -0,0 +1,15 @@ +{ + "development_board": "elite_c", + "matrix_pins": { + "cols": ["F6", "F5", "B6", "D7", "E6", "B4"], + "rows": ["F7", "C6", "D4", "B5"] + }, + "split": { + "serial": { + "pin": "D2" + } + }, + "ws2812": { + "pin": "D3" + } +} diff --git a/keyboards/bastardkb/tbkmini/readme.md b/keyboards/bastardkb/tbkmini/readme.md index 74e24ff506..cc3e547ff4 100644 --- a/keyboards/bastardkb/tbkmini/readme.md +++ b/keyboards/bastardkb/tbkmini/readme.md @@ -1,29 +1,27 @@ # TBK Mini -A split, compact ergonomic keyboard. +* Keyboard Maintainer: [Quentin Lebastard](https://github.com/bastardkb) +* Hardware Supported: BastardKB Blackpill or Pro Micro adapter & compatible development boards +* Hardware Availability: [GitHub](https://github.com/Bastardkb/TBK-Mini) -* Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/) -* Hardware Supported: elite-C V4 -* Hardware Availability: [Bastardkb.com](https://bastardkb.com/) +Make example for this keyboard (after setting up your build environment): -## Building the firmware + make bastardkb/tbkmini/blackpill:default + make bastardkb/tbkmini/promicro:default -**You must specify the shield version when compiling/flashing the firmware.** +Flashing example for this keyboard: -The template is: + make bastardkb/tbkmini/blackpill:default:flash + make bastardkb/tbkmini/promicro:default:flash -```shell -qmk compile -kb bastardkb/tbkmini/{VERSION}/elitec -km {KEYMAP} -``` - -| Shield Version | default | via | -| --------------- | -------------------------------------------------------------- | ---------------------------------------------------------- | -| v1 (Elite-C) | `qmk compile -kb bastardkb/tbkmini/v1/elitec -km default` | `qmk compile -kb bastardkb/tbkmini/v1/elitec -km via` | -| v2 (Elite-C) | `qmk compile -kb bastardkb/tbkmini/v2/elitec -km default` | `qmk compile -kb bastardkb/tbkmini/v2/elitec -km via` | -| v2 (Splinky v2) | `qmk compile -kb bastardkb/tbkmini/v2/splinky/v2 -km default` | `qmk compile -kb bastardkb/tbkmini/v2/splinky/v2 -km via` | -| v2 (Splinky v3) | `qmk compile -kb bastardkb/tbkmini/v2/splinky/v3 -km default` | `qmk compile -kb bastardkb/tbkmini/v2/splinky/v3 -km via` | -| v2 (STeMCell) | `qmk compile -kb bastardkb/tbkmini/v2/stemcell -km default` | `qmk compile -kb bastardkb/tbkmini/v2/stemcell -km via` | +Note if using the `promicro` version: If you are using an Elite-C compatible development board, see [here](../readme.md#handedness-in-on-elite-c-holder) for setting handedness by pin. 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). -See the [keyboard build instructions](http://docs.bastardkb.com/) +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the adapter PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/bastardkb/tbkmini/tbkmini.c b/keyboards/bastardkb/tbkmini/tbkmini.c deleted file mode 100644 index 51baefb737..0000000000 --- a/keyboards/bastardkb/tbkmini/tbkmini.c +++ /dev/null @@ -1,61 +0,0 @@ -/** - * Copyright 2021 Quentin LEBASTARD - * - * This 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" - -// clang-format off -#ifdef RGB_MATRIX_ENABLE -led_config_t g_led_config = { { - // left - { 0, 5, 6, 11, 12, 15 }, - { 1, 4, 7, 10, 13, 16 }, - { 2, 3, 8, 9, 14, 17 }, - { NO_LED, 18, NO_LED, 19, 20, NO_LED }, - // right - { 21, 26, 27, 32, 33, 36 }, - { 22, 25, 28, 31, 34, 37 }, - { 23, 24, 29, 30, 35, 38 }, - { NO_LED, 39, NO_LED, 40, 41, NO_LED } -}, { - // left - { 0, 0 }, { 0, 21 }, { 0, 42 }, // col 1 - { 20, 42 }, { 20, 21 }, { 20, 0 }, // col 2 - { 41, 0 }, { 41, 21 }, { 41, 42 }, - { 61, 42 }, { 61, 21 }, { 61, 0 }, - { 81, 0 }, { 81, 21 }, { 81, 42 }, - { 102, 0 }, { 102, 21 }, { 102, 42 }, - { 61, 64 }, { 81, 64 }, { 102, 64 }, // left thumb cluster - // right - { 224, 0 }, { 224, 21 }, { 224, 42 }, // col 12 - { 204, 42 }, { 204, 21 }, { 204, 0 }, // col 11 - { 183, 0 }, { 183, 21 }, { 183, 42 }, - { 163, 42 }, { 163, 21 }, { 163, 0 }, - { 142, 0 }, { 142, 21 }, { 142, 42 }, - { 122, 0 }, { 122, 21 }, { 122, 42 }, - { 163, 64 }, { 142, 64 }, { 122, 64 } // right thumb cluster -}, { - // left - 2, 2, 2, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, - 2, 2, 2, - // right - 2, 2, 2, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, - 2, 2, 2 -} }; -#endif -// clang-format on diff --git a/keyboards/bastardkb/tbkmini/v1/elitec/config.h b/keyboards/bastardkb/tbkmini/v1/elitec/config.h deleted file mode 100644 index 41b5aa1c66..0000000000 --- a/keyboards/bastardkb/tbkmini/v1/elitec/config.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT diff --git a/keyboards/bastardkb/tbkmini/v1/elitec/keyboard.json b/keyboards/bastardkb/tbkmini/v1/elitec/keyboard.json deleted file mode 100644 index 5110ea0d74..0000000000 --- a/keyboards/bastardkb/tbkmini/v1/elitec/keyboard.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "keyboard_name": "TBK Mini Elite-C", - "usb": { - "device_version": "1.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true - }, - "ws2812": { - "pin": "D2" - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["B4", "E6", "C6", "B1", "B3", "B2"], - "rows": ["B5", "F7", "F6", "B6"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "D0" - } - }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu" -} diff --git a/keyboards/bastardkb/tbkmini/v1/elitec/rules.mk b/keyboards/bastardkb/tbkmini/v1/elitec/rules.mk deleted file mode 100644 index 1868c4bb02..0000000000 --- a/keyboards/bastardkb/tbkmini/v1/elitec/rules.mk +++ /dev/null @@ -1 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported diff --git a/keyboards/bastardkb/tbkmini/v2/elitec/config.h b/keyboards/bastardkb/tbkmini/v2/elitec/config.h deleted file mode 100644 index e6b7fefa66..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/elitec/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT diff --git a/keyboards/bastardkb/tbkmini/v2/elitec/keyboard.json b/keyboards/bastardkb/tbkmini/v2/elitec/keyboard.json deleted file mode 100644 index 701ec6af28..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/elitec/keyboard.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "keyboard_name": "TBK Mini Elite-C", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true - }, - "ws2812": { - "pin": "D3" - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["F6", "F5", "B6", "D7", "E6", "B4"], - "rows": ["F7", "C6", "D4", "B5"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "D2" - } - }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu" -} diff --git a/keyboards/bastardkb/tbkmini/v2/elitec/rules.mk b/keyboards/bastardkb/tbkmini/v2/elitec/rules.mk deleted file mode 100644 index 1868c4bb02..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/elitec/rules.mk +++ /dev/null @@ -1 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported diff --git a/keyboards/bastardkb/tbkmini/v2/splinky_2/config.h b/keyboards/bastardkb/tbkmini/v2/splinky_2/config.h deleted file mode 100644 index 977fb0a6e8..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/splinky_2/config.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define SPLIT_HAND_PIN GP13 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/tbkmini/v2/splinky_2/keyboard.json b/keyboards/bastardkb/tbkmini/v2/splinky_2/keyboard.json deleted file mode 100644 index 15db3db6e8..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/splinky_2/keyboard.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "keyboard_name": "TBK Mini Splinky", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["GP27", "GP28", "GP15", "GP6", "GP7", "GP8"], - "rows": ["GP26", "GP5", "GP4", "GP9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "ws2812": { - "pin": "GP0", - "driver": "vendor" - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/tbkmini/v2/splinky_2/readme.md b/keyboards/bastardkb/tbkmini/v2/splinky_2/readme.md deleted file mode 100644 index 662eb5825c..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/splinky_2/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Splinky controller - -The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040. - -See [plut0nium/0xB2](https://github.com/plut0nium/0xB2/#releases) to figure out the right version for you (v2 or v3). diff --git a/keyboards/bastardkb/tbkmini/v2/splinky_2/rules.mk b/keyboards/bastardkb/tbkmini/v2/splinky_2/rules.mk deleted file mode 100644 index 077573eb76..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/splinky_2/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -SERIAL_DRIVER = vendor diff --git a/keyboards/bastardkb/tbkmini/v2/splinky_3/config.h b/keyboards/bastardkb/tbkmini/v2/splinky_3/config.h deleted file mode 100644 index e496023656..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/splinky_3/config.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define SPLIT_HAND_PIN GP15 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/tbkmini/v2/splinky_3/keyboard.json b/keyboards/bastardkb/tbkmini/v2/splinky_3/keyboard.json deleted file mode 100644 index 3936b9368a..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/splinky_3/keyboard.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "keyboard_name": "TBK Mini Splinky", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["GP27", "GP28", "GP21", "GP6", "GP7", "GP8"], - "rows": ["GP26", "GP5", "GP4", "GP9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "ws2812": { - "pin": "GP0", - "driver": "vendor" - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/tbkmini/v2/splinky_3/readme.md b/keyboards/bastardkb/tbkmini/v2/splinky_3/readme.md deleted file mode 100644 index 662eb5825c..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/splinky_3/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Splinky controller - -The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040. - -See [plut0nium/0xB2](https://github.com/plut0nium/0xB2/#releases) to figure out the right version for you (v2 or v3). diff --git a/keyboards/bastardkb/tbkmini/v2/splinky_3/rules.mk b/keyboards/bastardkb/tbkmini/v2/splinky_3/rules.mk deleted file mode 100644 index 077573eb76..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/splinky_3/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -SERIAL_DRIVER = vendor diff --git a/keyboards/bastardkb/tbkmini/v2/stemcell/config.h b/keyboards/bastardkb/tbkmini/v2/stemcell/config.h deleted file mode 100644 index ca1cc0f719..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/stemcell/config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define A0 PAL_LINE(GPIOA, 0) -// #define SPLIT_HAND_PIN A0 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* RGB settings. */ -#define WS2812_PWM_DRIVER PWMD2 -#define WS2812_PWM_CHANNEL 4 -#define WS2812_PWM_PAL_MODE 1 -#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM7 -#define WS2812_PWM_DMA_CHANNEL 3 - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED diff --git a/keyboards/bastardkb/tbkmini/v2/stemcell/halconf.h b/keyboards/bastardkb/tbkmini/v2/stemcell/halconf.h deleted file mode 100644 index dbeb6aeaa0..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/stemcell/halconf.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define HAL_USE_PWM TRUE -#define HAL_USE_SERIAL TRUE - -#include_next diff --git a/keyboards/bastardkb/tbkmini/v2/stemcell/keyboard.json b/keyboards/bastardkb/tbkmini/v2/stemcell/keyboard.json deleted file mode 100644 index 2cbee7fe17..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/stemcell/keyboard.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "keyboard_name": "TBK Mini STeMCell", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "ws2812": { - "pin": "A2", - "driver": "pwm" - }, - "build": { - "debounce_type": "asym_eager_defer_pk" - }, - "matrix_pins": { - "cols": ["B1", "B2", "A4", "B4", "B5", "B8"], - "rows": ["B0", "B3", "A15", "B9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "A3" - } - }, - "development_board": "stemcell" -} diff --git a/keyboards/bastardkb/tbkmini/v2/stemcell/mcuconf.h b/keyboards/bastardkb/tbkmini/v2/stemcell/mcuconf.h deleted file mode 100644 index 6afebade36..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/stemcell/mcuconf.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2021 Charly Delay (@0xcharly) - * - * This 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_SERIAL_USE_USART1 -#define STM32_SERIAL_USE_USART1 FALSE - -#undef STM32_PWM_USE_TIM2 -#define STM32_PWM_USE_TIM2 TRUE - -#undef STM32_ST_USE_TIMER -#define STM32_ST_USE_TIMER 5 diff --git a/keyboards/bastardkb/tbkmini/v2/stemcell/rules.mk b/keyboards/bastardkb/tbkmini/v2/stemcell/rules.mk deleted file mode 100644 index 3fe3e4ffbe..0000000000 --- a/keyboards/bastardkb/tbkmini/v2/stemcell/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -SERIAL_DRIVER = usart From ba63bac661c3c6154f3b42a85167b3552d29f0f8 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 6 Jul 2025 16:57:51 +1000 Subject: [PATCH 045/167] Add short aliases for `OSM()` (#25443) --- docs/keycodes.md | 43 +++++++++++++++++++++++++++------- docs/one_shot_keys.md | 48 ++++++++++++++++++++++++++++++++++---- quantum/quantum_keycodes.h | 35 +++++++++++++++++++++++++++ 3 files changed, 113 insertions(+), 13 deletions(-) diff --git a/docs/keycodes.md b/docs/keycodes.md index 5d983e347e..33014a54a5 100644 --- a/docs/keycodes.md +++ b/docs/keycodes.md @@ -404,7 +404,6 @@ See also: [Layer Switching](feature_layers#switching-and-toggling-layers) |`DF(layer)` |Set the base (default) layer until the keyboard loses power | |`PDF(layer)` |Set the base (default) layer in EEPROM | |`MO(layer)` |Momentarily turn on `layer` when pressed (requires `KC_TRNS` on destination layer)| -|`OSL(layer)` |Momentarily activates `layer` until a key is pressed. See [One Shot Keys](one_shot_keys) for details. | |`LM(layer, mod)`|Momentarily turn on `layer` (like MO) with `mod` active as well. Where `mod` is a mods_bit. Mods can be viewed [here](mod_tap). Example Implementation: `LM(LAYER_1, MOD_LALT)`| |`LT(layer, kc)` |Turn on `layer` when held, `kc` when tapped | |`TG(layer)` |Toggle `layer` on or off | @@ -817,13 +816,41 @@ See also: [US ANSI Shifted Symbols](keycodes_us_ansi_shifted) See also: [One Shot Keys](one_shot_keys) -|Key |Aliases |Description | -|--------------------|---------|----------------------------------| -|`OSM(mod)` | |Hold `mod` for one keypress | -|`OSL(layer)` | |Switch to `layer` for one keypress| -|`QK_ONE_SHOT_TOGGLE`|`OS_TOGG`|Toggles One Shot keys status | -|`QK_ONE_SHOT_ON` |`OS_ON` |Turns One Shot keys on | -|`QK_ONE_SHOT_OFF` |`OS_OFF` |Turns One Shot keys off | +|Key |Aliases |Description | +|--------------------|---------|---------------------------------------------------------------------| +|`QK_ONE_SHOT_TOGGLE`|`OS_TOGG`|Toggles One Shot keys status | +|`QK_ONE_SHOT_ON` |`OS_ON` |Turns One Shot keys on | +|`QK_ONE_SHOT_OFF` |`OS_OFF` |Turns One Shot keys off | +|`OSL(layer)` | |Switch to `layer` for one keypress | +|`OSM(mod)` | |Hold `mod` for one keypress | +|`OS_LCTL` | |Hold Left Control for one keypress | +|`OS_LSFT` | |Hold Left Shift for one keypress | +|`OS_LALT` | |Hold Left Alt for one keypress | +|`OS_LGUI` | |Hold Left GUI for one keypress | +|`OS_LCS` | |Hold Left Control and Left Shift for one keypress | +|`OS_LCA` | |Hold Left Control and left Alt for one keypress | +|`OS_LCG` | |Hold Left Control and Left GUI for one keypress | +|`OS_LSA` | |Hold Left Shift and Left Alt for one keypress | +|`OS_LSG` | |Hold Left Shift and Left GUI for one keypress | +|`OS_LAG` | |Hold Left Alt and Left GUI for one keypress | +|`OS_LCSG` | |Hold Left Control, Left Shift and Left GUI for one keypress | +|`OS_LCAG` | |Hold Left Control, Left Alt and Left GUI for one keypress | +|`OS_LSAG` | |Hold Left Shift, Left Alt and Left GUI for one keypress | +|`OS_RCTL` | |Hold Right Control for one keypress | +|`OS_RSFT` | |Hold Right Shift for one keypress | +|`OS_RALT` | |Hold Right Alt for one keypress | +|`OS_RGUI` | |Hold Right GUI for one keypress | +|`OS_RCS` | |Hold Right Control and Right Shift for one keypress | +|`OS_RCA` | |Hold Right Control and Right Alt for one keypress | +|`OS_RCG` | |Hold Right Control and Right GUI for one keypress | +|`OS_RSA` | |Hold Right Shift and Right Alt for one keypress | +|`OS_RSG` | |Hold Right Shift and Right GUI for one keypress | +|`OS_RAG` | |Hold Right Alt and Right GUI for one keypress | +|`OS_RCSG` | |Hold Right Control, Right Shift and Right GUI for one keypress | +|`OS_RCAG` | |Hold Right Control, Right Alt and Right GUI for one keypress | +|`OS_RSAG` | |Hold Right Shift, Right Alt and Right GUI for one keypress | +|`OS_MEH` | |Hold Left Control, Left Shift and Left Alt for one keypress | +|`OS_HYPR` | |Hold Left Control, Left Shift, Left Alt and Left GUI for one keypress| ## Programmable Button Support {#programmable-button} diff --git a/docs/one_shot_keys.md b/docs/one_shot_keys.md index 140c8de475..c4d8e3a4bc 100644 --- a/docs/one_shot_keys.md +++ b/docs/one_shot_keys.md @@ -15,11 +15,49 @@ You can control the behavior of one shot keys by defining these in `config.h`: #define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */ ``` -* `OSM(mod)` - Momentarily hold down *mod*. You must use the `MOD_*` keycodes as shown in [Mod Tap](mod_tap), not the `KC_*` codes. -* `OSL(layer)` - momentary switch to *layer*. -* `OS_ON` - Turns on One Shot keys. -* `OS_OFF` - Turns off One Shot keys. OSM act as regular mod keys, OSL act like `MO`. -* `OS_TOGG` - Toggles the one shot key status. +## Keycodes {#keycodes} + +|Key |Aliases |Description | +|--------------------|---------|---------------------------------------------------------------------| +|`QK_ONE_SHOT_TOGGLE`|`OS_TOGG`|Toggles One Shot keys status | +|`QK_ONE_SHOT_ON` |`OS_ON` |Turns One Shot keys on | +|`QK_ONE_SHOT_OFF` |`OS_OFF` |Turns One Shot keys off | +|`OSL(layer)` | |Switch to `layer` for one keypress | +|`OSM(mod)` | |Hold `mod` for one keypress | +|`OS_LCTL` | |Hold Left Control for one keypress | +|`OS_LSFT` | |Hold Left Shift for one keypress | +|`OS_LALT` | |Hold Left Alt for one keypress | +|`OS_LGUI` | |Hold Left GUI for one keypress | +|`OS_LCS` | |Hold Left Control and Left Shift for one keypress | +|`OS_LCA` | |Hold Left Control and left Alt for one keypress | +|`OS_LCG` | |Hold Left Control and Left GUI for one keypress | +|`OS_LSA` | |Hold Left Shift and Left Alt for one keypress | +|`OS_LSG` | |Hold Left Shift and Left GUI for one keypress | +|`OS_LAG` | |Hold Left Alt and Left GUI for one keypress | +|`OS_LCSG` | |Hold Left Control, Left Shift and Left GUI for one keypress | +|`OS_LCAG` | |Hold Left Control, Left Alt and Left GUI for one keypress | +|`OS_LSAG` | |Hold Left Shift, Left Alt and Left GUI for one keypress | +|`OS_RCTL` | |Hold Right Control for one keypress | +|`OS_RSFT` | |Hold Right Shift for one keypress | +|`OS_RALT` | |Hold Right Alt for one keypress | +|`OS_RGUI` | |Hold Right GUI for one keypress | +|`OS_RCS` | |Hold Right Control and Right Shift for one keypress | +|`OS_RCA` | |Hold Right Control and Right Alt for one keypress | +|`OS_RCG` | |Hold Right Control and Right GUI for one keypress | +|`OS_RSA` | |Hold Right Shift and Right Alt for one keypress | +|`OS_RSG` | |Hold Right Shift and Right GUI for one keypress | +|`OS_RAG` | |Hold Right Alt and Right GUI for one keypress | +|`OS_RCSG` | |Hold Right Control, Right Shift and Right GUI for one keypress | +|`OS_RCAG` | |Hold Right Control, Right Alt and Right GUI for one keypress | +|`OS_RSAG` | |Hold Right Shift, Right Alt and Right GUI for one keypress | +|`OS_MEH` | |Hold Left Control, Left Shift and Left Alt for one keypress | +|`OS_HYPR` | |Hold Left Control, Left Shift, Left Alt and Left GUI for one keypress| + +When One Shot keys are turned off, `OSM()` and `OSL()` will behave like normal modifier keys and `MO()`, respectively. + +::: info +The `mod` parameter to the `OSM()` keycode must use the `MOD_*` prefix, rather than `KC_*`, eg. `OSM(MOD_LCTL | MOD_LSFT)`. +::: Sometimes, you want to activate a one-shot key as part of a macro or tap dance routine. diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index a2a86e175c..515386756d 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -128,6 +128,41 @@ #define OSM(mod) (QK_ONE_SHOT_MOD | ((mod)&0x1F)) #define QK_ONE_SHOT_MOD_GET_MODS(kc) ((kc)&0x1F) +#define OS_LCTL OSM(MOD_LCTL) +#define OS_LSFT OSM(MOD_LSFT) +#define OS_LALT OSM(MOD_LALT) +#define OS_LGUI OSM(MOD_LGUI) + +#define OS_LCS OSM(MOD_LCTL | MOD_LSFT) +#define OS_LCA OSM(MOD_LCTL | MOD_LALT) +#define OS_LCG OSM(MOD_LCTL | MOD_LGUI) +#define OS_LSA OSM(MOD_LSFT | MOD_LALT) +#define OS_LSG OSM(MOD_LSFT | MOD_LGUI) +#define OS_LAG OSM(MOD_LALT | MOD_LGUI) + +#define OS_LCSG OSM(MOD_LCTL | MOD_LSFT | MOD_LGUI) +#define OS_LCAG OSM(MOD_LCTL | MOD_LALT | MOD_LGUI) +#define OS_LSAG OSM(MOD_LSFT | MOD_LALT | MOD_LGUI) + +#define OS_RCTL OSM(MOD_RCTL) +#define OS_RSFT OSM(MOD_RSFT) +#define OS_RALT OSM(MOD_RALT) +#define OS_RGUI OSM(MOD_RGUI) + +#define OS_RCS OSM(MOD_RCTL | MOD_RSFT) +#define OS_RCA OSM(MOD_RCTL | MOD_RALT) +#define OS_RCG OSM(MOD_RCTL | MOD_RGUI) +#define OS_RSA OSM(MOD_RSFT | MOD_RALT) +#define OS_RSG OSM(MOD_RSFT | MOD_RGUI) +#define OS_RAG OSM(MOD_RALT | MOD_RGUI) + +#define OS_RCSG OSM(MOD_RCTL | MOD_RSFT | MOD_RGUI) +#define OS_RCAG OSM(MOD_RCTL | MOD_RALT | MOD_RGUI) +#define OS_RSAG OSM(MOD_RSFT | MOD_RALT | MOD_RGUI) + +#define OS_MEH OSM(MOD_LCTL | MOD_LSFT | MOD_LALT) +#define OS_HYPR OSM(MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI) + // Layer tap-toggle - 32 layer max #define TT(layer) (QK_LAYER_TAP_TOGGLE | ((layer)&0x1F)) #define QK_LAYER_TAP_TOGGLE_GET_LAYER(kc) ((kc)&0x1F) From 9c965bb62ec9ea84e68e0a1559dfbc35429df090 Mon Sep 17 00:00:00 2001 From: snappykey Date: Sun, 6 Jul 2025 10:39:10 +0300 Subject: [PATCH 046/167] Add Snappy Pad v.1 (#25419) --- keyboards/snappypad/v1_3x4/config.h | 5 ++ keyboards/snappypad/v1_3x4/keyboard.json | 48 ++++++++++++++ .../snappypad/v1_3x4/keymaps/default/keymap.c | 65 +++++++++++++++++++ keyboards/snappypad/v1_3x4/readme.md | 27 ++++++++ keyboards/snappypad/v1_3x4/v1_3x4.c | 11 ++++ 5 files changed, 156 insertions(+) create mode 100644 keyboards/snappypad/v1_3x4/config.h create mode 100644 keyboards/snappypad/v1_3x4/keyboard.json create mode 100644 keyboards/snappypad/v1_3x4/keymaps/default/keymap.c create mode 100644 keyboards/snappypad/v1_3x4/readme.md create mode 100644 keyboards/snappypad/v1_3x4/v1_3x4.c diff --git a/keyboards/snappypad/v1_3x4/config.h b/keyboards/snappypad/v1_3x4/config.h new file mode 100644 index 0000000000..040470b933 --- /dev/null +++ b/keyboards/snappypad/v1_3x4/config.h @@ -0,0 +1,5 @@ +// Copyright 2025 Snappy Key +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define MATRIX_MASKED diff --git a/keyboards/snappypad/v1_3x4/keyboard.json b/keyboards/snappypad/v1_3x4/keyboard.json new file mode 100644 index 0000000000..26a3384a6f --- /dev/null +++ b/keyboards/snappypad/v1_3x4/keyboard.json @@ -0,0 +1,48 @@ +{ + "manufacturer": "Snappy Key", + "keyboard_name": "Snappy Pad v1", + "maintainer": "snappykey", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "F4", "pin_b": "F5"} + ] + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "encoder": true + }, + "matrix_pins": { + "cols": ["E6", "B4", "D7", "C6", "B6", "F6"], + "rows": ["D4", "D0", "D1"] + }, + "url": "snappykey.eu", + "usb": { + "device_version": "1.0.0", + "pid": "0x1451", + "vid": "0x16D0" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 4], "x": 0, "y": 0}, + {"matrix": [0, 5], "x": 3, "y": 0}, + {"matrix": [0, 0], "x": 0, "y": 1}, + {"matrix": [0, 1], "x": 1, "y": 1}, + {"matrix": [0, 2], "x": 2, "y": 1}, + {"matrix": [0, 3], "x": 3, "y": 1}, + {"matrix": [1, 0], "x": 0, "y": 2}, + {"matrix": [1, 1], "x": 1, "y": 2}, + {"matrix": [1, 2], "x": 2, "y": 2}, + {"matrix": [1, 3], "x": 3, "y": 2}, + {"matrix": [2, 0], "x": 0, "y": 3}, + {"matrix": [2, 1], "x": 1, "y": 3}, + {"matrix": [2, 2], "x": 2, "y": 3}, + {"matrix": [2, 3], "x": 3, "y": 3} + ] + } + } +} diff --git a/keyboards/snappypad/v1_3x4/keymaps/default/keymap.c b/keyboards/snappypad/v1_3x4/keymaps/default/keymap.c new file mode 100644 index 0000000000..8ebd851e77 --- /dev/null +++ b/keyboards/snappypad/v1_3x4/keymaps/default/keymap.c @@ -0,0 +1,65 @@ +// Copyright 2025 Snappy Key +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + TO(1), KC_MPLY, + KC_F13, KC_F14, KC_F15, KC_F16, + KC_F17, KC_F18, KC_F19, KC_F20, + KC_F21, KC_F22, KC_F23, KC_F24 + ), + [1] = LAYOUT( + TO(2), KC_TRNS, + LSFT(KC_F13), LSFT(KC_F14), LSFT(KC_F15), LSFT(KC_F16), + LSFT(KC_F17), LSFT(KC_F18), LSFT(KC_F19), LSFT(KC_F20), + LSFT(KC_F21), LSFT(KC_F22), LSFT(KC_F23), LSFT(KC_F24) + ), + [2] = LAYOUT( + TO(3), KC_TRNS, + LCTL(KC_F13), LCTL(KC_F14), LCTL(KC_F15), LCTL(KC_F16), + LCTL(KC_F17), LCTL(KC_F18), LCTL(KC_F19), LCTL(KC_F20), + LCTL(KC_F21), LCTL(KC_F22), LCTL(KC_F23), LCTL(KC_F24) + ), + [3] = LAYOUT( + TO(0), KC_TRNS, + LALT(KC_F13), LALT(KC_F14), LALT(KC_F15), LALT(KC_F16), + LALT(KC_F17), LALT(KC_F18), LALT(KC_F19), LALT(KC_F20), + LALT(KC_F21), LALT(KC_F22), LALT(KC_F23), LALT(KC_F24) + ) +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case 0: + gpio_write_pin_low(F7); + gpio_write_pin_low(B2); + gpio_write_pin_low(B5); + break; + case 1: + gpio_write_pin_high(F7); + gpio_write_pin_low(B2); + gpio_write_pin_low(B5); + break; + case 2: + gpio_write_pin_high(F7); + gpio_write_pin_high(B2); + gpio_write_pin_low(B5); + break; + case 3: + gpio_write_pin_high(F7); + gpio_write_pin_high(B2); + gpio_write_pin_high(B5); + break; + } + return state; +} + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(_______, _______) }, + [2] = { ENCODER_CCW_CW(_______, _______) }, + [3] = { ENCODER_CCW_CW(_______, _______) } +}; +#endif diff --git a/keyboards/snappypad/v1_3x4/readme.md b/keyboards/snappypad/v1_3x4/readme.md new file mode 100644 index 0000000000..8e69dc58b2 --- /dev/null +++ b/keyboards/snappypad/v1_3x4/readme.md @@ -0,0 +1,27 @@ +# Snappy Pad v.1 + +![sp](https://i.imgur.com/Xgv5qky.jpeg) + +Reliable macro pad for all use cases + +* Keyboard Maintainer: [SnappyKey](https://github.com/snappykey) +* Hardware Supported: pcb, cad files +* Hardware Availability: Will be open sourced later + +Make example for this keyboard (after setting up your build environment): + + make snappypad/v1_3x4:default + +Flashing example for this keyboard: + + make snappypad/v1_3x4:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/snappypad/v1_3x4/v1_3x4.c b/keyboards/snappypad/v1_3x4/v1_3x4.c new file mode 100644 index 0000000000..e2a62773e8 --- /dev/null +++ b/keyboards/snappypad/v1_3x4/v1_3x4.c @@ -0,0 +1,11 @@ +// Copyright 2025 Snappy Key +// SPDX-License-Identifier: GPL-2.0-or-later +#include "quantum.h" + +void keyboard_post_init_kb(void) { + gpio_set_pin_output(F7); + gpio_set_pin_output(B2); + gpio_set_pin_output(B5); + + keyboard_post_init_user(); +} From 036745e853b512db868b6e226753521f7975d40c Mon Sep 17 00:00:00 2001 From: jack Date: Sun, 6 Jul 2025 02:52:24 -0600 Subject: [PATCH 047/167] Refactor `helix/rev2` (#25429) * Refactor helix/rev2 - Rename rev2 -> beta & update keyboard aliases accordingly - Removes redundant back, base, sc, under, & qmk_conf revisions - Removes unnecessary keymaps - Migrates legacy defines and configuration to keyboard.json - Tidy's keymap and migrates to JSON - Fixes RGB configuration to illuminate 32 LEDs per half - Adds an alternate 4 row layout for snappable PCB - Tidy's up OLED code - Enables standard features (bootmagic, extrakey, etc.) --- data/mappings/keyboard_aliases.hjson | 41 +- keyboards/helix/beta/beta.c | 77 ++++ keyboards/helix/beta/config.h | 5 + .../{rev2/info.json => beta/keyboard.json} | 146 ++++--- .../helix/beta/keymaps/default/keymap.json | 28 ++ keyboards/helix/rev2/back/keyboard.json | 1 - keyboards/helix/rev2/back/rules.mk | 1 - keyboards/helix/rev2/base/keyboard.json | 1 - keyboards/helix/rev2/config.h | 78 ---- keyboards/helix/rev2/keymaps/default/config.h | 38 -- keyboards/helix/rev2/keymaps/default/keymap.c | 341 --------------- .../helix/rev2/keymaps/default/oled_display.c | 138 ------ .../helix/rev2/keymaps/default/readme.md | 154 ------- .../helix/rev2/keymaps/default/readme_jp.md | 127 ------ keyboards/helix/rev2/keymaps/default/rules.mk | 23 - .../helix/rev2/keymaps/five_rows_jis/config.h | 58 --- .../helix/rev2/keymaps/five_rows_jis/keymap.c | 410 ------------------ .../rev2/keymaps/five_rows_jis/readme.md | 150 ------- .../rev2/keymaps/five_rows_jis/readme_jp.md | 173 -------- .../helix/rev2/keymaps/five_rows_jis/rules.mk | 19 - .../helix/rev2/keymaps/led_test/README.md | 27 -- .../helix/rev2/keymaps/led_test/config.h | 41 -- .../helix/rev2/keymaps/led_test/keymap.c | 341 --------------- .../rev2/keymaps/led_test/led_test_init.c | 6 - .../rev2/keymaps/led_test/oled_display.c | 1 - .../helix/rev2/keymaps/led_test/rules.mk | 25 -- keyboards/helix/rev2/local_features.mk | 90 ---- .../override_helix_options.mk-maintenance | 46 -- keyboards/helix/rev2/post_config.h | 7 - keyboards/helix/rev2/post_rules.mk | 3 - keyboards/helix/rev2/qmk_conf/keyboard.json | 1 - keyboards/helix/rev2/qmk_conf/rules.mk | 4 - keyboards/helix/rev2/readme.md | 13 - keyboards/helix/rev2/rev2.c | 76 ---- keyboards/helix/rev2/rev2.h | 36 -- keyboards/helix/rev2/rules.mk | 9 - keyboards/helix/rev2/sc/keyboard.json | 1 - keyboards/helix/rev2/sc/rules.mk | 1 - .../helix/rev2/serial_config_simpleapi.h | 4 - keyboards/helix/rev2/under/keyboard.json | 1 - keyboards/helix/rev2/under/rules.mk | 1 - 41 files changed, 209 insertions(+), 2534 deletions(-) create mode 100644 keyboards/helix/beta/beta.c create mode 100644 keyboards/helix/beta/config.h rename keyboards/helix/{rev2/info.json => beta/keyboard.json} (57%) create mode 100644 keyboards/helix/beta/keymaps/default/keymap.json delete mode 100644 keyboards/helix/rev2/back/keyboard.json delete mode 100644 keyboards/helix/rev2/back/rules.mk delete mode 100644 keyboards/helix/rev2/base/keyboard.json delete mode 100644 keyboards/helix/rev2/config.h delete mode 100644 keyboards/helix/rev2/keymaps/default/config.h delete mode 100644 keyboards/helix/rev2/keymaps/default/keymap.c delete mode 100644 keyboards/helix/rev2/keymaps/default/oled_display.c delete mode 100644 keyboards/helix/rev2/keymaps/default/readme.md delete mode 100644 keyboards/helix/rev2/keymaps/default/readme_jp.md delete mode 100644 keyboards/helix/rev2/keymaps/default/rules.mk delete mode 100644 keyboards/helix/rev2/keymaps/five_rows_jis/config.h delete mode 100644 keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c delete mode 100644 keyboards/helix/rev2/keymaps/five_rows_jis/readme.md delete mode 100644 keyboards/helix/rev2/keymaps/five_rows_jis/readme_jp.md delete mode 100644 keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk delete mode 100644 keyboards/helix/rev2/keymaps/led_test/README.md delete mode 100644 keyboards/helix/rev2/keymaps/led_test/config.h delete mode 100644 keyboards/helix/rev2/keymaps/led_test/keymap.c delete mode 100644 keyboards/helix/rev2/keymaps/led_test/led_test_init.c delete mode 100644 keyboards/helix/rev2/keymaps/led_test/oled_display.c delete mode 100644 keyboards/helix/rev2/keymaps/led_test/rules.mk delete mode 100644 keyboards/helix/rev2/local_features.mk delete mode 100644 keyboards/helix/rev2/override_helix_options.mk-maintenance delete mode 100644 keyboards/helix/rev2/post_config.h delete mode 100644 keyboards/helix/rev2/post_rules.mk delete mode 100644 keyboards/helix/rev2/qmk_conf/keyboard.json delete mode 100644 keyboards/helix/rev2/qmk_conf/rules.mk delete mode 100644 keyboards/helix/rev2/readme.md delete mode 100644 keyboards/helix/rev2/rev2.c delete mode 100644 keyboards/helix/rev2/rev2.h delete mode 100644 keyboards/helix/rev2/rules.mk delete mode 100644 keyboards/helix/rev2/sc/keyboard.json delete mode 100644 keyboards/helix/rev2/sc/rules.mk delete mode 100644 keyboards/helix/rev2/serial_config_simpleapi.h delete mode 100644 keyboards/helix/rev2/under/keyboard.json delete mode 100644 keyboards/helix/rev2/under/rules.mk diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index fb4f782844..d50ad16498 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -269,38 +269,11 @@ "handwired/jscotto/scottostarter": { "target": "handwired/scottokeebs/scottostarter" }, - "helix/rev2/back/oled": { - "target": "helix/rev2/back" + "helix": { + "target": "helix/beta" }, - "helix/rev2/oled": { - "target": "helix/rev2" - }, - "helix/rev2/oled/back": { - "target": "helix/rev2/back" - }, - "helix/rev2/oled/under": { - "target": "helix/rev2/under" - }, - "helix/rev2/sc/back": { - "target": "helix/rev2/sc" - }, - "helix/rev2/sc/oled": { - "target": "helix/rev2/sc" - }, - "helix/rev2/sc/oledback": { - "target": "helix/rev2/sc" - }, - "helix/rev2/sc/oledunder": { - "target": "helix/rev2/sc" - }, - "helix/rev2/sc/under": { - "target": "helix/rev2/sc" - }, - "helix/rev2/under": { - "target": "helix/rev2/sc" - }, - "helix/rev2/under/oled": { - "target": "helix/rev2/under" + "helix/rev2": { + "target": "helix/beta" }, "honeycomb": { "target": "keyhive/honeycomb" @@ -2290,12 +2263,6 @@ "handwired/dygma/raise": { "target": "handwired/dygma/raise/ansi" }, - "helix": { - "target": "helix/rev2/base" - }, - "helix/rev2": { - "target": "helix/rev2/base" - }, "ibm/model_m/mschwingen": { "target": "ibm/model_m/mschwingen/led_wired" }, diff --git a/keyboards/helix/beta/beta.c b/keyboards/helix/beta/beta.c new file mode 100644 index 0000000000..8020772b96 --- /dev/null +++ b/keyboards/helix/beta/beta.c @@ -0,0 +1,77 @@ +// Copyright 2020 Yushakobo +// SPDX-License-Identifier: GPL-2.0-or-later +#include "quantum.h" + +#ifdef OLED_ENABLE +void render_status(void) { + static const char os_logo[][2][3] PROGMEM = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}}; + if (!keymap_config.swap_lalt_lgui) { + oled_write_P(os_logo[0][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[0][1], false); + } else { + oled_write_P(os_logo[1][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[1][1], false); + } + + oled_write_P(PSTR(" Layer: "), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_ln_P(PSTR("Default"), false); + break; + case 1: + oled_write_ln_P(PSTR("Lower"), false); + break; + case 2: + oled_write_ln_P(PSTR("Raise"), false); + break; + case 3: + oled_write_ln_P(PSTR("Adjust"), false); + break; + default: + oled_write_ln_P(PSTR("Undefined"), false); + } + oled_write_P(PSTR("\n"), false); + + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + // clang-format off + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + // clang-format on + }; + oled_write_P(qmk_logo, false); +} + +static void render_rgblight_status(void) { + oled_write_P(PSTR(" LED"), false); + oled_write(get_u8_str(rgblight_get_mode(), ' '), false); + oled_write_char(':', false); + oled_write(get_u8_str(rgblight_get_hue() / RGBLIGHT_HUE_STEP, ' '), false); + oled_write_char(',', false); + oled_write(get_u8_str(rgblight_get_sat() / RGBLIGHT_SAT_STEP, ' '), false); + oled_write_char(',', false); + oled_write(get_u8_str(rgblight_get_val() / RGBLIGHT_VAL_STEP, ' '), false); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (is_keyboard_master()) { + render_status(); + } else { + render_logo(); + render_rgblight_status(); + } + return false; +} +#endif diff --git a/keyboards/helix/beta/config.h b/keyboards/helix/beta/config.h new file mode 100644 index 0000000000..dac611de9a --- /dev/null +++ b/keyboards/helix/beta/config.h @@ -0,0 +1,5 @@ +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define OLED_FONT_H "keyboards/helix/common/glcdfont.c" diff --git a/keyboards/helix/rev2/info.json b/keyboards/helix/beta/keyboard.json similarity index 57% rename from keyboards/helix/rev2/info.json rename to keyboards/helix/beta/keyboard.json index a8bdb23e41..240a0a8869 100644 --- a/keyboards/helix/rev2/info.json +++ b/keyboards/helix/beta/keyboard.json @@ -1,52 +1,51 @@ { - "keyboard_name": "Helix Beta", "manufacturer": "Yushakobo", - "url": "https://github.com/MakotoKurauchi/helix", + "keyboard_name": "Helix Beta", "maintainer": "MakotoKurauchi", - "usb": { - "vid": "0x3265", - "pid": "0x0000", - "device_version": "0.0.1" + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "oled": true, + "rgblight": true }, "matrix_pins": { "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"], "rows": ["D4", "C6", "D7", "E6", "B4"] }, - "diode_direction": "COL2ROW", + "rgblight": { + "animations": { + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true + }, + "led_count": 64, + "max_brightness": 45, + "split_count": [32, 32] + }, "split": { "enabled": true, "serial": { "pin": "D2" - }, - "transport": { - "sync": { - "indicators": true, - "layer_state": true - } } }, - "tapping": { - "term": 100 - }, - "rgblight": { - "hue_steps": 10, - "animations": { - "breathing": true, - "rainbow_mood": true, - "rainbow_swirl": true, - "snake": true, - "knight": true, - "christmas": true, - "static_gradient": true - } + "url": "https://shop.yushakobo.jp/products/oss_pcb?variant=39452554231969", + "usb": { + "device_version": "0.0.1", + "pid": "0x0000", + "vid": "0x3265" }, "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", "layouts": { - "LAYOUT": { + "LAYOUT_4row": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, @@ -54,42 +53,90 @@ {"matrix": [0, 3], "x": 3, "y": 0}, {"matrix": [0, 4], "x": 4, "y": 0}, {"matrix": [0, 5], "x": 5, "y": 0}, - - {"matrix": [5, 5], "x": 9, "y": 0}, - {"matrix": [5, 4], "x": 10, "y": 0}, - {"matrix": [5, 3], "x": 11, "y": 0}, - {"matrix": [5, 2], "x": 12, "y": 0}, - {"matrix": [5, 1], "x": 13, "y": 0}, - {"matrix": [5, 0], "x": 14, "y": 0}, - + {"matrix": [4, 5], "x": 9, "y": 0}, + {"matrix": [4, 4], "x": 10, "y": 0}, + {"matrix": [4, 3], "x": 11, "y": 0}, + {"matrix": [4, 2], "x": 12, "y": 0}, + {"matrix": [4, 1], "x": 13, "y": 0}, + {"matrix": [4, 0], "x": 14, "y": 0}, {"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1}, {"matrix": [1, 2], "x": 2, "y": 1}, {"matrix": [1, 3], "x": 3, "y": 1}, {"matrix": [1, 4], "x": 4, "y": 1}, {"matrix": [1, 5], "x": 5, "y": 1}, - - {"matrix": [6, 5], "x": 9, "y": 1}, - {"matrix": [6, 4], "x": 10, "y": 1}, - {"matrix": [6, 3], "x": 11, "y": 1}, - {"matrix": [6, 2], "x": 12, "y": 1}, - {"matrix": [6, 1], "x": 13, "y": 1}, - {"matrix": [6, 0], "x": 14, "y": 1}, - + {"matrix": [5, 5], "x": 9, "y": 1}, + {"matrix": [5, 4], "x": 10, "y": 1}, + {"matrix": [5, 3], "x": 11, "y": 1}, + {"matrix": [5, 2], "x": 12, "y": 1}, + {"matrix": [5, 1], "x": 13, "y": 1}, + {"matrix": [5, 0], "x": 14, "y": 1}, {"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, {"matrix": [2, 2], "x": 2, "y": 2}, {"matrix": [2, 3], "x": 3, "y": 2}, {"matrix": [2, 4], "x": 4, "y": 2}, {"matrix": [2, 5], "x": 5, "y": 2}, - + {"matrix": [6, 5], "x": 9, "y": 2}, + {"matrix": [6, 4], "x": 10, "y": 2}, + {"matrix": [6, 3], "x": 11, "y": 2}, + {"matrix": [6, 2], "x": 12, "y": 2}, + {"matrix": [6, 1], "x": 13, "y": 2}, + {"matrix": [6, 0], "x": 14, "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}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [7, 6], "x": 8, "y": 3}, + {"matrix": [7, 5], "x": 9, "y": 3}, + {"matrix": [7, 4], "x": 10, "y": 3}, + {"matrix": [7, 3], "x": 11, "y": 3}, + {"matrix": [7, 2], "x": 12, "y": 3}, + {"matrix": [7, 1], "x": 13, "y": 3}, + {"matrix": [7, 0], "x": 14, "y": 3} + ] + }, + "LAYOUT_5row": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 5], "x": 9, "y": 0}, + {"matrix": [5, 4], "x": 10, "y": 0}, + {"matrix": [5, 3], "x": 11, "y": 0}, + {"matrix": [5, 2], "x": 12, "y": 0}, + {"matrix": [5, 1], "x": 13, "y": 0}, + {"matrix": [5, 0], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 5], "x": 9, "y": 1}, + {"matrix": [6, 4], "x": 10, "y": 1}, + {"matrix": [6, 3], "x": 11, "y": 1}, + {"matrix": [6, 2], "x": 12, "y": 1}, + {"matrix": [6, 1], "x": 13, "y": 1}, + {"matrix": [6, 0], "x": 14, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, {"matrix": [7, 5], "x": 9, "y": 2}, {"matrix": [7, 4], "x": 10, "y": 2}, {"matrix": [7, 3], "x": 11, "y": 2}, {"matrix": [7, 2], "x": 12, "y": 2}, {"matrix": [7, 1], "x": 13, "y": 2}, {"matrix": [7, 0], "x": 14, "y": 2}, - {"matrix": [3, 0], "x": 0, "y": 3}, {"matrix": [3, 1], "x": 1, "y": 3}, {"matrix": [3, 2], "x": 2, "y": 3}, @@ -97,7 +144,6 @@ {"matrix": [3, 4], "x": 4, "y": 3}, {"matrix": [3, 5], "x": 5, "y": 3}, {"matrix": [3, 6], "x": 6, "y": 3}, - {"matrix": [8, 6], "x": 8, "y": 3}, {"matrix": [8, 5], "x": 9, "y": 3}, {"matrix": [8, 4], "x": 10, "y": 3}, @@ -105,7 +151,6 @@ {"matrix": [8, 2], "x": 12, "y": 3}, {"matrix": [8, 1], "x": 13, "y": 3}, {"matrix": [8, 0], "x": 14, "y": 3}, - {"matrix": [4, 0], "x": 0, "y": 4}, {"matrix": [4, 1], "x": 1, "y": 4}, {"matrix": [4, 2], "x": 2, "y": 4}, @@ -113,7 +158,6 @@ {"matrix": [4, 4], "x": 4, "y": 4}, {"matrix": [4, 5], "x": 5, "y": 4}, {"matrix": [4, 6], "x": 6, "y": 4}, - {"matrix": [9, 6], "x": 8, "y": 4}, {"matrix": [9, 5], "x": 9, "y": 4}, {"matrix": [9, 4], "x": 10, "y": 4}, diff --git a/keyboards/helix/beta/keymaps/default/keymap.json b/keyboards/helix/beta/keymaps/default/keymap.json new file mode 100644 index 0000000000..1719abca5b --- /dev/null +++ b/keyboards/helix/beta/keymaps/default/keymap.json @@ -0,0 +1,28 @@ +{ + "keyboard": "helix/beta", + "keymap": "default", + "layout": "LAYOUT_5row", + "layers": [ + [ + "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_LBRC", "KC_RBRC", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ENT" , + "MO(3)", "KC_ESC", "KC_LALT", "KC_LGUI", "LALT(KC_GRV)", "MO(1)", "KC_SPC", "KC_SPC", "MO(2)", "LALT(KC_GRV)", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT" + ], + [ + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL", + "_______", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_BSLS", + "KC_CAPS", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "_______", "_______", "KC_F12", "_______", "_______", "KC_PGDN", "KC_PGUP", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY" + ], + [ + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", + "QK_BOOT", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "EE_CLR", "_______", "_______", "_______", "_______", "_______", "AG_NORM", "AG_SWAP", "_______", "_______", "UG_TOGG", "UG_HUEU", "UG_SATU", "UG_VALU", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "UG_NEXT", "UG_HUED", "UG_SATD", "UG_VALD" + ] + ] +} diff --git a/keyboards/helix/rev2/back/keyboard.json b/keyboards/helix/rev2/back/keyboard.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/keyboards/helix/rev2/back/keyboard.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/keyboards/helix/rev2/back/rules.mk b/keyboards/helix/rev2/back/rules.mk deleted file mode 100644 index 066fffb74a..0000000000 --- a/keyboards/helix/rev2/back/rules.mk +++ /dev/null @@ -1 +0,0 @@ -LED_BACK_ENABLE = yes diff --git a/keyboards/helix/rev2/base/keyboard.json b/keyboards/helix/rev2/base/keyboard.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/keyboards/helix/rev2/base/keyboard.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/keyboards/helix/rev2/config.h b/keyboards/helix/rev2/config.h deleted file mode 100644 index 67af503882..0000000000 --- a/keyboards/helix/rev2/config.h +++ /dev/null @@ -1,78 +0,0 @@ -/* -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert -Copyright 2018 MakotoKurauchi - -This 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 QUICK_TAP_TERM 0 - -#define OLED_UPDATE_INTERVAL 50 - -// Helix keyboard RGB LED support -// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes -#ifdef RGBLED_BACK - #define RGBLIGHT_LED_COUNT 32 -#else - #define RGBLIGHT_LED_COUNT 6 -#endif - -#ifndef IOS_DEVICE_ENABLE - #if RGBLIGHT_LED_COUNT <= 6 - #define RGBLIGHT_LIMIT_VAL 255 - #else - #define RGBLIGHT_LIMIT_VAL 120 - #endif - #define RGBLIGHT_VAL_STEP 17 -#else - #if RGBLIGHT_LED_COUNT <= 6 - #define RGBLIGHT_LIMIT_VAL 90 - #else - #define RGBLIGHT_LIMIT_VAL 35 - #endif - #define RGBLIGHT_VAL_STEP 4 -#endif - -#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) -// USB_MAX_POWER_CONSUMPTION value for Helix keyboard -// 120 RGBoff, OLEDoff -// 120 OLED -// 330 RGB 6 -// 300 RGB 32 -// 310 OLED & RGB 32 - #define USB_MAX_POWER_CONSUMPTION 400 -#else - // fix iPhone and iPad power adapter issue - // iOS device need lessthan 100 - #define USB_MAX_POWER_CONSUMPTION 100 -#endif - -/* - * 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/helix/rev2/keymaps/default/config.h b/keyboards/helix/rev2/keymaps/default/config.h deleted file mode 100644 index b8c1041cdc..0000000000 --- a/keyboards/helix/rev2/keymaps/default/config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -This is the c configuration file for the keymap - -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -// place overrides here - -// If you need more program area, try select and reduce rgblight modes to use. - -// Selection of RGBLIGHT MODE to use. -#if defined(LED_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 -#endif diff --git a/keyboards/helix/rev2/keymaps/default/keymap.c b/keyboards/helix/rev2/keymaps/default/keymap.c deleted file mode 100644 index a48a855e02..0000000000 --- a/keyboards/helix/rev2/keymaps/default/keymap.c +++ /dev/null @@ -1,341 +0,0 @@ -/* Copyright 2020 yushakobo - * - * This 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_number { - _QWERTY = 0, - _COLEMAK, - _DVORAK, - _LOWER, - _RAISE, - _ADJUST -}; - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - DVORAK, - LOWER, - RAISE, - ADJUST, - BACKLIT, - EISU, - KANA, - RGBRST -}; - -enum macro_keycodes { - KC_SAMPLEMACRO, -}; - -//Macros -#define M_SAMPLE M(KC_SAMPLEMACRO) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Qwerty - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | [ | ] | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - * `-------------------------------------------------------------------------------------------------' - */ - [_QWERTY] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , - ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - - /* Colemak - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | [ | ] | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - * `-------------------------------------------------------------------------------------------------' - */ - [_COLEMAK] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, - KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , - ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - - /* Dvorak - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | ' | , | . | P | Y | | F | G | C | R | L | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | O | E | U | I | | D | H | T | N | S | / | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | [ | ] | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - * `-------------------------------------------------------------------------------------------------' - */ - [_DVORAK] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, - KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LBRC, KC_RBRC, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , - ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - - /* Lower - * ,-----------------------------------------. ,-----------------------------------------. - * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | CAPS | F7 | F8 | F9 | F10 | F11 | ( | ) | F12 | | | Home | End | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * `-------------------------------------------------------------------------------------------------' - */ - [_LOWER] = LAYOUT( - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_LPRN, KC_RPRN, KC_F12, _______, _______, KC_HOME, KC_END, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - ), - - /* Raise - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | CAPS | F7 | F8 | F9 | F10 | F11 | | | F12 | | |PageDn|PageUp| | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * `-------------------------------------------------------------------------------------------------' - */ - [_RAISE] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - ), - - /* Adjust (Lower + Raise) - * ,-----------------------------------------. ,-----------------------------------------. - * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | Reset|RGBRST| | | | | | | | | | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | |Aud on|Audoff| Mac | | Win |Qwerty|Colemk|Dvorak| | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | |RGB ON| HUE+ | SAT+ | VAL+ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | MODE | HUE- | SAT- | VAL- | - * `-------------------------------------------------------------------------------------------------' - */ - [_ADJUST] = LAYOUT( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - _______, QK_BOOT, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, - _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD - ) -}; - -#ifdef AUDIO_ENABLE - -float tone_qwerty[][2] = SONG(QWERTY_SOUND); -float tone_dvorak[][2] = SONG(DVORAK_SOUND); -float tone_colemak[][2] = SONG(COLEMAK_SOUND); -float tone_plover[][2] = SONG(PLOVER_SOUND); -float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); -#endif - -// define variables for reactive RGB -bool TOG_STATUS = false; -int RGB_current_mode; - -// Setting ADJUST layer RGB back to default -void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGB_current_mode); - #endif - layer_on(layer3); - } else { - layer_off(layer3); - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_qwerty); - #endif - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case COLEMAK: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_colemak); - #endif - set_single_persistent_default_layer(_COLEMAK); - } - return false; - break; - case DVORAK: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_dvorak); - #endif - set_single_persistent_default_layer(_DVORAK); - } - return false; - break; - case LOWER: - if (record->event.pressed) { - //not sure how to have keyboard check mode and set it to a variable, so my work around - //uses another variable that would be set to true after the first time a reactive key is pressed. - if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false - } else { - TOG_STATUS = !TOG_STATUS; - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGBLIGHT_MODE_SNAKE + 1); - #endif - } - layer_on(_LOWER); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } else { - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change - #endif - TOG_STATUS = false; - layer_off(_LOWER); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case RAISE: - if (record->event.pressed) { - //not sure how to have keyboard check mode and set it to a variable, so my work around - //uses another variable that would be set to true after the first time a reactive key is pressed. - if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false - } else { - TOG_STATUS = !TOG_STATUS; - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGBLIGHT_MODE_SNAKE); - #endif - } - layer_on(_RAISE); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } else { - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change - #endif - layer_off(_RAISE); - TOG_STATUS = false; - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case ADJUST: - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - break; - //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released - case QK_UNDERGLOW_MODE_NEXT: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - rgblight_mode(RGB_current_mode); - rgblight_step(); - RGB_current_mode = rgblight_get_mode(); - } - #endif - return false; - break; - case EISU: - if (record->event.pressed) { - if (is_mac_mode()) { - register_code(KC_LNG2); - } else { - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG2); - } - return false; - break; - case KANA: - if (record->event.pressed) { - if (is_mac_mode()) { - register_code(KC_LNG1); - } else { - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG1); - } - return false; - break; - case RGBRST: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - RGB_current_mode = rgblight_get_mode(); - } - #endif - break; - } - return true; -} - -void matrix_init_user(void) { - #ifdef RGBLIGHT_ENABLE - RGB_current_mode = rgblight_get_mode(); - #endif -} diff --git a/keyboards/helix/rev2/keymaps/default/oled_display.c b/keyboards/helix/rev2/keymaps/default/oled_display.c deleted file mode 100644 index 4eb815ce48..0000000000 --- a/keyboards/helix/rev2/keymaps/default/oled_display.c +++ /dev/null @@ -1,138 +0,0 @@ -/* Copyright 2020 yushakobo - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include 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_number { - _QWERTY = 0, - _COLEMAK, - _DVORAK, - _LOWER, - _RAISE, - _ADJUST -}; - -//assign the right code to your layers for OLED display -#define L_BASE 0 -#define L_LOWER (1<<_LOWER) -#define L_RAISE (1<<_RAISE) -#define L_ADJUST (1<<_ADJUST) -#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER) - -//OLED update loop -#ifdef OLED_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (is_keyboard_master()) { - return OLED_ROTATION_0; - } else { - return OLED_ROTATION_180; - } -} - -static void render_rgbled_status(bool full) { -# ifdef RGBLIGHT_ENABLE - char buf[30]; - if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { - if (full) { - snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", - rgblight_get_mode(), - rgblight_get_hue()/RGBLIGHT_HUE_STEP, - rgblight_get_sat()/RGBLIGHT_SAT_STEP, - rgblight_get_val()/RGBLIGHT_VAL_STEP); - } else { - snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); - } - oled_write(buf, false); - } -# endif -} - -static void render_layer_status(void) { - // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below - char buf[10]; - oled_write_P(PSTR("Layer: "), false); - switch (layer_state) { - case L_BASE: - oled_write_P(PSTR("Default"), false); - break; - case L_RAISE: - oled_write_P(PSTR("Raise"), false); - break; - case L_LOWER: - oled_write_P(PSTR("Lower"), false); - break; - case L_ADJUST: - case L_ADJUST_TRI: - oled_write_P(PSTR("Adjust"), false); - break; - default: - oled_write_P(PSTR("Undef-"), false); - snprintf(buf,sizeof(buf), "%u", layer_state); - oled_write(buf, false); - } - oled_write_P(PSTR("\n"), false); -} - -void render_status(void) { - // Render to mode icon - static const char os_logo[][2][3] PROGMEM = {{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; - if (is_mac_mode()) { - oled_write_P(os_logo[0][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[0][1], false); - } else { - oled_write_P(os_logo[1][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[1][1], false); - } - - oled_write_P(PSTR(" "), false); - render_layer_status(); - - // Host Keyboard LED Status - led_t led_state = host_keyboard_led_state(); - oled_write_P(led_state.num_lock ? PSTR("NUMLOCK") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCLK") : PSTR(" "), false); - oled_advance_page(true); - render_rgbled_status(true); - oled_write_P(PSTR("\n"), false); -} - -bool oled_task_user(void) { - -# if DEBUG_TO_SCREEN - if (debug_enable) { - return; - } -# endif - - if (is_keyboard_master()) { - render_status(); - } else { - render_helix_logo(); - render_rgbled_status(false); - render_layer_status(); - } - return false; -} -#endif // end of OLED_ENABLE diff --git a/keyboards/helix/rev2/keymaps/default/readme.md b/keyboards/helix/rev2/keymaps/default/readme.md deleted file mode 100644 index f1917a100a..0000000000 --- a/keyboards/helix/rev2/keymaps/default/readme.md +++ /dev/null @@ -1,154 +0,0 @@ -# The Default Helix Layout -## Layout - -### Qwerty - -``` - ,-----------------------------------------. ,-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | Shift| Z | X | C | V | B | [ | ] | N | M | , | . | / |Enter | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - `-------------------------------------------------------------------------------------------------' -``` - -### Colemak -``` - ,-----------------------------------------. ,-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | Shift| Z | X | C | V | B | [ | ] | K | M | , | . | / |Enter | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - `-------------------------------------------------------------------------------------------------' -``` - -### Dvorak -``` - ,-----------------------------------------. ,-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Tab | ' | , | . | P | Y | | F | G | C | R | L | Del | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Ctrl | A | O | E | U | I | | D | H | T | N | S | / | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | Shift| ; | Q | J | K | X | [ | ] | B | M | W | V | Z |Enter | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - `-------------------------------------------------------------------------------------------------' -``` - -## Layers - -|Priority|number|name|description| -| ---- | ---- | --- | --- | -|high|16|Adjust|Functions| -||4|Raise|Numeric charactors| -||3|Lower|Other charactors| -||2|Dvorak|Dvorak leyout| -||1|Colemak|Colemak leyout| -|low|0|Qwerty|QWERTY leyout(base)| - -### Lower -``` - ,-----------------------------------------. ,-----------------------------------------. - | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | F7 | F8 | F9 | F10 | F11 | ( | ) | F12 | | | Home | End | | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | | | | | | | | | | Next | Vol- | Vol+ | Play | - `-------------------------------------------------------------------------------------------------' -``` - -### Raise -``` - ,-----------------------------------------. ,-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | F7 | F8 | F9 | F10 | F11 | | | F12 | | |PageDn|PageUp| | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | | | | | | | | | | Next | Vol- | Vol+ | Play | - `-------------------------------------------------------------------------------------------------' -``` - -### Adjust (Lower + Raise) -``` - ,-----------------------------------------. ,-----------------------------------------. - | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | Reset|RGBRST| | | | | | | | | | Del | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | | |Aud on|Audoff| Mac | | Win |Qwerty|Colemk|Dvorak| | | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | | | | | | | | | |RGB ON| HUE+ | SAT+ | VAL+ | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | | | | | | | | | | MODE | HUE- | SAT- | VAL- | - `-------------------------------------------------------------------------------------------------' -``` - -## Customize - -see `qmk_firmware/keyboards/helix/rev2/keymaps/default/rules.mk` - -``` -# Helix Spacific Build Options -# you can uncomment and edit follows 7 Variables -# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。 -# OLED_ENABLE = yes # OLED_ENABLE -# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c" -# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.) -# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -# LED_ANIMATIONS = yes # LED animations -# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) -``` -## Compile - -go to qmk top directory. -``` -$ cd qmk_firmware -``` - -build -``` -$ make helix:default # with oled -$ make helix/rev2/back:default # with oled and backlight -$ make HELIX=no-ani helix/rev2/back:default # with oled and backlight without animation -$ make helix/rev2/under:default # with oled and underglow -$ make HELIX=no-oled helix:default # without oled -``` - -build (experimental use of split_common with backlight and oled) -``` -$ make helix/rev2/sc:default -``` - -flash to keyboard -``` -$ make helix:default:flash # with oled -$ make helix/rev2/back:default:flash # with oled and backlight -$ make HELIX=no-ani helix/rev2/back:default:flash # with oled and backlight without animation -$ make helix/rev2/under:default:flash # with oled and underglow -$ make HELIX=no-oled helix:default:flash # without oled -``` - -## Link -* more detail wrote in Japanese [helix/Doc/firmware_jp.md](https://github.com/MakotoKurauchi/helix/blob/master/Doc/firmware_jp.md) -* [Helix top](https://github.com/MakotoKurauchi/helix) - diff --git a/keyboards/helix/rev2/keymaps/default/readme_jp.md b/keyboards/helix/rev2/keymaps/default/readme_jp.md deleted file mode 100644 index 6ecac8f25d..0000000000 --- a/keyboards/helix/rev2/keymaps/default/readme_jp.md +++ /dev/null @@ -1,127 +0,0 @@ -# The Default Helix Layout -## 配列 - -### Qwerty配列 - -``` - ,-----------------------------------------. ,-----------------------------------------. - | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | Shift| Z | X | C | V | B | [ | ] | N | M | , | . | / |Enter | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - `-------------------------------------------------------------------------------------------------' -``` - -他の配列(Colemak,Dvorak)は、[readme.md](readme.md) を参照 - -## カスタマイズ - -Helix キーボードを4行版として製作したり、オプションの OLED をつけたり、 -RGB バックライトまたは、RGB Underglow をつけた場合は、 -`qmk_firmware/keyboards/helix/rev2/keymaps/default/rules.mk` の以下の部分を編集して機能を有効化してください。 - -``` -# Helix Spacific Build Options -# you can uncomment and edit follows 7 Variables -# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。 -# OLED_ENABLE = yes # OLED_ENABLE -# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c" -# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.) -# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -# LED_ANIMATIONS = yes # LED animations -# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) -``` - -## RGB バックライトを有効にする - -rules.mk の下記の部分を編集して no を yes に変更してください。 - -``` -LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.) -``` - -## RGB Underglow を有効にする - -rules.mk の下記の部分を編集して no を yes に変更してください。 -``` -LED_UNDERGLOW_ENABLE = yes # LED underglow (Enable WS2812 RGB underlight.) -``` - -## OLEDを無効にする - -OLED はデフォルトで有効になっています。 -無効にしたいときは rules.mk の下記の部分を編集して yes を no に変更してください。 -``` -OLED_ENABLE = no # OLED_ENABLE -``` - -## iPad/iPhoneサポートを有効にする。 - -rules.mk の下記の部分を編集して no を yes に変更してください。 -RBG Underglow や RGBバックライトの輝度を抑えて、iPad, iPhone にも接続できるようになります。 - -``` -IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) -``` - -## コンパイルの仕方 - -コンパイルは、qmk_firmware のトップディレクトリで行います。 - -``` -$ cd qmk_firmware -``` -qmk_firmwareでは各キーボードのコンパイルは、`<キーボード名>:<キーマップ名>`という指定で行います。 - -``` -$ make helix:default -``` - -キーボードへの書き込みまで同時に行うには下記のように`:flash`を付けます。 - -``` -$ make helix:default:flash -``` - -コンパイル結果と中間生成物を消去したい場合は以下のようにします。 - -``` -$ make helix:default:clean -``` - -上記の、rules.mk によるカスタマイズ項目の一部は下記のようにコマンド上で直接指定することも可能です。 - -OLED を無効にしてコンパイルしてキーボードへの書き込む。 -``` -$ make HELIX=no-oled helix/rev2:default:flash -``` - -RGB バックライトを有効にしてコンパイルしてキーボードへ書き込む。 -``` -$ make helix/rev2/back:default:flash -``` - -RGB Underglow を有効にしてコンパイルしてキーボードへ書き込む。 -``` -$ make helix/rev2/under:default:flash -``` - -OLED を無効にして、RGB バックライトを有効にしてコンパイルしてキーボードへ書き込む。 -``` -$ make HELIX=no-oled helix/rev2/back:default:flash -``` - -OLED を無効にして、RGB Underglowを有効にしてコンパイルしてキーボードへ書き込む。 -``` -$ make HELIX=no-oled helix/rev2/under:default:flash -``` - -## リンク - -* さらに詳細は、[こちら helix/Doc/firmware_jp.md](https://github.com/MakotoKurauchi/helix/blob/master/Doc/firmware_jp.md)をご覧ください。 -* [Helix top](https://github.com/MakotoKurauchi/helix) diff --git a/keyboards/helix/rev2/keymaps/default/rules.mk b/keyboards/helix/rev2/keymaps/default/rules.mk deleted file mode 100644 index 83029d1e0b..0000000000 --- a/keyboards/helix/rev2/keymaps/default/rules.mk +++ /dev/null @@ -1,23 +0,0 @@ -LTO_ENABLE = yes # if firmware size over limit, try this option - -# Helix Spacific Build Options -# you can uncomment and edit follows 7 Variables -# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。 -# OLED_ENABLE = no # OLED_ENABLE -# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c" -# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.) -# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -# LED_ANIMATIONS = yes # LED animations -# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) - -# OLED_ENABLE が yes のとき -# OLED_SELECT が core ならば QMK 標準の oled_dirver.c を使用します。 -# OLED_SELECT が core 以外ならば従来どおり helix/local_drivers/ssd1306.c を使用します。 -# If OLED_ENABLE is 'yes' -# If OLED_SELECT is 'core', use QMK standard oled_dirver.c. -# If OLED_SELECT is other than 'core', use helix/local_drivers/ssd1306.c. -OLED_SELECT = core - -ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += oled_display.c -endif diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/config.h b/keyboards/helix/rev2/keymaps/five_rows_jis/config.h deleted file mode 100644 index 97494c937f..0000000000 --- a/keyboards/helix/rev2/keymaps/five_rows_jis/config.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -This is the c configuration file for the keymap - -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#ifndef CONFIG_USER_H -#define CONFIG_USER_H - -// place overrides here - -#ifdef MOUSEKEY_ENABLE - #undef MOUSEKEY_INTERVAL - #define MOUSEKEY_INTERVAL 0 - - #undef MOUSEKEY_TIME_TO_MAX - #define MOUSEKEY_TIME_TO_MAX 150 - - #undef MOUSEKEY_MAX_SPEED - #define MOUSEKEY_MAX_SPEED 3 - - #undef MOUSEKEY_MOVE_DELTA - #define MOUSEKEY_MOVE_DELTA 5 - - #undef MOUSEKEY_DELAY - #define MOUSEKEY_DELAY 0 -#endif - -// If you need more program area, try select and reduce rgblight modes to use. - -// Selection of RGBLIGHT MODE to use. -#if defined(LED_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 -#endif - -#endif /* CONFIG_USER_H */ diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c b/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c deleted file mode 100644 index 70430894ef..0000000000 --- a/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c +++ /dev/null @@ -1,410 +0,0 @@ -#include QMK_KEYBOARD_H -#include "keymap_japanese.h" -#include -#include - -// * If you want to recognize that you pressed the Adjust key with the Lower / Raise key you can enable this comment out. However, the binary size may be over. * -// #define ADJUST_MACRO_ENABLE - -// * If you want to use the Kana key you can enable this comment out. However, the binary size may be over. * -// #define KANA_ENABLE - -// 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_number { - _BASE = 0, - _BAS_E, - _LOWER, - _LOW_E, - _RAISE, - _RAI_E, - _ADJUST, -}; - -enum custom_keycodes { - RGBRST = SAFE_RANGE, - #ifdef KANA_ENABLE - EISU, - KANA, - #endif -}; - -// Layer Mode aliases -#define DL_BAS DF(_BASE) -#define DL_BASE DF(_BAS_E) -#define ML_LOW MO(_LOWER) -#define ML_LOWE MO(_LOW_E) -#define ML_RAI MO(_RAISE) -#define ML_RAIE MO(_RAI_E) -#define ML_ADJ MO(_ADJUST) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Qwerty JIS Normal - * ,-----------------------------------------. ,-----------------------------------------. - * | Esc | 1! | 2" | 3# | 4$ | 5% | | 6& | 7' | 8( | 9) | 0 | -= | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | KANJI| Q | W | E | R | T | | Y | U | I | O | P | @` | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | A | S | D | F | G | | H | J | K | L | ;+ | :* | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | B | N | M | ,< | .> | Up |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI | Alt |Adjust|Lower |Space |Bksp |Space |Space |Raise | APP | Left | Down |Right | - * `-------------------------------------------------------------------------------------------------' - */ - [_BASE] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - JP_ZKHK, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT, - KC_LCTL, KC_LALT, KC_LGUI, ML_ADJ, ML_LOW, KC_SPC, KC_BSPC, KC_SPC, KC_SPC, ML_RAI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT - ), - - /* Qwerty JIS Exchange L and R - * ,-----------------------------------------. ,-----------------------------------------. - * | 6& | 7' | 8( | 9) | 0 | -= | | Esc | 1! | 2" | 3# | 4$ | 5% | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Y | U | I | O | P | @` | | Tab | Q | W | E | R | T | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | H | J | K | L | ;+ | :* | | | A | S | D | F | G | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | N | M | ,< | .> | /? | Up |Enter |KANJI | Shift| Z | X | C | V | B | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * |Space |Raise | }] | APP | Left | Down |Right |Adjust| Ctrl | GUI | Alt | [{ |Lower | Bksp | - * `-------------------------------------------------------------------------------------------------' - */ - [_BAS_E] = LAYOUT( - KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, - KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, - KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN, XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ENT, JP_ZKHK, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, - KC_SPC, ML_RAIE, JP_RBRC, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, ML_ADJ, KC_LCTL, KC_LALT, KC_LGUI, JP_LBRC, ML_LOWE, KC_BSPC - ), - - /* Lower JIS Normal - * ,-----------------------------------------. ,-----------------------------------------. - * | | | | | | | | | | | -= | ^~ | \| | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | | | | | @` | [{ | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | | | | ;+ | :* | ]} | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | ,< | .> | /? | \_ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | Del | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_LOWER] = LAYOUT( - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, JP_CIRC, JP_YEN, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JP_AT, JP_LBRC, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, JP_COLN, JP_RBRC, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, - _______, _______, _______, _______, XXXXXXX, XXXXXXX, KC_DEL, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - ), - - /* Lower JIS Exchange L and R - * ,-----------------------------------------. ,-----------------------------------------. - * | | | | -= | ^~ | \| | | | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | @` | [{ | | | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | ;+ | :* | ]} | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | ,< | .> | /? | \_ |PageUp| | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | Home |PageDn| End | | | | | | | Del | - * `-------------------------------------------------------------------------------------------------' - */ - [_LOW_E] = LAYOUT( - _______, XXXXXXX, XXXXXXX, KC_MINS, JP_CIRC, JP_YEN, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, XXXXXXX, XXXXXXX, XXXXXXX, JP_AT, JP_LBRC, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, XXXXXXX, XXXXXXX, KC_SCLN, JP_COLN, JP_RBRC, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_PGUP, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, _______, XXXXXXX, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, _______, XXXXXXX, _______, KC_DEL - ), - - /* Raise JIS Normal - * ,-----------------------------------------. ,-----------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | |MsWhL |MsWhU | Home |PageUp| F12 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | |MsWhR |MsWhD | End |PageDn| | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | |MsBtn1|MsBtn2| MsUp | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | |MsLeft|MsDown|MsRght| - * `-------------------------------------------------------------------------------------------------' - */ - [_RAISE] = LAYOUT( - _______, KC_F1 , KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, KC_F12, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, KC_MS_U, XXXXXXX, - _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R - ), - - /* Raise JIS Exchange L and R - * ,-----------------------------------------. ,-----------------------------------------. - * | F6 | F7 | F8 | F9 | F10 | F11 | | | F1 | F2 | F3 | F4 | F5 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | |MsWhL |MsWhU | F12 | | | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | |MsWhR |MsWhD | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | |MsBtn1|MsBtn2| MsUp | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | |MsLeft|MsDown|MsRght| | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_RAI_E] = LAYOUT( - KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, KC_F1 , KC_F2, KC_F3, KC_F4, KC_F5, - XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_F12, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, KC_MS_U, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, _______, XXXXXXX, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, XXXXXXX, _______, XXXXXXX - ), - - /* Adjust (Lower + Raise) Common map for Normal and Exchange - * ,-----------------------------------------. ,-----------------------------------------. - * | | Reset|RGBRST| | | | | | Reset|RGBRST| | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | |ModNrm|ModExc| Mac | Win | | | |ModNrm|ModExc| Mac | Win | | - * |------+------+------+------+------+------| |------+------+------+------+------|------+ - * | |RGB ON| HUE+ | SAT+ | VAL+ | | | |RGB ON| HUE+ | SAT+ | VAL+ | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------|------+ - * | | MODE | HUE- | SAT- | VAL- | | | | | MODE | HUE- | SAT- | VAL- | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_ADJUST] = LAYOUT( - XXXXXXX, QK_BOOT, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, DL_BAS, DL_BASE, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, DL_BAS, DL_BASE, AG_NORM, AG_SWAP, XXXXXXX, - XXXXXXX, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, XXXXXXX, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, - XXXXXXX, UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -}; - -#if defined(OLED_ENABLE) -char keylog[24] = {}; -const char code_to_name[60] = { - ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', - 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', - 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', - '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', - 'R', 'E', 'B', 'T', ' ', '-', ' ', '@', ' ', ' ', - ' ', ';', ':', ' ', ',', '.', '/', ' ', ' ', ' '}; - -static inline void set_keylog(uint16_t keycode, keyrecord_t *record) -{ - char name = ' '; - led_t led_state = host_keyboard_led_state(); - - if (keycode < 60) - { - name = code_to_name[keycode]; - } - - // update keylog - snprintf(keylog, sizeof(keylog), "\n%dx%d %2x %c %c %c %c", - record->event.key.row, - record->event.key.col, - keycode, - name, - led_state.num_lock ? 'N' : ' ', - led_state.caps_lock ? 'C' : ' ', - led_state.scroll_lock ? 'S' : ' ' - ); -} -#endif - -#ifdef RGBLIGHT_ENABLE -#define RGBLIGHT(mode) rgblight_mode(mode) -#else -#define RGBLIGHT(mode) -#endif - -// define variables for reactive RGB -int RGB_current_mode; -#ifdef ADJUST_MACRO_ENABLE -// Setting ADJUST layer RGB back to default -void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { - RGBLIGHT(RGB_current_mode); - layer_on(layer3); - } else { - layer_off(layer3); - } -} -#define ADJUST_MACRO(layer1, layer2, layer3) update_tri_layer_RGB(layer1, layer2, layer3) -#else -#define ADJUST_MACRO(layer1, layer2, layer3) -#endif - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - #if defined(OLED_ENABLE) - if (record->event.pressed) { - set_keylog(keycode, record); - } - #endif - - switch (keycode) { - #ifdef RGBLIGHT_ENABLE - //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released - case QK_UNDERGLOW_MODE_NEXT: - if (record->event.pressed) { - rgblight_mode(RGB_current_mode); - rgblight_step(); - RGB_current_mode = rgblight_get_mode(); - } - break; - #endif - #ifdef KANA_ENABLE - case EISU: - if (record->event.pressed) { - if (keymap_config.swap_lalt_lgui==false) { - register_code(KC_LNG2); - } else { - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG2); - } - break; - case KANA: - if (record->event.pressed) { - if(keymap_config.swap_lalt_lgui==false){ - register_code(KC_LNG1); - }else{ - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG1); - } - break; - #endif - #ifdef RGBLIGHT_ENABLE - case RGBRST: - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - RGB_current_mode = rgblight_get_mode(); - } - break; - #endif - default: - return true; - } - - return false; -} - -void matrix_init_user(void) { - #ifdef RGBLIGHT_ENABLE - RGB_current_mode = rgblight_get_mode(); - #endif -} - -//OLED update loop -#ifdef OLED_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (is_keyboard_master()) { - return OLED_ROTATION_0; - } else { - return OLED_ROTATION_180; - } -} - -//assign the right code to your layers for OLED display -#define L_BASE _BASE -#define L_LOWER (1<<_LOWER) -#define L_RAISE (1<<_RAISE) -#define L_ADJUST (1<<_ADJUST) -#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER) -#define L_LOW_E (1<<_LOW_E) -#define L_RAI_E (1<<_RAI_E) -#define L_ADJUST_TRIE (L_ADJUST|L_RAI_E|L_LOW_E) - -const char helix_logo[]={ - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4, - 0}; - -static inline void render_logo(void) { - oled_write(helix_logo, false); -} - -const char mac_win_logo[][2][3]={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; - -static inline void render_status(void) { - char buf[20]; - // Render to mode icon - if(keymap_config.swap_lalt_lgui==false){ - oled_write(mac_win_logo[0][0], false); - oled_write_P(PSTR("\n"), false); - oled_write(mac_win_logo[0][1], false); - } else { - oled_write(mac_win_logo[1][0], false); - oled_write_P(PSTR("\n"), false); - oled_write(mac_win_logo[1][1], false); - } - - #ifdef RGBLIGHT_ENABLE - snprintf(buf, sizeof(buf), " LED mode:%d", (short)RGB_current_mode); - oled_write(buf, false); - #endif - - // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below - oled_write_P(PSTR("\nLayer: "), false); - switch (layer_state) { - case L_BASE: - oled_write_P(default_layer_state == (1UL<<_BAS_E) ? PSTR("BaseEx") : PSTR("Base"), false); - break; - case L_RAISE: - oled_write_P(PSTR("Raise"), false); - break; - case L_RAI_E: - oled_write_P(PSTR("RaiseEx"), false); - break; - case L_LOWER: - oled_write_P(PSTR("Lower"), false); - break; - case L_LOW_E: - oled_write_P(PSTR("LowerEx"), false); - break; - case L_ADJUST: - case L_ADJUST_TRI: - case L_ADJUST_TRIE: - oled_write_P(PSTR("Adjust"), false); - break; - default: - snprintf(buf, sizeof(buf), "%d", (short)layer_state); - oled_write(buf, false); - } - - oled_write(keylog, false); -} - -bool oled_task_user(void) { - -# if DEBUG_TO_SCREEN - if (debug_enable) { - return; - } -# endif - - if (is_keyboard_master()) { - render_status(); - } else { - render_logo(); - } - - return false; -} - -#endif // end of OLED_ENABLE diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/readme.md b/keyboards/helix/rev2/keymaps/five_rows_jis/readme.md deleted file mode 100644 index ca408e3913..0000000000 --- a/keyboards/helix/rev2/keymaps/five_rows_jis/readme.md +++ /dev/null @@ -1,150 +0,0 @@ -# Helix 5 rows JIS layout - -This keymap was created with the concept that users using Japanese JIS keyboard layout can operate without difficulty. It has the following features. - -* We are considering to be able to input long Japanese notes without moving the layer -* We are arranging the relation of symbols that can not fit in the Lower layer keeping the positional relationship -* The four-way key is in a convex arrangement -* Ctrl, Shift, Tab, Kanji, Esc, GUI (Win), App keys are arranged keeping positional relationship -* Lower / Raise keymap is considering easy placement so that it can be used without memorizing - -This keymap also includes a "NORMAL" keymap that uses Helix's split keyboard as usual, and an "EXCHANGE" key that exchanges left and right sides of Helix's split keyboard for key position optimization I am trying to switch maps. These have the following additional features. - -## NORMAL Keymap - -* It is possible to press the N key with the left index finger and the B key with the right index finger - -## EXCHANGE Keymap - -* By using the 2 key under Pro micro effectively add `` `[{` `` `` `]]` ``, `` `/?` `` Keys to NORMAL's base keymap And make inputs other than the `` `\ _` `` key possible with the base map -* To avoid mistakes in pressing the Kanji key and the Enter key, we are moving to the 2 key. - -## 配列 - -### NORMAL Keymap - - Adjust + ModExc key switches to the NORMAL keymap. - -Base Layer - -``` - ,-----------------------------------------. ,-----------------------------------------. - | Esc | 1! | 2" | 3# | 4$ | 5% | | 6& | 7' | 8( | 9) | 0 | -= | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | KANJI| Q | W | E | R | T | | Y | U | I | O | P | @` | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Tab | A | S | D | F | G | | H | J | K | L | ;+ | :* | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | Shift| Z | X | C | V | B | N | B | N | M | ,< | .> | Up |Enter | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | Ctrl | GUI | Alt |Adjust|Lower |Space |Bksp |Space |Space |Raise | APP | Left | Down |Right | - `-------------------------------------------------------------------------------------------------' -``` - -Lower Layer - -``` - ,-----------------------------------------. ,-----------------------------------------. - | | | | | | | | | | | -= | ^~ | \| | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | | | | | | | | | | | @` | [{ | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | | | | | | | | | | ;+ | :* | ]} | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | | | | | | | | | | ,< | .> | /? | \_ | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | | | | | | Del | | | | | | | | - `-------------------------------------------------------------------------------------------------' -``` - -Raise Layer - -``` - ,-----------------------------------------. ,-----------------------------------------. - | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | | | | | | | F12 | | | | Home |PageUp| - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | | | | | | | | | | | End |PageDn| - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | |MsBtn1|MsBtn2| | | | | | | | | | MsUp | | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | | | | | | | | | | |MsLeft|MsDown|MsRght| - `-------------------------------------------------------------------------------------------------' -``` - -### EXCHANGE Keymap - -Adjust + ModExc key switches to the EXCHANGE keymap. - -Base Layer - -``` - ,-----------------------------------------.,-----------------------------------------. - | Esc | 1! | 2" | 3# | 4$ | 5% || 6& | 7' | 8( | 9) | 0 | -= | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Tab | Q | W | E | R | T || Y | U | I | O | P | @` | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | A | S | D | F | G || H | J | K | L | ;+ | :* | - ,------+------+------+------+------+------+------||------+------+------+------+------+------+------. - |KANJI | Shift| Z | X | C | V | B || N | M | ,< | .> | /? | Up |Enter | - |------+------+------+------+------+------+------||------+------+------+------+------+------+------| - |Adjust| Ctrl | GUI | Alt | [{ |Lower | Bksp ||Space |Raise | }] | APP | Left | Down |Right | - `------------------------------------------------'`------------------------------------------------' -``` - -Lower Layer - -``` - ,-----------------------------------------.,-----------------------------------------. - | | | | | | || | | | -= | ^~ | \| | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | | | | | || | | | | @` | [{ | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | | | | | || | | | ;+ | :* | ]} | - ,------+------+------+------+------+------+------||------+------+------+------+------+------+------. - | | | | | | | || | ,< | .> | /? | \_ |PageUp| | - |------+------+------+------+------+------+------||------+------+------+------+------+------+------| - | | | | | | | Del || | | | | Home |PageDn| End | - `------------------------------------------------'`------------------------------------------------' -``` - -Raise Layer - -``` - ,-----------------------------------------.,-----------------------------------------. - | | F1 | F2 | F3 | F4 | F5 || F6 | F7 | F8 | F9 | F10 | F11 | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | | | | | || F12 | | | | | | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | | | | | || | | | | | | - ,------+------+------+------+------+------+------||------+------+------+------+------+------+------. - | | |MsBtn1|MsBtn2| | | || | | | | | MsUp | | - |------+------+------+------+------+------+------||------+------+------+------+------+------+------| - | | | | | | | || | | | |MsLeft|MsDown|MsRght| - `------------------------------------------------'`------------------------------------------------' -``` - -### NORMAL/EXCHANGE common Layer - -Adjust Layer - - NORMAL / EXCHANGE This layer is used in common. The same items are arranged in the same row on both sides so that they can be used in common. - -``` - ,-----------------------------------------. ,-----------------------------------------. - | | Reset|RGBRST|Aud on|Audoff| | | | Reset|RGBRST|Aud on|Audoff| | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | |ModNrm|ModExc| Mac | Win | | | |ModNrm|ModExc| Mac | Win | | - |------+------+------+------+------+------| |------+------+------+------+------|------+ - | |RGB ON| HUE+ | SAT+ | VAL+ | | | |RGB ON| HUE+ | SAT+ | VAL+ | | - |------+------+------+------+------+------+------+------+------+------+------+------+------|------+ - | | MODE | HUE- | SAT- | VAL- | | | | | MODE | HUE- | SAT- | VAL- | | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | | | | | | | | | | | | | | - `-------------------------------------------------------------------------------------------------' -``` - -## How to compile these program - - See the readme of the Default keymap. diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/readme_jp.md b/keyboards/helix/rev2/keymaps/five_rows_jis/readme_jp.md deleted file mode 100644 index 442984f6ff..0000000000 --- a/keyboards/helix/rev2/keymaps/five_rows_jis/readme_jp.md +++ /dev/null @@ -1,173 +0,0 @@ -# Helix 5 rows JIS layout - -## コンセプト - -このキーマップは日本語JISキーボード配列を利用しているユーザーが無理なく操作出来るというコンセプトで作成しました。以下の特徴があります。 - -* 日本語の長音記号をレイヤーを移動せずに入力可能なように考慮しています -* 入りきらない記号関連をLowerレイヤーに位置関係を維持して配置しています -* 十字キーを凸配置にしています -* Ctrl,Shift,Tab,漢字,Esc,GUI(Win),Appの各キーは位置関係を維持して配置しています -* Lower/Raiseキーマップは暗記しないでも使えるようにわかりやすい配置を考慮しています - - またこのキーマップにはHelixの分割されたキーボードを通常通りに使用する「NORMAL」キーマップと、キー位置の最適化のためにHelixの分割されたキーボードの左右を交換して使う「EXCHANGE」キーマップをバイナリの書き換えなしに切り替えられるようにしています。これらにはさらに以下の特徴があります。 - -### NORMALキーマップ - -* Nキーを左人差し指で、Bキーを右人差し指で押下することが可能 - -### EXCHANGEキーマップ - -* Pro micro下の2キーを有効に使うことにより、NORMALのベースキーマップに```[{```,```}]```,```/?```の各キーを追加し、```\_```キー以外の入力をベースマップで可能にしています -* 漢字キー,Enterキーの押し間違いを避けるためPro micro下の2キーに移動しています - -## カスタマイズ - -Normal/Exchangeにそれぞれ、Base,Lower,Raiseの各レイヤーを備え、2マップ3レイヤー、共通1レイヤー(Adjust)の全7種のレイヤーを備えています。 -ファームの書き換えなしにキーマップを別のものに切り替えられるので、片方は通常のキーマップ、もう片方は画像や動画編集用のキーマップや別の変態配置のキーマップにすれば、状況に応じて簡単に切り替えられます。 - -## 配列 - -### NORMAL - - Adjust + ModNrmキーでNORMALキーマップに切り替わります。 - -#### Baseレイヤー - -``` - ,-----------------------------------------. ,-----------------------------------------. - | Esc | 1! | 2" | 3# | 4$ | 5% | | 6& | 7' | 8( | 9) | 0 | -= | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | KANJI| Q | W | E | R | T | | Y | U | I | O | P | @` | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | Tab | A | S | D | F | G | | H | J | K | L | ;+ | :* | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | Shift| Z | X | C | V | B | N | B | N | M | ,< | .> | Up |Enter | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | Ctrl | GUI | Alt |Adjust|Lower |Space |Bksp |Space |Space |Raise | APP | Left | Down |Right | - `-------------------------------------------------------------------------------------------------' -``` - -#### Lowerレイヤー - - 記号キーと、BackSpace位置にDeleteキーを配置しています。 - 例えば```|```キーを入力する場合、Lower + Shift + \キーで入力することが出来ます。 - -``` - ,-----------------------------------------. ,-----------------------------------------. - | | | | | | | | | | | -= | ^~ | \| | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | | | | | | | | | | | @` | [{ | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | | | | | | | | | | ;+ | :* | ]} | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | | | | | | | | | | ,< | .> | /? | \_ | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | | | | | | Del | | | | | | | | - `-------------------------------------------------------------------------------------------------' -``` - -#### Raiseレイヤー - - rules.mkのMOUSEKEY_ENABLEをyesにした場合マウスキーを利用できます。ただしバイナリ容量を食いますのでmakeした時に確認できるバイナリサイズがオーバーしていないことに十分注意してください。 - また、F1-F12キーをHHKBライクに使えるように横並びにしました。 - -``` - ,-----------------------------------------. ,-----------------------------------------. - | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | | | | | | | F12 | | | | Home |PageUp| - |------+------+------+------+------+------| |------+------+------+------+------+------| - | | | | | | | | | | | | End |PageDn| - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | |MsBtn1|MsBtn2| | | | | | | | | | MsUp | | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | | | | | | | | | | |MsLeft|MsDown|MsRght| - `-------------------------------------------------------------------------------------------------' -``` - -### EXCHANGEキーマップ - - Adjust + ModExcキーでEXCHANGEキーマップに切り替わります。 - HelixのUSBやフォンケーブルの接続は変更せず、分割された左右のキーボードを入れ替えて使います。 - -#### Baseレイヤー - - ちょっと無理やりですが```[{```,```}]```キーを突っ込んでいます。 - -``` - ,-----------------------------------------.,-----------------------------------------. - | Esc | 1! | 2" | 3# | 4$ | 5% || 6& | 7' | 8( | 9) | 0 | -= | - |------+------+------+------+------+------||------+------+------+------+------+------| - | Tab | Q | W | E | R | T || Y | U | I | O | P | @` | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | A | S | D | F | G || H | J | K | L | ;+ | :* | - ,------+------+------+------+------+------+------||------+------+------+------+------+------+------. - |KANJI | Shift| Z | X | C | V | B || N | M | ,< | .> | /? | Up |Enter | - |------+------+------+------+------+------+------||------+------+------+------+------+------+------| - |Adjust| Ctrl | GUI | Alt | [{ |Lower | Bksp ||Space |Raise | }] | APP | Left | Down |Right | - `------------------------------------------------'`------------------------------------------------' -``` - -#### Lowerレイヤー - - 記号キーと、BackSpace位置にDeleteキーを配置しています。 - PageDown/Up, Home/EndをCtrl+十字キーの延長線上で使用できるように配置しています。 - -``` - ,-----------------------------------------.,-----------------------------------------. - | | | | | | || | | | -= | ^~ | \| | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | | | | | || | | | | @` | [{ | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | | | | | || | | | ;+ | :* | ]} | - ,------+------+------+------+------+------+------||------+------+------+------+------+------+------. - | | | | | | | || | ,< | .> | /? | \_ |PageUp| | - |------+------+------+------+------+------+------||------+------+------+------+------+------+------| - | | | | | | | Del || | | | | Home |PageDn| End | - `------------------------------------------------'`------------------------------------------------' -``` - -#### Raiseレイヤー - - rules.mkのMOUSEKEY_ENABLEをyesにした場合マウスキーを利用できます。ただしバイナリ容量を食いますのでmakeした時に確認できるバイナリサイズがオーバーしていないことに十分注意してください。 - また、F1-F12キーをHHKBライクに使えるように横並びにしました。 - マウスキーは十字キーの延長線上で使用できるように配置しています。 - -``` - ,-----------------------------------------.,-----------------------------------------. - | | F1 | F2 | F3 | F4 | F5 || F6 | F7 | F8 | F9 | F10 | F11 | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | | | | | || F12 | | | | | | - |------+------+------+------+------+------||------+------+------+------+------+------| - | | | | | | || | | | | | | - ,------+------+------+------+------+------+------||------+------+------+------+------+------+------. - | | |MsBtn1|MsBtn2| | | || | | | | | MsUp | | - |------+------+------+------+------+------+------||------+------+------+------+------+------+------| - | | | | | | | || | | | |MsLeft|MsDown|MsRght| - `------------------------------------------------'`------------------------------------------------' -``` - -### NORMAL/EXCHANGE共通レイヤー - -Adjustレイヤー - - NORMAL/EXCHANGE共通で利用するレイヤーです。共通で使えるように両側同じ並びで同じものを配置しています。 - -``` - ,-----------------------------------------. ,-----------------------------------------. - | | Reset|RGBRST|Aud on|Audoff| | | | Reset|RGBRST|Aud on|Audoff| | - |------+------+------+------+------+------| |------+------+------+------+------+------| - | |ModNrm|ModExc| Mac | Win | | | |ModNrm|ModExc| Mac | Win | | - |------+------+------+------+------+------| |------+------+------+------+------|------+ - | |RGB ON| HUE+ | SAT+ | VAL+ | | | |RGB ON| HUE+ | SAT+ | VAL+ | | - |------+------+------+------+------+------+------+------+------+------+------+------+------|------+ - | | MODE | HUE- | SAT- | VAL- | | | | | MODE | HUE- | SAT- | VAL- | | - |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - | | | | | | | | | | | | | | | - `-------------------------------------------------------------------------------------------------' -``` - -## コンパイルの仕方 - - Defaultキーマップのreadmeを参照してください。 diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk b/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk deleted file mode 100644 index b4f8e27de4..0000000000 --- a/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk +++ /dev/null @@ -1,19 +0,0 @@ -LTO_ENABLE = no # if firmware size over limit, try this option - -# Helix Spacific Build Options -# you can uncomment and edit follows 7 Variables -# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。 -# OLED_ENABLE = no # OLED_ENABLE -# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c" -# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.) -# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -# LED_ANIMATIONS = yes # LED animations -# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) - -# OLED_ENABLE が yes のとき -# OLED_SELECT が core ならば QMK 標準の oled_dirver.c を使用します。 -# OLED_SELECT が core 以外ならば従来どおり helix/local_drivers/ssd1306.c を使用します。 -# If OLED_ENABLE is 'yes' -# If OLED_SELECT is 'core', use QMK standard oled_dirver.c. -# If OLED_SELECT is other than 'core', use helix/local_drivers/ssd1306.c. -OLED_SELECT = core diff --git a/keyboards/helix/rev2/keymaps/led_test/README.md b/keyboards/helix/rev2/keymaps/led_test/README.md deleted file mode 100644 index 2fe6706452..0000000000 --- a/keyboards/helix/rev2/keymaps/led_test/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# LED test Keymap - -## Layout - -The layout is the same as default. - -## Feature - -* OLED is enabled. -* LED backlight is enabled and always lit. -* The lighting color of LED changes periodically. Red, Green and Blue. - -The user can check whether the LED is lit or not. - -## Compile - -``` -$ cd qmk_firmware -$ make helix:led_test -``` - -## Flash QMK Firmware - -Execute the 'make' command and press the reset switch on the keyboard. -``` -$ make helix:led_test:flash -``` diff --git a/keyboards/helix/rev2/keymaps/led_test/config.h b/keyboards/helix/rev2/keymaps/led_test/config.h deleted file mode 100644 index e2bdf2f329..0000000000 --- a/keyboards/helix/rev2/keymaps/led_test/config.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -This is the c configuration file for the keymap - -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#ifndef CONFIG_USER_H -#define CONFIG_USER_H - -// place overrides here - -// If you need more program area, try select and reduce rgblight modes to use. - -// Selection of RGBLIGHT MODE to use. -#if defined(LED_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 // led_test keymap need only this. - //#define RGBLIGHT_EFFECT_ALTERNATING -#endif - -#endif /* CONFIG_USER_H */ diff --git a/keyboards/helix/rev2/keymaps/led_test/keymap.c b/keyboards/helix/rev2/keymaps/led_test/keymap.c deleted file mode 100644 index a48a855e02..0000000000 --- a/keyboards/helix/rev2/keymaps/led_test/keymap.c +++ /dev/null @@ -1,341 +0,0 @@ -/* Copyright 2020 yushakobo - * - * This 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_number { - _QWERTY = 0, - _COLEMAK, - _DVORAK, - _LOWER, - _RAISE, - _ADJUST -}; - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - DVORAK, - LOWER, - RAISE, - ADJUST, - BACKLIT, - EISU, - KANA, - RGBRST -}; - -enum macro_keycodes { - KC_SAMPLEMACRO, -}; - -//Macros -#define M_SAMPLE M(KC_SAMPLEMACRO) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Qwerty - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | [ | ] | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - * `-------------------------------------------------------------------------------------------------' - */ - [_QWERTY] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , - ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - - /* Colemak - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | [ | ] | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - * `-------------------------------------------------------------------------------------------------' - */ - [_COLEMAK] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, - KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , - ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - - /* Dvorak - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | ' | , | . | P | Y | | F | G | C | R | L | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | O | E | U | I | | D | H | T | N | S | / | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | [ | ] | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - * `-------------------------------------------------------------------------------------------------' - */ - [_DVORAK] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, - KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LBRC, KC_RBRC, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , - ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - - /* Lower - * ,-----------------------------------------. ,-----------------------------------------. - * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | CAPS | F7 | F8 | F9 | F10 | F11 | ( | ) | F12 | | | Home | End | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * `-------------------------------------------------------------------------------------------------' - */ - [_LOWER] = LAYOUT( - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_LPRN, KC_RPRN, KC_F12, _______, _______, KC_HOME, KC_END, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - ), - - /* Raise - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | CAPS | F7 | F8 | F9 | F10 | F11 | | | F12 | | |PageDn|PageUp| | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * `-------------------------------------------------------------------------------------------------' - */ - [_RAISE] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - ), - - /* Adjust (Lower + Raise) - * ,-----------------------------------------. ,-----------------------------------------. - * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | Reset|RGBRST| | | | | | | | | | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | |Aud on|Audoff| Mac | | Win |Qwerty|Colemk|Dvorak| | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | |RGB ON| HUE+ | SAT+ | VAL+ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | MODE | HUE- | SAT- | VAL- | - * `-------------------------------------------------------------------------------------------------' - */ - [_ADJUST] = LAYOUT( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - _______, QK_BOOT, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, - _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD - ) -}; - -#ifdef AUDIO_ENABLE - -float tone_qwerty[][2] = SONG(QWERTY_SOUND); -float tone_dvorak[][2] = SONG(DVORAK_SOUND); -float tone_colemak[][2] = SONG(COLEMAK_SOUND); -float tone_plover[][2] = SONG(PLOVER_SOUND); -float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); -#endif - -// define variables for reactive RGB -bool TOG_STATUS = false; -int RGB_current_mode; - -// Setting ADJUST layer RGB back to default -void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGB_current_mode); - #endif - layer_on(layer3); - } else { - layer_off(layer3); - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_qwerty); - #endif - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case COLEMAK: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_colemak); - #endif - set_single_persistent_default_layer(_COLEMAK); - } - return false; - break; - case DVORAK: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_dvorak); - #endif - set_single_persistent_default_layer(_DVORAK); - } - return false; - break; - case LOWER: - if (record->event.pressed) { - //not sure how to have keyboard check mode and set it to a variable, so my work around - //uses another variable that would be set to true after the first time a reactive key is pressed. - if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false - } else { - TOG_STATUS = !TOG_STATUS; - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGBLIGHT_MODE_SNAKE + 1); - #endif - } - layer_on(_LOWER); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } else { - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change - #endif - TOG_STATUS = false; - layer_off(_LOWER); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case RAISE: - if (record->event.pressed) { - //not sure how to have keyboard check mode and set it to a variable, so my work around - //uses another variable that would be set to true after the first time a reactive key is pressed. - if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false - } else { - TOG_STATUS = !TOG_STATUS; - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGBLIGHT_MODE_SNAKE); - #endif - } - layer_on(_RAISE); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } else { - #ifdef RGBLIGHT_ENABLE - //rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change - #endif - layer_off(_RAISE); - TOG_STATUS = false; - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case ADJUST: - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - break; - //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released - case QK_UNDERGLOW_MODE_NEXT: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - rgblight_mode(RGB_current_mode); - rgblight_step(); - RGB_current_mode = rgblight_get_mode(); - } - #endif - return false; - break; - case EISU: - if (record->event.pressed) { - if (is_mac_mode()) { - register_code(KC_LNG2); - } else { - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG2); - } - return false; - break; - case KANA: - if (record->event.pressed) { - if (is_mac_mode()) { - register_code(KC_LNG1); - } else { - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG1); - } - return false; - break; - case RGBRST: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - RGB_current_mode = rgblight_get_mode(); - } - #endif - break; - } - return true; -} - -void matrix_init_user(void) { - #ifdef RGBLIGHT_ENABLE - RGB_current_mode = rgblight_get_mode(); - #endif -} diff --git a/keyboards/helix/rev2/keymaps/led_test/led_test_init.c b/keyboards/helix/rev2/keymaps/led_test/led_test_init.c deleted file mode 100644 index 7f8813acdd..0000000000 --- a/keyboards/helix/rev2/keymaps/led_test/led_test_init.c +++ /dev/null @@ -1,6 +0,0 @@ -#include QMK_KEYBOARD_H - -void keyboard_post_init_user(void) { - rgblight_enable_noeeprom(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_RGB_TEST); -} diff --git a/keyboards/helix/rev2/keymaps/led_test/oled_display.c b/keyboards/helix/rev2/keymaps/led_test/oled_display.c deleted file mode 100644 index 3261b6c581..0000000000 --- a/keyboards/helix/rev2/keymaps/led_test/oled_display.c +++ /dev/null @@ -1 +0,0 @@ -#include "../default/oled_display.c" diff --git a/keyboards/helix/rev2/keymaps/led_test/rules.mk b/keyboards/helix/rev2/keymaps/led_test/rules.mk deleted file mode 100644 index 5aa9439f4c..0000000000 --- a/keyboards/helix/rev2/keymaps/led_test/rules.mk +++ /dev/null @@ -1,25 +0,0 @@ -# QMK Standard Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -# See TOP/keyboards/helix/rules.mk for a list of options that can be set. -# See TOP/docs/config_options.md for more information. -# - -LTO_ENABLE = no # if firmware size over limit, try this option - -# Helix Spacific Build Options -# you can uncomment and edit follows 7 Variables -# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。 -OLED_ENABLE = yes # OLED_ENABLE -# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c" -LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.) -LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -LED_ANIMATIONS = yes # LED animations -# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) - -OLED_SELECT = core -ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += oled_display.c -endif -SRC += led_test_init.c diff --git a/keyboards/helix/rev2/local_features.mk b/keyboards/helix/rev2/local_features.mk deleted file mode 100644 index 4bfee0411d..0000000000 --- a/keyboards/helix/rev2/local_features.mk +++ /dev/null @@ -1,90 +0,0 @@ -# -# local_features.mk contains post-processing rules for the Helix keyboard. -# -# Post-processing rules convert keyboard-specific shortcuts (that represent -# combinations of standard options) into QMK standard options. -# - -KEYBOARD_LOCAL_FEATURES_MK := --include $(strip $(HELIX_TOP_DIR)/rev2/override_helix_options.mk) ## File dedicated to maintenance - -# Parse 'HELIX=xx,yy,zz' option -ifneq ($(strip $(HELIX)),) - # make HELIX=ios helix/pico:AKEYMAP - # make HELIX=no-ani helix/pico:AKEYMAP - # make HELIX=no-oled helix/pico:AKEYMAP - # make HELIX=ios,no-ani,no-oled helix/pico:AKEYMAP - define HELIX_OPTION_PARSE - # parce 'no-ani' 'ios' 'no-oled' - $(if $(SHOW_PARCE),$(info parse .$1.)) #debug - $(if $(HELIX_OVERRIDE_PARSE),$(call HELIX_OVERRIDE_PARSE,$1)) - - ifeq ($(strip $1),ios) - IOS_DEVICE_ENABLE = yes - endif - ifneq ($(filter na no_ani no-ani,$(strip $1)),) - LED_ANIMATIONS = no - endif - ifneq ($(filter nooled no-oled,$(strip $1)),) - OLED_ENABLE = no - endif - ifeq ($(strip $1),oled) - OLED_ENABLE = yes - endif - endef # end of HELIX_OPTION_PARSE - - COMMA=, - $(eval $(foreach A_OPTION_NAME,$(subst $(COMMA), ,$(HELIX)), \ - $(call HELIX_OPTION_PARSE,$(A_OPTION_NAME)))) - - SHOW_HELIX_OPTIONS = yes -endif - -######## -# convert Helix-specific options (that represent combinations of standard options) -# into QMK standard options. - -ifeq ($(strip $(LED_BACK_ENABLE)), yes) - RGBLIGHT_ENABLE = yes - OPT_DEFS += -DRGBLED_BACK - ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes) - $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes') - endif -else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes) - RGBLIGHT_ENABLE = yes -endif - -ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes) - OPT_DEFS += -DIOS_DEVICE_ENABLE -endif - -ifeq ($(strip $(LED_ANIMATIONS)), yes) - OPT_DEFS += -DLED_ANIMATIONS -endif - -ifeq ($(strip $(OLED_ENABLE)), yes) - ifeq ($(strip $(LOCAL_GLCDFONT)), yes) - OPT_DEFS += -DOLED_FONT_H=\ - else - OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\" - endif -endif - -ifneq ($(strip $(SHOW_HELIX_OPTIONS)),) - $(info Helix Spacific Build Options) - $(info - OLED_ENABLE = $(OLED_ENABLE)) - $(info - LED_BACK_ENABLE = $(LED_BACK_ENABLE)) - $(info - LED_UNDERGLOW_ENABLE = $(LED_UNDERGLOW_ENABLE)) - $(info - LED_ANIMATIONS = $(LED_ANIMATIONS)) - $(info - IOS_DEVICE_ENABLE = $(IOS_DEVICE_ENABLE)) - $(info ) - $(info QMK Build Options) - $(info -- SPLIT_KEYBOARD = $(SPLIT_KEYBOARD)) - $(info -- RGBLIGHT_ENABLE = $(RGBLIGHT_ENABLE)) - $(info -- OLED_DRIVER = $(OLED_DRIVER)) - $(info -- OLED_LOCAL_ENABLE = $(OLED_LOCAL_ENABLE)) - $(info -- CONSOLE_ENABLE = $(CONSOLE_ENABLE)) - $(info -- OPT_DEFS = $(OPT_DEFS)) - $(info -- LTO_ENABLE = $(LTO_ENABLE)) - $(info ) -endif diff --git a/keyboards/helix/rev2/override_helix_options.mk-maintenance b/keyboards/helix/rev2/override_helix_options.mk-maintenance deleted file mode 100644 index 56dee8ce78..0000000000 --- a/keyboards/helix/rev2/override_helix_options.mk-maintenance +++ /dev/null @@ -1,46 +0,0 @@ -ifneq ($(strip $(HELIX)),) - $(info -------------------------) - $(info override_helix_options.mk) - $(info -------------------------) -endif - -define HELIX_OVERRIDE_PARSE - ifeq ($(strip $1),back) - LED_BACK_ENABLE = yes - LED_UNDERGLOW_ENABLE = no - endif - ifeq ($(strip $1),under) - LED_BACK_ENABLE = no - LED_UNDERGLOW_ENABLE = yes - endif - ifneq ($(filter led-off led_off noback no-back nounder no-under,$(strip $1)),) - LED_BACK_ENABLE = no - LED_UNDERGLOW_ENABLE = no - endif - ifneq ($(filter core-oled core_oled newoled new-oled olednew oled-new,$(strip $1)),) - OLED_ENABLE = yes - OLED_SELECT = core - endif - ifneq ($(filter local-oled local_oled oldoled old-oled oledold oled-old,$(strip $1)),) - OLED_ENABLE = yes - OLED_SELECT = local - endif - ifneq ($(filter sc split-common split_common,$(strip $1)),) - SPLIT_KEYBOARD = yes - endif - ifneq ($(filter nosc no-sc no-split-common no-split_common,$(strip $1)),) - SPLIT_KEYBOARD = no - endif - ifeq ($(strip $1),scan) - DEBUG_MATRIX_SCAN_RATE_ENABLE = yes - endif - ifeq ($(strip $1),scan-api) - DEBUG_MATRIX_SCAN_RATE_ENABLE = api - endif - ifeq ($(strip $1),lto) - LTO_ENABLE = yes - endif - ifneq ($(filter nolto no-lto no_lto,$(strip $1)),) - LTO_ENABLE = no - endif -endef # end of HELIX_OVERRIDE_PARSE diff --git a/keyboards/helix/rev2/post_config.h b/keyboards/helix/rev2/post_config.h deleted file mode 100644 index dda73d5d22..0000000000 --- a/keyboards/helix/rev2/post_config.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#if defined(SPLIT_KEYBOARD) /* if use split_common */ -# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_SPLIT) -# define RGBLIGHT_SPLIT /* helix hardware need this */ -# endif -#endif diff --git a/keyboards/helix/rev2/post_rules.mk b/keyboards/helix/rev2/post_rules.mk deleted file mode 100644 index 4c671d4515..0000000000 --- a/keyboards/helix/rev2/post_rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -ifneq ($(strip $(KEYBOARD_LOCAL_FEATURES_MK)),) - include $(strip $(KEYBOARD_LOCAL_FEATURES_MK)) -endif diff --git a/keyboards/helix/rev2/qmk_conf/keyboard.json b/keyboards/helix/rev2/qmk_conf/keyboard.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/keyboards/helix/rev2/qmk_conf/keyboard.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/keyboards/helix/rev2/qmk_conf/rules.mk b/keyboards/helix/rev2/qmk_conf/rules.mk deleted file mode 100644 index 67caab1ce6..0000000000 --- a/keyboards/helix/rev2/qmk_conf/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.) -LED_ANIMATIONS = yes # LED animations - -include $(strip $(KEYBOARD_LOCAL_FEATURES_MK)) diff --git a/keyboards/helix/rev2/readme.md b/keyboards/helix/rev2/readme.md deleted file mode 100644 index e6a6f2e952..0000000000 --- a/keyboards/helix/rev2/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -# Helix rev2 - -A compact split ortholinear keyboard. - -* Keyboard Maintainer: [yushakobo](https://github.com/yushakobo) -* Hardware Supported: Helix rev2 PCBs, Pro Micro -* Hardware Availability: [PCB & Case Data](https://github.com/MakotoKurauchi/helix) - -Make example for this keyboard (after setting up your build environment): - - make helix/rev2:default:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/helix/rev2/rev2.c b/keyboards/helix/rev2/rev2.c deleted file mode 100644 index 7502ad0552..0000000000 --- a/keyboards/helix/rev2/rev2.c +++ /dev/null @@ -1,76 +0,0 @@ -/* Copyright 2018 MakotoKurauchi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "rev2.h" - -// Each keymap.c should use is_keyboard_master() instead of 'is_master'. -// But keep 'is_master' for a while for backwards compatibility -// for the old keymap.c. -uint8_t is_master = false; - -bool is_mac_mode(void) { - // This is the opposite of the QMK standard, but we'll leave it for backwards compatibility. - return keymap_config.swap_lalt_lgui == false; -} - -void set_mac_mode_kb(bool macmode) { - /* The result is the same as pressing the AG_NORM(=MAGIC_UNSWAP_ALT_GUI)/AG_SWAP(=MAGIC_SWAP_ALT_GUI) keys. - * see - * https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L123-L124 - * https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L80-L81 - */ - keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = !macmode; - eeconfig_update_keymap(&keymap_config); -} - -void matrix_init_kb(void) { - // Each keymap.c should use is_keyboard_master() instead of is_master. - // But keep is_master for a while for backwards compatibility - // for the old keymap.c. - is_master = is_keyboard_master(); - - matrix_init_user(); -}; - -void keyboard_post_init_kb(void) { -#if defined(DEBUG_MATRIX_SCAN_RATE) - debug_enable = true; -#endif - keyboard_post_init_user(); -} - -#ifdef OLED_ENABLE -void render_helix_logo(void) { - static const char helix_logo[] PROGMEM ={ - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4, - 0}; - oled_write_P(helix_logo, false); -} - -bool oled_task_kb(void) { - if (oled_task_user()) { - /* keymap/user level oled_task_user() dose not exist */ - led_t led_state = host_keyboard_led_state(); - oled_write_P(led_state.num_lock ? PSTR("NUMLOCK") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCLK") : PSTR(" "), false); - oled_advance_page(true); - render_helix_logo(); - } - return false; -} -#endif /* end of OLED_ENABLE */ diff --git a/keyboards/helix/rev2/rev2.h b/keyboards/helix/rev2/rev2.h deleted file mode 100644 index dad08c267e..0000000000 --- a/keyboards/helix/rev2/rev2.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2018 MakotoKurauchi - * - * This 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" - -bool is_mac_mode(void); -void set_mac_mode_kb(bool macmode); - -#ifdef OLED_ENABLE -void render_helix_logo(void); -#endif - -#ifndef SPLIT_KEYBOARD - extern bool is_helix_master(void); - #define is_keyboard_master() is_helix_master() -#endif - -// Each keymap.c should use is_keyboard_master() instead of 'is_master', 'has_usb()'. -// But keep 'is_master' for a while for backwards compatibility -// for the old keymap.c. -extern uint8_t is_master; // 'is_master' will be obsolete, it is recommended to use 'is_keyboard_master ()' instead. -#define has_usb() is_keyboard_master() diff --git a/keyboards/helix/rev2/rules.mk b/keyboards/helix/rev2/rules.mk deleted file mode 100644 index e827ae111f..0000000000 --- a/keyboards/helix/rev2/rules.mk +++ /dev/null @@ -1,9 +0,0 @@ -KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))local_features.mk - -# Helix Spacific Build Options default values -OLED_ENABLE = yes # OLED_ENABLE -LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c" -LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.) -LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -LED_ANIMATIONS = yes # LED animations -IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) diff --git a/keyboards/helix/rev2/sc/keyboard.json b/keyboards/helix/rev2/sc/keyboard.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/keyboards/helix/rev2/sc/keyboard.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/keyboards/helix/rev2/sc/rules.mk b/keyboards/helix/rev2/sc/rules.mk deleted file mode 100644 index 066fffb74a..0000000000 --- a/keyboards/helix/rev2/sc/rules.mk +++ /dev/null @@ -1 +0,0 @@ -LED_BACK_ENABLE = yes diff --git a/keyboards/helix/rev2/serial_config_simpleapi.h b/keyboards/helix/rev2/serial_config_simpleapi.h deleted file mode 100644 index b51e6f281b..0000000000 --- a/keyboards/helix/rev2/serial_config_simpleapi.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2 -#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2 diff --git a/keyboards/helix/rev2/under/keyboard.json b/keyboards/helix/rev2/under/keyboard.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/keyboards/helix/rev2/under/keyboard.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/keyboards/helix/rev2/under/rules.mk b/keyboards/helix/rev2/under/rules.mk deleted file mode 100644 index a37aa6fab3..0000000000 --- a/keyboards/helix/rev2/under/rules.mk +++ /dev/null @@ -1 +0,0 @@ -LED_UNDERGLOW_ENABLE = yes From baf0060761db4e0f1d631b00e6057c6763470e78 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 6 Jul 2025 20:30:47 +1000 Subject: [PATCH 048/167] Deprecate some nonstandard mod & mod-tap keycode aliases (#25437) --- docs/feature_advanced_keycodes.md | 60 ++++++++-------- docs/keycodes.md | 70 +++++++++---------- docs/mod_tap.md | 6 +- .../tf_longeboye/keymaps/default/keymap.c | 2 +- .../ergodox_ez/glow/keymaps/default/keymap.c | 2 +- keyboards/ergodox_ez/keymaps/default/keymap.c | 2 +- .../ergodox_ez/keymaps/default_osx/keymap.c | 2 +- .../ergodox_ez/keymaps/rgb_layer/keymap.c | 2 +- keyboards/ergodox_ez/keymaps/testing/keymap.c | 2 +- .../util/keymap_beautifier/README.md | 4 +- .../h0oni/deskpad/keymaps/default/keymap.c | 2 +- .../keymaps/default/keymap.c | 10 +-- .../space_oddity/keymaps/default/keymap.c | 2 +- keyboards/hotdox/keymaps/default/keymap.c | 2 +- .../ergodox_infinity/keymaps/default/keymap.c | 2 +- keyboards/k34/keymaps/default/keymap.c | 4 +- keyboards/keebformom/keymaps/default/keymap.c | 2 +- .../keyhive/opus/keymaps/default/keymap.c | 2 +- .../ktec/ergodone/keymaps/default/keymap.c | 2 +- .../littlealby/mute/keymaps/default/keymap.c | 2 +- .../littlealby/mute/keymaps/ms_teams/keymap.c | 2 +- .../palette1202/keymaps/default/keymap.c | 6 +- quantum/quantum_keycodes.h | 13 ---- quantum/quantum_keycodes_legacy.h | 11 +++ 24 files changed, 106 insertions(+), 108 deletions(-) diff --git a/docs/feature_advanced_keycodes.md b/docs/feature_advanced_keycodes.md index b21accd367..a6f8bc8372 100644 --- a/docs/feature_advanced_keycodes.md +++ b/docs/feature_advanced_keycodes.md @@ -2,36 +2,36 @@ These allow you to combine a modifier with a keycode. When pressed, the keydown event for the modifier, then `kc` will be sent. On release, the keyup event for `kc`, then the modifier will be sent. -|Key |Aliases |Description | -|----------|----------------------------------|-------------------------------------------------------------------------------| -|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` | -|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` | -|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` | -|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)` |Hold Left GUI and press `kc` | -|`LCS(kc)` | |Hold Left Control and Left Shift and press `kc` | -|`LCA(kc)` | |Hold Left Control and Left Alt and press `kc` | -|`LCG(kc)` | |Hold Left Control and Left GUI and press `kc` | -|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` | -|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and Left GUI and press `kc` | -|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` | -|`LCSG(kc)`| |Hold Left Control, Left Shift and Left GUI and press `kc` | -|`LCAG(kc)`| |Hold Left Control, Left Alt and Left GUI and press `kc` | -|`LSAG(kc)`| |Hold Left Shift, Left Alt and Left GUI and press `kc` | -|`RCTL(kc)`| |Hold Right Control and press `kc` | -|`RSFT(kc)`| |Hold Right Shift and press `kc` | -|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` | -|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` | -|`RCA(kc)` | |Hold Right Control and Right Alt and press `kc` | -|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` | -|`RCG(kc)` | |Hold Right Control and Right GUI and press `kc` | -|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt and press `kc` | -|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` | -|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` | -|`RCSG(kc)`| |Hold Right Control, Right Shift and Right GUI and press `kc` | -|`RCAG(kc)`| |Hold Right Control, Right Alt and Right GUI and press `kc` | -|`RSAG(kc)`| |Hold Right Shift, Right Alt and Right GUI and press `kc` | -|`MEH(kc)` | |Hold Left Control, Left Shift and Left Alt and press `kc` | -|`HYPR(kc)`| |Hold Left Control, Left Shift, Left Alt and Left GUI and press `kc`1| +|Key |Aliases |Description | +|----------|-------------------------------|-------------------------------------------------------------------------------| +|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` | +|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` | +|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` | +|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)`|Hold Left GUI and press `kc` | +|`LCS(kc)` | |Hold Left Control and Left Shift and press `kc` | +|`LCA(kc)` | |Hold Left Control and Left Alt and press `kc` | +|`LCG(kc)` | |Hold Left Control and Left GUI and press `kc` | +|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` | +|`LSG(kc)` | |Hold Left Shift and Left GUI and press `kc` | +|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` | +|`LCSG(kc)`| |Hold Left Control, Left Shift and Left GUI and press `kc` | +|`LCAG(kc)`| |Hold Left Control, Left Alt and Left GUI and press `kc` | +|`LSAG(kc)`| |Hold Left Shift, Left Alt and Left GUI and press `kc` | +|`RCTL(kc)`| |Hold Right Control and press `kc` | +|`RSFT(kc)`| |Hold Right Shift and press `kc` | +|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` | +|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` | +|`RCA(kc)` | |Hold Right Control and Right Alt and press `kc` | +|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` | +|`RCG(kc)` | |Hold Right Control and Right GUI and press `kc` | +|`RSA(kc)` | |Hold Right Shift and Right Alt and press `kc` | +|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` | +|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` | +|`RCSG(kc)`| |Hold Right Control, Right Shift and Right GUI and press `kc` | +|`RCAG(kc)`| |Hold Right Control, Right Alt and Right GUI and press `kc` | +|`RSAG(kc)`| |Hold Right Shift, Right Alt and Right GUI and press `kc` | +|`MEH(kc)` | |Hold Left Control, Left Shift and Left Alt and press `kc` | +|`HYPR(kc)`| |Hold Left Control, Left Shift, Left Alt and Left GUI and press `kc`1| 1. More information on the Hyper key can be found on [this blog post by Brett Terpstra](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/). diff --git a/docs/keycodes.md b/docs/keycodes.md index 33014a54a5..e569e87431 100644 --- a/docs/keycodes.md +++ b/docs/keycodes.md @@ -657,38 +657,38 @@ See also: [Mouse Keys](features/mouse_keys) See also: [Modifier Keys](feature_advanced_keycodes#modifier-keys) -|Key |Aliases |Description | -|----------|----------------------------------|-------------------------------------------------------------------| -|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` | -|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` | -|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` | -|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)` |Hold Left GUI and press `kc` | -|`LCS(kc)` | |Hold Left Control and Left Shift and press `kc` | -|`LCA(kc)` | |Hold Left Control and Left Alt and press `kc` | -|`LCG(kc)` | |Hold Left Control and Left GUI and press `kc` | -|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` | -|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and Left GUI and press `kc` | -|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` | -|`LCSG(kc)`| |Hold Left Control, Left Shift and Left GUI and press `kc` | -|`LCAG(kc)`| |Hold Left Control, Left Alt and Left GUI and press `kc` | -|`LSAG(kc)`| |Hold Left Shift, Left Alt and Left GUI and press `kc` | -|`RCTL(kc)`| |Hold Right Control and press `kc` | -|`RSFT(kc)`| |Hold Right Shift and press `kc` | -|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` | -|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` | -|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` | -|`RCA(kc)` | |Hold Right Control and Right Alt and press `kc` | -|`RCG(kc)` | |Hold Right Control and Right GUI and press `kc` | -|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt and press `kc` | -|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` | -|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` | -|`RCSG(kc)`| |Hold Right Control, Right Shift and Right GUI and press `kc` | -|`RCAG(kc)`| |Hold Right Control, Right Alt and Right GUI and press `kc` | -|`RSAG(kc)`| |Hold Right Shift, Right Alt and Right GUI and press `kc` | -|`MEH(kc)` | |Hold Left Control, Left Shift and Left Alt and press `kc` | -|`HYPR(kc)`| |Hold Left Control, Left Shift, Left Alt and Left GUI and press `kc`| -|`KC_MEH` | |Left Control, Left Shift and Left Alt | -|`KC_HYPR` | |Left Control, Left Shift, Left Alt and Left GUI | +|Key |Aliases |Description | +|----------|-------------------------------|-------------------------------------------------------------------| +|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` | +|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` | +|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` | +|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)`|Hold Left GUI and press `kc` | +|`LCS(kc)` | |Hold Left Control and Left Shift and press `kc` | +|`LCA(kc)` | |Hold Left Control and Left Alt and press `kc` | +|`LCG(kc)` | |Hold Left Control and Left GUI and press `kc` | +|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` | +|`LSG(kc)` | |Hold Left Shift and Left GUI and press `kc` | +|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` | +|`LCSG(kc)`| |Hold Left Control, Left Shift and Left GUI and press `kc` | +|`LCAG(kc)`| |Hold Left Control, Left Alt and Left GUI and press `kc` | +|`LSAG(kc)`| |Hold Left Shift, Left Alt and Left GUI and press `kc` | +|`RCTL(kc)`| |Hold Right Control and press `kc` | +|`RSFT(kc)`| |Hold Right Shift and press `kc` | +|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` | +|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` | +|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` | +|`RCA(kc)` | |Hold Right Control and Right Alt and press `kc` | +|`RCG(kc)` | |Hold Right Control and Right GUI and press `kc` | +|`RSA(kc)` | |Hold Right Shift and Right Alt and press `kc` | +|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` | +|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` | +|`RCSG(kc)`| |Hold Right Control, Right Shift and Right GUI and press `kc` | +|`RCAG(kc)`| |Hold Right Control, Right Alt and Right GUI and press `kc` | +|`RSAG(kc)`| |Hold Right Shift, Right Alt and Right GUI and press `kc` | +|`MEH(kc)` | |Hold Left Control, Left Shift and Left Alt and press `kc` | +|`HYPR(kc)`| |Hold Left Control, Left Shift, Left Alt and Left GUI and press `kc`| +|`KC_MEH` | |Left Control, Left Shift and Left Alt | +|`KC_HYPR` | |Left Control, Left Shift, Left Alt and Left GUI | ## Mod-Tap Keys {#mod-tap-keys} @@ -705,7 +705,7 @@ See also: [Mod-Tap](mod_tap) |`LCA_T(kc)` | |Left Control and Left Alt when held, `kc` when tapped | |`LCG_T(kc)` | |Left Control and Left GUI when held, `kc` when tapped | |`LSA_T(kc)` | |Left Shift and Left Alt when held, `kc` when tapped | -|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and Left GUI when held, `kc` when tapped | +|`LSG_T(kc)` | |Left Shift and Left GUI when held, `kc` when tapped | |`LAG_T(kc)` | |Left Alt and Left GUI when held, `kc` when tapped | |`LCSG_T(kc)` | |Left Control, Left Shift and Left GUI when held, `kc` when tapped | |`LCAG_T(kc)` | |Left Control, Left Alt and Left GUI when held, `kc` when tapped | @@ -717,14 +717,14 @@ See also: [Mod-Tap](mod_tap) |`RCS_T(kc)` | |Right Control and Right Shift when held, `kc` when tapped | |`RCA_T(kc)` | |Right Control and Right Alt when held, `kc` when tapped | |`RCG_T(kc)` | |Right Control and Right GUI when held, `kc` when tapped | -|`RSA_T(kc)` |`SAGR_T(kc)` |Right Shift and Right Alt when held, `kc` when tapped | +|`RSA_T(kc)` | |Right Shift and Right Alt when held, `kc` when tapped | |`RSG_T(kc)` | |Right Shift and Right GUI when held, `kc` when tapped | |`RAG_T(kc)` | |Right Alt and Right GUI when held, `kc` when tapped | |`RCSG_T(kc)` | |Right Control, Right Shift and Right GUI when held, `kc` when tapped | |`RCAG_T(kc)` | |Right Control, Right Alt and Right GUI when held, `kc` when tapped | |`RSAG_T(kc)` | |Right Shift, Right Alt and Right GUI when held, `kc` when tapped | |`MEH_T(kc)` | |Left Control, Left Shift and Left Alt when held, `kc` when tapped | -|`HYPR_T(kc)` |`ALL_T(kc)` |Left Control, Left Shift, Left Alt and Left GUI when held, `kc` when tapped| +|`HYPR_T(kc)` | |Left Control, Left Shift, Left Alt and Left GUI when held, `kc` when tapped| ## Tapping Term Keys {#tapping-term-keys} diff --git a/docs/mod_tap.md b/docs/mod_tap.md index ebf79adb7f..67922c0915 100644 --- a/docs/mod_tap.md +++ b/docs/mod_tap.md @@ -37,7 +37,7 @@ For convenience, QMK includes some Mod-Tap shortcuts to make common combinations |`LCA_T(kc)` | |Left Control and Left Alt when held, `kc` when tapped | |`LCG_T(kc)` | |Left Control and Left GUI when held, `kc` when tapped | |`LSA_T(kc)` | |Left Shift and Left Alt when held, `kc` when tapped | -|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and Left GUI when held, `kc` when tapped | +|`LSG_T(kc)` | |Left Shift and Left GUI when held, `kc` when tapped | |`LAG_T(kc)` | |Left Alt and Left GUI when held, `kc` when tapped | |`LCSG_T(kc)`| |Left Control, Left Shift and Left GUI when held, `kc` when tapped | |`LCAG_T(kc)`| |Left Control, Left Alt and Left GUI when held, `kc` when tapped | @@ -49,14 +49,14 @@ For convenience, QMK includes some Mod-Tap shortcuts to make common combinations |`RCS_T(kc)` | |Right Control and Right Shift when held, `kc` when tapped | |`RCA_T(kc)` | |Right Control and Right Alt when held, `kc` when tapped | |`RCG_T(kc)` | |Right Control and Right GUI when held, `kc` when tapped | -|`RSA_T(kc)` |`SAGR_T(kc)` |Right Shift and Right Alt when held, `kc` when tapped | +|`RSA_T(kc)` | |Right Shift and Right Alt when held, `kc` when tapped | |`RSG_T(kc)` | |Right Shift and Right GUI when held, `kc` when tapped | |`RAG_T(kc)` | |Right Alt and Right GUI when held, `kc` when tapped | |`RCSG_T(kc)`| |Right Control, Right Shift and Right GUI when held, `kc` when tapped | |`RCAG_T(kc)`| |Right Control, Right Alt and Right GUI when held, `kc` when tapped | |`RSAG_T(kc)`| |Right Shift, Right Alt and Right GUI when held, `kc` when tapped | |`MEH_T(kc)` | |Left Control, Left Shift and Left Alt when held, `kc` when tapped | -|`HYPR_T(kc)`|`ALL_T(kc)` |Left Control, Left Shift, Left Alt and Left GUI when held, `kc` when tapped1| +|`HYPR_T(kc)`| |Left Control, Left Shift, Left Alt and Left GUI when held, `kc` when tapped1| 1. More information on the Hyper key can be found on [this blog post by Brett Terpstra](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/). diff --git a/keyboards/ep/comsn/tf_longeboye/keymaps/default/keymap.c b/keyboards/ep/comsn/tf_longeboye/keymaps/default/keymap.c index 1fdcc9d4db..ef0570a6b3 100644 --- a/keyboards/ep/comsn/tf_longeboye/keymaps/default/keymap.c +++ b/keyboards/ep/comsn/tf_longeboye/keymaps/default/keymap.c @@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, SGUI(KC_S), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, LSG(KC_S), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS ), diff --git a/keyboards/ergodox_ez/glow/keymaps/default/keymap.c b/keyboards/ergodox_ez/glow/keymaps/default/keymap.c index 13b2cee50a..b3f394bee8 100644 --- a/keyboards/ergodox_ez/glow/keymaps/default/keymap.c +++ b/keyboards/ergodox_ez/glow/keymaps/default/keymap.c @@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), GUI_T(KC_QUOT), - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, HYPR_T(KC_NO), MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, LT(SYMB,KC_GRV), KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, TT(SYMB), ALT_T(KC_APP), KC_LGUI, KC_LALT, CTL_T(KC_ESC), KC_HOME, KC_PGUP, diff --git a/keyboards/ergodox_ez/keymaps/default/keymap.c b/keyboards/ergodox_ez/keymaps/default/keymap.c index 555e203370..5197f140f0 100644 --- a/keyboards/ergodox_ez/keymaps/default/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default/keymap.c @@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), GUI_T(KC_QUOT), - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, HYPR_T(KC_NO), MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, LT(SYMB,KC_GRV), KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, TT(SYMB), ALT_T(KC_APP), KC_LGUI, KC_LALT, CTL_T(KC_ESC), KC_HOME, KC_PGUP, diff --git a/keyboards/ergodox_ez/keymaps/default_osx/keymap.c b/keyboards/ergodox_ez/keymaps/default_osx/keymap.c index 3ab66078fe..97c8bea54c 100644 --- a/keyboards/ergodox_ez/keymaps/default_osx/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default_osx/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, HYPR_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, ALT_T(KC_APP), KC_LGUI, KC_HOME, diff --git a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c index 47c2612e35..47be8ebb40 100644 --- a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c +++ b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c @@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, HYPR_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, ALT_T(KC_APP), KC_LGUI, KC_HOME, diff --git a/keyboards/ergodox_ez/keymaps/testing/keymap.c b/keyboards/ergodox_ez/keymaps/testing/keymap.c index 300c2457c4..70a4af45a4 100644 --- a/keyboards/ergodox_ez/keymaps/testing/keymap.c +++ b/keyboards/ergodox_ez/keymaps/testing/keymap.c @@ -20,7 +20,7 @@ enum custom_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_ergodox(KC_EQUAL,KC_1,KC_2,KC_3,KC_4,KC_5,LCTL(KC_MINUS),KC_DELETE,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_LBRC,KC_BSPC,KC_A,KC_S,KC_D,KC_F,KC_G,SC_LSPO,CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,ALL_T(KC_NO),LT(1,KC_GRAVE),KC_QUOTE,LALT(KC_LSFT),KC_LEFT,KC_RIGHT,ALT_T(KC_APPLICATION),KC_LGUI,KC_HOME,KC_SPACE,KC_UNDS,KC_END,LCTL(KC_EQUAL),KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINUS,KC_RBRC,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLS,KC_H,ALT_T(KC_J),KC_K,KC_L,LT(2,KC_SCLN),GUI_T(KC_QUOTE),MEH_T(KC_NO),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),SC_RSPC,KC_UP,KC_DOWN,KC_LBRC,KC_RBRC,TT(1),KC_LALT,CTL_T(KC_ESCAPE),KC_PGUP,KC_PGDN,LT(1,KC_TAB),KC_ENTER), + [0] = LAYOUT_ergodox(KC_EQUAL,KC_1,KC_2,KC_3,KC_4,KC_5,LCTL(KC_MINUS),KC_DELETE,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_LBRC,KC_BSPC,KC_A,KC_S,KC_D,KC_F,KC_G,SC_LSPO,CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,HYPR_T(KC_NO),LT(1,KC_GRAVE),KC_QUOTE,LALT(KC_LSFT),KC_LEFT,KC_RIGHT,ALT_T(KC_APPLICATION),KC_LGUI,KC_HOME,KC_SPACE,KC_UNDS,KC_END,LCTL(KC_EQUAL),KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINUS,KC_RBRC,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLS,KC_H,ALT_T(KC_J),KC_K,KC_L,LT(2,KC_SCLN),GUI_T(KC_QUOTE),MEH_T(KC_NO),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),SC_RSPC,KC_UP,KC_DOWN,KC_LBRC,KC_RBRC,TT(1),KC_LALT,CTL_T(KC_ESCAPE),KC_PGUP,KC_PGDN,LT(1,KC_TAB),KC_ENTER), [1] = LAYOUT_ergodox(KC_TRANSPARENT,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,LCTL(KC_W),KC_LBRC,KC_RBRC,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,LCTL(KC_PGUP),LCTL(KC_PGDN),UG_NEXT,KC_TRANSPARENT,KC_TRANSPARENT,UG_VALD,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_F12,KC_AMPR,KC_UNDS,KC_MINUS,KC_SCLN,KC_PLUS,KC_TRANSPARENT,KC_TRANSPARENT,KC_PIPE,KC_AT,KC_EQUAL,KC_PERC,KC_BSLS,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,UG_TOGG,RGB_SLD,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,UG_HUEU), diff --git a/keyboards/ergodox_ez/util/keymap_beautifier/README.md b/keyboards/ergodox_ez/util/keymap_beautifier/README.md index e7c7096f77..849e61fc9b 100644 --- a/keyboards/ergodox_ez/util/keymap_beautifier/README.md +++ b/keyboards/ergodox_ez/util/keymap_beautifier/README.md @@ -7,7 +7,7 @@ This Python 3 script, by [Tsan-Kuang Lee](https://github.com/tsankuanglee) takes For example, the original `keymap.c` looks like ``` -[0] = LAYOUT_ergodox(KC_EQUAL,KC_1,KC_2,KC_3,KC_4,KC_5,LCTL(KC_MINUS),KC_DELETE,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_LBRC,KC_BSPC,KC_A,KC_S,KC_D,KC_F,KC_G,SC_LSPO,CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,ALL_T(KC_NO),LT(1,KC_GRAVE),KC_QUOTE,LALT(KC_LSFT),KC_LEFT,KC_RIGHT,ALT_T(KC_APPLICATION),KC_LGUI,KC_HOME,KC_SPACE,KC_UNDS,KC_END,LCTL(KC_EQUAL),KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINUS,KC_RBRC,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLS,KC_H,ALT_T(KC_J),KC_K,KC_L,LT(2,KC_SCLN),GUI_T(KC_QUOTE),MEH_T(KC_NO),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),SC_RSPC,KC_UP,KC_DOWN,KC_LBRC,KC_RBRC,TT(1),KC_LALT,CTL_T(KC_ESCAPE),KC_PGUP,KC_PGDN,LT(1,KC_TAB),KC_ENTER), +[0] = LAYOUT_ergodox(KC_EQUAL,KC_1,KC_2,KC_3,KC_4,KC_5,LCTL(KC_MINUS),KC_DELETE,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_LBRC,KC_BSPC,KC_A,KC_S,KC_D,KC_F,KC_G,SC_LSPO,CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,HYPR_T(KC_NO),LT(1,KC_GRAVE),KC_QUOTE,LALT(KC_LSFT),KC_LEFT,KC_RIGHT,ALT_T(KC_APPLICATION),KC_LGUI,KC_HOME,KC_SPACE,KC_UNDS,KC_END,LCTL(KC_EQUAL),KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINUS,KC_RBRC,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLS,KC_H,ALT_T(KC_J),KC_K,KC_L,LT(2,KC_SCLN),GUI_T(KC_QUOTE),MEH_T(KC_NO),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),SC_RSPC,KC_UP,KC_DOWN,KC_LBRC,KC_RBRC,TT(1),KC_LALT,CTL_T(KC_ESCAPE),KC_PGUP,KC_PGDN,LT(1,KC_TAB),KC_ENTER), ``` The beautifier parses it and outputs: @@ -19,7 +19,7 @@ The beautifier parses it and outputs: KC_EQUAL , KC_1 , KC_2 , KC_3 , KC_4 , KC_5, LCTL(KC_MINUS), KC_DELETE , KC_Q , KC_W , KC_E , KC_R , KC_T, KC_LBRC , KC_BSPC , KC_A , KC_S , KC_D , KC_F , KC_G, -SC_LSPO , CTL_T(KC_Z), KC_X , KC_C , KC_V , KC_B, ALL_T(KC_NO) , +SC_LSPO , CTL_T(KC_Z), KC_X , KC_C , KC_V , KC_B, HYPR_T(KC_NO) , LT(1,KC_GRAVE), KC_QUOTE , LALT(KC_LSFT) , KC_LEFT, KC_RIGHT, // left thumb diff --git a/keyboards/h0oni/deskpad/keymaps/default/keymap.c b/keyboards/h0oni/deskpad/keymaps/default/keymap.c index eea54cf6b1..4ab51b657e 100644 --- a/keyboards/h0oni/deskpad/keymaps/default/keymap.c +++ b/keyboards/h0oni/deskpad/keymaps/default/keymap.c @@ -180,7 +180,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [2] = LAYOUT( - A(KC_F4), SGUI(KC_S), KC_MYCM, LCA(KC_DEL), KC_CALC, TD(QUAD_LAYER_SWITCH) + A(KC_F4), LSG(KC_S), KC_MYCM, LCA(KC_DEL), KC_CALC, TD(QUAD_LAYER_SWITCH) ), [3] = LAYOUT( diff --git a/keyboards/handwired/dactyl_manuform_pi_pico/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform_pi_pico/keymaps/default/keymap.c index cd78aef7a9..fed363a22d 100644 --- a/keyboards/handwired/dactyl_manuform_pi_pico/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_manuform_pi_pico/keymaps/default/keymap.c @@ -54,11 +54,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_WINMGR] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_F1, LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), KC_F4, KC_F7, SGUI(KC_7), SGUI(KC_8), SGUI(KC_9), KC_F10, KC_TRNS, - TO(_QWERTY), KC_F2, LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), KC_F5, KC_F8, SGUI(KC_4), SGUI(KC_5), SGUI(KC_6), KC_F11, KC_TRNS, - KC_TRNS, KC_F3, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), KC_F6, KC_F9, SGUI(KC_1), SGUI(KC_2), SGUI(KC_3), KC_F12, KC_TRNS, - KC_TRNS, LGUI(KC_0), SGUI(KC_0), KC_TRNS, - LGUI(KC_0), KC_TRNS, KC_TRNS, SGUI(KC_0), + KC_TRNS, KC_F1, LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), KC_F4, KC_F7, LSG(KC_7), LSG(KC_8), LSG(KC_9), KC_F10, KC_TRNS, + TO(_QWERTY), KC_F2, LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), KC_F5, KC_F8, LSG(KC_4), LSG(KC_5), LSG(KC_6), KC_F11, KC_TRNS, + KC_TRNS, KC_F3, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), KC_F6, KC_F9, LSG(KC_1), LSG(KC_2), LSG(KC_3), KC_F12, KC_TRNS, + KC_TRNS, LGUI(KC_0), LSG(KC_0), KC_TRNS, + LGUI(KC_0), KC_TRNS, KC_TRNS, LSG(KC_0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LCTL(LGUI(KC_Q)), KC_TRNS, KC_TRNS, KC_TRNS) }; diff --git a/keyboards/handwired/space_oddity/keymaps/default/keymap.c b/keyboards/handwired/space_oddity/keymaps/default/keymap.c index c278953f46..4222307889 100644 --- a/keyboards/handwired/space_oddity/keymaps/default/keymap.c +++ b/keyboards/handwired/space_oddity/keymaps/default/keymap.c @@ -72,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, TD(SFT_CAPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT), - MO(2), MO(1), KC_LGUI, KC_RALT, KC_LCTL, KC_SPC, ALT_T(KC_LEFT), ALL_T(KC_RGHT), LT(1, KC_UP), LT(2, KC_DOWN) + MO(2), MO(1), KC_LGUI, KC_RALT, KC_LCTL, KC_SPC, ALT_T(KC_LEFT), HYPR_T(KC_RGHT), LT(1, KC_UP), LT(2, KC_DOWN) ), /* Function layer. diff --git a/keyboards/hotdox/keymaps/default/keymap.c b/keyboards/hotdox/keymaps/default/keymap.c index 45e81b7fcf..436997ead7 100644 --- a/keyboards/hotdox/keymaps/default/keymap.c +++ b/keyboards/hotdox/keymaps/default/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, HYPR_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, ALT_T(KC_APP), KC_LGUI, KC_HOME, diff --git a/keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c index 8b3d110c88..2f337f9e89 100644 --- a/keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c +++ b/keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c @@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, HYPR_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, ALT_T(KC_APP), KC_LGUI, KC_HOME, diff --git a/keyboards/k34/keymaps/default/keymap.c b/keyboards/k34/keymaps/default/keymap.c index 4d09b121dd..cfadf90c6b 100644 --- a/keyboards/k34/keymaps/default/keymap.c +++ b/keyboards/k34/keymaps/default/keymap.c @@ -25,8 +25,8 @@ enum layer_names { #define S_SLSH SFT_T(KC_SLSH) // combos for application shortcuts -#define SG_LBRC SGUI(KC_LBRC) -#define SG_RBRC SGUI(KC_RBRC) +#define SG_LBRC LSG(KC_LBRC) +#define SG_RBRC LSG(KC_RBRC) #define G_LBRC G(KC_LBRC) #define G_RBRC G(KC_RBRC) #define A_SLSH A(KC_SLSH) diff --git a/keyboards/keebformom/keymaps/default/keymap.c b/keyboards/keebformom/keymaps/default/keymap.c index f1c4b29429..727e429d74 100644 --- a/keyboards/keebformom/keymaps/default/keymap.c +++ b/keyboards/keebformom/keymaps/default/keymap.c @@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `---------------------------------------------------------------------' */ [_THIRD] = LAYOUT_ortho_4x10( - KC_INS, KC_HOME, KC_PGUP, KC_NO, SGUI(KC_S), LCTL(KC_A), KC_NO, KC_NO, KC_UP, KC_NO, + KC_INS, KC_HOME, KC_PGUP, KC_NO, LSG(KC_S), LCTL(KC_A), KC_NO, KC_NO, KC_UP, KC_NO, KC_DEL, KC_END, KC_PGDN, KC_NO, LCTL(KC_S), LCTL(KC_C), KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, LWIN(KC_E), LCTL(KC_V), KC_NO, KC_NO, KC_NO, KC_NO, TO(0), _______, _______, _______, _______, _______, _______, KC_VOLD, _______, KC_VOLU diff --git a/keyboards/keyhive/opus/keymaps/default/keymap.c b/keyboards/keyhive/opus/keymaps/default/keymap.c index aaa1a899a2..868b611a81 100644 --- a/keyboards/keyhive/opus/keymaps/default/keymap.c +++ b/keyboards/keyhive/opus/keymaps/default/keymap.c @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_BSPC ), [_NAV] = LAYOUT( - KC_NO, KC_NO, LALT(KC_RGHT), SGUI(KC_LBRC), SGUI(KC_RBRC), KC_NO, KC_HOME, KC_PGDN, KC_PGUP, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, LALT(KC_RGHT), LSG(KC_LBRC), LSG(KC_RBRC), KC_NO, KC_HOME, KC_PGDN, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_NO, KC_LCTL, KC_LALT, KC_LSFT, KC_LGUI, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LALT(KC_LEFT), KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_SPC, KC_BSPC diff --git a/keyboards/ktec/ergodone/keymaps/default/keymap.c b/keyboards/ktec/ergodone/keymaps/default/keymap.c index 41d5da8dee..87fc621996 100644 --- a/keyboards/ktec/ergodone/keymaps/default/keymap.c +++ b/keyboards/ktec/ergodone/keymaps/default/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, HYPR_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, ALT_T(KC_APP), KC_LGUI, KC_HOME, diff --git a/keyboards/littlealby/mute/keymaps/default/keymap.c b/keyboards/littlealby/mute/keymaps/default/keymap.c index c6cf9836e3..729a6179a2 100644 --- a/keyboards/littlealby/mute/keymaps/default/keymap.c +++ b/keyboards/littlealby/mute/keymaps/default/keymap.c @@ -18,6 +18,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( - SGUI(KC_A) + LSG(KC_A) ) }; diff --git a/keyboards/littlealby/mute/keymaps/ms_teams/keymap.c b/keyboards/littlealby/mute/keymaps/ms_teams/keymap.c index bb2cf1147c..223ccacaf0 100644 --- a/keyboards/littlealby/mute/keymaps/ms_teams/keymap.c +++ b/keyboards/littlealby/mute/keymaps/ms_teams/keymap.c @@ -18,6 +18,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( - SGUI(KC_M) + LSG(KC_M) ) }; diff --git a/keyboards/palette1202/keymaps/default/keymap.c b/keyboards/palette1202/keymaps/default/keymap.c index 0f49e46661..905b800cd6 100644 --- a/keyboards/palette1202/keymaps/default/keymap.c +++ b/keyboards/palette1202/keymaps/default/keymap.c @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MAC_CS_2] = LAYOUT( MO(SETTING), KC_ESC, KC_G, KC_R, LGUI(KC_GRV), _______, LGUI(KC_D), KC_K, KC_F, LGUI(KC_S), - KC_LALT, KC_I, SGUI(KC_Z), KC_H + KC_LALT, KC_I, LSG(KC_Z), KC_H ), // Photoshop [MAC_PS_1] = LAYOUT( @@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MAC_PS_2] = LAYOUT( MO(SETTING), KC_ESC, KC_G, KC_R, KC_ESC, _______, LGUI(KC_D), KC_V, LGUI(KC_T), LGUI(KC_S), - KC_LALT, KC_I, SGUI(KC_Z), KC_H + KC_LALT, KC_I, LSG(KC_Z), KC_H ), // Windows @@ -97,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [IOS_CS_2] = LAYOUT( MO(SETTING), KC_ESC, KC_G, KC_R, LGUI(KC_EQL), _______, LGUI(KC_D), KC_K, KC_F, LGUI(KC_S), - KC_LALT, KC_I, SGUI(KC_Z), KC_H + KC_LALT, KC_I, LSG(KC_Z), KC_H ), [SETTING] = LAYOUT( _______, IOS_CS, Win_CS, Mac_CS, KC_NO, diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 515386756d..a1ae7ed0be 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -66,10 +66,6 @@ #define LCAG(kc) (QK_LCTL | QK_LALT | QK_LGUI | (kc)) #define LSAG(kc) (QK_LSFT | QK_LALT | QK_LGUI | (kc)) -#define SGUI(kc) LSG(kc) -#define SCMD(kc) LSG(kc) -#define SWIN(kc) LSG(kc) - #define RCTL(kc) (QK_RCTL | (kc)) #define RSFT(kc) (QK_RSFT | (kc)) #define RALT(kc) (QK_RALT | (kc)) @@ -90,8 +86,6 @@ #define RCAG(kc) (QK_RCTL | QK_RALT | QK_RGUI | (kc)) #define RSAG(kc) (QK_RSFT | QK_RALT | QK_RGUI | (kc)) -#define SAGR(kc) RSA(kc) - #define HYPR(kc) (QK_LCTL | QK_LSFT | QK_LALT | QK_LGUI | (kc)) #define MEH(kc) (QK_LCTL | QK_LSFT | QK_LALT | (kc)) @@ -206,10 +200,6 @@ #define LCAG_T(kc) MT(MOD_LCTL | MOD_LALT | MOD_LGUI, kc) #define LSAG_T(kc) MT(MOD_LSFT | MOD_LALT | MOD_LGUI, kc) -#define SGUI_T(kc) LSG_T(kc) -#define SCMD_T(kc) LSG_T(kc) -#define SWIN_T(kc) LSG_T(kc) - #define RCTL_T(kc) MT(MOD_RCTL, kc) #define RSFT_T(kc) MT(MOD_RSFT, kc) #define RALT_T(kc) MT(MOD_RALT, kc) @@ -230,11 +220,8 @@ #define RCAG_T(kc) MT(MOD_RCTL | MOD_RALT | MOD_RGUI, kc) #define RSAG_T(kc) MT(MOD_RSFT | MOD_RALT | MOD_RGUI, kc) -#define SAGR_T(kc) RSA_T(kc) - #define MEH_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT, kc) #define HYPR_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI, kc) -#define ALL_T(kc) HYPR_T(kc) // Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap #define KC_HYPR HYPR(KC_NO) diff --git a/quantum/quantum_keycodes_legacy.h b/quantum/quantum_keycodes_legacy.h index 55b0fc3596..58dc2fe6f6 100644 --- a/quantum/quantum_keycodes_legacy.h +++ b/quantum/quantum_keycodes_legacy.h @@ -59,3 +59,14 @@ #define QK_OUTPUT_AUTO OU_AUTO #define C_S_T(kc) LCS_T(kc) +#define ALL_T(kc) HYPR_T(kc) + +#define SGUI(kc) LSG(kc) +#define SCMD(kc) LSG(kc) +#define SWIN(kc) LSG(kc) +#define SGUI_T(kc) LSG_T(kc) +#define SCMD_T(kc) LSG_T(kc) +#define SWIN_T(kc) LSG_T(kc) + +#define SAGR(kc) RSA(kc) +#define SAGR_T(kc) RSA_T(kc) From d151b1bef5dcb939689b1ed74ba6dbd01b2bd637 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 7 Jul 2025 15:10:51 +0100 Subject: [PATCH 049/167] Convert moon to lite custom matrix (#25452) --- keyboards/moon/config.h | 22 +--- keyboards/moon/keyboard.json | 10 +- keyboards/moon/keymaps/default/keymap.c | 2 + .../moon/keymaps/default_tkl_ansi/keymap.c | 2 + .../keymaps/default_tkl_ansi_wkl/keymap.c | 2 + .../moon/keymaps/default_tkl_iso/keymap.c | 2 + .../moon/keymaps/default_tkl_iso_wkl/keymap.c | 2 + keyboards/moon/matrix.c | 107 ++---------------- keyboards/moon/rules.mk | 2 +- 9 files changed, 29 insertions(+), 122 deletions(-) diff --git a/keyboards/moon/config.h b/keyboards/moon/config.h index ca4c770a3b..1e95dc2b8f 100644 --- a/keyboards/moon/config.h +++ b/keyboards/moon/config.h @@ -1,23 +1,7 @@ -/* -Copyright 2019 Mathias Andersson - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - +// Copyright 2019 Mathias Andersson +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once - -/* key matrix size */ +// key matrix size #define MATRIX_ROWS 8 #define MATRIX_COLS 11 diff --git a/keyboards/moon/keyboard.json b/keyboards/moon/keyboard.json index 76d2c08f7e..ea3d34b650 100644 --- a/keyboards/moon/keyboard.json +++ b/keyboards/moon/keyboard.json @@ -9,13 +9,11 @@ "device_version": "0.0.1" }, "features": { - "bootmagic": false, - "mousekey": true, + "backlight": true, + "bootmagic": true, "extrakey": true, - "console": true, - "command": true, - "nkro": true, - "backlight": true + "mousekey": true, + "nkro": true }, "qmk": { "locking": { diff --git a/keyboards/moon/keymaps/default/keymap.c b/keyboards/moon/keymaps/default/keymap.c index fd1956a4dc..73dc65dc9a 100644 --- a/keyboards/moon/keymaps/default/keymap.c +++ b/keyboards/moon/keymaps/default/keymap.c @@ -1,3 +1,5 @@ +// Copyright 2019 Mathias Andersson +// SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H // clang-format off diff --git a/keyboards/moon/keymaps/default_tkl_ansi/keymap.c b/keyboards/moon/keymaps/default_tkl_ansi/keymap.c index b0244eccee..ee22951fcd 100644 --- a/keyboards/moon/keymaps/default_tkl_ansi/keymap.c +++ b/keyboards/moon/keymaps/default_tkl_ansi/keymap.c @@ -1,3 +1,5 @@ +// Copyright 2019 Mathias Andersson +// SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H // clang-format off diff --git a/keyboards/moon/keymaps/default_tkl_ansi_wkl/keymap.c b/keyboards/moon/keymaps/default_tkl_ansi_wkl/keymap.c index 7fd641a93f..1b41519cc9 100644 --- a/keyboards/moon/keymaps/default_tkl_ansi_wkl/keymap.c +++ b/keyboards/moon/keymaps/default_tkl_ansi_wkl/keymap.c @@ -1,3 +1,5 @@ +// Copyright 2019 Mathias Andersson +// SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H // clang-format off diff --git a/keyboards/moon/keymaps/default_tkl_iso/keymap.c b/keyboards/moon/keymaps/default_tkl_iso/keymap.c index b4d9a9b60c..316ed8d5ba 100644 --- a/keyboards/moon/keymaps/default_tkl_iso/keymap.c +++ b/keyboards/moon/keymaps/default_tkl_iso/keymap.c @@ -1,3 +1,5 @@ +// Copyright 2019 Mathias Andersson +// SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H // clang-format off diff --git a/keyboards/moon/keymaps/default_tkl_iso_wkl/keymap.c b/keyboards/moon/keymaps/default_tkl_iso_wkl/keymap.c index 1224d9f02e..6637515e3e 100644 --- a/keyboards/moon/keymaps/default_tkl_iso_wkl/keymap.c +++ b/keyboards/moon/keymaps/default_tkl_iso_wkl/keymap.c @@ -1,3 +1,5 @@ +// Copyright 2019 Mathias Andersson +// SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H // clang-format off diff --git a/keyboards/moon/matrix.c b/keyboards/moon/matrix.c index 1cb9590e9f..0f72cf3740 100644 --- a/keyboards/moon/matrix.c +++ b/keyboards/moon/matrix.c @@ -1,26 +1,8 @@ -/* -Copyright 2012-2019 Jun Wako, Jack Humbert, Yiancar, Mathias Andersson - -This 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 "wait.h" -#include "print.h" -#include "debug.h" -#include "util.h" +// Copyright 2019 Mathias Andersson +// SPDX-License-Identifier: GPL-2.0-or-later #include "matrix.h" -#include "debounce.h" #include "pca9555.h" +#include "wait.h" /* * IC1 (PCA9555) IC2 (PCA9555) @@ -70,56 +52,6 @@ along with this program. If not, see . #define PORT1_COLS_MASK 0b00111111 #define COLS_MASK 0b0000011111111111 -#if (MATRIX_COLS <= 8) -# define print_matrix_header() print("\nr/c 01234567\n") -# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define ROW_SHIFTER ((uint8_t)1) -#elif (MATRIX_COLS <= 16) -# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") -# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define ROW_SHIFTER ((uint16_t)1) -#elif (MATRIX_COLS <= 32) -# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") -# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define ROW_SHIFTER ((uint32_t)1) -#endif - -/* matrix state(1:on, 0:off) */ -static matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values -static matrix_row_t matrix[MATRIX_ROWS]; // debounced values - -__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); } - -__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); } - -__attribute__((weak)) void matrix_init_user(void) {} - -__attribute__((weak)) void matrix_scan_user(void) {} - -inline uint8_t matrix_rows(void) { return MATRIX_ROWS; } - -inline uint8_t matrix_cols(void) { return MATRIX_COLS; } - -inline bool matrix_is_on(uint8_t row, uint8_t col) { return (matrix[row] & ((matrix_row_t)1 << col)); } - -inline matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; } - -void matrix_print(void) { - print_matrix_header(); - - for (uint8_t row = 0; row < MATRIX_ROWS; row++) { - print_hex8(row); - print(": "); - print_matrix_row(row); - print("\n"); - } -} - -static void init_i2c(void) { - pca9555_init(IC1); - pca9555_init(IC2); -} - static void init_pins(void) { // init cols - IC2 port0 & IC2 port1 input pca9555_set_config(IC2, PCA9555_PORT0, ALL_INPUT); @@ -158,45 +90,28 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) // Clear data in matrix row current_matrix[current_row] = 0; - // Select row and wait for row selecton to stabilize + // Select row and wait for row selection to stabilize select_row(current_row); wait_us(30); - current_matrix[current_row] |= read_cols(); + current_matrix[current_row] = read_cols(); // No need to unselect as `select_row` sets all the pins. return (last_row_value != current_matrix[current_row]); } -void matrix_init(void) { - // initialize i2c - init_i2c(); +void matrix_init_custom(void) { + pca9555_init(IC1); + pca9555_init(IC2); - // initialize key pins init_pins(); - - // initialize matrix state: all keys off - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - raw_matrix[i] = 0; - matrix[i] = 0; - } - - debounce_init(MATRIX_ROWS); - - matrix_init_kb(); } -uint8_t matrix_scan(void) { +bool matrix_scan_custom(matrix_row_t current_matrix[]) { bool changed = false; - for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { - changed |= read_cols_on_row(raw_matrix, current_row); + changed |= read_cols_on_row(current_matrix, current_row); } - - debounce(raw_matrix, matrix, MATRIX_ROWS, changed); - - matrix_scan_kb(); - - return (uint8_t)changed; + return changed; } diff --git a/keyboards/moon/rules.mk b/keyboards/moon/rules.mk index aee52dfee1..e11c65db02 100644 --- a/keyboards/moon/rules.mk +++ b/keyboards/moon/rules.mk @@ -1,5 +1,5 @@ # custom matrix setup -CUSTOM_MATRIX = yes +CUSTOM_MATRIX = lite VPATH += drivers/gpio SRC += pca9555.c matrix.c From 058919923a093bfc61d50371725c08e92808f17e Mon Sep 17 00:00:00 2001 From: jack Date: Mon, 7 Jul 2025 08:50:07 -0600 Subject: [PATCH 050/167] Fixup `bastardkb/tbkmini` keymap's build target (#25458) --- keyboards/bastardkb/tbkmini/keymaps/default/keymap.json | 2 +- keyboards/bastardkb/tbkmini/readme.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/bastardkb/tbkmini/keymaps/default/keymap.json b/keyboards/bastardkb/tbkmini/keymaps/default/keymap.json index 58a02b797c..72ca022da9 100644 --- a/keyboards/bastardkb/tbkmini/keymaps/default/keymap.json +++ b/keyboards/bastardkb/tbkmini/keymaps/default/keymap.json @@ -1,5 +1,5 @@ { - "keyboard": "bastardkb/tbkmini", + "keyboard": "bastardkb/tbkmini/promicro", "keymap": "default", "layout": "LAYOUT_split_3x6_3", "layers": [ diff --git a/keyboards/bastardkb/tbkmini/readme.md b/keyboards/bastardkb/tbkmini/readme.md index cc3e547ff4..87f6cdcf2f 100644 --- a/keyboards/bastardkb/tbkmini/readme.md +++ b/keyboards/bastardkb/tbkmini/readme.md @@ -14,7 +14,7 @@ Flashing example for this keyboard: make bastardkb/tbkmini/blackpill:default:flash make bastardkb/tbkmini/promicro:default:flash -Note if using the `promicro` version: If you are using an Elite-C compatible development board, see [here](../readme.md#handedness-in-on-elite-c-holder) for setting handedness by pin. +Note if using the `promicro` version: If you are using an Elite-C compatible development board, see [here](../readme.md#handedness-pin-on-elite-c-holder) for setting handedness by pin. See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). From d9f2d8d241be9ca96a5c7c7fde8de1308a7c5f14 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 7 Jul 2025 16:15:37 +0100 Subject: [PATCH 051/167] Convert `novelkeys/nk65` to use RGB Matrix (#25450) --- data/mappings/keyboard_aliases.hjson | 5 +- keyboards/novelkeys/nk65/config.h | 87 +----- keyboards/novelkeys/nk65/halconf.h | 32 +-- keyboards/novelkeys/nk65/info.json | 124 ++++++++- .../novelkeys/nk65/keymaps/default/keymap.c | 57 ++-- .../novelkeys/nk65/keymaps/default/readme.md | 6 - keyboards/novelkeys/nk65/mcuconf.h | 43 +-- keyboards/novelkeys/nk65/nk65.c | 261 +++++++----------- keyboards/novelkeys/nk65/nk65.h | 20 -- keyboards/novelkeys/nk65/readme.md | 42 ++- keyboards/novelkeys/nk65/rules.mk | 13 - .../novelkeys/nk65/{base => v1}/keyboard.json | 0 keyboards/novelkeys/nk65/v1_4/readme.md | 40 +-- 13 files changed, 278 insertions(+), 452 deletions(-) delete mode 100755 keyboards/novelkeys/nk65/keymaps/default/readme.md delete mode 100755 keyboards/novelkeys/nk65/nk65.h delete mode 100755 keyboards/novelkeys/nk65/rules.mk rename keyboards/novelkeys/nk65/{base => v1}/keyboard.json (100%) diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index d50ad16498..f00be05254 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -2273,7 +2273,10 @@ "target": "mechwild/sugarglider/wide_oled/f401" }, "novelkeys/nk65": { - "target": "novelkeys/nk65/base" + "target": "novelkeys/nk65/v1" + }, + "novelkeys/nk65/base": { + "target": "novelkeys/nk65/v1" }, "sirius/uni660/rev2": { "target": "sirius/uni660/rev2/ansi" diff --git a/keyboards/novelkeys/nk65/config.h b/keyboards/novelkeys/nk65/config.h index 97350e34b4..75c5c8638c 100755 --- a/keyboards/novelkeys/nk65/config.h +++ b/keyboards/novelkeys/nk65/config.h @@ -1,89 +1,6 @@ -/* -Copyright 2019 Yiancar - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - +// Copyright 2019 Yiancar +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -/* Backlight options */ - -#define RGB_BACKLIGHT_ENABLED 1 - -#define RGB_BACKLIGHT_NK65 - -// they aren't really used if RGB_BACKLIGHT_HS60 defined -#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0 -#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0 -#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0 -#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0 -#define RGB_BACKLIGHT_USE_ISO_ENTER 0 -#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0 - -// disable backlight when USB suspended (PC sleep/hibernate/shutdown) -#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0 - -// disable backlight after timeout in minutes, 0 = no timeout -#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0 - -// the default brightness -#define RGB_BACKLIGHT_BRIGHTNESS 255 - -// the default effect (RGB test) -#define RGB_BACKLIGHT_EFFECT 6 - -// the default effect speed (0-3) -#define RGB_BACKLIGHT_EFFECT_SPEED 0 - -// the default color1 and color2 -#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 } -#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 } - #define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND #define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_SDA -#define IS31FL3733_LED_COUNT 128 - -// These define which keys in the matrix are alphas/mods -// Used for backlight effects so colors are different for -// alphas vs. mods -// Each value is for a row, bit 0 is column 0 -// Alpha=0 Mod=1 -#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0110000000000001 -#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0100000000000001 -#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0110000000000001 -#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0111000000000001 -#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0111111000000111 - -#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 } -#define RGB_BACKLIGHT_LAYER_1_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 } -#define RGB_BACKLIGHT_LAYER_2_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 } -#define RGB_BACKLIGHT_LAYER_3_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 } - -// Backlight config starts after VIA's EEPROM usage, -// dynamic keymaps start after this. -#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 32 - -/* Custom EEPROM start addressing. This is to support - * both 128kb and 256kb versions of F303. - * Register 0x1FFFF7CC holds the size of the flash memory. - */ -#ifndef FLASHSIZE_BASE -# define FLASHSIZE_BASE ((uint32_t)0x1FFFF7CCU) /*!< FLASH Size register base address */ -#endif -#define FEE_MCU_FLASH_SIZE_IGNORE_CHECK -#define FEE_MCU_FLASH_SIZE \ -({ \ - uint16_t (*flash_size) = (uint16_t*)FLASHSIZE_BASE; \ - *flash_size; \ -}) diff --git a/keyboards/novelkeys/nk65/halconf.h b/keyboards/novelkeys/nk65/halconf.h index e6d7e3c2ed..481d19c467 100644 --- a/keyboards/novelkeys/nk65/halconf.h +++ b/keyboards/novelkeys/nk65/halconf.h @@ -1,33 +1,7 @@ -/* 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/nk65/halconf.h -r platforms/chibios/QMK_PROTON_C/configs/halconf.h` - */ - +// Copyright 2019 Yiancar +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define HAL_USE_PWM FALSE - -#define HAL_USE_SPI FALSE - -#define PAL_USE_CALLBACKS FALSE - -#define PAL_USE_WAIT FALSE +#define HAL_USE_I2C TRUE #include_next - diff --git a/keyboards/novelkeys/nk65/info.json b/keyboards/novelkeys/nk65/info.json index ae02d3ac05..63c8af9faf 100755 --- a/keyboards/novelkeys/nk65/info.json +++ b/keyboards/novelkeys/nk65/info.json @@ -11,11 +11,133 @@ "bootmagic": true, "extrakey": true, "mousekey": true, + "rgb_matrix": true, "nkro": true }, "processor": "STM32F303", "bootloader": "stm32-dfu", - "board": "QMK_PROTON_C", + "rgb_matrix": { + "driver": "is31fl3733", + "sleep": true, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_fractal": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "layout": [ + { "flags": 4, "matrix": [0, 0], "x": 8, "y": 7 }, + { "flags": 4, "matrix": [0, 1], "x": 22, "y": 7 }, + { "flags": 4, "matrix": [0, 2], "x": 35, "y": 7 }, + { "flags": 4, "matrix": [0, 3], "x": 49, "y": 7 }, + { "flags": 4, "matrix": [0, 4], "x": 63, "y": 7 }, + { "flags": 4, "matrix": [0, 5], "x": 77, "y": 7 }, + { "flags": 4, "matrix": [0, 6], "x": 91, "y": 7 }, + { "flags": 4, "matrix": [0, 7], "x": 105, "y": 7 }, + { "flags": 4, "matrix": [0, 8], "x": 118, "y": 7 }, + { "flags": 4, "matrix": [0, 9], "x": 132, "y": 7 }, + { "flags": 4, "matrix": [0, 10], "x": 146, "y": 7 }, + { "flags": 4, "matrix": [0, 11], "x": 160, "y": 7 }, + { "flags": 4, "matrix": [0, 12], "x": 174, "y": 7 }, + { "flags": 4, "matrix": [0, 13], "x": 195, "y": 7 }, + { "flags": 4, "matrix": [0, 14], "x": 215, "y": 7 }, + { "flags": 4, "matrix": [1, 0], "x": 11, "y": 19 }, + { "flags": 4, "matrix": [1, 1], "x": 28, "y": 19 }, + { "flags": 4, "matrix": [1, 2], "x": 42, "y": 19 }, + { "flags": 4, "matrix": [1, 3], "x": 56, "y": 19 }, + { "flags": 4, "matrix": [1, 4], "x": 70, "y": 19 }, + { "flags": 4, "matrix": [1, 5], "x": 84, "y": 19 }, + { "flags": 4, "matrix": [1, 6], "x": 98, "y": 19 }, + { "flags": 4, "matrix": [1, 7], "x": 112, "y": 19 }, + { "flags": 4, "matrix": [1, 8], "x": 125, "y": 19 }, + { "flags": 4, "matrix": [1, 9], "x": 139, "y": 19 }, + { "flags": 4, "matrix": [1, 10], "x": 153, "y": 19 }, + { "flags": 4, "matrix": [1, 11], "x": 167, "y": 19 }, + { "flags": 4, "matrix": [1, 12], "x": 181, "y": 19 }, + { "flags": 4, "matrix": [2, 12], "x": 198, "y": 19 }, + { "flags": 4, "matrix": [1, 14], "x": 215, "y": 19 }, + { "flags": 4, "matrix": [2, 0], "x": 13, "y": 32 }, + { "flags": 4, "matrix": [2, 1], "x": 32, "y": 32 }, + { "flags": 4, "matrix": [2, 2], "x": 46, "y": 32 }, + { "flags": 4, "matrix": [2, 3], "x": 60, "y": 32 }, + { "flags": 4, "matrix": [2, 4], "x": 73, "y": 32 }, + { "flags": 4, "matrix": [2, 5], "x": 87, "y": 32 }, + { "flags": 4, "matrix": [2, 6], "x": 101, "y": 32 }, + { "flags": 4, "matrix": [2, 7], "x": 115, "y": 32 }, + { "flags": 4, "matrix": [2, 8], "x": 129, "y": 32 }, + { "flags": 4, "matrix": [2, 9], "x": 143, "y": 32 }, + { "flags": 4, "matrix": [2, 10], "x": 156, "y": 32 }, + { "flags": 4, "matrix": [2, 11], "x": 170, "y": 32 }, + { "flags": 4, "matrix": [2, 13], "x": 193, "y": 32 }, + { "flags": 4, "matrix": [2, 14], "x": 215, "y": 32 }, + { "flags": 4, "matrix": [3, 0], "x": 16, "y": 44 }, + { "flags": 4, "matrix": [3, 2], "x": 39, "y": 44 }, + { "flags": 4, "matrix": [3, 3], "x": 53, "y": 44 }, + { "flags": 4, "matrix": [3, 4], "x": 67, "y": 44 }, + { "flags": 4, "matrix": [3, 5], "x": 80, "y": 44 }, + { "flags": 4, "matrix": [3, 6], "x": 94, "y": 44 }, + { "flags": 4, "matrix": [3, 7], "x": 108, "y": 44 }, + { "flags": 4, "matrix": [3, 8], "x": 122, "y": 44 }, + { "flags": 4, "matrix": [3, 9], "x": 136, "y": 44 }, + { "flags": 4, "matrix": [3, 10], "x": 150, "y": 44 }, + { "flags": 4, "matrix": [3, 11], "x": 163, "y": 44 }, + { "flags": 4, "matrix": [3, 12], "x": 182, "y": 44 }, + { "flags": 4, "matrix": [3, 13], "x": 201, "y": 44 }, + { "flags": 4, "matrix": [3, 14], "x": 215, "y": 44 }, + { "flags": 4, "matrix": [4, 0], "x": 9, "y": 56 }, + { "flags": 4, "matrix": [4, 1], "x": 27, "y": 56 }, + { "flags": 4, "matrix": [4, 2], "x": 44, "y": 56 }, + { "flags": 4, "matrix": [4, 6], "x": 96, "y": 56 }, + { "flags": 4, "matrix": [4, 9], "x": 146, "y": 56 }, + { "flags": 4, "matrix": [4, 10], "x": 160, "y": 56 }, + { "flags": 4, "matrix": [4, 11], "x": 174, "y": 56 }, + { "flags": 4, "matrix": [4, 12], "x": 188, "y": 56 }, + { "flags": 4, "matrix": [4, 13], "x": 201, "y": 56 }, + { "flags": 4, "matrix": [4, 14], "x": 215, "y": 56 }, + { "flags": 1, "x": 224, "y": 0 }, + { "flags": 1, "x": 224, "y": 5 }, + { "flags": 1, "x": 224, "y": 10 } + ] + }, "community_layouts": ["65_ansi"], "layouts": { "LAYOUT_65_ansi": { diff --git a/keyboards/novelkeys/nk65/keymaps/default/keymap.c b/keyboards/novelkeys/nk65/keymaps/default/keymap.c index 3a043cbfe7..95a1d7f367 100755 --- a/keyboards/novelkeys/nk65/keymaps/default/keymap.c +++ b/keyboards/novelkeys/nk65/keymaps/default/keymap.c @@ -1,46 +1,21 @@ -/* Copyright 2019 Yiancar - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +// Copyright 2019 Yiancar +// SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT_65_ansi( /* Base */ - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [0] = LAYOUT_65_ansi( /* Base */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), -[1] = LAYOUT_65_ansi( /* FN */ - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS, KC_TRNS, KC_TRNS, - KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - -[2] = LAYOUT_65_ansi( /* Empty for dynamic keymaps */ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_65_ansi( /* Empty for dynamic keymaps */ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [1] = LAYOUT_65_ansi( /* FN */ + 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, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, + _______, RM_TOGG, _______, _______, RM_SATD, RM_SATU, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RM_PREV, RM_NEXT, RM_HUED, RM_HUEU, _______, _______, RM_VALD, RM_VALU, RM_SPDD, RM_SPDU, _______, _______, _______, + KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, _______, _______, _______, _______, _______ + ) }; diff --git a/keyboards/novelkeys/nk65/keymaps/default/readme.md b/keyboards/novelkeys/nk65/keymaps/default/readme.md deleted file mode 100755 index 27bcd0501d..0000000000 --- a/keyboards/novelkeys/nk65/keymaps/default/readme.md +++ /dev/null @@ -1,6 +0,0 @@ -The default keymap for NK65. VIA support disabled. -========================================================= - -![Layout image](https://i.imgur.com/DL0CjJO.png) - -Default layer is normal ANSI 65% \ No newline at end of file diff --git a/keyboards/novelkeys/nk65/mcuconf.h b/keyboards/novelkeys/nk65/mcuconf.h index f37f37c179..9024dd88ab 100644 --- a/keyboards/novelkeys/nk65/mcuconf.h +++ b/keyboards/novelkeys/nk65/mcuconf.h @@ -1,43 +1,8 @@ -/* 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/nk65/mcuconf.h -r platforms/chibios/QMK_PROTON_C/configs/mcuconf.h` - */ - +// Copyright 2019 Yiancar +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include_next -#undef STM32_GPT_USE_TIM4 -#define STM32_GPT_USE_TIM4 TRUE - -#undef STM32_GPT_USE_TIM15 -#define STM32_GPT_USE_TIM15 FALSE - -#undef STM32_PWM_USE_TIM3 -#define STM32_PWM_USE_TIM3 FALSE - -#undef STM32_PWM_USE_TIM4 -#define STM32_PWM_USE_TIM4 FALSE - -#undef STM32_SERIAL_USE_USART2 -#define STM32_SERIAL_USE_USART2 FALSE - -#undef STM32_SPI_USE_SPI2 -#define STM32_SPI_USE_SPI2 FALSE - +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/novelkeys/nk65/nk65.c b/keyboards/novelkeys/nk65/nk65.c index dd0a94a8e6..16750481cb 100755 --- a/keyboards/novelkeys/nk65/nk65.c +++ b/keyboards/novelkeys/nk65/nk65.c @@ -1,26 +1,8 @@ -/* Copyright 2019 Yiancar - * - * This 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 . - */ -#ifndef RGB_BACKLIGHT_NK65 -#error RGB_BACKLIGHT_NK65 not defined, recheck config.h -#endif +// Copyright 2019 Yiancar +// SPDX-License-Identifier: GPL-2.0-or-later +#include "quantum.h" -#include "nk65.h" -#include "drivers/led/issi/is31fl3733.h" - -#if defined(RGB_MATRIX_ENABLE) || defined(RGB_BACKLIGHT_NK65) +#if defined(RGB_MATRIX_ENABLE) const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver @@ -28,135 +10,79 @@ const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { * | | G location * | | | B location * | | | | */ - {0, SW2_CS1, SW1_CS1, SW3_CS1}, //LA1 - {0, SW5_CS1, SW4_CS1, SW6_CS1}, //LA2 - {0, SW8_CS1, SW7_CS1, SW9_CS1}, //LA3 - {0, SW11_CS1, SW10_CS1, SW12_CS1}, //LA4 - {0, SW2_CS2, SW1_CS2, SW3_CS2}, //LA5 - {0, SW5_CS2, SW4_CS2, SW6_CS2}, //LA6 - {0, SW8_CS2, SW7_CS2, SW9_CS2}, //LA7 - {0, SW11_CS2, SW10_CS2, SW12_CS2}, //LA8 - {0, SW2_CS3, SW1_CS3, SW3_CS3}, //LA9 - {0, SW5_CS3, SW4_CS3, SW6_CS3}, //LA10 - {0, SW8_CS3, SW7_CS3, SW9_CS3}, //LA11 - {0, SW11_CS3, SW10_CS3, SW12_CS3}, //LA12 - {0, SW2_CS4, SW1_CS4, SW3_CS4}, //LA13 - {0, SW5_CS4, SW4_CS4, SW6_CS4}, //LA14 - {0, SW8_CS4, SW7_CS4, SW9_CS4}, //LA15 - {0, SW11_CS4, SW10_CS4, SW12_CS4}, //LA16 - {0, SW2_CS5, SW1_CS5, SW3_CS5}, //LA17 - {0, SW5_CS5, SW4_CS5, SW6_CS5}, //LA18 - {0, SW8_CS5, SW7_CS5, SW9_CS5}, //LA19 - {0, SW11_CS5, SW10_CS5, SW12_CS5}, //LA20 - {0, SW2_CS6, SW1_CS6, SW3_CS6}, //LA21 - {0, SW5_CS6, SW4_CS6, SW6_CS6}, //LA22 - {0, SW8_CS6, SW7_CS6, SW9_CS6}, //LA23 - {0, SW11_CS6, SW10_CS6, SW12_CS6}, //LA24 - {0, SW2_CS7, SW1_CS7, SW3_CS7}, //LA25 - {0, SW5_CS7, SW4_CS7, SW6_CS7}, //LA26 - {0, SW8_CS7, SW7_CS7, SW9_CS7}, //LA27 - {0, SW11_CS7, SW10_CS7, SW12_CS7}, //LA28 - {0, SW2_CS8, SW1_CS8, SW3_CS8}, //LA29 - {0, SW5_CS8, SW4_CS8, SW6_CS8}, //LA30 - {0, SW8_CS8, SW7_CS8, SW9_CS8}, //LA31 - {0, SW11_CS8, SW10_CS8, SW12_CS8}, //LA32 - {0, SW2_CS9, SW1_CS9, SW3_CS9}, //LA33 - {0, SW5_CS9, SW4_CS9, SW6_CS9}, //LA34 - {0, SW8_CS9, SW7_CS9, SW9_CS9}, //LA35 - {0, SW11_CS9, SW10_CS9, SW12_CS9}, //LA36 - {0, SW2_CS10, SW1_CS10, SW3_CS10}, //LA37 - {0, SW5_CS10, SW4_CS10, SW6_CS10}, //LA38 - {0, SW8_CS10, SW7_CS10, SW9_CS10}, //LA39 - {0, SW11_CS10, SW10_CS10, SW12_CS10}, //LA40 - {0, SW2_CS11, SW1_CS11, SW3_CS11}, //LA41 - {0, SW5_CS11, SW4_CS11, SW6_CS11}, //LA42 - {0, SW8_CS11, SW7_CS11, SW9_CS11}, //LA43 - {0, SW11_CS11, SW10_CS11, SW12_CS11}, //LA44 - {0, SW2_CS12, SW1_CS12, SW3_CS12}, //LA45 - {0, SW5_CS12, SW4_CS12, SW6_CS12}, //LA46 - {0, SW8_CS12, SW7_CS12, SW9_CS12}, //LA47 - {0, SW11_CS12, SW10_CS12, SW12_CS12}, //LA48 - {0, SW2_CS13, SW1_CS13, SW3_CS13}, //LA49 - {0, SW5_CS13, SW4_CS13, SW6_CS13}, //LA50 - {0, SW8_CS13, SW7_CS13, SW9_CS13}, //LA51 - {0, SW11_CS13, SW10_CS13, SW12_CS13}, //LA52 - {0, SW2_CS14, SW1_CS14, SW3_CS14}, //LA53 - {0, SW5_CS14, SW4_CS14, SW6_CS14}, //LA54 - {0, SW8_CS14, SW7_CS14, SW9_CS14}, //LA55 - {0, SW11_CS14, SW10_CS14, SW12_CS14}, //LA56 - {0, SW2_CS15, SW1_CS15, SW3_CS15}, //LA57 - {0, SW5_CS15, SW4_CS15, SW6_CS15}, //LA58 - {0, SW8_CS15, SW7_CS15, SW9_CS15}, //LA59 - {0, SW11_CS15, SW10_CS15, SW12_CS15}, //LA60 - {0, SW2_CS16, SW1_CS16, SW3_CS16}, //LA61 - {0, SW5_CS16, SW4_CS16, SW6_CS16}, //LA62 - {0, SW8_CS16, SW7_CS16, SW9_CS16}, //LA63 - {0, SW11_CS16, SW10_CS16, SW12_CS16}, //LA64 + {0, SW2_CS1, SW1_CS1, SW3_CS1}, //LA1 - esc + {0, SW2_CS2, SW1_CS2, SW3_CS2}, //LA5 - 1 + {0, SW2_CS3, SW1_CS3, SW3_CS3}, //LA9 - 2 + {0, SW2_CS4, SW1_CS4, SW3_CS4}, //LA13 - 3 + {0, SW2_CS5, SW1_CS5, SW3_CS5}, //LA17 - 4 + {0, SW2_CS6, SW1_CS6, SW3_CS6}, //LA21 - 5 + {0, SW2_CS7, SW1_CS7, SW3_CS7}, //LA25 - 6 + {0, SW2_CS8, SW1_CS8, SW3_CS8}, //LA29 - 7 + {0, SW2_CS9, SW1_CS9, SW3_CS9}, //LA33 - 8 + {0, SW2_CS10, SW1_CS10, SW3_CS10}, //LA37 - 9 + {0, SW2_CS11, SW1_CS11, SW3_CS11}, //LA41 - 0 + {0, SW2_CS12, SW1_CS12, SW3_CS12}, //LA45 - - + {0, SW2_CS13, SW1_CS13, SW3_CS13}, //LA49 - = + {0, SW2_CS14, SW1_CS14, SW3_CS14}, //LA53 - bspace + {1, SW2_CS1, SW1_CS1, SW3_CS1}, //LB1 - home + {0, SW5_CS1, SW4_CS1, SW6_CS1}, //LA2 - tab + {0, SW5_CS2, SW4_CS2, SW6_CS2}, //LA6 - q + {0, SW5_CS3, SW4_CS3, SW6_CS3}, //LA10 - w + {0, SW5_CS4, SW4_CS4, SW6_CS4}, //LA14 - e + {0, SW5_CS5, SW4_CS5, SW6_CS5}, //LA18 - r + {0, SW5_CS6, SW4_CS6, SW6_CS6}, //LA22 - t + {0, SW5_CS7, SW4_CS7, SW6_CS7}, //LA26 - y + {0, SW5_CS8, SW4_CS8, SW6_CS8}, //LA30 - u + {0, SW5_CS9, SW4_CS9, SW6_CS9}, //LA34 - i + {0, SW5_CS10, SW4_CS10, SW6_CS10}, //LA38 - o + {0, SW5_CS11, SW4_CS11, SW6_CS11}, //LA42 - p + {0, SW5_CS12, SW4_CS12, SW6_CS12}, //LA46 - [ + {0, SW5_CS13, SW4_CS13, SW6_CS13}, //LA50 - ] + {0, SW5_CS14, SW4_CS14, SW6_CS14}, //LA54 - | + {1, SW5_CS1, SW4_CS1, SW6_CS1}, //LB2 - pgup + {0, SW8_CS1, SW7_CS1, SW9_CS1}, //LA3 - caps + {0, SW8_CS2, SW7_CS2, SW9_CS2}, //LA7 - a + {0, SW8_CS3, SW7_CS3, SW9_CS3}, //LA11 - s + {0, SW8_CS4, SW7_CS4, SW9_CS4}, //LA15 - d + {0, SW8_CS5, SW7_CS5, SW9_CS5}, //LA19 - f + {0, SW8_CS6, SW7_CS6, SW9_CS6}, //LA23 - g + {0, SW8_CS7, SW7_CS7, SW9_CS7}, //LA27 - h + {0, SW8_CS8, SW7_CS8, SW9_CS8}, //LA31 - j + {0, SW8_CS9, SW7_CS9, SW9_CS9}, //LA35 - k + {0, SW8_CS10, SW7_CS10, SW9_CS10}, //LA39 - l + {0, SW8_CS11, SW7_CS11, SW9_CS11}, //LA43 - ; + {0, SW8_CS12, SW7_CS12, SW9_CS12}, //LA47 - ' + {0, SW8_CS14, SW7_CS14, SW9_CS14}, //LA55 - ent + {1, SW2_CS2, SW1_CS2, SW3_CS2}, //LB5 - pgdn + {0, SW11_CS1, SW10_CS1, SW12_CS1}, //LA4 - lshft + {0, SW11_CS2, SW10_CS2, SW12_CS2}, //LA8 - z + {0, SW11_CS3, SW10_CS3, SW12_CS3}, //LA12 - x + {0, SW11_CS4, SW10_CS4, SW12_CS4}, //LA16 - c + {0, SW11_CS5, SW10_CS5, SW12_CS5}, //LA20 - v + {0, SW11_CS6, SW10_CS6, SW12_CS6}, //LA24 - b + {0, SW11_CS7, SW10_CS7, SW12_CS7}, //LA28 - n + {0, SW11_CS8, SW10_CS8, SW12_CS8}, //LA32 - m + {0, SW11_CS9, SW10_CS9, SW12_CS9}, //LA36 - < + {0, SW11_CS10, SW10_CS10, SW12_CS10}, //LA40 - > + {0, SW11_CS11, SW10_CS11, SW12_CS11}, //LA44 - ? + {0, SW8_CS13, SW7_CS13, SW9_CS13}, //LA51 - rshift + {0, SW11_CS13, SW10_CS13, SW12_CS13}, //LA52 - up + {1, SW8_CS1, SW7_CS1, SW9_CS1}, //LB3 - end + {0, SW2_CS15, SW1_CS15, SW3_CS15}, //LA57 - lctrl + {0, SW5_CS15, SW4_CS15, SW6_CS15}, //LA58 - lgui + {0, SW8_CS15, SW7_CS15, SW9_CS15}, //LA59 - lalt + {0, SW11_CS15, SW10_CS15, SW12_CS15}, //LA60 space + {0, SW11_CS12, SW10_CS12, SW12_CS12}, //LA48 - ralt + {0, SW5_CS16, SW4_CS16, SW6_CS16}, //LA62 - fn + {0, SW8_CS16, SW7_CS16, SW9_CS16}, //LA63 - rctrl + {0, SW11_CS16, SW10_CS16, SW12_CS16}, //LA64 - left + {0, SW11_CS14, SW10_CS14, SW12_CS14}, //LA56 - down + {1, SW11_CS1, SW10_CS1, SW12_CS1}, //LB4 - right - {1, SW2_CS1, SW1_CS1, SW3_CS1}, //LB1 - {1, SW5_CS1, SW4_CS1, SW6_CS1}, //LB2 - {1, SW8_CS1, SW7_CS1, SW9_CS1}, //LB3 - {1, SW11_CS1, SW10_CS1, SW12_CS1}, //LB4 - {1, SW2_CS2, SW1_CS2, SW3_CS2}, //LB5 - {1, SW5_CS2, SW4_CS2, SW6_CS2}, //LB6 - {1, SW8_CS2, SW7_CS2, SW9_CS2}, //LB7 - {1, SW11_CS2, SW10_CS2, SW12_CS2}, //LB8 - {1, SW2_CS3, SW1_CS3, SW3_CS3}, //LB9 - {1, SW5_CS3, SW4_CS3, SW6_CS3}, //LB10 - {1, SW8_CS3, SW7_CS3, SW9_CS3}, //LB11 - {1, SW11_CS3, SW10_CS3, SW12_CS3}, //LB12 - {1, SW2_CS4, SW1_CS4, SW3_CS4}, //LB13 - {1, SW5_CS4, SW4_CS4, SW6_CS4}, //LB14 - {1, SW8_CS4, SW7_CS4, SW9_CS4}, //LB15 - {1, SW11_CS4, SW10_CS4, SW12_CS4}, //LB16 - {1, SW2_CS5, SW1_CS5, SW3_CS5}, //LB17 - {1, SW5_CS5, SW4_CS5, SW6_CS5}, //LB18 - {1, SW8_CS5, SW7_CS5, SW9_CS5}, //LB19 - {1, SW11_CS5, SW10_CS5, SW12_CS5}, //LB20 - {1, SW2_CS6, SW1_CS6, SW3_CS6}, //LB21 - {1, SW5_CS6, SW4_CS6, SW6_CS6}, //LB22 - {1, SW8_CS6, SW7_CS6, SW9_CS6}, //LB23 - {1, SW11_CS6, SW10_CS6, SW12_CS6}, //LB24 - {1, SW2_CS7, SW1_CS7, SW3_CS7}, //LB25 - {1, SW5_CS7, SW4_CS7, SW6_CS7}, //LB26 - {1, SW8_CS7, SW7_CS7, SW9_CS7}, //LB27 - {1, SW11_CS7, SW10_CS7, SW12_CS7}, //LB28 - {1, SW2_CS8, SW1_CS8, SW3_CS8}, //LB29 - {1, SW5_CS8, SW4_CS8, SW6_CS8}, //LB30 - {1, SW8_CS8, SW7_CS8, SW9_CS8}, //LB31 - {1, SW11_CS8, SW10_CS8, SW12_CS8}, //LB32 - {1, SW2_CS9, SW1_CS9, SW3_CS9}, //LB33 - {1, SW5_CS9, SW4_CS9, SW6_CS9}, //LB34 - {1, SW8_CS9, SW7_CS9, SW9_CS9}, //LB35 - {1, SW11_CS9, SW10_CS9, SW12_CS9}, //LB36 - {1, SW2_CS10, SW1_CS10, SW3_CS10}, //LB37 - {1, SW5_CS10, SW4_CS10, SW6_CS10}, //LB38 - {1, SW8_CS10, SW7_CS10, SW9_CS10}, //LB39 - {1, SW11_CS10, SW10_CS10, SW12_CS10}, //LB40 - {1, SW2_CS11, SW1_CS11, SW3_CS11}, //LB41 - {1, SW5_CS11, SW4_CS11, SW6_CS11}, //LB42 - {1, SW8_CS11, SW7_CS11, SW9_CS11}, //LB43 - {1, SW11_CS11, SW10_CS11, SW12_CS11}, //LB44 - {1, SW2_CS12, SW1_CS12, SW3_CS12}, //LB45 - {1, SW5_CS12, SW4_CS12, SW6_CS12}, //LB46 - {1, SW8_CS12, SW7_CS12, SW9_CS12}, //LB47 - {1, SW11_CS12, SW10_CS12, SW12_CS12}, //LB48 - {1, SW2_CS13, SW1_CS13, SW3_CS13}, //LB49 - {1, SW5_CS13, SW4_CS13, SW6_CS13}, //LB50 - {1, SW8_CS13, SW7_CS13, SW9_CS13}, //LB51 - {1, SW11_CS13, SW10_CS13, SW12_CS13}, //LB52 - {1, SW2_CS14, SW1_CS14, SW3_CS14}, //LB53 - {1, SW5_CS14, SW4_CS14, SW6_CS14}, //LB54 - {1, SW8_CS14, SW7_CS14, SW9_CS14}, //LB55 - {1, SW11_CS14, SW10_CS14, SW12_CS14}, //LB56 - {1, SW2_CS15, SW1_CS15, SW3_CS15}, //LB57 - {1, SW5_CS15, SW4_CS15, SW6_CS15}, //LB58 - {1, SW8_CS15, SW7_CS15, SW9_CS15}, //LB59 - {1, SW11_CS15, SW10_CS15, SW12_CS15}, //LB60 - {1, SW2_CS16, SW1_CS16, SW3_CS16}, //LB61 - {1, SW5_CS16, SW4_CS16, SW6_CS16}, //LB62 - {1, SW8_CS16, SW7_CS16, SW9_CS16}, //LB63 - {1, SW11_CS16, SW10_CS16, SW12_CS16}, //LB64 + // Mapped with "dead" locations so each indicator is logically separate + {1, SW2_CS3, SW7_CS2, SW3_CS3}, //LB7 - top indi + {1, SW5_CS2, SW10_CS2, SW6_CS2}, //LB6 - mid indi + {1, SW11_CS2, SW4_CS2, SW12_CS2}, //LB6 - bot indi }; #endif @@ -165,26 +91,29 @@ const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { * Middle LED is blue and red. LED driver 2 RGB 6 Red and Blue channel * Bottom LED is red only LED driver 2 RGB 6 Green channel. */ -void led_update_ports(led_t led_state) { - if (led_state.caps_lock) { - is31fl3733_set_color( 7+64-1, 0, 255, 0 ); +bool rgb_matrix_indicators_kb(void) { + if (!rgb_matrix_indicators_user()) { + return false; + } + + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(68, RGB_WHITE); //0, 0xFF, 0); } else { - is31fl3733_set_color( 7+64-1, 0, 0, 0 ); + rgb_matrix_set_color(68, RGB_OFF); } -} -__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { - uint8_t R = 0; - uint8_t G = 0; - uint8_t B = 0; + layer_state_t state = layer_state|default_layer_state; if (state & (1UL << 1)) { - R = 255; - B = 255; - } - if (state & (1UL << 2)) { - G = 255; + rgb_matrix_set_color(69, RGB_WHITE); // 0xFF, 0, 0xFF); + } else { + rgb_matrix_set_color(69, RGB_OFF); } - is31fl3733_set_color( 6+64-1, R, G, B ); - return state; + if (state & (1UL << 2)) { + rgb_matrix_set_color(70, RGB_WHITE); //0, 0xFF, 0); + } else { + rgb_matrix_set_color(70, RGB_OFF); + } + + return true; } diff --git a/keyboards/novelkeys/nk65/nk65.h b/keyboards/novelkeys/nk65/nk65.h deleted file mode 100755 index c75541be93..0000000000 --- a/keyboards/novelkeys/nk65/nk65.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright 2019 Yiancar - * - * This 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" -#include "../wilba_tech/wt_rgb_backlight_keycodes.h" -#include "via.h" diff --git a/keyboards/novelkeys/nk65/readme.md b/keyboards/novelkeys/nk65/readme.md index 38f66500b9..5e30f54b31 100755 --- a/keyboards/novelkeys/nk65/readme.md +++ b/keyboards/novelkeys/nk65/readme.md @@ -1,39 +1,29 @@ -NK65 -========= +# NK65 ![NK65](https://i.imgur.com/EXNbVpL.jpg) +> NOTE: For PCBs with revision v1.4 or later please use nk65/v1_4 in the make command. + This is a standard fixed layout 65% PCB. It supports VIA and full per-key RGB. -Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) -Hardware Supported: A 65% keyboard with STM32F303CC -Hardware Availability: https://novelkeys.xyz/ - -Due to the RGB implementation, the NK65 is currently not compatible with community layouts. - -NOTE: For PCBs with revision v1.4 or later please use nk65/v1_4 in the make command. - -## Instructions - -### Build +* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A 65% keyboard with STM32F303CC +* Hardware Availability: https://novelkeys.xyz/ Make example for this keyboard (after setting up your build environment): - make novelkeys/nk65:via + make novelkeys/nk65/v1:default + +Flashing example for this keyboard: + + make novelkeys/nk65/v1: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). -### Reset +## Bootloader -- Unplug -- Hold Escape -- Plug In -- Unplug -- Release Escape +Enter the bootloader in 3 ways: -### Flash - -- Unplug -- Hold Escape -- Plug In -- Flash using QMK Toolbox or dfu-util (`make nk65::dfu-util`) +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/novelkeys/nk65/rules.mk b/keyboards/novelkeys/nk65/rules.mk deleted file mode 100755 index 3b7a32713c..0000000000 --- a/keyboards/novelkeys/nk65/rules.mk +++ /dev/null @@ -1,13 +0,0 @@ -# Do not put the microcontroller into power saving mode -# when we get USB suspend event. We want it to keep updating -# backlight effects. -NO_SUSPEND_POWER_DOWN = yes - -CIE1931_CURVE = yes -I2C_DRIVER_REQUIRED = yes - -# project specific files -SRC = keyboards/wilba_tech/wt_main.c \ - keyboards/wilba_tech/wt_rgb_backlight.c \ - drivers/led/issi/is31fl3733.c \ - quantum/color.c diff --git a/keyboards/novelkeys/nk65/base/keyboard.json b/keyboards/novelkeys/nk65/v1/keyboard.json similarity index 100% rename from keyboards/novelkeys/nk65/base/keyboard.json rename to keyboards/novelkeys/nk65/v1/keyboard.json diff --git a/keyboards/novelkeys/nk65/v1_4/readme.md b/keyboards/novelkeys/nk65/v1_4/readme.md index 399919a8be..11f581ff31 100755 --- a/keyboards/novelkeys/nk65/v1_4/readme.md +++ b/keyboards/novelkeys/nk65/v1_4/readme.md @@ -1,39 +1,29 @@ -NK65 V1.4 -========= +# NK65 V1.4 ![NK65](https://i.imgur.com/EXNbVpL.jpg) -NOTE: Please use this directory only if you have revision 1.4 PCB or later. +> NOTE: Please use this directory only if you have revision 1.4 PCB or later. This is a standard fixed layout 65% PCB. It supports VIA and full per-key RGB. -Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) -Hardware Supported: A 65% keyboard with STM32F303CC -Hardware Availability: https://novelkeys.xyz/ - -Due to the RGB implementation, the NK65 is currently not compatible with community layouts. - -## Instructions - -### Build +* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A 65% keyboard with STM32F303CC +* Hardware Availability: https://novelkeys.xyz/ Make example for this keyboard (after setting up your build environment): - make nk65/v1_4:via + make novelkeys/nk65/v1_4:default + +Flashing example for this keyboard: + + make novelkeys/nk65/v1_4: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). -### Reset +## Bootloader -- Unplug -- Hold Escape -- Plug In -- Unplug -- Release Escape +Enter the bootloader in 3 ways: -### Flash - -- Unplug -- Hold Escape -- Plug In -- Flash using QMK Toolbox or dfu-util (`make nk65/v1_4::dfu-util`) +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From 7827f9fbe369bd9ad6c30c88f36ab53dafbb719d Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 7 Jul 2025 16:15:50 +0100 Subject: [PATCH 052/167] Compilation fixes for `-fno-common` (#25436) --- drivers/sensors/adns5050.h | 2 +- drivers/sensors/adns9800.h | 2 +- drivers/sensors/analog_joystick.h | 2 +- drivers/sensors/azoteq_iqs5xx.h | 2 +- drivers/sensors/cirque_pinnacle.h | 2 +- drivers/sensors/paw3204.h | 2 +- drivers/sensors/pimoroni_trackball.h | 2 +- drivers/sensors/pmw3320.h | 2 +- drivers/sensors/pmw33xx_common.h | 2 +- keyboards/bajjak/bajjak.c | 4 ++++ keyboards/bajjak/bajjak.h | 6 +++--- keyboards/hardwareabstraction/handwire/handwire.c | 2 +- keyboards/sekigon/grs_70ec/matrix.c | 2 +- keyboards/system76/launch_1/launch_1.c | 2 +- keyboards/system76/launch_1/rgb_matrix_kb.inc | 2 +- keyboards/system76/system76_ec.c | 2 +- keyboards/work_louder/rgb_functions.c | 1 + quantum/audio/audio.c | 5 +++-- 18 files changed, 25 insertions(+), 19 deletions(-) diff --git a/drivers/sensors/adns5050.h b/drivers/sensors/adns5050.h index 004c54f560..648b49e387 100644 --- a/drivers/sensors/adns5050.h +++ b/drivers/sensors/adns5050.h @@ -70,7 +70,7 @@ typedef struct { int8_t dy; } report_adns5050_t; -const pointing_device_driver_t adns5050_pointing_device_driver; +extern const pointing_device_driver_t adns5050_pointing_device_driver; // A bunch of functions to implement the ADNS5050-specific serial protocol. // Note that the "serial.h" driver is insufficient, because it does not diff --git a/drivers/sensors/adns9800.h b/drivers/sensors/adns9800.h index 797aaf3cd0..ea854e8675 100644 --- a/drivers/sensors/adns9800.h +++ b/drivers/sensors/adns9800.h @@ -61,7 +61,7 @@ typedef struct { int16_t y; } report_adns9800_t; -const pointing_device_driver_t adns9800_pointing_device_driver; +extern const pointing_device_driver_t adns9800_pointing_device_driver; bool adns9800_init(void); config_adns9800_t adns9800_get_config(void); diff --git a/drivers/sensors/analog_joystick.h b/drivers/sensors/analog_joystick.h index 4838f502f1..f8cc315533 100644 --- a/drivers/sensors/analog_joystick.h +++ b/drivers/sensors/analog_joystick.h @@ -43,7 +43,7 @@ # define ANALOG_JOYSTICK_SPEED_MAX 2 #endif -const pointing_device_driver_t analog_joystick_pointing_device_driver; +extern const pointing_device_driver_t analog_joystick_pointing_device_driver; typedef struct { int8_t x; diff --git a/drivers/sensors/azoteq_iqs5xx.h b/drivers/sensors/azoteq_iqs5xx.h index 1a70ac6149..a5866b3d85 100644 --- a/drivers/sensors/azoteq_iqs5xx.h +++ b/drivers/sensors/azoteq_iqs5xx.h @@ -178,7 +178,7 @@ typedef struct { # define POINTING_DEVICE_TASK_THROTTLE_MS AZOTEQ_IQS5XX_REPORT_RATE + 1 #endif -const pointing_device_driver_t azoteq_iqs5xx_pointing_device_driver; +extern const pointing_device_driver_t azoteq_iqs5xx_pointing_device_driver; bool azoteq_iqs5xx_init(void); i2c_status_t azoteq_iqs5xx_wake(void); diff --git a/drivers/sensors/cirque_pinnacle.h b/drivers/sensors/cirque_pinnacle.h index 3541d62463..f71ee8da1f 100644 --- a/drivers/sensors/cirque_pinnacle.h +++ b/drivers/sensors/cirque_pinnacle.h @@ -112,7 +112,7 @@ typedef struct { #define cirque_pinnacle_i2c_pointing_device_driver cirque_pinnacle_pointing_device_driver #define cirque_pinnacle_spi_pointing_device_driver cirque_pinnacle_pointing_device_driver -const pointing_device_driver_t cirque_pinnacle_pointing_device_driver; +extern const pointing_device_driver_t cirque_pinnacle_pointing_device_driver; bool cirque_pinnacle_init(void); void cirque_pinnacle_calibrate(void); diff --git a/drivers/sensors/paw3204.h b/drivers/sensors/paw3204.h index 11759d64c3..0bf5713548 100644 --- a/drivers/sensors/paw3204.h +++ b/drivers/sensors/paw3204.h @@ -41,7 +41,7 @@ typedef struct { bool isMotion; } report_paw3204_t; -const pointing_device_driver_t paw3204_pointing_device_driver; +extern const pointing_device_driver_t paw3204_pointing_device_driver; /** * @brief Initializes the sensor so it is in a working state and ready to diff --git a/drivers/sensors/pimoroni_trackball.h b/drivers/sensors/pimoroni_trackball.h index 4b8a2548ae..74ae6d7228 100644 --- a/drivers/sensors/pimoroni_trackball.h +++ b/drivers/sensors/pimoroni_trackball.h @@ -50,7 +50,7 @@ typedef struct { uint8_t click; } pimoroni_data_t; -const pointing_device_driver_t pimoroni_trackball_pointing_device_driver; +extern const pointing_device_driver_t pimoroni_trackball_pointing_device_driver; bool pimoroni_trackball_device_init(void); void pimoroni_trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white); diff --git a/drivers/sensors/pmw3320.h b/drivers/sensors/pmw3320.h index 42fd72a52c..c80eb8e145 100644 --- a/drivers/sensors/pmw3320.h +++ b/drivers/sensors/pmw3320.h @@ -55,7 +55,7 @@ typedef struct { int8_t dy; } report_pmw3320_t; -const pointing_device_driver_t pmw3320_pointing_device_driver; +extern const pointing_device_driver_t pmw3320_pointing_device_driver; // A bunch of functions to implement the PMW3320-specific serial protocol. // Mostly taken from ADNS5050 driver. diff --git a/drivers/sensors/pmw33xx_common.h b/drivers/sensors/pmw33xx_common.h index 8fb10b1b2f..ff890f49a9 100644 --- a/drivers/sensors/pmw33xx_common.h +++ b/drivers/sensors/pmw33xx_common.h @@ -106,7 +106,7 @@ STATIC_ASSERT(sizeof((pmw33xx_report_t){0}.motion) == 1, "pmw33xx_report_t.motio #define pmw3360_pointing_device_driver pmw33xx_pointing_device_driver; #define pmw3389_pointing_device_driver pmw33xx_pointing_device_driver; -const pointing_device_driver_t pmw33xx_pointing_device_driver; +extern const pointing_device_driver_t pmw33xx_pointing_device_driver; /** * @brief Initializes the given sensor so it is in a working state and ready to diff --git a/keyboards/bajjak/bajjak.c b/keyboards/bajjak/bajjak.c index aadeb0415a..17d9165232 100644 --- a/keyboards/bajjak/bajjak.c +++ b/keyboards/bajjak/bajjak.c @@ -21,6 +21,10 @@ along with this program. If not, see . #include "bajjak.h" +bool bajjak_left_led_1 = 0; +bool bajjak_left_led_2 = 0; +bool bajjak_left_led_3 = 0; + extern inline void bajjak_board_led_on(void); extern inline void bajjak_right_led_1_on(void); extern inline void bajjak_right_led_2_on(void); diff --git a/keyboards/bajjak/bajjak.h b/keyboards/bajjak/bajjak.h index cd4ae50053..f3acb54f59 100644 --- a/keyboards/bajjak/bajjak.h +++ b/keyboards/bajjak/bajjak.h @@ -66,9 +66,9 @@ inline void bajjak_right_led_3_off(void) { gpio_set_pin_input(B7); gpio_write_ inline void bajjak_right_led_off(uint8_t led) { gpio_set_pin_input(led+4); gpio_write_pin_low(led+4); } #ifdef LEFT_LEDS -bool bajjak_left_led_1; -bool bajjak_left_led_2; -bool bajjak_left_led_3; +extern bool bajjak_left_led_1; +extern bool bajjak_left_led_2; +extern bool bajjak_left_led_3; inline void bajjak_left_led_1_on(void) { bajjak_left_led_1 = 1; } inline void bajjak_left_led_2_on(void) { bajjak_left_led_2 = 1; } diff --git a/keyboards/hardwareabstraction/handwire/handwire.c b/keyboards/hardwareabstraction/handwire/handwire.c index b31c0a7091..758cfd8885 100644 --- a/keyboards/hardwareabstraction/handwire/handwire.c +++ b/keyboards/hardwareabstraction/handwire/handwire.c @@ -132,7 +132,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // Variables for display layer and haptic status on OLED static uint8_t layer = 0; -haptic_config_t haptic_config; +extern haptic_config_t haptic_config; // Variables for frames, timer, and sleep uint32_t anim_timer = 0; diff --git a/keyboards/sekigon/grs_70ec/matrix.c b/keyboards/sekigon/grs_70ec/matrix.c index 926ed6f813..718423e57b 100644 --- a/keyboards/sekigon/grs_70ec/matrix.c +++ b/keyboards/sekigon/grs_70ec/matrix.c @@ -40,7 +40,7 @@ extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values // row offsets for each hand -uint8_t thisHand, thatHand; +static uint8_t thisHand, thatHand; // user-defined overridable functions __attribute__((weak)) void matrix_slave_scan_user(void) {} diff --git a/keyboards/system76/launch_1/launch_1.c b/keyboards/system76/launch_1/launch_1.c index c01fb7b01d..2cff70076e 100644 --- a/keyboards/system76/launch_1/launch_1.c +++ b/keyboards/system76/launch_1/launch_1.c @@ -124,7 +124,7 @@ void system76_ec_rgb_layer(layer_state_t layer_state); void system76_ec_unlock(void); bool system76_ec_is_unlocked(void); -rgb_config_t layer_rgb[DYNAMIC_KEYMAP_LAYER_COUNT]; +extern rgb_config_t layer_rgb[DYNAMIC_KEYMAP_LAYER_COUNT]; void matrix_init_kb(void) { usb_mux_init(); diff --git a/keyboards/system76/launch_1/rgb_matrix_kb.inc b/keyboards/system76/launch_1/rgb_matrix_kb.inc index abde7aae19..6ac7970ccd 100644 --- a/keyboards/system76/launch_1/rgb_matrix_kb.inc +++ b/keyboards/system76/launch_1/rgb_matrix_kb.inc @@ -69,7 +69,7 @@ static bool active_keys(effect_params_t* params) { return led_max < RGB_MATRIX_LED_COUNT; } -rgb_t raw_rgb_data[RGB_MATRIX_LED_COUNT] = {0}; +extern rgb_t raw_rgb_data[RGB_MATRIX_LED_COUNT]; static uint8_t normalize_component(uint8_t component) { uint16_t x = (uint16_t)component; diff --git a/keyboards/system76/system76_ec.c b/keyboards/system76/system76_ec.c index cce60a5dea..db0401a7d4 100644 --- a/keyboards/system76/system76_ec.c +++ b/keyboards/system76/system76_ec.c @@ -135,7 +135,7 @@ static enum rgb_matrix_effects mode_map[] = { _Static_assert(sizeof(mode_map) == MODE_LAST, "mode_map_length"); -rgb_t raw_rgb_data[RGB_MATRIX_LED_COUNT]; +rgb_t raw_rgb_data[RGB_MATRIX_LED_COUNT] = {0}; // clang-format off rgb_config_t layer_rgb[DYNAMIC_KEYMAP_LAYER_COUNT] = { diff --git a/keyboards/work_louder/rgb_functions.c b/keyboards/work_louder/rgb_functions.c index b0d89d8511..1ea9afc42a 100644 --- a/keyboards/work_louder/rgb_functions.c +++ b/keyboards/work_louder/rgb_functions.c @@ -25,6 +25,7 @@ #define ws2812_set_color ws2812_rgb_set_color #define ws2812_set_color_all ws2812_rgb_set_color_all #define ws2812_flush ws2812_rgb_flush +#define ws2812_leds ws2812_rgb_leds #include "ws2812_bitbang.c" diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 4e223f0c9a..247b737331 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -371,8 +371,9 @@ void audio_play_melody(float (*np)[][2], uint16_t n_count, bool n_repeat) { melody_current_note_duration = audio_duration_to_ms((*notes_pointer)[current_note][1]); } -float click[2][2]; -void audio_play_click(uint16_t delay, float pitch, uint16_t duration) { +void audio_play_click(uint16_t delay, float pitch, uint16_t duration) { + static float click[2][2]; + uint16_t duration_tone = audio_ms_to_duration(duration); uint16_t duration_delay = audio_ms_to_duration(delay); From 8ff7b1de11dc9c095f3eb37f1ace24af136df144 Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 8 Jul 2025 05:12:11 +1000 Subject: [PATCH 053/167] [docs] WS2812: rewrite Open Drain section (#25454) --- docs/drivers/ws2812.md | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/docs/drivers/ws2812.md b/docs/drivers/ws2812.md index 4d1e727928..0c26ec6248 100644 --- a/docs/drivers/ws2812.md +++ b/docs/drivers/ws2812.md @@ -144,18 +144,30 @@ The following defines apply only to ARM devices: |`WS2812_T1L`|`(WS2812_TIMING - WS2812_T1H)`|The length of a "1" bit's low phase in nanoseconds (bitbang and PIO drivers only)| |`WS2812_T0L`|`(WS2812_TIMING - WS2812_T0H)`|The length of a "0" bit's low phase in nanoseconds (bitbang and PIO drivers only)| -### Push-Pull and Open Drain {#push-pull-open-drain} +### Logic Levels {#logic-levels} -By default, the GPIO used for data transmission is configured as a *push-pull* output, meaning the pin is effectively always driven either to VCC or to ground. +WS2812 LEDs usually operate at 5V, but some microcontrollers, particularly ARM-based ones, run on 3.3V. This can pose an issue when driving the LED chain as the logic level voltage is lower than the power supply voltage, leading to unreliable data transmission. There are two main workarounds: -For situations where the logic level voltage is lower than the power supply voltage, however, this can pose an issue. The solution is to configure the pin for *open drain* mode instead, and use a pullup resistor between the DI pin and VCC. In this mode, the MCU can only pull the GPIO *low*, or leave it floating. The pullup resistor is then responsible for pulling the line high, when the MCU is not driving the GPIO. +#### 1. Open Drain Circuit {#open-drain-circuit} -To configure the DI pin for open drain configuration, add the following to your `config.h`: +By default, `WS2812_DI_PIN` is configured as a *push-pull* output, meaning the pin is effectively always driven either to VCC or to ground; however, it can be configured in *open drain* mode instead. + +In this mode, the MCU will only pull the GPIO *low*, and leaves it floating otherwise. A pullup resistor (typically around 10kΩ) between DI and 5V is then responsible for pulling the line high when the MCU is not driving the GPIO. + +To use the DI pin in open drain configuration, add the following to your `config.h`: ```c #define WS2812_EXTERNAL_PULLUP ``` +::: warning +Because the GPIO is being pulled to 5V in this situation rather than VCC (3.3V), **it must be a 5V tolerant pin**. Consult your MCU's datasheet first – if there are no eligible pins, you must use a level shifter instead. +::: + +#### 2. Level Shifter {#level-shifter} + +A level shifter IC, such as the SN74LV1T34, can be placed between the GPIO and the first LED's DI pin to convert the 3.3V logic to 5V. This requires no additional configuration in the firmware, nor a 5V tolerant GPIO, but may be more expensive and is generally less handwire-friendly. + ### SPI Driver {#arm-spi-driver} Depending on the ChibiOS board configuration, you may need to enable SPI at the keyboard level. For STM32, this would look like: From e19991ec461406da102a83f99bd518122e5cba3c Mon Sep 17 00:00:00 2001 From: ClownFish <177758267+clownfish-og@users.noreply.github.com> Date: Mon, 7 Jul 2025 15:14:12 -0400 Subject: [PATCH 054/167] [Keyboard] Add CSTC40 rev3 (#25285) * refactor cstc40, add rev3 fxtwink variant * cleanup readmes * readme nitpick * add cstc40 aliases * format-json * add communty_layouts per code review * touch copied legacy files for newline * fix LED flags * update readme files per code review --- data/mappings/keyboard_aliases.hjson | 6 + .../cstc40/daughterboard/keyboard.json | 6 - keyboards/kprepublic/cstc40/info.json | 170 +++++++----------- keyboards/kprepublic/cstc40/readme.md | 31 ++-- .../kprepublic/cstc40/{ => rev1}/config.h | 0 .../kprepublic/cstc40/{ => rev1}/halconf.h | 2 +- .../kprepublic/cstc40/rev1/keyboard.json | 63 +++++++ .../kprepublic/cstc40/{ => rev1}/mcuconf.h | 2 +- keyboards/kprepublic/cstc40/rev1/readme.md | 27 +++ .../daughterboard.c => rev1/rev1.c} | 2 +- keyboards/kprepublic/cstc40/rev2/config.h | 9 + keyboards/kprepublic/cstc40/rev2/halconf.h | 20 +++ .../kprepublic/cstc40/rev2/keyboard.json | 63 +++++++ keyboards/kprepublic/cstc40/rev2/mcuconf.h | 21 +++ keyboards/kprepublic/cstc40/rev2/readme.md | 29 +++ .../{single_pcb/single_pcb.c => rev2/rev2.c} | 2 +- .../kprepublic/cstc40/rev3/keyboard.json | 67 +++++++ keyboards/kprepublic/cstc40/rev3/readme.md | 27 +++ .../cstc40/single_pcb/keyboard.json | 6 - 19 files changed, 412 insertions(+), 141 deletions(-) delete mode 100644 keyboards/kprepublic/cstc40/daughterboard/keyboard.json rename keyboards/kprepublic/cstc40/{ => rev1}/config.h (100%) rename keyboards/kprepublic/cstc40/{ => rev1}/halconf.h (96%) create mode 100644 keyboards/kprepublic/cstc40/rev1/keyboard.json rename keyboards/kprepublic/cstc40/{ => rev1}/mcuconf.h (96%) create mode 100644 keyboards/kprepublic/cstc40/rev1/readme.md rename keyboards/kprepublic/cstc40/{daughterboard/daughterboard.c => rev1/rev1.c} (99%) create mode 100644 keyboards/kprepublic/cstc40/rev2/config.h create mode 100644 keyboards/kprepublic/cstc40/rev2/halconf.h create mode 100644 keyboards/kprepublic/cstc40/rev2/keyboard.json create mode 100644 keyboards/kprepublic/cstc40/rev2/mcuconf.h create mode 100644 keyboards/kprepublic/cstc40/rev2/readme.md rename keyboards/kprepublic/cstc40/{single_pcb/single_pcb.c => rev2/rev2.c} (99%) create mode 100644 keyboards/kprepublic/cstc40/rev3/keyboard.json create mode 100644 keyboards/kprepublic/cstc40/rev3/readme.md delete mode 100644 keyboards/kprepublic/cstc40/single_pcb/keyboard.json diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index f00be05254..b7722092ba 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -1860,6 +1860,12 @@ "kin80": { "target": "kin80/blackpill401" }, + "kprepublic/cstc40/daughterboard": { + "target": "kprepublic/cstc40/rev1" + }, + "kprepublic/cstc40/single_pcb": { + "target": "kprepublic/cstc40/rev2" + }, "kumaokobo/kudox_full": { "target": "kumaokobo/kudox_full/rev1" }, diff --git a/keyboards/kprepublic/cstc40/daughterboard/keyboard.json b/keyboards/kprepublic/cstc40/daughterboard/keyboard.json deleted file mode 100644 index cdba7942df..0000000000 --- a/keyboards/kprepublic/cstc40/daughterboard/keyboard.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "matrix_pins": { - "cols": ["B15", "B14", "B13", "B10", "B12", "A5", "C4", "A7", "A15", "C10", "C11", "C0"], - "rows": ["B1", "B0", "C5", "A6"] - } -} \ No newline at end of file diff --git a/keyboards/kprepublic/cstc40/info.json b/keyboards/kprepublic/cstc40/info.json index 8e4e640b7e..83a653cc1c 100644 --- a/keyboards/kprepublic/cstc40/info.json +++ b/keyboards/kprepublic/cstc40/info.json @@ -2,9 +2,7 @@ "manufacturer": "kprepublic", "keyboard_name": "cstc40", "maintainer": "itsvar8", - "bootloader": "stm32-dfu", "diode_direction": "ROW2COL", - "debounce": 2, "features": { "bootmagic": true, "extrakey": true, @@ -14,63 +12,9 @@ }, "processor": "STM32F401", "usb": { - "device_version": "1.0.0", "pid": "0x0040", "vid": "0x586A" }, - "layouts": { - "LAYOUT_planck_mit": { - "layout": [ - { "matrix": [0, 0], "x": 0, "y": 0 }, - { "matrix": [0, 1], "x": 1, "y": 0 }, - { "matrix": [0, 2], "x": 2, "y": 0 }, - { "matrix": [0, 3], "x": 3, "y": 0 }, - { "matrix": [0, 4], "x": 4, "y": 0 }, - { "matrix": [0, 5], "x": 5, "y": 0 }, - { "matrix": [0, 6], "x": 6, "y": 0 }, - { "matrix": [0, 7], "x": 7, "y": 0 }, - { "matrix": [0, 8], "x": 8, "y": 0 }, - { "matrix": [0, 9], "x": 9, "y": 0 }, - { "matrix": [0, 10], "x": 10, "y": 0 }, - { "matrix": [0, 11], "x": 11, "y": 0 }, - { "matrix": [1, 0], "x": 0, "y": 1 }, - { "matrix": [1, 1], "x": 1, "y": 1 }, - { "matrix": [1, 2], "x": 2, "y": 1 }, - { "matrix": [1, 3], "x": 3, "y": 1 }, - { "matrix": [1, 4], "x": 4, "y": 1 }, - { "matrix": [1, 5], "x": 5, "y": 1 }, - { "matrix": [1, 6], "x": 6, "y": 1 }, - { "matrix": [1, 7], "x": 7, "y": 1 }, - { "matrix": [1, 8], "x": 8, "y": 1 }, - { "matrix": [1, 9], "x": 9, "y": 1 }, - { "matrix": [1, 10], "x": 10, "y": 1 }, - { "matrix": [1, 11], "x": 11, "y": 1 }, - { "matrix": [2, 0], "x": 0, "y": 2 }, - { "matrix": [2, 1], "x": 1, "y": 2 }, - { "matrix": [2, 2], "x": 2, "y": 2 }, - { "matrix": [2, 3], "x": 3, "y": 2 }, - { "matrix": [2, 4], "x": 4, "y": 2 }, - { "matrix": [2, 5], "x": 5, "y": 2 }, - { "matrix": [2, 6], "x": 6, "y": 2 }, - { "matrix": [2, 7], "x": 7, "y": 2 }, - { "matrix": [2, 8], "x": 8, "y": 2 }, - { "matrix": [2, 9], "x": 9, "y": 2 }, - { "matrix": [2, 10], "x": 10, "y": 2 }, - { "matrix": [2, 11], "x": 11, "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 }, - { "matrix": [3, 4], "x": 4, "y": 3 }, - { "matrix": [3, 5], "w": 2, "x": 5, "y": 3 }, - { "matrix": [3, 7], "x": 7, "y": 3 }, - { "matrix": [3, 8], "x": 8, "y": 3 }, - { "matrix": [3, 9], "x": 9, "y": 3 }, - { "matrix": [3, 10], "x": 10, "y": 3 }, - { "matrix": [3, 11], "x": 11, "y": 3 } - ] - } - }, "rgb_matrix": { "animations": { "alphas_mods": true, @@ -94,6 +38,7 @@ "dual_beacon": true, "rainbow_beacon": true, "rainbow_pinwheels": true, + "flower_blooming": true, "raindrops": true, "jellybean_raindrops": true, "hue_breathing": true, @@ -115,59 +60,66 @@ "splash": true, "multisplash": true, "solid_splash": true, - "solid_multisplash": true + "solid_multisplash": true, + "starlight": true, + "starlight_dual_hue": true, + "starlight_dual_sat": true, + "riverflow": true }, - "driver": "is31fl3733", - "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}, - {"matrix": [0, 1], "x": 20, "y": 0, "flags": 4}, - {"matrix": [0, 2], "x": 40, "y": 0, "flags": 4}, - {"matrix": [0, 3], "x": 61, "y": 0, "flags": 4}, - {"matrix": [0, 4], "x": 81, "y": 0, "flags": 4}, - {"matrix": [0, 5], "x": 101, "y": 0, "flags": 4}, - {"matrix": [0, 6], "x": 122, "y": 0, "flags": 4}, - {"matrix": [0, 7], "x": 142, "y": 0, "flags": 4}, - {"matrix": [0, 8], "x": 162, "y": 0, "flags": 4}, - {"matrix": [0, 9], "x": 183, "y": 0, "flags": 4}, - {"matrix": [0, 10], "x": 203, "y": 0, "flags": 4}, - {"matrix": [0, 11], "x": 224, "y": 0, "flags": 1}, - {"matrix": [1, 0], "x": 0, "y": 21, "flags": 1}, - {"matrix": [1, 1], "x": 20, "y": 21, "flags": 4}, - {"matrix": [1, 2], "x": 40, "y": 21, "flags": 4}, - {"matrix": [1, 3], "x": 61, "y": 21, "flags": 4}, - {"matrix": [1, 4], "x": 81, "y": 21, "flags": 4}, - {"matrix": [1, 5], "x": 101, "y": 21, "flags": 4}, - {"matrix": [1, 6], "x": 122, "y": 21, "flags": 4}, - {"matrix": [1, 7], "x": 142, "y": 21, "flags": 4}, - {"matrix": [1, 8], "x": 162, "y": 21, "flags": 4}, - {"matrix": [1, 9], "x": 183, "y": 21, "flags": 4}, - {"matrix": [1, 10], "x": 203, "y": 21, "flags": 4}, - {"matrix": [1, 11], "x": 224, "y": 21, "flags": 1}, - {"matrix": [2, 0], "x": 0, "y": 42, "flags": 1}, - {"matrix": [2, 1], "x": 20, "y": 42, "flags": 4}, - {"matrix": [2, 2], "x": 40, "y": 42, "flags": 4}, - {"matrix": [2, 3], "x": 61, "y": 42, "flags": 4}, - {"matrix": [2, 4], "x": 81, "y": 42, "flags": 4}, - {"matrix": [2, 5], "x": 101, "y": 42, "flags": 4}, - {"matrix": [2, 6], "x": 122, "y": 42, "flags": 4}, - {"matrix": [2, 7], "x": 142, "y": 42, "flags": 4}, - {"matrix": [2, 8], "x": 162, "y": 42, "flags": 4}, - {"matrix": [2, 9], "x": 183, "y": 42, "flags": 4}, - {"matrix": [2, 10], "x": 203, "y": 42, "flags": 4}, - {"matrix": [2, 11], "x": 224, "y": 42, "flags": 1}, - {"matrix": [3, 0], "x": 0, "y": 64, "flags": 1}, - {"matrix": [3, 1], "x": 20, "y": 64, "flags": 1}, - {"matrix": [3, 2], "x": 40, "y": 64, "flags": 1}, - {"matrix": [3, 3], "x": 61, "y": 64, "flags": 1}, - {"matrix": [3, 4], "x": 81, "y": 64, "flags": 1}, - {"matrix": [3, 5], "x": 111, "y": 64, "flags": 1}, - {"matrix": [3, 7], "x": 142, "y": 64, "flags": 1}, - {"matrix": [3, 8], "x": 162, "y": 64, "flags": 1}, - {"matrix": [3, 9], "x": 183, "y": 64, "flags": 1}, - {"matrix": [3, 10], "x": 203, "y": 64, "flags": 1}, - {"matrix": [3, 11], "x": 224, "y": 64, "flags": 1} - ], - "max_brightness": 200, "sleep": true + }, + "community_layouts": ["planck_mit"], + "layouts": { + "LAYOUT_planck_mit": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [2, 11], "x": 11, "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}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3, "w": 2}, + {"matrix": [3, 7], "x": 7, "y": 3}, + {"matrix": [3, 8], "x": 8, "y": 3}, + {"matrix": [3, 9], "x": 9, "y": 3}, + {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 11], "x": 11, "y": 3} + ] + } } -} \ No newline at end of file +} diff --git a/keyboards/kprepublic/cstc40/readme.md b/keyboards/kprepublic/cstc40/readme.md index 211c078cc2..e6493b28a0 100644 --- a/keyboards/kprepublic/cstc40/readme.md +++ b/keyboards/kprepublic/cstc40/readme.md @@ -1,26 +1,25 @@ -# cstc40 +# CSTC40 -A 40% hotswap ortholinear RGB keyboard from KP Republic. +## This keyboard has 3 known hardware revisions, please be sure to flash the correct firmware for your PCB -* Keyboard Maintainer: [Var](https://github.com/itsvar8) -* Hardware Supported: CSTC40 -* Hardware Availability: kprepublic.com +A 40% hotswap ortholinear RGB keyboard from KP Republic -The differences between the two versions are just the rows and columns pins and the additional small pcb for the daughterboard version. +### Revision 1: "daughterboard" -Make example for this keyboard (after setting up your build environment): +* STM32F402RCT6 MCU with IS31FL3733 LED driver, using `stm32-dfu` bootloader. Uses a separate daughterboard for USB connection. - for daughterboard version: make kprepublic/cstc40/daughterboard:default - for single pcb version: make kprepublic/cstc40/single_pcb:default +* Upon entering bootloader mode QMK Toolbox will display this message: +`STM32 DFU device connected (WinUSB): STMicroelectronics STM32 BOOTLOADER (0483:DF11:2200)` -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). +### Revision 2: "single pcb" -## Bootloader +* STM32F402RCT6 MCU with IS31FL3733 LED driver, using `stm32-dfu` bootloader. Integrated USB connection. -Enter the bootloader in 3 ways: +* Upon entering bootloader mode QMK Toolbox will display this message: +`STM32 DFU device connected (WinUSB): STMicroelectronics STM32 BOOTLOADER (0483:DF11:2200)` -* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard -* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead -* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available +### Revision 3: "FXTwink single pcb" -The single_pcb uses pin A10, which apparently is a design flaw that prevent the bootloader to start every time - https://docs.qmk.fm/#/platformdev_blackpill_f4x1?id=pins-to-be-avoided. There is a simple workaround that works most of the time - press the pin key (generally the letter R) during the boot. +* STM32F402RCT6 MCU without separate LED driver, using `tinyuf2` bootloader. Integrated USB connection. + +* Upon entering bootloader mode the board will appear in your computer's file system as a new USB mass storage device. diff --git a/keyboards/kprepublic/cstc40/config.h b/keyboards/kprepublic/cstc40/rev1/config.h similarity index 100% rename from keyboards/kprepublic/cstc40/config.h rename to keyboards/kprepublic/cstc40/rev1/config.h diff --git a/keyboards/kprepublic/cstc40/halconf.h b/keyboards/kprepublic/cstc40/rev1/halconf.h similarity index 96% rename from keyboards/kprepublic/cstc40/halconf.h rename to keyboards/kprepublic/cstc40/rev1/halconf.h index 0f279040aa..049b29a046 100644 --- a/keyboards/kprepublic/cstc40/halconf.h +++ b/keyboards/kprepublic/cstc40/rev1/halconf.h @@ -17,4 +17,4 @@ #define HAL_USE_I2C TRUE -#include_next \ No newline at end of file +#include_next diff --git a/keyboards/kprepublic/cstc40/rev1/keyboard.json b/keyboards/kprepublic/cstc40/rev1/keyboard.json new file mode 100644 index 0000000000..9574e0bd22 --- /dev/null +++ b/keyboards/kprepublic/cstc40/rev1/keyboard.json @@ -0,0 +1,63 @@ +{ + "bootloader": "stm32-dfu", + "matrix_pins": { + "cols": ["B15", "B14", "B13", "B10", "B12", "A5", "C4", "A7", "A15", "C10", "C11", "C0"], + "rows": ["B1", "B0", "C5", "A6"] + }, + "rgb_matrix": { + "driver": "is31fl3733", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [0, 1], "x": 20, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 40, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 61, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 81, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 101, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 122, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 142, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 162, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 183, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 203, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 224, "y": 0, "flags": 1}, + {"matrix": [1, 0], "x": 0, "y": 21, "flags": 1}, + {"matrix": [1, 1], "x": 20, "y": 21, "flags": 4}, + {"matrix": [1, 2], "x": 40, "y": 21, "flags": 4}, + {"matrix": [1, 3], "x": 61, "y": 21, "flags": 4}, + {"matrix": [1, 4], "x": 81, "y": 21, "flags": 4}, + {"matrix": [1, 5], "x": 101, "y": 21, "flags": 4}, + {"matrix": [1, 6], "x": 122, "y": 21, "flags": 4}, + {"matrix": [1, 7], "x": 142, "y": 21, "flags": 4}, + {"matrix": [1, 8], "x": 162, "y": 21, "flags": 4}, + {"matrix": [1, 9], "x": 183, "y": 21, "flags": 4}, + {"matrix": [1, 10], "x": 203, "y": 21, "flags": 4}, + {"matrix": [1, 11], "x": 224, "y": 21, "flags": 1}, + {"matrix": [2, 0], "x": 0, "y": 42, "flags": 1}, + {"matrix": [2, 1], "x": 20, "y": 42, "flags": 4}, + {"matrix": [2, 2], "x": 40, "y": 42, "flags": 4}, + {"matrix": [2, 3], "x": 61, "y": 42, "flags": 4}, + {"matrix": [2, 4], "x": 81, "y": 42, "flags": 4}, + {"matrix": [2, 5], "x": 101, "y": 42, "flags": 4}, + {"matrix": [2, 6], "x": 122, "y": 42, "flags": 4}, + {"matrix": [2, 7], "x": 142, "y": 42, "flags": 4}, + {"matrix": [2, 8], "x": 162, "y": 42, "flags": 4}, + {"matrix": [2, 9], "x": 183, "y": 42, "flags": 4}, + {"matrix": [2, 10], "x": 203, "y": 42, "flags": 4}, + {"matrix": [2, 11], "x": 224, "y": 42, "flags": 1}, + {"matrix": [3, 0], "x": 0, "y": 64, "flags": 1}, + {"matrix": [3, 1], "x": 20, "y": 64, "flags": 1}, + {"matrix": [3, 2], "x": 40, "y": 64, "flags": 1}, + {"matrix": [3, 3], "x": 61, "y": 64, "flags": 1}, + {"matrix": [3, 4], "x": 81, "y": 64, "flags": 1}, + {"matrix": [3, 5], "x": 111, "y": 64, "flags": 1}, + {"matrix": [3, 7], "x": 142, "y": 64, "flags": 1}, + {"matrix": [3, 8], "x": 162, "y": 64, "flags": 1}, + {"matrix": [3, 9], "x": 183, "y": 64, "flags": 1}, + {"matrix": [3, 10], "x": 203, "y": 64, "flags": 1}, + {"matrix": [3, 11], "x": 224, "y": 64, "flags": 1} + ], + "max_brightness": 200 + }, + "usb": { + "device_version": "1.0.0" + } +} diff --git a/keyboards/kprepublic/cstc40/mcuconf.h b/keyboards/kprepublic/cstc40/rev1/mcuconf.h similarity index 96% rename from keyboards/kprepublic/cstc40/mcuconf.h rename to keyboards/kprepublic/cstc40/rev1/mcuconf.h index a56e52fb8d..563b86d26d 100644 --- a/keyboards/kprepublic/cstc40/mcuconf.h +++ b/keyboards/kprepublic/cstc40/rev1/mcuconf.h @@ -18,4 +18,4 @@ #include_next #undef STM32_I2C_USE_I2C1 -#define STM32_I2C_USE_I2C1 TRUE \ No newline at end of file +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/kprepublic/cstc40/rev1/readme.md b/keyboards/kprepublic/cstc40/rev1/readme.md new file mode 100644 index 0000000000..1d688bc977 --- /dev/null +++ b/keyboards/kprepublic/cstc40/rev1/readme.md @@ -0,0 +1,27 @@ +# Rev 1 + +A 40% hotswap ortholinear RGB keyboard from KP Republic. + +* **Revision 1: "daughterboard"** +* Keyboard Maintainer: [Var](https://github.com/itsvar8) +* Hardware Supported: CSTC40 rev1 +* STM32F402RCT6 MCU with IS31FL3733 LED driver and using `stm32-dfu` bootloader. Uses a separate daughterboard for USB connection. +* Hardware Availability: kprepublic.com + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/cstc40/rev1:default + +Flashing example for this keyboard: + + make kprepublic/cstc40/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 (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/kprepublic/cstc40/daughterboard/daughterboard.c b/keyboards/kprepublic/cstc40/rev1/rev1.c similarity index 99% rename from keyboards/kprepublic/cstc40/daughterboard/daughterboard.c rename to keyboards/kprepublic/cstc40/rev1/rev1.c index 38fac99155..db063d3eba 100644 --- a/keyboards/kprepublic/cstc40/daughterboard/daughterboard.c +++ b/keyboards/kprepublic/cstc40/rev1/rev1.c @@ -68,4 +68,4 @@ const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { { 0, SW3_CS11, SW2_CS11, SW1_CS11 }, { 0, SW3_CS12, SW2_CS12, SW1_CS12 } }; -#endif \ No newline at end of file +#endif diff --git a/keyboards/kprepublic/cstc40/rev2/config.h b/keyboards/kprepublic/cstc40/rev2/config.h new file mode 100644 index 0000000000..4f845a84af --- /dev/null +++ b/keyboards/kprepublic/cstc40/rev2/config.h @@ -0,0 +1,9 @@ +// Copyright 2022 Var (@itsvar8) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define I2C1_SDA_PIN B9 +#define I2C1_SCL_PIN B8 + +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND diff --git a/keyboards/kprepublic/cstc40/rev2/halconf.h b/keyboards/kprepublic/cstc40/rev2/halconf.h new file mode 100644 index 0000000000..049b29a046 --- /dev/null +++ b/keyboards/kprepublic/cstc40/rev2/halconf.h @@ -0,0 +1,20 @@ +/* Copyright 2020 Nick Brassel (tzarc) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/kprepublic/cstc40/rev2/keyboard.json b/keyboards/kprepublic/cstc40/rev2/keyboard.json new file mode 100644 index 0000000000..7516bfc205 --- /dev/null +++ b/keyboards/kprepublic/cstc40/rev2/keyboard.json @@ -0,0 +1,63 @@ +{ + "bootloader": "stm32-dfu", + "matrix_pins": { + "cols": ["C7", "C8", "C9", "A8", "A10", "B10", "A15", "C13", "B6", "B5", "B4", "B3"], + "rows": ["C12", "C10", "C11", "B0"] + }, + "rgb_matrix": { + "driver": "is31fl3733", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [0, 1], "x": 20, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 40, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 61, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 81, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 101, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 122, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 142, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 162, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 183, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 203, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 224, "y": 0, "flags": 1}, + {"matrix": [1, 0], "x": 0, "y": 21, "flags": 1}, + {"matrix": [1, 1], "x": 20, "y": 21, "flags": 4}, + {"matrix": [1, 2], "x": 40, "y": 21, "flags": 4}, + {"matrix": [1, 3], "x": 61, "y": 21, "flags": 4}, + {"matrix": [1, 4], "x": 81, "y": 21, "flags": 4}, + {"matrix": [1, 5], "x": 101, "y": 21, "flags": 4}, + {"matrix": [1, 6], "x": 122, "y": 21, "flags": 4}, + {"matrix": [1, 7], "x": 142, "y": 21, "flags": 4}, + {"matrix": [1, 8], "x": 162, "y": 21, "flags": 4}, + {"matrix": [1, 9], "x": 183, "y": 21, "flags": 4}, + {"matrix": [1, 10], "x": 203, "y": 21, "flags": 4}, + {"matrix": [1, 11], "x": 224, "y": 21, "flags": 1}, + {"matrix": [2, 0], "x": 0, "y": 42, "flags": 1}, + {"matrix": [2, 1], "x": 20, "y": 42, "flags": 4}, + {"matrix": [2, 2], "x": 40, "y": 42, "flags": 4}, + {"matrix": [2, 3], "x": 61, "y": 42, "flags": 4}, + {"matrix": [2, 4], "x": 81, "y": 42, "flags": 4}, + {"matrix": [2, 5], "x": 101, "y": 42, "flags": 4}, + {"matrix": [2, 6], "x": 122, "y": 42, "flags": 4}, + {"matrix": [2, 7], "x": 142, "y": 42, "flags": 4}, + {"matrix": [2, 8], "x": 162, "y": 42, "flags": 4}, + {"matrix": [2, 9], "x": 183, "y": 42, "flags": 4}, + {"matrix": [2, 10], "x": 203, "y": 42, "flags": 4}, + {"matrix": [2, 11], "x": 224, "y": 42, "flags": 1}, + {"matrix": [3, 0], "x": 0, "y": 64, "flags": 1}, + {"matrix": [3, 1], "x": 20, "y": 64, "flags": 1}, + {"matrix": [3, 2], "x": 40, "y": 64, "flags": 1}, + {"matrix": [3, 3], "x": 61, "y": 64, "flags": 1}, + {"matrix": [3, 4], "x": 81, "y": 64, "flags": 1}, + {"matrix": [3, 5], "x": 111, "y": 64, "flags": 1}, + {"matrix": [3, 7], "x": 142, "y": 64, "flags": 1}, + {"matrix": [3, 8], "x": 162, "y": 64, "flags": 1}, + {"matrix": [3, 9], "x": 183, "y": 64, "flags": 1}, + {"matrix": [3, 10], "x": 203, "y": 64, "flags": 1}, + {"matrix": [3, 11], "x": 224, "y": 64, "flags": 1} + ], + "max_brightness": 200 + }, + "usb": { + "device_version": "2.0.0" + } +} diff --git a/keyboards/kprepublic/cstc40/rev2/mcuconf.h b/keyboards/kprepublic/cstc40/rev2/mcuconf.h new file mode 100644 index 0000000000..563b86d26d --- /dev/null +++ b/keyboards/kprepublic/cstc40/rev2/mcuconf.h @@ -0,0 +1,21 @@ +/* Copyright 2020 Nick Brassel (tzarc) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/kprepublic/cstc40/rev2/readme.md b/keyboards/kprepublic/cstc40/rev2/readme.md new file mode 100644 index 0000000000..8f6b27ed8e --- /dev/null +++ b/keyboards/kprepublic/cstc40/rev2/readme.md @@ -0,0 +1,29 @@ +# Rev 2 + +A 40% hotswap ortholinear RGB keyboard from KP Republic. + +* **Revision 2: "single pcb"** +* Keyboard Maintainer: [Var](https://github.com/itsvar8) +* Hardware Supported: CSTC40 rev2 +* STM32F402RCT6 MCU with IS31FL3733 LED driver and using `stm32-dfu` bootloader. Integrated USB connection. +* Hardware Availability: kprepublic.com + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/cstc40/rev2:default + +Flashing example for this keyboard: + + make kprepublic/cstc40/rev2:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + +The rev 2 uses pin `A10` in the key matrix, which apparently is a design flaw that may prevent the bootloader from entering the proper mode for DFU flashing - . There is a simple workaround that works most of the time - press the pin key (generally the letter R) during the boot. diff --git a/keyboards/kprepublic/cstc40/single_pcb/single_pcb.c b/keyboards/kprepublic/cstc40/rev2/rev2.c similarity index 99% rename from keyboards/kprepublic/cstc40/single_pcb/single_pcb.c rename to keyboards/kprepublic/cstc40/rev2/rev2.c index 38fac99155..db063d3eba 100644 --- a/keyboards/kprepublic/cstc40/single_pcb/single_pcb.c +++ b/keyboards/kprepublic/cstc40/rev2/rev2.c @@ -68,4 +68,4 @@ const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { { 0, SW3_CS11, SW2_CS11, SW1_CS11 }, { 0, SW3_CS12, SW2_CS12, SW1_CS12 } }; -#endif \ No newline at end of file +#endif diff --git a/keyboards/kprepublic/cstc40/rev3/keyboard.json b/keyboards/kprepublic/cstc40/rev3/keyboard.json new file mode 100644 index 0000000000..2748a6f1fc --- /dev/null +++ b/keyboards/kprepublic/cstc40/rev3/keyboard.json @@ -0,0 +1,67 @@ +{ + "maintainer": "ClownFish", + "bootloader": "tinyuf2", + "matrix_pins": { + "cols": ["A4", "A5", "A6", "A7", "C4", "C5", "A8", "A15", "C10", "C11", "C12", "D2"], + "rows": ["B12", "B1", "B0", "C13"] + }, + "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"matrix": [3, 0], "x": 0, "y": 64, "flags": 1}, + {"matrix": [3, 1], "x": 20, "y": 64, "flags": 1}, + {"matrix": [3, 2], "x": 41, "y": 64, "flags": 1}, + {"matrix": [3, 3], "x": 61, "y": 64, "flags": 1}, + {"matrix": [3, 4], "x": 82, "y": 64, "flags": 1}, + {"matrix": [3, 5], "x": 112, "y": 64, "flags": 1}, + {"matrix": [3, 7], "x": 142, "y": 64, "flags": 1}, + {"matrix": [3, 8], "x": 163, "y": 64, "flags": 1}, + {"matrix": [3, 9], "x": 183, "y": 64, "flags": 1}, + {"matrix": [3, 10], "x": 204, "y": 64, "flags": 1}, + {"matrix": [3, 11], "x": 224, "y": 64, "flags": 1}, + {"matrix": [2, 11], "x": 224, "y": 43, "flags": 1}, + {"matrix": [2, 10], "x": 204, "y": 43, "flags": 4}, + {"matrix": [2, 9], "x": 183, "y": 43, "flags": 4}, + {"matrix": [2, 8], "x": 163, "y": 43, "flags": 4}, + {"matrix": [2, 7], "x": 142, "y": 43, "flags": 4}, + {"matrix": [2, 6], "x": 122, "y": 43, "flags": 4}, + {"matrix": [2, 5], "x": 102, "y": 43, "flags": 4}, + {"matrix": [2, 4], "x": 82, "y": 43, "flags": 4}, + {"matrix": [2, 3], "x": 61, "y": 43, "flags": 4}, + {"matrix": [2, 2], "x": 41, "y": 43, "flags": 4}, + {"matrix": [2, 1], "x": 20, "y": 43, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 43, "flags": 1}, + {"matrix": [1, 0], "x": 0, "y": 21, "flags": 1}, + {"matrix": [1, 1], "x": 20, "y": 21, "flags": 4}, + {"matrix": [1, 2], "x": 41, "y": 21, "flags": 4}, + {"matrix": [1, 3], "x": 61, "y": 21, "flags": 4}, + {"matrix": [1, 4], "x": 82, "y": 21, "flags": 4}, + {"matrix": [1, 5], "x": 102, "y": 21, "flags": 4}, + {"matrix": [1, 6], "x": 122, "y": 21, "flags": 4}, + {"matrix": [1, 7], "x": 142, "y": 21, "flags": 4}, + {"matrix": [1, 8], "x": 163, "y": 21, "flags": 4}, + {"matrix": [1, 9], "x": 183, "y": 21, "flags": 4}, + {"matrix": [1, 10], "x": 204, "y": 21, "flags": 4}, + {"matrix": [1, 11], "x": 224, "y": 21, "flags": 1}, + {"matrix": [0, 11], "x": 224, "y": 0, "flags": 1}, + {"matrix": [0, 10], "x": 204, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 183, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 163, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 142, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 122, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 102, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 82, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 61, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 41, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 20, "y": 0, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1} + ], + "max_brightness": 180 + }, + "usb": { + "device_version": "3.0.0" + }, + "ws2812": { + "pin": "B13" + } +} diff --git a/keyboards/kprepublic/cstc40/rev3/readme.md b/keyboards/kprepublic/cstc40/rev3/readme.md new file mode 100644 index 0000000000..b372c63579 --- /dev/null +++ b/keyboards/kprepublic/cstc40/rev3/readme.md @@ -0,0 +1,27 @@ +# Rev 3 + +A 40% hotswap ortholinear RGB keyboard from KP Republic. + +* **Revision 3: "FXTwink single pcb"** +* Keyboard Maintainer: [ClownFish](https://github.com/clownfish-og) +* Hardware Supported: CSTC40 rev3 +* STM32F402RCT6 MCU without separate LED driver and using `tinyuf2` bootloader. Integrated USB connection. +* Hardware Availability: kprepublic.com + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/cstc40/rev3:default + +Flashing example for this keyboard: + + make kprepublic/cstc40/rev3:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/kprepublic/cstc40/single_pcb/keyboard.json b/keyboards/kprepublic/cstc40/single_pcb/keyboard.json deleted file mode 100644 index 330ada7bac..0000000000 --- a/keyboards/kprepublic/cstc40/single_pcb/keyboard.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "matrix_pins": { - "cols": ["C7", "C8", "C9", "A8", "A10", "B10", "A15", "C13", "B6", "B5", "B4", "B3"], - "rows": ["C12", "C10", "C11", "B0"] - } -} \ No newline at end of file From 0524a6d8486470c9e4a4111e4a8bcf829edb9d38 Mon Sep 17 00:00:00 2001 From: srk24 <25836646+srk24@users.noreply.github.com> Date: Tue, 8 Jul 2025 03:23:46 +0800 Subject: [PATCH 055/167] [keyboard]Graystudio BD60 Support (#25337) --- keyboards/gray_studio/bd60/bd60.c | 41 +++ keyboards/gray_studio/bd60/keyboard.json | 312 ++++++++++++++++++ .../gray_studio/bd60/keymaps/default/keymap.c | 20 ++ keyboards/gray_studio/bd60/matrix_diagram.md | 24 ++ keyboards/gray_studio/bd60/readme.md | 21 ++ 5 files changed, 418 insertions(+) create mode 100644 keyboards/gray_studio/bd60/bd60.c create mode 100644 keyboards/gray_studio/bd60/keyboard.json create mode 100644 keyboards/gray_studio/bd60/keymaps/default/keymap.c create mode 100644 keyboards/gray_studio/bd60/matrix_diagram.md create mode 100644 keyboards/gray_studio/bd60/readme.md diff --git a/keyboards/gray_studio/bd60/bd60.c b/keyboards/gray_studio/bd60/bd60.c new file mode 100644 index 0000000000..2461485e69 --- /dev/null +++ b/keyboards/gray_studio/bd60/bd60.c @@ -0,0 +1,41 @@ +/* Copyright 2023 CMM.S Freather + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +#ifdef RGBLIGHT_LAYERS +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_WHITE} +); + +// Now define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_capslock_layer +); + +void keyboard_post_init_kb(void){ + rgblight_layers = my_rgb_layers; + keyboard_post_init_user(); +} + +bool led_update_kb(led_t led_state){ + bool res = led_update_user(led_state); + if (res) { + rgblight_set_layer_state(0, led_state.caps_lock); + } + return res; +} +#endif diff --git a/keyboards/gray_studio/bd60/keyboard.json b/keyboards/gray_studio/bd60/keyboard.json new file mode 100644 index 0000000000..d9c5133b1e --- /dev/null +++ b/keyboards/gray_studio/bd60/keyboard.json @@ -0,0 +1,312 @@ +{ + "manufacturer": "GrayStudio", + "keyboard_name": "BD60", + "maintainer": "srk24", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["A3", "C14", "C13", "B9", "B8", "B7", "B6", "B5", "B4", "B3", "A15", "B0", "A8", "B15", "B14"], + "rows": ["B13", "B12", "A2", "A0", "A1"] + }, + "processor": "STM32F072", + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 8, + "default": { + "animation": "rainbow_mood" + }, + "layers": { + "enabled": true + }, + "led_count": 1, + "max_brightness": 150, + "saturation_steps": 8, + "sleep": true + }, + "usb": { + "device_version": "0.0.2", + "pid": "0x4060", + "vid": "0x4753" + }, + "ws2812": { + "pin": "B10" + }, + "community_layouts": ["60_ansi", "60_ansi_wkl", "60_hhkb"], + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 12.5, "y": 4, "w": 1} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/gray_studio/bd60/keymaps/default/keymap.c b/keyboards/gray_studio/bd60/keymaps/default/keymap.c new file mode 100644 index 0000000000..91aaf1d11d --- /dev/null +++ b/keyboards/gray_studio/bd60/keymaps/default/keymap.c @@ -0,0 +1,20 @@ +// Copyright 2023 srk24 +// SPDX-License-Identifier: GPL-2.0 +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_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_RALT, KC_RGUI, KC_RCTL, MO(1) + ), + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + _______, UG_TOGG, KC_UP, UG_NEXT, _______, _______, _______, UG_VALU, UG_VALD, _______, _______, _______, _______, KC_INS, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_MPRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, _______, + _______, _______, _______, KC_MPLY, _______, KC_LEFT, KC_RGHT, _______ + ) +}; diff --git a/keyboards/gray_studio/bd60/matrix_diagram.md b/keyboards/gray_studio/bd60/matrix_diagram.md new file mode 100644 index 0000000000..622864bf91 --- /dev/null +++ b/keyboards/gray_studio/bd60/matrix_diagram.md @@ -0,0 +1,24 @@ +# Matrix Diagram for GrayStudio BD60 + +``` + ┌───────┐ + 2u Backspace │0D │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ +│10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ +│20 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ +│30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │ +├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ +│40 │41 │43 │47 │4A │4B │4D │4E │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +┌────────┐ ┌──────────┐ +│30 │ 2.25u LShift 2.75u RShift │3D │ +└────────┘ └──────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│40 │41 │43 │47 │4B │4D │4E │ Tsangan/WKL/HHKB +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +``` diff --git a/keyboards/gray_studio/bd60/readme.md b/keyboards/gray_studio/bd60/readme.md new file mode 100644 index 0000000000..9be7724be3 --- /dev/null +++ b/keyboards/gray_studio/bd60/readme.md @@ -0,0 +1,21 @@ +# Gray Studio BD60 + +A 65% keyboard by Graystudio. PCB designed and manufactured by DEMO Studio. + +* Keyboard Maintainer: [srk24](https://github.com/srk24) +* Hardware Support: BD60 PCB w/ STM32F072 microcontroller +* Hardware Availability: [graystudio.club/bd60](https://in-stock.graystudio.club/products/in-stock-bd60) + +Make example for this keyboard (after setting up your build environment): + + make gray_studio/bd60:default + +Flashing example for this keyboard: + + make gray_studio/bd60: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 From 2916c3f0980e86a925eeefcf57ebad7126d88f39 Mon Sep 17 00:00:00 2001 From: Ning Date: Tue, 8 Jul 2025 13:49:44 +0800 Subject: [PATCH 056/167] [Keyboard] Update ning_tinyboard_tb16rgb diode direction (#25379) * Update ning_tinyboard_tb16rgb diode_direction * enable LTO add rules.mk and enable RGB_MATRIX_CUSTOM_USER add add rgb_matrix_user.inc * remove files --- keyboards/ning/tiny_board/tb16_rgb/keyboard.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboards/ning/tiny_board/tb16_rgb/keyboard.json b/keyboards/ning/tiny_board/tb16_rgb/keyboard.json index 4501c4daeb..9e99ef879a 100644 --- a/keyboards/ning/tiny_board/tb16_rgb/keyboard.json +++ b/keyboards/ning/tiny_board/tb16_rgb/keyboard.json @@ -2,7 +2,10 @@ "manufacturer": "Ning", "keyboard_name": "TB16 RGB", "maintainer": "ningjx", - "diode_direction": "COL2ROW", + "diode_direction": "ROW2COL", + "build": { + "lto": true + }, "features": { "bootmagic": true, "extrakey": true, From bf28a303c6cc66ce06fb30c6de01c0986c808311 Mon Sep 17 00:00:00 2001 From: adophoxia <100170946+adophoxia@users.noreply.github.com> Date: Mon, 7 Jul 2025 22:52:55 -0700 Subject: [PATCH 057/167] Keychron C3 Pro `c3_pro.c` corrections (#25049) * Update `c3_pro.c` * Redo layer switching logic; will default back to 0 if EEPROM reset * Update keyboards/keychron/c3_pro/c3_pro.c Co-authored-by: Joel Challis * Re-re-did layer switching logic * Update GPIO control functions * Apply suggestions from code review Co-authored-by: Joel Challis --------- Co-authored-by: Joel Challis --- keyboards/keychron/c3_pro/c3_pro.c | 71 +++++++++++++----------------- 1 file changed, 30 insertions(+), 41 deletions(-) diff --git a/keyboards/keychron/c3_pro/c3_pro.c b/keyboards/keychron/c3_pro/c3_pro.c index 905eb86f5a..0c584b0938 100644 --- a/keyboards/keychron/c3_pro/c3_pro.c +++ b/keyboards/keychron/c3_pro/c3_pro.c @@ -16,6 +16,26 @@ #include "c3_pro.h" +void keyboard_post_init_kb(void) { + gpio_set_pin_output_push_pull(LED_MAC_OS_PIN); + gpio_set_pin_output_push_pull(LED_WIN_OS_PIN); + gpio_write_pin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE); + gpio_write_pin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE); + + keyboard_post_init_user(); +} + +void housekeeping_task_kb(void) { + if (get_highest_layer(default_layer_state) == 0) { + gpio_write_pin(LED_MAC_OS_PIN, LED_OS_PIN_ON_STATE); + gpio_write_pin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE); + } + if (get_highest_layer(default_layer_state) == 2) { + gpio_write_pin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE); + gpio_write_pin(LED_WIN_OS_PIN, LED_OS_PIN_ON_STATE); + } +} + bool process_record_kb(uint16_t keycode, keyrecord_t *record) { if (!process_record_user(keycode, record)) { return false; @@ -61,9 +81,12 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { #endif case KC_OSSW: if (record->event.pressed) { - default_layer_xor(1U << 0); - default_layer_xor(1U << 2); - eeconfig_update_default_layer(default_layer_state); + // Switches default layer between `MAC_BASE` and `WIN_BASE` (0 and 2) + if (get_highest_layer(default_layer_state) == 2 ) { + set_single_persistent_default_layer(0); + } else { + set_single_persistent_default_layer(2); + } } return false; default: @@ -71,42 +94,8 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { } } -#if defined(RGB_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) - -bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { - if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { - return false; - } - // RGB_MATRIX_INDICATOR_SET_COLOR(index, red, green, blue); - - if (host_keyboard_led_state().caps_lock) { - RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 255, 255, 255); - } else { - if (!rgb_matrix_get_flags()) { - RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 0, 0, 0); - } - } - return true; +void suspend_power_down_kb(void) { + gpio_write_pin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE); + gpio_write_pin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE); + suspend_power_down_user(); } - -#endif // RGB_MATRIX_ENABLE && CAPS_LOCK_LED_INDEX - -#if defined(LED_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) - -bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { - if (!led_matrix_indicators_advanced_user(led_min, led_max)) { - return false; - } - - if (host_keyboard_led_state().caps_lock) { - led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255); - - } else { - if (!led_matrix_get_flags()) { - led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0); - } - } - return true; -} - -#endif // LED_MATRIX_ENABLE && CAPS_LOCK_LED_INDEX From a26dbbfe96834c022ca10406e3c61382b1f07a1f Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 8 Jul 2025 14:59:45 +0900 Subject: [PATCH 058/167] [Keyboard] Add MX65X (#25214) * Addition of MX65X * Folder separation * Fix * Update readme * Update keymap.c Co-authored-by: Drashna Jaelre * Update keymap.c Co-authored-by: Drashna Jaelre * Update keymap.c Co-authored-by: Drashna Jaelre * Update keymap.c Co-authored-by: Drashna Jaelre * Update keymap.c Co-authored-by: Drashna Jaelre * Update info.json --------- Co-authored-by: Drashna Jaelre --- keyboards/cipulot/mx65x/config.h | 24 + keyboards/cipulot/mx65x/halconf.h | 21 + keyboards/cipulot/mx65x/hotswap/keyboard.json | 6 + keyboards/cipulot/mx65x/hotswap/rules.mk | 2 + keyboards/cipulot/mx65x/info.json | 421 ++++++++++++++++++ .../mx65x/keymaps/65_ansi_blocker/keymap.c | 50 +++ .../mx65x/keymaps/65_ansi_blocker/rules.mk | 1 + .../keymaps/65_ansi_blocker_tsangan/keymap.c | 50 +++ .../keymaps/65_ansi_blocker_tsangan/rules.mk | 1 + .../mx65x/keymaps/65_iso_blocker/keymap.c | 50 +++ .../mx65x/keymaps/65_iso_blocker/rules.mk | 1 + .../keymaps/65_iso_blocker_tsangan/keymap.c | 50 +++ .../keymaps/65_iso_blocker_tsangan/rules.mk | 1 + .../cipulot/mx65x/keymaps/default/keymap.c | 50 +++ .../cipulot/mx65x/keymaps/default/rules.mk | 1 + keyboards/cipulot/mx65x/mcuconf.h | 22 + keyboards/cipulot/mx65x/readme.md | 36 ++ keyboards/cipulot/mx65x/solder/keyboard.json | 6 + keyboards/cipulot/mx65x/solder/rules.mk | 2 + 19 files changed, 795 insertions(+) create mode 100644 keyboards/cipulot/mx65x/config.h create mode 100644 keyboards/cipulot/mx65x/halconf.h create mode 100644 keyboards/cipulot/mx65x/hotswap/keyboard.json create mode 100644 keyboards/cipulot/mx65x/hotswap/rules.mk create mode 100644 keyboards/cipulot/mx65x/info.json create mode 100644 keyboards/cipulot/mx65x/keymaps/65_ansi_blocker/keymap.c create mode 100644 keyboards/cipulot/mx65x/keymaps/65_ansi_blocker/rules.mk create mode 100644 keyboards/cipulot/mx65x/keymaps/65_ansi_blocker_tsangan/keymap.c create mode 100644 keyboards/cipulot/mx65x/keymaps/65_ansi_blocker_tsangan/rules.mk create mode 100644 keyboards/cipulot/mx65x/keymaps/65_iso_blocker/keymap.c create mode 100644 keyboards/cipulot/mx65x/keymaps/65_iso_blocker/rules.mk create mode 100644 keyboards/cipulot/mx65x/keymaps/65_iso_blocker_tsangan/keymap.c create mode 100644 keyboards/cipulot/mx65x/keymaps/65_iso_blocker_tsangan/rules.mk create mode 100644 keyboards/cipulot/mx65x/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/mx65x/keymaps/default/rules.mk create mode 100644 keyboards/cipulot/mx65x/mcuconf.h create mode 100644 keyboards/cipulot/mx65x/readme.md create mode 100644 keyboards/cipulot/mx65x/solder/keyboard.json create mode 100644 keyboards/cipulot/mx65x/solder/rules.mk diff --git a/keyboards/cipulot/mx65x/config.h b/keyboards/cipulot/mx65x/config.h new file mode 100644 index 0000000000..5f4cc71911 --- /dev/null +++ b/keyboards/cipulot/mx65x/config.h @@ -0,0 +1,24 @@ +/* Copyright 2025 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// PWM driver with direct memory access (DMA) support +#define WS2812_PWM_DRIVER PWMD1 +#define WS2812_PWM_CHANNEL 2 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM5 +#define WS2812_DMA_CHANNEL 6 diff --git a/keyboards/cipulot/mx65x/halconf.h b/keyboards/cipulot/mx65x/halconf.h new file mode 100644 index 0000000000..d220b03aa3 --- /dev/null +++ b/keyboards/cipulot/mx65x/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2025 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/cipulot/mx65x/hotswap/keyboard.json b/keyboards/cipulot/mx65x/hotswap/keyboard.json new file mode 100644 index 0000000000..bba641aa0b --- /dev/null +++ b/keyboards/cipulot/mx65x/hotswap/keyboard.json @@ -0,0 +1,6 @@ +{ + "keyboard_name": "MX65X Hotswap", + "usb": { + "pid": "0x6BD8" + } +} diff --git a/keyboards/cipulot/mx65x/hotswap/rules.mk b/keyboards/cipulot/mx65x/hotswap/rules.mk new file mode 100644 index 0000000000..0ab54aaaf7 --- /dev/null +++ b/keyboards/cipulot/mx65x/hotswap/rules.mk @@ -0,0 +1,2 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF diff --git a/keyboards/cipulot/mx65x/info.json b/keyboards/cipulot/mx65x/info.json new file mode 100644 index 0000000000..8de5c0d544 --- /dev/null +++ b/keyboards/cipulot/mx65x/info.json @@ -0,0 +1,421 @@ +{ + "manufacturer": "Cipulot", + "maintainer": "Cipulot", + "bootloader": "stm32-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "F0", "pin_b": "F1"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["B14", "B12", "B11", "B10", "B2", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0"], + "rows": ["A15", "B7", "B13", "B15", "A8"] + }, + "processor": "STM32F072", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 26 + }, + "usb": { + "device_version": "0.0.1", + "shared_endpoint": { + "keyboard": true + }, + "vid": "0x6369" + }, + "ws2812": { + "driver": "pwm", + "pin": "A9" + }, + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 14], "x": 15, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 14], "x": 15, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 14], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 14], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 13, "y": 4}, + {"matrix": [4, 12], "x": 14, "y": 4}, + {"matrix": [4, 13], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 14], "x": 15, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 14], "x": 15, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 14], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 14], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 13, "y": 4}, + {"matrix": [4, 12], "x": 14, "y": 4}, + {"matrix": [4, 13], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_iso_blocker": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 14], "x": 15, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 14], "x": 15, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 14], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 14], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 13, "y": 4}, + {"matrix": [4, 12], "x": 14, "y": 4}, + {"matrix": [4, 13], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_iso_blocker_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 14], "x": 15, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 14], "x": 15, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 14], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 14], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 13, "y": 4}, + {"matrix": [4, 12], "x": 14, "y": 4}, + {"matrix": [4, 13], "x": 15, "y": 4} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [1, 14], "x": 15, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 14], "x": 15, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25}, + {"matrix": [3, 14], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 14], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 4], "x": 4, "y": 4, "w": 2.5}, + {"matrix": [4, 6], "x": 6.5, "y": 4}, + {"matrix": [4, 8], "x": 7.5, "y": 4, "w": 2.5}, + {"matrix": [4, 9], "x": 10, "y": 4}, + {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 11], "x": 13, "y": 4}, + {"matrix": [4, 12], "x": 14, "y": 4}, + {"matrix": [4, 13], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/cipulot/mx65x/keymaps/65_ansi_blocker/keymap.c b/keyboards/cipulot/mx65x/keymaps/65_ansi_blocker/keymap.c new file mode 100644 index 0000000000..804fb20521 --- /dev/null +++ b/keyboards/cipulot/mx65x/keymaps/65_ansi_blocker/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2025 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER, 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, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_65_ansi_blocker( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, MO(2), _______, _______, _______), + + [2] = LAYOUT_65_ansi_blocker( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(_______, _______) }, + [2] = { ENCODER_CCW_CW(_______, _______) } +}; +#endif +// clang-format on diff --git a/keyboards/cipulot/mx65x/keymaps/65_ansi_blocker/rules.mk b/keyboards/cipulot/mx65x/keymaps/65_ansi_blocker/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/cipulot/mx65x/keymaps/65_ansi_blocker/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/cipulot/mx65x/keymaps/65_ansi_blocker_tsangan/keymap.c b/keyboards/cipulot/mx65x/keymaps/65_ansi_blocker_tsangan/keymap.c new file mode 100644 index 0000000000..84d7ad06be --- /dev/null +++ b/keyboards/cipulot/mx65x/keymaps/65_ansi_blocker_tsangan/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2025 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker_tsangan( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER, 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, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_65_ansi_blocker_tsangan( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, MO(2), _______, _______, _______), + + [2] = LAYOUT_65_ansi_blocker_tsangan( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(_______, _______) }, + [2] = { ENCODER_CCW_CW(_______, _______) } +}; +#endif +// clang-format on diff --git a/keyboards/cipulot/mx65x/keymaps/65_ansi_blocker_tsangan/rules.mk b/keyboards/cipulot/mx65x/keymaps/65_ansi_blocker_tsangan/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/cipulot/mx65x/keymaps/65_ansi_blocker_tsangan/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/cipulot/mx65x/keymaps/65_iso_blocker/keymap.c b/keyboards/cipulot/mx65x/keymaps/65_iso_blocker/keymap.c new file mode 100644 index 0000000000..9e7016bfb6 --- /dev/null +++ b/keyboards/cipulot/mx65x/keymaps/65_iso_blocker/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2025 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_iso_blocker( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_ENTER, 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, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_65_iso_blocker( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, MO(2), _______, _______, _______), + + [2] = LAYOUT_65_iso_blocker( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(_______, _______) }, + [2] = { ENCODER_CCW_CW(_______, _______) } +}; +#endif +// clang-format on diff --git a/keyboards/cipulot/mx65x/keymaps/65_iso_blocker/rules.mk b/keyboards/cipulot/mx65x/keymaps/65_iso_blocker/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/cipulot/mx65x/keymaps/65_iso_blocker/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/cipulot/mx65x/keymaps/65_iso_blocker_tsangan/keymap.c b/keyboards/cipulot/mx65x/keymaps/65_iso_blocker_tsangan/keymap.c new file mode 100644 index 0000000000..a18cc4fe4e --- /dev/null +++ b/keyboards/cipulot/mx65x/keymaps/65_iso_blocker_tsangan/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2025 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_iso_blocker_tsangan( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_ENTER, 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, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_65_iso_blocker_tsangan( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, MO(2), _______, _______, _______), + + [2] = LAYOUT_65_iso_blocker_tsangan( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(_______, _______) }, + [2] = { ENCODER_CCW_CW(_______, _______) } +}; +#endif +// clang-format on diff --git a/keyboards/cipulot/mx65x/keymaps/65_iso_blocker_tsangan/rules.mk b/keyboards/cipulot/mx65x/keymaps/65_iso_blocker_tsangan/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/cipulot/mx65x/keymaps/65_iso_blocker_tsangan/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/cipulot/mx65x/keymaps/default/keymap.c b/keyboards/cipulot/mx65x/keymaps/default/keymap.c new file mode 100644 index 0000000000..e0f5ea12cb --- /dev/null +++ b/keyboards/cipulot/mx65x/keymaps/default/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2025 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, 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, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_all( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______), + + [2] = LAYOUT_all( + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(_______, _______) }, + [2] = { ENCODER_CCW_CW(_______, _______) } +}; +#endif +// clang-format on diff --git a/keyboards/cipulot/mx65x/keymaps/default/rules.mk b/keyboards/cipulot/mx65x/keymaps/default/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/cipulot/mx65x/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/cipulot/mx65x/mcuconf.h b/keyboards/cipulot/mx65x/mcuconf.h new file mode 100644 index 0000000000..b939e65395 --- /dev/null +++ b/keyboards/cipulot/mx65x/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2025 Cipulot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/keyboards/cipulot/mx65x/readme.md b/keyboards/cipulot/mx65x/readme.md new file mode 100644 index 0000000000..e6b07fc03b --- /dev/null +++ b/keyboards/cipulot/mx65x/readme.md @@ -0,0 +1,36 @@ +# MX65X + +A 65% solder and hotswap PCB. + +Solder + +![MX65X Solder](https://i.imgur.com/M2lyPuo.png) + +Hotswap + +![MX65X Hotswap](https://i.imgur.com/18DnNrw.png) + + +* Keyboard Maintainer: [cipulot](https://github.com/cipulot) +* Hardware Supported: MX65X Solder and Hotswap +* Hardware Availability: [Clever Keebs](https://cleverkeebs.com) + +Make example for this keyboard (after setting up your build environment): + + make cipulot/mx65x/solder:default + make cipulot/mx65x/hotswap:default + +Flashing example for this keyboard: + + make cipulot/mx65x/solder:default:flash + make cipulot/mx65x/hotswap: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: + +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is configured. +* **Physical reset button**: Long press the reset button soldered on the PCB. +* **Bootmagic reset**: Hold down the top left key and plug in the controller. diff --git a/keyboards/cipulot/mx65x/solder/keyboard.json b/keyboards/cipulot/mx65x/solder/keyboard.json new file mode 100644 index 0000000000..119397bef0 --- /dev/null +++ b/keyboards/cipulot/mx65x/solder/keyboard.json @@ -0,0 +1,6 @@ +{ + "keyboard_name": "MX65X Solder", + "usb": { + "pid": "0x6BD7" + } +} diff --git a/keyboards/cipulot/mx65x/solder/rules.mk b/keyboards/cipulot/mx65x/solder/rules.mk new file mode 100644 index 0000000000..0ab54aaaf7 --- /dev/null +++ b/keyboards/cipulot/mx65x/solder/rules.mk @@ -0,0 +1,2 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF From f1b2449ce577f83218f4050fe77036cd408e9738 Mon Sep 17 00:00:00 2001 From: ASHIJA <24617794+ASHIJANKEN@users.noreply.github.com> Date: Tue, 8 Jul 2025 15:00:20 +0900 Subject: [PATCH 059/167] [Keyboard] Add Slimorta (#25348) * Add Slimorta * Update readme.md * Apply suggestions from code review for #25348 Co-authored-by: jack --------- Co-authored-by: jack --- keyboards/slimorta/keyboard.json | 86 +++++++++++++++++++++ keyboards/slimorta/keymaps/default/keymap.c | 27 +++++++ keyboards/slimorta/readme.md | 23 ++++++ 3 files changed, 136 insertions(+) create mode 100644 keyboards/slimorta/keyboard.json create mode 100644 keyboards/slimorta/keymaps/default/keymap.c create mode 100644 keyboards/slimorta/readme.md diff --git a/keyboards/slimorta/keyboard.json b/keyboards/slimorta/keyboard.json new file mode 100644 index 0000000000..ecf3078f4e --- /dev/null +++ b/keyboards/slimorta/keyboard.json @@ -0,0 +1,86 @@ +{ + "manufacturer": "ASHIJANKEN", + "keyboard_name": "Slimorta", + "maintainer": "ASHIJANKEN", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "cols": ["D1", "D0", "D4", "C6", "D7", "E6"], + "rows": ["B4", "B5", "F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6"] + }, + "url": "https://github.com/ASHIJANKEN/Slimorta", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x4153" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [2, 0], "x": 0, "y": 0}, + {"matrix": [2, 1], "x": 1, "y": 0}, + {"matrix": [2, 2], "x": 2, "y": 0}, + {"matrix": [2, 3], "x": 3, "y": 0}, + {"matrix": [2, 4], "x": 4, "y": 0}, + {"matrix": [2, 5], "x": 5, "y": 0}, + {"matrix": [0, 5], "x": 6, "y": 0}, + {"matrix": [0, 4], "x": 7, "y": 0}, + {"matrix": [0, 3], "x": 8, "y": 0}, + {"matrix": [0, 2], "x": 9, "y": 0}, + {"matrix": [0, 1], "x": 10, "y": 0}, + {"matrix": [0, 0], "x": 11, "y": 0}, + {"matrix": [3, 0], "x": 0, "y": 1}, + {"matrix": [3, 1], "x": 1, "y": 1}, + {"matrix": [3, 2], "x": 2, "y": 1}, + {"matrix": [3, 3], "x": 3, "y": 1}, + {"matrix": [3, 4], "x": 4, "y": 1}, + {"matrix": [3, 5], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 4], "x": 7, "y": 1}, + {"matrix": [1, 3], "x": 8, "y": 1}, + {"matrix": [1, 2], "x": 9, "y": 1}, + {"matrix": [1, 1], "x": 10, "y": 1}, + {"matrix": [1, 0], "x": 11, "y": 1}, + {"matrix": [4, 0], "x": 0, "y": 2}, + {"matrix": [4, 1], "x": 1, "y": 2}, + {"matrix": [4, 2], "x": 2, "y": 2}, + {"matrix": [4, 3], "x": 3, "y": 2}, + {"matrix": [4, 4], "x": 4, "y": 2}, + {"matrix": [4, 5], "x": 5, "y": 2}, + {"matrix": [7, 5], "x": 6, "y": 2}, + {"matrix": [7, 4], "x": 7, "y": 2}, + {"matrix": [7, 3], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 1], "x": 10, "y": 2}, + {"matrix": [7, 0], "x": 11, "y": 2}, + {"matrix": [5, 0], "x": 0, "y": 3}, + {"matrix": [5, 1], "x": 1, "y": 3}, + {"matrix": [5, 2], "x": 2, "y": 3}, + {"matrix": [5, 3], "x": 3, "y": 3}, + {"matrix": [5, 4], "x": 4, "y": 3}, + {"matrix": [5, 5], "x": 5, "y": 3}, + {"matrix": [8, 5], "x": 6, "y": 3}, + {"matrix": [8, 4], "x": 7, "y": 3}, + {"matrix": [8, 3], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 1], "x": 10, "y": 3}, + {"matrix": [8, 0], "x": 11, "y": 3}, + {"matrix": [6, 1], "x": 0.5, "y": 4}, + {"matrix": [6, 2], "x": 1.5, "y": 4}, + {"matrix": [6, 3], "x": 2.5, "y": 4}, + {"matrix": [6, 4], "x": 3.5, "y": 4, "w": 1.25}, + {"matrix": [6, 5], "x": 4.75, "y": 4, "w": 1.25}, + {"matrix": [9, 5], "x": 6, "y": 4, "w": 1.25}, + {"matrix": [9, 4], "x": 7.25, "y": 4, "w": 1.25}, + {"matrix": [9, 3], "x": 8.5, "y": 4}, + {"matrix": [9, 2], "x": 9.5, "y": 4}, + {"matrix": [9, 1], "x": 10.5, "y": 4} + ] + } + } +} diff --git a/keyboards/slimorta/keymaps/default/keymap.c b/keyboards/slimorta/keymaps/default/keymap.c new file mode 100644 index 0000000000..44b10cc3c8 --- /dev/null +++ b/keyboards/slimorta/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2025 ASHIJANKEN (@ASHIJANKEN) +// 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 │ BS │ + * ├─────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼─────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ - │ + * ├─────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼─────┤ + * │ Ctrl│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ + * ├─────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼─────┤ + * │Shift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift│ + * └──┬──┴─┬─┴─┬─┴─┬─┴──┬┴───┼───┴┬──┴─┬─┴─┬─┴──┬┴───┬─┘ + * │LNG2|Alt│GUI│ │ SPC│ Ent│ │ │Ctrl│LNG1│ + * └────┴───┴───┴────┴────┴────┴────┴───┴────┴────┘ + */ + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LNG2, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_ENT, KC_NO, KC_NO, KC_LCTL, KC_LNG1 + ) +}; diff --git a/keyboards/slimorta/readme.md b/keyboards/slimorta/readme.md new file mode 100644 index 0000000000..b6ae191db0 --- /dev/null +++ b/keyboards/slimorta/readme.md @@ -0,0 +1,23 @@ +# Slimorta + +![slimorta](https://i.imgur.com/edsao2S.jpeg) + +Slimorta is a slim and portable ortholinear keyboard. + +* Keyboard Maintainer: [ASHIJANKEN](https://github.com/ASHIJANKEN) +* Hardware Supported: Slimorta PCB, ProMicro +* Hardware Availability: [PCB & Case Data](https://github.com/ASHIJANKEN/Slimorta) + +Make example for this keyboard (after setting up your build environment): + + make slimorta:default + +Flashing example for this keyboard: + + make slimorta: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**: Press the button on the PCB twice briefly. From 8a47896263d48d1bb4636225b5cc0db4a8aee077 Mon Sep 17 00:00:00 2001 From: JhaKob Date: Tue, 8 Jul 2025 06:03:12 +0000 Subject: [PATCH 060/167] [Keyboard] Add Monsgeek M2 (#25387) * Adding Monsgeek M2 keyboard * Update readme.md * Switch tab -> space * Addressing PR comments. - Removing values that are set to defaults - Updating readme verbiage - Using host nkro instead of usb force_nkro --- keyboards/monsgeek/m2/config.h | 35 +++ keyboards/monsgeek/m2/halconf.h | 21 ++ keyboards/monsgeek/m2/keyboard.json | 279 ++++++++++++++++++ .../monsgeek/m2/keymaps/default/keymap.c | 80 +++++ keyboards/monsgeek/m2/m2.c | 142 +++++++++ keyboards/monsgeek/m2/mcuconf.h | 24 ++ keyboards/monsgeek/m2/readme.md | 25 ++ 7 files changed, 606 insertions(+) create mode 100644 keyboards/monsgeek/m2/config.h create mode 100644 keyboards/monsgeek/m2/halconf.h create mode 100644 keyboards/monsgeek/m2/keyboard.json create mode 100644 keyboards/monsgeek/m2/keymaps/default/keymap.c create mode 100644 keyboards/monsgeek/m2/m2.c create mode 100644 keyboards/monsgeek/m2/mcuconf.h create mode 100644 keyboards/monsgeek/m2/readme.md diff --git a/keyboards/monsgeek/m2/config.h b/keyboards/monsgeek/m2/config.h new file mode 100644 index 0000000000..402c3e016e --- /dev/null +++ b/keyboards/monsgeek/m2/config.h @@ -0,0 +1,35 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * This 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 + +/* LED Indicators */ +#define LED_WIN_LOCK_PIN C11 + +/* SPI Config for spi flash*/ +#define SPI_DRIVER SPIDQ +#define SPI_SCK_PIN B3 +#define SPI_MOSI_PIN B5 +#define SPI_MISO_PIN B4 +#define SPI_MOSI_PAL_MODE 5 + +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12 + +/* I2C Config for LED Driver */ +#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND +#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO +#define I2C1_CLOCK_SPEED 400000 /* 400000 */ +#define I2C1_OPMODE OPMODE_I2C diff --git a/keyboards/monsgeek/m2/halconf.h b/keyboards/monsgeek/m2/halconf.h new file mode 100644 index 0000000000..b8ebdb3369 --- /dev/null +++ b/keyboards/monsgeek/m2/halconf.h @@ -0,0 +1,21 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/monsgeek/m2/keyboard.json b/keyboards/monsgeek/m2/keyboard.json new file mode 100644 index 0000000000..be2fc7358a --- /dev/null +++ b/keyboards/monsgeek/m2/keyboard.json @@ -0,0 +1,279 @@ +{ + "manufacturer": "MonsGeek", + "keyboard_name": "M2", + "maintainer": "jonylee@hfd", + "bootloader": "wb32-dfu", + "diode_direction": "ROW2COL", + "dynamic_keymap": { + "layer_count": 6 + }, + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "backing_size": 8192, + "driver": "spi_flash" + } + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "host": { + "default": { + "nkro": true + } + }, + "indicators": { + "caps_lock": "A15", + "num_lock": "C10" + }, + "matrix_pins": { + "cols": ["C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B10", "B11", "B12", "B13", "B14"], + "rows": ["B15", "C6", "C7", "C8", "C9", "A8"] + }, + "processor": "WB32FQ95", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "rgb_matrix": { + "animations": { + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "dual_beacon": true, + "multisplash": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "raindrops": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_simple": true, + "typing_heatmap": true + }, + "driver": "snled27351", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [0, 1], "x": 13, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 26, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 39, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 52, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 65, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 79, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 92, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 105, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 118, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 131, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 144, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 158, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 171, "y": 0, "flags": 1}, + {"matrix": [0, 17], "x": 184, "y": 0, "flags": 1}, + {"matrix": [0, 18], "x": 197, "y": 0, "flags": 1}, + {"matrix": [0, 19], "x": 210, "y": 0, "flags": 1}, + {"matrix": [0, 20], "x": 224, "y": 0, "flags": 1}, + {"matrix": [1, 0], "x": 0, "y": 12, "flags": 4}, + {"matrix": [1, 1], "x": 13, "y": 12, "flags": 4}, + {"matrix": [1, 2], "x": 26, "y": 12, "flags": 4}, + {"matrix": [1, 3], "x": 39, "y": 12, "flags": 4}, + {"matrix": [1, 4], "x": 52, "y": 12, "flags": 4}, + {"matrix": [1, 5], "x": 65, "y": 12, "flags": 4}, + {"matrix": [1, 6], "x": 79, "y": 12, "flags": 4}, + {"matrix": [1, 7], "x": 92, "y": 12, "flags": 4}, + {"matrix": [1, 8], "x": 105, "y": 12, "flags": 4}, + {"matrix": [1, 9], "x": 118, "y": 12, "flags": 4}, + {"matrix": [1, 10], "x": 131, "y": 12, "flags": 4}, + {"matrix": [1, 11], "x": 144, "y": 12, "flags": 4}, + {"matrix": [1, 12], "x": 158, "y": 12, "flags": 4}, + {"matrix": [1, 13], "x": 171, "y": 12, "flags": 1}, + {"matrix": [1, 17], "x": 184, "y": 12, "flags": 4}, + {"matrix": [1, 18], "x": 197, "y": 12, "flags": 4}, + {"matrix": [1, 19], "x": 210, "y": 12, "flags": 4}, + {"matrix": [1, 20], "x": 224, "y": 12, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 25, "flags": 1}, + {"matrix": [2, 1], "x": 13, "y": 25, "flags": 4}, + {"matrix": [2, 2], "x": 26, "y": 25, "flags": 4}, + {"matrix": [2, 3], "x": 39, "y": 25, "flags": 4}, + {"matrix": [2, 4], "x": 52, "y": 25, "flags": 4}, + {"matrix": [2, 5], "x": 65, "y": 25, "flags": 4}, + {"matrix": [2, 6], "x": 79, "y": 25, "flags": 4}, + {"matrix": [2, 7], "x": 92, "y": 25, "flags": 4}, + {"matrix": [2, 8], "x": 105, "y": 25, "flags": 4}, + {"matrix": [2, 9], "x": 118, "y": 25, "flags": 4}, + {"matrix": [2, 10], "x": 131, "y": 25, "flags": 4}, + {"matrix": [2, 11], "x": 144, "y": 25, "flags": 4}, + {"matrix": [2, 12], "x": 158, "y": 25, "flags": 4}, + {"matrix": [2, 13], "x": 171, "y": 25, "flags": 1}, + {"matrix": [2, 17], "x": 184, "y": 25, "flags": 4}, + {"matrix": [2, 18], "x": 197, "y": 25, "flags": 4}, + {"matrix": [2, 19], "x": 210, "y": 25, "flags": 4}, + {"matrix": [2, 20], "x": 224, "y": 25, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 38, "flags": 1}, + {"matrix": [3, 1], "x": 13, "y": 38, "flags": 4}, + {"matrix": [3, 2], "x": 26, "y": 38, "flags": 4}, + {"matrix": [3, 3], "x": 39, "y": 38, "flags": 4}, + {"matrix": [3, 4], "x": 52, "y": 38, "flags": 4}, + {"matrix": [3, 5], "x": 65, "y": 38, "flags": 4}, + {"matrix": [3, 6], "x": 79, "y": 38, "flags": 4}, + {"matrix": [3, 7], "x": 92, "y": 38, "flags": 4}, + {"matrix": [3, 8], "x": 105, "y": 38, "flags": 4}, + {"matrix": [3, 9], "x": 118, "y": 38, "flags": 4}, + {"matrix": [3, 10], "x": 131, "y": 38, "flags": 4}, + {"matrix": [3, 11], "x": 144, "y": 38, "flags": 4}, + {"matrix": [3, 13], "x": 163, "y": 38, "flags": 1}, + {"matrix": [3, 17], "x": 184, "y": 38, "flags": 4}, + {"matrix": [3, 18], "x": 197, "y": 38, "flags": 4}, + {"matrix": [3, 19], "x": 210, "y": 38, "flags": 4}, + {"matrix": [4, 0], "x": 0, "y": 51, "flags": 1}, + {"matrix": [4, 1], "x": 26, "y": 51, "flags": 4}, + {"matrix": [4, 2], "x": 39, "y": 51, "flags": 4}, + {"matrix": [4, 3], "x": 52, "y": 51, "flags": 4}, + {"matrix": [4, 4], "x": 65, "y": 51, "flags": 4}, + {"matrix": [4, 5], "x": 79, "y": 51, "flags": 4}, + {"matrix": [4, 6], "x": 92, "y": 51, "flags": 4}, + {"matrix": [4, 7], "x": 105, "y": 51, "flags": 4}, + {"matrix": [4, 8], "x": 118, "y": 51, "flags": 4}, + {"matrix": [4, 9], "x": 131, "y": 51, "flags": 4}, + {"matrix": [4, 10], "x": 144, "y": 51, "flags": 4}, + {"matrix": [4, 13], "x": 158, "y": 51, "flags": 1}, + {"matrix": [4, 15], "x": 171, "y": 51, "flags": 1}, + {"matrix": [4, 17], "x": 184, "y": 51, "flags": 4}, + {"matrix": [4, 18], "x": 197, "y": 51, "flags": 4}, + {"matrix": [4, 19], "x": 210, "y": 51, "flags": 4}, + {"matrix": [4, 20], "x": 224, "y": 51, "flags": 1}, + {"matrix": [5, 0], "x": 0, "y": 64, "flags": 1}, + {"matrix": [5, 1], "x": 18, "y": 64, "flags": 1}, + {"matrix": [5, 2], "x": 37, "y": 64, "flags": 1}, + {"matrix": [5, 5], "x": 92, "y": 64, "flags": 4}, + {"matrix": [5, 9], "x": 130, "y": 64, "flags": 1}, + {"matrix": [5, 10], "x": 145, "y": 64, "flags": 1}, + {"matrix": [5, 11], "x": 158, "y": 64, "flags": 1}, + {"matrix": [5, 15], "x": 171, "y": 64, "flags": 1}, + {"matrix": [5, 16], "x": 184, "y": 64, "flags": 1}, + {"matrix": [5, 18], "x": 197, "y": 64, "flags": 4}, + {"matrix": [5, 19], "x": 210, "y": 64, "flags": 4} + ], + "max_brightness": 200, + "sleep": true, + "val_steps": 20 + }, + "usb": { + "device_version": "1.0.4", + "pid": "0x0008", + "suspend_wakeup_delay": 400, + "vid": "0xFFFE" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0}, + {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0}, + {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 0}, + {"label": "PrtSc", "matrix": [0, 17], "x": 15.5, "y": 0}, + {"label": "Home", "matrix": [0, 18], "x": 16.5, "y": 0}, + {"label": "Pgup", "matrix": [0, 19], "x": 17.5, "y": 0}, + {"label": "Pgdn", "matrix": [0, 20], "x": 18.5, "y": 0}, + {"label": "~", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "!", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "@", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "#", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "$", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "%", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "^", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "&", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "*", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "(", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": ")", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label": "_", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label": "+", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label": "Bksp", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"label": "Numlock", "matrix": [1, 17], "x": 15.5, "y": 1.25}, + {"label": "/", "matrix": [1, 18], "x": 16.5, "y": 1.25}, + {"label": "*", "matrix": [1, 19], "x": 17.5, "y": 1.25}, + {"label": "-", "matrix": [1, 20], "x": 18.5, "y": 1.25}, + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label": "{", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label": "}", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label": "|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"label": "7", "matrix": [2, 17], "x": 15.5, "y": 2.25}, + {"label": "8", "matrix": [2, 18], "x": 16.5, "y": 2.25}, + {"label": "9", "matrix": [2, 19], "x": 17.5, "y": 2.25}, + {"label": "+", "matrix": [2, 20], "x": 18.5, "y": 2.25, "h": 2}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label": ":", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"label": "4", "matrix": [3, 17], "x": 15.5, "y": 3.25}, + {"label": "5", "matrix": [3, 18], "x": 16.5, "y": 3.25}, + {"label": "6", "matrix": [3, 19], "x": 17.5, "y": 3.25}, + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label": "Z", "matrix": [4, 1], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 2], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 3], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 6], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 7], "x": 8.25, "y": 4.25}, + {"label": "<", "matrix": [4, 8], "x": 9.25, "y": 4.25}, + {"label": ">", "matrix": [4, 9], "x": 10.25, "y": 4.25}, + {"label": "?", "matrix": [4, 10], "x": 11.25, "y": 4.25}, + {"label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75}, + {"label": "Up", "matrix": [4, 15], "x": 14.25, "y": 4.5}, + {"label": "1", "matrix": [4, 17], "x": 15.5, "y": 4.25}, + {"label": "2", "matrix": [4, 18], "x": 16.5, "y": 4.25}, + {"label": "3", "matrix": [4, 19], "x": 17.5, "y": 4.25}, + {"label": "Enter", "matrix": [4, 20], "x": 18.5, "y": 4.25, "h": 2}, + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"label": "Space", "matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25}, + {"label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.5}, + {"label": "Fn", "matrix": [5, 10], "x": 11.5, "y": 5.25, "w": 1.5}, + {"label": "Left", "matrix": [5, 11], "x": 13.25, "y": 5.5}, + {"label": "Down", "matrix": [5, 15], "x": 14.25, "y": 5.5}, + {"label": "Right", "matrix": [5, 16], "x": 15.25, "y": 5.5}, + {"label": "0", "matrix": [5, 18], "x": 16.5, "y": 5.25}, + {"label": ".", "matrix": [5, 19], "x": 17.5, "y": 5.25} + ] + } + } +} diff --git a/keyboards/monsgeek/m2/keymaps/default/keymap.c b/keyboards/monsgeek/m2/keymaps/default/keymap.c new file mode 100644 index 0000000000..5515c3e6d3 --- /dev/null +++ b/keyboards/monsgeek/m2/keymaps/default/keymap.c @@ -0,0 +1,80 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// clang-format off +enum __layers { + WIN_B, + WIN_WASD, + WIN_FN, + MAC_B, + MAC_WASD, + MAC_FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [WIN_B] = LAYOUT( /* Base */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, + 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, + 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_P7, KC_P8, KC_P9, KC_PPLS, + 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_P4, KC_P5, KC_P6, + 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_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_LEFT, KC_DOWN,KC_RGHT, KC_P0, KC_PDOT), + + [WIN_WASD] = LAYOUT( /* WASD */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, _______, _______, _______, _______, + _______, _______, _______, _______, _______, MO(WIN_FN), KC_A, KC_S, KC_D, _______, _______), + + + [WIN_FN] = LAYOUT( /* FN */ + _______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_SPDD, RM_SPDU, _______, _______, _______, _______, _______, + _______, _______, TG(WIN_WASD),_______,_______,_______,_______,_______, KC_INS, DF(MAC_B),KC_PSCR, _______, _______, RM_NEXT, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG, _______, _______, RM_HUEU, _______, _______, _______, + _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RM_VALU, _______, _______, _______, _______, + _______, GU_TOGG, _______, _______, _______, _______, RM_SATD, RM_VALD, RM_SATU, _______, _______), + + [MAC_B] = LAYOUT( /* Base */ + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, + 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, + 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_P7, KC_P8, KC_P9, KC_PPLS, + 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_P4, KC_P5, KC_P6, + 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_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT), + + [MAC_WASD] = LAYOUT( /* WASD */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, _______, _______, _______, _______, + _______, _______, _______, _______, _______, MO(MAC_FN), KC_A, KC_S, KC_D, _______, _______), + + [MAC_FN] = LAYOUT( /* FN */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_SPDD, RM_SPDU, _______, _______, _______, _______, _______, + _______, _______, TG(MAC_WASD),_______,_______,_______,_______,_______, KC_INS, DF(WIN_B),KC_PSCR, _______, _______, RM_NEXT, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG, _______, _______, RM_HUEU, _______, _______, _______, + _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RM_VALU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RM_SATD, RM_VALD, RM_SATU, _______, _______) + +}; diff --git a/keyboards/monsgeek/m2/m2.c b/keyboards/monsgeek/m2/m2.c new file mode 100644 index 0000000000..289c4b4e65 --- /dev/null +++ b/keyboards/monsgeek/m2/m2.c @@ -0,0 +1,142 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +#ifdef RGB_MATRIX_ENABLE +const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {1, CB1_CA1, CB2_CA1, CB3_CA1}, + {1, CB1_CA2, CB2_CA2, CB3_CA2}, + {1, CB1_CA3, CB2_CA3, CB3_CA3}, + {1, CB1_CA4, CB2_CA4, CB3_CA4}, + {1, CB1_CA5, CB2_CA5, CB3_CA5}, + {1, CB1_CA6, CB2_CA6, CB3_CA6}, + {1, CB1_CA7, CB2_CA7, CB3_CA7}, + {1, CB1_CA8, CB2_CA8, CB3_CA8}, + {1, CB1_CA9, CB2_CA9, CB3_CA9}, + {1, CB1_CA10, CB2_CA10, CB3_CA10}, + {1, CB1_CA11, CB2_CA11, CB3_CA11}, + {1, CB1_CA12, CB2_CA12, CB3_CA12}, + {1, CB1_CA13, CB2_CA13, CB3_CA13}, + {1, CB1_CA14, CB2_CA14, CB3_CA14}, + {1, CB4_CA11, CB5_CA11, CB6_CA11}, + {1, CB4_CA12, CB5_CA12, CB6_CA12}, + {1, CB4_CA13, CB5_CA13, CB6_CA13}, + {1, CB4_CA14, CB5_CA14, CB6_CA14}, + + {0, CB1_CA1, CB2_CA1, CB3_CA1}, + {0, CB1_CA2, CB2_CA2, CB3_CA2}, + {0, CB1_CA3, CB2_CA3, CB3_CA3}, + {0, CB1_CA4, CB2_CA4, CB3_CA4}, + {0, CB1_CA5, CB2_CA5, CB3_CA5}, + {0, CB1_CA6, CB2_CA6, CB3_CA6}, + {0, CB1_CA7, CB2_CA7, CB3_CA7}, + {0, CB1_CA8, CB2_CA8, CB3_CA8}, + {0, CB1_CA9, CB2_CA9, CB3_CA9}, + {0, CB1_CA10, CB2_CA10, CB3_CA10}, + {0, CB1_CA11, CB2_CA11, CB3_CA11}, + {0, CB1_CA12, CB2_CA12, CB3_CA12}, + {0, CB1_CA13, CB2_CA13, CB3_CA13}, + {0, CB1_CA14, CB2_CA14, CB3_CA14}, + {1, CB4_CA4, CB5_CA4, CB6_CA4}, + {1, CB4_CA5, CB5_CA5, CB6_CA5}, + {1, CB4_CA6, CB5_CA6, CB6_CA6}, + {1, CB4_CA7, CB5_CA7, CB6_CA7}, + + {0, CB4_CA1, CB5_CA1, CB6_CA1}, + {0, CB4_CA2, CB5_CA2, CB6_CA2}, + {0, CB4_CA3, CB5_CA3, CB6_CA3}, + {0, CB4_CA4, CB5_CA4, CB6_CA4}, + {0, CB4_CA5, CB5_CA5, CB6_CA5}, + {0, CB4_CA6, CB5_CA6, CB6_CA6}, + {0, CB4_CA7, CB5_CA7, CB6_CA7}, + {0, CB4_CA8, CB5_CA8, CB6_CA8}, + {0, CB4_CA9, CB5_CA9, CB6_CA9}, + {0, CB4_CA10, CB5_CA10, CB6_CA10}, + {0, CB4_CA11, CB5_CA11, CB6_CA11}, + {0, CB4_CA12, CB5_CA12, CB6_CA12}, + {0, CB4_CA13, CB5_CA13, CB6_CA13}, + {0, CB4_CA14, CB5_CA14, CB6_CA14}, + {1, CB4_CA8, CB5_CA8, CB6_CA8}, + {1, CB4_CA9, CB5_CA9, CB6_CA9}, + {1, CB4_CA10, CB5_CA10, CB6_CA10}, + {1, CB7_CA7, CB8_CA7, CB9_CA7}, + + {0, CB7_CA1, CB8_CA1, CB9_CA1}, + {0, CB7_CA2, CB8_CA2, CB9_CA2}, + {0, CB7_CA3, CB8_CA3, CB9_CA3}, + {0, CB7_CA4, CB8_CA4, CB9_CA4}, + {0, CB7_CA5, CB8_CA5, CB9_CA5}, + {0, CB7_CA6, CB8_CA6, CB9_CA6}, + {0, CB7_CA7, CB8_CA7, CB9_CA7}, + {0, CB7_CA8, CB8_CA8, CB9_CA8}, + {0, CB7_CA9, CB8_CA9, CB9_CA9}, + {0, CB7_CA10, CB8_CA10, CB9_CA10}, + {0, CB7_CA11, CB8_CA11, CB9_CA11}, + {0, CB7_CA12, CB8_CA12, CB9_CA12}, + {0, CB7_CA13, CB8_CA13, CB9_CA13}, + {1, CB7_CA4, CB8_CA4, CB9_CA4}, + {1, CB7_CA5, CB8_CA5, CB9_CA5}, + {1, CB7_CA6, CB8_CA6, CB9_CA6}, + + {0, CB10_CA1, CB11_CA1, CB12_CA1}, + {0, CB10_CA2, CB11_CA2, CB12_CA2}, + {0, CB10_CA3, CB11_CA3, CB12_CA3}, + {0, CB10_CA4, CB11_CA4, CB12_CA4}, + {0, CB10_CA5, CB11_CA5, CB12_CA5}, + {0, CB10_CA6, CB11_CA6, CB12_CA6}, + {0, CB10_CA7, CB11_CA7, CB12_CA7}, + {0, CB10_CA8, CB11_CA8, CB12_CA8}, + {0, CB10_CA9, CB11_CA9, CB12_CA9}, + {0, CB10_CA10, CB11_CA10, CB12_CA10}, + {0, CB10_CA11, CB11_CA11, CB12_CA11}, + {0, CB10_CA12, CB11_CA12, CB12_CA12}, + {1, CB10_CA4, CB11_CA4, CB12_CA4}, + {1, CB10_CA7, CB11_CA7, CB12_CA7}, + {1, CB10_CA8, CB11_CA8, CB12_CA8}, + {1, CB10_CA9, CB11_CA9, CB12_CA9}, + {1, CB10_CA10, CB11_CA10, CB12_CA10}, + + {0, CB10_CA13, CB11_CA13, CB12_CA13}, + {0, CB10_CA14, CB11_CA14, CB12_CA14}, + {0, CB10_CA15, CB11_CA15, CB12_CA15}, + {0, CB10_CA16, CB11_CA16, CB12_CA16}, + {0, CB7_CA14, CB8_CA14, CB9_CA14}, + {0, CB7_CA15, CB8_CA15, CB9_CA15}, + {0, CB7_CA16, CB8_CA16, CB9_CA16}, + {1, CB10_CA2, CB11_CA2, CB12_CA2}, + {1, CB10_CA3, CB11_CA3, CB12_CA3}, + {1, CB10_CA5, CB11_CA5, CB12_CA5}, + {1, CB10_CA6, CB11_CA6, CB12_CA6}, +}; +#endif //RGB_MATRIX_ENABLE + +void keyboard_pre_init_kb(void) { + gpio_set_pin_output(LED_WIN_LOCK_PIN); // LED3 Win Lock + gpio_write_pin_low(LED_WIN_LOCK_PIN); + + keyboard_pre_init_user(); +} + +void housekeeping_task_kb(void) { + gpio_write_pin(LED_WIN_LOCK_PIN, keymap_config.no_gui); +} diff --git a/keyboards/monsgeek/m2/mcuconf.h b/keyboards/monsgeek/m2/mcuconf.h new file mode 100644 index 0000000000..e2884f3828 --- /dev/null +++ b/keyboards/monsgeek/m2/mcuconf.h @@ -0,0 +1,24 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include_next + +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE + +#undef WB32_I2C_USE_I2C1 +#define WB32_I2C_USE_I2C1 TRUE diff --git a/keyboards/monsgeek/m2/readme.md b/keyboards/monsgeek/m2/readme.md new file mode 100644 index 0000000000..886103316f --- /dev/null +++ b/keyboards/monsgeek/m2/readme.md @@ -0,0 +1,25 @@ +# MonsGeek M2 +![M2](https://i.imgur.com/kv9ChJn.png) + +A customizable 95% keyboard + +* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986) +* Hardware Supported: MonsGeek M2 PCB +* Hardware Availability: [monsgeek](https://www.monsgeek.com/product/m2/) + +Make example for this keyboard (after setting up your build environment): + + make monsgeek/m2:default + +Flashing example for this keyboard: + + make monsgeek/m2: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 2 ways: + +* **Bootmagic reset**: Hold down the top left key (commonly programmed as *Esc*) while plugging in the keyboard. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From c3b3f097022f3472e9fc7b4442803032b93c21e0 Mon Sep 17 00:00:00 2001 From: jack Date: Tue, 8 Jul 2025 13:17:33 -0600 Subject: [PATCH 061/167] [Docs] Tidy up keyboard guidelines (#25461) * Initial * Grammar --- docs/hardware_keyboard_guidelines.md | 70 +++++++++++++--------------- 1 file changed, 33 insertions(+), 37 deletions(-) diff --git a/docs/hardware_keyboard_guidelines.md b/docs/hardware_keyboard_guidelines.md index 7f17c46748..7e88ff231d 100644 --- a/docs/hardware_keyboard_guidelines.md +++ b/docs/hardware_keyboard_guidelines.md @@ -44,7 +44,11 @@ QMK uses sub-folders both for organization and to share code between revisions o qmk_firmware/keyboards/top_folder/sub_1/sub_2/sub_3/sub_4 ``` -If a sub-folder has a `rules.mk` file it will be considered a compilable keyboard. It will be available in QMK Configurator and tested with `make all`. If you are using a folder to organize several keyboards from the same maker you should not have a `rules.mk` file. +If a sub-folder has a `keyboard.json` file it will be considered a compilable keyboard. It will be available in QMK Configurator and tested with `make all`. If you are using a folder to organize several keyboards from the same maker you should not have a `keyboard.json` file. + +::: tip +When configuring a keyboard with multiple revisions (like the `clueboard/66` example below), an `info.json` file at the top keyboard level (eg. `clueboard/66`) should be used for configuration shared between revisions. Then `keyboard.json` in each revision directory containing revision-specific configuration, and indicating a buildable keyboard. +::: Example: @@ -52,19 +56,19 @@ Clueboard uses sub-folders for both purposes, organization and keyboard revision * [`qmk_firmware`](https://github.com/qmk/qmk_firmware/tree/master) * [`keyboards`](https://github.com/qmk/qmk_firmware/tree/master/keyboards) - * [`clueboard`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard) ← This is the organization folder, there's no `rules.mk` file - * [`60`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/60) ← This is a compilable keyboard, it has a `rules.mk` file - * [`66`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66) ← This is also compilable- it uses `DEFAULT_FOLDER` to specify `rev3` as the default revision + * [`clueboard`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard) ← This is the organization folder, there's no `keyboard.json` file + * [`60`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/60) ← This is a compilable keyboard - it has a `keyboard.json` file + * [`66`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66) ← This is not a compilable keyboard - a revision must be specified * [`rev1`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev1) ← compilable: `make clueboard/66/rev1` * [`rev2`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev2) ← compilable: `make clueboard/66/rev2` - * [`rev3`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev3) ← compilable: `make clueboard/66/rev3` or `make clueboard/66` + * [`rev3`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev3) ← compilable: `make clueboard/66/rev3` ## Keyboard Folder Structure -Your keyboard should be located in `qmk_firmware/keyboards/` and the folder name should be your keyboard's name as described in the previous section. Inside this folder should be several files: +Your keyboard should be located in `qmk_firmware/keyboards/` and the folder name should be your keyboard's name as described in the previous section. Inside this folder should be several files, some of which are optional: * `readme.md` -* `info.json` +* `keyboard.json` (or `info.json`) * `config.h` * `rules.mk` * `.c` @@ -74,13 +78,27 @@ Your keyboard should be located in `qmk_firmware/keyboards/` and the folder name All projects need to have a `readme.md` file that explains what the keyboard is, who made it and where it's available. If applicable, it should also contain links to more information, such as the maker's website. Please follow the [published template](documentation_templates#keyboard-readmemd-template). -### `info.json` +### `keyboard.json`/`info.json` -This file is used by the [QMK API](https://github.com/qmk/qmk_api). It contains the information [QMK Configurator](https://config.qmk.fm/) needs to display a representation of your keyboard. You can also set metadata here. For more information see the [reference page](reference_info_json). +The `keyboard.json` file is necessary for your keyboard (or keyboard revision) to be considered a buildable keyboard. The same content is valid in both `info.json` and `keyboard.json`. For the available configuration options of this file, see the [reference page](reference_info_json). This file is also used by the [QMK API](https://github.com/qmk/qmk_api), and by the [QMK Configurator](https://config.qmk.fm/) to display a representation of the available layouts of your keyboard. + +Additionally, this is where layouts available on your keyboard are defined. If you only have a single layout, it should be named `LAYOUT`. When defining multiple layouts, you should have a base layout, named `LAYOUT_all`, that supports all possible switch positions in your matrix, even if that layout is impossible to build physically. This is the layout that should be used in the `default` keymap. You should then have additional keymaps named `default_` that configure keymaps for the other layouts. Layout macro names are entirely lowercase, except for the prefix of `LAYOUT`. + +As an example, if you have a 60% PCB that supports ANSI and ISO, you might define the following layouts and keymaps: + +| Layout Name | Keymap Name | Description | +|-------------|--------------|------------------------------------------| +| LAYOUT_all | default | A layout that supports both ISO and ANSI | +| LAYOUT_ansi | default_ansi | An ANSI layout | +| LAYOUT_iso | default_iso | An ISO layout | + +::: tip +Providing only `LAYOUT_all` is invalid, as is providing a `LAYOUT` when multiple layouts are present. +::: ### `config.h` -All projects need to have a `config.h` file that sets things like the matrix size, product name, USB VID/PID, description and other settings. In general, use this file to set essential information and defaults for your keyboard that will always work. +Some projects will need to have a `config.h` that configures parameters that are not possible to be set in `keyboard.json`. This is not a required file. The `config.h` files can also be placed in sub-folders, and the order in which they are read is as follows: @@ -138,7 +156,7 @@ If you define options using `post_config.h` as in the above example, you should ### `rules.mk` -The presence of this file means that the folder is a keyboard target and can be used in `make` commands. This is where you setup the build environment for your keyboard and configure the default set of features. +This file is typically used to configure hardware drivers (eg. pointing device), or to include additional C files in compilation. This is not a required file. The `rules.mk` file can also be placed in a sub-folder, and its reading order is as follows: @@ -187,7 +205,7 @@ See `build_keyboard.mk` and `common_features.mk` for more details. ### `` -This is where you will write custom code for your keyboard. Typically you will write code to initialize and interface with the hardware in your keyboard. If your keyboard consists of only a key matrix with no LEDs, speakers, or other auxiliary hardware this file can be blank. +This file should contain C code required for the functionality of your keyboard, for example hardware initialisation code, OLED display code, and so on. This file should only contain code necessary for the keyboard to work, and *not* things that should be left to the end user to configure in their keymap. This file is automatically included in compilation if it exists. This is not a required file. The following functions are typically defined in this file: @@ -198,31 +216,11 @@ The following functions are typically defined in this file: ### `` -This file is used to define the matrix for your keyboard. You should define at least one C macro which translates an array into a matrix representing the physical switch matrix for your keyboard. If it's possible to build your keyboard with multiple layouts you should define additional macros. - -If you have only a single layout you should call this macro `LAYOUT`. - -When defining multiple layouts you should have a base layout, named `LAYOUT_all`, that supports all possible switch positions on your matrix, even if that layout is impossible to build physically. This is the macro you should use in your `default` keymap. You should then have additional keymaps named `default_` that use your other layout macros. This will make it easier for people to use the layouts you define. - -Layout macro names are entirely lowercase, except for the word `LAYOUT` at the front. - -As an example, if you have a 60% PCB that supports ANSI and ISO you might define the following layouts and keymaps: - -| Layout Name | Keymap Name | Description | -|-------------|-------------|-------------| -| LAYOUT_all | default | A layout that supports both ISO and ANSI | -| LAYOUT_ansi | default_ansi | An ANSI layout | -| LAYOUT_iso | default_iso | An ISO layout | - -::: tip -Providing only `LAYOUT_all` is invalid - especially when implementing the additional layouts within 3rd party tooling. -::: +This file can contain function prototypes for custom functions and other header file code utilised by `.c`. The `.c` file should include this file. This is not a required file. ## Image/Hardware Files -In an effort to keep the repo size down we're no longer accepting binary files of any format, with few exceptions. Hosting them elsewhere (such as ) and linking them in the `readme.md` is preferred. - -Hardware files (such as plates, cases, pcb) can be contributed to the [qmk.fm repo](https://github.com/qmk/qmk.fm) and they will be made available on [qmk.fm](https://qmk.fm). Downloadable files are stored in `//` (name follows the same format as above) which are served at `https://qmk.fm//`, and pages are generated from `/_pages//` which are served at the same location (.md files are generated into .html files through Jekyll). Check out the `lets_split` folder for an example. +In an effort to keep the repo size down we do not accept binary files of any format, with few exceptions. Hosting them elsewhere (such as ) and linking them in the `readme.md` is preferred. Hardware files such as plates, cases, and PCBs can be published in a personal repository or elsewhere, and linked to by your keyboard's `readme.md` file. ## Keyboard Defaults @@ -232,8 +230,6 @@ Given the amount of functionality that QMK exposes it's very easy to confuse new [Magic Keycodes](keycodes_magic) and [Command](features/command) are two related features that allow a user to control their keyboard in non-obvious ways. We recommend you think long and hard about if you're going to enable either feature, and how you will expose this functionality. Keep in mind that users who want this functionality can enable it in their personal keymaps without affecting all the novice users who may be using your keyboard as their first programmable board. -By far the most common problem new users encounter is accidentally triggering Bootmagic while they're plugging in their keyboard. They're holding the keyboard by the bottom, unknowingly pressing in alt and spacebar, and then they find that these keys have been swapped on them. We recommend leaving this feature disabled by default, but if you do turn it on consider setting `BOOTMAGIC_KEY_SALT` to a key that is hard to press while plugging your keyboard in. - If your keyboard does not have 2 shift keys you should provide a working default for `IS_COMMAND`, even when you have set `COMMAND_ENABLE = no`. This will give your users a default to conform to if they do enable Command. ## Custom Keyboard Programming @@ -242,7 +238,7 @@ As documented on [Customizing Functionality](custom_quantum_functions) you can d ## Non-Production/Handwired Projects -We're happy to accept any project that uses QMK, including prototypes and handwired ones, but we have a separate `/keyboards/handwired/` folder for them, so the main `/keyboards/` folder doesn't get overcrowded. If a prototype project becomes a production project at some point in the future, we'd be happy to move it to the main `/keyboards/` folder! +We're happy to accept any project that uses QMK, including handwired ones, but we have a separate `/keyboards/handwired/` folder for them, so the main `/keyboards/` folder doesn't get overcrowded. If a prototype project becomes a production project at some point in the future, we'd be happy to move it to the main `/keyboards/` folder! ## Warnings as Errors From 8d29bd07c25a6a42e47ddbf918db3773027168f1 Mon Sep 17 00:00:00 2001 From: jack Date: Tue, 8 Jul 2025 14:08:49 -0600 Subject: [PATCH 062/167] Refactor `bastardkb/scylla` (#25459) * Refactor bastardkb/scylla - Update keyboard aliases accordingly - Migrate keymap to JSON and better represent physical layout - scylla/blackpill - Migrate common configuration to keyboard level - Remove unnecessary or user-specific configuration - Migrate some configuration to data-driven - Use short SPDX license headers - Remove unnecessary rules.mk file - Formatting pass on keyboard.json - scylla/v1 - Remove likely unneeded version, per qmk#23814 - scylla/v2 - Remove splinky_2 revision, per qmk#23814 - Remove splinky_3, stemcell revisions; converter feature should be used here - Rename scylla/v2/elitec -> scylla/promicro, as a converter can be used for any pin-compatible microcontrollers * Small keymap fix --- data/mappings/keyboard_aliases.hjson | 12 +++ keyboards/bastardkb/scylla/blackpill/config.h | 33 +------ .../bastardkb/scylla/blackpill/halconf.h | 21 +--- .../bastardkb/scylla/blackpill/keyboard.json | 42 +++----- .../bastardkb/scylla/blackpill/mcuconf.h | 23 +---- keyboards/bastardkb/scylla/blackpill/rules.mk | 5 - keyboards/bastardkb/scylla/info.json | 97 ++++++++++++++----- .../bastardkb/scylla/keymaps/default/keymap.c | 51 ---------- .../scylla/keymaps/default/keymap.json | 31 ++++++ .../bastardkb/scylla/promicro/keyboard.json | 15 +++ keyboards/bastardkb/scylla/readme.md | 36 ++++--- keyboards/bastardkb/scylla/scylla.c | 63 ------------ keyboards/bastardkb/scylla/v1/elitec/config.h | 22 ----- .../bastardkb/scylla/v1/elitec/keyboard.json | 31 ------ keyboards/bastardkb/scylla/v1/elitec/rules.mk | 1 - keyboards/bastardkb/scylla/v2/elitec/config.h | 21 ---- .../bastardkb/scylla/v2/elitec/keyboard.json | 31 ------ keyboards/bastardkb/scylla/v2/elitec/rules.mk | 1 - .../bastardkb/scylla/v2/splinky_2/config.h | 31 ------ .../scylla/v2/splinky_2/keyboard.json | 32 ------ .../bastardkb/scylla/v2/splinky_2/readme.md | 5 - .../bastardkb/scylla/v2/splinky_2/rules.mk | 3 - .../bastardkb/scylla/v2/splinky_3/config.h | 31 ------ .../scylla/v2/splinky_3/keyboard.json | 32 ------ .../bastardkb/scylla/v2/splinky_3/readme.md | 5 - .../bastardkb/scylla/v2/splinky_3/rules.mk | 3 - .../bastardkb/scylla/v2/stemcell/config.h | 38 -------- .../bastardkb/scylla/v2/stemcell/halconf.h | 23 ----- .../scylla/v2/stemcell/keyboard.json | 34 ------- .../bastardkb/scylla/v2/stemcell/mcuconf.h | 29 ------ .../bastardkb/scylla/v2/stemcell/rules.mk | 3 - 31 files changed, 174 insertions(+), 631 deletions(-) delete mode 100644 keyboards/bastardkb/scylla/blackpill/rules.mk delete mode 100644 keyboards/bastardkb/scylla/keymaps/default/keymap.c create mode 100644 keyboards/bastardkb/scylla/keymaps/default/keymap.json create mode 100644 keyboards/bastardkb/scylla/promicro/keyboard.json delete mode 100644 keyboards/bastardkb/scylla/scylla.c delete mode 100644 keyboards/bastardkb/scylla/v1/elitec/config.h delete mode 100644 keyboards/bastardkb/scylla/v1/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/scylla/v1/elitec/rules.mk delete mode 100644 keyboards/bastardkb/scylla/v2/elitec/config.h delete mode 100644 keyboards/bastardkb/scylla/v2/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/scylla/v2/elitec/rules.mk delete mode 100644 keyboards/bastardkb/scylla/v2/splinky_2/config.h delete mode 100644 keyboards/bastardkb/scylla/v2/splinky_2/keyboard.json delete mode 100644 keyboards/bastardkb/scylla/v2/splinky_2/readme.md delete mode 100644 keyboards/bastardkb/scylla/v2/splinky_2/rules.mk delete mode 100644 keyboards/bastardkb/scylla/v2/splinky_3/config.h delete mode 100644 keyboards/bastardkb/scylla/v2/splinky_3/keyboard.json delete mode 100644 keyboards/bastardkb/scylla/v2/splinky_3/readme.md delete mode 100644 keyboards/bastardkb/scylla/v2/splinky_3/rules.mk delete mode 100644 keyboards/bastardkb/scylla/v2/stemcell/config.h delete mode 100644 keyboards/bastardkb/scylla/v2/stemcell/halconf.h delete mode 100644 keyboards/bastardkb/scylla/v2/stemcell/keyboard.json delete mode 100644 keyboards/bastardkb/scylla/v2/stemcell/mcuconf.h delete mode 100644 keyboards/bastardkb/scylla/v2/stemcell/rules.mk diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index b7722092ba..42ff5a9912 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -68,6 +68,18 @@ "bakeneko80": { "target": "kkatano/bakeneko80" }, + "bastardkb/scylla/v2/elitec": { + "target": "bastardkb/scylla/promicro" + }, + "bastardkb/scylla/v2/splinky_2": { + "target": "bastardkb/scylla/promicro" + }, + "bastardkb/scylla/v2/splinky_3": { + "target": "bastardkb/scylla/promicro" + }, + "bastardkb/scylla/v2/stemcell": { + "target": "bastardkb/scylla/promicro" + }, "bastardkb/tbkmini/v2/elitec": { "target": "bastardkb/tbkmini/promicro" }, diff --git a/keyboards/bastardkb/scylla/blackpill/config.h b/keyboards/bastardkb/scylla/blackpill/config.h index bf7879edbe..c6b40f3e5f 100644 --- a/keyboards/bastardkb/scylla/blackpill/config.h +++ b/keyboards/bastardkb/scylla/blackpill/config.h @@ -1,27 +1,9 @@ -/* - * Copyright 2020 Christopher Courtney (@drashna) - * Copyright 2021 Stefan Kerkmann (@KarlK90) - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Publicw License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Christopher Courtney (@drashna) +// Copyright 2021 Stefan Kerkmann (@KarlK90) +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -/* Handedness. */ -#define SPLIT_HAND_PIN A3 // High -> left, Low -> right. - /* RGB settings. */ #define WS2812_PWM_DRIVER PWMD2 #define WS2812_PWM_CHANNEL 2 @@ -30,13 +12,6 @@ #define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM1 #define WS2812_PWM_DMA_CHANNEL 3 -/* Serial configuration for split keyboard. */ -#define SERIAL_USART_TX_PIN A9 - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED - /* SPI config for EEPROM. */ #define SPI_DRIVER SPID1 #define SPI_SCK_PIN A5 diff --git a/keyboards/bastardkb/scylla/blackpill/halconf.h b/keyboards/bastardkb/scylla/blackpill/halconf.h index 5c5dff98d4..545fc20cb3 100644 --- a/keyboards/bastardkb/scylla/blackpill/halconf.h +++ b/keyboards/bastardkb/scylla/blackpill/halconf.h @@ -1,21 +1,6 @@ -/** - * Copyright 2020 Nick Brassel (tzarc) - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Nick Brassel (tzarc) +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #define HAL_USE_PWM TRUE diff --git a/keyboards/bastardkb/scylla/blackpill/keyboard.json b/keyboards/bastardkb/scylla/blackpill/keyboard.json index 5294976fd3..4bef461b6b 100644 --- a/keyboards/bastardkb/scylla/blackpill/keyboard.json +++ b/keyboards/bastardkb/scylla/blackpill/keyboard.json @@ -1,37 +1,23 @@ { - "keyboard_name": "Scylla Blackpill", - "usb": { - "device_version": "1.0.0", - "shared_endpoint": { - "keyboard": true - } - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true - }, + "development_board": "blackpill_f411", "eeprom": { "driver": "spi" }, - "split": { - "enabled": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "ws2812": { - "pin": "A1", - "driver": "pwm" - }, - "build": { - "debounce_type": "asym_eager_defer_pk" - }, "matrix_pins": { "cols": ["B0", "B1", "B10", "B3", "B4", "B5"], "rows": ["B15", "A2", "B8", "A8", "B9"] }, - "diode_direction": "ROW2COL", - "development_board": "blackpill_f411" + "split": { + "handedness": { + "pin": "A3" + }, + "serial": { + "driver": "usart", + "pin": "A9" + } + }, + "ws2812": { + "driver": "pwm", + "pin": "A1" + } } diff --git a/keyboards/bastardkb/scylla/blackpill/mcuconf.h b/keyboards/bastardkb/scylla/blackpill/mcuconf.h index 2b3f30cbfe..cc77ec94ae 100644 --- a/keyboards/bastardkb/scylla/blackpill/mcuconf.h +++ b/keyboards/bastardkb/scylla/blackpill/mcuconf.h @@ -1,22 +1,7 @@ -/* - * Copyright 2020 Nick Brassel (tzarc) - * Copyright 2021 Stefan Kerkmann (@KarlK90) - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Nick Brassel (tzarc) +// Copyright 2021 Stefan Kerkmann (@KarlK90) +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include_next diff --git a/keyboards/bastardkb/scylla/blackpill/rules.mk b/keyboards/bastardkb/scylla/blackpill/rules.mk deleted file mode 100644 index 48c904dd64..0000000000 --- a/keyboards/bastardkb/scylla/blackpill/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint - -SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/scylla/info.json b/keyboards/bastardkb/scylla/info.json index 6508c15b5a..7f3619c6d0 100644 --- a/keyboards/bastardkb/scylla/info.json +++ b/keyboards/bastardkb/scylla/info.json @@ -1,23 +1,85 @@ { - "url": "https://bastardkb.com/scylla", - "usb": { - "pid": "0x1829" + "keyboard_name": "Scylla", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "rgb_matrix": true }, "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 2}, + {"matrix": [1, 0], "x": 0, "y": 16, "flags": 2}, + {"matrix": [2, 0], "x": 0, "y": 32, "flags": 2}, + {"matrix": [3, 0], "x": 0, "y": 48, "flags": 2}, + {"matrix": [3, 1], "x": 20, "y": 48, "flags": 4}, + {"matrix": [2, 1], "x": 20, "y": 32, "flags": 4}, + {"matrix": [1, 1], "x": 20, "y": 16, "flags": 4}, + {"matrix": [0, 1], "x": 20, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 41, "y": 0, "flags": 4}, + {"matrix": [1, 2], "x": 41, "y": 16, "flags": 4}, + {"matrix": [2, 2], "x": 41, "y": 32, "flags": 4}, + {"matrix": [3, 2], "x": 41, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 61, "y": 48, "flags": 4}, + {"matrix": [2, 3], "x": 61, "y": 32, "flags": 4}, + {"matrix": [1, 3], "x": 61, "y": 16, "flags": 4}, + {"matrix": [0, 3], "x": 61, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 81, "y": 0, "flags": 4}, + {"matrix": [1, 4], "x": 81, "y": 16, "flags": 4}, + {"matrix": [2, 4], "x": 81, "y": 32, "flags": 4}, + {"matrix": [3, 4], "x": 81, "y": 48, "flags": 4}, + {"matrix": [0, 5], "x": 102, "y": 0, "flags": 4}, + {"matrix": [1, 5], "x": 102, "y": 16, "flags": 4}, + {"matrix": [2, 5], "x": 102, "y": 32, "flags": 4}, + {"matrix": [3, 5], "x": 102, "y": 48, "flags": 4}, + {"matrix": [4, 2], "x": 102, "y": 64, "flags": 2}, + {"matrix": [4, 5], "x": 81, "y": 64, "flags": 2}, + {"matrix": [4, 3], "x": 61, "y": 56, "flags": 2}, + {"matrix": [4, 4], "x": 81, "y": 56, "flags": 2}, + {"matrix": [4, 1], "x": 102, "y": 56, "flags": 2}, + {"matrix": [5, 0], "x": 224, "y": 0, "flags": 2}, + {"matrix": [6, 0], "x": 224, "y": 16, "flags": 2}, + {"matrix": [7, 0], "x": 224, "y": 32, "flags": 2}, + {"matrix": [8, 0], "x": 224, "y": 48, "flags": 2}, + {"matrix": [8, 1], "x": 204, "y": 48, "flags": 4}, + {"matrix": [7, 1], "x": 204, "y": 32, "flags": 4}, + {"matrix": [6, 1], "x": 204, "y": 16, "flags": 4}, + {"matrix": [5, 1], "x": 204, "y": 0, "flags": 4}, + {"matrix": [5, 2], "x": 183, "y": 0, "flags": 4}, + {"matrix": [6, 2], "x": 183, "y": 16, "flags": 4}, + {"matrix": [7, 2], "x": 183, "y": 32, "flags": 4}, + {"matrix": [8, 2], "x": 183, "y": 48, "flags": 4}, + {"matrix": [8, 3], "x": 163, "y": 48, "flags": 4}, + {"matrix": [7, 3], "x": 163, "y": 32, "flags": 4}, + {"matrix": [6, 3], "x": 163, "y": 16, "flags": 4}, + {"matrix": [5, 3], "x": 163, "y": 0, "flags": 4}, + {"matrix": [5, 4], "x": 142, "y": 0, "flags": 4}, + {"matrix": [6, 4], "x": 142, "y": 16, "flags": 4}, + {"matrix": [7, 4], "x": 142, "y": 32, "flags": 4}, + {"matrix": [8, 4], "x": 142, "y": 48, "flags": 4}, + {"matrix": [5, 5], "x": 122, "y": 0, "flags": 4}, + {"matrix": [6, 5], "x": 122, "y": 16, "flags": 4}, + {"matrix": [7, 5], "x": 122, "y": 32, "flags": 4}, + {"matrix": [8, 5], "x": 122, "y": 48, "flags": 4}, + {"matrix": [9, 2], "x": 122, "y": 64, "flags": 2}, + {"matrix": [9, 5], "x": 142, "y": 64, "flags": 2}, + {"matrix": [9, 3], "x": 163, "y": 56, "flags": 2}, + {"matrix": [9, 4], "x": 142, "y": 56, "flags": 2}, + {"matrix": [9, 1], "x": 122, "y": 56, "flags": 2} + ], "max_brightness": 50, "sleep": true, "split_count": [29, 29] }, - "rgblight": { - "led_count": 58, - "split_count": [29, 29] - }, "split": { - "transport": { - "sync": { - "matrix_state": true - } - } + "enabled": true + }, + "url": "https://github.com/Bastardkb/Scylla", + "usb": { + "device_version": "2.0.0", + "pid": "0x1829" }, "layouts": { "LAYOUT_split_4x6_5": { @@ -28,67 +90,56 @@ {"matrix": [0, 3], "x": 3, "y": 0}, {"matrix": [0, 4], "x": 4, "y": 0}, {"matrix": [0, 5], "x": 5, "y": 0}, - {"matrix": [5, 5], "x": 11, "y": 0}, {"matrix": [5, 4], "x": 12, "y": 0}, {"matrix": [5, 3], "x": 13, "y": 0}, {"matrix": [5, 2], "x": 14, "y": 0}, {"matrix": [5, 1], "x": 15, "y": 0}, {"matrix": [5, 0], "x": 16, "y": 0}, - {"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1}, {"matrix": [1, 2], "x": 2, "y": 1}, {"matrix": [1, 3], "x": 3, "y": 1}, {"matrix": [1, 4], "x": 4, "y": 1}, {"matrix": [1, 5], "x": 5, "y": 1}, - {"matrix": [6, 5], "x": 11, "y": 1}, {"matrix": [6, 4], "x": 12, "y": 1}, {"matrix": [6, 3], "x": 13, "y": 1}, {"matrix": [6, 2], "x": 14, "y": 1}, {"matrix": [6, 1], "x": 15, "y": 1}, {"matrix": [6, 0], "x": 16, "y": 1}, - {"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, {"matrix": [2, 2], "x": 2, "y": 2}, {"matrix": [2, 3], "x": 3, "y": 2}, {"matrix": [2, 4], "x": 4, "y": 2}, {"matrix": [2, 5], "x": 5, "y": 2}, - {"matrix": [7, 5], "x": 11, "y": 2}, {"matrix": [7, 4], "x": 12, "y": 2}, {"matrix": [7, 3], "x": 13, "y": 2}, {"matrix": [7, 2], "x": 14, "y": 2}, {"matrix": [7, 1], "x": 15, "y": 2}, {"matrix": [7, 0], "x": 16, "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}, {"matrix": [3, 4], "x": 4, "y": 3}, {"matrix": [3, 5], "x": 5, "y": 3}, - {"matrix": [8, 5], "x": 11, "y": 3}, {"matrix": [8, 4], "x": 12, "y": 3}, {"matrix": [8, 3], "x": 13, "y": 3}, {"matrix": [8, 2], "x": 14, "y": 3}, {"matrix": [8, 1], "x": 15, "y": 3}, {"matrix": [8, 0], "x": 16, "y": 3}, - {"matrix": [4, 3], "x": 5, "y": 4}, {"matrix": [4, 4], "x": 6, "y": 4}, {"matrix": [4, 1], "x": 7, "y": 4}, - {"matrix": [9, 1], "x": 9, "y": 4}, {"matrix": [9, 4], "x": 10, "y": 4}, {"matrix": [9, 3], "x": 11, "y": 4}, - {"matrix": [4, 5], "x": 6, "y": 5}, {"matrix": [4, 2], "x": 7, "y": 5}, - {"matrix": [9, 2], "x": 9, "y": 5}, {"matrix": [9, 5], "x": 10, "y": 5} ] diff --git a/keyboards/bastardkb/scylla/keymaps/default/keymap.c b/keyboards/bastardkb/scylla/keymaps/default/keymap.c deleted file mode 100644 index 8e9b0190d4..0000000000 --- a/keyboards/bastardkb/scylla/keymaps/default/keymap.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * - * This 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_split_4x6_5(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - //-------------------------------------------------//-----------------------------------------------------------// - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, - //-------------------------------------------------//-----------------------------------------------------------// - KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - //-------------------------------------------------//-----------------------------------------------------------// - KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, - //-------------------------------------------------//-----------------------------------------------------------// - KC_LCTL, KC_SPC, MO(1), MO(2), KC_ENT, KC_RGUI, KC_HOME, KC_BSPC, KC_DEL, KC_RALT), - - [1] = LAYOUT_split_4x6_5(KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, - //---------------------------------------------------------//-----------------------------------------------------------// - QK_BOOT, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, _______, KC_PLUS, - //---------------------------------------------------------//-----------------------------------------------------------// - _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_LPRN, KC_RPRN, KC_P4, KC_P5, KC_P6, KC_MINS, KC_PIPE, - //---------------------------------------------------------//-----------------------------------------------------------// - _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_EQL, KC_UNDS, - //---------------------------------------------------------//-----------------------------------------------------------// - KC_LCTL, KC_HOME, KC_TRNS, KC_TRNS, KC_RALT, KC_RGUI, KC_SPC, KC_BSPC, KC_RCTL, KC_ENT), - - [2] = LAYOUT_split_4x6_5(KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - //---------------------------------------------------------//--------------------------------------------------------------// - _______, _______, RM_PREV, RM_TOGG, RM_NEXT, KC_LBRC, KC_RBRC, _______, KC_NUM, KC_INS, KC_SCRL, KC_MUTE, - //---------------------------------------------------------//--------------------------------------------------------------// - _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_LPRN, KC_RPRN, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_VOLU, - //---------------------------------------------------------//--------------------------------------------------------------// - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, - //---------------------------------------------------------//--------------------------------------------------------------// - KC_LCTL, KC_HOME, KC_TRNS, KC_TRNS, KC_RALT, QK_BOOT, KC_SPC, KC_BSPC, KC_RCTL, KC_ENT), -}; diff --git a/keyboards/bastardkb/scylla/keymaps/default/keymap.json b/keyboards/bastardkb/scylla/keymaps/default/keymap.json new file mode 100644 index 0000000000..d06e183517 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/default/keymap.json @@ -0,0 +1,31 @@ +{ + "keyboard": "bastardkb/scylla/promicro", + "keymap": "default", + "layout": "LAYOUT_split_4x6_5", + "layers": [ + [ + "KC_ESC" , "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_GRV" , + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_CAPS", + "KC_LGUI", "MO(1)", "KC_SPC", "KC_ENT", "MO(2)", "KC_RGUI", + "KC_LALT", "KC_SPC", "KC_BSPC", "KC_RALT" + ], + [ + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "_______", + "_______", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______" + ], + [ + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "QK_BOOT", "_______", "_______", "_______", "_______", "_______", "RM_VALU", "RM_HUEU", "RM_SATU", "RM_NEXT", "RM_TOGG", "_______", + "EE_CLR", "_______", "_______", "_______", "_______", "_______", "RM_VALD", "RM_HUED", "RM_SATD", "RM_PREV", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______" + ] + ] +} diff --git a/keyboards/bastardkb/scylla/promicro/keyboard.json b/keyboards/bastardkb/scylla/promicro/keyboard.json new file mode 100644 index 0000000000..89116f7dcd --- /dev/null +++ b/keyboards/bastardkb/scylla/promicro/keyboard.json @@ -0,0 +1,15 @@ +{ + "development_board": "elite_c", + "matrix_pins": { + "cols": ["F6", "F5", "B6", "D7", "E6", "B4"], + "rows": ["F4", "F7", "C6", "D4", "B5"] + }, + "split": { + "serial": { + "pin": "D2" + } + }, + "ws2812": { + "pin": "D3" + } +} diff --git a/keyboards/bastardkb/scylla/readme.md b/keyboards/bastardkb/scylla/readme.md index 830b8eacda..fd40c418c7 100644 --- a/keyboards/bastardkb/scylla/readme.md +++ b/keyboards/bastardkb/scylla/readme.md @@ -1,29 +1,27 @@ # Scylla -A modern, low-profile split ergonomic keyboard +* Keyboard Maintainer: [Quentin Lebastard](https://github.com/bastardkb) +* Hardware Supported: BastardKB Blackpill or Pro Micro adapter & compatible development boards +* Hardware Availability: [GitHub](https://github.com/Bastardkb/Scylla) -* Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/) -* Hardware Supported: elite-C V4 -* Hardware Availability: [Bastard Keyboards](https://bastardkb.com/) +Make example for this keyboard (after setting up your build environment): -## Building the firmware + make bastardkb/scylla/blackpill:default + make bastardkb/scylla/promicro:default -**You must specify the shield version when compiling/flashing the firmware.** +Flashing example for this keyboard: -The template is: + make bastardkb/scylla/blackpill:default:flash + make bastardkb/scylla/promicro:default:flash -```shell -qmk compile -kb bastardkb/scylla/{VERSION}/elitec -km {KEYMAP} -``` - -| Shield Version | default | via | -| --------------- | ------------------------------------------------------------- | --------------------------------------------------------- | -| v1 (Elite-C) | `qmk compile -kb bastardkb/scylla/v1/elitec -km default` | `qmk compile -kb bastardkb/scylla/v1/elitec -km via` | -| v2 (Elite-C) | `qmk compile -kb bastardkb/scylla/v2/elitec -km default` | `qmk compile -kb bastardkb/scylla/v2/elitec -km via` | -| v2 (Splinky v2) | `qmk compile -kb bastardkb/scylla/v2/splinky/v2 -km default` | `qmk compile -kb bastardkb/scylla/v2/splinky/v2 -km via` | -| v2 (Splinky v3) | `qmk compile -kb bastardkb/scylla/v2/splinky/v3 -km default` | `qmk compile -kb bastardkb/scylla/v2/splinky/v3 -km via` | -| v2 (STeMCell) | `qmk compile -kb bastardkb/scylla/v2/stemcell -km default` | `qmk compile -kb bastardkb/scylla/v2/stemcell -km via` | +Note if using the `promicro` version: If you are using an Elite-C compatible development board, see [here](../readme.md#handedness-pin-on-elite-c-holder) for setting handedness by pin. 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). -See the [keyboard build instructions](https://docs.bastardkb.com) +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the adapter PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/bastardkb/scylla/scylla.c b/keyboards/bastardkb/scylla/scylla.c deleted file mode 100644 index 7aaa0fc1ce..0000000000 --- a/keyboards/bastardkb/scylla/scylla.c +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Copyright 2021 Quentin LEBASTARD - * - * This 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" - -// clang-format off -#ifdef RGB_MATRIX_ENABLE -led_config_t g_led_config = { { - // left - { 0, 7, 8, 15, 16, 20 }, - { 1, 6, 9, 14, 17, 21 }, - { 2, 5, 10, 13, 18, 22 }, - { 3, 4, 11, 12, 19, 23 }, - { NO_LED, 28, 24, 26, 27, 25 }, - // right - { 29, 36, 37, 44, 45, 49 }, - { 30, 35, 38, 43, 46, 50 }, - { 31, 34, 39, 42, 47, 51 }, - { 32, 33, 40, 41, 48, 52 }, - { NO_LED, 57, 53, 55, 56, 54 } -}, { - // left - { 0, 0 }, { 0, 16 }, { 0, 32 }, { 0, 48 }, // col 1 - { 20, 48 }, { 20, 32 }, { 20, 16 }, { 20, 0 }, // col 2 - { 41, 0 }, { 41, 16 }, { 41, 32 }, { 41, 48 }, - { 61, 48 }, { 61, 32 }, { 61, 16 }, { 61, 0 }, - { 81, 0 }, { 81, 16 }, { 81, 32 }, { 81, 48 }, - { 102, 0 }, { 102, 16 }, { 102, 32 }, { 102, 48 }, - { 102, 64 }, { 81, 64 }, { 61, 56 }, { 81, 56 }, { 102, 56 }, // left thumb cluster - // right - { 224, 0 }, { 224, 16 }, { 224, 32 }, { 224, 48 }, // col 12 - { 204, 48 }, { 204, 32 }, { 204, 16 }, { 204, 0 }, // col 11 - { 183, 0 }, { 183, 16 }, { 183, 32 }, { 183, 48 }, - { 163, 48 }, { 163, 32 }, { 163, 16 }, { 163, 0 }, - { 142, 0 }, { 142, 16 }, { 142, 32 }, { 142, 48 }, - { 122, 0 }, { 122, 16 }, { 122, 32 }, { 122, 48 }, - { 122, 64 }, { 142, 64 }, { 163, 56 }, { 142, 56 }, { 122, 56 } // right thumb cluster -}, { - // left - 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 2, 2, 2, 2, 2, - // right - 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 2, 2, 2, 2, 2 -} }; -#endif -// clang-format on diff --git a/keyboards/bastardkb/scylla/v1/elitec/config.h b/keyboards/bastardkb/scylla/v1/elitec/config.h deleted file mode 100644 index 41b5aa1c66..0000000000 --- a/keyboards/bastardkb/scylla/v1/elitec/config.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT diff --git a/keyboards/bastardkb/scylla/v1/elitec/keyboard.json b/keyboards/bastardkb/scylla/v1/elitec/keyboard.json deleted file mode 100644 index 25963f006c..0000000000 --- a/keyboards/bastardkb/scylla/v1/elitec/keyboard.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "keyboard_name": "Scylla Elite-C", - "usb": { - "device_version": "1.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true - }, - "ws2812": { - "pin": "D2" - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["B4", "E6", "C6", "B1", "B3", "B2"], - "rows": ["D7", "B5", "F7", "F6", "B6"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "D0" - } - }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu" -} diff --git a/keyboards/bastardkb/scylla/v1/elitec/rules.mk b/keyboards/bastardkb/scylla/v1/elitec/rules.mk deleted file mode 100644 index 1868c4bb02..0000000000 --- a/keyboards/bastardkb/scylla/v1/elitec/rules.mk +++ /dev/null @@ -1 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported diff --git a/keyboards/bastardkb/scylla/v2/elitec/config.h b/keyboards/bastardkb/scylla/v2/elitec/config.h deleted file mode 100644 index e6b7fefa66..0000000000 --- a/keyboards/bastardkb/scylla/v2/elitec/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT diff --git a/keyboards/bastardkb/scylla/v2/elitec/keyboard.json b/keyboards/bastardkb/scylla/v2/elitec/keyboard.json deleted file mode 100644 index 316606b17b..0000000000 --- a/keyboards/bastardkb/scylla/v2/elitec/keyboard.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "keyboard_name": "Scylla Elite-C", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true - }, - "ws2812": { - "pin": "D3" - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["F6", "F5", "B6", "D7", "E6", "B4"], - "rows": ["F4", "F7", "C6", "D4", "B5"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "D2" - } - }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu" -} diff --git a/keyboards/bastardkb/scylla/v2/elitec/rules.mk b/keyboards/bastardkb/scylla/v2/elitec/rules.mk deleted file mode 100644 index 1868c4bb02..0000000000 --- a/keyboards/bastardkb/scylla/v2/elitec/rules.mk +++ /dev/null @@ -1 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported diff --git a/keyboards/bastardkb/scylla/v2/splinky_2/config.h b/keyboards/bastardkb/scylla/v2/splinky_2/config.h deleted file mode 100644 index 977fb0a6e8..0000000000 --- a/keyboards/bastardkb/scylla/v2/splinky_2/config.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define SPLIT_HAND_PIN GP13 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/scylla/v2/splinky_2/keyboard.json b/keyboards/bastardkb/scylla/v2/splinky_2/keyboard.json deleted file mode 100644 index 2c0beb5c1d..0000000000 --- a/keyboards/bastardkb/scylla/v2/splinky_2/keyboard.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "keyboard_name": "Scylla Splinky", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["GP27", "GP28", "GP15", "GP6", "GP7", "GP8"], - "rows": ["GP29", "GP26", "GP5", "GP4", "GP9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "ws2812": { - "pin": "GP0", - "driver": "vendor" - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/scylla/v2/splinky_2/readme.md b/keyboards/bastardkb/scylla/v2/splinky_2/readme.md deleted file mode 100644 index 662eb5825c..0000000000 --- a/keyboards/bastardkb/scylla/v2/splinky_2/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Splinky controller - -The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040. - -See [plut0nium/0xB2](https://github.com/plut0nium/0xB2/#releases) to figure out the right version for you (v2 or v3). diff --git a/keyboards/bastardkb/scylla/v2/splinky_2/rules.mk b/keyboards/bastardkb/scylla/v2/splinky_2/rules.mk deleted file mode 100644 index 077573eb76..0000000000 --- a/keyboards/bastardkb/scylla/v2/splinky_2/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -SERIAL_DRIVER = vendor diff --git a/keyboards/bastardkb/scylla/v2/splinky_3/config.h b/keyboards/bastardkb/scylla/v2/splinky_3/config.h deleted file mode 100644 index e496023656..0000000000 --- a/keyboards/bastardkb/scylla/v2/splinky_3/config.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define SPLIT_HAND_PIN GP15 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/scylla/v2/splinky_3/keyboard.json b/keyboards/bastardkb/scylla/v2/splinky_3/keyboard.json deleted file mode 100644 index ed92be5a45..0000000000 --- a/keyboards/bastardkb/scylla/v2/splinky_3/keyboard.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "keyboard_name": "Scylla Splinky", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["GP27", "GP28", "GP21", "GP6", "GP7", "GP8"], - "rows": ["GP29", "GP26", "GP5", "GP4", "GP9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "ws2812": { - "pin": "GP0", - "driver": "vendor" - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/scylla/v2/splinky_3/readme.md b/keyboards/bastardkb/scylla/v2/splinky_3/readme.md deleted file mode 100644 index 662eb5825c..0000000000 --- a/keyboards/bastardkb/scylla/v2/splinky_3/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Splinky controller - -The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040. - -See [plut0nium/0xB2](https://github.com/plut0nium/0xB2/#releases) to figure out the right version for you (v2 or v3). diff --git a/keyboards/bastardkb/scylla/v2/splinky_3/rules.mk b/keyboards/bastardkb/scylla/v2/splinky_3/rules.mk deleted file mode 100644 index 077573eb76..0000000000 --- a/keyboards/bastardkb/scylla/v2/splinky_3/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -SERIAL_DRIVER = vendor diff --git a/keyboards/bastardkb/scylla/v2/stemcell/config.h b/keyboards/bastardkb/scylla/v2/stemcell/config.h deleted file mode 100644 index ca1cc0f719..0000000000 --- a/keyboards/bastardkb/scylla/v2/stemcell/config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define A0 PAL_LINE(GPIOA, 0) -// #define SPLIT_HAND_PIN A0 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* RGB settings. */ -#define WS2812_PWM_DRIVER PWMD2 -#define WS2812_PWM_CHANNEL 4 -#define WS2812_PWM_PAL_MODE 1 -#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM7 -#define WS2812_PWM_DMA_CHANNEL 3 - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED diff --git a/keyboards/bastardkb/scylla/v2/stemcell/halconf.h b/keyboards/bastardkb/scylla/v2/stemcell/halconf.h deleted file mode 100644 index dbeb6aeaa0..0000000000 --- a/keyboards/bastardkb/scylla/v2/stemcell/halconf.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define HAL_USE_PWM TRUE -#define HAL_USE_SERIAL TRUE - -#include_next diff --git a/keyboards/bastardkb/scylla/v2/stemcell/keyboard.json b/keyboards/bastardkb/scylla/v2/stemcell/keyboard.json deleted file mode 100644 index 80325bfea3..0000000000 --- a/keyboards/bastardkb/scylla/v2/stemcell/keyboard.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "keyboard_name": "Scylla STeMCell", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "ws2812": { - "pin": "A2", - "driver": "pwm" - }, - "build": { - "debounce_type": "asym_eager_defer_pk" - }, - "matrix_pins": { - "cols": ["B1", "B2", "A4", "B4", "B5", "B8"], - "rows": ["B10", "B0", "B3", "A15", "B9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "A3" - } - }, - "development_board": "stemcell" -} diff --git a/keyboards/bastardkb/scylla/v2/stemcell/mcuconf.h b/keyboards/bastardkb/scylla/v2/stemcell/mcuconf.h deleted file mode 100644 index 6afebade36..0000000000 --- a/keyboards/bastardkb/scylla/v2/stemcell/mcuconf.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2021 Charly Delay (@0xcharly) - * - * This 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_SERIAL_USE_USART1 -#define STM32_SERIAL_USE_USART1 FALSE - -#undef STM32_PWM_USE_TIM2 -#define STM32_PWM_USE_TIM2 TRUE - -#undef STM32_ST_USE_TIMER -#define STM32_ST_USE_TIMER 5 diff --git a/keyboards/bastardkb/scylla/v2/stemcell/rules.mk b/keyboards/bastardkb/scylla/v2/stemcell/rules.mk deleted file mode 100644 index 3fe3e4ffbe..0000000000 --- a/keyboards/bastardkb/scylla/v2/stemcell/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -SERIAL_DRIVER = usart From 15e7c8f37a6fe017b61f7a355a89fdc83e965deb Mon Sep 17 00:00:00 2001 From: jack Date: Tue, 8 Jul 2025 14:23:05 -0600 Subject: [PATCH 063/167] Refactor `bastardkb/skeletyl` (#25456) * Refactor bastardkb/skeletyl - Update keyboard aliases accordingly - Migrate keymap to JSON - skeletyl/blackpill - Migrate common configuration to keyboard level - Remove unnecessary or user-specific configuration - Migrate some configuration to data-driven - Use short SPDX license headers - Remove unnecessary rules.mk file - Formatting pass on keyboard.json - skeletyl/v1 - Remove likely unneeded version, per qmk#23812 - skeletyl/v2 - Remove splinky_2 revision, per qmk#23812 - Remove splinky_3, stemcell revisions; converter feature should be used here - Rename skeletyl/v2/elitec -> skeletyl/promicro, as a converter can be used for any pin-compatible microcontrollers * Update keyboards/bastardkb/skeletyl/keymaps/default/keymap.json Co-authored-by: Ryan --------- Co-authored-by: Ryan --- data/mappings/keyboard_aliases.hjson | 12 +++ .../bastardkb/skeletyl/blackpill/config.h | 33 +------- .../bastardkb/skeletyl/blackpill/halconf.h | 21 +---- .../skeletyl/blackpill/keyboard.json | 42 ++++------ .../bastardkb/skeletyl/blackpill/mcuconf.h | 23 +----- .../bastardkb/skeletyl/blackpill/rules.mk | 5 -- keyboards/bastardkb/skeletyl/info.json | 71 +++++++++++----- .../skeletyl/keymaps/default/keymap.c | 70 ---------------- .../skeletyl/keymaps/default/keymap.json | 26 ++++++ .../bastardkb/skeletyl/promicro/keyboard.json | 15 ++++ keyboards/bastardkb/skeletyl/readme.md | 38 ++++----- keyboards/bastardkb/skeletyl/skeletyl.c | 81 ------------------- .../bastardkb/skeletyl/v1/elitec/config.h | 22 ----- .../skeletyl/v1/elitec/keyboard.json | 31 ------- .../bastardkb/skeletyl/v1/elitec/rules.mk | 1 - .../bastardkb/skeletyl/v2/elitec/config.h | 21 ----- .../skeletyl/v2/elitec/keyboard.json | 31 ------- .../bastardkb/skeletyl/v2/elitec/rules.mk | 1 - .../bastardkb/skeletyl/v2/splinky_2/config.h | 31 ------- .../skeletyl/v2/splinky_2/keyboard.json | 32 -------- .../bastardkb/skeletyl/v2/splinky_2/readme.md | 5 -- .../bastardkb/skeletyl/v2/splinky_2/rules.mk | 3 - .../bastardkb/skeletyl/v2/splinky_3/config.h | 31 ------- .../skeletyl/v2/splinky_3/keyboard.json | 32 -------- .../bastardkb/skeletyl/v2/splinky_3/readme.md | 5 -- .../bastardkb/skeletyl/v2/splinky_3/rules.mk | 3 - .../bastardkb/skeletyl/v2/stemcell/config.h | 38 --------- .../bastardkb/skeletyl/v2/stemcell/halconf.h | 23 ------ .../skeletyl/v2/stemcell/keyboard.json | 34 -------- .../bastardkb/skeletyl/v2/stemcell/mcuconf.h | 29 ------- .../bastardkb/skeletyl/v2/stemcell/rules.mk | 3 - 31 files changed, 147 insertions(+), 666 deletions(-) delete mode 100644 keyboards/bastardkb/skeletyl/blackpill/rules.mk delete mode 100644 keyboards/bastardkb/skeletyl/keymaps/default/keymap.c create mode 100644 keyboards/bastardkb/skeletyl/keymaps/default/keymap.json create mode 100644 keyboards/bastardkb/skeletyl/promicro/keyboard.json delete mode 100644 keyboards/bastardkb/skeletyl/skeletyl.c delete mode 100644 keyboards/bastardkb/skeletyl/v1/elitec/config.h delete mode 100644 keyboards/bastardkb/skeletyl/v1/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/skeletyl/v1/elitec/rules.mk delete mode 100644 keyboards/bastardkb/skeletyl/v2/elitec/config.h delete mode 100644 keyboards/bastardkb/skeletyl/v2/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/skeletyl/v2/elitec/rules.mk delete mode 100644 keyboards/bastardkb/skeletyl/v2/splinky_2/config.h delete mode 100644 keyboards/bastardkb/skeletyl/v2/splinky_2/keyboard.json delete mode 100644 keyboards/bastardkb/skeletyl/v2/splinky_2/readme.md delete mode 100644 keyboards/bastardkb/skeletyl/v2/splinky_2/rules.mk delete mode 100644 keyboards/bastardkb/skeletyl/v2/splinky_3/config.h delete mode 100644 keyboards/bastardkb/skeletyl/v2/splinky_3/keyboard.json delete mode 100644 keyboards/bastardkb/skeletyl/v2/splinky_3/readme.md delete mode 100644 keyboards/bastardkb/skeletyl/v2/splinky_3/rules.mk delete mode 100644 keyboards/bastardkb/skeletyl/v2/stemcell/config.h delete mode 100644 keyboards/bastardkb/skeletyl/v2/stemcell/halconf.h delete mode 100644 keyboards/bastardkb/skeletyl/v2/stemcell/keyboard.json delete mode 100644 keyboards/bastardkb/skeletyl/v2/stemcell/mcuconf.h delete mode 100644 keyboards/bastardkb/skeletyl/v2/stemcell/rules.mk diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index 42ff5a9912..942a60946d 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -80,6 +80,18 @@ "bastardkb/scylla/v2/stemcell": { "target": "bastardkb/scylla/promicro" }, + "bastardkb/skeletyl/v2/elitec": { + "target": "bastardkb/skeletyl/promicro" + }, + "bastardkb/skeletyl/v2/splinky_2": { + "target": "bastardkb/skeletyl/promicro" + }, + "bastardkb/skeletyl/v2/splinky_3": { + "target": "bastardkb/skeletyl/promicro" + }, + "bastardkb/skeletyl/v2/stemcell": { + "target": "bastardkb/skeletyl/promicro" + }, "bastardkb/tbkmini/v2/elitec": { "target": "bastardkb/tbkmini/promicro" }, diff --git a/keyboards/bastardkb/skeletyl/blackpill/config.h b/keyboards/bastardkb/skeletyl/blackpill/config.h index bf7879edbe..c6b40f3e5f 100644 --- a/keyboards/bastardkb/skeletyl/blackpill/config.h +++ b/keyboards/bastardkb/skeletyl/blackpill/config.h @@ -1,27 +1,9 @@ -/* - * Copyright 2020 Christopher Courtney (@drashna) - * Copyright 2021 Stefan Kerkmann (@KarlK90) - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Publicw License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Christopher Courtney (@drashna) +// Copyright 2021 Stefan Kerkmann (@KarlK90) +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -/* Handedness. */ -#define SPLIT_HAND_PIN A3 // High -> left, Low -> right. - /* RGB settings. */ #define WS2812_PWM_DRIVER PWMD2 #define WS2812_PWM_CHANNEL 2 @@ -30,13 +12,6 @@ #define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM1 #define WS2812_PWM_DMA_CHANNEL 3 -/* Serial configuration for split keyboard. */ -#define SERIAL_USART_TX_PIN A9 - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED - /* SPI config for EEPROM. */ #define SPI_DRIVER SPID1 #define SPI_SCK_PIN A5 diff --git a/keyboards/bastardkb/skeletyl/blackpill/halconf.h b/keyboards/bastardkb/skeletyl/blackpill/halconf.h index 5c5dff98d4..545fc20cb3 100644 --- a/keyboards/bastardkb/skeletyl/blackpill/halconf.h +++ b/keyboards/bastardkb/skeletyl/blackpill/halconf.h @@ -1,21 +1,6 @@ -/** - * Copyright 2020 Nick Brassel (tzarc) - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Nick Brassel (tzarc) +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #define HAL_USE_PWM TRUE diff --git a/keyboards/bastardkb/skeletyl/blackpill/keyboard.json b/keyboards/bastardkb/skeletyl/blackpill/keyboard.json index 16fa2b2412..15edbf74b8 100644 --- a/keyboards/bastardkb/skeletyl/blackpill/keyboard.json +++ b/keyboards/bastardkb/skeletyl/blackpill/keyboard.json @@ -1,37 +1,23 @@ { - "keyboard_name": "Skeletyl Blackpill", - "usb": { - "device_version": "1.0.0", - "shared_endpoint": { - "keyboard": true - } - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true - }, + "development_board": "blackpill_f411", "eeprom": { "driver": "spi" }, - "split": { - "enabled": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "ws2812": { - "pin": "A1", - "driver": "pwm" - }, - "build": { - "debounce_type": "asym_eager_defer_pk" - }, "matrix_pins": { "cols": ["B1", "B10", "B3", "B4", "B5"], "rows": ["A2", "B8", "A8", "B9"] }, - "diode_direction": "ROW2COL", - "development_board": "blackpill_f411" + "split": { + "handedness": { + "pin": "A3" + }, + "serial": { + "driver": "usart", + "pin": "A9" + } + }, + "ws2812": { + "driver": "pwm", + "pin": "A1" + } } diff --git a/keyboards/bastardkb/skeletyl/blackpill/mcuconf.h b/keyboards/bastardkb/skeletyl/blackpill/mcuconf.h index 2b3f30cbfe..cc77ec94ae 100644 --- a/keyboards/bastardkb/skeletyl/blackpill/mcuconf.h +++ b/keyboards/bastardkb/skeletyl/blackpill/mcuconf.h @@ -1,22 +1,7 @@ -/* - * Copyright 2020 Nick Brassel (tzarc) - * Copyright 2021 Stefan Kerkmann (@KarlK90) - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Nick Brassel (tzarc) +// Copyright 2021 Stefan Kerkmann (@KarlK90) +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include_next diff --git a/keyboards/bastardkb/skeletyl/blackpill/rules.mk b/keyboards/bastardkb/skeletyl/blackpill/rules.mk deleted file mode 100644 index 48c904dd64..0000000000 --- a/keyboards/bastardkb/skeletyl/blackpill/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint - -SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/skeletyl/info.json b/keyboards/bastardkb/skeletyl/info.json index e4ac29207d..470197edb9 100644 --- a/keyboards/bastardkb/skeletyl/info.json +++ b/keyboards/bastardkb/skeletyl/info.json @@ -1,23 +1,63 @@ { - "url": "https://www.bastardkb.com/skeletyl", - "usb": { - "pid": "0x1830" + "keyboard_name": "Skeletyl", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "rgb_matrix": true }, "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"matrix": [2, 0], "x": 0, "y": 42, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 21, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 18, "y": 0, "flags": 4}, + {"matrix": [1, 1], "x": 18, "y": 21, "flags": 4}, + {"matrix": [2, 1], "x": 18, "y": 42, "flags": 4}, + {"matrix": [2, 2], "x": 36, "y": 42, "flags": 4}, + {"matrix": [1, 2], "x": 36, "y": 21, "flags": 4}, + {"matrix": [0, 2], "x": 36, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 54, "y": 0, "flags": 4}, + {"matrix": [1, 3], "x": 54, "y": 21, "flags": 4}, + {"matrix": [2, 3], "x": 54, "y": 42, "flags": 4}, + {"matrix": [0, 4], "x": 72, "y": 0, "flags": 4}, + {"matrix": [1, 4], "x": 72, "y": 21, "flags": 4}, + {"matrix": [2, 4], "x": 72, "y": 42, "flags": 4}, + {"matrix": [3, 2], "x": 72, "y": 64, "flags": 1}, + {"matrix": [3, 3], "x": 90, "y": 64, "flags": 1}, + {"matrix": [3, 0], "x": 108, "y": 64, "flags": 1}, + {"matrix": [6, 0], "x": 224, "y": 42, "flags": 4}, + {"matrix": [5, 0], "x": 224, "y": 21, "flags": 4}, + {"matrix": [4, 0], "x": 224, "y": 0, "flags": 4}, + {"matrix": [4, 1], "x": 206, "y": 0, "flags": 4}, + {"matrix": [5, 1], "x": 206, "y": 21, "flags": 4}, + {"matrix": [6, 1], "x": 206, "y": 42, "flags": 4}, + {"matrix": [6, 2], "x": 188, "y": 42, "flags": 4}, + {"matrix": [5, 2], "x": 188, "y": 21, "flags": 4}, + {"matrix": [4, 2], "x": 188, "y": 0, "flags": 4}, + {"matrix": [4, 3], "x": 170, "y": 0, "flags": 4}, + {"matrix": [5, 3], "x": 170, "y": 21, "flags": 4}, + {"matrix": [6, 3], "x": 170, "y": 42, "flags": 4}, + {"matrix": [4, 4], "x": 152, "y": 0, "flags": 4}, + {"matrix": [5, 4], "x": 152, "y": 21, "flags": 4}, + {"matrix": [6, 4], "x": 152, "y": 42, "flags": 4}, + {"matrix": [7, 2], "x": 152, "y": 64, "flags": 1}, + {"matrix": [7, 3], "x": 134, "y": 64, "flags": 1}, + {"matrix": [7, 0], "x": 116, "y": 64, "flags": 1} + ], "max_brightness": 50, "sleep": true, "split_count": [18, 18] }, - "rgblight": { - "led_count": 36, - "split_count": [18, 18] - }, "split": { - "transport": { - "sync": { - "matrix_state": true - } - } + "enabled": true + }, + "url": "https://github.com/Bastardkb/Skeletyl", + "usb": { + "device_version": "2.0.0", + "pid": "0x1830" }, "community_layouts": ["split_3x5_3"], "layouts": { @@ -28,41 +68,34 @@ {"matrix": [0, 2], "x": 2, "y": 0}, {"matrix": [0, 3], "x": 3, "y": 0}, {"matrix": [0, 4], "x": 4, "y": 0}, - {"matrix": [4, 4], "x": 11, "y": 0}, {"matrix": [4, 3], "x": 12, "y": 0}, {"matrix": [4, 2], "x": 13, "y": 0}, {"matrix": [4, 1], "x": 14, "y": 0}, {"matrix": [4, 0], "x": 15, "y": 0}, - {"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1}, {"matrix": [1, 2], "x": 2, "y": 1}, {"matrix": [1, 3], "x": 3, "y": 1}, {"matrix": [1, 4], "x": 4, "y": 1}, - {"matrix": [5, 4], "x": 11, "y": 1}, {"matrix": [5, 3], "x": 12, "y": 1}, {"matrix": [5, 2], "x": 13, "y": 1}, {"matrix": [5, 1], "x": 14, "y": 1}, {"matrix": [5, 0], "x": 15, "y": 1}, - {"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, {"matrix": [2, 2], "x": 2, "y": 2}, {"matrix": [2, 3], "x": 3, "y": 2}, {"matrix": [2, 4], "x": 4, "y": 2}, - {"matrix": [6, 4], "x": 11, "y": 2}, {"matrix": [6, 3], "x": 12, "y": 2}, {"matrix": [6, 2], "x": 13, "y": 2}, {"matrix": [6, 1], "x": 14, "y": 2}, {"matrix": [6, 0], "x": 15, "y": 2}, - {"matrix": [3, 2], "x": 4, "y": 3}, {"matrix": [3, 3], "x": 5, "y": 3}, {"matrix": [3, 0], "x": 6, "y": 3}, - {"matrix": [7, 0], "x": 9, "y": 3}, {"matrix": [7, 3], "x": 10, "y": 3}, {"matrix": [7, 2], "x": 11, "y": 3} diff --git a/keyboards/bastardkb/skeletyl/keymaps/default/keymap.c b/keyboards/bastardkb/skeletyl/keymaps/default/keymap.c deleted file mode 100644 index 1f49629c88..0000000000 --- a/keyboards/bastardkb/skeletyl/keymaps/default/keymap.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * - * This 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_split_3x5_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, KC_SPC , MO(1), MO(2), KC_ENT , KC_RALT - //`--------------------------' `--------------------------' - - ), - - [1] = LAYOUT_split_3x5_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, KC_SPC, _______, MO(3), KC_ENT, KC_RALT - //`--------------------------' `--------------------------' - ), - - [2] = LAYOUT_split_3x5_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, KC_SPC, MO(3), _______, KC_ENT, KC_RALT - //`--------------------------' `--------------------------' - ), - - [3] = LAYOUT_split_3x5_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - RM_HUEU, RM_SATU, RM_VALU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - RM_HUED, RM_SATD, RM_VALD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, KC_SPC, _______, _______, KC_ENT, KC_RALT - //`--------------------------' `--------------------------' - ) -}; diff --git a/keyboards/bastardkb/skeletyl/keymaps/default/keymap.json b/keyboards/bastardkb/skeletyl/keymaps/default/keymap.json new file mode 100644 index 0000000000..5253ca2a12 --- /dev/null +++ b/keyboards/bastardkb/skeletyl/keymaps/default/keymap.json @@ -0,0 +1,26 @@ +{ + "keyboard": "bastardkb/skeletyl/promicro", + "keymap": "default", + "layout": "LAYOUT_split_3x5_3", + "layers": [ + [ + "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", + "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", + "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", + "KC_LGUI", "MO(1)", "KC_SPC", "KC_ENT", "MO(2)", "KC_RALT" + ], + [ + "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", + "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", "_______" + ], + [ + "QK_BOOT", "_______", "_______", "_______", "_______", "RM_VALU", "RM_HUEU", "RM_SATU", "RM_NEXT", "RM_TOGG", + "EE_CLR", "_______", "_______", "_______", "_______", "RM_VALD", "RM_HUED", "RM_SATD", "RM_PREV", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", "_______" + ] + ] +} + diff --git a/keyboards/bastardkb/skeletyl/promicro/keyboard.json b/keyboards/bastardkb/skeletyl/promicro/keyboard.json new file mode 100644 index 0000000000..d9c399865b --- /dev/null +++ b/keyboards/bastardkb/skeletyl/promicro/keyboard.json @@ -0,0 +1,15 @@ +{ + "development_board": "elite_c", + "matrix_pins": { + "cols": ["F5", "B6", "D7", "E6", "B4"], + "rows": ["F7", "C6", "D4", "B5"] + }, + "split": { + "serial": { + "pin": "D2" + } + }, + "ws2812": { + "pin": "D3" + } +} diff --git a/keyboards/bastardkb/skeletyl/readme.md b/keyboards/bastardkb/skeletyl/readme.md index bd05820d35..7299964968 100644 --- a/keyboards/bastardkb/skeletyl/readme.md +++ b/keyboards/bastardkb/skeletyl/readme.md @@ -1,31 +1,27 @@ # Skeletyl -A very small keyboard made for ergonomic enthusiasts. +* Keyboard Maintainer: [Quentin Lebastard](https://github.com/bastardkb) +* Hardware Supported: BastardKB Blackpill or Pro Micro adapter & compatible development boards +* Hardware Availability: [GitHub](https://github.com/Bastardkb/Skeletyl) -* Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/) -* Hardware Supported: elite-C V4 -* Hardware Availability: [Bastardkb.com](https://bastardkb.com/) +Make example for this keyboard (after setting up your build environment): -## Building the firmware + make bastardkb/skeletyl/blackpill:default + make bastardkb/skeletyl/promicro:default -**You must specify the shield version when compiling/flashing the firmware.** +Flashing example for this keyboard: -The template is: + make bastardkb/skeletyl/blackpill:default:flash + make bastardkb/skeletyl/promicro:default:flash -```shell -qmk compile -kb bastardkb/skeletyl/{VERSION}/elitec -km {KEYMAP} -``` - -| Shield Version | default | via | -| --------------- | --------------------------------------------------------------- | ----------------------------------------------------------- | -| v1 (Elite-C) | `qmk compile -kb bastardkb/skeletyl/v1/elitec -km default` | `qmk compile -kb bastardkb/skeletyl/v1/elitec -km via` | -| v2 (Elite-C) | `qmk compile -kb bastardkb/skeletyl/v2/elitec -km default` | `qmk compile -kb bastardkb/skeletyl/v2/elitec -km via` | -| v2 (Splinky v2) | `qmk compile -kb bastardkb/skeletyl/v2/splinky_2 -km default` | `qmk compile -kb bastardkb/skeletyl/v2/splinky_2 -km via` | -| v2 (Splinky v3) | `qmk compile -kb bastardkb/skeletyl/v2/splinky_3 -km default` | `qmk compile -kb bastardkb/skeletyl/v2/splinky_3 -km via` | -| v2 (STeMCell) | `qmk compile -kb bastardkb/skeletyl/v2/stemcell -km default` | `qmk compile -kb bastardkb/skeletyl/v2/stemcell -km via` | - -This keyboard is made to be used with the Miryoku layout, do not use the default keymap. +Note if using the `promicro` version: If you are using an Elite-C compatible development board, see [here](../readme.md#handedness-pin-on-elite-c-holder) for setting handedness by pin. 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). -See the [keyboard build instructions](http://docs.bastardkb.com/) +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the adapter PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/bastardkb/skeletyl/skeletyl.c b/keyboards/bastardkb/skeletyl/skeletyl.c deleted file mode 100644 index 6c65c3fa87..0000000000 --- a/keyboards/bastardkb/skeletyl/skeletyl.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * - * This 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" - -/** - * LEDs index. - * - * ╭────────────────────╮ ╭────────────────────╮ - * 2 3 8 9 12 30 27 26 21 20 - * ├────────────────────┤ ├────────────────────┤ - * 1 4 7 10 13 31 28 25 22 19 - * ├────────────────────┤ ├────────────────────┤ - * 0 5 6 11 14 32 29 24 23 18 - * ╰────────────────────╯ ╰────────────────────╯ - * 15 16 17 35 34 33 - * ╰────────────╯ ╰────────────╯ - */ -// clang-format off -#ifdef RGB_MATRIX_ENABLE -led_config_t g_led_config = { { - /* Key Matrix to LED index. */ - // Left split. - { 2, 3, 8, 9, 12 }, // Top row - { 1, 4, 7, 10, 13 }, // Middle row - { 0, 5, 6, 11, 14 }, // Bottom row - { 17, NO_LED, 15, 16, NO_LED }, // Thumb cluster - // Right split. - { 20, 21, 26, 27, 30 }, // Top row - { 19, 22, 25, 28, 31 }, // Middle row - { 18, 23, 24, 29, 32 }, // Bottom row - { 35, NO_LED, 33, 34, NO_LED }, // Thumb cluster -}, { - /* LED index to physical position. */ - // Left split. - /* index=0 */ { 0, 42 }, { 0, 21 }, { 0, 0 }, // col 1 (left most) - /* index=3 */ { 18, 0 }, { 18, 21 }, { 18, 42 }, // col 2 - /* index=6 */ { 36, 42 }, { 36, 21 }, { 36, 0 }, - /* index=9 */ { 54, 0 }, { 54, 21 }, { 54, 42 }, - /* index=12 */ { 72, 0 }, { 72, 21 }, { 72, 42 }, - /* index=15 */ { 72, 64 }, { 90, 64 }, { 108, 64 }, // Thumb cluster - // Right split. - /* index=18 */ { 224, 42 }, { 224, 21 }, { 224, 0 }, // col 10 (right most) - /* index=21 */ { 206, 0 }, { 206, 21 }, { 206, 42 }, // col 9 - /* index=24 */ { 188, 42 }, { 188, 21 }, { 188, 0 }, - /* index=27 */ { 170, 0 }, { 170, 21 }, { 170, 42 }, - /* index=30 */ { 152, 0 }, { 152, 21 }, { 152, 42 }, - /* index=33 */ { 152, 64 }, { 134, 64 }, { 116, 64 }, // Thumb cluster -}, { - /* LED index to flag. */ - // Left split. - /* index=0 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 1 - /* index=3 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 2 - /* index=6 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=9 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=12 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=15 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster - // Right split. - /* index=18 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 10 - /* index=21 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 9 - /* index=24 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=27 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=30 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=33 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster -} }; -#endif -// clang-format on diff --git a/keyboards/bastardkb/skeletyl/v1/elitec/config.h b/keyboards/bastardkb/skeletyl/v1/elitec/config.h deleted file mode 100644 index 41b5aa1c66..0000000000 --- a/keyboards/bastardkb/skeletyl/v1/elitec/config.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT diff --git a/keyboards/bastardkb/skeletyl/v1/elitec/keyboard.json b/keyboards/bastardkb/skeletyl/v1/elitec/keyboard.json deleted file mode 100644 index 3bbba6d310..0000000000 --- a/keyboards/bastardkb/skeletyl/v1/elitec/keyboard.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "keyboard_name": "Skeletyl Elite-C", - "usb": { - "device_version": "1.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true - }, - "ws2812": { - "pin": "D2" - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["E6", "C6", "B1", "B3", "B2"], - "rows": ["B5", "F7", "F6", "B6"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "D0" - } - }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu" -} diff --git a/keyboards/bastardkb/skeletyl/v1/elitec/rules.mk b/keyboards/bastardkb/skeletyl/v1/elitec/rules.mk deleted file mode 100644 index 1868c4bb02..0000000000 --- a/keyboards/bastardkb/skeletyl/v1/elitec/rules.mk +++ /dev/null @@ -1 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported diff --git a/keyboards/bastardkb/skeletyl/v2/elitec/config.h b/keyboards/bastardkb/skeletyl/v2/elitec/config.h deleted file mode 100644 index e6b7fefa66..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/elitec/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT diff --git a/keyboards/bastardkb/skeletyl/v2/elitec/keyboard.json b/keyboards/bastardkb/skeletyl/v2/elitec/keyboard.json deleted file mode 100644 index 43675db36d..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/elitec/keyboard.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "keyboard_name": "Skeletyl Elite-C", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true - }, - "ws2812": { - "pin": "D3" - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["F5", "B6", "D7", "E6", "B4"], - "rows": ["F7", "C6", "D4", "B5"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "D2" - } - }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu" -} diff --git a/keyboards/bastardkb/skeletyl/v2/elitec/rules.mk b/keyboards/bastardkb/skeletyl/v2/elitec/rules.mk deleted file mode 100644 index 1868c4bb02..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/elitec/rules.mk +++ /dev/null @@ -1 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported diff --git a/keyboards/bastardkb/skeletyl/v2/splinky_2/config.h b/keyboards/bastardkb/skeletyl/v2/splinky_2/config.h deleted file mode 100644 index 977fb0a6e8..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/splinky_2/config.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define SPLIT_HAND_PIN GP13 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/skeletyl/v2/splinky_2/keyboard.json b/keyboards/bastardkb/skeletyl/v2/splinky_2/keyboard.json deleted file mode 100644 index 32030dbd00..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/splinky_2/keyboard.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "keyboard_name": "Skeletyl Splinky", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["GP28", "GP15", "GP6", "GP7", "GP8"], - "rows": ["GP26", "GP5", "GP4", "GP9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "ws2812": { - "pin": "GP0", - "driver": "vendor" - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/skeletyl/v2/splinky_2/readme.md b/keyboards/bastardkb/skeletyl/v2/splinky_2/readme.md deleted file mode 100644 index 662eb5825c..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/splinky_2/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Splinky controller - -The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040. - -See [plut0nium/0xB2](https://github.com/plut0nium/0xB2/#releases) to figure out the right version for you (v2 or v3). diff --git a/keyboards/bastardkb/skeletyl/v2/splinky_2/rules.mk b/keyboards/bastardkb/skeletyl/v2/splinky_2/rules.mk deleted file mode 100644 index 077573eb76..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/splinky_2/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -SERIAL_DRIVER = vendor diff --git a/keyboards/bastardkb/skeletyl/v2/splinky_3/config.h b/keyboards/bastardkb/skeletyl/v2/splinky_3/config.h deleted file mode 100644 index e496023656..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/splinky_3/config.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define SPLIT_HAND_PIN GP15 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/skeletyl/v2/splinky_3/keyboard.json b/keyboards/bastardkb/skeletyl/v2/splinky_3/keyboard.json deleted file mode 100644 index 51227f5065..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/splinky_3/keyboard.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "keyboard_name": "Skeletyl Splinky", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["GP28", "GP21", "GP6", "GP7", "GP8"], - "rows": ["GP26", "GP5", "GP4", "GP9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "ws2812": { - "pin": "GP0", - "driver": "vendor" - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/skeletyl/v2/splinky_3/readme.md b/keyboards/bastardkb/skeletyl/v2/splinky_3/readme.md deleted file mode 100644 index 662eb5825c..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/splinky_3/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Splinky controller - -The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040. - -See [plut0nium/0xB2](https://github.com/plut0nium/0xB2/#releases) to figure out the right version for you (v2 or v3). diff --git a/keyboards/bastardkb/skeletyl/v2/splinky_3/rules.mk b/keyboards/bastardkb/skeletyl/v2/splinky_3/rules.mk deleted file mode 100644 index 077573eb76..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/splinky_3/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -SERIAL_DRIVER = vendor diff --git a/keyboards/bastardkb/skeletyl/v2/stemcell/config.h b/keyboards/bastardkb/skeletyl/v2/stemcell/config.h deleted file mode 100644 index ca1cc0f719..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/stemcell/config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define A0 PAL_LINE(GPIOA, 0) -// #define SPLIT_HAND_PIN A0 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* RGB settings. */ -#define WS2812_PWM_DRIVER PWMD2 -#define WS2812_PWM_CHANNEL 4 -#define WS2812_PWM_PAL_MODE 1 -#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM7 -#define WS2812_PWM_DMA_CHANNEL 3 - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED diff --git a/keyboards/bastardkb/skeletyl/v2/stemcell/halconf.h b/keyboards/bastardkb/skeletyl/v2/stemcell/halconf.h deleted file mode 100644 index dbeb6aeaa0..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/stemcell/halconf.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define HAL_USE_PWM TRUE -#define HAL_USE_SERIAL TRUE - -#include_next diff --git a/keyboards/bastardkb/skeletyl/v2/stemcell/keyboard.json b/keyboards/bastardkb/skeletyl/v2/stemcell/keyboard.json deleted file mode 100644 index 2e9745b7f2..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/stemcell/keyboard.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "keyboard_name": "Skeletyl STeMCell", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "ws2812": { - "pin": "A2", - "driver": "pwm" - }, - "build": { - "debounce_type": "asym_eager_defer_pk" - }, - "matrix_pins": { - "cols": ["B2", "A4", "B4", "B5", "B8"], - "rows": ["B0", "B3", "A15", "B9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "A3" - } - }, - "development_board": "stemcell" -} diff --git a/keyboards/bastardkb/skeletyl/v2/stemcell/mcuconf.h b/keyboards/bastardkb/skeletyl/v2/stemcell/mcuconf.h deleted file mode 100644 index 6afebade36..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/stemcell/mcuconf.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2021 Charly Delay (@0xcharly) - * - * This 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_SERIAL_USE_USART1 -#define STM32_SERIAL_USE_USART1 FALSE - -#undef STM32_PWM_USE_TIM2 -#define STM32_PWM_USE_TIM2 TRUE - -#undef STM32_ST_USE_TIMER -#define STM32_ST_USE_TIMER 5 diff --git a/keyboards/bastardkb/skeletyl/v2/stemcell/rules.mk b/keyboards/bastardkb/skeletyl/v2/stemcell/rules.mk deleted file mode 100644 index 3fe3e4ffbe..0000000000 --- a/keyboards/bastardkb/skeletyl/v2/stemcell/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -SERIAL_DRIVER = usart From 3d6113956707f9e90a6cca2025e5fa5db35013b3 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 9 Jul 2025 20:54:43 +0100 Subject: [PATCH 064/167] Miscellaneous fixes for lint warnings (#25469) --- keyboards/handwired/pytest/basic/keymaps/default/keymap.c | 2 ++ .../pytest/has_community/keymaps/default/default/keymap.c | 7 +++++++ keyboards/kinesis/kint32/keyboard.json | 2 -- keyboards/trnthsn/s6xtyfs/info.json | 1 - 4 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 keyboards/handwired/pytest/has_community/keymaps/default/default/keymap.c diff --git a/keyboards/handwired/pytest/basic/keymaps/default/keymap.c b/keyboards/handwired/pytest/basic/keymaps/default/keymap.c index a5782f7a13..264de943c9 100644 --- a/keyboards/handwired/pytest/basic/keymaps/default/keymap.c +++ b/keyboards/handwired/pytest/basic/keymaps/default/keymap.c @@ -1,3 +1,5 @@ +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/handwired/pytest/has_community/keymaps/default/default/keymap.c b/keyboards/handwired/pytest/has_community/keymaps/default/default/keymap.c new file mode 100644 index 0000000000..264de943c9 --- /dev/null +++ b/keyboards/handwired/pytest/has_community/keymaps/default/default/keymap.c @@ -0,0 +1,7 @@ +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT_ortho_1x1(KC_A) +}; diff --git a/keyboards/kinesis/kint32/keyboard.json b/keyboards/kinesis/kint32/keyboard.json index 4f403c2ffa..2a46bbe12b 100644 --- a/keyboards/kinesis/kint32/keyboard.json +++ b/keyboards/kinesis/kint32/keyboard.json @@ -9,8 +9,6 @@ "diode_direction": "COL2ROW", "features": { "bootmagic": true, - "command": false, - "console": false, "extrakey": true, "mousekey": true, "nkro": true diff --git a/keyboards/trnthsn/s6xtyfs/info.json b/keyboards/trnthsn/s6xtyfs/info.json index 132c1a4e97..2599ff2504 100644 --- a/keyboards/trnthsn/s6xtyfs/info.json +++ b/keyboards/trnthsn/s6xtyfs/info.json @@ -39,7 +39,6 @@ "led_count": 28, "sleep": true }, - "url": "", "usb": { "device_version": "1.0.0", "pid": "0x3666", From 4b295009ae9595e5bc07e6f4445abe91629458ea Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Thu, 10 Jul 2025 10:41:58 +0100 Subject: [PATCH 065/167] Migrate `usb.force_nkro` to `host.default.nkro` (#25468) --- keyboards/akko/5087/keyboard.json | 8 ++++++-- keyboards/akko/5108/keyboard.json | 8 ++++++-- keyboards/akko/acr87/keyboard.json | 8 ++++++-- keyboards/akko/top40/keyboard.json | 8 ++++++-- keyboards/amjkeyboard/amj84/keyboard.json | 8 ++++++-- keyboards/atlantis/ak81_ve/keyboard.json | 8 ++++++-- keyboards/bt66tech/bt66tech60/keyboard.json | 8 ++++++-- keyboards/bubble75/hotswap/keyboard.json | 6 +++++- keyboards/cest73/tkm/keyboard.json | 8 ++++++-- keyboards/chaos65/keyboard.json | 8 ++++++-- keyboards/chosfox/cf81/keyboard.json | 6 +++++- keyboards/custommk/elysian/keyboard.json | 8 ++++++-- keyboards/doio/kb16/info.json | 8 ++++++-- keyboards/dotmod/dymium65/keyboard.json | 8 ++++++-- keyboards/ducky/one2mini/1861st/keyboard.json | 8 ++++++-- keyboards/ducky/one2sf/1967st/keyboard.json | 8 ++++++-- keyboards/eason/aeroboard/keyboard.json | 8 ++++++-- keyboards/eason/meow65/keyboard.json | 8 ++++++-- keyboards/eason/void65h/keyboard.json | 8 ++++++-- keyboards/epomaker/tide65/keyboard.json | 6 +++++- keyboards/fancytech/fancyalice66/keyboard.json | 6 +++++- keyboards/gboards/butterstick/keyboard.json | 8 ++++++-- keyboards/gboards/georgi/keyboard.json | 8 ++++++-- keyboards/gopolar/gg86/keyboard.json | 6 +++++- keyboards/handwired/arrow_pad/keyboard.json | 8 ++++++-- keyboards/handwired/datahand/keyboard.json | 8 ++++++-- keyboards/handwired/mutepad/keyboard.json | 8 ++++++-- keyboards/handwired/retro_refit/keyboard.json | 8 ++++++-- keyboards/handwired/split_cloud/keyboard.json | 8 ++++++-- keyboards/handwired/twig/twig50/keyboard.json | 8 ++++++-- keyboards/handwired/wulkan/keyboard.json | 8 ++++++-- keyboards/handwired/xealous/rev1/keyboard.json | 8 ++++++-- keyboards/hfdkb/ac001/keyboard.json | 8 ++++++-- keyboards/horrortroll/chinese_pcb/black_e65/keyboard.json | 8 ++++++-- .../horrortroll/chinese_pcb/devil68_pro/keyboard.json | 8 ++++++-- keyboards/horrortroll/handwired_k552/keyboard.json | 8 ++++++-- keyboards/horrortroll/lemon40/keyboard.json | 8 ++++++-- keyboards/horrortroll/paws60/keyboard.json | 8 ++++++-- keyboards/idobao/id42/keyboard.json | 8 ++++++-- keyboards/inland/kb83/keyboard.json | 8 ++++++-- keyboards/inland/mk47/keyboard.json | 6 +++++- keyboards/inland/v83p/keyboard.json | 6 +++++- keyboards/kabedon/kabedon98e/keyboard.json | 8 ++++++-- keyboards/kb_elmo/gamehand/keyboard.json | 8 ++++++-- keyboards/kbdfans/kbd75hs/keyboard.json | 8 ++++++-- keyboards/keychron/q0/info.json | 6 +++++- keyboards/keychron/q1v1/info.json | 6 +++++- keyboards/keyspensory/kp60/keyboard.json | 8 ++++++-- keyboards/kingly_keys/little_foot/keyboard.json | 8 ++++++-- keyboards/kingly_keys/smd_milk/keyboard.json | 8 ++++++-- keyboards/kprepublic/bm65hsrgb_iso/rev1/keyboard.json | 8 ++++++-- keyboards/lendunistus/rpneko65/rev1/keyboard.json | 6 +++++- keyboards/linworks/dolice/keyboard.json | 8 ++++++-- keyboards/linworks/fave87/keyboard.json | 8 ++++++-- keyboards/linworks/whale75/keyboard.json | 8 ++++++-- keyboards/magic_force/mf17/keyboard.json | 6 +++++- keyboards/magic_force/mf34/keyboard.json | 8 ++++++-- keyboards/mechllama/g35/info.json | 8 ++++++-- keyboards/mechwild/bbs/keyboard.json | 6 +++++- keyboards/mechwild/sugarglider/info.json | 6 +++++- keyboards/miiiw/blackio83/rev_0100/keyboard.json | 6 +++++- keyboards/millipad/keyboard.json | 8 ++++++-- keyboards/misonoworks/chocolatebar/keyboard.json | 8 ++++++-- keyboards/misonoworks/karina/keyboard.json | 8 ++++++-- keyboards/ml/gas75/keyboard.json | 8 ++++++-- keyboards/mmkeyboard/class60/soldered/keyboard.json | 6 +++++- keyboards/mmkzoo65/keyboard.json | 6 +++++- keyboards/monsgeek/m1/keyboard.json | 6 +++++- keyboards/monsgeek/m3/keyboard.json | 8 ++++++-- keyboards/monsgeek/m5/keyboard.json | 8 ++++++-- keyboards/monsgeek/m6/keyboard.json | 6 +++++- keyboards/mss_studio/m63_rgb/keyboard.json | 8 ++++++-- keyboards/mss_studio/m64_rgb/keyboard.json | 8 ++++++-- keyboards/mwstudio/alicekk/keyboard.json | 8 ++++++-- keyboards/mwstudio/mw660/keyboard.json | 8 ++++++-- keyboards/omnikeyish/keyboard.json | 8 ++++++-- keyboards/opendeck/32/info.json | 8 ++++++-- keyboards/owlab/jelly_epoch/hotswap/keyboard.json | 8 ++++++-- keyboards/owlab/jelly_epoch/soldered/keyboard.json | 8 ++++++-- keyboards/owlab/spring/keyboard.json | 8 ++++++-- keyboards/owlab/suit80/ansi/keyboard.json | 8 ++++++-- keyboards/owlab/suit80/iso/keyboard.json | 8 ++++++-- keyboards/owlab/voice65/hotswap/keyboard.json | 8 ++++++-- keyboards/owlab/voice65/soldered/keyboard.json | 8 ++++++-- keyboards/phentech/rpk_001/keyboard.json | 6 +++++- keyboards/polycarbdiet/s20/keyboard.json | 8 ++++++-- keyboards/qwertykeys/qk65/hotswap/keyboard.json | 8 ++++++-- keyboards/qwertykeys/qk65/solder/keyboard.json | 8 ++++++-- keyboards/rate/pistachio/info.json | 8 ++++++-- keyboards/rate/pistachio_mp/keyboard.json | 8 ++++++-- keyboards/rose75/keyboard.json | 6 +++++- keyboards/runes/skjoldr/keyboard.json | 8 ++++++-- keyboards/runes/vaengr/keyboard.json | 8 ++++++-- keyboards/ryanskidmore/rskeys100/keyboard.json | 8 ++++++-- keyboards/sawnsprojects/bunnygirl65/keyboard.json | 6 +++++- keyboards/sawnsprojects/okayu/info.json | 8 ++++++-- keyboards/sixkeyboard/keyboard.json | 8 ++++++-- keyboards/skmt/15k/keyboard.json | 8 ++++++-- keyboards/skyloong/gk61/v1/keyboard.json | 8 ++++++-- keyboards/stenokeyboards/the_uni/pro_micro/keyboard.json | 8 ++++++-- keyboards/stenokeyboards/the_uni/rp_2040/keyboard.json | 8 ++++++-- keyboards/stenokeyboards/the_uni/usb_c/keyboard.json | 8 ++++++-- keyboards/synthlabs/060/keyboard.json | 8 ++++++-- keyboards/synthlabs/065/keyboard.json | 6 +++++- keyboards/synthlabs/solo/keyboard.json | 8 ++++++-- keyboards/tacworks/tac_k1/keyboard.json | 6 +++++- keyboards/teleport/native/info.json | 8 ++++++-- keyboards/tweetydabird/lotus58/info.json | 6 +++++- keyboards/vertex/angle65/keyboard.json | 8 ++++++-- keyboards/vertex/arc60/keyboard.json | 8 ++++++-- keyboards/vertex/arc60h/keyboard.json | 8 ++++++-- keyboards/vertex/cycle8/keyboard.json | 8 ++++++-- keyboards/vertex/t75/keyboard.json | 6 +++++- keyboards/viktus/at101_bh/keyboard.json | 8 ++++++-- keyboards/viktus/omnikey_bh/keyboard.json | 8 ++++++-- keyboards/viktus/z150_bh/keyboard.json | 8 ++++++-- keyboards/willoucom/keypad/keyboard.json | 6 +++++- keyboards/wuque/tata80/wk/keyboard.json | 8 ++++++-- keyboards/wuque/tata80/wkl/keyboard.json | 8 ++++++-- keyboards/xelus/dharma/keyboard.json | 8 ++++++-- keyboards/xelus/pachi/rgb/rev1/keyboard.json | 8 ++++++-- keyboards/xelus/rs108/keyboard.json | 6 +++++- keyboards/xelus/rs60/rev1/keyboard.json | 8 ++++++-- keyboards/xelus/rs60/rev2_0/keyboard.json | 6 +++++- keyboards/xelus/rs60/rev2_1/keyboard.json | 6 +++++- keyboards/yandrstudio/zhou65/keyboard.json | 8 ++++++-- 126 files changed, 727 insertions(+), 223 deletions(-) diff --git a/keyboards/akko/5087/keyboard.json b/keyboards/akko/5087/keyboard.json index 0561817b69..564a5519a9 100644 --- a/keyboards/akko/5087/keyboard.json +++ b/keyboards/akko/5087/keyboard.json @@ -7,8 +7,12 @@ "vid": "0xFFFE", "pid": "0x000C", "device_version": "1.0.4", - "suspend_wakeup_delay": 400, - "force_nkro": true + "suspend_wakeup_delay": 400 + }, + "host": { + "default": { + "nkro": true + } }, "processor": "WB32FQ95", "bootloader": "wb32-dfu", diff --git a/keyboards/akko/5108/keyboard.json b/keyboards/akko/5108/keyboard.json index b62dbbf17c..a393f952d8 100644 --- a/keyboards/akko/5108/keyboard.json +++ b/keyboards/akko/5108/keyboard.json @@ -7,8 +7,12 @@ "vid": "0xFFFE", "pid": "0x000D", "device_version": "1.0.3", - "suspend_wakeup_delay": 400, - "force_nkro": true + "suspend_wakeup_delay": 400 + }, + "host": { + "default": { + "nkro": true + } }, "processor": "WB32FQ95", "bootloader": "wb32-dfu", diff --git a/keyboards/akko/acr87/keyboard.json b/keyboards/akko/acr87/keyboard.json index 17981b609a..bf72c511b5 100644 --- a/keyboards/akko/acr87/keyboard.json +++ b/keyboards/akko/acr87/keyboard.json @@ -7,8 +7,12 @@ "vid": "0xFFFE", "pid": "0x0010", "device_version": "1.0.1", - "suspend_wakeup_delay": 400, - "force_nkro": true + "suspend_wakeup_delay": 400 + }, + "host": { + "default": { + "nkro": true + } }, "processor": "WB32FQ95", "bootloader": "wb32-dfu", diff --git a/keyboards/akko/top40/keyboard.json b/keyboards/akko/top40/keyboard.json index 3cb7086608..857ffda276 100644 --- a/keyboards/akko/top40/keyboard.json +++ b/keyboards/akko/top40/keyboard.json @@ -7,8 +7,12 @@ "vid": "0xFFFE", "pid": "0x000E", "device_version": "1.0.2", - "suspend_wakeup_delay": 400, - "force_nkro": true + "suspend_wakeup_delay": 400 + }, + "host": { + "default": { + "nkro": true + } }, "processor": "WB32FQ95", "bootloader": "wb32-dfu", diff --git a/keyboards/amjkeyboard/amj84/keyboard.json b/keyboards/amjkeyboard/amj84/keyboard.json index a6108ab9a7..4ef3bfb776 100644 --- a/keyboards/amjkeyboard/amj84/keyboard.json +++ b/keyboards/amjkeyboard/amj84/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x00D8", "pid": "0x6068", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "backlight": true, diff --git a/keyboards/atlantis/ak81_ve/keyboard.json b/keyboards/atlantis/ak81_ve/keyboard.json index 7c01714201..3868625d93 100644 --- a/keyboards/atlantis/ak81_ve/keyboard.json +++ b/keyboards/atlantis/ak81_ve/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x416B", "pid": "0x0081", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgb_matrix": { "animations": { diff --git a/keyboards/bt66tech/bt66tech60/keyboard.json b/keyboards/bt66tech/bt66tech60/keyboard.json index 9f747397c3..2b476a6eea 100644 --- a/keyboards/bt66tech/bt66tech60/keyboard.json +++ b/keyboards/bt66tech/bt66tech60/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4254", "pid": "0x7070", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "backlight": true, diff --git a/keyboards/bubble75/hotswap/keyboard.json b/keyboards/bubble75/hotswap/keyboard.json index 92f57144ce..47f658349f 100644 --- a/keyboards/bubble75/hotswap/keyboard.json +++ b/keyboards/bubble75/hotswap/keyboard.json @@ -6,9 +6,13 @@ "vid": "0x4242", "pid": "0x5A4C", "device_version": "0.0.1", - "force_nkro": true, "no_startup_check": true }, + "host": { + "default": { + "nkro": true + } + }, "features": { "bootmagic": true, "mousekey": false, diff --git a/keyboards/cest73/tkm/keyboard.json b/keyboards/cest73/tkm/keyboard.json index 5fc85d0e75..31e592ec05 100644 --- a/keyboards/cest73/tkm/keyboard.json +++ b/keyboards/cest73/tkm/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0xBADD", "pid": "0xAA55", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "backlight": true, diff --git a/keyboards/chaos65/keyboard.json b/keyboards/chaos65/keyboard.json index c2a3d4b1a5..87f03b3a75 100644 --- a/keyboards/chaos65/keyboard.json +++ b/keyboards/chaos65/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0xB23B", "pid": "0x1688", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/chosfox/cf81/keyboard.json b/keyboards/chosfox/cf81/keyboard.json index 9ff5e35fbd..333841fdf1 100644 --- a/keyboards/chosfox/cf81/keyboard.json +++ b/keyboards/chosfox/cf81/keyboard.json @@ -3,12 +3,16 @@ "manufacturer": "CHOSFOX", "maintainer": "jonylee@hfd", "usb": { - "force_nkro": true, "vid": "0xFFFE", "pid": "0x0012", "device_version": "1.0.0", "suspend_wakeup_delay": 400 }, + "host": { + "default": { + "nkro": true + } + }, "eeprom": { "driver": "wear_leveling", "wear_leveling": { diff --git a/keyboards/custommk/elysian/keyboard.json b/keyboards/custommk/elysian/keyboard.json index 4fc842149d..9055b70025 100644 --- a/keyboards/custommk/elysian/keyboard.json +++ b/keyboards/custommk/elysian/keyboard.json @@ -30,8 +30,12 @@ "usb": { "device_version": "1.0.0", "pid": "0xFABB", - "vid": "0xF35B", - "force_nkro": true + "vid": "0xF35B" + }, + "host": { + "default": { + "nkro": true + } }, "encoder": { "rotary": [ diff --git a/keyboards/doio/kb16/info.json b/keyboards/doio/kb16/info.json index 08c19819bb..7b27370707 100644 --- a/keyboards/doio/kb16/info.json +++ b/keyboards/doio/kb16/info.json @@ -4,8 +4,12 @@ "maintainer": "HorrorTroll", "usb": { "vid": "0xD010", - "pid": "0x1601", - "force_nkro": true + "pid": "0x1601" + }, + "host": { + "default": { + "nkro": true + } }, "diode_direction": "COL2ROW", "build": { diff --git a/keyboards/dotmod/dymium65/keyboard.json b/keyboards/dotmod/dymium65/keyboard.json index 301b69edc5..a76bc91cd6 100644 --- a/keyboards/dotmod/dymium65/keyboard.json +++ b/keyboards/dotmod/dymium65/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0x5678", "pid": "0x5058", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "diode_direction": "ROW2COL", "matrix_pins": { diff --git a/keyboards/ducky/one2mini/1861st/keyboard.json b/keyboards/ducky/one2mini/1861st/keyboard.json index e1ab218846..9f0010e6a7 100644 --- a/keyboards/ducky/one2mini/1861st/keyboard.json +++ b/keyboards/ducky/one2mini/1861st/keyboard.json @@ -4,8 +4,12 @@ "usb": { "vid": "0x0416", "pid": "0x0123", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "matrix_pins": { "cols": ["B10", "B9", "C13", "C12", "C11", "C10", "C9", "C8", "A15", "A14", "A13", "D0", "D1", "D2", "B8"], diff --git a/keyboards/ducky/one2sf/1967st/keyboard.json b/keyboards/ducky/one2sf/1967st/keyboard.json index 3bb58fd48f..093793d4c8 100644 --- a/keyboards/ducky/one2sf/1967st/keyboard.json +++ b/keyboards/ducky/one2sf/1967st/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x445B", "pid": "0x07AF", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "matrix_pins": { "cols": ["B10", "B9", "C13", "C12", "C11", "C10", "C9", "C8", "A15", "A14", "A13", "D0", "D1", "D2", "B15", "B8"], diff --git a/keyboards/eason/aeroboard/keyboard.json b/keyboards/eason/aeroboard/keyboard.json index 1c15e600c4..d48b9819d0 100644 --- a/keyboards/eason/aeroboard/keyboard.json +++ b/keyboards/eason/aeroboard/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x8954", "pid": "0x8870", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgblight": { "led_count": 20, diff --git a/keyboards/eason/meow65/keyboard.json b/keyboards/eason/meow65/keyboard.json index 013e7daf4b..20285b66c6 100644 --- a/keyboards/eason/meow65/keyboard.json +++ b/keyboards/eason/meow65/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x68F4", "pid": "0x70A0", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/eason/void65h/keyboard.json b/keyboards/eason/void65h/keyboard.json index 006cdb28b8..484b939871 100644 --- a/keyboards/eason/void65h/keyboard.json +++ b/keyboards/eason/void65h/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x51D7", "pid": "0x5517", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/epomaker/tide65/keyboard.json b/keyboards/epomaker/tide65/keyboard.json index 7a384f180f..47561f8af0 100644 --- a/keyboards/epomaker/tide65/keyboard.json +++ b/keyboards/epomaker/tide65/keyboard.json @@ -143,11 +143,15 @@ }, "usb": { "device_version": "0.0.1", - "force_nkro": true, "pid": "0xE463", "suspend_wakeup_delay": 1000, "vid": "0x342D" }, + "host": { + "default": { + "nkro": true + } + }, "ws2812": { "pin": "B15" }, diff --git a/keyboards/fancytech/fancyalice66/keyboard.json b/keyboards/fancytech/fancyalice66/keyboard.json index 869ebe7465..c1f0a93f26 100644 --- a/keyboards/fancytech/fancyalice66/keyboard.json +++ b/keyboards/fancytech/fancyalice66/keyboard.json @@ -162,10 +162,14 @@ "url": "https://www.aliexpress.com/item/1005004272392611.html", "usb": { "device_version": "0.0.1", - "force_nkro": true, "pid": "0x3663", "vid": "0xECED" }, + "host": { + "default": { + "nkro": true + } + }, "ws2812": { "pin": "B0" }, diff --git a/keyboards/gboards/butterstick/keyboard.json b/keyboards/gboards/butterstick/keyboard.json index b1401eb87c..5b5cf773c8 100644 --- a/keyboards/gboards/butterstick/keyboard.json +++ b/keyboards/gboards/butterstick/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0xFEED", "pid": "0x1337", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "build": { "lto": true diff --git a/keyboards/gboards/georgi/keyboard.json b/keyboards/gboards/georgi/keyboard.json index 0b403a5a44..1262201f88 100644 --- a/keyboards/gboards/georgi/keyboard.json +++ b/keyboards/gboards/georgi/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0xFEED", "pid": "0x1337", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "processor": "atmega32u4", "bootloader": "atmel-dfu", diff --git a/keyboards/gopolar/gg86/keyboard.json b/keyboards/gopolar/gg86/keyboard.json index a9944beea9..3412a7c63c 100644 --- a/keyboards/gopolar/gg86/keyboard.json +++ b/keyboards/gopolar/gg86/keyboard.json @@ -6,9 +6,13 @@ "vid": "0x0007", "pid": "0x0007", "device_version": "0.0.1", - "force_nkro": true, "no_startup_check": true }, + "host": { + "default": { + "nkro": true + } + }, "ws2812": { "pin": "E2" }, diff --git a/keyboards/handwired/arrow_pad/keyboard.json b/keyboards/handwired/arrow_pad/keyboard.json index f70645fe2a..a9d0c0d818 100644 --- a/keyboards/handwired/arrow_pad/keyboard.json +++ b/keyboards/handwired/arrow_pad/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0xFEED", "pid": "0x4096", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "backlight": true, diff --git a/keyboards/handwired/datahand/keyboard.json b/keyboards/handwired/datahand/keyboard.json index 1f1ebc07ee..3684dcc706 100644 --- a/keyboards/handwired/datahand/keyboard.json +++ b/keyboards/handwired/datahand/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x13BA", "pid": "0x0017", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "processor": "at90usb1286", "bootloader": "halfkay", diff --git a/keyboards/handwired/mutepad/keyboard.json b/keyboards/handwired/mutepad/keyboard.json index fd16cd7447..fdbfa025df 100644 --- a/keyboards/handwired/mutepad/keyboard.json +++ b/keyboards/handwired/mutepad/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0xFEED", "pid": "0x0000", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/handwired/retro_refit/keyboard.json b/keyboards/handwired/retro_refit/keyboard.json index 73e747fffa..cc1904cb0c 100644 --- a/keyboards/handwired/retro_refit/keyboard.json +++ b/keyboards/handwired/retro_refit/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0xFEED", "pid": "0x6060", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/handwired/split_cloud/keyboard.json b/keyboards/handwired/split_cloud/keyboard.json index fc1d2498df..b1e716ecde 100644 --- a/keyboards/handwired/split_cloud/keyboard.json +++ b/keyboards/handwired/split_cloud/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0xCC43", "pid": "0x0001", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "diode_direction": "ROW2COL", "matrix_pins": { diff --git a/keyboards/handwired/twig/twig50/keyboard.json b/keyboards/handwired/twig/twig50/keyboard.json index 836caf3ebc..6fc90a97c1 100644 --- a/keyboards/handwired/twig/twig50/keyboard.json +++ b/keyboards/handwired/twig/twig50/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0xFEED", "pid": "0x6060", - "device_version": "0.2.1", - "force_nkro": true + "device_version": "0.2.1" + }, + "host": { + "default": { + "nkro": true + } }, "tapping": { "term": 150 diff --git a/keyboards/handwired/wulkan/keyboard.json b/keyboards/handwired/wulkan/keyboard.json index c804409b7d..c79b71ce49 100644 --- a/keyboards/handwired/wulkan/keyboard.json +++ b/keyboards/handwired/wulkan/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0xFEED", "pid": "0x6060", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "matrix_pins": { "cols": ["B13", "B14", "B15", "B9", "B7", "B6", "B5", "B4", "B3", "B2", "B1", "B0"], diff --git a/keyboards/handwired/xealous/rev1/keyboard.json b/keyboards/handwired/xealous/rev1/keyboard.json index 55e99eeb54..ac7b27208f 100644 --- a/keyboards/handwired/xealous/rev1/keyboard.json +++ b/keyboards/handwired/xealous/rev1/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4131", "pid": "0x5141", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "build": { "debounce_type": "sym_eager_pk" diff --git a/keyboards/hfdkb/ac001/keyboard.json b/keyboards/hfdkb/ac001/keyboard.json index 8d96cad375..ee9aab074b 100644 --- a/keyboards/hfdkb/ac001/keyboard.json +++ b/keyboards/hfdkb/ac001/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0xFFFE", "pid": "0x0001", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgb_matrix": { "animations": { diff --git a/keyboards/horrortroll/chinese_pcb/black_e65/keyboard.json b/keyboards/horrortroll/chinese_pcb/black_e65/keyboard.json index c0946cf3a6..fd655f0c0d 100644 --- a/keyboards/horrortroll/chinese_pcb/black_e65/keyboard.json +++ b/keyboards/horrortroll/chinese_pcb/black_e65/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x7516", "pid": "0x7000", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "backlight": true, diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/keyboard.json b/keyboards/horrortroll/chinese_pcb/devil68_pro/keyboard.json index f10703ab5a..250cceb3e7 100644 --- a/keyboards/horrortroll/chinese_pcb/devil68_pro/keyboard.json +++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x7516", "pid": "0x7001", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgb_matrix": { "animations": { diff --git a/keyboards/horrortroll/handwired_k552/keyboard.json b/keyboards/horrortroll/handwired_k552/keyboard.json index 97f8ec822c..ecbcb4b779 100644 --- a/keyboards/horrortroll/handwired_k552/keyboard.json +++ b/keyboards/horrortroll/handwired_k552/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x7516", "pid": "0x5104", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "ws2812": { "pin": "C14" diff --git a/keyboards/horrortroll/lemon40/keyboard.json b/keyboards/horrortroll/lemon40/keyboard.json index 1c9993ca77..f2ff5be067 100644 --- a/keyboards/horrortroll/lemon40/keyboard.json +++ b/keyboards/horrortroll/lemon40/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x7516", "pid": "0x2434", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgblight": { "led_count": 15, diff --git a/keyboards/horrortroll/paws60/keyboard.json b/keyboards/horrortroll/paws60/keyboard.json index da03d362f9..da6e3a4fa2 100644 --- a/keyboards/horrortroll/paws60/keyboard.json +++ b/keyboards/horrortroll/paws60/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0x7516", "pid": "0x6060", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/idobao/id42/keyboard.json b/keyboards/idobao/id42/keyboard.json index 2b075a7ba1..0f1cecd16a 100644 --- a/keyboards/idobao/id42/keyboard.json +++ b/keyboards/idobao/id42/keyboard.json @@ -69,9 +69,13 @@ "vid": "0x6964", "pid": "0x0042", "device_version": "1.0.0", - "force_nkro": true, "polling_interval": 2 - }, + }, + "host": { + "default": { + "nkro": true + } + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/inland/kb83/keyboard.json b/keyboards/inland/kb83/keyboard.json index 2920da52e1..cd454cb93d 100644 --- a/keyboards/inland/kb83/keyboard.json +++ b/keyboards/inland/kb83/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0xFFFE", "pid": "0x0007", - "device_version": "1.0.0", - "force_nkro": true + "device_version": "1.0.0" + }, + "host": { + "default": { + "nkro": true + } }, "rgb_matrix": { "animations": { diff --git a/keyboards/inland/mk47/keyboard.json b/keyboards/inland/mk47/keyboard.json index a69ec2ac4a..c777f54d52 100644 --- a/keyboards/inland/mk47/keyboard.json +++ b/keyboards/inland/mk47/keyboard.json @@ -6,9 +6,13 @@ "vid": "0xFFFE", "pid": "0x0002", "device_version": "0.0.1", - "force_nkro": true, "suspend_wakeup_delay": 1000 }, + "host": { + "default": { + "nkro": true + } + }, "processor": "WB32FQ95", "bootloader": "wb32-dfu", "features": { diff --git a/keyboards/inland/v83p/keyboard.json b/keyboards/inland/v83p/keyboard.json index 5fad1a96d4..de93c5f372 100644 --- a/keyboards/inland/v83p/keyboard.json +++ b/keyboards/inland/v83p/keyboard.json @@ -8,9 +8,13 @@ "vid": "0xFFFE", "pid": "0x001B", "device_version": "1.0.3", - "force_nkro": true, "suspend_wakeup_delay": 1000 }, + "host": { + "default": { + "nkro": true + } + }, "diode_direction": "ROW2COL", "eeprom": { "driver": "wear_leveling", diff --git a/keyboards/kabedon/kabedon98e/keyboard.json b/keyboards/kabedon/kabedon98e/keyboard.json index 731c03dd74..70d0bb8ca4 100644 --- a/keyboards/kabedon/kabedon98e/keyboard.json +++ b/keyboards/kabedon/kabedon98e/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4B44", "pid": "0x3935", - "device_version": "0.0.2", - "force_nkro": true + "device_version": "0.0.2" + }, + "host": { + "default": { + "nkro": true + } }, "rgblight": { "led_count": 24, diff --git a/keyboards/kb_elmo/gamehand/keyboard.json b/keyboards/kb_elmo/gamehand/keyboard.json index 39795bf250..9c2b847c1a 100644 --- a/keyboards/kb_elmo/gamehand/keyboard.json +++ b/keyboards/kb_elmo/gamehand/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0xA68C", "pid": "0x4D90", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "processor": "atmega32u2", "bootloader": "atmel-dfu", diff --git a/keyboards/kbdfans/kbd75hs/keyboard.json b/keyboards/kbdfans/kbd75hs/keyboard.json index cba3e17e9a..45773d07aa 100644 --- a/keyboards/kbdfans/kbd75hs/keyboard.json +++ b/keyboards/kbdfans/kbd75hs/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4B42", "pid": "0x6062", - "device_version": "0.0.3", - "force_nkro": true + "device_version": "0.0.3" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/keychron/q0/info.json b/keyboards/keychron/q0/info.json index 666a797411..d7a7317e3f 100644 --- a/keyboards/keychron/q0/info.json +++ b/keyboards/keychron/q0/info.json @@ -45,7 +45,11 @@ }, "url": "https://github.com/Keychron", "usb": { - "force_nkro": true, "vid": "0x3434" + }, + "host": { + "default": { + "nkro": true + } } } \ No newline at end of file diff --git a/keyboards/keychron/q1v1/info.json b/keyboards/keychron/q1v1/info.json index b8ab503b07..034bb4357f 100644 --- a/keyboards/keychron/q1v1/info.json +++ b/keyboards/keychron/q1v1/info.json @@ -52,7 +52,11 @@ }, "url": "https://github.com/Keychron", "usb": { - "force_nkro": true, "vid": "0x3434" + }, + "host": { + "default": { + "nkro": true + } } } \ No newline at end of file diff --git a/keyboards/keyspensory/kp60/keyboard.json b/keyboards/keyspensory/kp60/keyboard.json index 2072186e9d..6634b522bb 100644 --- a/keyboards/keyspensory/kp60/keyboard.json +++ b/keyboards/keyspensory/kp60/keyboard.json @@ -7,8 +7,12 @@ "vid": "0x4B50", "pid": "0x0060", "device_version": "0.0.1", - "no_startup_check": true, - "force_nkro": true + "no_startup_check": true + }, + "host": { + "default": { + "nkro": true + } }, "diode_direction": "COL2ROW", "matrix_pins": { diff --git a/keyboards/kingly_keys/little_foot/keyboard.json b/keyboards/kingly_keys/little_foot/keyboard.json index 6188bed595..2ff3fd89cd 100644 --- a/keyboards/kingly_keys/little_foot/keyboard.json +++ b/keyboards/kingly_keys/little_foot/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0xFEED", "pid": "0x6060", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgblight": { "hue_steps": 6, diff --git a/keyboards/kingly_keys/smd_milk/keyboard.json b/keyboards/kingly_keys/smd_milk/keyboard.json index 943599dad1..2da20bf978 100644 --- a/keyboards/kingly_keys/smd_milk/keyboard.json +++ b/keyboards/kingly_keys/smd_milk/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0xFEED", "pid": "0xB195", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgblight": { "hue_steps": 6, diff --git a/keyboards/kprepublic/bm65hsrgb_iso/rev1/keyboard.json b/keyboards/kprepublic/bm65hsrgb_iso/rev1/keyboard.json index e9e330b160..187816b660 100644 --- a/keyboards/kprepublic/bm65hsrgb_iso/rev1/keyboard.json +++ b/keyboards/kprepublic/bm65hsrgb_iso/rev1/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4B50", "pid": "0x0653", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgblight": { "saturation_steps": 8, diff --git a/keyboards/lendunistus/rpneko65/rev1/keyboard.json b/keyboards/lendunistus/rpneko65/rev1/keyboard.json index d0bb593996..20fed0a14b 100644 --- a/keyboards/lendunistus/rpneko65/rev1/keyboard.json +++ b/keyboards/lendunistus/rpneko65/rev1/keyboard.json @@ -22,10 +22,14 @@ "url": "https://github.com/lendunistus/rpneko65", "usb": { "device_version": "1.0.0", - "force_nkro": true, "pid": "0x0001", "vid": "0x6C75" }, + "host": { + "default": { + "nkro": true + } + }, "ws2812": { "driver": "vendor", "pin": "GP18" diff --git a/keyboards/linworks/dolice/keyboard.json b/keyboards/linworks/dolice/keyboard.json index bcdfda561f..ade3b37d0a 100644 --- a/keyboards/linworks/dolice/keyboard.json +++ b/keyboards/linworks/dolice/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4C58", "pid": "0x0005", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "backlight": true, diff --git a/keyboards/linworks/fave87/keyboard.json b/keyboards/linworks/fave87/keyboard.json index 6dce6f39fe..132d3b5cbf 100644 --- a/keyboards/linworks/fave87/keyboard.json +++ b/keyboards/linworks/fave87/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4C58", "pid": "0x0002", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "backlight": true, diff --git a/keyboards/linworks/whale75/keyboard.json b/keyboards/linworks/whale75/keyboard.json index 4298382471..19a6ce320d 100644 --- a/keyboards/linworks/whale75/keyboard.json +++ b/keyboards/linworks/whale75/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4C58", "pid": "0x0001", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgblight": { "led_count": 18, diff --git a/keyboards/magic_force/mf17/keyboard.json b/keyboards/magic_force/mf17/keyboard.json index 10469f63c6..c0f0e6bd57 100644 --- a/keyboards/magic_force/mf17/keyboard.json +++ b/keyboards/magic_force/mf17/keyboard.json @@ -12,10 +12,14 @@ }, "usb": { "device_version": "1.0.0", - "force_nkro": true, "vid": "0x3A54", "pid": "0x4F5D" }, + "host": { + "default": { + "nkro": true + } + }, "features": { "bootmagic": true, "extrakey": true, diff --git a/keyboards/magic_force/mf34/keyboard.json b/keyboards/magic_force/mf34/keyboard.json index 44d1a4ec92..9acae04b27 100644 --- a/keyboards/magic_force/mf34/keyboard.json +++ b/keyboards/magic_force/mf34/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x1A53", "pid": "0x4F51", - "device_version": "1.0.2", - "force_nkro": true + "device_version": "1.0.2" + }, + "host": { + "default": { + "nkro": true + } }, "indicators": { "num_lock": "B15" diff --git a/keyboards/mechllama/g35/info.json b/keyboards/mechllama/g35/info.json index fab11db131..8c6489409e 100644 --- a/keyboards/mechllama/g35/info.json +++ b/keyboards/mechllama/g35/info.json @@ -13,8 +13,12 @@ }, "usb": { "vid": "0xCEEB", - "pid": "0x0035", - "force_nkro": true + "pid": "0x0035" + }, + "host": { + "default": { + "nkro": true + } }, "ws2812": { "pin": "F7" diff --git a/keyboards/mechwild/bbs/keyboard.json b/keyboards/mechwild/bbs/keyboard.json index 8985c4526a..c8a57c8bc5 100644 --- a/keyboards/mechwild/bbs/keyboard.json +++ b/keyboards/mechwild/bbs/keyboard.json @@ -44,13 +44,17 @@ "url": "https://mechwild.com/product/bb-steno/", "usb": { "device_version": "1.1.0", - "force_nkro": true, "pid": "0x170E", "shared_endpoint": { "keyboard": true }, "vid": "0x6D77" }, + "host": { + "default": { + "nkro": true + } + }, "ws2812": { "driver": "pwm", "pin": "B9" diff --git a/keyboards/mechwild/sugarglider/info.json b/keyboards/mechwild/sugarglider/info.json index 0b796f7c21..514c90b6ce 100644 --- a/keyboards/mechwild/sugarglider/info.json +++ b/keyboards/mechwild/sugarglider/info.json @@ -7,11 +7,15 @@ "vid": "0x6D77", "pid": "0x1710", "device_version": "0.2.0", - "force_nkro": true, "shared_endpoint": { "keyboard": true } }, + "host": { + "default": { + "nkro": true + } + }, "diode_direction": "COL2ROW", "dynamic_keymap": { "layer_count": 5 diff --git a/keyboards/miiiw/blackio83/rev_0100/keyboard.json b/keyboards/miiiw/blackio83/rev_0100/keyboard.json index e5cf747537..bc94408419 100644 --- a/keyboards/miiiw/blackio83/rev_0100/keyboard.json +++ b/keyboards/miiiw/blackio83/rev_0100/keyboard.json @@ -166,10 +166,14 @@ "url": "https://github.com/ArthurCyy", "usb": { "device_version": "0.0.1", - "force_nkro": true, "pid": "0x83A1", "vid": "0x3044" }, + "host": { + "default": { + "nkro": true + } + }, "ws2812": { "pin": "B15" }, diff --git a/keyboards/millipad/keyboard.json b/keyboards/millipad/keyboard.json index d2761b8b1b..e4e107c5a6 100644 --- a/keyboards/millipad/keyboard.json +++ b/keyboards/millipad/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0xFEED", "pid": "0x1A1B", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/misonoworks/chocolatebar/keyboard.json b/keyboards/misonoworks/chocolatebar/keyboard.json index 75b10ae561..13bc64f16f 100644 --- a/keyboards/misonoworks/chocolatebar/keyboard.json +++ b/keyboards/misonoworks/chocolatebar/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0x6D77", "pid": "0xC456", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgblight": { "led_count": 12, diff --git a/keyboards/misonoworks/karina/keyboard.json b/keyboards/misonoworks/karina/keyboard.json index 1266c07cea..ef2b7f7e6e 100644 --- a/keyboards/misonoworks/karina/keyboard.json +++ b/keyboards/misonoworks/karina/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0xFEED", "pid": "0xC456", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgblight": { "led_count": 19, diff --git a/keyboards/ml/gas75/keyboard.json b/keyboards/ml/gas75/keyboard.json index b7736884fc..280735eb14 100644 --- a/keyboards/ml/gas75/keyboard.json +++ b/keyboards/ml/gas75/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0xC0B0", "pid": "0x6060", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgb_matrix": { "animations": { diff --git a/keyboards/mmkeyboard/class60/soldered/keyboard.json b/keyboards/mmkeyboard/class60/soldered/keyboard.json index cb28da366c..8615129e83 100644 --- a/keyboards/mmkeyboard/class60/soldered/keyboard.json +++ b/keyboards/mmkeyboard/class60/soldered/keyboard.json @@ -36,10 +36,14 @@ "url": "https://www.mmkeyboard.com/products/mm-class60-retro-custom-mechanical-keyboard", "usb": { "device_version": "0.0.1", - "force_nkro": true, "pid": "0x3876", "vid": "0x4F66" }, + "host": { + "default": { + "nkro": true + } + }, "community_layouts": [ "60_ansi", "60_ansi_split_bs_rshift", diff --git a/keyboards/mmkzoo65/keyboard.json b/keyboards/mmkzoo65/keyboard.json index fdd5f50b60..3d752d6d5d 100644 --- a/keyboards/mmkzoo65/keyboard.json +++ b/keyboards/mmkzoo65/keyboard.json @@ -6,9 +6,13 @@ "vid": "0x7BA1", "pid": "0x6505", "device_version": "0.0.1", - "force_nkro": true, "polling_interval": 2 }, + "host": { + "default": { + "nkro": true + } + }, "features": { "bootmagic": true, "extrakey": true, diff --git a/keyboards/monsgeek/m1/keyboard.json b/keyboards/monsgeek/m1/keyboard.json index 4cca5c8686..7a7d1308ce 100644 --- a/keyboards/monsgeek/m1/keyboard.json +++ b/keyboards/monsgeek/m1/keyboard.json @@ -3,12 +3,16 @@ "manufacturer": "MonsGeek", "maintainer": "jonylee@hfd", "usb": { - "force_nkro": true, "vid": "0xFFFE", "pid": "0x0005", "device_version": "1.1.0", "suspend_wakeup_delay": 400 }, + "host": { + "default": { + "nkro": true + } + }, "processor": "WB32FQ95", "bootloader": "wb32-dfu", "features": { diff --git a/keyboards/monsgeek/m3/keyboard.json b/keyboards/monsgeek/m3/keyboard.json index 9d2ea18c9d..f3d318176b 100644 --- a/keyboards/monsgeek/m3/keyboard.json +++ b/keyboards/monsgeek/m3/keyboard.json @@ -6,8 +6,12 @@ "vid": "0xFFFE", "pid": "0x0009", "device_version": "1.0.5", - "suspend_wakeup_delay": 400, - "force_nkro": true + "suspend_wakeup_delay": 400 + }, + "host": { + "default": { + "nkro": true + } }, "processor": "WB32FQ95", "bootloader": "wb32-dfu", diff --git a/keyboards/monsgeek/m5/keyboard.json b/keyboards/monsgeek/m5/keyboard.json index 92d6add3fe..f439830f8a 100644 --- a/keyboards/monsgeek/m5/keyboard.json +++ b/keyboards/monsgeek/m5/keyboard.json @@ -6,8 +6,12 @@ "vid": "0xFFFE", "pid": "0x000A", "device_version": "1.0.4", - "suspend_wakeup_delay": 400, - "force_nkro": true + "suspend_wakeup_delay": 400 + }, + "host": { + "default": { + "nkro": true + } }, "processor": "WB32FQ95", "bootloader": "wb32-dfu", diff --git a/keyboards/monsgeek/m6/keyboard.json b/keyboards/monsgeek/m6/keyboard.json index afe38eb0da..bcc14da2e4 100644 --- a/keyboards/monsgeek/m6/keyboard.json +++ b/keyboards/monsgeek/m6/keyboard.json @@ -3,12 +3,16 @@ "manufacturer": "MonsGeek", "maintainer": "jonylee@hfd", "usb": { - "force_nkro": true, "vid": "0xFFFE", "pid": "0x0011", "device_version": "1.0.0", "suspend_wakeup_delay": 400 }, + "host": { + "default": { + "nkro": true + } + }, "processor": "WB32FQ95", "bootloader": "wb32-dfu", "features": { diff --git a/keyboards/mss_studio/m63_rgb/keyboard.json b/keyboards/mss_studio/m63_rgb/keyboard.json index 16a4c5295f..b798df21dd 100644 --- a/keyboards/mss_studio/m63_rgb/keyboard.json +++ b/keyboards/mss_studio/m63_rgb/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4D4B", "pid": "0x6063", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "ws2812": { "pin": "B15" diff --git a/keyboards/mss_studio/m64_rgb/keyboard.json b/keyboards/mss_studio/m64_rgb/keyboard.json index 5b53cd58c7..083afec8c7 100644 --- a/keyboards/mss_studio/m64_rgb/keyboard.json +++ b/keyboards/mss_studio/m64_rgb/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4D4B", "pid": "0x6064", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "ws2812": { "pin": "B15" diff --git a/keyboards/mwstudio/alicekk/keyboard.json b/keyboards/mwstudio/alicekk/keyboard.json index 355437f953..fe76ec123d 100644 --- a/keyboards/mwstudio/alicekk/keyboard.json +++ b/keyboards/mwstudio/alicekk/keyboard.json @@ -4,8 +4,12 @@ "usb": { "vid": "0x7BA1", "pid": "0x3201", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/mwstudio/mw660/keyboard.json b/keyboards/mwstudio/mw660/keyboard.json index bf0cd6781c..385abb1828 100644 --- a/keyboards/mwstudio/mw660/keyboard.json +++ b/keyboards/mwstudio/mw660/keyboard.json @@ -25,8 +25,12 @@ "usb": { "device_version": "1.0.0", "pid": "0x6601", - "vid": "0x7BA1", - "force_nkro": true + "vid": "0x7BA1" + }, + "host": { + "default": { + "nkro": true + } }, "layouts": { "LAYOUT": { diff --git a/keyboards/omnikeyish/keyboard.json b/keyboards/omnikeyish/keyboard.json index 82363b10bf..2a607dc852 100644 --- a/keyboards/omnikeyish/keyboard.json +++ b/keyboards/omnikeyish/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0xFEED", "pid": "0x0666", - "device_version": "13.3.7", - "force_nkro": true + "device_version": "13.3.7" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/opendeck/32/info.json b/keyboards/opendeck/32/info.json index 4d340985d3..3a75fd163b 100644 --- a/keyboards/opendeck/32/info.json +++ b/keyboards/opendeck/32/info.json @@ -4,7 +4,11 @@ "usb": { "vid": "0x4345", "pid": "0x2EC0", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } } } diff --git a/keyboards/owlab/jelly_epoch/hotswap/keyboard.json b/keyboards/owlab/jelly_epoch/hotswap/keyboard.json index 8fcea8034d..b6a519f686 100644 --- a/keyboards/owlab/jelly_epoch/hotswap/keyboard.json +++ b/keyboards/owlab/jelly_epoch/hotswap/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0x4F53", "pid": "0x4A4C", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/owlab/jelly_epoch/soldered/keyboard.json b/keyboards/owlab/jelly_epoch/soldered/keyboard.json index 2d807c58a9..b8c83b8c41 100644 --- a/keyboards/owlab/jelly_epoch/soldered/keyboard.json +++ b/keyboards/owlab/jelly_epoch/soldered/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0x4F53", "pid": "0x4A53", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/owlab/spring/keyboard.json b/keyboards/owlab/spring/keyboard.json index 1789f4ebb1..2a8d1e2d9b 100644 --- a/keyboards/owlab/spring/keyboard.json +++ b/keyboards/owlab/spring/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4F53", "pid": "0x5350", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/owlab/suit80/ansi/keyboard.json b/keyboards/owlab/suit80/ansi/keyboard.json index fe0f1b6e4b..b01ec347d3 100644 --- a/keyboards/owlab/suit80/ansi/keyboard.json +++ b/keyboards/owlab/suit80/ansi/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4F53", "pid": "0x5355", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/owlab/suit80/iso/keyboard.json b/keyboards/owlab/suit80/iso/keyboard.json index 2d9fcde472..a2814b0942 100644 --- a/keyboards/owlab/suit80/iso/keyboard.json +++ b/keyboards/owlab/suit80/iso/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4F53", "pid": "0x5349", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/owlab/voice65/hotswap/keyboard.json b/keyboards/owlab/voice65/hotswap/keyboard.json index f153efbde2..79ca2a57ed 100644 --- a/keyboards/owlab/voice65/hotswap/keyboard.json +++ b/keyboards/owlab/voice65/hotswap/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0x4F53", "pid": "0x564F", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgb_matrix": { "animations": { diff --git a/keyboards/owlab/voice65/soldered/keyboard.json b/keyboards/owlab/voice65/soldered/keyboard.json index 932c32d2fd..edd79a064f 100644 --- a/keyboards/owlab/voice65/soldered/keyboard.json +++ b/keyboards/owlab/voice65/soldered/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0x4F53", "pid": "0x5657", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgb_matrix": { "animations": { diff --git a/keyboards/phentech/rpk_001/keyboard.json b/keyboards/phentech/rpk_001/keyboard.json index ce822295b2..df92139874 100644 --- a/keyboards/phentech/rpk_001/keyboard.json +++ b/keyboards/phentech/rpk_001/keyboard.json @@ -8,9 +8,13 @@ "device_version": "1.0.0", "vid": "0xAC12", "pid": "0x2236", - "force_nkro": true, "suspend_wakeup_delay": 1000 }, + "host": { + "default": { + "nkro": true + } + }, "diode_direction": "ROW2COL", "eeprom": { "driver": "wear_leveling", diff --git a/keyboards/polycarbdiet/s20/keyboard.json b/keyboards/polycarbdiet/s20/keyboard.json index e8b180b860..327debdb7d 100644 --- a/keyboards/polycarbdiet/s20/keyboard.json +++ b/keyboards/polycarbdiet/s20/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x5040", "pid": "0x7320", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "backlight": true, diff --git a/keyboards/qwertykeys/qk65/hotswap/keyboard.json b/keyboards/qwertykeys/qk65/hotswap/keyboard.json index 3aa8597626..2cdfe33ba3 100644 --- a/keyboards/qwertykeys/qk65/hotswap/keyboard.json +++ b/keyboards/qwertykeys/qk65/hotswap/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4F53", "pid": "0x514B", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/qwertykeys/qk65/solder/keyboard.json b/keyboards/qwertykeys/qk65/solder/keyboard.json index 0d02ba7a91..63afc40994 100644 --- a/keyboards/qwertykeys/qk65/solder/keyboard.json +++ b/keyboards/qwertykeys/qk65/solder/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x4F53", "pid": "0x5153", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/rate/pistachio/info.json b/keyboards/rate/pistachio/info.json index 7136860260..0e65b68f98 100644 --- a/keyboards/rate/pistachio/info.json +++ b/keyboards/rate/pistachio/info.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x5255", "pid": "0xD0C2", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "processor": "atmega32u4", "bootloader": "caterina" diff --git a/keyboards/rate/pistachio_mp/keyboard.json b/keyboards/rate/pistachio_mp/keyboard.json index cea6190b84..299dc5c3a8 100644 --- a/keyboards/rate/pistachio_mp/keyboard.json +++ b/keyboards/rate/pistachio_mp/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x5255", "pid": "0xE212", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgblight": { "hue_steps": 10, diff --git a/keyboards/rose75/keyboard.json b/keyboards/rose75/keyboard.json index 1c756d3fdd..09d0b7af19 100644 --- a/keyboards/rose75/keyboard.json +++ b/keyboards/rose75/keyboard.json @@ -28,10 +28,14 @@ "url": "https://github.com/Smollchungus", "usb": { "device_version": "0.0.1", - "force_nkro": true, "pid": "0x7503", "vid": "0x5363" }, + "host": { + "default": { + "nkro": true + } + }, "ws2812": { "driver": "vendor", "pin": "GP29" diff --git a/keyboards/runes/skjoldr/keyboard.json b/keyboards/runes/skjoldr/keyboard.json index ff3476697e..b48cb2a1d9 100644 --- a/keyboards/runes/skjoldr/keyboard.json +++ b/keyboards/runes/skjoldr/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0x726E", "pid": "0x736B", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/runes/vaengr/keyboard.json b/keyboards/runes/vaengr/keyboard.json index dce2c7a228..1910f37f0d 100644 --- a/keyboards/runes/vaengr/keyboard.json +++ b/keyboards/runes/vaengr/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0x726E", "pid": "0x7661", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgblight": { "hue_steps": 10, diff --git a/keyboards/ryanskidmore/rskeys100/keyboard.json b/keyboards/ryanskidmore/rskeys100/keyboard.json index 27eae84a6e..b62d870aba 100644 --- a/keyboards/ryanskidmore/rskeys100/keyboard.json +++ b/keyboards/ryanskidmore/rskeys100/keyboard.json @@ -4,8 +4,12 @@ "usb": { "vid": "0x7273", "pid": "0x0064", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/sawnsprojects/bunnygirl65/keyboard.json b/keyboards/sawnsprojects/bunnygirl65/keyboard.json index 3fab84c557..b23f41e7d7 100644 --- a/keyboards/sawnsprojects/bunnygirl65/keyboard.json +++ b/keyboards/sawnsprojects/bunnygirl65/keyboard.json @@ -17,10 +17,14 @@ "processor": "STM32F072", "usb": { "device_version": "1.0.0", - "force_nkro": true, "pid": "0x00A2", "vid": "0x5350" }, + "host": { + "default": { + "nkro": true + } + }, "community_layouts": ["65_ansi_blocker_tsangan", "65_ansi_blocker_tsangan_split_bs"], "layouts": { "LAYOUT_65_ansi_blocker_tsangan": { diff --git a/keyboards/sawnsprojects/okayu/info.json b/keyboards/sawnsprojects/okayu/info.json index 14c8f20c35..21c5e899ce 100644 --- a/keyboards/sawnsprojects/okayu/info.json +++ b/keyboards/sawnsprojects/okayu/info.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x5350", "pid": "0x00A1", - "device_version": "1.0.0", - "force_nkro": true + "device_version": "1.0.0" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/sixkeyboard/keyboard.json b/keyboards/sixkeyboard/keyboard.json index 5c29dee16f..ca846affb3 100644 --- a/keyboards/sixkeyboard/keyboard.json +++ b/keyboards/sixkeyboard/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x746B", "pid": "0x736B", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": false, diff --git a/keyboards/skmt/15k/keyboard.json b/keyboards/skmt/15k/keyboard.json index d09f3fb989..2cfb05bae6 100644 --- a/keyboards/skmt/15k/keyboard.json +++ b/keyboards/skmt/15k/keyboard.json @@ -23,8 +23,12 @@ "usb": { "device_version": "1.1.0", "pid": "0x3488", - "vid": "0xFEFE", - "force_nkro": true + "vid": "0xFEFE" + }, + "host": { + "default": { + "nkro": true + } }, "layouts": { "LAYOUT_default": { diff --git a/keyboards/skyloong/gk61/v1/keyboard.json b/keyboards/skyloong/gk61/v1/keyboard.json index 68fda1220f..e6ce09ae7f 100644 --- a/keyboards/skyloong/gk61/v1/keyboard.json +++ b/keyboards/skyloong/gk61/v1/keyboard.json @@ -119,8 +119,12 @@ "vid": "0x1EA7", "device_version": "1.0.0", "pid": "0x6061", - "max_power": 380, - "force_nkro": true + "max_power": 380 + }, + "host": { + "default": { + "nkro": true + } }, "community_layouts": ["60_ansi"], "layouts": { diff --git a/keyboards/stenokeyboards/the_uni/pro_micro/keyboard.json b/keyboards/stenokeyboards/the_uni/pro_micro/keyboard.json index 9cbed0feb9..770fbbb0e9 100644 --- a/keyboards/stenokeyboards/the_uni/pro_micro/keyboard.json +++ b/keyboards/stenokeyboards/the_uni/pro_micro/keyboard.json @@ -1,7 +1,11 @@ { "usb": { - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/stenokeyboards/the_uni/rp_2040/keyboard.json b/keyboards/stenokeyboards/the_uni/rp_2040/keyboard.json index e1753f2b84..6ec92ce422 100644 --- a/keyboards/stenokeyboards/the_uni/rp_2040/keyboard.json +++ b/keyboards/stenokeyboards/the_uni/rp_2040/keyboard.json @@ -1,7 +1,11 @@ { "usb": { - "device_version": "0.0.4", - "force_nkro": true + "device_version": "0.0.4" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/stenokeyboards/the_uni/usb_c/keyboard.json b/keyboards/stenokeyboards/the_uni/usb_c/keyboard.json index 81639fe32b..2cf1e4e324 100644 --- a/keyboards/stenokeyboards/the_uni/usb_c/keyboard.json +++ b/keyboards/stenokeyboards/the_uni/usb_c/keyboard.json @@ -1,7 +1,11 @@ { "usb": { - "device_version": "0.0.3", - "force_nkro": true + "device_version": "0.0.3" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/synthlabs/060/keyboard.json b/keyboards/synthlabs/060/keyboard.json index e251201a51..4183232dd1 100644 --- a/keyboards/synthlabs/060/keyboard.json +++ b/keyboards/synthlabs/060/keyboard.json @@ -23,8 +23,12 @@ "usb": { "vid": "0x534E", "pid": "0x3630", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgb_matrix": { "animations": { diff --git a/keyboards/synthlabs/065/keyboard.json b/keyboards/synthlabs/065/keyboard.json index ea862c6f01..1cd9e03a6a 100644 --- a/keyboards/synthlabs/065/keyboard.json +++ b/keyboards/synthlabs/065/keyboard.json @@ -152,10 +152,14 @@ "url": "http://065.synthlabs.io", "usb": { "device_version": "0.0.1", - "force_nkro": true, "pid": "0x3635", "vid": "0x534E" }, + "host": { + "default": { + "nkro": true + } + }, "ws2812": { "driver": "vendor", "pin": "GP18" diff --git a/keyboards/synthlabs/solo/keyboard.json b/keyboards/synthlabs/solo/keyboard.json index 6640202474..09c83cec76 100644 --- a/keyboards/synthlabs/solo/keyboard.json +++ b/keyboards/synthlabs/solo/keyboard.json @@ -22,8 +22,12 @@ "usb": { "vid": "0x534E", "pid": "0x3031", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "encoder": { "rotary": [ diff --git a/keyboards/tacworks/tac_k1/keyboard.json b/keyboards/tacworks/tac_k1/keyboard.json index f1875ec180..63cde4777f 100644 --- a/keyboards/tacworks/tac_k1/keyboard.json +++ b/keyboards/tacworks/tac_k1/keyboard.json @@ -29,11 +29,15 @@ "url": "https://tacworks.store", "usb": { "device_version": "1.0.0", - "force_nkro": true, "pid": "0xE431", "suspend_wakeup_delay": 1000, "vid": "0x342D" }, + "host": { + "default": { + "nkro": true + } + }, "community_layouts": [ "65_ansi_blocker", "65_ansi_blocker_split_bs", diff --git a/keyboards/teleport/native/info.json b/keyboards/teleport/native/info.json index 08432fbf14..b1cb06c942 100644 --- a/keyboards/teleport/native/info.json +++ b/keyboards/teleport/native/info.json @@ -7,8 +7,12 @@ "processor": "STM32F411", "usb": { "vid": "0x7470", - "device_version": "1.0.0", - "force_nkro": true + "device_version": "1.0.0" + }, + "host": { + "default": { + "nkro": true + } }, "rgb_matrix": { "animations": { diff --git a/keyboards/tweetydabird/lotus58/info.json b/keyboards/tweetydabird/lotus58/info.json index 7becd3ae26..3c47e3fdc2 100644 --- a/keyboards/tweetydabird/lotus58/info.json +++ b/keyboards/tweetydabird/lotus58/info.json @@ -45,10 +45,14 @@ "url": "https://lectronz.com/stores/tweetys-wild-thinking", "usb": { "device_version": "1.2.3", - "force_nkro": true, "pid": "0x23B0", "vid": "0xFEED" }, + "host": { + "default": { + "nkro": true + } + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/vertex/angle65/keyboard.json b/keyboards/vertex/angle65/keyboard.json index 3047d82dfa..6e0a6525ba 100644 --- a/keyboards/vertex/angle65/keyboard.json +++ b/keyboards/vertex/angle65/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x9954", "pid": "0x9970", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": false, diff --git a/keyboards/vertex/arc60/keyboard.json b/keyboards/vertex/arc60/keyboard.json index 7bca331f44..b370e699ec 100644 --- a/keyboards/vertex/arc60/keyboard.json +++ b/keyboards/vertex/arc60/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x8354", "pid": "0x8370", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": false, diff --git a/keyboards/vertex/arc60h/keyboard.json b/keyboards/vertex/arc60h/keyboard.json index 684bbb9538..0fc6f642a3 100644 --- a/keyboards/vertex/arc60h/keyboard.json +++ b/keyboards/vertex/arc60h/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x7374", "pid": "0x9770", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "indicators": { "caps_lock": "C13", diff --git a/keyboards/vertex/cycle8/keyboard.json b/keyboards/vertex/cycle8/keyboard.json index d00ef3eb49..d1a341df20 100644 --- a/keyboards/vertex/cycle8/keyboard.json +++ b/keyboards/vertex/cycle8/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x8A94", "pid": "0x8F70", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/vertex/t75/keyboard.json b/keyboards/vertex/t75/keyboard.json index 32e85cf8b4..f67326afb8 100644 --- a/keyboards/vertex/t75/keyboard.json +++ b/keyboards/vertex/t75/keyboard.json @@ -20,10 +20,14 @@ "processor": "STM32F103", "usb": { "device_version": "0.0.1", - "force_nkro": true, "pid": "0x3006", "vid": "0x28E9" }, + "host": { + "default": { + "nkro": true + } + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/viktus/at101_bh/keyboard.json b/keyboards/viktus/at101_bh/keyboard.json index de7498964e..ca37ecedeb 100644 --- a/keyboards/viktus/at101_bh/keyboard.json +++ b/keyboards/viktus/at101_bh/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0xFEED", "pid": "0x6060", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/viktus/omnikey_bh/keyboard.json b/keyboards/viktus/omnikey_bh/keyboard.json index 8128a30b25..6bceb1e0db 100644 --- a/keyboards/viktus/omnikey_bh/keyboard.json +++ b/keyboards/viktus/omnikey_bh/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0xFEED", "pid": "0x6060", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/viktus/z150_bh/keyboard.json b/keyboards/viktus/z150_bh/keyboard.json index 29bba7b8ab..912ee03bab 100644 --- a/keyboards/viktus/z150_bh/keyboard.json +++ b/keyboards/viktus/z150_bh/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0xFEED", "pid": "0x6060", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/willoucom/keypad/keyboard.json b/keyboards/willoucom/keypad/keyboard.json index 1d070ea4e2..9b4717e63f 100644 --- a/keyboards/willoucom/keypad/keyboard.json +++ b/keyboards/willoucom/keypad/keyboard.json @@ -22,10 +22,14 @@ }, "usb": { "device_version": "1.0.0", - "force_nkro": true, "pid": "0x4B50", "vid": "0x574A" }, + "host": { + "default": { + "nkro": true + } + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/wuque/tata80/wk/keyboard.json b/keyboards/wuque/tata80/wk/keyboard.json index 5b5b1fe50e..a5ae56720b 100644 --- a/keyboards/wuque/tata80/wk/keyboard.json +++ b/keyboards/wuque/tata80/wk/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0x2365", "pid": "0x0168", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/wuque/tata80/wkl/keyboard.json b/keyboards/wuque/tata80/wkl/keyboard.json index d8633e99f9..3eee37ef19 100644 --- a/keyboards/wuque/tata80/wkl/keyboard.json +++ b/keyboards/wuque/tata80/wkl/keyboard.json @@ -6,8 +6,12 @@ "usb": { "vid": "0x2365", "pid": "0x0169", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/xelus/dharma/keyboard.json b/keyboards/xelus/dharma/keyboard.json index adedaedba4..373db3f84e 100644 --- a/keyboards/xelus/dharma/keyboard.json +++ b/keyboards/xelus/dharma/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x5845", "pid": "0xDAAA", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/xelus/pachi/rgb/rev1/keyboard.json b/keyboards/xelus/pachi/rgb/rev1/keyboard.json index a27bcae0fc..59d335d6e7 100644 --- a/keyboards/xelus/pachi/rgb/rev1/keyboard.json +++ b/keyboards/xelus/pachi/rgb/rev1/keyboard.json @@ -5,8 +5,12 @@ "usb": { "vid": "0x5845", "pid": "0x5052", - "device_version": "0.0.1", - "force_nkro": true + "device_version": "0.0.1" + }, + "host": { + "default": { + "nkro": true + } }, "rgb_matrix": { "animations": { diff --git a/keyboards/xelus/rs108/keyboard.json b/keyboards/xelus/rs108/keyboard.json index c524ae09ed..b1964e0577 100644 --- a/keyboards/xelus/rs108/keyboard.json +++ b/keyboards/xelus/rs108/keyboard.json @@ -6,11 +6,15 @@ "vid": "0x5845", "pid": "0x5208", "device_version": "0.0.2", - "force_nkro": true, "shared_endpoint": { "keyboard": true } }, + "host": { + "default": { + "nkro": true + } + }, "features": { "bootmagic": true, "console": true, diff --git a/keyboards/xelus/rs60/rev1/keyboard.json b/keyboards/xelus/rs60/rev1/keyboard.json index 4f894056f6..c8a1afa790 100644 --- a/keyboards/xelus/rs60/rev1/keyboard.json +++ b/keyboards/xelus/rs60/rev1/keyboard.json @@ -1,7 +1,11 @@ { "usb": { - "device_version": "0.1.0", - "force_nkro": true + "device_version": "0.1.0" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, diff --git a/keyboards/xelus/rs60/rev2_0/keyboard.json b/keyboards/xelus/rs60/rev2_0/keyboard.json index e5506e0040..1ec1e71d42 100644 --- a/keyboards/xelus/rs60/rev2_0/keyboard.json +++ b/keyboards/xelus/rs60/rev2_0/keyboard.json @@ -1,11 +1,15 @@ { "usb": { "device_version": "0.2.0", - "force_nkro": true, "shared_endpoint": { "keyboard": true } }, + "host": { + "default": { + "nkro": true + } + }, "features": { "bootmagic": true, "console": true, diff --git a/keyboards/xelus/rs60/rev2_1/keyboard.json b/keyboards/xelus/rs60/rev2_1/keyboard.json index c116abc30b..86f3c2fa3d 100644 --- a/keyboards/xelus/rs60/rev2_1/keyboard.json +++ b/keyboards/xelus/rs60/rev2_1/keyboard.json @@ -1,11 +1,15 @@ { "usb": { "device_version": "0.2.1", - "force_nkro": true, "shared_endpoint": { "keyboard": true } }, + "host": { + "default": { + "nkro": true + } + }, "features": { "bootmagic": true, "console": true, diff --git a/keyboards/yandrstudio/zhou65/keyboard.json b/keyboards/yandrstudio/zhou65/keyboard.json index 6e65bacea2..0766bd3eca 100644 --- a/keyboards/yandrstudio/zhou65/keyboard.json +++ b/keyboards/yandrstudio/zhou65/keyboard.json @@ -2,8 +2,12 @@ "keyboard_name": "zhou65", "usb": { "pid": "0xAAAD", - "device_version": "1.0.0", - "force_nkro": true + "device_version": "1.0.0" + }, + "host": { + "default": { + "nkro": true + } }, "features": { "bootmagic": true, From 87e5df1b9ef59440787d065a126b9368fae32c44 Mon Sep 17 00:00:00 2001 From: Andrew Cooney Date: Thu, 10 Jul 2025 07:02:08 -0400 Subject: [PATCH 066/167] Changes to the Stenography documentation page. (#25426) --- docs/features/stenography.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/features/stenography.md b/docs/features/stenography.md index 7fd245d59a..4176344b5a 100644 --- a/docs/features/stenography.md +++ b/docs/features/stenography.md @@ -4,6 +4,14 @@ The [Open Steno Project](https://www.openstenoproject.org/) has built an open-source program called Plover that provides real-time translation of steno strokes into words and commands. It has an established dictionary and supports +## Steno Support in QMK + +There are three ways that QMK keyboards can support steno, with varying degrees of configuration required: + +1. Plover with [Arpeggiation](https://plover.wiki/index.php/Glossary#Arpeggiate) requires no changes to any keyboard and is supported by QMK as well as any other QWERTY keyboard. +2. Plover with [NKRO](https://plover.wiki/index.php/Using_a_standard_keyboard_with_Plover#NKRO). If your keyboard supports NKRO in hardware and you have NKRO enabled as a USB endpoint, you can chord with the keyboard. Many devices will arrive stock like this and will require no changes. +3. Steno Machine Protocols. This requires the most configuration, but this has the advantage of allowing you to use your keyboard keys normally (either on another layer or another piece of hardware) without enabling and disabling your steno software. + ## Plover with QWERTY Keyboard {#plover-with-qwerty-keyboard} Plover can work with any standard QWERTY keyboard, although it is more efficient if the keyboard supports NKRO (n-key rollover) to allow Plover to see all the pressed keys at once. An example keymap for Plover can be found in `planck/keymaps/default`. Switching to the `PLOVER` layer adjusts the position of the keyboard to support the number bar. @@ -14,14 +22,14 @@ You may also need to adjust your layout, either in QMK or in Plover, if you have ## Plover with Steno Protocol {#plover-with-steno-protocol} -Plover also understands the language of several steno machines. QMK can speak a couple of these languages: TX Bolt and GeminiPR. An example layout can be found in `planck/keymaps/steno`. +Plover also understands the language of several steno machines. QMK can speak a couple of these languages: TX Bolt and GeminiPR. An example layout can be found in `splitography/keymaps/default`. When QMK speaks to Plover over a steno protocol, Plover will not use the keyboard as input. This means that you can switch back and forth between a standard keyboard and your steno keyboard, or even switch layers from Plover to standard and back without needing to activate/deactivate Plover. In this mode, Plover expects to speak with a steno machine over a serial port so QMK will present itself to the operating system as a virtual serial port in addition to a keyboard. ::: info -Note: Due to hardware limitations, you might not be able to run both a virtual serial port and mouse emulation at the same time. +Due to hardware limitations, you might not be able to run both a virtual serial port and other features (mouse keys, NKRO, or MIDI support) at the same time. You will likely encounter a compile time error if this is the case. Disable those other features as necessary. ::: ::: warning @@ -156,7 +164,7 @@ At the end of this scenario given as an example, `chord` would have five bits se ## Keycode Reference {#keycode-reference} ::: info -Note: TX Bolt does not support the full set of keys. The TX Bolt implementation in QMK will map the GeminiPR keys to the nearest TX Bolt key so that one key map will work for both. +TX Bolt does not support the full set of keys. The TX Bolt implementation in QMK will map the GeminiPR keys to the nearest TX Bolt key so that one key map will work for both. ::: |GeminiPR|TX Bolt|Steno Key| From e1b42d525279189b1bd9c40e96565c6ebc76c438 Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 10 Jul 2025 05:42:36 -0600 Subject: [PATCH 067/167] Refactor `bastardkb/dilemma/3x5_2` (#25462) * Refactor bastardkb/dilemma/3x5_2 - Rename splinky -> promicro as the DIY PCB supports a Pro Micro compatible development board - Update keyboard aliases accordingly - Migrated shared configuration to top level 3x5_2 directory - Migrate keymap to JSON - Migrate miscellaneous configuration to JSON - Remove configuration that trends towards user-specific (CRC Table) - Use short SPDX license headers - Tidy up readme and make note of differences between PCBs In short, the only difference between these two revisions (assembled vs. promicro) is SPI vs. I2C (respectively) is used for the Cirque Trackpad. * Migrate promicro configuration to AVR The code in dilemma.c that reinitialises the ADC capable pins on RP2040 as digital inputs is not needed. Per section RP2040-E6 (p.630) of RP2040 datasheet, it appears digital inputs are *not* disabled, and this should be handled internally anyway in matrix initialisation --- data/mappings/keyboard_aliases.hjson | 3 + .../dilemma/3x5_2/assembled/config.h | 29 +------ .../dilemma/3x5_2/assembled/halconf.h | 19 +---- .../dilemma/3x5_2/assembled/keyboard.json | 19 ++--- .../dilemma/3x5_2/assembled/mcuconf.h | 19 +---- .../dilemma/3x5_2/assembled/rules.mk | 8 +- keyboards/bastardkb/dilemma/3x5_2/config.h | 5 ++ keyboards/bastardkb/dilemma/3x5_2/info.json | 18 ++-- .../dilemma/3x5_2/keymaps/default/keymap.c | 84 ------------------- .../dilemma/3x5_2/keymaps/default/keymap.json | 26 ++++++ .../dilemma/3x5_2/promicro/keyboard.json | 15 ++++ .../bastardkb/dilemma/3x5_2/promicro/rules.mk | 1 + .../bastardkb/dilemma/3x5_2/splinky/config.h | 37 -------- .../bastardkb/dilemma/3x5_2/splinky/halconf.h | 21 ----- .../dilemma/3x5_2/splinky/keyboard.json | 22 ----- .../bastardkb/dilemma/3x5_2/splinky/mcuconf.h | 23 ----- .../bastardkb/dilemma/3x5_2/splinky/rules.mk | 7 -- keyboards/bastardkb/dilemma/dilemma.c | 16 ---- keyboards/bastardkb/dilemma/readme.md | 26 ++++-- 19 files changed, 93 insertions(+), 305 deletions(-) create mode 100644 keyboards/bastardkb/dilemma/3x5_2/config.h delete mode 100644 keyboards/bastardkb/dilemma/3x5_2/keymaps/default/keymap.c create mode 100644 keyboards/bastardkb/dilemma/3x5_2/keymaps/default/keymap.json create mode 100644 keyboards/bastardkb/dilemma/3x5_2/promicro/keyboard.json create mode 100644 keyboards/bastardkb/dilemma/3x5_2/promicro/rules.mk delete mode 100644 keyboards/bastardkb/dilemma/3x5_2/splinky/config.h delete mode 100644 keyboards/bastardkb/dilemma/3x5_2/splinky/halconf.h delete mode 100644 keyboards/bastardkb/dilemma/3x5_2/splinky/keyboard.json delete mode 100644 keyboards/bastardkb/dilemma/3x5_2/splinky/mcuconf.h delete mode 100644 keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index 942a60946d..cf0cfe52f1 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -68,6 +68,9 @@ "bakeneko80": { "target": "kkatano/bakeneko80" }, + "bastardkb/dilemma/3x5_2/splinky": { + "target": "bastardkb/dilemma/3x5_2/promicro" + }, "bastardkb/scylla/v2/elitec": { "target": "bastardkb/scylla/promicro" }, diff --git a/keyboards/bastardkb/dilemma/3x5_2/assembled/config.h b/keyboards/bastardkb/dilemma/3x5_2/assembled/config.h index 4366a8a3e9..18ce680709 100644 --- a/keyboards/bastardkb/dilemma/3x5_2/assembled/config.h +++ b/keyboards/bastardkb/dilemma/3x5_2/assembled/config.h @@ -1,37 +1,12 @@ -/** - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -/* Handedness. */ -#define SPLIT_HAND_PIN GP29 -#define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED - -/* Cirque trackpad. */ #define SPI_SCK_PIN GP22 #define SPI_MOSI_PIN GP23 #define SPI_MISO_PIN GP20 #define POINTING_DEVICE_CS_PIN GP21 -/* Reset. */ #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/dilemma/3x5_2/assembled/halconf.h b/keyboards/bastardkb/dilemma/3x5_2/assembled/halconf.h index 57d15376d6..7f198be26b 100644 --- a/keyboards/bastardkb/dilemma/3x5_2/assembled/halconf.h +++ b/keyboards/bastardkb/dilemma/3x5_2/assembled/halconf.h @@ -1,20 +1,5 @@ -/** - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #define HAL_USE_SPI TRUE diff --git a/keyboards/bastardkb/dilemma/3x5_2/assembled/keyboard.json b/keyboards/bastardkb/dilemma/3x5_2/assembled/keyboard.json index 366deac293..c388855691 100644 --- a/keyboards/bastardkb/dilemma/3x5_2/assembled/keyboard.json +++ b/keyboards/bastardkb/dilemma/3x5_2/assembled/keyboard.json @@ -1,22 +1,17 @@ { - "keyboard_name": "Dilemma (3x5+2) Assembled", - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "pointing_device": true - }, + "bootloader": "rp2040", "matrix_pins": { "cols": ["GP8", "GP9", "GP7", "GP6", "GP27"], "rows": ["GP4", "GP5", "GP28", "GP26"] }, - "diode_direction": "ROW2COL", + "processor": "RP2040", "split": { - "enabled": true, + "handedness": { + "pin": "GP29" + }, "serial": { + "driver": "vendor", "pin": "GP1" } - }, - "processor": "RP2040", - "bootloader": "rp2040" + } } diff --git a/keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h b/keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h index 81821c159d..43d849d2a2 100644 --- a/keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h +++ b/keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h @@ -1,20 +1,5 @@ -/** - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include_next diff --git a/keyboards/bastardkb/dilemma/3x5_2/assembled/rules.mk b/keyboards/bastardkb/dilemma/3x5_2/assembled/rules.mk index 48216ee8b7..fb5d649735 100644 --- a/keyboards/bastardkb/dilemma/3x5_2/assembled/rules.mk +++ b/keyboards/bastardkb/dilemma/3x5_2/assembled/rules.mk @@ -1,7 +1 @@ -AUDIO_SUPPORTED = no # Audio is not supported -RGB_MATRIX_SUPPORTED = no # RGB matrix is supported and enabled by default -RGBLIGHT_SUPPORTED = no # RGB underglow is supported, but not enabled by default - -SERIAL_DRIVER = vendor - -POINTING_DEVICE_DRIVER = cirque_pinnacle_spi # Assembled version uses SPI. +POINTING_DEVICE_DRIVER = cirque_pinnacle_spi diff --git a/keyboards/bastardkb/dilemma/3x5_2/config.h b/keyboards/bastardkb/dilemma/3x5_2/config.h new file mode 100644 index 0000000000..cd7f368bd3 --- /dev/null +++ b/keyboards/bastardkb/dilemma/3x5_2/config.h @@ -0,0 +1,5 @@ +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define SPLIT_HAND_PIN_LOW_IS_LEFT diff --git a/keyboards/bastardkb/dilemma/3x5_2/info.json b/keyboards/bastardkb/dilemma/3x5_2/info.json index bfd12e81d0..9e34cac13e 100644 --- a/keyboards/bastardkb/dilemma/3x5_2/info.json +++ b/keyboards/bastardkb/dilemma/3x5_2/info.json @@ -1,4 +1,15 @@ { + "keyboard_name": "Dilemma 3x5+2", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "pointing_device": true + }, + "split": { + "enabled": true + }, "usb": { "device_version": "1.0.0", "pid": "0x1835" @@ -12,40 +23,33 @@ {"matrix": [0, 2], "x": 2, "y": 0}, {"matrix": [0, 3], "x": 3, "y": 0}, {"matrix": [0, 4], "x": 4, "y": 0}, - {"matrix": [4, 4], "x": 11, "y": 0}, {"matrix": [4, 3], "x": 12, "y": 0}, {"matrix": [4, 2], "x": 13, "y": 0}, {"matrix": [4, 1], "x": 14, "y": 0}, {"matrix": [4, 0], "x": 15, "y": 0}, - {"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1}, {"matrix": [1, 2], "x": 2, "y": 1}, {"matrix": [1, 3], "x": 3, "y": 1}, {"matrix": [1, 4], "x": 4, "y": 1}, - {"matrix": [5, 4], "x": 11, "y": 1}, {"matrix": [5, 3], "x": 12, "y": 1}, {"matrix": [5, 2], "x": 13, "y": 1}, {"matrix": [5, 1], "x": 14, "y": 1}, {"matrix": [5, 0], "x": 15, "y": 1}, - {"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, {"matrix": [2, 2], "x": 2, "y": 2}, {"matrix": [2, 3], "x": 3, "y": 2}, {"matrix": [2, 4], "x": 4, "y": 2}, - {"matrix": [6, 4], "x": 11, "y": 2}, {"matrix": [6, 3], "x": 12, "y": 2}, {"matrix": [6, 2], "x": 13, "y": 2}, {"matrix": [6, 1], "x": 14, "y": 2}, {"matrix": [6, 0], "x": 15, "y": 2}, - {"matrix": [3, 0], "x": 4, "y": 3}, {"matrix": [3, 2], "x": 5, "y": 3}, - {"matrix": [7, 2], "x": 10, "y": 3}, {"matrix": [7, 0], "x": 11, "y": 3} ] diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/default/keymap.c b/keyboards/bastardkb/dilemma/3x5_2/keymaps/default/keymap.c deleted file mode 100644 index 0f9aff0a85..0000000000 --- a/keyboards/bastardkb/dilemma/3x5_2/keymaps/default/keymap.c +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -enum charybdis_keymap_layers { - LAYER_BASE = 0, - LAYER_NAV, - LAYER_SYM, - LAYER_NUM, -}; - -#define NAV MO(LAYER_NAV) -#define SYM MO(LAYER_SYM) - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [LAYER_BASE] = LAYOUT_split_3x5_2( - // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮ - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, - // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯ - NAV, CW_TOGG, KC_SPC, SYM - // ╰──────────────────╯ ╰──────────────────╯ - ), - - [LAYER_NAV] = LAYOUT_split_3x5_2( - // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮ - KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_DEL, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - KC_LSFT, KC_LCTL, KC_LALT, KC_RGUI, KC_VOLD, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - QK_BOOT, EE_CLR, KC_MPRV, KC_MNXT, KC_MPLY, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, KC_ENT, - // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯ - _______, KC_LSFT, KC_SPC, _______ - // ╰──────────────────╯ ╰──────────────────╯ - ), - - [LAYER_SYM] = LAYOUT_split_3x5_2( - // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮ - KC_ESC, KC_LBRC, KC_LCBR, KC_LPRN, KC_TILD, KC_CIRC, KC_RPRN, KC_RCBR, KC_RBRC, KC_GRV, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - KC_MINS, KC_ASTR, KC_EQL, KC_UNDS, KC_DLR, KC_HASH, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - KC_PLUS, KC_PIPE, KC_AT, KC_SLSH, KC_PERC, _______, KC_BSLS, KC_AMPR, KC_QUES, KC_EXLM, - // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯ - _______, KC_LSFT, KC_SPC, _______ - // ╰──────────────────╯ ╰──────────────────╯ - ), - - [LAYER_NUM] = LAYOUT_split_3x5_2( - // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮ - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, KC_F11, KC_F12, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯ - _______, KC_LSFT, KC_SPC, _______ - // ╰──────────────────╯ ╰──────────────────╯ - ), -}; -// clang-format on - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, LAYER_NAV, LAYER_SYM, LAYER_NUM); -} diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/default/keymap.json b/keyboards/bastardkb/dilemma/3x5_2/keymaps/default/keymap.json new file mode 100644 index 0000000000..e2387d879f --- /dev/null +++ b/keyboards/bastardkb/dilemma/3x5_2/keymaps/default/keymap.json @@ -0,0 +1,26 @@ +{ + "keyboard": "bastardkb/dilemma/3x5_2/promicro", + "keymap": "default", + "layout": "LAYOUT_split_3x5_2", + "layers": [ + [ + "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", + "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", + "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", + "MO(1)", "KC_SPC", "KC_ENT", "MO(2)" + ], + [ + "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", + "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______" + ], + [ + "QK_BOOT", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "EE_CLR", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______" + ] + ] +} + diff --git a/keyboards/bastardkb/dilemma/3x5_2/promicro/keyboard.json b/keyboards/bastardkb/dilemma/3x5_2/promicro/keyboard.json new file mode 100644 index 0000000000..55ce3cdbf1 --- /dev/null +++ b/keyboards/bastardkb/dilemma/3x5_2/promicro/keyboard.json @@ -0,0 +1,15 @@ +{ + "development_board": "elite_c", + "matrix_pins": { + "cols": ["B4", "B5", "E6", "D7", "F6"], + "rows": ["D4", "C6", "F5", "F7"] + }, + "split": { + "handedness": { + "pin": "F4" + }, + "serial": { + "pin": "D2" + } + } +} diff --git a/keyboards/bastardkb/dilemma/3x5_2/promicro/rules.mk b/keyboards/bastardkb/dilemma/3x5_2/promicro/rules.mk new file mode 100644 index 0000000000..fedac72e2e --- /dev/null +++ b/keyboards/bastardkb/dilemma/3x5_2/promicro/rules.mk @@ -0,0 +1 @@ +POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c diff --git a/keyboards/bastardkb/dilemma/3x5_2/splinky/config.h b/keyboards/bastardkb/dilemma/3x5_2/splinky/config.h deleted file mode 100644 index fd7bb0f107..0000000000 --- a/keyboards/bastardkb/dilemma/3x5_2/splinky/config.h +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -//#define SPLIT_HAND_PIN GP29 -// If you've soldered the handedness pull-up on the upper side instead of the -// left one, uncomment the following line. -//#define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/dilemma/3x5_2/splinky/halconf.h b/keyboards/bastardkb/dilemma/3x5_2/splinky/halconf.h deleted file mode 100644 index 2e098f5113..0000000000 --- a/keyboards/bastardkb/dilemma/3x5_2/splinky/halconf.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2022 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define HAL_USE_I2C TRUE - -#include_next diff --git a/keyboards/bastardkb/dilemma/3x5_2/splinky/keyboard.json b/keyboards/bastardkb/dilemma/3x5_2/splinky/keyboard.json deleted file mode 100644 index e954f4f657..0000000000 --- a/keyboards/bastardkb/dilemma/3x5_2/splinky/keyboard.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "keyboard_name": "Dilemma (3x5+2) Splinky", - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "pointing_device": true - }, - "matrix_pins": { - "cols": ["GP8", "GP9", "GP7", "GP6", "GP27"], - "rows": ["GP4", "GP5", "GP28", "GP26"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/dilemma/3x5_2/splinky/mcuconf.h b/keyboards/bastardkb/dilemma/3x5_2/splinky/mcuconf.h deleted file mode 100644 index c748d941e9..0000000000 --- a/keyboards/bastardkb/dilemma/3x5_2/splinky/mcuconf.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 RP_I2C_USE_I2C1 -#define RP_I2C_USE_I2C1 TRUE diff --git a/keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk b/keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk deleted file mode 100644 index 942028da2c..0000000000 --- a/keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported -RGB_MATRIX_SUPPORTED = no # RGB matrix is supported and enabled by default -RGBLIGHT_SUPPORTED = no # RGB underglow is supported, but not enabled by default - -SERIAL_DRIVER = vendor - -POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c # DIY version uses I2C. diff --git a/keyboards/bastardkb/dilemma/dilemma.c b/keyboards/bastardkb/dilemma/dilemma.c index b406e26526..c14345d075 100644 --- a/keyboards/bastardkb/dilemma/dilemma.c +++ b/keyboards/bastardkb/dilemma/dilemma.c @@ -328,22 +328,6 @@ void matrix_init_kb(void) { } #endif // POINTING_DEVICE_ENABLE -// Forward declare RP2040 SDK declaration. -void gpio_init(uint gpio); - -void keyboard_pre_init_kb(void) { - // Ensures that GP26 through GP29 are initialized as digital inputs (as - // opposed to analog inputs). These GPIOs are shared with A0 through A3, - // respectively. On RP2040-B2 and later, the digital inputs are disabled by - // default (see RP2040-E6). - gpio_init(GP26); - gpio_init(GP27); - gpio_init(GP28); - gpio_init(GP29); - - keyboard_pre_init_user(); -} - bool shutdown_kb(bool jump_to_bootloader) { if (!shutdown_user(jump_to_bootloader)) { return false; diff --git a/keyboards/bastardkb/dilemma/readme.md b/keyboards/bastardkb/dilemma/readme.md index 876400ae52..a149853015 100644 --- a/keyboards/bastardkb/dilemma/readme.md +++ b/keyboards/bastardkb/dilemma/readme.md @@ -1,21 +1,31 @@ # Dilemma -A family of split keyboards with embedded RP2040 controllers, support for Cirque GlidePoint circle trackpads, and SPI + I2C breakouts for other peripherals - -- Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/) -- Hardware Supported: [Bastardkb Dilemma](https://github.com/Bastardkb/Dilemma) -- Hardware Availability: [Bastardkb.com](https://bastardkb.com/) - -A DIY version of the 3x5_2 PCB with promicro compatible footprint is also available. +* Keyboard Maintainer: [BastardKB](https://github.com/BastardKB) +* Hardware Supported: Dilemma PCBs with integrated or devlopment board* microcontrollers +* Hardware Availability: [GitHub](https://github.com/Bastardkb/Dilemma) Make example for this keyboard (after setting up your build environment): + make bastardkb/dilemma/3x5_2/assembled:default + make bastardkb/dilemma/3x5_2/promicro:default make bastardkb/dilemma/3x5_3:default make bastardkb/dilemma/4x6_4:default Flashing example for this keyboard: + make bastardkb/dilemma/3x5_2/assembled:default:flash + make bastardkb/dilemma/3x5_2/promicro:default:flash make bastardkb/dilemma/3x5_3:default:flash make bastardkb/dilemma/4x6_4:default:flash -See the [keyboard build instructions](http://docs.bastardkb.com/) +Note*: the `dilemma/3x5_2/promicro` revision is the only DIY Dilemma PCB. It is footprint and pin compatible with a Pro Micro development board, and the firmware is written as such it can be used with the Converter Feature. This PCB uses I2C communication for the Cirque Trackpad, opposed to SPI for the variants with an integrated microcontroller. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix and plug in the keyboard +* **Physical reset button**: Double-tap the reset button under/near the microcontroller. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From c3773d9c350cef5c4323c209f85ffd076177f8f1 Mon Sep 17 00:00:00 2001 From: TweyHugs <31876592+TweyHugs@users.noreply.github.com> Date: Fri, 11 Jul 2025 09:51:45 -0700 Subject: [PATCH 068/167] [Keyboard] Add cloud_macro (#24904) * Added cloud_macro to keyboards folder * Update readme.md * Update readme.md * Update readme.md * Add files via upload * Update keyboards/cloud_macro/keyboard.json Co-authored-by: Joel Challis * Update keyboards/cloud_macro/keymaps/default/keymap.c Co-authored-by: Joel Challis * Update keyboards/cloud_macro/keyboard.json Co-authored-by: Joel Challis * Update keyboards/cloud_macro/keyboard.json Co-authored-by: Joel Challis * Update readme.md * Update keyboards/cloud_macro/readme.md Co-authored-by: Thanh Son Tran <62438883+trnthsn@users.noreply.github.com> * Update keyboards/cloud_macro/keyboard.json Co-authored-by: jack * Update keyboards/cloud_macro/keymaps/default/keymap.c Co-authored-by: jack * Update keyboards/cloud_macro/readme.md Co-authored-by: jack * Update readme.md * Update readme.md reverting description to KB2040 --------- Co-authored-by: Joel Challis Co-authored-by: Thanh Son Tran <62438883+trnthsn@users.noreply.github.com> Co-authored-by: jack --- keyboards/cloud_macro/keyboard.json | 33 +++++++++++++++++++ .../cloud_macro/keymaps/default/keymap.c | 8 +++++ keyboards/cloud_macro/readme.md | 27 +++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 keyboards/cloud_macro/keyboard.json create mode 100644 keyboards/cloud_macro/keymaps/default/keymap.c create mode 100644 keyboards/cloud_macro/readme.md diff --git a/keyboards/cloud_macro/keyboard.json b/keyboards/cloud_macro/keyboard.json new file mode 100644 index 0000000000..1fe45a20a3 --- /dev/null +++ b/keyboards/cloud_macro/keyboard.json @@ -0,0 +1,33 @@ +{ + "manufacturer": "Trey Wax", + "keyboard_name": "cloud_macro", + "maintainer": "TweyHugs", + "development_board": "kb2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "direct":[ + ["GP2", "GP3", "GP4", "GP5", "GP6"] + ] + }, + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0} + ] + } + } +} diff --git a/keyboards/cloud_macro/keymaps/default/keymap.c b/keyboards/cloud_macro/keymaps/default/keymap.c new file mode 100644 index 0000000000..866c98f972 --- /dev/null +++ b/keyboards/cloud_macro/keymaps/default/keymap.c @@ -0,0 +1,8 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT(KC_1, KC_2, KC_3, KC_4, KC_5) +}; diff --git a/keyboards/cloud_macro/readme.md b/keyboards/cloud_macro/readme.md new file mode 100644 index 0000000000..4f45227160 --- /dev/null +++ b/keyboards/cloud_macro/readme.md @@ -0,0 +1,27 @@ +# cloud_macro + +![cloud_macro](https://i.imgur.com/n0PMttQ.jpeg) + +A 5 key macropad in the shape of a cloud + +* Keyboard Maintainer: [Trey Wax](https://github.com/TweyHugs) +* Hardware Supported: Adafruit KB2040 +* Hardware Availability: *https://circuitrey.carrd.co/* + +Make example for this keyboard (after setting up your build environment): + + make cloud_macro:default + +Flashing example for this keyboard: + + make cloud_macro:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From 71b88b333d0bf000201ef588101e501f2d386575 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 11 Jul 2025 18:03:17 +0100 Subject: [PATCH 069/167] Fix pytest/has_community default keymap location (#25471) --- .../pytest/has_community/keymaps/default/{default => }/keymap.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename keyboards/handwired/pytest/has_community/keymaps/default/{default => }/keymap.c (100%) diff --git a/keyboards/handwired/pytest/has_community/keymaps/default/default/keymap.c b/keyboards/handwired/pytest/has_community/keymaps/default/keymap.c similarity index 100% rename from keyboards/handwired/pytest/has_community/keymaps/default/default/keymap.c rename to keyboards/handwired/pytest/has_community/keymaps/default/keymap.c From 6b38dc17cd12b740b45b56c67ad04bb428f3bddb Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 12 Jul 2025 03:05:41 +1000 Subject: [PATCH 070/167] Remove deprecated `RGB_` and Mouse keycodes (#25444) * Remove deprecated `RGB_` and Mouse keycodes * Update old mouse keycodes, 0-9/A-M * Update old mouse keycodes, N-Z & layouts * Missed some stuff --- .../default_pimoroni/pimoroni_trackball.c | 4 +- .../ut47/keymaps/default/keymap.c | 2 +- .../40percentclub/ut47/keymaps/rgb/keymap.c | 2 +- .../summer_breeze/keymaps/default/keymap.c | 10 ++-- keyboards/ai03/orbit/keymaps/default/keymap.c | 6 +-- .../fine40/keymaps/default/keymap.c | 2 +- .../1x4p1/keymaps/default/keymap.c | 4 +- .../wings/keymaps/default/keymap.c | 4 +- keyboards/ashwing66/keymaps/default/keymap.c | 4 +- keyboards/atomic/keymaps/default/keymap.c | 6 +-- keyboards/atreyu/rev1/rev1.c | 4 +- keyboards/atreyu/rev2/rev2.c | 4 +- keyboards/aya/keymaps/default/keymap.c | 10 ++-- keyboards/bajjak/keymaps/5x6/keymap.c | 6 +-- keyboards/bajjak/keymaps/default/keymap.c | 6 +-- keyboards/bastardkb/dilemma/3x5_3/3x5_3.c | 2 +- keyboards/bastardkb/dilemma/4x6_4/4x6_4.c | 2 +- keyboards/bbrfkr/dynamis/dynamis.c | 4 +- .../bbrfkr/dynamis/keymaps/default/keymap.c | 2 +- keyboards/bbrfkr/dynamis/keymaps/iso/keymap.c | 2 +- .../binepad/bnr1/keymaps/default/keymap.c | 2 +- .../binepad/kn01/keymaps/default/keymap.json | 4 +- .../binepad/pixie/keymaps/default/keymap.c | 2 +- .../bt66tech60/keymaps/default/keymap.c | 6 +-- keyboards/buzzard/keymaps/default/keymap.c | 10 ++-- .../ortho48v2/keymaps/default/keymap.c | 4 +- .../sagittarius/keymaps/default/keymap.c | 4 +- .../checkerboards/quark_plus/quark_plus.c | 4 +- keyboards/checkerboards/snop60/snop60.c | 4 +- .../curiosity/keymaps/default/keymap.c | 4 +- .../handwire_101/keymaps/default/keymap.c | 8 +-- .../ckeys/thedora/keymaps/default/keymap.c | 8 +-- keyboards/clueboard/2x1800/2019/2019.c | 32 +++++------ .../2019/keymaps/default_1u_ansi/keymap.c | 2 +- .../2019/keymaps/default_1u_iso/keymap.c | 2 +- .../2019/keymaps/default_2u_ansi/keymap.c | 2 +- .../2019/keymaps/default_2u_iso/keymap.c | 2 +- .../2019/keymaps/default_4u_iso/keymap.c | 2 +- .../2019/keymaps/default_7u_ansi/keymap.c | 2 +- .../2019/keymaps/default_7u_iso/keymap.c | 2 +- keyboards/clueboard/2x1800/2021/2021.c | 8 +-- .../coban/pad9a/keymaps/default/keymap.c | 2 +- keyboards/cornia/keymaps/fire/keymap.c | 6 +-- keyboards/cradio/keymaps/default/keymap.c | 6 +-- keyboards/craftwalk/keymaps/default/keymap.c | 2 +- .../custommk/elysian/keymaps/default/keymap.c | 2 +- keyboards/custommk/evo70/evo70.c | 4 +- keyboards/doio/kb38/kb38.c | 4 +- keyboards/doio/kb3x/keymaps/default/keymap.c | 6 +-- keyboards/draculad/keymaps/default/keymap.c | 6 +-- .../ducky/one2mini/keymaps/ansi/keymap.c | 4 +- .../one2mini/keymaps/ansi_tsangan/keymap.c | 4 +- .../ducky/one2mini/keymaps/default/keymap.c | 4 +- keyboards/ducky/one2mini/keymaps/iso/keymap.c | 4 +- .../ducky/one2sf/keymaps/default/keymap.c | 4 +- .../one2sf/keymaps/default_ansi/keymap.c | 4 +- .../ducky/one2sf/keymaps/default_iso/keymap.c | 4 +- .../dumbpad/v0x/keymaps/default/keymap.c | 6 +-- keyboards/dumbpad/v0x/v0x.c | 4 +- .../v0x_dualencoder/keymaps/default/keymap.c | 4 +- .../dumbpad/v0x_dualencoder/v0x_dualencoder.c | 4 +- .../v0x_right/keymaps/default/keymap.c | 6 +-- keyboards/dumbpad/v0x_right/v0x_right.c | 4 +- .../dumbpad/v1x/keymaps/default/keymap.c | 6 +-- keyboards/dumbpad/v1x/v1x.c | 4 +- .../v1x_dualencoder/keymaps/default/keymap.c | 6 +-- .../dumbpad/v1x_dualencoder/v1x_dualencoder.c | 4 +- .../v1x_right/keymaps/default/keymap.c | 6 +-- keyboards/dumbpad/v1x_right/v1x_right.c | 4 +- .../dz60/keymaps/iso_split-spacebar/keymap.c | 4 +- .../ergodox_ez/glow/keymaps/default/keymap.c | 6 +-- keyboards/ergodox_ez/keymaps/default/keymap.c | 6 +-- .../ergodox_ez/keymaps/default_osx/keymap.c | 6 +-- .../ergodox_ez/keymaps/rgb_layer/keymap.c | 6 +-- keyboards/ergodox_ez/keymaps/testing/keymap.c | 2 +- keyboards/ergoslab/keymaps/default/keymap.c | 6 +-- .../wave/keymaps/default/keymap.c | 8 +-- .../evyd13/ta65/keymaps/default/keymap.c | 4 +- keyboards/ferris/keymaps/default/keymap.json | 8 +-- .../blackbowl/keymaps/default/keymap.c | 6 +-- .../blackflat/keymaps/default/keymap.c | 6 +-- .../hypernano/keymaps/default/keymap.c | 6 +-- .../frobiac/redtilt/keymaps/default/keymap.c | 6 +-- keyboards/fungo/keymaps/default/keymap.c | 6 +-- .../butterstick/keymaps/default/keymap.c | 4 +- keyboards/gboards/combos/germ-mouse-keys.def | 4 +- .../georgi/keymaps/colemak-dh/keymap.c | 4 +- .../georgi/keymaps/default-flipped/keymap.c | 4 +- .../gboards/georgi/keymaps/default/keymap.c | 4 +- .../gboards/georgi/keymaps/minimal/keymap.c | 4 +- .../gboards/georgi/keymaps/norman/keymap.c | 4 +- .../gboards/gergo/keymaps/colemak/keymap.c | 6 +-- .../gboards/gergo/keymaps/default/keymap.c | 6 +-- keyboards/gboards/gergo/keymaps/germ/keymap.c | 6 +-- keyboards/gboards/gergo/keymaps/oled/keymap.c | 6 +-- .../keymaps/colemak-dhm/gergoplex.def | 4 +- .../gergoplex/keymaps/colemak-dhm/keymap.c | 6 +-- .../gergoplex/keymaps/default/keymap.c | 6 +-- .../gravity_45/keymaps/default/keymap.c | 2 +- .../teaqueen/keymaps/default/keymap.c | 4 +- keyboards/h0oni/deskpad/deskpad.c | 8 +-- .../hadron/ver2/keymaps/default/keymap.c | 10 ++-- .../hadron/ver2/keymaps/side_numpad/keymap.c | 10 ++-- .../hadron/ver3/keymaps/default/keymap.c | 10 ++-- keyboards/halfcliff/halfcliff.c | 8 +-- .../keymaps/default/keymap.c | 2 +- .../108key_trackpoint/keymaps/dvorak/keymap.c | 2 +- .../keymaps/dvorak_media/keymap.c | 2 +- .../handwired/42/keymaps/default/keymap.c | 4 +- .../handwired/acacia/keymaps/default/keymap.c | 2 +- .../handwired/chiron/keymaps/default/keymap.c | 8 +-- .../handwired/cmd60/keymaps/default/keymap.c | 6 +-- .../concertina/64key/keymaps/default/keymap.c | 8 +-- .../handwired/dactyl/keymaps/default/keymap.c | 6 +-- .../handwired/dactyl/keymaps/dvorak/keymap.c | 6 +-- .../dactyl_cc/keymaps/default/keymap.c | 6 +-- .../4x5/keymaps/default/keymap.c | 12 ++--- .../4x5/keymaps/dvorak/keymap.c | 12 ++--- .../4x6/keymaps/default/keymap.c | 12 ++--- .../5x6_2_5/keymaps/default/keymap.json | 34 ++++++------ .../5x6_5/keymaps/default/keymap.json | 34 ++++++------ .../dactyl_maximus/keymaps/default/keymap.c | 8 +-- .../dactyl_promicro/keymaps/default/keymap.c | 6 +-- .../dactyl_rah/keymaps/default/keymap.c | 6 +-- .../dactyl_rah/keymaps/right/keymap.c | 6 +-- .../dactylmacropad/keymaps/default/keymap.c | 6 +-- .../datahand/keymaps/default/keymap.c | 6 +-- .../handwired/dmote/keymaps/default/keymap.c | 6 +-- .../dqz11n1g/keymaps/default/keymap.c | 8 +-- .../elrgo_s/keymaps/default/keymap.c | 2 +- .../ergocheap/keymaps/default/keymap.c | 4 +- .../fivethirteen/keymaps/default/keymap.c | 6 +-- .../floorboard/keymaps/default/keymap.c | 2 +- .../frenchdev/keymaps/default/keymap.c | 22 ++++---- .../handwired/k8split/keymaps/left/keymap.c | 4 +- .../handwired/kbod/keymaps/default/keymap.c | 8 +-- .../spaget/keymaps/default/keymap.c | 8 +-- .../handwired/ortho5x14/keymaps/2u/keymap.c | 8 +-- .../ortho5x14/keymaps/default/keymap.c | 2 +- .../ortho5x14/keymaps/split1/keymap.c | 6 +-- .../petruziamini/keymaps/default/keymap.c | 4 +- .../pilcrow/keymaps/default/keymap.c | 6 +-- .../pterodactyl/keymaps/default/keymap.c | 6 +-- .../riblee_f401/keymaps/default/keymap.c | 2 +- .../riblee_f411/keymaps/default/keymap.c | 2 +- .../scottomouse/keymaps/default/keymap.c | 2 +- .../handwired/sick68/keymaps/default/keymap.c | 4 +- .../snatchpad/keymaps/default/keymap.c | 2 +- keyboards/handwired/snatchpad/snatchpad.c | 8 +-- .../handwired/sono1/keymaps/default/keymap.c | 4 +- .../space_oddity/keymaps/default/keymap.c | 4 +- .../handwired/t111/keymaps/oleg/keymap.c | 6 +-- .../terminus_mini/keymaps/default/keymap.c | 6 +-- .../handwired/tkk/keymaps/default/keymap.c | 2 +- .../trackpoint/keymaps/default/keymap.c | 2 +- .../traveller/keymaps/default/keymap.c | 40 +++++++------- .../tsubasa/keymaps/default/keymap.c | 8 +-- .../twadlee/tp69/keymaps/default/keymap.c | 2 +- .../twig/twig50/keymaps/default/keymap.c | 8 +-- .../videowriter/keymaps/default/keymap.c | 4 +- .../videowriter/keymaps/oleg/keymap.c | 4 +- .../handwired/wulkan/keymaps/default/keymap.c | 6 +-- .../helix/rev3_5rows/keymaps/default/keymap.c | 6 +-- keyboards/hhkb/yang/keymaps/kanru/keymap.c | 6 +-- .../hnahkb/vn66/keymaps/default/keymap.c | 4 +- .../nyx/rev1/keymaps/default/keymap.c | 4 +- keyboards/hotdox/keymaps/default/keymap.c | 6 +-- .../mschwingen/keymaps/default/keymap.c | 8 +-- .../idank/spankbd/keymaps/default/keymap.json | 12 ++--- .../idank/sweeq/keymaps/default/keymap.json | 8 +-- .../ergodox_infinity/keymaps/default/keymap.c | 6 +-- .../keymaps/halfkeyboard/keymap.c | 8 +-- .../infinity60/keymaps/hasu/keymap.c | 14 ++--- .../neopad/rev1/keymaps/default/keymap.c | 12 ++--- .../piggy60/keymaps/default/keymap.c | 4 +- keyboards/junco/keymaps/default/keymap.c | 2 +- .../paladin64/keymaps/default/keymap.c | 4 +- .../kaishi65/keymaps/default/keymap.c | 4 +- .../kbdfans/kbd67/rev2/keymaps/iso/keymap.c | 4 +- .../model01/keymaps/default/keymap.c | 6 +-- .../keycapsss/plaid_pad/keymaps/oled/keymap.c | 6 +-- .../ansi/rgb/keymaps/default/keymap.c | 2 +- .../keyhive/ut472/keymaps/default/keymap.c | 2 +- .../kikoslab/kl90/keymaps/default/keymap.c | 4 +- keyboards/kin80/keymaps/default/keymap.c | 8 +-- keyboards/kinesis/keymaps/dvorak/keymap.c | 6 +-- .../ropro/keymaps/default/keymap.c | 4 +- .../kingly_keys/soap/keymaps/default/keymap.c | 4 +- .../madeline/keymaps/default/keymap.c | 2 +- .../kousa/keymaps/default/keymap.c | 2 +- .../krado66/keymaps/default/keymap.c | 6 +-- .../promenade_rp24s/keymaps/default/keymap.c | 2 +- .../pteron56/keymaps/default/keymap.c | 4 +- .../ktec/ergodone/keymaps/default/keymap.c | 6 +-- .../ktec/staryu/keymaps/default/keymap.c | 4 +- keyboards/kv/revt/keymaps/default/keymap.c | 4 +- .../keymaps/default/keymap.c | 2 +- keyboards/makeymakey/keymaps/default/keymap.c | 4 +- .../minidox/keymaps/bepo/keymap.c | 4 +- keyboards/marcopad/keymaps/backlit/keymap.c | 20 +++---- .../leftover30/keymaps/default/keymap.c | 6 +-- .../keymaps/default_isoenter/keymap.c | 6 +-- .../rhymestone/keymaps/default/keymap.c | 4 +- .../treadstone32/keymaps/default/keymap.c | 4 +- .../treadstone48/keymaps/default/keymap.c | 8 +-- .../rev1/keymaps/like_jis_rs/keymap.c | 8 +-- .../maxr1998/phoebe/keymaps/default/keymap.c | 4 +- keyboards/mechanickeys/undead60m/undead60m.c | 4 +- .../chapter1/keymaps/default/keymap.c | 2 +- .../puckbuddy/keymaps/default/keymap.c | 4 +- .../sugarglider/keymaps/default/keymap.c | 4 +- keyboards/mechwild/sugarglider/sugarglider.c | 4 +- keyboards/mlego/m65/keymaps/default/keymap.c | 12 ++--- keyboards/mlego/m65/keymaps/uk/keymap.c | 12 ++--- keyboards/molecule/keymaps/default/keymap.c | 4 +- keyboards/mt/mt40/keymaps/default/keymap.c | 6 +-- keyboards/numatreus/keymaps/like_jis/keymap.c | 8 +-- .../keymaps/default/keymap.c | 6 +-- keyboards/oddball/keymaps/default/keymap.c | 6 +-- keyboards/oddball/keymaps/pmw3360/keymap.c | 6 +-- keyboards/oddball/oddball.c | 10 ++-- keyboards/org60/keymaps/default/keymap.c | 2 +- .../voice65/hotswap/keymaps/default/keymap.c | 4 +- .../voice65/soldered/keymaps/default/keymap.c | 4 +- keyboards/p3d/spacey/keymaps/default/keymap.c | 4 +- keyboards/p3d/synapse/synapse.c | 4 +- keyboards/pabile/p18/keymaps/default/keymap.c | 4 +- .../pabile/p20/ver1/keymaps/default/keymap.c | 10 ++-- keyboards/pabile/p40/keymaps/default/keymap.c | 6 +-- .../pabile/p40_ortho/keymaps/default/keymap.c | 6 +-- keyboards/pabile/p42/keymaps/default/keymap.c | 6 +-- keyboards/phoenix/keymaps/default/keymap.c | 6 +-- .../paddino02/rev1/keymaps/default/keymap.c | 2 +- .../rev2/left/keymaps/default/keymap.c | 2 +- .../rev2/right/keymaps/default/keymap.c | 2 +- keyboards/planck/keymaps/default/keymap.c | 4 +- .../madromys/keymaps/default/keymap.c | 2 +- .../ploopyco/mouse/keymaps/default/keymap.c | 2 +- keyboards/ploopyco/ploopyco.c | 2 +- .../trackball/keymaps/default/keymap.c | 4 +- .../trackball_mini/keymaps/default/keymap.c | 4 +- .../trackball_thumb/keymaps/default/keymap.c | 2 +- keyboards/pluckey/keymaps/default/keymap.c | 6 +-- .../pluckey/keymaps/default_ergo/keymap.c | 6 +-- keyboards/pluckey/pluckey.c | 4 +- keyboards/proteus67/keymaps/default/keymap.c | 4 +- .../oceanographer/keymaps/default/keymap.c | 2 +- .../keymaps/default_625/keymap.c | 2 +- .../keymaps/split_225_2/keymap.c | 2 +- keyboards/qck75/v1/v1.c | 8 +-- .../qpockets/eggman/keymaps/default/keymap.c | 4 +- .../rev1/keymaps/big_space/keymap.c | 4 +- .../space_space/rev1/keymaps/default/keymap.c | 4 +- keyboards/qpockets/space_space/rev2/rev2.c | 4 +- .../qpockets/wanten/keymaps/2u_bars/keymap.c | 4 +- .../qpockets/wanten/keymaps/625_bar/keymap.c | 4 +- .../qpockets/wanten/keymaps/default/keymap.c | 4 +- .../qvex/lynepad/keymaps/default/keymap.c | 14 ++--- keyboards/qwertyydox/keymaps/default/keymap.c | 6 +-- .../rainkeeb/keymaps/default/keymap.c | 8 +-- .../trailmix/keymaps/default/keymap.c | 6 +-- keyboards/rainkeebs/trailmix/trailmix.c | 16 +++--- .../rart/rart4x4/keymaps/default/keymap.c | 4 +- .../rart/rartpad/keymaps/default/keymap.c | 4 +- .../rate/pistachio/keymaps/default/keymap.c | 2 +- .../nomu30/keymaps/center_sprit/keymap.c | 4 +- .../nomu30/keymaps/center_sprit/readme.md | 4 +- keyboards/redox/keymaps/default/keymap.c | 6 +-- keyboards/redox_media/redox_media.c | 4 +- .../reviung5/keymaps/default_lre/keymap.c | 2 +- .../reviung5/keymaps/default_rre/keymap.c | 2 +- keyboards/rocketboard_16/keycode_lookup.c | 32 +++++------ .../katana60/rev1/keymaps/colemak/keymap.c | 12 ++--- .../katana60/rev1/keymaps/default/keymap.c | 12 ++--- .../katana60/rev2/keymaps/default/keymap.c | 6 +-- .../nafuda/keymaps/default/keymap.c | 8 +-- .../keymaps/default_with_nafuda/keymap.c | 8 +-- .../naked60/keymaps/default/keymap.c | 4 +- .../keymaps/default_with_nafuda/keymap.c | 12 ++--- .../keymaps/default_with_setta21/keymap.c | 4 +- .../creator_pro/keymaps/default/keymap.c | 4 +- .../shuguet/shu89/keymaps/default/keymap.json | 4 +- keyboards/signum/3_0/keymaps/default/keymap.c | 6 +-- .../signum/3_0/keymaps/default/layout.py | 12 ++--- .../aurora/sweep/keymaps/default/keymap.json | 6 +-- .../ferris/keymaps/default/keymap.json | 6 +-- keyboards/tada68/keymaps/default/keymap.c | 4 +- keyboards/tada68/keymaps/rgb/keymap.c | 4 +- .../takashicompany/baumkuchen/baumkuchen.c | 4 +- .../center_enter/keymaps/default/keymap.c | 4 +- keyboards/takashicompany/compacx/compacx.c | 4 +- .../dogtag/keymaps/default/keymap.c | 2 +- .../goat51/keymaps/default/keymap.c | 4 +- .../jourkey/keymaps/default/keymap.c | 2 +- .../qoolee/keymaps/default/keymap.c | 4 +- .../spreadwriter/keymaps/default/keymap.c | 4 +- keyboards/thumbsup/keymaps/default/keymap.c | 12 ++--- .../blueberry/keymaps/default/keymap.c | 6 +-- .../le_chiffre/keymaps/default/keymap.c | 2 +- .../tunks/ergo33/keymaps/default/keymap.c | 4 +- .../tzarc/djinn/keymaps/default/keymap.c | 8 +-- keyboards/varanidae/keymaps/ansi/keymap.c | 4 +- .../keymaps/ansi_split_bs_rshift/keymap.c | 4 +- keyboards/varanidae/keymaps/default/keymap.c | 4 +- keyboards/varanidae/keymaps/iso/keymap.c | 4 +- .../keymaps/iso_split_bs_rshift/keymap.c | 4 +- keyboards/waterfowl/waterfowl.c | 8 +-- .../wolf/frogpad/keymaps/default/keymap.c | 4 +- keyboards/work_louder/micro/micro.c | 4 +- keyboards/xdboards/recon/recon.c | 4 +- .../ansi_split_bs_rshift_space/keymap.c | 2 +- keyboards/xiudi/xd60/keymaps/default/keymap.c | 2 +- .../yanghu/unicorne/keymaps/default/keymap.c | 4 +- keyboards/ydkb/grape/keymaps/default/keymap.c | 2 +- keyboards/ymdk/yd60mq/keymaps/iso/keymap.c | 4 +- .../navpad/10/keymaps/default/keymap.c | 4 +- .../navpad/10/keymaps/default/readme.md | 4 +- .../10_helix_r/keymaps/default/keymap.c | 4 +- .../10_helix_r/keymaps/default/readme.md | 4 +- .../quick17/keymaps/default/keymap.c | 6 +-- .../zsa/moonlander/keymaps/default/keymap.c | 6 +-- .../ortho_5x13/default_ortho_5x13/keymap.c | 12 ++--- .../ortho_6x13/default_ortho_6x13/keymap.c | 12 ++--- quantum/quantum_keycodes_legacy.h | 53 ------------------- tests/pointing/test_pointing.cpp | 2 +- 325 files changed, 911 insertions(+), 964 deletions(-) diff --git a/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c b/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c index c32f2a04d2..0fe7cdc247 100644 --- a/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c +++ b/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c @@ -89,9 +89,9 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { if (IS_MOUSEKEY_BUTTON(keycode)) { report_mouse_t currentReport = pointing_device_get_report(); if (record->event.pressed) { - currentReport.buttons |= 1 << (keycode - KC_MS_BTN1); + currentReport.buttons |= 1 << (keycode - QK_MOUSE_BUTTON_1); } else { - currentReport.buttons &= ~(1 << (keycode - KC_MS_BTN1)); + currentReport.buttons &= ~(1 << (keycode - QK_MOUSE_BUTTON_1)); } pointing_device_set_report(currentReport); pointing_device_send(); diff --git a/keyboards/40percentclub/ut47/keymaps/default/keymap.c b/keyboards/40percentclub/ut47/keymaps/default/keymap.c index 4eb2c190c1..4a9de82492 100644 --- a/keyboards/40percentclub/ut47/keymaps/default/keymap.c +++ b/keyboards/40percentclub/ut47/keymaps/default/keymap.c @@ -101,7 +101,7 @@ LAYOUT( /* Tab */ KC_ESC, KC_CALC, KC_WHOM, KC_MAIL, KC_MYCM, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LED_TOG, LED_CHG, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R + _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT ), }; diff --git a/keyboards/40percentclub/ut47/keymaps/rgb/keymap.c b/keyboards/40percentclub/ut47/keymaps/rgb/keymap.c index 86ceefaafb..17c0be7772 100644 --- a/keyboards/40percentclub/ut47/keymaps/rgb/keymap.c +++ b/keyboards/40percentclub/ut47/keymaps/rgb/keymap.c @@ -53,7 +53,7 @@ LAYOUT( /* Tab */ KC_ESC, KC_CALC, KC_WHOM, KC_MAIL, KC_MYCM, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_TOGG, UG_NEXT, UG_HUEU, UG_HUED, UG_SATU, UG_SATD, UG_VALU, UG_VALD, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R + _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT ), }; diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/default/keymap.c b/keyboards/afternoonlabs/summer_breeze/keymaps/default/keymap.c index d65d119338..e545bdb1da 100644 --- a/keyboards/afternoonlabs/summer_breeze/keymaps/default/keymap.c +++ b/keyboards/afternoonlabs/summer_breeze/keymaps/default/keymap.c @@ -29,13 +29,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_MAIN] = LAYOUT( //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ - _______, KC_WH_U, _______, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV, + _______, MS_WHLU, _______, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV, //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ - KC_BTN1, KC_WH_D, KC_BTN2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS, + MS_BTN1, MS_WHLD, MS_BTN2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS, //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ - KC_MS_U, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP, + MS_UP, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP, //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ - KC_MS_L, KC_MS_D, KC_MS_R, 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_LEFT, KC_DOWN, KC_RIGHT, + MS_LEFT, MS_DOWN, MS_RGHT, 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_LEFT, KC_DOWN, KC_RIGHT, //└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ @@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐ _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ - _______, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, MS_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, //├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤ diff --git a/keyboards/ai03/orbit/keymaps/default/keymap.c b/keyboards/ai03/orbit/keymaps/default/keymap.c index de737d4b9a..d777fafef1 100644 --- a/keyboards/ai03/orbit/keymaps/default/keymap.c +++ b/keyboards/ai03/orbit/keymaps/default/keymap.c @@ -38,9 +38,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [2] = LAYOUT( /* Mousekeys and Numpad */ KC_NO, _______, _______, _______, _______, _______, _______, KC_NUM, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, _______, - KC_NO, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, _______, - TO(1), _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, _______, - TO(1), _______, KC_ACL0, KC_ACL1, KC_ACL2, KC_BTN3, _______, DBLZERO, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, _______, MANUAL, + KC_NO, _______, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, _______, + TO(1), _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, _______, + TO(1), _______, MS_ACL0, MS_ACL1, MS_ACL2, MS_BTN3, _______, DBLZERO, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, _______, MANUAL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; diff --git a/keyboards/aidansmithdotdev/fine40/keymaps/default/keymap.c b/keyboards/aidansmithdotdev/fine40/keymaps/default/keymap.c index 0010c9f97b..e541c14d01 100644 --- a/keyboards/aidansmithdotdev/fine40/keymaps/default/keymap.c +++ b/keyboards/aidansmithdotdev/fine40/keymaps/default/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC , QK_BOOT, _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_F11 , KC_F12 , KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_F19 , KC_F20 , _______ , _______ , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , _______ , - _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_MS_L , KC_MS_D , KC_MS_U , KC_MS_R , _______ + _______ , _______ , _______ , _______ , _______ , _______ , _______ , MS_LEFT , MS_DOWN , MS_UP , MS_RGHT , _______ ), }; diff --git a/keyboards/arrayperipherals/1x4p1/keymaps/default/keymap.c b/keyboards/arrayperipherals/1x4p1/keymaps/default/keymap.c index 5318b16df5..dc4e21127a 100644 --- a/keyboards/arrayperipherals/1x4p1/keymaps/default/keymap.c +++ b/keyboards/arrayperipherals/1x4p1/keymaps/default/keymap.c @@ -20,9 +20,9 @@ along with this program. If not, see . bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } else { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } } return true; diff --git a/keyboards/arrowmechanics/wings/keymaps/default/keymap.c b/keyboards/arrowmechanics/wings/keymaps/default/keymap.c index 6e0a6a18dc..97f465de35 100644 --- a/keyboards/arrowmechanics/wings/keymaps/default/keymap.c +++ b/keyboards/arrowmechanics/wings/keymaps/default/keymap.c @@ -10,7 +10,7 @@ enum layers { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT( KC_VOLU, 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_EQL, KC_PSCR, KC_DEL, - KC_VOLD, KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, RM_NEXT, KC_BTN1, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, + KC_VOLD, KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, RM_NEXT, MS_BTN1, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, KC_MPLY, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, C(KC_C), C(KC_V), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MNXT, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, C(KC_Z), C(KC_Y), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_MPRV, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_HOME, @@ -20,6 +20,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [BASE] = { ENCODER_CCW_CW(RM_HUEU, RM_HUED), ENCODER_CCW_CW(KC_WH_U, KC_WH_D) }, + [BASE] = { ENCODER_CCW_CW(RM_HUEU, RM_HUED), ENCODER_CCW_CW(MS_WHLU, MS_WHLD) }, }; #endif diff --git a/keyboards/ashwing66/keymaps/default/keymap.c b/keyboards/ashwing66/keymaps/default/keymap.c index 304f888742..416fe0261e 100644 --- a/keyboards/ashwing66/keymaps/default/keymap.c +++ b/keyboards/ashwing66/keymaps/default/keymap.c @@ -18,8 +18,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_LAYERB] = LAYOUT_5x16( KC_ESC ,RM_TOGG,RM_PREV ,RM_NEXT ,RM_VALD ,RM_VALU ,RM_SPDD ,RM_SPDU ,RM_HUED ,RM_HUEU ,RM_SATD ,RM_SATU , - KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_BTN1 ,KC_MS_U ,KC_BTN2 ,KC_P ,KC_EQL , - KC_LCTL,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_SCLN ,KC_QUOT , + KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,MS_BTN1 ,MS_UP ,MS_BTN2 ,KC_P ,KC_EQL , + KC_LCTL,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,MS_LEFT ,MS_DOWN ,MS_RGHT ,KC_SCLN ,KC_QUOT , KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LBRC ,KC_MUTE ,KC_RBRC ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT , KC_LBRC,KC_PSCR,KC_CAPS ,_______ ,KC_LGUI ,KC_LALT ,KC_SPC ,KC_END ,KC_HOME ,KC_ENT ,KC_BSPC ,_______ ,KC_INS ,KC_DEL ,KC_BSLS ,KC_RBRC ), diff --git a/keyboards/atomic/keymaps/default/keymap.c b/keyboards/atomic/keymaps/default/keymap.c index 70feec1038..4afcf6c053 100644 --- a/keyboards/atomic/keymaps/default/keymap.c +++ b/keyboards/atomic/keymaps/default/keymap.c @@ -203,8 +203,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ KC_NUM, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___, KC_SCRL, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR, - KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U, - _______, _______, DF(_QW), DF(_CM), DF(_DV), _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D, - _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R + KC_CAPS, MS_BTN5, MS_BTN4, MS_BTN3, MS_BTN2, MS_ACL0, MS_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, MS_WHLU, + _______, _______, DF(_QW), DF(_CM), DF(_DV), _______, _______, _______, _______, _______, _______, ___T___, ___T___, MS_UP, MS_WHLD, + _______, _______, _______, _______, _______, MS_BTN1, MS_BTN1, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT ), }; diff --git a/keyboards/atreyu/rev1/rev1.c b/keyboards/atreyu/rev1/rev1.c index 026eba4b8a..495d6e85f5 100644 --- a/keyboards/atreyu/rev1/rev1.c +++ b/keyboards/atreyu/rev1/rev1.c @@ -31,9 +31,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } if (index == 0) { if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } return true; diff --git a/keyboards/atreyu/rev2/rev2.c b/keyboards/atreyu/rev2/rev2.c index 78c70631a3..37c9e489c1 100644 --- a/keyboards/atreyu/rev2/rev2.c +++ b/keyboards/atreyu/rev2/rev2.c @@ -31,9 +31,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } if (index == 0) { if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } return true; diff --git a/keyboards/aya/keymaps/default/keymap.c b/keyboards/aya/keymaps/default/keymap.c index 255e13d7b7..ec429cf375 100644 --- a/keyboards/aya/keymaps/default/keymap.c +++ b/keyboards/aya/keymaps/default/keymap.c @@ -37,8 +37,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [0] = LAYOUT( _______, 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_BTN2, 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_BTN1, KC_A , KC_S , KC_D , KC_F , KC_G, _______, _______, KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, + _______, MS_BTN2, KC_Q , KC_W , KC_E , KC_R , KC_T, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, + _______, MS_BTN1, 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_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B, KC_LALT, MO(2) , _______, KC_DEL , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______, KC_LSFT, _LG_ESC, KC_TAB , MO(1) , _______, KC_ENT, _RC_SPC, _RS_BSP ), @@ -79,9 +79,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [2] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, MS_WHLL, MS_WHLD, MS_WHLU, MS_WHLR, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2 + _______, _______, _______, _______, _______, _______, MS_BTN1, MS_BTN2 ), }; diff --git a/keyboards/bajjak/keymaps/5x6/keymap.c b/keyboards/bajjak/keymaps/5x6/keymap.c index b700976dc9..65061a398a 100644 --- a/keyboards/bajjak/keymaps/5x6/keymap.c +++ b/keyboards/bajjak/keymaps/5x6/keymap.c @@ -122,9 +122,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Left hand Right hand XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, KC_EJCT, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, - XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - QK_BOOT, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, XXXXXXX, KC_WH_L, XXXXXXX, KC_WH_R, XXXXXXX, DF(SYMB), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + QK_BOOT, XXXXXXX, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, XXXXXXX, MS_WHLL, XXXXXXX, MS_WHLR, XXXXXXX, DF(SYMB), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, DF(BASE), _______, _______, _______, _______, _______, _______, diff --git a/keyboards/bajjak/keymaps/default/keymap.c b/keyboards/bajjak/keymaps/default/keymap.c index 4e2a7e055c..39919c628c 100644 --- a/keyboards/bajjak/keymaps/default/keymap.c +++ b/keyboards/bajjak/keymaps/default/keymap.c @@ -128,9 +128,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Left hand Right hand KC_SLEP, KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_EJCT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_TAB, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, - KC_CAPS, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, _______, _______, _______, _______, _______, _______, - KC_LSFT, _______, KC_WH_L, _______, KC_WH_R, _______, _______, _______, _______, _______, _______, _______, + KC_TAB, _______, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, _______, _______, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, _______, _______, _______, _______, _______, _______, _______, _______, + KC_LSFT, _______, MS_WHLL, _______, MS_WHLR, _______, _______, _______, _______, _______, _______, _______, KC_LCTL, KC_LGUI, ALT_T(KC_INSERT), KC_LEFT, KC_RGHT, KC_UP, KC_DOWN, _______, _______, QK_BOOT, CTL_T(KC_ESC), KC_LALT, KC_RGUI, CTL_T(KC_RALT), KC_HOME, KC_PGUP, diff --git a/keyboards/bastardkb/dilemma/3x5_3/3x5_3.c b/keyboards/bastardkb/dilemma/3x5_3/3x5_3.c index a186139835..444e479d1a 100644 --- a/keyboards/bastardkb/dilemma/3x5_3/3x5_3.c +++ b/keyboards/bastardkb/dilemma/3x5_3/3x5_3.c @@ -27,7 +27,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } switch (index) { case 0: // Left-half encoder, mouse scroll. - tap_code(clockwise ? KC_MS_WH_UP : KC_MS_WH_DOWN); + tap_code(clockwise ? MS_WHLU : MS_WHLD); break; case 1: // Right-half encoder, volume control. tap_code(clockwise ? KC_AUDIO_VOL_UP : KC_AUDIO_VOL_DOWN); diff --git a/keyboards/bastardkb/dilemma/4x6_4/4x6_4.c b/keyboards/bastardkb/dilemma/4x6_4/4x6_4.c index 49b24fbd04..3545e60503 100644 --- a/keyboards/bastardkb/dilemma/4x6_4/4x6_4.c +++ b/keyboards/bastardkb/dilemma/4x6_4/4x6_4.c @@ -48,7 +48,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } switch (index) { case 0: // Left-half encoder, mouse scroll. - tap_code(clockwise ? KC_MS_WH_DOWN : KC_MS_WH_UP); + tap_code(clockwise ? MS_WHLD : MS_WHLU); break; case 1: // Right-half encoder, volume control. tap_code(clockwise ? KC_AUDIO_VOL_UP : KC_AUDIO_VOL_DOWN); diff --git a/keyboards/bbrfkr/dynamis/dynamis.c b/keyboards/bbrfkr/dynamis/dynamis.c index f21bf24900..9bf7fb6ae1 100644 --- a/keyboards/bbrfkr/dynamis/dynamis.c +++ b/keyboards/bbrfkr/dynamis/dynamis.c @@ -20,9 +20,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (clockwise) { - tap_code(layer_state == 0 ? KC_WH_D : KC_VOLD); + tap_code(layer_state == 0 ? MS_WHLD : KC_VOLD); } else { - tap_code(layer_state == 0 ? KC_WH_U : KC_VOLU); + tap_code(layer_state == 0 ? MS_WHLU : KC_VOLU); } return true; } diff --git a/keyboards/bbrfkr/dynamis/keymaps/default/keymap.c b/keyboards/bbrfkr/dynamis/keymaps/default/keymap.c index e27d17827c..301a9003c8 100644 --- a/keyboards/bbrfkr/dynamis/keymaps/default/keymap.c +++ b/keyboards/bbrfkr/dynamis/keymaps/default/keymap.c @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN2, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_BTN3, MS_BTN2, MS_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_RGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE ), diff --git a/keyboards/bbrfkr/dynamis/keymaps/iso/keymap.c b/keyboards/bbrfkr/dynamis/keymaps/iso/keymap.c index 38a56f56f4..ecd1d69c11 100644 --- a/keyboards/bbrfkr/dynamis/keymaps/iso/keymap.c +++ b/keyboards/bbrfkr/dynamis/keymaps/iso/keymap.c @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN2, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_BTN3, MS_BTN2, MS_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_RGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE ), diff --git a/keyboards/binepad/bnr1/keymaps/default/keymap.c b/keyboards/binepad/bnr1/keymaps/default/keymap.c index 4e7b0cf6eb..3ba547b2af 100644 --- a/keyboards/binepad/bnr1/keymaps/default/keymap.c +++ b/keyboards/binepad/bnr1/keymaps/default/keymap.c @@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_L0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_L1] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP) } + [_L1] = { ENCODER_CCW_CW(MS_WHLD, MS_WHLU) } }; #endif diff --git a/keyboards/binepad/kn01/keymaps/default/keymap.json b/keyboards/binepad/kn01/keymaps/default/keymap.json index d6a3835f6c..f4e436cbc6 100644 --- a/keyboards/binepad/kn01/keymaps/default/keymap.json +++ b/keyboards/binepad/kn01/keymaps/default/keymap.json @@ -13,8 +13,8 @@ ], [ { - "ccw": "KC_MS_WH_DOWN", - "cw": "KC_MS_WH_UP" + "ccw": "MS_WHLD", + "cw": "MS_WHLU" } ] ], diff --git a/keyboards/binepad/pixie/keymaps/default/keymap.c b/keyboards/binepad/pixie/keymaps/default/keymap.c index b49c4db6de..a8e2a12303 100644 --- a/keyboards/binepad/pixie/keymaps/default/keymap.c +++ b/keyboards/binepad/pixie/keymaps/default/keymap.c @@ -15,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), - ENCODER_CCW_CW(KC_WH_U, KC_WH_D) + ENCODER_CCW_CW(MS_WHLU, MS_WHLD) } }; diff --git a/keyboards/bt66tech/bt66tech60/keymaps/default/keymap.c b/keyboards/bt66tech/bt66tech60/keymaps/default/keymap.c index 5f4acc1b9d..c8bc919a86 100644 --- a/keyboards/bt66tech/bt66tech60/keymaps/default/keymap.c +++ b/keyboards/bt66tech/bt66tech60/keymaps/default/keymap.c @@ -34,9 +34,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FN] = LAYOUT_60_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_MS_ACCEL0, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, - KC_MS_ACCEL1, KC_MS_LEFT, KC_MS_DOWN,KC_MS_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_MS_ACCEL2, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, MO(_FN1), + MS_ACL0, MS_BTN1, MS_UP, MS_BTN2, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, + MS_ACL1, MS_LEFT, MS_DOWN,MS_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + MS_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, MO(_FN1), _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______ ), diff --git a/keyboards/buzzard/keymaps/default/keymap.c b/keyboards/buzzard/keymaps/default/keymap.c index 7ca3ddc7de..9e9fe20577 100644 --- a/keyboards/buzzard/keymaps/default/keymap.c +++ b/keyboards/buzzard/keymaps/default/keymap.c @@ -52,13 +52,13 @@ enum layers { #define SFT_TAB MT(MOD_LSFT, KC_TAB) // Thumbcluster -#define UC_TL1 KC_BTN1 +#define UC_TL1 MS_BTN1 #define UC_TL2 LT(NAVR, KC_SPC) #define UC_TL3 LT(NUMR, KC_TAB) #define UC_TR3 LT(FUNL, KC_BSPC) #define UC_TR2 LT(SYMB, KC_ENT) -#define UC_TR1 KC_BTN2 +#define UC_TR1 MS_BTN2 // Shortcuts #define UC_COPY LCTL(KC_C) @@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , UC_OSFT, GUI_A , ALT_S , CTL_D , SFT_F , KC_G , KC_H , SFT_J , CTL_K , ALT_L , GUI_SCL, KC_DEL, CTL_ESC, KC_Z , RALT_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, RALT_DT, KC_SLSH, ADJL , - KC_BTN1, UC_TL2 , UC_TL3 , UC_TR3 , UC_TR2 , UC_TR1 + MS_BTN1, UC_TL2 , UC_TL3 , UC_TR3 , UC_TR2 , UC_TR1 ), // /* @@ -113,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAVR] = LAYOUT( _______, _______, _______, _______, _______, KC_INS , UC_CUT , KC_PGUP, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, UC_COPY, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, _______, - _______, _______, _______, _______, _______, _______, UC_PSTE, KC_HOME, KC_WH_U, KC_WH_D, KC_END , _______, + _______, _______, _______, _______, _______, _______, UC_PSTE, KC_HOME, MS_WHLU, MS_WHLD, KC_END , _______, _______, _______, _______, KC_BSPC, KC_ENT , _______ ), // -------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -264,7 +264,7 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case KC_BTN1 ... KC_BTN5: + case MS_BTN1 ... MS_BTN5: return true; break; } diff --git a/keyboards/cannonkeys/ortho48v2/keymaps/default/keymap.c b/keyboards/cannonkeys/ortho48v2/keymaps/default/keymap.c index 7bfc7a5cf0..b961c50e36 100644 --- a/keyboards/cannonkeys/ortho48v2/keymaps/default/keymap.c +++ b/keyboards/cannonkeys/ortho48v2/keymaps/default/keymap.c @@ -86,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_LOWER] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }, - [_RAISE] = { ENCODER_CCW_CW(KC_MS_WH_LEFT, KC_MS_WH_RIGHT) }, + [_LOWER] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) }, + [_RAISE] = { ENCODER_CCW_CW(MS_WHLL, MS_WHLR) }, }; #endif diff --git a/keyboards/cannonkeys/sagittarius/keymaps/default/keymap.c b/keyboards/cannonkeys/sagittarius/keymaps/default/keymap.c index a97574c774..5dbb6b8b87 100644 --- a/keyboards/cannonkeys/sagittarius/keymaps/default/keymap.c +++ b/keyboards/cannonkeys/sagittarius/keymaps/default/keymap.c @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(UG_HUED, UG_HUEU), ENCODER_CCW_CW(UG_SATD, UG_SATU) }, - [1] = { ENCODER_CCW_CW(UG_VALD, UG_VALU), ENCODER_CCW_CW(UG_SPDD, UG_SPDU), ENCODER_CCW_CW(UG_PREV, UG_NEXT), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) }, + [0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(UG_HUED, UG_HUEU), ENCODER_CCW_CW(UG_SATD, UG_SATU) }, + [1] = { ENCODER_CCW_CW(UG_VALD, UG_VALU), ENCODER_CCW_CW(UG_SPDD, UG_SPDU), ENCODER_CCW_CW(UG_PREV, UG_NEXT), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) }, }; #endif diff --git a/keyboards/checkerboards/quark_plus/quark_plus.c b/keyboards/checkerboards/quark_plus/quark_plus.c index 84e2375a74..66b210ad7a 100644 --- a/keyboards/checkerboards/quark_plus/quark_plus.c +++ b/keyboards/checkerboards/quark_plus/quark_plus.c @@ -20,9 +20,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (index == 1) { /* left encoder*/ if (clockwise){ - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } else if (index == 0) { /* right encoder */ if (clockwise){ diff --git a/keyboards/checkerboards/snop60/snop60.c b/keyboards/checkerboards/snop60/snop60.c index 641815f919..18445174f3 100644 --- a/keyboards/checkerboards/snop60/snop60.c +++ b/keyboards/checkerboards/snop60/snop60.c @@ -22,9 +22,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (index == 1) { /* left encoder*/ if (clockwise){ - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } else if (index == 0) { /* right encoder */ if (clockwise){ diff --git a/keyboards/cheshire/curiosity/keymaps/default/keymap.c b/keyboards/cheshire/curiosity/keymaps/default/keymap.c index 18d371c58a..85bb51b7fd 100644 --- a/keyboards/cheshire/curiosity/keymaps/default/keymap.c +++ b/keyboards/cheshire/curiosity/keymaps/default/keymap.c @@ -37,8 +37,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FNMS] = LAYOUT_default( UG_TOGG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, - UG_NEXT, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, _______, QK_BOOT, - _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN2, _______, _______, + UG_NEXT, _______, _______, _______, _______, _______, _______, _______, _______, MS_UP, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, MS_BTN1, MS_LEFT, MS_DOWN, MS_RGHT, MS_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, UG_SATU, UG_HUEU, UG_VALU, UG_SATD, UG_HUED, UG_VALD, _______, _______, AG_TOGG, _______, _______, _______, _______, _______, _______ ), diff --git a/keyboards/ckeys/handwire_101/keymaps/default/keymap.c b/keyboards/ckeys/handwire_101/keymaps/default/keymap.c index 0b26d61322..74f7cf6f2c 100755 --- a/keyboards/ckeys/handwire_101/keymaps/default/keymap.c +++ b/keyboards/ckeys/handwire_101/keymaps/default/keymap.c @@ -117,10 +117,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-------------------------------------------------' */ [_MOUSE] = LAYOUT_ortho_4x4( - KC_BTN5, _______, KC_WH_U, _______, - _______, KC_BTN1, KC_MS_U, KC_BTN2, - KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, - KC_BTN3, KC_WH_L, KC_WH_D, KC_WH_R + MS_BTN5, _______, MS_WHLU, _______, + _______, MS_BTN1, MS_UP, MS_BTN2, + MS_BTN4, MS_LEFT, MS_DOWN, MS_RGHT, + MS_BTN3, MS_WHLL, MS_WHLD, MS_WHLR ), /* TERMINAL * ,---------------------------------------. diff --git a/keyboards/ckeys/thedora/keymaps/default/keymap.c b/keyboards/ckeys/thedora/keymaps/default/keymap.c index 9c0d756562..dd856ea23e 100755 --- a/keyboards/ckeys/thedora/keymaps/default/keymap.c +++ b/keyboards/ckeys/thedora/keymaps/default/keymap.c @@ -123,10 +123,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ [_MOUSE] = LAYOUT( - KC_BTN5, _______, KC_WH_U, _______, _______, - _______, KC_BTN1, KC_MS_U, KC_BTN2, TG(_MOUSE), - KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, _______, - _______, KC_BTN3, KC_WH_L, KC_WH_D, KC_WH_R, _______ + MS_BTN5, _______, MS_WHLU, _______, _______, + _______, MS_BTN1, MS_UP, MS_BTN2, TG(_MOUSE), + MS_BTN4, MS_LEFT, MS_DOWN, MS_RGHT, _______, + _______, MS_BTN3, MS_WHLL, MS_WHLD, MS_WHLR, _______ ), // ADMIN LAYER diff --git a/keyboards/clueboard/2x1800/2019/2019.c b/keyboards/clueboard/2x1800/2019/2019.c index b7fb799ecb..c192f64175 100644 --- a/keyboards/clueboard/2x1800/2019/2019.c +++ b/keyboards/clueboard/2x1800/2019/2019.c @@ -41,12 +41,12 @@ void check_encoder_buttons(void) { dprintf("Turning drawing mode off.\n"); drawing_mode = false; gpio_write_pin_low(D6); - unregister_code(KC_BTN1); + unregister_code(MS_BTN1); } else { dprintf("Turning drawing mode on.\n"); drawing_mode = true; gpio_write_pin_high(D6); - register_code(KC_BTN1); + register_code(MS_BTN1); } } } @@ -88,37 +88,37 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { if (keycode == ENC_BTN1) { if (record->event.pressed) { btn1_pressed = true; - register_code(KC_BTN1); + register_code(MS_BTN1); } else { btn1_pressed = false; - unregister_code(KC_BTN1); + unregister_code(MS_BTN1); } } if (keycode == ENC_BTN2) { if (record->event.pressed) { btn2_pressed = true; - register_code(KC_BTN2); + register_code(MS_BTN2); } else { btn2_pressed = false; - unregister_code(KC_BTN2); + unregister_code(MS_BTN2); } } if (keycode == ENC_BTN3) { if (record->event.pressed) { btn3_pressed = true; - register_code(KC_BTN3); + register_code(MS_BTN3); } else { btn3_pressed = false; - unregister_code(KC_BTN3); + unregister_code(MS_BTN3); } } if (keycode == ENC_BTN4) { if (record->event.pressed) { btn4_pressed = true; - register_code(KC_BTN4); + register_code(MS_BTN4); } else { btn4_pressed = false; - unregister_code(KC_BTN4); + unregister_code(MS_BTN4); } } @@ -132,16 +132,16 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { if (encoder_update_user(index, clockwise)) { // Encoder 1, outside left if (index == 0 && clockwise) { - tap_code(KC_MS_U); // turned right + tap_code(MS_UP); // turned right } else if (index == 0) { - tap_code(KC_MS_D); // turned left + tap_code(MS_DOWN); // turned left } // Encoder 2, inside left else if (index == 1 && clockwise) { - tap_code(KC_WH_D); // turned right + tap_code(MS_WHLD); // turned right } else if (index == 1) { - tap_code(KC_WH_U); // turned left + tap_code(MS_WHLU); // turned left } // Encoder 3, inside right @@ -153,9 +153,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { // Encoder 4, outside right else if (index == 3 && clockwise) { - tap_code(KC_MS_R); // turned right + tap_code(MS_RGHT); // turned right } else if (index == 3) { - tap_code(KC_MS_L); // turned left + tap_code(MS_LEFT); // turned left } } return true; diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/keymap.c index b2456225f1..b14b6f1878 100644 --- a/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/keymap.c +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_ansi/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_1u_ansi( - KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + MS_BTN1, MS_BTN2, MS_BTN3, MS_BTN4, KC_HOME, KC_END, KC_PGUP, KC_PGDN, 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_INS, KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_P7, KC_P8, KC_P9, 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_P7, KC_P8, KC_P9, KC_PSLS, diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/keymap.c index 70e38efcba..37dabfb7e3 100644 --- a/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/keymap.c +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_1u_iso/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_1u_iso( - KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + MS_BTN1, MS_BTN2, MS_BTN3, MS_BTN4, KC_HOME, KC_END, KC_PGUP, KC_PGDN, 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_INS, KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_P7, KC_P8, KC_P9, 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_P7, KC_P8, KC_P9, KC_PSLS, diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/keymap.c index cb41bf9a7d..d7ebfb029b 100644 --- a/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/keymap.c +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_ansi/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_2u_ansi( - KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + MS_BTN1, MS_BTN2, MS_BTN3, MS_BTN4, KC_HOME, KC_END, KC_PGUP, KC_PGDN, 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_INS, KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_P7, KC_P8, KC_P9, 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_P7, KC_P8, KC_P9, KC_PSLS, diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/keymap.c index af3e7f96c7..e1f0c97c94 100644 --- a/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/keymap.c +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_2u_iso/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_2u_iso( - KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + MS_BTN1, MS_BTN2, MS_BTN3, MS_BTN4, KC_HOME, KC_END, KC_PGUP, KC_PGDN, 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_INS, KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_P7, KC_P8, KC_P9, 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_P7, KC_P8, KC_P9, KC_PSLS, diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/keymap.c index fd7723d3de..79a32c74bb 100644 --- a/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/keymap.c +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_4u_iso( - KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + MS_BTN1, MS_BTN2, MS_BTN3, MS_BTN4, KC_HOME, KC_END, KC_PGUP, KC_PGDN, 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_INS, KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_P7, KC_P8, KC_P9, 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_P7, KC_P8, KC_P9, KC_PSLS, diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/keymap.c index 761423bfc4..9d056dac26 100644 --- a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/keymap.c +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_7u_ansi( - KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + MS_BTN1, MS_BTN2, MS_BTN3, MS_BTN4, KC_HOME, KC_END, KC_PGUP, KC_PGDN, 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_DEL, KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_P7, KC_P8, KC_P9, 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_P7, KC_P8, KC_P9, KC_PSLS, diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/keymap.c b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/keymap.c index b499999954..738c4792a5 100644 --- a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/keymap.c +++ b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_7u_iso( - KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, + MS_BTN1, MS_BTN2, MS_BTN3, MS_BTN4, KC_HOME, KC_END, KC_PGUP, KC_PGDN, 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_DEL, KC_PMNS, KC_NUM, KC_PSLS, KC_PAST, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_P7, KC_P8, KC_P9, 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_P7, KC_P8, KC_P9, KC_PSLS, diff --git a/keyboards/clueboard/2x1800/2021/2021.c b/keyboards/clueboard/2x1800/2021/2021.c index 511c40a699..bd072c14b2 100644 --- a/keyboards/clueboard/2x1800/2021/2021.c +++ b/keyboards/clueboard/2x1800/2021/2021.c @@ -134,16 +134,16 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { #else // Encoder 1, left if (index == 0 && clockwise) { - tap_code(KC_MS_R); // turned right + tap_code(MS_RGHT); // turned right } else if (index == 0) { - tap_code(KC_MS_L); // turned left + tap_code(MS_LEFT); // turned left } // Encoder 2, right else if (index == 1 && clockwise) { - tap_code(KC_MS_U); // turned right + tap_code(MS_UP); // turned right } else if (index == 1) { - tap_code(KC_MS_D); // turned left + tap_code(MS_DOWN); // turned left } #endif } diff --git a/keyboards/coban/pad9a/keymaps/default/keymap.c b/keyboards/coban/pad9a/keymaps/default/keymap.c index 9ef5fc54d7..2638b2c2e7 100644 --- a/keyboards/coban/pad9a/keymaps/default/keymap.c +++ b/keyboards/coban/pad9a/keymaps/default/keymap.c @@ -26,6 +26,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_U, KC_WH_D) }, + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(MS_WHLU, MS_WHLD) }, }; #endif diff --git a/keyboards/cornia/keymaps/fire/keymap.c b/keyboards/cornia/keymaps/fire/keymap.c index 9215c61f9c..ff63df801a 100644 --- a/keyboards/cornia/keymaps/fire/keymap.c +++ b/keyboards/cornia/keymaps/fire/keymap.c @@ -41,11 +41,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAV] = LAYOUT_split_3x6_3( //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - _______, G(KC_L), XXXXXXX, CK_SCRL, C(KC_A), XXXXXXX, KC_BTN1, KC_BTN2, KC_BTN3, XXXXXXX, XXXXXXX, KC_DEL, + _______, G(KC_L), XXXXXXX, CK_SCRL, C(KC_A), XXXXXXX, MS_BTN1, MS_BTN2, MS_BTN3, XXXXXXX, XXXXXXX, KC_DEL, //|--------+--------+ GUI V +--------+--------+--------| |--------+--------+--------+--------+--------+--------| - _______, C(KC_X), G(KC_V), C(KC_V), C(KC_C), C(KC_Z), KC_WH_U, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, _______, + _______, C(KC_X), G(KC_V), C(KC_V), C(KC_C), C(KC_Z), MS_WHLU, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, _______, //|ALT LEFT+--------+ ALT SFT+scrnshot+--------+--------| |--------+--------+--------+--------+--------+--------| - A(KC_LEFT),C(KC_S),S(KC_LALT), CK_SSHT,C(KC_F), C(KC_Y), KC_WH_D, KC_HOME, CK_SELL, CK_SELR, KC_END, _______, + A(KC_LEFT),C(KC_S),S(KC_LALT), CK_SSHT,C(KC_F), C(KC_Y), MS_WHLD, KC_HOME, CK_SELL, CK_SELR, KC_END, _______, //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| KC_LGUI, _______, _______, _______,MO(_ADJUST),_______ //`--------------------------' `--------------------------' diff --git a/keyboards/cradio/keymaps/default/keymap.c b/keyboards/cradio/keymaps/default/keymap.c index e6cbe763ba..3d624cd009 100644 --- a/keyboards/cradio/keymaps/default/keymap.c +++ b/keyboards/cradio/keymaps/default/keymap.c @@ -30,9 +30,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, KC_DEL, MO(3) ), [3] = LAYOUT_split_3x5_2( - _______, KC_F1, KC_F2, KC_F3, KC_F10, _______, KC_WH_U, KC_WH_D, _______, QK_BOOT, - _______, KC_F4, KC_F5, KC_F6, KC_F11, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_INS, - _______, KC_F7, KC_F8, KC_F9, KC_F12, _______, KC_BTN1, KC_BTN2, _______, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F10, _______, MS_WHLU, MS_WHLD, _______, QK_BOOT, + _______, KC_F4, KC_F5, KC_F6, KC_F11, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_INS, + _______, KC_F7, KC_F8, KC_F9, KC_F12, _______, MS_BTN1, MS_BTN2, _______, _______, _______, _______, _______, _______ ) }; diff --git a/keyboards/craftwalk/keymaps/default/keymap.c b/keyboards/craftwalk/keymaps/default/keymap.c index b212425bcf..019e99faf9 100644 --- a/keyboards/craftwalk/keymaps/default/keymap.c +++ b/keyboards/craftwalk/keymaps/default/keymap.c @@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT( KC_Q, KC_W, KC_E, KC_LCTL, KC_A, KC_S, KC_D, - KC_LSFT, MO_ADJ, KC_WH_U, KC_WH_D, KC_F, MO_NUM, KC_SPC + KC_LSFT, MO_ADJ, MS_WHLU, MS_WHLD, KC_F, MO_NUM, KC_SPC ), /* Number */ [_NUM] = LAYOUT( diff --git a/keyboards/custommk/elysian/keymaps/default/keymap.c b/keyboards/custommk/elysian/keymaps/default/keymap.c index fcb617ad9e..f7cb4924c9 100644 --- a/keyboards/custommk/elysian/keymaps/default/keymap.c +++ b/keyboards/custommk/elysian/keymaps/default/keymap.c @@ -14,6 +14,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_D, KC_WH_U) } + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(MS_WHLD, MS_WHLU) } }; #endif \ No newline at end of file diff --git a/keyboards/custommk/evo70/evo70.c b/keyboards/custommk/evo70/evo70.c index a8df4a7d1d..c20c25d3f0 100644 --- a/keyboards/custommk/evo70/evo70.c +++ b/keyboards/custommk/evo70/evo70.c @@ -93,8 +93,8 @@ uint16_t enc_ccw[] = { KC_VOLD, KC_VOLD, KC_MEDIA_PREV_TRACK, KC_VOLD, 0, 0, 0, "Scroll Wheel" }; -uint16_t enc_cw[] = { KC_VOLU, KC_VOLU, KC_MEDIA_NEXT_TRACK, KC_VOLU, 0, 0, 0, 0, 0, KC_WH_U }; -uint16_t enc_ccw[] = { KC_VOLD, KC_VOLD, KC_MEDIA_PREV_TRACK, KC_VOLD, 0, 0, 0, 0, 0, KC_WH_D }; +uint16_t enc_cw[] = { KC_VOLU, KC_VOLU, KC_MEDIA_NEXT_TRACK, KC_VOLU, 0, 0, 0, 0, 0, MS_WHLU }; +uint16_t enc_ccw[] = { KC_VOLD, KC_VOLD, KC_MEDIA_PREV_TRACK, KC_VOLD, 0, 0, 0, 0, 0, MS_WHLD }; #endif //bongocat uint8_t num_enc_modes = 10; diff --git a/keyboards/doio/kb38/kb38.c b/keyboards/doio/kb38/kb38.c index 55a88a068b..2eaf62fa73 100644 --- a/keyboards/doio/kb38/kb38.c +++ b/keyboards/doio/kb38/kb38.c @@ -52,9 +52,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } else if (index == 1) { // Mouse Wheel Up/Down if (clockwise) { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } else { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } } else if (index == 2) { // Volume Up/Down diff --git a/keyboards/doio/kb3x/keymaps/default/keymap.c b/keyboards/doio/kb3x/keymaps/default/keymap.c index 02dddfe517..7791a19f95 100644 --- a/keyboards/doio/kb3x/keymaps/default/keymap.c +++ b/keyboards/doio/kb3x/keymaps/default/keymap.c @@ -32,9 +32,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_MPLY, KC_DOWN, KC_DOWN), [_LAY1] = LAYOUT( TO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_WH_U, S(KC_RBRC), C(KC_L), - C(KC_WH_D), KC_TRNS, C(KC_WH_U), KC_DOT, KC_TRNS, KC_COMM, C(KC_B), KC_TRNS, C(KC_U), - KC_WH_D, S(KC_LBRC), C(KC_M)), + MS_WHLU, S(KC_RBRC), C(KC_L), + C(MS_WHLD), KC_TRNS, C(MS_WHLU), KC_DOT, KC_TRNS, KC_COMM, C(KC_B), KC_TRNS, C(KC_U), + MS_WHLD, S(KC_LBRC), C(KC_M)), [_LAY2] = LAYOUT( TO(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_B, KC_UP, S(KC_I), diff --git a/keyboards/draculad/keymaps/default/keymap.c b/keyboards/draculad/keymaps/default/keymap.c index a7b5261904..16df3ebac3 100644 --- a/keyboards/draculad/keymaps/default/keymap.c +++ b/keyboards/draculad/keymaps/default/keymap.c @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_MUS] = LAYOUT( KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LALT, MS_BTN3, MS_BTN2, MS_BTN1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX @@ -218,9 +218,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { else if (index == 3 ) { // Page up/Page down if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } return true; diff --git a/keyboards/ducky/one2mini/keymaps/ansi/keymap.c b/keyboards/ducky/one2mini/keymaps/ansi/keymap.c index 2b42eb6e95..a80da0b114 100644 --- a/keyboards/ducky/one2mini/keymaps/ansi/keymap.c +++ b/keyboards/ducky/one2mini/keymaps/ansi/keymap.c @@ -39,8 +39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FUNCTION] = LAYOUT_60_ansi( // 2 3 4 5 6 7 8 9 10 11 12 13 14 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_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_ENT, + _______, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______, + _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_ENT, _______, _______, KC_APP, _______, _______, _______, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, KC_APP, MO(_CLR), _______, _______, KC_APP, _______, _______ ), diff --git a/keyboards/ducky/one2mini/keymaps/ansi_tsangan/keymap.c b/keyboards/ducky/one2mini/keymaps/ansi_tsangan/keymap.c index 259df16ab1..e28b4b7df0 100644 --- a/keyboards/ducky/one2mini/keymaps/ansi_tsangan/keymap.c +++ b/keyboards/ducky/one2mini/keymaps/ansi_tsangan/keymap.c @@ -53,8 +53,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FUNCTION] = LAYOUT_60_ansi_tsangan( // 2 3 4 5 6 7 8 9 10 11 12 13 14 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_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_ENT, + _______, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______, + _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_ENT, _______, _______, KC_APP, _______, _______, _______, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, KC_APP, MO(_CLR), _______, KC_APP, _______, _______ ), diff --git a/keyboards/ducky/one2mini/keymaps/default/keymap.c b/keyboards/ducky/one2mini/keymaps/default/keymap.c index d8941bacdc..69fcc295ad 100644 --- a/keyboards/ducky/one2mini/keymaps/default/keymap.c +++ b/keyboards/ducky/one2mini/keymaps/default/keymap.c @@ -39,8 +39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FUNCTION] = LAYOUT_all( // 2 3 4 5 6 7 8 9 10 11 12 13 14 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_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, KC_ENT, + _______, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______, + _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, KC_ENT, _______, _______, _______, KC_APP, _______, _______, _______, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, MO(_CLR), KC_MPLY, _______, KC_APP, _______, _______ ), diff --git a/keyboards/ducky/one2mini/keymaps/iso/keymap.c b/keyboards/ducky/one2mini/keymaps/iso/keymap.c index 585655d554..4f45273b8b 100644 --- a/keyboards/ducky/one2mini/keymaps/iso/keymap.c +++ b/keyboards/ducky/one2mini/keymaps/iso/keymap.c @@ -39,8 +39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FUNCTION] = LAYOUT_60_iso( // 2 3 4 5 6 7 8 9 10 11 12 13 14 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_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, KC_ENT, + _______, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, + _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, KC_ENT, _______, _______, _______, KC_APP, _______, _______, _______, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, KC_APP, MO(_CLR), _______, _______, KC_APP, _______, _______ ), diff --git a/keyboards/ducky/one2sf/keymaps/default/keymap.c b/keyboards/ducky/one2sf/keymaps/default/keymap.c index bfa354f508..91a644d972 100644 --- a/keyboards/ducky/one2sf/keymaps/default/keymap.c +++ b/keyboards/ducky/one2sf/keymaps/default/keymap.c @@ -38,8 +38,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FUNCTION] = LAYOUT_all( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, - _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUSE, KC_PGUP, KC_HOME, KC_PSCR, _______, KC_HOME, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_END, _______, _______, KC_END, + _______, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, _______, KC_INS, _______, KC_UP, KC_PAUSE, KC_PGUP, KC_HOME, KC_PSCR, _______, KC_HOME, + _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_END, _______, _______, KC_END, _______, _______, RM_TOGG, RM_NEXT, RM_HUEU, RM_HUED, RM_SATU, RM_SATD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______, _______ ), diff --git a/keyboards/ducky/one2sf/keymaps/default_ansi/keymap.c b/keyboards/ducky/one2sf/keymaps/default_ansi/keymap.c index fd65bd543a..d353f005ed 100644 --- a/keyboards/ducky/one2sf/keymaps/default_ansi/keymap.c +++ b/keyboards/ducky/one2sf/keymaps/default_ansi/keymap.c @@ -38,8 +38,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FUNCTION] = LAYOUT_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_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______, KC_HOME, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, KC_END, + _______, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______, KC_HOME, + _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, KC_END, _______, RM_TOGG, RM_NEXT, RM_HUEU, RM_HUED, RM_SATU, RM_SATD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______, _______ ), diff --git a/keyboards/ducky/one2sf/keymaps/default_iso/keymap.c b/keyboards/ducky/one2sf/keymaps/default_iso/keymap.c index 94963fcab5..3ec27fa54f 100644 --- a/keyboards/ducky/one2sf/keymaps/default_iso/keymap.c +++ b/keyboards/ducky/one2sf/keymaps/default_iso/keymap.c @@ -38,8 +38,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FUNCTION] = LAYOUT_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_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, KC_HOME, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, _______, KC_END, + _______, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, KC_HOME, + _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, _______, KC_END, _______, _______, RM_TOGG, RM_NEXT, RM_HUEU, RM_HUED, RM_SATU, RM_SATD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______, _______ ), diff --git a/keyboards/dumbpad/v0x/keymaps/default/keymap.c b/keyboards/dumbpad/v0x/keymaps/default/keymap.c index 9787c24f0f..13c8777274 100644 --- a/keyboards/dumbpad/v0x/keymaps/default/keymap.c +++ b/keyboards/dumbpad/v0x/keymaps/default/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_7, KC_8, KC_9, KC_BSPC, KC_4, KC_5, KC_6, KC_ESC, KC_1, KC_2, KC_3, KC_TAB, - KC_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER + MS_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER ), /* SUB LAYER @@ -87,9 +87,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { case 0: // main layer - move mouse right (CW) and left (CCW) if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; diff --git a/keyboards/dumbpad/v0x/v0x.c b/keyboards/dumbpad/v0x/v0x.c index 5a61096606..ba68a75eaa 100644 --- a/keyboards/dumbpad/v0x/v0x.c +++ b/keyboards/dumbpad/v0x/v0x.c @@ -69,9 +69,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { switch (get_highest_layer(layer_state)) { case 0: if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; diff --git a/keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c b/keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c index 28b71cd8e7..c7f7d6fcee 100644 --- a/keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c +++ b/keyboards/dumbpad/v0x_dualencoder/keymaps/default/keymap.c @@ -95,9 +95,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { case 0: // main layer - move mouse right (CW) and left (CCW) if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; diff --git a/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c index 1c622f7bf4..26ebb70acd 100644 --- a/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c +++ b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c @@ -69,9 +69,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { switch (get_highest_layer(layer_state)) { case 0: if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; diff --git a/keyboards/dumbpad/v0x_right/keymaps/default/keymap.c b/keyboards/dumbpad/v0x_right/keymaps/default/keymap.c index a0f4e3a669..cb916b7edc 100644 --- a/keyboards/dumbpad/v0x_right/keymaps/default/keymap.c +++ b/keyboards/dumbpad/v0x_right/keymaps/default/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_7, KC_8, KC_9, KC_BSPC, KC_4, KC_5, KC_6, KC_ESC, KC_1, KC_2, KC_3, KC_TAB, - TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER, KC_BTN1 + TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER, MS_BTN1 ), /* SUB LAYER @@ -87,9 +87,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { case 0: // main layer - move mouse right (CW) and left (CCW) if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; diff --git a/keyboards/dumbpad/v0x_right/v0x_right.c b/keyboards/dumbpad/v0x_right/v0x_right.c index 5a61096606..ba68a75eaa 100644 --- a/keyboards/dumbpad/v0x_right/v0x_right.c +++ b/keyboards/dumbpad/v0x_right/v0x_right.c @@ -69,9 +69,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { switch (get_highest_layer(layer_state)) { case 0: if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; diff --git a/keyboards/dumbpad/v1x/keymaps/default/keymap.c b/keyboards/dumbpad/v1x/keymaps/default/keymap.c index 9787c24f0f..13c8777274 100644 --- a/keyboards/dumbpad/v1x/keymaps/default/keymap.c +++ b/keyboards/dumbpad/v1x/keymaps/default/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_7, KC_8, KC_9, KC_BSPC, KC_4, KC_5, KC_6, KC_ESC, KC_1, KC_2, KC_3, KC_TAB, - KC_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER + MS_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER ), /* SUB LAYER @@ -87,9 +87,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { case 0: // main layer - move mouse right (CW) and left (CCW) if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; diff --git a/keyboards/dumbpad/v1x/v1x.c b/keyboards/dumbpad/v1x/v1x.c index 3fec6cb7e6..650f9230cf 100644 --- a/keyboards/dumbpad/v1x/v1x.c +++ b/keyboards/dumbpad/v1x/v1x.c @@ -81,9 +81,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { switch (get_highest_layer(layer_state)) { case 0: if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; diff --git a/keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c b/keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c index 805815253a..d144278f8b 100644 --- a/keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c +++ b/keyboards/dumbpad/v1x_dualencoder/keymaps/default/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_7, KC_8, KC_9, KC_BSPC, KC_4, KC_5, KC_6, KC_ESC, KC_1, KC_2, KC_3, KC_TAB, - KC_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER + MS_BTN1, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER ), /* SUB LAYER @@ -95,9 +95,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { case 0: // main layer - move mouse right (CW) and left (CCW) if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; diff --git a/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c index 31137ce775..f4aef72f46 100644 --- a/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c +++ b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c @@ -81,9 +81,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { switch (get_highest_layer(layer_state)) { case 0: if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; diff --git a/keyboards/dumbpad/v1x_right/keymaps/default/keymap.c b/keyboards/dumbpad/v1x_right/keymaps/default/keymap.c index a0f4e3a669..cb916b7edc 100644 --- a/keyboards/dumbpad/v1x_right/keymaps/default/keymap.c +++ b/keyboards/dumbpad/v1x_right/keymaps/default/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_7, KC_8, KC_9, KC_BSPC, KC_4, KC_5, KC_6, KC_ESC, KC_1, KC_2, KC_3, KC_TAB, - TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER, KC_BTN1 + TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER, MS_BTN1 ), /* SUB LAYER @@ -87,9 +87,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { case 0: // main layer - move mouse right (CW) and left (CCW) if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; diff --git a/keyboards/dumbpad/v1x_right/v1x_right.c b/keyboards/dumbpad/v1x_right/v1x_right.c index 3fec6cb7e6..650f9230cf 100644 --- a/keyboards/dumbpad/v1x_right/v1x_right.c +++ b/keyboards/dumbpad/v1x_right/v1x_right.c @@ -81,9 +81,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { switch (get_highest_layer(layer_state)) { case 0: if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; diff --git a/keyboards/dz60/keymaps/iso_split-spacebar/keymap.c b/keyboards/dz60/keymaps/iso_split-spacebar/keymap.c index 1479d14398..4d1815eea8 100644 --- a/keyboards/dz60/keymaps/iso_split-spacebar/keymap.c +++ b/keyboards/dz60/keymaps/iso_split-spacebar/keymap.c @@ -93,8 +93,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 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_PSCR, _______, _______, - _______, KC_MS_LEFT,KC_MS_DOWN,KC_MS_UP, KC_MS_RIGHT,_______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______, - _______, _______, _______, _______, _______, KC_MS_BTN1,KC_MS_BTN2,_______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, + _______, MS_LEFT,MS_DOWN,MS_UP, MS_RGHT,_______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______, + _______, _______, _______, _______, _______, MS_BTN1,MS_BTN2,_______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), /* Keymap NL: Numpad Layer diff --git a/keyboards/ergodox_ez/glow/keymaps/default/keymap.c b/keyboards/ergodox_ez/glow/keymaps/default/keymap.c index b3f394bee8..edcb75dc1c 100644 --- a/keyboards/ergodox_ez/glow/keymaps/default/keymap.c +++ b/keyboards/ergodox_ez/glow/keymaps/default/keymap.c @@ -101,10 +101,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MDIA] = LAYOUT_ergodox_pretty( // left hand KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN1, MS_BTN2, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/ergodox_ez/keymaps/default/keymap.c b/keyboards/ergodox_ez/keymaps/default/keymap.c index 5197f140f0..2ec7a02920 100644 --- a/keyboards/ergodox_ez/keymaps/default/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default/keymap.c @@ -101,10 +101,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MDIA] = LAYOUT_ergodox_pretty( // left hand KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN1, MS_BTN2, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/ergodox_ez/keymaps/default_osx/keymap.c b/keyboards/ergodox_ez/keymaps/default_osx/keymap.c index 97c8bea54c..3008726acd 100644 --- a/keyboards/ergodox_ez/keymaps/default_osx/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default_osx/keymap.c @@ -119,10 +119,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // MEDIA AND MOUSE [MDIA] = LAYOUT_ergodox( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN1, MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c index 47be8ebb40..6072fbb5f0 100644 --- a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c +++ b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c @@ -132,10 +132,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // MEDIA AND MOUSE [MDIA] = LAYOUT_ergodox( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN1, MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/ergodox_ez/keymaps/testing/keymap.c b/keyboards/ergodox_ez/keymaps/testing/keymap.c index 70a4af45a4..3f724fc2df 100644 --- a/keyboards/ergodox_ez/keymaps/testing/keymap.c +++ b/keyboards/ergodox_ez/keymaps/testing/keymap.c @@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT_ergodox(KC_TRANSPARENT,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,LCTL(KC_W),KC_LBRC,KC_RBRC,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,LCTL(KC_PGUP),LCTL(KC_PGDN),UG_NEXT,KC_TRANSPARENT,KC_TRANSPARENT,UG_VALD,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_F12,KC_AMPR,KC_UNDS,KC_MINUS,KC_SCLN,KC_PLUS,KC_TRANSPARENT,KC_TRANSPARENT,KC_PIPE,KC_AT,KC_EQUAL,KC_PERC,KC_BSLS,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,UG_TOGG,RGB_SLD,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,UG_HUEU), - [2] = LAYOUT_ergodox(KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_BTN1,KC_MS_BTN2,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PLAY_PAUSE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PREV_TRACK,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT,KC_TRANSPARENT,KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_WWW_BACK), + [2] = LAYOUT_ergodox(KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,MS_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,MS_LEFT,MS_DOWN,MS_RGHT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,MS_BTN1,MS_BTN2,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PLAY_PAUSE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PREV_TRACK,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT,KC_TRANSPARENT,KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_WWW_BACK), }; diff --git a/keyboards/ergoslab/keymaps/default/keymap.c b/keyboards/ergoslab/keymaps/default/keymap.c index 01ea4ba36c..019a6fc17c 100644 --- a/keyboards/ergoslab/keymaps/default/keymap.c +++ b/keyboards/ergoslab/keymaps/default/keymap.c @@ -41,10 +41,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [MOUS] = LAYOUT( - _______, _______, KC_MS_U, _______, _______, _______, _______, KC_WH_U, _______, _______, - _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_BTN3, KC_WH_D, _______, _______, + _______, _______, MS_UP, _______, _______, _______, _______, MS_WHLU, _______, _______, + _______, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, MS_BTN3, MS_WHLD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, KC_ACL0, _______, KC_BTN2, KC_BTN1, _______, _______, _______, _______, + _______, _______, _______, _______, MS_ACL0, _______, MS_BTN2, MS_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; diff --git a/keyboards/etiennecollin/wave/keymaps/default/keymap.c b/keyboards/etiennecollin/wave/keymaps/default/keymap.c index 24bc85d5b4..8de48fb016 100644 --- a/keyboards/etiennecollin/wave/keymaps/default/keymap.c +++ b/keyboards/etiennecollin/wave/keymaps/default/keymap.c @@ -115,10 +115,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| // | | | ___ | | left | right | mid | // --------+-------+-------- --------+-------+-------- - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, - KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, - XXXXXXX, XXXXXXX, _______, KC_BTN1, KC_BTN2, KC_BTN3 + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MS_ACL0, MS_ACL1, MS_ACL2, XXXXXXX, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MS_WHLL, MS_WHLD, MS_WHLU, MS_WHLR, + XXXXXXX, XXXXXXX, _______, MS_BTN1, MS_BTN2, MS_BTN3 ), [SYM] = LAYOUT_split_3x5_3( // ----------------------------------------- ----------------------------------------- diff --git a/keyboards/evyd13/ta65/keymaps/default/keymap.c b/keyboards/evyd13/ta65/keymaps/default/keymap.c index 697215510b..bde9290afb 100644 --- a/keyboards/evyd13/ta65/keymaps/default/keymap.c +++ b/keyboards/evyd13/ta65/keymaps/default/keymap.c @@ -22,9 +22,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { switch(get_highest_layer(layer_state)){ case 1: //Layer 1 if (!clockwise) { // Remove ! to reverse direction - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } break; default: //Layer 0 diff --git a/keyboards/ferris/keymaps/default/keymap.json b/keyboards/ferris/keymaps/default/keymap.json index 3f927ae5b1..0d081e4d8f 100644 --- a/keyboards/ferris/keymaps/default/keymap.json +++ b/keyboards/ferris/keymaps/default/keymap.json @@ -18,13 +18,13 @@ "LT(7,KC_SPC)", "KC_P1" ], ["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", - "KC_TRNS" , "KC_BTN1" , "KC_WH_U" , "KC_BTN2" , "KC_TRNS", + "KC_TRNS" , "MS_BTN1" , "MS_WHLU" , "MS_BTN2" , "KC_TRNS", - "KC_TRNS" , "KC_BTN2" , "KC_NO" , "KC_BTN1" , "KC_TRNS", - "KC_TRNS" , "KC_MS_L" , "KC_MS_D" , "KC_MS_U" , "KC_MS_R", + "KC_TRNS" , "MS_BTN2" , "KC_NO" , "MS_BTN1" , "KC_TRNS", + "KC_TRNS" , "MS_LEFT" , "MS_DOWN" , "MS_UP" , "MS_RGHT", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", - "KC_TRNS" , "KC_WH_L" , "KC_WH_D" , "KC_WH_R" , "KC_TRNS", + "KC_TRNS" , "MS_WHLL" , "MS_WHLD" , "MS_WHLR" , "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS" , "KC_TRNS" diff --git a/keyboards/frobiac/blackbowl/keymaps/default/keymap.c b/keyboards/frobiac/blackbowl/keymaps/default/keymap.c index d85215ea04..c895ceb53c 100644 --- a/keyboards/frobiac/blackbowl/keymaps/default/keymap.c +++ b/keyboards/frobiac/blackbowl/keymaps/default/keymap.c @@ -74,9 +74,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_MOUSE] = LAYOUT( - KC_WH_L, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, KC_ACL0, XXXXXXX, KC_BTN3, XXXXXXX, KC_BTN5, - KC_WH_R, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, KC_ACL1, XXXXXXX, KC_BTN1, KC_BTN2, KC_BTN4, - MOUSE_X, KC_BTN1, KC_BTN3, KC_BTN2, KC_WH_D, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + MS_WHLL, XXXXXXX, MS_UP, XXXXXXX, XXXXXXX, MS_ACL0, XXXXXXX, MS_BTN3, XXXXXXX, MS_BTN5, + MS_WHLR, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLU, MS_ACL1, XXXXXXX, MS_BTN1, MS_BTN2, MS_BTN4, + MOUSE_X, MS_BTN1, MS_BTN3, MS_BTN2, MS_WHLD, MS_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______ ), diff --git a/keyboards/frobiac/blackflat/keymaps/default/keymap.c b/keyboards/frobiac/blackflat/keymaps/default/keymap.c index 8cf73b9316..f5591d6934 100644 --- a/keyboards/frobiac/blackflat/keymaps/default/keymap.c +++ b/keyboards/frobiac/blackflat/keymaps/default/keymap.c @@ -74,9 +74,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_MOUSE] = LAYOUT( - KC_WH_L, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, KC_ACL0, XXXXXXX, KC_BTN3, XXXXXXX, KC_BTN5, - KC_WH_R, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, KC_ACL1, XXXXXXX, KC_BTN1, KC_BTN2, KC_BTN4, - MOUSE_X, KC_BTN1, KC_BTN3, KC_BTN2, KC_WH_D, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + MS_WHLL, XXXXXXX, MS_UP, XXXXXXX, XXXXXXX, MS_ACL0, XXXXXXX, MS_BTN3, XXXXXXX, MS_BTN5, + MS_WHLR, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLU, MS_ACL1, XXXXXXX, MS_BTN1, MS_BTN2, MS_BTN4, + MOUSE_X, MS_BTN1, MS_BTN3, MS_BTN2, MS_WHLD, MS_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______ ), diff --git a/keyboards/frobiac/hypernano/keymaps/default/keymap.c b/keyboards/frobiac/hypernano/keymaps/default/keymap.c index 5e5277805f..5af1391461 100644 --- a/keyboards/frobiac/hypernano/keymaps/default/keymap.c +++ b/keyboards/frobiac/hypernano/keymaps/default/keymap.c @@ -74,9 +74,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_MOUSE] = LAYOUT( - KC_WH_L, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, KC_ACL0, XXXXXXX, KC_BTN3, XXXXXXX, KC_BTN5, - KC_WH_R, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, KC_ACL1, XXXXXXX, KC_BTN1, KC_BTN2, KC_BTN4, - MOUSE_X, KC_BTN1, KC_BTN3, KC_BTN2, KC_WH_D, XXXXXXX, XXXXXXX, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + MS_WHLL, XXXXXXX, MS_UP, XXXXXXX, XXXXXXX, MS_ACL0, XXXXXXX, MS_BTN3, XXXXXXX, MS_BTN5, + MS_WHLR, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLU, MS_ACL1, XXXXXXX, MS_BTN1, MS_BTN2, MS_BTN4, + MOUSE_X, MS_BTN1, MS_BTN3, MS_BTN2, MS_WHLD, XXXXXXX, XXXXXXX, MS_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______ ), diff --git a/keyboards/frobiac/redtilt/keymaps/default/keymap.c b/keyboards/frobiac/redtilt/keymaps/default/keymap.c index d6df7a9db3..71c7dd49c8 100644 --- a/keyboards/frobiac/redtilt/keymaps/default/keymap.c +++ b/keyboards/frobiac/redtilt/keymaps/default/keymap.c @@ -76,9 +76,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_MOUSE] = LAYOUT( - XXXXXXX, KC_WH_L, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, KC_ACL0, XXXXXXX, KC_BTN3, XXXXXXX, KC_BTN5, XXXXXXX, - XXXXXXX, KC_WH_R, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, KC_ACL1, XXXXXXX, KC_BTN1, KC_BTN2, KC_BTN4, XXXXXXX, - XXXXXXX, MOUSE_X, KC_BTN1, KC_BTN3, KC_BTN2, KC_WH_D, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, MS_WHLL, XXXXXXX, MS_UP, XXXXXXX, XXXXXXX, MS_ACL0, XXXXXXX, MS_BTN3, XXXXXXX, MS_BTN5, XXXXXXX, + XXXXXXX, MS_WHLR, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLU, MS_ACL1, XXXXXXX, MS_BTN1, MS_BTN2, MS_BTN4, XXXXXXX, + XXXXXXX, MOUSE_X, MS_BTN1, MS_BTN3, MS_BTN2, MS_WHLD, MS_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX ), diff --git a/keyboards/fungo/keymaps/default/keymap.c b/keyboards/fungo/keymaps/default/keymap.c index 6dc4e97f1b..9225514452 100644 --- a/keyboards/fungo/keymaps/default/keymap.c +++ b/keyboards/fungo/keymaps/default/keymap.c @@ -145,9 +145,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [SAM4] = LAYOUT( KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ESC, KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_BSPC, KC_ACL0, KC_BTN1, KC_MS_U, KC_BTN2, KC_NO, KC_NO, - KC_TAB, KC_F6, MTC_F7, MTC_F8, MTC_F9, KC_F10, KC_F12, KC_CAPS, KC_ACL1, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_TAB, - KC_NO, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_NO, KC_NO, TT(SAM3), KC_NO, KC_NO, TT(SAM2), KC_NO, KC_ACL2, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_RCTL, + KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_BSPC, MS_ACL0, MS_BTN1, MS_UP, MS_BTN2, KC_NO, KC_NO, + KC_TAB, KC_F6, MTC_F7, MTC_F8, MTC_F9, KC_F10, KC_F12, KC_CAPS, MS_ACL1, MS_LEFT, MS_DOWN, MS_RGHT, KC_NO, KC_TAB, + KC_NO, KC_NO, MS_ACL0, MS_ACL1, MS_ACL2, KC_NO, KC_NO, TT(SAM3), KC_NO, KC_NO, TT(SAM2), KC_NO, MS_ACL2, MS_WHLL, MS_WHLU, MS_WHLD, MS_WHLR, KC_RCTL, KC_NO, TT(SAM1), KC_NO, KC_LALT, KC_SPC, TT(SAM2), KC_ENT, MO(SAM4), KC_NO, KC_ENT, TT(SAM3), KC_SPC, KC_RALT, KC_NO, TT(SAM1), KC_NO ), }; diff --git a/keyboards/gboards/butterstick/keymaps/default/keymap.c b/keyboards/gboards/butterstick/keymaps/default/keymap.c index d0c6af65df..d80169a2b8 100644 --- a/keyboards/gboards/butterstick/keymaps/default/keymap.c +++ b/keyboards/gboards/butterstick/keymaps/default/keymap.c @@ -49,8 +49,8 @@ uint32_t processQwerty(bool lookup) { P( LSD | RZ, SEND(KC_SPC)); // Dual chords - P( LP | LH, CLICK_MOUSE(KC_MS_BTN2)); - P( ST1 | RF, CLICK_MOUSE(KC_MS_BTN1)); + P( LP | LH, CLICK_MOUSE(MS_BTN2)); + P( ST1 | RF, CLICK_MOUSE(MS_BTN1)); P( LSU | LFT, SEND(KC_ESC)); P( LSD | LK, SEND(KC_LSFT)); P( RZ | RS, SEND(KC_LSFT)); diff --git a/keyboards/gboards/combos/germ-mouse-keys.def b/keyboards/gboards/combos/germ-mouse-keys.def index c0aff412e5..55d3afc4ff 100644 --- a/keyboards/gboards/combos/germ-mouse-keys.def +++ b/keyboards/gboards/combos/germ-mouse-keys.def @@ -1,2 +1,2 @@ -COMB(gbClick, KC_BTN1, KC_G, KC_B) -COMB(fvClick, KC_BTN2, KC_F, KC_V) +COMB(gbClick, MS_BTN1, KC_G, KC_B) +COMB(fvClick, MS_BTN2, KC_F, KC_V) diff --git a/keyboards/gboards/georgi/keymaps/colemak-dh/keymap.c b/keyboards/gboards/georgi/keymaps/colemak-dh/keymap.c index 932d48959c..339622aa9c 100644 --- a/keyboards/gboards/georgi/keymaps/colemak-dh/keymap.c +++ b/keyboards/gboards/georgi/keymaps/colemak-dh/keymap.c @@ -55,8 +55,8 @@ uint32_t processQwerty(bool lookup) { P( LFT | LK | LP | LW, REPEAT()); // Mouse Keys - /* P( LO | LSD | LK, CLICK_MOUSE(KC_MS_BTN2)); */ - /* P( LO | LR | LW, CLICK_MOUSE(KC_MS_BTN1)); */ + /* P( LO | LSD | LK, CLICK_MOUSE(MS_BTN2)); */ + /* P( LO | LR | LW, CLICK_MOUSE(MS_BTN1)); */ /* Function layer diff --git a/keyboards/gboards/georgi/keymaps/default-flipped/keymap.c b/keyboards/gboards/georgi/keymaps/default-flipped/keymap.c index 19683179f3..f22fac75d8 100644 --- a/keyboards/gboards/georgi/keymaps/default-flipped/keymap.c +++ b/keyboards/gboards/georgi/keymaps/default-flipped/keymap.c @@ -46,8 +46,8 @@ uint32_t processQwerty(bool lookup) { P( ST1 | ST2 | LW | ST4, SEND(KC_BSPC)); // Mouse Keys - P( LO | LSD | LK, CLICK_MOUSE(KC_MS_BTN2)); - P( LO | LR | LW, CLICK_MOUSE(KC_MS_BTN1)); + P( LO | LSD | LK, CLICK_MOUSE(MS_BTN2)); + P( LO | LR | LW, CLICK_MOUSE(MS_BTN1)); // Thumb Chords P( LA | LO | RE | RU, SEND(KC_CAPS)); diff --git a/keyboards/gboards/georgi/keymaps/default/keymap.c b/keyboards/gboards/georgi/keymaps/default/keymap.c index 955ec0e406..32f144914c 100644 --- a/keyboards/gboards/georgi/keymaps/default/keymap.c +++ b/keyboards/gboards/georgi/keymaps/default/keymap.c @@ -52,8 +52,8 @@ uint32_t processQwerty(bool lookup) { P( ST1 | ST2 | LW | ST4, SEND(KC_BSPC)); // Mouse Keys - P( LO | LSD | LK, CLICK_MOUSE(KC_MS_BTN2)); - P( LO | LR | LW, CLICK_MOUSE(KC_MS_BTN1)); + P( LO | LSD | LK, CLICK_MOUSE(MS_BTN2)); + P( LO | LR | LW, CLICK_MOUSE(MS_BTN1)); // Thumb Chords P( LA | LO | RE | RU, SEND(KC_CAPS)); diff --git a/keyboards/gboards/georgi/keymaps/minimal/keymap.c b/keyboards/gboards/georgi/keymaps/minimal/keymap.c index 2f089866b2..3827089532 100644 --- a/keyboards/gboards/georgi/keymaps/minimal/keymap.c +++ b/keyboards/gboards/georgi/keymaps/minimal/keymap.c @@ -44,8 +44,8 @@ uint32_t processQwerty(bool lookup) { P( ST1 | ST2 | LW | ST4, SEND(KC_BSPC)); // Mouse Keys - P( LO | LSD | LK, CLICK_MOUSE(KC_MS_BTN2)); - P( LO | LR | LW, CLICK_MOUSE(KC_MS_BTN1)); + P( LO | LSD | LK, CLICK_MOUSE(MS_BTN2)); + P( LO | LR | LW, CLICK_MOUSE(MS_BTN1)); // Thumb Chords P( LA | LO | RE | RU, SEND(KC_CAPS)); diff --git a/keyboards/gboards/georgi/keymaps/norman/keymap.c b/keyboards/gboards/georgi/keymaps/norman/keymap.c index 1b53cddd8b..8f607bca1c 100644 --- a/keyboards/gboards/georgi/keymaps/norman/keymap.c +++ b/keyboards/gboards/georgi/keymaps/norman/keymap.c @@ -111,8 +111,8 @@ uint32_t processQwerty(bool lookup) { P( MEDIA | RU, SEND(KC_RALT); SEND(KC_T); SEND(KC_A); SEND(KC_D)); // Mouse Keys and Printscreen - P( LFT | LH, CLICK_MOUSE(KC_MS_BTN1)); - P( LK | LR, CLICK_MOUSE(KC_MS_BTN2)); + P( LFT | LH, CLICK_MOUSE(MS_BTN1)); + P( LK | LR, CLICK_MOUSE(MS_BTN2)); P( RF | RT, SEND(KC_PSCR);); // Number Row Left diff --git a/keyboards/gboards/gergo/keymaps/colemak/keymap.c b/keyboards/gboards/gergo/keymaps/colemak/keymap.c index 0783578804..5aa7a4a1e8 100644 --- a/keyboards/gboards/gergo/keymaps/colemak/keymap.c +++ b/keyboards/gboards/gergo/keymaps/colemak/keymap.c @@ -47,7 +47,7 @@ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, OSM(MOD_LALT), KC ALT_T(KC_DEL), KC_BSPC, KC_SPC, CMD_T(KC_DEL), - KC_BTN3, KC_COLON, + MS_BTN3, KC_COLON, LT(SYMB, KC_ESC), LT(NUMB, KC_F13), LT(NUMB, KC_F14), LT(SYMB, KC_ENT)), /* Keymap 1: Symbols layer * @@ -100,8 +100,8 @@ KC_TRNS, KC_GRV, KC_TILD,KC_TRNS,KC_TRNS, KC_EQL, M2_URL, KC_TRN */ [NUMB] = LAYOUT_gergo( KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PGUP, -KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_BTN1, KC_HOME, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, KC_PGDN, -KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BTN2, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS, +KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, MS_BTN1, KC_HOME, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, KC_PGDN, +KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MS_BTN2, KC_TRNS, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, KC_TRNS, diff --git a/keyboards/gboards/gergo/keymaps/default/keymap.c b/keyboards/gboards/gergo/keymaps/default/keymap.c index da6486c97a..6335b51df8 100644 --- a/keyboards/gboards/gergo/keymaps/default/keymap.c +++ b/keyboards/gboards/gergo/keymaps/default/keymap.c @@ -42,8 +42,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT( LT(NUMB, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE, - MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_BTN2, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BTN1, KC_BTN3, KC_PGDN, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, + MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, MS_BTN2, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MS_BTN1, MS_BTN3, KC_PGDN, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, MT(MOD_LGUI, KC_DEL), MT(MOD_LALT, KC_ENT), LT(SYMB, KC_SPC), LT(NUMB, KC_ESC), LT(SYMB, KC_ENT), LT(NUMB, KC_SPC), KC_TAB, KC_BSPC ), /* Keymap 1: Symbols layer @@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [NUMB] = LAYOUT( KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLD, KC_VOLU, - KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_MPLY, KC_MNXT, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; diff --git a/keyboards/gboards/gergo/keymaps/germ/keymap.c b/keyboards/gboards/gergo/keymaps/germ/keymap.c index 8e26223f17..066b8674bc 100644 --- a/keyboards/gboards/gergo/keymaps/germ/keymap.c +++ b/keyboards/gboards/gergo/keymaps/germ/keymap.c @@ -42,8 +42,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT_gergo( LT(NUMB, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE, - MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_BTN2, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BTN1, KC_BTN3, KC_PGDN, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, + MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, MS_BTN2, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MS_BTN1, MS_BTN3, KC_PGDN, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, MT(MOD_LGUI, KC_DEL), MT(MOD_LALT, KC_ENT), LT(SYMB, KC_SPC), LT(NUMB, KC_ESC), LT(SYMB, KC_ENT), LT(NUMB, KC_SPC), KC_TAB, KC_BSPC ), /* Keymap 1: Symbols layer @@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [NUMB] = LAYOUT_gergo( KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLD, KC_VOLU, - KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_MPLY, KC_MNXT, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; diff --git a/keyboards/gboards/gergo/keymaps/oled/keymap.c b/keyboards/gboards/gergo/keymaps/oled/keymap.c index ab374b9332..3e8fce15ef 100644 --- a/keyboards/gboards/gergo/keymaps/oled/keymap.c +++ b/keyboards/gboards/gergo/keymaps/oled/keymap.c @@ -40,8 +40,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT_gergo( LT(NUMB, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE, - MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_BTN2, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BTN1, KC_BTN3, KC_PGDN, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, + MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, MS_BTN2, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MS_BTN1, MS_BTN3, KC_PGDN, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, MT(MOD_LGUI, KC_DEL), MT(MOD_LALT, KC_ENT), LT(SYMB, KC_SPC), LT(NUMB, KC_ESC), LT(SYMB, KC_ENT), LT(NUMB, KC_SPC), KC_TAB, KC_BSPC ), /* Keymap 1: Symbols layer @@ -93,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [NUMB] = LAYOUT_gergo( KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLD, KC_VOLU, - KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_MPLY, KC_MNXT, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; diff --git a/keyboards/gboards/gergoplex/keymaps/colemak-dhm/gergoplex.def b/keyboards/gboards/gergoplex/keymaps/colemak-dhm/gergoplex.def index 7ed0122c4b..2aada19b75 100644 --- a/keyboards/gboards/gergoplex/keymaps/colemak-dhm/gergoplex.def +++ b/keyboards/gboards/gergoplex/keymaps/colemak-dhm/gergoplex.def @@ -5,7 +5,7 @@ COMB(eiGreat, KC_GT, KC_E, KC_I) COMB(xcDash, KC_MINS, KC_X, KC_C) COMB(hcUnds, KC_UNDS, KC_H, KC_COMM) COMB(khQuot, KC_QUOT, KC_K, KC_H) -COMB(gvClic, KC_BTN1, KC_G, KC_V) -COMB(tdClic, KC_BTN2, KC_T, KC_D) +COMB(gvClic, MS_BTN1, KC_G, KC_V) +COMB(tdClic, MS_BTN2, KC_T, KC_D) SUBS(pasta, "I would just like to interject for a moment.", KC_H, KC_J, KC_K, KC_L) diff --git a/keyboards/gboards/gergoplex/keymaps/colemak-dhm/keymap.c b/keyboards/gboards/gergoplex/keymaps/colemak-dhm/keymap.c index 4303ef4165..0c25914540 100644 --- a/keyboards/gboards/gergoplex/keymaps/colemak-dhm/keymap.c +++ b/keyboards/gboards/gergoplex/keymaps/colemak-dhm/keymap.c @@ -74,8 +74,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_SPECIAL] = LAYOUT_split_3x5_3( KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_TILD, KC_TRNS, KC_TRNS, KC_BSLS, - KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BTN2, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_QUOT, - KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BTN1, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_MINS, + KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, MS_BTN2, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_QUOT, + KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, MS_BTN1, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_MINS, CM_TOGG, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, KC_DEL), /* Keymap 2: Numbers/Function/Motion layer @@ -94,6 +94,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NUMBERS] = LAYOUT_split_3x5_3( KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU, - KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_VOLD, + KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_VOLD, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT) }; diff --git a/keyboards/gboards/gergoplex/keymaps/default/keymap.c b/keyboards/gboards/gergoplex/keymaps/default/keymap.c index 7728304a9a..e3b762485d 100644 --- a/keyboards/gboards/gergoplex/keymaps/default/keymap.c +++ b/keyboards/gboards/gergoplex/keymaps/default/keymap.c @@ -88,8 +88,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_SPECIAL] = LAYOUT_split_3x5_3( KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_TILD, KC_TRNS, KC_TRNS, KC_BSLS, - KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BTN2, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_QUOT, - KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BTN1, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_MINS, + KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, MS_BTN2, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_QUOT, + KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, MS_BTN1, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_MINS, CM_TOGG, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, KC_DEL), /* Keymap 2: Numbers/Function/Motion layer @@ -108,6 +108,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NUMBERS] = LAYOUT_split_3x5_3( KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU, - KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_VOLD, + KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_VOLD, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT) }; diff --git a/keyboards/green_keys/gravity_45/keymaps/default/keymap.c b/keyboards/green_keys/gravity_45/keymaps/default/keymap.c index b1031461d5..d7ef16b0e6 100644 --- a/keyboards/green_keys/gravity_45/keymaps/default/keymap.c +++ b/keyboards/green_keys/gravity_45/keymaps/default/keymap.c @@ -7,7 +7,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( KC_ESC, LT(7, KC_Q), KC_W, KC_E, LT(6, KC_R), KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_LCTL, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, RGB_TOG, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_ENT, + KC_LCTL, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, UG_TOGG, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_ENT, KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_DEL, KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_RALT, KC_RGUI ), diff --git a/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c b/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c index adc3d89f39..c2cdf55d3c 100644 --- a/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c +++ b/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c @@ -32,8 +32,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAV] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MS_BTN2, MS_UP, MS_BTN1, MS_WHLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/h0oni/deskpad/deskpad.c b/keyboards/h0oni/deskpad/deskpad.c index 0f22eda152..8f9c97c97d 100644 --- a/keyboards/h0oni/deskpad/deskpad.c +++ b/keyboards/h0oni/deskpad/deskpad.c @@ -29,16 +29,16 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } else if(curr_layer == 1) { if (clockwise) { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } else { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } } else if(curr_layer == 2) { if (clockwise) { - tap_code16(C(KC_WH_U)); + tap_code16(C(MS_WHLU)); } else { - tap_code16(C(KC_WH_D)); + tap_code16(C(MS_WHLD)); } } else { diff --git a/keyboards/hadron/ver2/keymaps/default/keymap.c b/keyboards/hadron/ver2/keymaps/default/keymap.c index 951cacb423..825ec698b2 100644 --- a/keyboards/hadron/ver2/keymaps/default/keymap.c +++ b/keyboards/hadron/ver2/keymaps/default/keymap.c @@ -165,11 +165,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_MOUSECURSOR] = LAYOUT( - KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_WH_L, KC_MS_U, KC_WH_R,DEMOMACRO,_______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_END , KC_PGDN, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______, - _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, KC_BTN1, _______, _______, _______, _______, _______ + MS_ACL0, MS_ACL1, MS_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, MS_WHLL, MS_UP, MS_WHLR,DEMOMACRO,_______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_END , KC_PGDN, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_BTN2, MS_BTN3, MS_BTN4, MS_BTN5, _______, _______, + _______, _______, _______, _______, _______, MS_BTN1, _______, _______, _______, MS_BTN1, _______, _______, _______, _______, _______ ), /* Adjust (Lower + Raise) diff --git a/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c b/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c index 1e8523d94c..884ca0ed62 100644 --- a/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c +++ b/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c @@ -164,11 +164,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_MOUSECURSOR] = LAYOUT( - _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_WH_L, KC_MS_U, KC_WH_R, DEMOMACRO, _______, _______, _______, _______, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_END , KC_PGDN, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______ + _______, MS_ACL0, MS_ACL1, MS_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, MS_WHLL, MS_UP, MS_WHLR, DEMOMACRO, _______, _______, _______, _______, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_END , KC_PGDN, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, _______, _______, _______, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, MS_BTN2, MS_BTN3, MS_BTN4, MS_BTN5, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, MS_BTN1, MS_BTN1, _______, _______, _______, _______, _______, _______, _______, _______ ), /* Adjust (Lower + Raise) diff --git a/keyboards/hadron/ver3/keymaps/default/keymap.c b/keyboards/hadron/ver3/keymaps/default/keymap.c index 1e3f3191c2..df835454d3 100644 --- a/keyboards/hadron/ver3/keymaps/default/keymap.c +++ b/keyboards/hadron/ver3/keymaps/default/keymap.c @@ -162,11 +162,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_MOUSECURSOR] = LAYOUT( - KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_WH_L, KC_MS_U, KC_WH_R,DEMOMACRO,_______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_END , KC_PGDN, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______, - _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, KC_BTN1, _______, _______, _______, _______, _______ + MS_ACL0, MS_ACL1, MS_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, MS_WHLL, MS_UP, MS_WHLR,DEMOMACRO,_______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_END , KC_PGDN, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_BTN2, MS_BTN3, MS_BTN4, MS_BTN5, _______, _______, + _______, _______, _______, _______, _______, MS_BTN1, _______, _______, _______, MS_BTN1, _______, _______, _______, _______, _______ ), /* Adjust (Lower + Raise) diff --git a/keyboards/halfcliff/halfcliff.c b/keyboards/halfcliff/halfcliff.c index de636f22fe..30d1ef36e6 100644 --- a/keyboards/halfcliff/halfcliff.c +++ b/keyboards/halfcliff/halfcliff.c @@ -81,15 +81,15 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (index == 0) { /* Left side encoder */ if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } else if (index == 1) { /* Right side encoder */ if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } return true; diff --git a/keyboards/handwired/108key_trackpoint/keymaps/default/keymap.c b/keyboards/handwired/108key_trackpoint/keymaps/default/keymap.c index 3dcd4b3f6c..47e9d1d120 100644 --- a/keyboards/handwired/108key_trackpoint/keymaps/default/keymap.c +++ b/keyboards/handwired/108key_trackpoint/keymaps/default/keymap.c @@ -9,6 +9,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_P4, KC_P5, KC_P6, KC_PPLS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_APP, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, - KC_BTN1, KC_BTN3, KC_BTN2 + MS_BTN1, MS_BTN3, MS_BTN2 ) }; diff --git a/keyboards/handwired/108key_trackpoint/keymaps/dvorak/keymap.c b/keyboards/handwired/108key_trackpoint/keymaps/dvorak/keymap.c index b22f797273..da85321a33 100644 --- a/keyboards/handwired/108key_trackpoint/keymaps/dvorak/keymap.c +++ b/keyboards/handwired/108key_trackpoint/keymaps/dvorak/keymap.c @@ -9,6 +9,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_APP, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, - KC_BTN1, KC_BTN3, KC_BTN2 + MS_BTN1, MS_BTN3, MS_BTN2 ) }; diff --git a/keyboards/handwired/108key_trackpoint/keymaps/dvorak_media/keymap.c b/keyboards/handwired/108key_trackpoint/keymaps/dvorak_media/keymap.c index 89e36d9fdc..bfb7a151d9 100644 --- a/keyboards/handwired/108key_trackpoint/keymaps/dvorak_media/keymap.c +++ b/keyboards/handwired/108key_trackpoint/keymaps/dvorak_media/keymap.c @@ -9,6 +9,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_MPLY, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_APP, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, - KC_BTN1, KC_BTN3, KC_BTN2 + MS_BTN1, MS_BTN3, MS_BTN2 ) }; diff --git a/keyboards/handwired/42/keymaps/default/keymap.c b/keyboards/handwired/42/keymaps/default/keymap.c index 3c31ef89d1..457d599b4f 100644 --- a/keyboards/handwired/42/keymaps/default/keymap.c +++ b/keyboards/handwired/42/keymaps/default/keymap.c @@ -39,8 +39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // Mouse Layer LAYOUT( - _______, _______, KC_WREF, KC_WH_U, KC_WSCH, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, - _______, _______, KC_WH_L, KC_WH_D, KC_WH_R, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, + _______, _______, KC_WREF, MS_WHLU, KC_WSCH, _______, _______, MS_BTN1, MS_UP, MS_BTN2, _______, _______, + _______, _______, MS_WHLL, MS_WHLD, MS_WHLR, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) diff --git a/keyboards/handwired/acacia/keymaps/default/keymap.c b/keyboards/handwired/acacia/keymaps/default/keymap.c index a33a3880a6..0b19c698de 100644 --- a/keyboards/handwired/acacia/keymaps/default/keymap.c +++ b/keyboards/handwired/acacia/keymaps/default/keymap.c @@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAVI_FN] = 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_TAB, KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_TILD, KC_GRV, KC_LEFT, KC_UP, KC_RGHT, KC_WREF, KC_ENT, - KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, KC_BTN1, KC_DOWN, KC_BTN2, KC_WBAK, + KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, MS_BTN1, KC_DOWN, MS_BTN2, KC_WBAK, KC_MPRV, _______, BS_GUI, _______, _______, _______, _______, _______, _______, KC_PWR, _______ ), [_SYM_NUM] = LAYOUT( diff --git a/keyboards/handwired/chiron/keymaps/default/keymap.c b/keyboards/handwired/chiron/keymaps/default/keymap.c index 2889bd8b05..dead617e31 100644 --- a/keyboards/handwired/chiron/keymaps/default/keymap.c +++ b/keyboards/handwired/chiron/keymaps/default/keymap.c @@ -24,10 +24,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_CAPS, KC_INS, KC_LCTL, /*, */KC_LALT, LGUI_T(KC_SPC), KC_HYPR, KC_HYPR, RGUI_T(KC_SPC), KC_RALT, /*, */KC_LBRC, KC_RBRC, KC_SLSH ), [1] = LAYOUT( - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U, XXXXXXX, XXXXXXX, QK_BOOT, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, EE_CLR, - XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, _______, KC_MUTE, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, KC_BTN2, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_VOLD, XXXXXXX, KC_WH_D, XXXXXXX, KC_BTN3, KC_BTN4, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MS_WHLU, XXXXXXX, XXXXXXX, QK_BOOT, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, MS_WHLL, MS_UP, MS_WHLR, XXXXXXX, EE_CLR, + XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, _______, KC_MUTE, MS_LEFT, MS_DOWN, MS_RGHT, MS_BTN1, MS_BTN2, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_VOLD, XXXXXXX, MS_WHLD, XXXXXXX, MS_BTN3, MS_BTN4, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX ), [2] = LAYOUT( diff --git a/keyboards/handwired/cmd60/keymaps/default/keymap.c b/keyboards/handwired/cmd60/keymaps/default/keymap.c index 15084365fe..5fe199247e 100644 --- a/keyboards/handwired/cmd60/keymaps/default/keymap.c +++ b/keyboards/handwired/cmd60/keymaps/default/keymap.c @@ -31,9 +31,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [4] = LAYOUT( /* CMD60 - Mouse */ KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, KC_BTN3, KC_WH_D, _______, + _______, _______, _______, _______, _______, _______, _______, _______, MS_BTN1, MS_UP, MS_BTN2, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, MS_WHLU, MS_BTN3, MS_WHLD, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), [5] = LAYOUT( /* CMD60 - Media */ diff --git a/keyboards/handwired/concertina/64key/keymaps/default/keymap.c b/keyboards/handwired/concertina/64key/keymaps/default/keymap.c index c9f6384440..968e2168b5 100644 --- a/keyboards/handwired/concertina/64key/keymaps/default/keymap.c +++ b/keyboards/handwired/concertina/64key/keymaps/default/keymap.c @@ -80,14 +80,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_NUMERIC] = LAYOUT( - _______, _______, _______, KC_ACL1, KC_ACL2, _______, - _______, _______, LAYER_C, _______, KC_ACL0, _______, _______, _______, + _______, _______, _______, MS_ACL1, MS_ACL2, _______, + _______, _______, LAYER_C, _______, MS_ACL0, _______, _______, _______, _______, _______, _______, KC_SLEP, _______, _______, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F12, KC_F1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_F10, KC_F11, _______, KC_1, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_APP, KC_0, PASTE, - KC_INS, KC_EXLM, KC_BTN1, KC_BTN3, KC_BTN2, KC_MS_L, KC_MS_U, KC_MS_R, KC_PSCR, QK_BOOT, - LAYER_G, KC_MS_D + KC_INS, KC_EXLM, MS_BTN1, MS_BTN3, MS_BTN2, MS_LEFT, MS_UP, MS_RGHT, KC_PSCR, QK_BOOT, + LAYER_G, MS_DOWN ) }; diff --git a/keyboards/handwired/dactyl/keymaps/default/keymap.c b/keyboards/handwired/dactyl/keymaps/default/keymap.c index 669f358530..fd21b7e1e8 100644 --- a/keyboards/handwired/dactyl/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl/keymaps/default/keymap.c @@ -118,10 +118,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // MEDIA AND MOUSE [MDIA] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN1, MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/handwired/dactyl/keymaps/dvorak/keymap.c b/keyboards/handwired/dactyl/keymaps/dvorak/keymap.c index 59cb7b34f8..6d90b6825f 100644 --- a/keyboards/handwired/dactyl/keymaps/dvorak/keymap.c +++ b/keyboards/handwired/dactyl/keymaps/dvorak/keymap.c @@ -118,10 +118,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // MEDIA AND MOUSE [MDIA] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN1, MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/handwired/dactyl_cc/keymaps/default/keymap.c b/keyboards/handwired/dactyl_cc/keymaps/default/keymap.c index 6422699684..bc882bca4a 100644 --- a/keyboards/handwired/dactyl_cc/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_cc/keymaps/default/keymap.c @@ -26,12 +26,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [NAV] = LAYOUT( QK_BOOT, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_BRIU, KC_P7, KC_P8, KC_P9, KC_NO, QK_BOOT, - _______, KC_VOLU, KC_WBAK, KC_MS_U, KC_WFWD, KC_WH_U, KC_BRID, KC_P4, KC_P5, KC_P6, KC_PMNS, _______, - _______, KC_VOLD, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_PPLS, KC_P1, KC_P2, KC_P3, KC_PSLS, _______, + _______, KC_VOLU, KC_WBAK, MS_UP, KC_WFWD, MS_WHLU, KC_BRID, KC_P4, KC_P5, KC_P6, KC_PMNS, _______, + _______, KC_VOLD, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, KC_PPLS, KC_P1, KC_P2, KC_P3, KC_PSLS, _______, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_NO, KC_PAST, KC_PCMM, KC_P0, KC_PDOT, KC_PENT, _______, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME, _______, - KC_BTN1, KC_BTN2, _______, KC_END, _______, _______, + MS_BTN1, MS_BTN2, _______, KC_END, _______, _______, _______, ALT_BSP ) }; diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/keymap.c index 630b106ca7..47c344eb14 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/keymap.c @@ -29,12 +29,12 @@ along with this program. If not, see . #define ALT_SPC ALT_T(KC_SPC) #define SFT_ENT SFT_T(KC_ENT) -#define KC_ML KC_MS_LEFT -#define KC_MR KC_MS_RIGHT -#define KC_MU KC_MS_UP -#define KC_MD KC_MS_DOWN -#define KC_MB1 KC_MS_BTN1 -#define KC_MB2 KC_MS_BTN2 +#define KC_ML MS_LEFT +#define KC_MR MS_RGHT +#define KC_MU MS_UP +#define KC_MD MS_DOWN +#define KC_MB1 MS_BTN1 +#define KC_MB2 MS_BTN2 #define RAISE MO(_RAISE) #define LOWER MO(_LOWER) diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/keymap.c b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/keymap.c index d0136c4c51..c8c087f267 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/keymap.c +++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/keymap.c @@ -15,12 +15,12 @@ extern keymap_config_t keymap_config; #define ALT_SPC ALT_T(KC_SPC) #define SFT_ENT SFT_T(KC_ENT) -#define KC_ML KC_MS_LEFT -#define KC_MR KC_MS_RIGHT -#define KC_MU KC_MS_UP -#define KC_MD KC_MS_DOWN -#define KC_MB1 KC_MS_BTN1 -#define KC_MB2 KC_MS_BTN1 +#define KC_ML MS_LEFT +#define KC_MR MS_RGHT +#define KC_MU MS_UP +#define KC_MD MS_DOWN +#define KC_MB1 MS_BTN1 +#define KC_MB2 MS_BTN1 #define RAISE MO(_RAISE) #define LOWER MO(_LOWER) diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/4x6/keymaps/default/keymap.c index 942128d3f2..043f118ecc 100644 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_manuform/4x6/keymaps/default/keymap.c @@ -9,12 +9,12 @@ #define ALT_SPC ALT_T(KC_SPC) #define SFT_ENT SFT_T(KC_ENT) -#define KC_ML KC_MS_LEFT -#define KC_MR KC_MS_RIGHT -#define KC_MU KC_MS_UP -#define KC_MD KC_MS_DOWN -#define KC_MB1 KC_MS_BTN1 -#define KC_MB2 KC_MS_BTN1 +#define KC_ML MS_LEFT +#define KC_MR MS_RGHT +#define KC_MU MS_UP +#define KC_MD MS_DOWN +#define KC_MB1 MS_BTN1 +#define KC_MB2 MS_BTN1 #define RAISE MO(_RAISE) #define LOWER MO(_LOWER) diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/keymap.json b/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/keymap.json index a2760f42bb..24f5be6010 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/keymap.json +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/keymaps/default/keymap.json @@ -461,40 +461,40 @@ "KC_NO", "KC_TRNS", - "KC_ACL1", + "MS_ACL1", "KC_NO", "KC_NO", "KC_NO", "KC_NO", - "KC_WH_U", - "KC_WH_L", - "KC_MS_U", - "KC_WH_R", + "MS_WHLU", + "MS_WHLL", + "MS_UP", + "MS_WHLR", "KC_NO", "KC_NO", "KC_TRNS", - "KC_ACL2", - "KC_BTN2", - "KC_BTN3", - "KC_BTN1", - "KC_BTN1", - "KC_MS_L", - "KC_MS_L", - "KC_MS_D", - "KC_MS_R", + "MS_ACL2", + "MS_BTN2", + "MS_BTN3", + "MS_BTN1", + "MS_BTN1", + "MS_LEFT", + "MS_LEFT", + "MS_DOWN", + "MS_RGHT", "KC_NO", "KC_NO", "KC_TRNS", - "KC_ACL0", + "MS_ACL0", "KC_NO", "KC_NO", "KC_NO", "KC_NO", - "KC_WH_D", + "MS_WHLD", "KC_NO", - "KC_MS_D", + "MS_DOWN", "KC_NO", "KC_NO", "KC_TRNS", diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/default/keymap.json b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/default/keymap.json index 3cb115ffd5..bd58984eef 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/default/keymap.json +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/default/keymap.json @@ -447,40 +447,40 @@ "KC_NO", "KC_TRNS", - "KC_ACL1", + "MS_ACL1", "KC_NO", "KC_NO", "KC_NO", "KC_NO", - "KC_WH_U", - "KC_WH_L", - "KC_MS_U", - "KC_WH_R", + "MS_WHLU", + "MS_WHLL", + "MS_UP", + "MS_WHLR", "KC_NO", "KC_NO", "KC_TRNS", - "KC_ACL2", - "KC_BTN2", - "KC_BTN3", - "KC_BTN1", - "KC_BTN1", - "KC_MS_L", - "KC_MS_L", - "KC_MS_D", - "KC_MS_R", + "MS_ACL2", + "MS_BTN2", + "MS_BTN3", + "MS_BTN1", + "MS_BTN1", + "MS_LEFT", + "MS_LEFT", + "MS_DOWN", + "MS_RGHT", "KC_NO", "KC_NO", "KC_TRNS", - "KC_ACL0", + "MS_ACL0", "KC_NO", "KC_NO", "KC_NO", "KC_NO", - "KC_WH_D", + "MS_WHLD", "KC_NO", - "KC_MS_D", + "MS_DOWN", "KC_NO", "KC_NO", "KC_TRNS", diff --git a/keyboards/handwired/dactyl_maximus/keymaps/default/keymap.c b/keyboards/handwired/dactyl_maximus/keymaps/default/keymap.c index cfd95db563..efd5f1a058 100644 --- a/keyboards/handwired/dactyl_maximus/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_maximus/keymaps/default/keymap.c @@ -41,12 +41,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [2] = LAYOUT( KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, - KC_TRNS, KC_NO, KC_NO, KC_ACL2, KC_ACL1, KC_ACL0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, - KC_TRNS, KC_NO, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NO, KC_NO, KC_SLEP, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_TRNS, - KC_TRNS, KC_NO, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_NO, KC_NO, MS_ACL2, MS_ACL1, MS_ACL0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_NO, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_NO, KC_NO, KC_SLEP, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_TRNS, + KC_TRNS, KC_NO, MS_WHLL, MS_WHLD, MS_WHLU, MS_WHLR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_BTN1, KC_BTN2, KC_NO, KC_NO, KC_TRNS, + KC_NO, MS_BTN1, MS_BTN2, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ) }; diff --git a/keyboards/handwired/dactyl_promicro/keymaps/default/keymap.c b/keyboards/handwired/dactyl_promicro/keymaps/default/keymap.c index 1dd2f47841..2e5545c700 100644 --- a/keyboards/handwired/dactyl_promicro/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_promicro/keymaps/default/keymap.c @@ -57,10 +57,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_RAISE] = LAYOUT_6x6( _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, - _______,_______,_______,KC_MS_U,_______,_______, _______,_______,_______,_______,_______,_______, - _______,_______,KC_MS_L,KC_MS_D,KC_MS_R,_______, _______,_______,_______,_______,_______,KC_MPLY, + _______,_______,_______,MS_UP, _______,_______, _______,_______,_______,_______,_______,_______, + _______,_______,MS_LEFT,MS_DOWN,MS_RGHT,_______, _______,_______,_______,_______,_______,KC_MPLY, _______,_______,_______,_______,_______,_______, _______,_______,KC_MPRV,KC_MNXT,_______,_______, - QK_BOOT ,_______,_______,KC_BTN1,KC_BTN2,_______, KC_WBAK,KC_VOLU,KC_VOLD,KC_MUTE,_______,_______, + QK_BOOT ,_______,_______,MS_BTN1,MS_BTN2,_______, KC_WBAK,KC_VOLU,KC_VOLD,KC_MUTE,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______, _______, _______ diff --git a/keyboards/handwired/dactyl_rah/keymaps/default/keymap.c b/keyboards/handwired/dactyl_rah/keymaps/default/keymap.c index 6f0c25a4dd..447ff3c0a7 100644 --- a/keyboards/handwired/dactyl_rah/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_rah/keymaps/default/keymap.c @@ -36,12 +36,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [NAV] = LAYOUT_6x6( QK_BOOT , KC_NO ,KC_MPRV,KC_MPLY,KC_MNXT, KC_NO , KC_BRIU, KC_7 , KC_8 , KC_9 , KC_NO , QK_BOOT , - _______,KC_VOLU,KC_WBAK,KC_MS_U,KC_WFWD,KC_WH_U, KC_BRID, KC_4 , KC_5 , KC_6 , KC_NO , KC_F9 , - _______,KC_VOLD,KC_MS_L,KC_MS_D,KC_MS_R,KC_WH_D, KC_PPLS, KC_1 , KC_2 , KC_3 ,KC_PMNS, KC_F10, + _______,KC_VOLU,KC_WBAK,MS_UP, KC_WFWD,MS_WHLU, KC_BRID, KC_4 , KC_5 , KC_6 , KC_NO , KC_F9 , + _______,KC_VOLD,MS_LEFT,MS_DOWN,MS_RGHT,MS_WHLD, KC_PPLS, KC_1 , KC_2 , KC_3 ,KC_PMNS, KC_F10, KC_NO , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NO , KC_PAST, KC_0 , KC_NO ,_______,KC_PSLS, KC_F11, _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______,_______,_______,_______, KC_F12, _______,_______, KC_HOME,_______, _______, KC_END , - KC_BTN1,KC_BTN2,_______, ALT_BSP,_______,_______ + MS_BTN1,MS_BTN2,_______, ALT_BSP,_______,_______ ) }; diff --git a/keyboards/handwired/dactyl_rah/keymaps/right/keymap.c b/keyboards/handwired/dactyl_rah/keymaps/right/keymap.c index 6f0c25a4dd..447ff3c0a7 100644 --- a/keyboards/handwired/dactyl_rah/keymaps/right/keymap.c +++ b/keyboards/handwired/dactyl_rah/keymaps/right/keymap.c @@ -36,12 +36,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [NAV] = LAYOUT_6x6( QK_BOOT , KC_NO ,KC_MPRV,KC_MPLY,KC_MNXT, KC_NO , KC_BRIU, KC_7 , KC_8 , KC_9 , KC_NO , QK_BOOT , - _______,KC_VOLU,KC_WBAK,KC_MS_U,KC_WFWD,KC_WH_U, KC_BRID, KC_4 , KC_5 , KC_6 , KC_NO , KC_F9 , - _______,KC_VOLD,KC_MS_L,KC_MS_D,KC_MS_R,KC_WH_D, KC_PPLS, KC_1 , KC_2 , KC_3 ,KC_PMNS, KC_F10, + _______,KC_VOLU,KC_WBAK,MS_UP, KC_WFWD,MS_WHLU, KC_BRID, KC_4 , KC_5 , KC_6 , KC_NO , KC_F9 , + _______,KC_VOLD,MS_LEFT,MS_DOWN,MS_RGHT,MS_WHLD, KC_PPLS, KC_1 , KC_2 , KC_3 ,KC_PMNS, KC_F10, KC_NO , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NO , KC_PAST, KC_0 , KC_NO ,_______,KC_PSLS, KC_F11, _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______,_______,_______,_______, KC_F12, _______,_______, KC_HOME,_______, _______, KC_END , - KC_BTN1,KC_BTN2,_______, ALT_BSP,_______,_______ + MS_BTN1,MS_BTN2,_______, ALT_BSP,_______,_______ ) }; diff --git a/keyboards/handwired/dactylmacropad/keymaps/default/keymap.c b/keyboards/handwired/dactylmacropad/keymaps/default/keymap.c index 65c7f445b7..bcb4e2016a 100644 --- a/keyboards/handwired/dactylmacropad/keymaps/default/keymap.c +++ b/keyboards/handwired/dactylmacropad/keymaps/default/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT (pvt, LCTL(KC_V), KC_UP, LCTL(KC_C), LSFT_T(KC_ESC), KC_LEFT, KC_DOWN, KC_RGHT, - TO(1), KC_LCTL, ALT_TAB, KC_APP, KC_BTN3), + TO(1), KC_LCTL, ALT_TAB, KC_APP, MS_BTN3), /* * ┌────┬────┬────┬────┐ * │mte │ BI │ up │pgu │ @@ -71,9 +71,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } } else { if (clockwise) { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } else { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } } return false; diff --git a/keyboards/handwired/datahand/keymaps/default/keymap.c b/keyboards/handwired/datahand/keymaps/default/keymap.c index 608c45dea3..828aed1d2e 100644 --- a/keyboards/handwired/datahand/keymaps/default/keymap.c +++ b/keyboards/handwired/datahand/keymaps/default/keymap.c @@ -85,9 +85,9 @@ _______, _______, _______, _______, _______, _______, _______, _______, ______ #endif [FUNCTION_MOUSE] = LAYOUT( - KC_F2, KC_F4, KC_F6, KC_MS_U, KC_MS_U, KC_F8, KC_F10, KC_PGUP, -_______, KC_NO, KC_SCRL, _______, KC_BTN3, NLK, KC_BTN1, MS, KC_BTN2, KC_MS_L, KC_BTN1, KC_MS_R, KC_MS_L, KC_BTN2, KC_MS_R, KC_END, AR, KC_LSFT, KC_INS, KC_9, KC_ENT, KC_F11, KC_0, KC_F12, - KC_F1, KC_F3, KC_F5, KC_MS_D, KC_MS_D, KC_F7, KC_F9, KC_PGDN, + KC_F2, KC_F4, KC_F6, MS_UP, MS_UP, KC_F8, KC_F10, KC_PGUP, +_______, KC_NO, KC_SCRL, _______, MS_BTN3, NLK, MS_BTN1, MS, MS_BTN2, MS_LEFT, MS_BTN1, MS_RGHT, MS_LEFT, MS_BTN2, MS_RGHT, KC_END, AR, KC_LSFT, KC_INS, KC_9, KC_ENT, KC_F11, KC_0, KC_F12, + KC_F1, KC_F3, KC_F5, MS_DOWN, MS_DOWN, KC_F7, KC_F9, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/handwired/dmote/keymaps/default/keymap.c b/keyboards/handwired/dmote/keymaps/default/keymap.c index 0c9ceb8722..632ccb87dc 100644 --- a/keyboards/handwired/dmote/keymaps/default/keymap.c +++ b/keyboards/handwired/dmote/keymaps/default/keymap.c @@ -65,9 +65,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYER_C, KC_INS, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, QK_BOOT, KC_WAKE, // * KC_F12, KC_F1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_F10, KC_F11, _______, KC_1, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_APP, KC_0, PASTE, - KC_GRV, KC_EXLM, KC_BTN1, KC_WH_U, KC_BTN2, KC_MS_L, KC_MS_U, KC_MS_R, KC_PSCR, UG_TOGG, - KC_WH_D, UG_NEXT, _______, KC_ACL1, KC_ACL2, KC_MS_D, - _______, _______, EMDASH, KC_ACL0, _______, _______, + KC_GRV, KC_EXLM, MS_BTN1, MS_WHLU, MS_BTN2, MS_LEFT, MS_UP, MS_RGHT, KC_PSCR, UG_TOGG, + MS_WHLD, UG_NEXT, _______, MS_ACL1, MS_ACL2, MS_DOWN, + _______, _______, EMDASH, MS_ACL0, _______, _______, _______, _______, _______, _______ ) }; diff --git a/keyboards/handwired/dqz11n1g/keymaps/default/keymap.c b/keyboards/handwired/dqz11n1g/keymaps/default/keymap.c index 2a4ca0c703..9488bbfde6 100644 --- a/keyboards/handwired/dqz11n1g/keymaps/default/keymap.c +++ b/keyboards/handwired/dqz11n1g/keymaps/default/keymap.c @@ -37,11 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * Maltron, so just putting some "Quantum" keycodes here for testing that * the layer exists and Fun Lock LED works. */ [_FUNCTION] = LAYOUT( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,KC_TRNS,KC_BTN3,KC_MS_U,KC_WH_U,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,KC_TRNS,MS_BTN3,MS_UP, MS_WHLU,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CK_UP, AU_ON, KC_MS_L,KC_BTN1,KC_MS_R,KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CK_DOWN,AU_OFF, KC_BTN2,KC_MS_D,KC_WH_D,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CK_TOGG,KC_NO, KC_ACL0,KC_ACL1,KC_ACL2,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CK_UP, AU_ON, MS_LEFT,MS_BTN1,MS_RGHT,KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CK_DOWN,AU_OFF, MS_BTN2,MS_DOWN,MS_WHLD,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CK_TOGG,KC_NO, MS_ACL0,MS_ACL1,MS_ACL2,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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/handwired/elrgo_s/keymaps/default/keymap.c b/keyboards/handwired/elrgo_s/keymaps/default/keymap.c index b43c75cf2d..d43f390586 100644 --- a/keyboards/handwired/elrgo_s/keymaps/default/keymap.c +++ b/keyboards/handwired/elrgo_s/keymaps/default/keymap.c @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_RAISE] = LAYOUT_split_3x6_5( - KC_ESC , KC_PDOT , M_BBSLS , KC_BSLS , LSFT(KC_MINS), LSFT(KC_EQL), KC_HOME , KC_WH_L , KC_UP , KC_WH_R , KC_PGUP , KC_BSPC , + KC_ESC , KC_PDOT , M_BBSLS , KC_BSLS , LSFT(KC_MINS), LSFT(KC_EQL), KC_HOME , MS_WHLL , KC_UP , MS_WHLR , KC_PGUP , KC_BSPC , KC_TAB , LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4) , LSFT(KC_5) , M_FLEFT , KC_LEFT , KC_DOWN , KC_RIGHT, M_FRIGHT, KC_DEL , LSFT(KC_TAB), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9) , LSFT(KC_0) , KC_END , KC_F22 , KC_F23 , KC_CAPS , KC_PGDN , MO(_ADJUST), KC_LGUI , KC_LCTL , KC_LSFT , KC_LALT , M_SHLL , M_SHLA , KC_TRNS , KC_SPC , KC_RALT , KC_ENT diff --git a/keyboards/handwired/ergocheap/keymaps/default/keymap.c b/keyboards/handwired/ergocheap/keymaps/default/keymap.c index 15753dabd7..efb7955c09 100644 --- a/keyboards/handwired/ergocheap/keymaps/default/keymap.c +++ b/keyboards/handwired/ergocheap/keymaps/default/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_UP, _______, _______, _______, KC_LCTL, _______, KC_S, _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_LEFT, KC_RGHT, _______, _______, - KC_LSFT, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_DOWN, TO(_BASE), KC_WH_U, _______, - _______, KC_LGUI, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R + KC_LSFT, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_DOWN, TO(_BASE), MS_WHLU, _______, + _______, KC_LGUI, _______, _______, _______, _______, _______, _______, MS_WHLL, MS_WHLD, MS_WHLR ) }; diff --git a/keyboards/handwired/fivethirteen/keymaps/default/keymap.c b/keyboards/handwired/fivethirteen/keymaps/default/keymap.c index b68e81e81c..63e5798e81 100644 --- a/keyboards/handwired/fivethirteen/keymaps/default/keymap.c +++ b/keyboards/handwired/fivethirteen/keymaps/default/keymap.c @@ -30,9 +30,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [MOS] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_WH_D, KC_WH_U, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, MS_BTN1, MS_BTN2, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, MS_WHLD, MS_WHLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; diff --git a/keyboards/handwired/floorboard/keymaps/default/keymap.c b/keyboards/handwired/floorboard/keymaps/default/keymap.c index 161dbea030..2d519bee03 100644 --- a/keyboards/handwired/floorboard/keymaps/default/keymap.c +++ b/keyboards/handwired/floorboard/keymaps/default/keymap.c @@ -18,6 +18,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_ortho_4x12(KC_TAB, KC_SCLN, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, KC_LSFT, KC_QUOT, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, LT(2,KC_CAPS), MO(3), KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_BSPC, KC_RALT, KC_VOLD, KC_VOLU, LT(2,KC_MPLY)), [1] = LAYOUT_ortho_4x12(KC_PERC, KC_LBRC, KC_LCBR, KC_RCBR, KC_LPRN, KC_PEQL, KC_ASTR, KC_RPRN, KC_PLUS, KC_EXLM, KC_RBRC, KC_GRV, KC_LCTL, KC_7, KC_5, KC_3, KC_1, KC_9, KC_0, KC_2, KC_4, KC_6, KC_8, KC_MINS, KC_LSFT, KC_LBRC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLSH, KC_NO, KC_TRNS, KC_NO, KC_LGUI, KC_LALT, KC_SPC, KC_TRNS, KC_NO, KC_DEL, KC_RALT, KC_PSCR, KC_APP, KC_NO), - [2] = LAYOUT_ortho_4x12(KC_WAKE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_SLEP, KC_LCTL, KC_NO, KC_CUT, KC_COPY, KC_PSTE, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_ENT, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_LGUI, KC_LALT, KC_BTN1, KC_BTN2, KC_TRNS, KC_NO, KC_RALT, KC_NO, KC_APP, KC_NO), + [2] = LAYOUT_ortho_4x12(KC_WAKE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_SLEP, KC_LCTL, KC_NO, KC_CUT, KC_COPY, KC_PSTE, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_ENT, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_LGUI, KC_LALT, MS_BTN1, MS_BTN2, KC_TRNS, KC_NO, KC_RALT, KC_NO, KC_APP, KC_NO), [3] = LAYOUT_ortho_4x12(KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LCTL, KC_F7, KC_F5, KC_F3, KC_F1, KC_F9, KC_F10, KC_F2, KC_F4, KC_F6, KC_F8, KC_NO, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_NO, KC_DEL, KC_RALT, KC_BRID, KC_BRIU, KC_NO) }; diff --git a/keyboards/handwired/frenchdev/keymaps/default/keymap.c b/keyboards/handwired/frenchdev/keymaps/default/keymap.c index 67c0072a08..aa622c5ddb 100644 --- a/keyboards/handwired/frenchdev/keymaps/default/keymap.c +++ b/keyboards/handwired/frenchdev/keymaps/default/keymap.c @@ -103,9 +103,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, M_UN, M_CUT, M_CP, M_PS, M_SE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BP_DLR, BP_EQL, KC_PGUP, BP_PIPE, BP_SLSH, KC_TRNS, KC_TRNS, KC_TRNS, BP_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, //left pedals - KC_TRNS, KC_BTN1, KC_TRNS, + KC_TRNS, MS_BTN1, KC_TRNS, //right pedals - KC_TRNS, KC_BTN1, KC_TRNS + KC_TRNS, MS_BTN1, KC_TRNS ), /* MEDIA, mouse and numpad. @@ -130,14 +130,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_MEDIA] = LAYOUT( QK_BOOT, KC_SCRL, KC_PAUS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_CALC, KC_NUM, KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_MPRV, KC_MNXT, KC_MPLY, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, KC_TRNS, KC_PMNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_BTN4, KC_BTN5, KC_BTN4, KC_BTN5, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_D, KC_BTN3, KC_BTN2, KC_BTN1, KC_BTN1, KC_BTN2, KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST, KC_TRNS, - KC_TRNS, M_UN, M_CUT, M_CP, M_PS, KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_KP_1, KC_KP_2, KC_KP_3, KC_PSLS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_WHLU, KC_TRNS, MS_BTN4, MS_BTN5, MS_BTN4, MS_BTN5, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_WHLD, MS_BTN3, MS_BTN2, MS_BTN1, MS_BTN1, MS_BTN2, KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST, KC_TRNS, + KC_TRNS, M_UN, M_CUT, M_CP, M_PS, MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN3, KC_KP_1, KC_KP_2, KC_KP_3, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_PDOT, BP_DOT, BP_COMM, KC_TRNS, //left pedals - KC_BTN3, M_RP, KC_TRNS, + MS_BTN3, M_RP, KC_TRNS, //right pedals - KC_BTN3, M_RP, KC_TRNS + MS_BTN3, M_RP, KC_TRNS ), /* TRNS - skeleton for laters @@ -167,9 +167,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, //left pedals - KC_BTN3, M_RP, KC_TRNS, + MS_BTN3, M_RP, KC_TRNS, //right pedals - KC_BTN3, M_RP, KC_TRNS + MS_BTN3, M_RP, KC_TRNS ), }; @@ -239,7 +239,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { key_timer_left_pedal = timer_read(); // if the key is being pressed, we start the timer. } else { if (timer_elapsed(key_timer_left_pedal) < KEY_DELAY) { - tap_code (KC_BTN2); + tap_code (MS_BTN2); } unregister_code (KC_SCRL); layer_off(1); @@ -251,7 +251,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { key_timer_right_pedal = timer_read(); // if the key is being pressed, we start the timer. } else { if (timer_elapsed(key_timer_right_pedal) < PEDAL_DELAY) { - tap_code (KC_BTN1); + tap_code (MS_BTN1); } layer_off(2); } diff --git a/keyboards/handwired/k8split/keymaps/left/keymap.c b/keyboards/handwired/k8split/keymaps/left/keymap.c index 8d7559065a..c40b1c7b4f 100644 --- a/keyboards/handwired/k8split/keymaps/left/keymap.c +++ b/keyboards/handwired/k8split/keymaps/left/keymap.c @@ -39,8 +39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_AUDIO_MUTE, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_AUDIO_MMUTE, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_INT5, KC_MS_WH_UP, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_COMP, KC_MS_WH_DOWN, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_INT5, MS_WHLU, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_COMP, MS_WHLD, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F13, KC_F14, KC_LCTL, KC_CAPS, KC_LWIN, KC_LALT, KC_SPC, KC_F15, KC_F16, KC_F17 ) diff --git a/keyboards/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c index 24fc4c20af..1976769052 100644 --- a/keyboards/handwired/kbod/keymaps/default/keymap.c +++ b/keyboards/handwired/kbod/keymaps/default/keymap.c @@ -46,15 +46,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TO(0), KC_1, KC_2, KC_3, ALT_F4, KC_5, KC_6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, KC_BSPC, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_BTN1, KC_MS_U, KC_BTN2, - _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN3 + _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, MS_BTN1, MS_UP, MS_BTN2, + _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_BTN3 ), LAYOUT( /* Multimedia layer */ TO(0), _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, KC_WAKE, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPRV, KC_MNXT, _______, _______, _______, KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_PWR, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_WH_U, KC_BTN2, - _______, _______, _______, KC_MPLY, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3 + _______, _______, KC_PWR, _______, _______, _______, _______, _______, _______, MS_BTN1, MS_WHLU, MS_BTN2, + _______, _______, _______, KC_MPLY, MS_WHLL, MS_WHLD, MS_WHLR, MS_BTN3 ), }; diff --git a/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c b/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c index ccc445be42..8a8cda6ea2 100644 --- a/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c +++ b/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c @@ -391,15 +391,15 @@ bool encoder_update_user(uint8_t index, bool clockwise) { else if(IS_LAYER_ON(ONE)) { if (index == 0) { /* First encoder */ if (clockwise) { - tap_code(KC_WH_R); + tap_code(MS_WHLR); } else { - tap_code(KC_WH_L); + tap_code(MS_WHLL); } } else if (index == 1) { /* Second encoder */ if (clockwise) { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } else { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } } } diff --git a/keyboards/handwired/ortho5x14/keymaps/2u/keymap.c b/keyboards/handwired/ortho5x14/keymaps/2u/keymap.c index 752eda0fde..d0c8c610b1 100644 --- a/keyboards/handwired/ortho5x14/keymaps/2u/keymap.c +++ b/keyboards/handwired/ortho5x14/keymaps/2u/keymap.c @@ -539,10 +539,10 @@ KC_PAUS */ [_MOUSE] = LAYOUT( _______ , XXXXXXX , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12, - _______ , XXXXXXX , XXXXXXX , XXXXXXX , KC_MS_UP , XXXXXXX , KC_MS_ACCEL0 , XXXXXXX, XXXXXXX , KC_MS_WH_UP , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX, - _______ , XXXXXXX , XXXXXXX , KC_MS_LEFT , KC_MS_DOWN , KC_MS_RIGHT, KC_MS_ACCEL1 , XXXXXXX, KC_MS_WH_LEFT , KC_MS_WH_DOWN, KC_MS_WH_RIGHT, XXXXXXX , XXXXXXX , XXXXXXX, - XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_MS_ACCEL2 , XXXXXXX, KC_MS_BTN1 , KC_MS_BTN2 , KC_MS_BTN3 , XXXXXXX , XXXXXXX , XXXXXXX, - TD(CTL_OSL1), OSM(MOD_LGUI), TD(ALT_OSL1), TD(TD_LayerDn) ,TD(TD_LayerUp), TD(TD_SPC_ENT) , KC_MS_BTN1 , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT, TD(TD_ESC_GRAVE) + _______ , XXXXXXX , XXXXXXX , XXXXXXX , MS_UP , XXXXXXX , MS_ACL0 , XXXXXXX, XXXXXXX , MS_WHLU , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX, + _______ , XXXXXXX , XXXXXXX , MS_LEFT , MS_DOWN , MS_RGHT , MS_ACL1 , XXXXXXX, MS_WHLL , MS_WHLD , MS_WHLR , XXXXXXX , XXXXXXX , XXXXXXX, + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , MS_ACL2 , XXXXXXX, MS_BTN1 , MS_BTN2 , MS_BTN3 , XXXXXXX , XXXXXXX , XXXXXXX, + TD(CTL_OSL1), OSM(MOD_LGUI), TD(ALT_OSL1), TD(TD_LayerDn) ,TD(TD_LayerUp), TD(TD_SPC_ENT) , MS_BTN1 , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT, TD(TD_ESC_GRAVE) ) }; diff --git a/keyboards/handwired/ortho5x14/keymaps/default/keymap.c b/keyboards/handwired/ortho5x14/keymaps/default/keymap.c index a2f7befd9f..30e107f336 100644 --- a/keyboards/handwired/ortho5x14/keymaps/default/keymap.c +++ b/keyboards/handwired/ortho5x14/keymaps/default/keymap.c @@ -130,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|---------------+-----------------+-------+-------+----------+------+----+----+------+----------------+---------------+----------------+----------------+----------------| KC_PGDN ,TD(TD_SHIFT_CAPS),KC_Z ,KC_X ,KC_C ,KC_V ,KC_B,KC_N,KC_M ,TD(TD_COMM_LABK),TD(TD_DOT_RABK),TD(TD_SLSH_QUES),TD(TD_BSLS_PIPE),KC_RSFT , //|---------------+-----------------+-------+-------+----------+------+----+----+------+----------------+---------------+----------------+----------------+----------------| - KC_END , KC_LCTL ,KC_LGUI,KC_LALT, KC_L1 , KC_SPACE , KC_SPACE , KC_L2 ,KC_RALT ,KC_BTN2 ,KC_RCTL ,TD(TD_ESC_GRAVE) + KC_END , KC_LCTL ,KC_LGUI,KC_LALT, KC_L1 , KC_SPACE , KC_SPACE , KC_L2 ,KC_RALT ,MS_BTN2 ,KC_RCTL ,TD(TD_ESC_GRAVE) //`---------------+-----------------+-------+-------+----------+------+----+-----------+----------------+---------------+----------------+----------------+----------------' ), diff --git a/keyboards/handwired/ortho5x14/keymaps/split1/keymap.c b/keyboards/handwired/ortho5x14/keymaps/split1/keymap.c index a5222eecfa..be7940bcfd 100644 --- a/keyboards/handwired/ortho5x14/keymaps/split1/keymap.c +++ b/keyboards/handwired/ortho5x14/keymaps/split1/keymap.c @@ -474,9 +474,9 @@ KC_PAUS */ [_MOUSE] = LAYOUT( _______ , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , XXXXXXX, XXXXXXX, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11, - KC_MS_ACCEL0, XXXXXXX , KC_MS_UP , XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX , KC_MS_WH_UP , XXXXXXX , XXXXXXX , KC_F12, - KC_MS_ACCEL1, KC_MS_LEFT, KC_MS_DOWN , KC_MS_RIGHT , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, XXXXXXX , XXXXXXX, - KC_MS_ACCEL2, XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_BTN1 , KC_MS_BTN2 , KC_MS_BTN3 , XXXXXXX , XXXXXXX, + MS_ACL0 , XXXXXXX , MS_UP , XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX , MS_WHLU , XXXXXXX , XXXXXXX , KC_F12, + MS_ACL1 , MS_LEFT , MS_DOWN , MS_RGHT , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MS_WHLL , MS_WHLD , MS_WHLR , XXXXXXX , XXXXXXX, + MS_ACL2 , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MS_BTN1 , MS_BTN2 , MS_BTN3 , XXXXXXX , XXXXXXX, TD(CTL_OSL1), KC_LGUI , TD(ALT_OSL1), TD(TD_LayerDn) , KC_L2 , TD(TD_SPC_ENT) , KC_SPACE , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT, TD(TD_ESC_GRAVE) ) diff --git a/keyboards/handwired/petruziamini/keymaps/default/keymap.c b/keyboards/handwired/petruziamini/keymaps/default/keymap.c index 5265bb218e..5a49827379 100644 --- a/keyboards/handwired/petruziamini/keymaps/default/keymap.c +++ b/keyboards/handwired/petruziamini/keymaps/default/keymap.c @@ -35,8 +35,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [3] = LAYOUT( KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_MUTE, KC_VOLU, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_BTN1, KC_UP, KC_BTN2, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_LEFT, KC_DOWN, KC_RGHT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_WHLU, MS_BTN1, KC_UP, MS_BTN2, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_WHLD, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_NO, KC_NO ), [4] = LAYOUT( diff --git a/keyboards/handwired/pilcrow/keymaps/default/keymap.c b/keyboards/handwired/pilcrow/keymaps/default/keymap.c index 8882fdb3ea..f287754478 100644 --- a/keyboards/handwired/pilcrow/keymaps/default/keymap.c +++ b/keyboards/handwired/pilcrow/keymaps/default/keymap.c @@ -46,9 +46,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [3] = LAYOUT( - QK_BOOT, KC_UP, _______, _______, _______, _______, _______, KC_WH_D, KC_MS_U, KC_WH_U, - KC_LEFT, KC_DOWN, KC_RGHT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_MS_L, KC_MS_D, KC_MS_R, + QK_BOOT, KC_UP, _______, _______, _______, _______, _______, MS_WHLD, MS_UP, MS_WHLU, + KC_LEFT, KC_DOWN, KC_RGHT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, _______, _______ + _______, _______, _______, _______, MS_BTN1, MS_BTN2, _______, _______, _______, _______ ) }; diff --git a/keyboards/handwired/pterodactyl/keymaps/default/keymap.c b/keyboards/handwired/pterodactyl/keymaps/default/keymap.c index c53f6841ce..a8204aa1bf 100644 --- a/keyboards/handwired/pterodactyl/keymaps/default/keymap.c +++ b/keyboards/handwired/pterodactyl/keymaps/default/keymap.c @@ -101,10 +101,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // MEDIA AND MOUSE [_MDIA] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN1, MS_BTN2, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WBAK diff --git a/keyboards/handwired/riblee_f401/keymaps/default/keymap.c b/keyboards/handwired/riblee_f401/keymaps/default/keymap.c index 7c8bd5b8b4..bdb3180152 100644 --- a/keyboards/handwired/riblee_f401/keymaps/default/keymap.c +++ b/keyboards/handwired/riblee_f401/keymaps/default/keymap.c @@ -120,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, - _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R + _______, _______, _______, _______, _______, MS_BTN1, MS_BTN2, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT ), /* Raise diff --git a/keyboards/handwired/riblee_f411/keymaps/default/keymap.c b/keyboards/handwired/riblee_f411/keymaps/default/keymap.c index 15c706089d..98268da221 100644 --- a/keyboards/handwired/riblee_f411/keymaps/default/keymap.c +++ b/keyboards/handwired/riblee_f411/keymaps/default/keymap.c @@ -120,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, - _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R + _______, _______, _______, _______, _______, MS_BTN1, MS_BTN2, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT ), /* Raise diff --git a/keyboards/handwired/scottokeebs/scottomouse/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scottomouse/keymaps/default/keymap.c index 6cc4d90144..967526afa6 100644 --- a/keyboards/handwired/scottokeebs/scottomouse/keymaps/default/keymap.c +++ b/keyboards/handwired/scottokeebs/scottomouse/keymaps/default/keymap.c @@ -19,6 +19,6 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( - KC_MS_BTN1, KC_MS_BTN2, KC_MS_LEFT, KC_MS_UP, KC_MS_DOWN, KC_MS_RIGHT + MS_BTN1, MS_BTN2, MS_LEFT, MS_UP, MS_DOWN, MS_RGHT ) }; \ No newline at end of file diff --git a/keyboards/handwired/sick68/keymaps/default/keymap.c b/keyboards/handwired/sick68/keymaps/default/keymap.c index 121fc3956e..faa2a67d46 100644 --- a/keyboards/handwired/sick68/keymaps/default/keymap.c +++ b/keyboards/handwired/sick68/keymaps/default/keymap.c @@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, 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_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, - _______, _______, _______, BL_DOWN, BL_TOGG, BL_UP, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_BTN1, KC_MS_U, KC_BTN2, - _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R + _______, _______, _______, BL_DOWN, BL_TOGG, BL_UP, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, MS_BTN1, MS_UP, MS_BTN2, + _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT ), }; diff --git a/keyboards/handwired/snatchpad/keymaps/default/keymap.c b/keyboards/handwired/snatchpad/keymaps/default/keymap.c index db8305129d..923b0d29f1 100644 --- a/keyboards/handwired/snatchpad/keymaps/default/keymap.c +++ b/keyboards/handwired/snatchpad/keymaps/default/keymap.c @@ -12,7 +12,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT( QK_LOCK, KC_UP , _______, KC_LEFT, KC_DOWN, KC_RGHT, - KC_BTN1, KC_BTN2 + MS_BTN1, MS_BTN2 ), [2] = LAYOUT( _______, _______, _______, diff --git a/keyboards/handwired/snatchpad/snatchpad.c b/keyboards/handwired/snatchpad/snatchpad.c index 89d32c036b..cedc0357a5 100644 --- a/keyboards/handwired/snatchpad/snatchpad.c +++ b/keyboards/handwired/snatchpad/snatchpad.c @@ -29,9 +29,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { break; default: if (clockwise) { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } else { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } break; } @@ -54,9 +54,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { break; default: if (clockwise) { - tap_code(KC_MS_D); + tap_code(MS_DOWN); } else { - tap_code(KC_MS_U); + tap_code(MS_UP); } break; } diff --git a/keyboards/handwired/sono1/keymaps/default/keymap.c b/keyboards/handwired/sono1/keymaps/default/keymap.c index cd9f9bcdb6..e12a1c44d0 100644 --- a/keyboards/handwired/sono1/keymaps/default/keymap.c +++ b/keyboards/handwired/sono1/keymaps/default/keymap.c @@ -100,8 +100,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_MUS] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, MS_WHLU, MS_BTN1, MS_UP, MS_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, MS_WHLD, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ diff --git a/keyboards/handwired/space_oddity/keymaps/default/keymap.c b/keyboards/handwired/space_oddity/keymaps/default/keymap.c index 4222307889..d41eb871e4 100644 --- a/keyboards/handwired/space_oddity/keymaps/default/keymap.c +++ b/keyboards/handwired/space_oddity/keymaps/default/keymap.c @@ -135,8 +135,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [2] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, KC_MS_U, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, + _______, _______, _______, MS_UP, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, MS_BTN1, MS_BTN3, MS_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TG(2) diff --git a/keyboards/handwired/t111/keymaps/oleg/keymap.c b/keyboards/handwired/t111/keymaps/oleg/keymap.c index b372de027b..2a75376ff2 100644 --- a/keyboards/handwired/t111/keymaps/oleg/keymap.c +++ b/keyboards/handwired/t111/keymaps/oleg/keymap.c @@ -118,9 +118,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT( VRSN, KC_SLEP, _______, UC_NEXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UM(UAT), UM(UHSH), UM(UDLR), UM(USCT), UM(UCFX), UM(UAMP), UM(UAST), _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, - _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, _______, _______, _______, KC_SYRQ, KC_SCRL, KC_PAUS, UP(ULSB, ULCB), UP(URSB, URCB), _______, _______, _______, _______, _______, _______, _______, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5, _______, _______, _______, _______, _______, UP(USCO, UCLN), UP(UAPO, UQOT), _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, KC_BTN4, _______, _______, _______, _______, UP(UCOM, ULTH), UP(UDOT, UGTH), UP(USLS, UQUE), KC_APP, _______, _______, _______, _______, _______, _______, _______, + _______, MS_BTN1, MS_UP, MS_BTN2, MS_BTN3, _______, _______, _______, KC_SYRQ, KC_SCRL, KC_PAUS, UP(ULSB, ULCB), UP(URSB, URCB), _______, _______, _______, _______, _______, _______, _______, + _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_BTN5, _______, _______, _______, _______, _______, UP(USCO, UCLN), UP(UAPO, UQOT), _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, MS_BTN4, _______, _______, _______, _______, UP(UCOM, ULTH), UP(UDOT, UGTH), UP(USLS, UQUE), KC_APP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; diff --git a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c index 8659b49544..90fdf8796d 100644 --- a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c +++ b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c @@ -175,10 +175,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_MOUSE] = LAYOUT( - KC_ESC, KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN4, KC_BTN5, XXXXXXX, XXXXXXX, - KC_BSPC, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, + KC_ESC, MS_WHLU, MS_WHLL, MS_UP, MS_WHLR, XXXXXXX, XXXXXXX, MS_BTN3, MS_BTN4, MS_BTN5, XXXXXXX, XXXXXXX, + KC_BSPC, MS_WHLD, MS_LEFT, MS_DOWN, MS_RGHT, XXXXXXX, XXXXXXX, MS_BTN1, MS_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, SC_RSPC, - _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_ACL2, KC_ACL0, XXXXXXX, MO(6), XXXXXXX, KC_RCTL + _______, XXXXXXX, XXXXXXX, XXXXXXX, MS_ACL2, MS_ACL0, XXXXXXX, MO(6), XXXXXXX, KC_RCTL ), /* Adjust (Lower + Raise) diff --git a/keyboards/handwired/tkk/keymaps/default/keymap.c b/keyboards/handwired/tkk/keymaps/default/keymap.c index 220daab627..94c1c771fe 100644 --- a/keyboards/handwired/tkk/keymaps/default/keymap.c +++ b/keyboards/handwired/tkk/keymaps/default/keymap.c @@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_PGDN, KC_PGUP, KC_HOME, KC_END, KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0 ), [11] = LAYOUT( - KC_WH_D, KC_WH_U, KC_WH_L, KC_WH_R, KC_BTN2, KC_BTN1, KC_MS_L, KC_MS_R, KC_MS_U, KC_MS_D + MS_WHLD, MS_WHLU, MS_WHLL, MS_WHLR, MS_BTN2, MS_BTN1, MS_LEFT, MS_RGHT, MS_UP, MS_DOWN ) }; diff --git a/keyboards/handwired/trackpoint/keymaps/default/keymap.c b/keyboards/handwired/trackpoint/keymaps/default/keymap.c index 1792cb4271..f23c9b7608 100644 --- a/keyboards/handwired/trackpoint/keymaps/default/keymap.c +++ b/keyboards/handwired/trackpoint/keymaps/default/keymap.c @@ -2,6 +2,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( - KC_BTN1, KC_BTN3, KC_BTN2 + MS_BTN1, MS_BTN3, MS_BTN2 ) }; diff --git a/keyboards/handwired/traveller/keymaps/default/keymap.c b/keyboards/handwired/traveller/keymaps/default/keymap.c index 86ffee985d..fe571c4a53 100644 --- a/keyboards/handwired/traveller/keymaps/default/keymap.c +++ b/keyboards/handwired/traveller/keymaps/default/keymap.c @@ -90,10 +90,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-------------------------------------------------------------------------------------------------' */ [_NAV] = LAYOUT( - TG(_NAV), XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, RGUI(KC_RGHT), KC_WH_U, M_MUL, KC_MS_U, M_MUR, XXXXXXX, KC_ACL2, - _______, RGUI(KC_LEFT), KC_LEFT, KC_DOWN, KC_RGHT, LCTL(KC_E), KC_BTN3, KC_MS_L, KC_MS_U, KC_MS_R, XXXXXXX, KC_ACL1, - _______, LCTL(KC_A), LGUI(KC_X), RGUI(KC_C), RGUI(KC_V), XXXXXXX, KC_WH_D, M_MDL, KC_MS_D, M_MDR, KC_UP, KC_ACL0, - _______, RGUI(KC_Z), _______, _______, _______, _______, KC_ENT, KC_BTN2, KC_BTN1, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT + TG(_NAV), XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, RGUI(KC_RGHT), MS_WHLU, M_MUL, MS_UP, M_MUR, XXXXXXX, MS_ACL2, + _______, RGUI(KC_LEFT), KC_LEFT, KC_DOWN, KC_RGHT, LCTL(KC_E), MS_BTN3, MS_LEFT, MS_UP, MS_RGHT, XXXXXXX, MS_ACL1, + _______, LCTL(KC_A), LGUI(KC_X), RGUI(KC_C), RGUI(KC_V), XXXXXXX, MS_WHLD, M_MDL, MS_DOWN, M_MDR, KC_UP, MS_ACL0, + _______, RGUI(KC_Z), _______, _______, _______, _______, KC_ENT, MS_BTN2, MS_BTN1, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT ), /* FKEYS - Funtion keys & mac stuff @@ -138,41 +138,41 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // from algernon's ErgoDox EZ layout, case M_MUL: if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_LEFT); + mousekey_on(MS_UP); + mousekey_on(MS_LEFT); } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_LEFT); + mousekey_off(MS_UP); + mousekey_off(MS_LEFT); } mousekey_send(); return false; case M_MUR: if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_RIGHT); + mousekey_on(MS_UP); + mousekey_on(MS_RGHT); } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_RIGHT); + mousekey_off(MS_UP); + mousekey_off(MS_RGHT); } mousekey_send(); return false; case M_MDL: if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_LEFT); + mousekey_on(MS_DOWN); + mousekey_on(MS_LEFT); } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_LEFT); + mousekey_off(MS_DOWN); + mousekey_off(MS_LEFT); } mousekey_send(); return false; case M_MDR: if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_RIGHT); + mousekey_on(MS_DOWN); + mousekey_on(MS_RGHT); } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_RIGHT); + mousekey_off(MS_DOWN); + mousekey_off(MS_RGHT); } mousekey_send(); return false; diff --git a/keyboards/handwired/tsubasa/keymaps/default/keymap.c b/keyboards/handwired/tsubasa/keymaps/default/keymap.c index 96b66d2a3f..6d641a2b52 100644 --- a/keyboards/handwired/tsubasa/keymaps/default/keymap.c +++ b/keyboards/handwired/tsubasa/keymaps/default/keymap.c @@ -32,8 +32,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_FN] = 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, - _______, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, UG_TOGG, KC_PGUP, XXXXXXX, KC_UP, XXXXXXX, KC_PSCR, XXXXXXX, XXXXXXX, - _______, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, UG_NEXT, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, + _______, XXXXXXX, MS_BTN1, MS_UP, MS_BTN2, UG_TOGG, KC_PGUP, XXXXXXX, KC_UP, XXXXXXX, KC_PSCR, XXXXXXX, XXXXXXX, + _______, XXXXXXX, MS_LEFT, MS_DOWN, MS_RGHT, UG_NEXT, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, UG_VALU, UG_HUEU, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______ ) @@ -42,8 +42,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }, - [_FN] = { ENCODER_CCW_CW( KC_VOLU, KC_VOLD)} + [_BASE] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) }, + [_FN] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD)} }; #endif diff --git a/keyboards/handwired/twadlee/tp69/keymaps/default/keymap.c b/keyboards/handwired/twadlee/tp69/keymaps/default/keymap.c index f250c3fc62..63bd0697fa 100644 --- a/keyboards/handwired/twadlee/tp69/keymaps/default/keymap.c +++ b/keyboards/handwired/twadlee/tp69/keymaps/default/keymap.c @@ -23,6 +23,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LALT, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, 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_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN2, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, MS_BTN1, MS_BTN3, MS_BTN2, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL ) }; diff --git a/keyboards/handwired/twig/twig50/keymaps/default/keymap.c b/keyboards/handwired/twig/twig50/keymaps/default/keymap.c index 954c8e5637..25af2b6caa 100644 --- a/keyboards/handwired/twig/twig50/keymaps/default/keymap.c +++ b/keyboards/handwired/twig/twig50/keymaps/default/keymap.c @@ -42,12 +42,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, KC_LCTL, KC_A, KC_S, KC_D, LT2_F, KC_G, KC_H, KC_J, KC_K, KC_L, RSF_SCL, LT3_QOT, KC_ENT, KC_LSFT, TG4, KC_Z, KC_X, KC_C, LT3_V, KC_B, LT2_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_BTN1, KC_BTN2, KC_LALT, LGU_NCV, LT1_SPC, RCT_ESC, RGU_ENT, RAL_CNV, KC_INT1, KC_DEL, MU_TOGG + MS_BTN1, MS_BTN2, KC_LALT, LGU_NCV, LT1_SPC, RCT_ESC, RGU_ENT, RAL_CNV, KC_INT1, KC_DEL, MU_TOGG ), // Layer 1, Space-modifiers: Basic keys LAYOUT_diag_4x14( - QK_BOOT, KC_EXEC, KC_HELP, KC_MENU, KC_SLCT, KC_STOP, KC_BTN2, KC_INT1, KC_MINS, KC_EQL, KC_INT3, SFT_LBR, KC_TRNS, + QK_BOOT, KC_EXEC, KC_HELP, KC_MENU, KC_SLCT, KC_STOP, MS_BTN2, KC_INT1, KC_MINS, KC_EQL, KC_INT3, SFT_LBR, KC_TRNS, KC_TRNS, KC_AGIN, KC_FIND, KC_PGUP, KC_PGDN, KC_F19, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_ENT, SFT_7, SFT_2, KC_TRNS, KC_TRNS, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, KC_APP, KC_BSPC, KC_DEL, KC_RBRC, KC_BSLS, KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RCT_IN7, RGU_IN8, KC_TRNS, KC_INT2, KC_INT4, MU_NEXT @@ -64,9 +64,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Layer 3, V,:-modifiers: Functions and mouse keys LAYOUT_diag_4x14( KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, - KC_MPLY, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN3, KC_TRNS, KC_TRNS, + KC_MPLY, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_BTN1, KC_WH_D, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN2, MS_BTN1, MS_WHLD, MS_WHLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), // Layer 4, Toggles: One handed mode diff --git a/keyboards/handwired/videowriter/keymaps/default/keymap.c b/keyboards/handwired/videowriter/keymaps/default/keymap.c index d1c9e26655..09cc4f6bac 100644 --- a/keyboards/handwired/videowriter/keymaps/default/keymap.c +++ b/keyboards/handwired/videowriter/keymaps/default/keymap.c @@ -65,8 +65,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FN1] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, - _______, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, - _______, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, + _______, MS_WHLU, MS_BTN1, MS_UP, MS_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, + _______, MS_WHLD, MS_LEFT, MS_DOWN, MS_RGHT, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) diff --git a/keyboards/handwired/videowriter/keymaps/oleg/keymap.c b/keyboards/handwired/videowriter/keymaps/oleg/keymap.c index e9adc11ad7..b30ac967ea 100644 --- a/keyboards/handwired/videowriter/keymaps/oleg/keymap.c +++ b/keyboards/handwired/videowriter/keymaps/oleg/keymap.c @@ -70,8 +70,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FN1] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, KC_PAUS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, 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_BTN1, KC_MS_U, KC_BTN2, KC_WH_U ,_______, _______, _______, KC_UP, _______, _______, _______, _______, KC_RCTL, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, + _______, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU ,_______, _______, _______, KC_UP, _______, _______, _______, _______, KC_RCTL, + _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) diff --git a/keyboards/handwired/wulkan/keymaps/default/keymap.c b/keyboards/handwired/wulkan/keymaps/default/keymap.c index e38c0322c9..a065a94acf 100644 --- a/keyboards/handwired/wulkan/keymaps/default/keymap.c +++ b/keyboards/handwired/wulkan/keymaps/default/keymap.c @@ -95,9 +95,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_ADJUST] = LAYOUT_ortho_4x12( - _______, QK_BOOT, _______, _______, KC_WH_U, _______, _______, KC_MS_U, _______, _______, UP(SE_ARNG_LOW, SE_ARNG_HIGH), KC_DEL, - _______, _______, _______, _______, KC_WH_D, _______, KC_MS_L, KC_MS_D, KC_MS_R, UP(SE_ODIA_LOW, SE_ODIA_HIGH), UP(SE_ADIA_LOW, SE_ADIA_HIGH), _______, - _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, KC_BTN1, _______, KC_BTN2, _______, _______, _______, + _______, QK_BOOT, _______, _______, MS_WHLU, _______, _______, MS_UP, _______, _______, UP(SE_ARNG_LOW, SE_ARNG_HIGH), KC_DEL, + _______, _______, _______, _______, MS_WHLD, _______, MS_LEFT, MS_DOWN, MS_RGHT, UP(SE_ODIA_LOW, SE_ODIA_HIGH), UP(SE_ADIA_LOW, SE_ADIA_HIGH), _______, + _______, MS_ACL0, MS_ACL1, MS_ACL2, _______, _______, MS_BTN1, _______, MS_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; diff --git a/keyboards/helix/rev3_5rows/keymaps/default/keymap.c b/keyboards/helix/rev3_5rows/keymaps/default/keymap.c index 0537235c4e..342ee77e99 100644 --- a/keyboards/helix/rev3_5rows/keymaps/default/keymap.c +++ b/keyboards/helix/rev3_5rows/keymaps/default/keymap.c @@ -123,9 +123,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_LOWER] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_HOME, KC_END) }, - [_RAISE] = { ENCODER_CCW_CW(UG_VALD, UG_VALU), ENCODER_CCW_CW(UG_SPDD, UG_SPDU) }, + [_QWERTY] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_LOWER] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_HOME, KC_END) }, + [_RAISE] = { ENCODER_CCW_CW(UG_VALD, UG_VALU), ENCODER_CCW_CW(UG_SPDD, UG_SPDU) }, [_ADJUST] = { ENCODER_CCW_CW(UG_PREV, UG_NEXT), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) }, }; #endif diff --git a/keyboards/hhkb/yang/keymaps/kanru/keymap.c b/keyboards/hhkb/yang/keymaps/kanru/keymap.c index ea020de126..85aad22962 100644 --- a/keyboards/hhkb/yang/keymaps/kanru/keymap.c +++ b/keyboards/hhkb/yang/keymaps/kanru/keymap.c @@ -118,9 +118,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MOUSE] = LAYOUT_60_hhkb( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_BTN1, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_BTN2, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MS_BTN1, MS_WHLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MS_BTN2, MS_WHLD, KC_TRNS, KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) }; // clang-format on diff --git a/keyboards/hnahkb/vn66/keymaps/default/keymap.c b/keyboards/hnahkb/vn66/keymaps/default/keymap.c index 3af2332c19..f50050bdc5 100644 --- a/keyboards/hnahkb/vn66/keymaps/default/keymap.c +++ b/keyboards/hnahkb/vn66/keymaps/default/keymap.c @@ -43,13 +43,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise == 0) { #ifdef MOUSEKEY_ENABLE - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); #else tap_code(KC_VOLD); #endif } else { #ifdef MOUSEKEY_ENABLE - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); #else tap_code(KC_VOLU); #endif diff --git a/keyboards/horrortroll/nyx/rev1/keymaps/default/keymap.c b/keyboards/horrortroll/nyx/rev1/keymaps/default/keymap.c index a723f77452..920584caf6 100644 --- a/keyboards/horrortroll/nyx/rev1/keymaps/default/keymap.c +++ b/keyboards/horrortroll/nyx/rev1/keymaps/default/keymap.c @@ -77,8 +77,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */ [_FN] = 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, _______, RM_TOGG, - QK_BOOT, _______, KC_MS_U, _______, _______, _______, _______, _______, _______, RM_SATD, RM_SATU, RM_SPDD, RM_SPDU, _______, RM_NEXT, - _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, MS_UP, _______, _______, _______, _______, _______, _______, RM_SATD, RM_SATU, RM_SPDD, RM_SPDU, _______, RM_NEXT, + _______, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, NK_TOGG, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, RM_VALU, _______, _______, _______, _______, _______, _______, _______, RM_HUED, RM_VALD, RM_HUEU ) diff --git a/keyboards/hotdox/keymaps/default/keymap.c b/keyboards/hotdox/keymaps/default/keymap.c index 436997ead7..7de954e9ed 100644 --- a/keyboards/hotdox/keymaps/default/keymap.c +++ b/keyboards/hotdox/keymaps/default/keymap.c @@ -119,10 +119,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // MEDIA AND MOUSE [MDIA] = LAYOUT_ergodox( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN1, MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/ibm/model_m/mschwingen/keymaps/default/keymap.c b/keyboards/ibm/model_m/mschwingen/keymaps/default/keymap.c index 8e28b4e449..66db19400f 100644 --- a/keyboards/ibm/model_m/mschwingen/keymaps/default/keymap.c +++ b/keyboards/ibm/model_m/mschwingen/keymaps/default/keymap.c @@ -63,11 +63,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_MS] = LAYOUT( /* mouse key layer */ // Cursor: mouse, INS/HOME/PgUp: Mouse Accel, Del, End, PageDn: mouse buttons TG(_MS), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_ACL0, MS_ACL1, MS_ACL2, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_BTN1, MS_BTN3, MS_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, _______, - _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_UP, _______, _______, _______, _______, + _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______ ) }; diff --git a/keyboards/idank/spankbd/keymaps/default/keymap.json b/keyboards/idank/spankbd/keymaps/default/keymap.json index 10bb42e108..a07be80076 100644 --- a/keyboards/idank/spankbd/keymaps/default/keymap.json +++ b/keyboards/idank/spankbd/keymaps/default/keymap.json @@ -59,7 +59,7 @@ "KC_DLR", "KC_LPRN", "KC_RPRN", - "KC_BTN2", + "MS_BTN2", "KC_PPLS", "KC_MINS", "KC_SLSH", @@ -69,7 +69,7 @@ "KC_CIRC", "KC_LBRC", "KC_RBRC", - "KC_BTN1", + "MS_BTN1", "KC_AMPR", "KC_EQL", "KC_COMM", @@ -108,10 +108,10 @@ "KC_F8", "KC_F9", "KC_F10", - "KC_MS_L", - "KC_MS_D", - "KC_MS_U", - "KC_MS_R", + "MS_LEFT", + "MS_DOWN", + "MS_UP", + "MS_RGHT", "KC_VOLD", "KC_F11", "KC_F12", diff --git a/keyboards/idank/sweeq/keymaps/default/keymap.json b/keyboards/idank/sweeq/keymaps/default/keymap.json index efd87277c7..d869668fdc 100644 --- a/keyboards/idank/sweeq/keymaps/default/keymap.json +++ b/keyboards/idank/sweeq/keymaps/default/keymap.json @@ -19,13 +19,13 @@ "LT(7,KC_SPC)", "KC_P1" ], ["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", - "KC_TRNS" , "KC_BTN1" , "KC_WH_U" , "KC_BTN2" , "KC_TRNS", + "KC_TRNS" , "MS_BTN1" , "MS_WHLU" , "MS_BTN2" , "KC_TRNS", - "KC_TRNS" , "KC_BTN2" , "KC_NO" , "KC_BTN1" , "KC_TRNS", - "KC_TRNS" , "KC_MS_L" , "KC_MS_D" , "KC_MS_U" , "KC_MS_R", + "KC_TRNS" , "MS_BTN2" , "KC_NO" , "MS_BTN1" , "KC_TRNS", + "KC_TRNS" , "MS_LEFT" , "MS_DOWN" , "MS_UP" , "MS_RGHT", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", - "KC_TRNS" , "KC_WH_L" , "KC_WH_D" , "KC_WH_R" , "KC_TRNS", + "KC_TRNS" , "MS_WHLL" , "MS_WHLD" , "MS_WHLR" , "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS" , "KC_TRNS" diff --git a/keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c index 2f337f9e89..f6def2c8e8 100644 --- a/keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c +++ b/keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c @@ -123,10 +123,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // MEDIA AND MOUSE [MDIA] = LAYOUT_ergodox( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN1, MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/input_club/ergodox_infinity/keymaps/halfkeyboard/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/halfkeyboard/keymap.c index 550eea0d31..69f831c2f2 100644 --- a/keyboards/input_club/ergodox_infinity/keymaps/halfkeyboard/keymap.c +++ b/keyboards/input_club/ergodox_infinity/keymaps/halfkeyboard/keymap.c @@ -48,21 +48,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [QWERTY] = LAYOUT_ergodox( // layer 0 : default // left hand - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_BTN2, + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, MS_BTN2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_EQL, KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MINUS, KC_LCTL, KC_LALT, LCTL(LSFT(KC_TAB)),LCTL(KC_TAB), MO(SHORTCUTS), - KC_LGUI, KC_BTN1, + KC_LGUI, MS_BTN1, MU_ON, KC_SPACE,KC_DEL,KC_END, // right hand - KC_BTN2, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + MS_BTN2, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SLASH, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_EQL,KC_N, KC_M, KC_COMM,KC_DOT, KC_SLASH, KC_RSFT, MO(SHORTCUTS), KC_UP,KC_DOWN,KC_RALT, KC_RCTL, - KC_BTN1, KC_RGUI, + MS_BTN1, KC_RGUI, MU_OFF, KC_PGDN,KC_TAB, LT(HALFQWERTY, KC_ENT) ), diff --git a/keyboards/input_club/infinity60/keymaps/hasu/keymap.c b/keyboards/input_club/infinity60/keymaps/hasu/keymap.c index 4200eaf1c2..7837a0cd5d 100644 --- a/keyboards/input_club/infinity60/keymaps/hasu/keymap.c +++ b/keyboards/input_club/infinity60/keymaps/hasu/keymap.c @@ -80,10 +80,10 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [3] = LAYOUT_60_ansi_split_bs_rshift( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, - LALT(KC_TAB), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L,KC_WH_D,KC_MS_U, KC_WH_U, KC_WH_R, ALT_T(KC_LEFT), ALT_T(KC_RGHT),LALT(KC_TAB), - KC_LCTL, KC_ACL0,KC_ACL1,KC_ACL2,KC_ACL2,KC_NO, KC_NO, KC_MS_L,KC_MS_D, KC_MS_R, LT(3, KC_SCLN), KC_NO, KC_ENT, - KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN3,KC_BTN2,KC_BTN1,ALT_T(KC_LEFT), ALT_T(KC_RGHT), KC_NO, KC_RSFT, KC_TRNS, - KC_TRNS, KC_LGUI,KC_LALT, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + LALT(KC_TAB), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_WHLL,MS_WHLD,MS_UP, MS_WHLU, MS_WHLR, ALT_T(KC_LEFT), ALT_T(KC_RGHT),LALT(KC_TAB), + KC_LCTL, MS_ACL0,MS_ACL1,MS_ACL2,MS_ACL2,KC_NO, KC_NO, MS_LEFT,MS_DOWN, MS_RGHT, LT(3, KC_SCLN), KC_NO, KC_ENT, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, MS_BTN3,MS_BTN2,MS_BTN1,ALT_T(KC_LEFT), ALT_T(KC_RGHT), KC_NO, KC_RSFT, KC_TRNS, + KC_TRNS, KC_LGUI,KC_LALT, MS_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), /* Layer 4: Mouse mode(IJKL)[Space] @@ -102,9 +102,9 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [4] = LAYOUT_60_ansi_split_bs_rshift( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, - LALT(KC_TAB), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L, KC_WH_D, KC_MS_U, KC_WH_U, KC_WH_R, KC_BTN4, KC_BTN5, LALT(KC_TAB), - KC_LCTL, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, KC_NO, KC_ENT, - KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN3, KC_BTN2, KC_BTN1, ALT_T(KC_LEFT), ALT_T(KC_RGHT), KC_NO, KC_RSFT, KC_NO, + LALT(KC_TAB), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_WHLL, MS_WHLD, MS_UP, MS_WHLU, MS_WHLR, MS_BTN4, MS_BTN5, LALT(KC_TAB), + KC_LCTL, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, KC_NO, MS_LEFT, MS_DOWN, MS_RGHT, MS_BTN1, KC_NO, KC_ENT, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, MS_BTN3, MS_BTN2, MS_BTN1, ALT_T(KC_LEFT), ALT_T(KC_RGHT), KC_NO, KC_RSFT, KC_NO, KC_NO, KC_LGUI, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; diff --git a/keyboards/ivndbt/neopad/rev1/keymaps/default/keymap.c b/keyboards/ivndbt/neopad/rev1/keymaps/default/keymap.c index 721c21ef3c..17c9d9db9b 100755 --- a/keyboards/ivndbt/neopad/rev1/keymaps/default/keymap.c +++ b/keyboards/ivndbt/neopad/rev1/keymaps/default/keymap.c @@ -104,9 +104,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { case 3: // layer 3 - pan right (CW) and left (CCW) if (clockwise) { - tap_code(KC_WH_R); + tap_code(MS_WHLR); } else { - tap_code(KC_WH_L); + tap_code(MS_WHLL); } break; } @@ -134,18 +134,18 @@ bool encoder_update_user(uint8_t index, bool clockwise) { case 2: // layer 2 - wheel up (CW) and down (CCW) if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } break; case 3: // layer 3 - wheel up (CW) and down (CCW) if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } break; } diff --git a/keyboards/jacky_studio/piggy60/keymaps/default/keymap.c b/keyboards/jacky_studio/piggy60/keymaps/default/keymap.c index 2330caf6ff..95a9e1e555 100644 --- a/keyboards/jacky_studio/piggy60/keymaps/default/keymap.c +++ b/keyboards/jacky_studio/piggy60/keymaps/default/keymap.c @@ -32,8 +32,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [1] = LAYOUT_60_ansi_tsangan_split_bs_rshift( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_PSCR, - KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_PGUP, KC_HOME, KC_TRNS, KC_VOLU, KC_BRIU, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_DEL, - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_TRNS, KC_VOLD, KC_BRID, KC_TRNS, KC_WH_D, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_PGUP, KC_HOME, KC_TRNS, KC_VOLU, KC_BRIU, KC_TRNS, MS_WHLU, KC_TRNS, KC_TRNS, KC_DEL, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_TRNS, KC_VOLD, KC_BRID, KC_TRNS, MS_WHLD, KC_TRNS, KC_TRNS, RM_TOGG, RM_NEXT, RM_HUEU, RM_SATU, RM_VALU, RM_SPDU, KC_TRNS, KC_MUTE, 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/junco/keymaps/default/keymap.c b/keyboards/junco/keymaps/default/keymap.c index 8fe73e035a..f1726791e3 100644 --- a/keyboards/junco/keymaps/default/keymap.c +++ b/keyboards/junco/keymaps/default/keymap.c @@ -146,7 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { // Base layer encoder mappings: // index 0: mouse wheel up (CCW)/down (CW) index 1: volume down/up index 2: mouse wheel up/down index 3: mouse wheel left/right - [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_WH_L, KC_WH_R) }, + [_QWERTY] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(MS_WHLL, MS_WHLR) }, [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, // Passes through to base layers diff --git a/keyboards/kapcave/paladin64/keymaps/default/keymap.c b/keyboards/kapcave/paladin64/keymaps/default/keymap.c index f4f1873919..e69ef22288 100644 --- a/keyboards/kapcave/paladin64/keymaps/default/keymap.c +++ b/keyboards/kapcave/paladin64/keymaps/default/keymap.c @@ -53,9 +53,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* AutoMouse */ LAYOUT_all( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN1, MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) }; diff --git a/keyboards/kbdclack/kaishi65/keymaps/default/keymap.c b/keyboards/kbdclack/kaishi65/keymaps/default/keymap.c index 46d68182f4..e1674d43ff 100644 --- a/keyboards/kbdclack/kaishi65/keymaps/default/keymap.c +++ b/keyboards/kbdclack/kaishi65/keymaps/default/keymap.c @@ -32,8 +32,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FN] = LAYOUT_65_ansi( _______, 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_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, - _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, + _______, MS_BTN1, MS_UP, MS_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, + _______, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, KC_VOLU, KC_END, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT) }; diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/iso/keymap.c b/keyboards/kbdfans/kbd67/rev2/keymaps/iso/keymap.c index d4a3cad12f..f34c94523f 100644 --- a/keyboards/kbdfans/kbd67/rev2/keymaps/iso/keymap.c +++ b/keyboards/kbdfans/kbd67/rev2/keymaps/iso/keymap.c @@ -54,8 +54,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_PSCR, KC_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, BL_UP, BL_DOWN, BL_TOGG, KC_INS, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, KC_HOME, - _______, UG_TOGG, UG_NEXT, UG_HUEU, UG_HUED, UG_SATU, UG_SATD, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_END, - _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R + _______, UG_TOGG, UG_NEXT, UG_HUEU, UG_HUED, UG_SATU, UG_SATD, _______, _______, _______, _______, _______, MS_BTN1, MS_UP, KC_END, + _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT ), }; diff --git a/keyboards/keyboardio/model01/keymaps/default/keymap.c b/keyboards/keyboardio/model01/keymaps/default/keymap.c index 756cffcf23..9540d76513 100644 --- a/keyboards/keyboardio/model01/keymaps/default/keymap.c +++ b/keyboards/keyboardio/model01/keymaps/default/keymap.c @@ -48,9 +48,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [FUN] = LAYOUT( _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , - KC_TAB , _______, KC_MS_U, _______, KC_BTN3, _______, RM_TOGG, KC_MPRV, KC_MNXT, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_F12 , - KC_HOME, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, _______, _______, KC_MPLY, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, - KC_END , KC_PSCR, KC_INS , _______, KC_BTN2, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_BSLS, KC_PIPE, + KC_TAB , _______, MS_UP, _______, MS_BTN3, _______, RM_TOGG, KC_MPRV, KC_MNXT, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_F12 , + KC_HOME, MS_LEFT, MS_DOWN, MS_RGHT, MS_BTN1, _______, _______, KC_MPLY, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, + KC_END , KC_PSCR, KC_INS , _______, MS_BTN2, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_BSLS, KC_PIPE, _______, _______, KC_DEL , KC_ENT , _______, _______, diff --git a/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c b/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c index 944f822fb3..3b28233ab7 100644 --- a/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c +++ b/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c @@ -51,8 +51,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Navigation layer */ [_NAVIGATION] = LAYOUT_ortho_4x4( - KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX, - KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, + MS_BTN1, MS_UP, MS_BTN2, XXXXXXX, + MS_LEFT, MS_DOWN, MS_RGHT, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX ), @@ -144,7 +144,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_MEDIA] = { ENCODER_CCW_CW(KC_F18, KC_F17), ENCODER_CCW_CW(KC_F20, KC_F19) } #else [_NUMPAD] = { ENCODER_CCW_CW(KC_F18, KC_F17), ENCODER_CCW_CW(KC_F20, KC_F19), ENCODER_CCW_CW(KC_F22, KC_F21), ENCODER_CCW_CW(KC_F24, KC_F23) }, - [_NAVIGATION] = { ENCODER_CCW_CW(C(S(KC_TAB)), C(KC_TAB)), ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_NAVIGATION] = { ENCODER_CCW_CW(C(S(KC_TAB)), C(KC_TAB)), ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, [_MEDIA] = { ENCODER_CCW_CW(KC_F18, KC_F17), ENCODER_CCW_CW(KC_F20, KC_F19), ENCODER_CCW_CW(KC_BRID, KC_BRIU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } #endif }; diff --git a/keyboards/keychron/c2_pro_v2/ansi/rgb/keymaps/default/keymap.c b/keyboards/keychron/c2_pro_v2/ansi/rgb/keymaps/default/keymap.c index 7e09d028f7..4d18d2fc6e 100644 --- a/keyboards/keychron/c2_pro_v2/ansi/rgb/keymaps/default/keymap.c +++ b/keyboards/keychron/c2_pro_v2/ansi/rgb/keymaps/default/keymap.c @@ -29,7 +29,7 @@ enum layers{ // clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MAC_BASE] = LAYOUT_104_ansi( - KC_ESC, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RM_NEXT, + KC_ESC, KC_BRID, KC_BRIU, _______, _______, RM_VALD, RM_VALU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RM_NEXT, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, diff --git a/keyboards/keyhive/ut472/keymaps/default/keymap.c b/keyboards/keyhive/ut472/keymaps/default/keymap.c index c31b2b7d61..37bd3b37b3 100644 --- a/keyboards/keyhive/ut472/keymaps/default/keymap.c +++ b/keyboards/keyhive/ut472/keymaps/default/keymap.c @@ -95,6 +95,6 @@ LAYOUT( /* Tab */ KC_ESC, KC_CALC, KC_WHOM, KC_MAIL, KC_MYCM, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R + _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT ), }; diff --git a/keyboards/kikoslab/kl90/keymaps/default/keymap.c b/keyboards/kikoslab/kl90/keymaps/default/keymap.c index 5cf7c75503..b84022f583 100644 --- a/keyboards/kikoslab/kl90/keymaps/default/keymap.c +++ b/keyboards/kikoslab/kl90/keymaps/default/keymap.c @@ -47,9 +47,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } else { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } } else if (index == 1) { /* Second encoder */ if (clockwise) { diff --git a/keyboards/kin80/keymaps/default/keymap.c b/keyboards/kin80/keymaps/default/keymap.c index 50bad2a974..2e4077e60c 100644 --- a/keyboards/kin80/keymaps/default/keymap.c +++ b/keyboards/kin80/keymaps/default/keymap.c @@ -85,13 +85,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NM] = LAYOUT( KC_F1, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F12, _______, _______, _______, _______, _______, _______, KC_SCRL, KC_NUM, KC_PEQL, KC_PSLS, KC_PAST, _______, - _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, KC_CAPS, KC_P7, KC_P8, KC_P9, KC_PMNS, _______, - _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, + _______, _______, MS_BTN1, MS_UP, MS_BTN2, _______, KC_CAPS, KC_P7, KC_P8, KC_P9, KC_PMNS, _______, + _______, _______, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, _______, _______, _______, _______, _______, KC_PDOT, KC_P1, KC_P2, KC_P3, KC_PENT, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RALT, _______, - KC_WH_U, _______, - _______, _______, KC_WH_D, _______, _______, KC_P0 + MS_WHLU, _______, + _______, _______, MS_WHLD, _______, _______, KC_P0 ) }; diff --git a/keyboards/kinesis/keymaps/dvorak/keymap.c b/keyboards/kinesis/keymaps/dvorak/keymap.c index f8a5b4ed4f..af68841b1c 100644 --- a/keyboards/kinesis/keymaps/dvorak/keymap.c +++ b/keyboards/kinesis/keymaps/dvorak/keymap.c @@ -25,10 +25,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PWR, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLU, KC_MS_U, KC_VOLD, KC_NO, KC_NO, - KC_NO, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLU, MS_UP, KC_VOLD, KC_NO, KC_NO, + KC_NO, MS_BTN4, MS_BTN3, MS_BTN2, MS_BTN1, KC_NO, KC_NO, MS_LEFT, MS_DOWN, MS_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, - KC_NO, KC_NO, KC_MS_D, KC_MS_U, KC_MS_L, KC_MS_R, KC_NO, KC_NO, + KC_NO, KC_NO, MS_DOWN, MS_UP, MS_LEFT, MS_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, diff --git a/keyboards/kingly_keys/ropro/keymaps/default/keymap.c b/keyboards/kingly_keys/ropro/keymaps/default/keymap.c index 3ee0b5646b..9a3c6a0115 100644 --- a/keyboards/kingly_keys/ropro/keymaps/default/keymap.c +++ b/keyboards/kingly_keys/ropro/keymaps/default/keymap.c @@ -77,9 +77,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { if (clockwise) { - tap_code(KC_WH_L); + tap_code(MS_WHLL); } else { - tap_code(KC_WH_R); + tap_code(MS_WHLR); } } return true; diff --git a/keyboards/kingly_keys/soap/keymaps/default/keymap.c b/keyboards/kingly_keys/soap/keymaps/default/keymap.c index d8fa6a963c..309c6686f3 100644 --- a/keyboards/kingly_keys/soap/keymaps/default/keymap.c +++ b/keyboards/kingly_keys/soap/keymaps/default/keymap.c @@ -53,9 +53,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { if (clockwise) { - tap_code(KC_WH_L); + tap_code(MS_WHLL); } else { - tap_code(KC_WH_R); + tap_code(MS_WHLR); } } return true; diff --git a/keyboards/kiserdesigns/madeline/keymaps/default/keymap.c b/keyboards/kiserdesigns/madeline/keymaps/default/keymap.c index 09c9d3a2ff..984fd9e9b9 100644 --- a/keyboards/kiserdesigns/madeline/keymaps/default/keymap.c +++ b/keyboards/kiserdesigns/madeline/keymaps/default/keymap.c @@ -48,6 +48,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [1] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) } + [1] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) } }; #endif diff --git a/keyboards/kradoindustries/kousa/keymaps/default/keymap.c b/keyboards/kradoindustries/kousa/keymaps/default/keymap.c index 68cbcea1e2..0262113397 100644 --- a/keyboards/kradoindustries/kousa/keymaps/default/keymap.c +++ b/keyboards/kradoindustries/kousa/keymaps/default/keymap.c @@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }, + [0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) }, [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, [3] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) } diff --git a/keyboards/kradoindustries/krado66/keymaps/default/keymap.c b/keyboards/kradoindustries/krado66/keymaps/default/keymap.c index 51306a2111..4048c6743c 100644 --- a/keyboards/kradoindustries/krado66/keymaps/default/keymap.c +++ b/keyboards/kradoindustries/krado66/keymaps/default/keymap.c @@ -148,10 +148,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_QWERTYX] = { ENCODER_CCW_CW(C(KC_TAB), C(S(KC_TAB))), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(UG_SATD, UG_SATU) }, + [_QWERTY] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_QWERTYX] = { ENCODER_CCW_CW(C(KC_TAB), C(S(KC_TAB))), ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(UG_SATD, UG_SATU) }, [_FUNCTION] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT), ENCODER_CCW_CW(UG_SPDD, UG_SPDU) }, - [_EXTRA] = { ENCODER_CCW_CW(UG_PREV, UG_NEXT), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) }, + [_EXTRA] = { ENCODER_CCW_CW(UG_PREV, UG_NEXT), ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) }, }; #endif diff --git a/keyboards/kradoindustries/promenade_rp24s/keymaps/default/keymap.c b/keyboards/kradoindustries/promenade_rp24s/keymaps/default/keymap.c index ed36cc85fb..f08f27216a 100644 --- a/keyboards/kradoindustries/promenade_rp24s/keymaps/default/keymap.c +++ b/keyboards/kradoindustries/promenade_rp24s/keymaps/default/keymap.c @@ -93,7 +93,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(UG_NEXT, UG_PREV), ENCODER_CCW_CW(KC_LBRC, KC_RBRC), ENCODER_CCW_CW(C(KC_MINS), C(KC_EQL)), ENCODER_CCW_CW(C(KC_Z), C(S(KC_Z))), ENCODER_CCW_CW(KC_PGUP, KC_PGDN), - ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_UP, KC_DOWN)}, + ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_UP, KC_DOWN)}, [1 ... 3] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), diff --git a/keyboards/kraken_jones/pteron56/keymaps/default/keymap.c b/keyboards/kraken_jones/pteron56/keymaps/default/keymap.c index e9e7e0dd90..0f57f316bd 100644 --- a/keyboards/kraken_jones/pteron56/keymaps/default/keymap.c +++ b/keyboards/kraken_jones/pteron56/keymaps/default/keymap.c @@ -21,8 +21,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT( KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, 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_VOLU, KC_HOME, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_PGUP, KC_UP, KC_PGDN, KC_MENU, KC_RBRC, KC_TRNS, - KC_VOLD, KC_END, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_BSLS, KC_TRNS, + KC_VOLU, KC_HOME, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, KC_PGUP, KC_UP, KC_PGDN, KC_MENU, KC_RBRC, KC_TRNS, + KC_VOLD, KC_END, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_BSLS, KC_TRNS, KC_TRNS, KC_LCTL, KC_LSFT, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), diff --git a/keyboards/ktec/ergodone/keymaps/default/keymap.c b/keyboards/ktec/ergodone/keymaps/default/keymap.c index 87fc621996..1ee2041501 100644 --- a/keyboards/ktec/ergodone/keymaps/default/keymap.c +++ b/keyboards/ktec/ergodone/keymaps/default/keymap.c @@ -119,10 +119,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // MEDIA AND MOUSE [MDIA] = LAYOUT_ergodox( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, KC_TRNS, MS_BTN1, MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/ktec/staryu/keymaps/default/keymap.c b/keyboards/ktec/staryu/keymaps/default/keymap.c index 68c1b85b19..3fa481e86d 100755 --- a/keyboards/ktec/staryu/keymaps/default/keymap.c +++ b/keyboards/ktec/staryu/keymaps/default/keymap.c @@ -52,9 +52,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LAYER3] = LAYOUT( /* ┌─────────┬─────────┬─────────┐ */ - KC_MS_U, TO(_LAYER4), + MS_UP, TO(_LAYER4), /* ├─────────┼─────────┼─────────┤ */ - KC_MS_L, KC_MS_D, KC_MS_R + MS_LEFT, MS_DOWN, MS_RGHT /* └─────────┴─────────┴─────────┘ */ ), diff --git a/keyboards/kv/revt/keymaps/default/keymap.c b/keyboards/kv/revt/keymaps/default/keymap.c index 2b4867add5..56921c9821 100644 --- a/keyboards/kv/revt/keymaps/default/keymap.c +++ b/keyboards/kv/revt/keymaps/default/keymap.c @@ -56,8 +56,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT_default( _______, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_VOLU, -_______, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_U, KC_MS_BTN2, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPRV, KC_VOLD, -_______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, +_______, _______, _______, _______, _______, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPRV, KC_VOLD, +_______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), diff --git a/keyboards/macroflow_original/keymaps/default/keymap.c b/keyboards/macroflow_original/keymaps/default/keymap.c index 76ef39bf5a..22ea8c0ce9 100644 --- a/keyboards/macroflow_original/keymaps/default/keymap.c +++ b/keyboards/macroflow_original/keymaps/default/keymap.c @@ -89,7 +89,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }, + [0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) }, [1] = { ENCODER_CCW_CW(_______, _______) }, [2] = { ENCODER_CCW_CW(_______, _______) }, [3] = { ENCODER_CCW_CW(_______, _______) }, diff --git a/keyboards/makeymakey/keymaps/default/keymap.c b/keyboards/makeymakey/keymaps/default/keymap.c index 1c3e6399fb..0216e2cd14 100644 --- a/keyboards/makeymakey/keymaps/default/keymap.c +++ b/keyboards/makeymakey/keymaps/default/keymap.c @@ -33,9 +33,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( - KC_UP, KC_DOWN, KC_LEFT, KC_RGHT, KC_SPC, KC_BTN1, + KC_UP, KC_DOWN, KC_LEFT, KC_RGHT, KC_SPC, MS_BTN1, KC_W, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_MS_U, KC_MS_D, KC_MS_L, KC_MS_R, KC_BTN1, KC_BTN2 + MS_UP, MS_DOWN, MS_LEFT, MS_RGHT, MS_BTN1, MS_BTN2 ) }; diff --git a/keyboards/maple_computing/minidox/keymaps/bepo/keymap.c b/keyboards/maple_computing/minidox/keymaps/bepo/keymap.c index 699822ffc0..587cd02c35 100644 --- a/keyboards/maple_computing/minidox/keymaps/bepo/keymap.c +++ b/keyboards/maple_computing/minidox/keymaps/bepo/keymap.c @@ -52,8 +52,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `------' `------' */ [_LOWER] = LAYOUT( - ALGR(BP_B), BP_EACU, ALGR(BP_P), ALGR(BP_O), BP_EGRV, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_MS_WH_UP, - ALGR(BP_A), ALGR(BP_U), ALGR(BP_I), ALGR(BP_E), BP_DLR, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_DOWN, + ALGR(BP_B), BP_EACU, ALGR(BP_P), ALGR(BP_O), BP_EGRV, KC_PGUP, KC_HOME, KC_UP, KC_END, MS_WHLU, + ALGR(BP_A), ALGR(BP_U), ALGR(BP_I), ALGR(BP_E), BP_DLR, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, MS_WHLD, BP_AGRV, KC_LALT, KC_LCTL, KC_LSFT, BP_CCED, _______, KC_LSFT, KC_LCTL, KC_LALT, _______, _______, _______, _______, _______, _______, _______ ), diff --git a/keyboards/marcopad/keymaps/backlit/keymap.c b/keyboards/marcopad/keymaps/backlit/keymap.c index d70df8e6f7..8166cf67b6 100644 --- a/keyboards/marcopad/keymaps/backlit/keymap.c +++ b/keyboards/marcopad/keymaps/backlit/keymap.c @@ -31,14 +31,14 @@ const uint16_t PROGMEM value_down[] = {KC_P7, KC_P3, COMBO_END}; const uint16_t PROGMEM speed_up[] = {KC_P8, KC_P4, COMBO_END}; const uint16_t PROGMEM speed_down[] = {KC_P8, KC_P1, COMBO_END}; combo_t key_combos[] = { - COMBO(backlight_next, RGB_MODE_FORWARD), - COMBO(backlight_toggle, RGB_TOG), - COMBO(hue_up, RGB_HUI), - COMBO(hue_down, RGB_HUD), - COMBO(sat_up, RGB_SAI), - COMBO(sat_down, RGB_SAD), - COMBO(value_up, RGB_VAI), - COMBO(value_down, RGB_VAD), - COMBO(speed_up, RGB_SPI), - COMBO(speed_down, RGB_SPD) + COMBO(backlight_next, RM_NEXT), + COMBO(backlight_toggle, RM_TOGG), + COMBO(hue_up, RM_HUEU), + COMBO(hue_down, RM_HUED), + COMBO(sat_up, RM_SATU), + COMBO(sat_down, RM_SATD), + COMBO(value_up, RM_VALU), + COMBO(value_down, RM_VALD), + COMBO(speed_up, RM_SPDU), + COMBO(speed_down, RM_SPDD) }; diff --git a/keyboards/marksard/leftover30/keymaps/default/keymap.c b/keyboards/marksard/leftover30/keymaps/default/keymap.c index dcad144ebb..08ee136e81 100644 --- a/keyboards/marksard/leftover30/keymaps/default/keymap.c +++ b/keyboards/marksard/leftover30/keymaps/default/keymap.c @@ -90,9 +90,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-----------------------------------------------------------------------------------------------------------. QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, KC_PSCR, //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------| - UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NUM, + UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_NUM, //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------| - UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, KC_CAPS, + UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, MS_BTN1, MS_BTN2, XXXXXXX, XXXXXXX, KC_CAPS, //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------| _______, _______, _______, _______, KC_CAPS //`-----------------------------------------------------------------------------------------------------------' @@ -148,7 +148,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } else if (IS_LAYER_ON(_RAISE)) { tap_code16((clockwise == true) ? S(KC_DOWN) : S(KC_UP)); } else { - tap_code((clockwise == true) ? KC_WH_D : KC_WH_U); + tap_code((clockwise == true) ? MS_WHLD : MS_WHLU); } } return true; diff --git a/keyboards/marksard/leftover30/keymaps/default_isoenter/keymap.c b/keyboards/marksard/leftover30/keymaps/default_isoenter/keymap.c index e340ba5e3e..2c15b3664f 100644 --- a/keyboards/marksard/leftover30/keymaps/default_isoenter/keymap.c +++ b/keyboards/marksard/leftover30/keymaps/default_isoenter/keymap.c @@ -90,9 +90,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-----------------------------------------------------------------------------------------------------------. QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, KC_PSCR, //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------| - UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NUM, + UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_NUM, //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------| - UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, + UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, MS_BTN1, MS_BTN2, XXXXXXX, XXXXXXX, //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------| _______, _______, _______, _______, KC_CAPS //`-----------------------------------------------------------------------------------------------------------' @@ -148,7 +148,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } else if (IS_LAYER_ON(_RAISE)) { tap_code16((clockwise == true) ? S(KC_DOWN) : S(KC_UP)); } else { - tap_code((clockwise == true) ? KC_WH_D : KC_WH_U); + tap_code((clockwise == true) ? MS_WHLD : MS_WHLU); } } return true; diff --git a/keyboards/marksard/rhymestone/keymaps/default/keymap.c b/keyboards/marksard/rhymestone/keymaps/default/keymap.c index f566ab99eb..fb78a5049d 100644 --- a/keyboards/marksard/rhymestone/keymaps/default/keymap.c +++ b/keyboards/marksard/rhymestone/keymaps/default/keymap.c @@ -80,9 +80,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,---------------------------------------------------------------------------------------------------. QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_PSCR, //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| - UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NUM, + UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_NUM, //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| - UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, + UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, MS_BTN1, MS_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------' _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ //,---------------------------------------------------------------------------------------------------. diff --git a/keyboards/marksard/treadstone32/keymaps/default/keymap.c b/keyboards/marksard/treadstone32/keymaps/default/keymap.c index 1373e819f8..93f2eaa91d 100644 --- a/keyboards/marksard/treadstone32/keymaps/default/keymap.c +++ b/keyboards/marksard/treadstone32/keymaps/default/keymap.c @@ -101,9 +101,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,---------------------------------------------------------------------------------------------------. QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_PSCR, //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| - UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NUM, + UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_NUM, //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| - UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, + UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, MS_BTN1, MS_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------' _______, _______ // `---------|---------' diff --git a/keyboards/marksard/treadstone48/keymaps/default/keymap.c b/keyboards/marksard/treadstone48/keymaps/default/keymap.c index 276c8446cb..625894203e 100644 --- a/keyboards/marksard/treadstone48/keymaps/default/keymap.c +++ b/keyboards/marksard/treadstone48/keymaps/default/keymap.c @@ -84,13 +84,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = LAYOUT_base( //,--------------------------------------------------------------------------------------------------------------------. - XXXXXXX, QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX, + XXXXXXX, QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, MS_WHLL, MS_WHLU, KC_HOME, KC_PGUP, XXXXXXX, //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| - XXXXXXX, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX, + XXXXXXX, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, XXXXXXX, MS_WHLR, MS_WHLD, KC_END, KC_PGDN, XXXXXXX, //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| - _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, KC_MS_U, + _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, XXXXXXX, XXXXXXX, MS_BTN1, MS_BTN2, XXXXXXX, MS_UP, //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| - _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, + _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, MS_LEFT, MS_DOWN, MS_RGHT, //`-------------------------------------------------------------------------------------------------------------------' _______ // ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key. diff --git a/keyboards/marksard/treadstone48/rev1/keymaps/like_jis_rs/keymap.c b/keyboards/marksard/treadstone48/rev1/keymaps/like_jis_rs/keymap.c index f7e5a068b5..469cb94ee9 100644 --- a/keyboards/marksard/treadstone48/rev1/keymaps/like_jis_rs/keymap.c +++ b/keyboards/marksard/treadstone48/rev1/keymaps/like_jis_rs/keymap.c @@ -132,13 +132,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = LAYOUT_rs( // Treadstone48 Rhymestone //,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------. - XXXXXXX, QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, MS_WHLL, MS_WHLU, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------| - XXXXXXX, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, XXXXXXX, MS_WHLR, MS_WHLD, KC_END, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------| - _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, XXXXXXX, XXXXXXX, MS_BTN1, MS_BTN2, XXXXXXX, MS_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------| - _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, MS_LEFT, MS_DOWN, MS_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, //`--------------------------------------------------------------------------------------------------------------------' --------------------------------------------' _______ // ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key. diff --git a/keyboards/maxr1998/phoebe/keymaps/default/keymap.c b/keyboards/maxr1998/phoebe/keymaps/default/keymap.c index de5fe3a67c..3346f02ecd 100644 --- a/keyboards/maxr1998/phoebe/keymaps/default/keymap.c +++ b/keyboards/maxr1998/phoebe/keymaps/default/keymap.c @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_PLUS, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, SC_RSPC, - KC_LCTL, KC_LGUI, KC_LALT, KC_BTN1, KC_SC, KC_SPC, KC_ALGR, KC_FN, KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, MS_BTN1, KC_SC, KC_SPC, KC_ALGR, KC_FN, KC_LEFT, KC_DOWN, KC_RGHT ), /* Special characters @@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, DE_UDIA, KC_F9, DE_ODIA, KC_PSCR, KC_DEL, QK_LOCK, DE_ADIA, DE_SS, _______, _______, G_1, _______, RGB_M_P, RGB_M_SW,RGB_M_SN,_______, _______, _______, _______, _______, _______, _______, _______, _______, UG_HUED, UG_TOGG, UG_HUEU, KC_PGUP, _______, - XXXXXXX, _______, XXXXXXX, KC_BTN2, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_END + XXXXXXX, _______, XXXXXXX, MS_BTN2, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_END ), /* Gaming diff --git a/keyboards/mechanickeys/undead60m/undead60m.c b/keyboards/mechanickeys/undead60m/undead60m.c index 995b56e544..8aad8342d3 100644 --- a/keyboards/mechanickeys/undead60m/undead60m.c +++ b/keyboards/mechanickeys/undead60m/undead60m.c @@ -28,9 +28,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { break; case 1: /* Layer 2: Scroll */ if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } break; case 2: /* Layer 3: Change Track */ diff --git a/keyboards/mechstudio/chapter1/keymaps/default/keymap.c b/keyboards/mechstudio/chapter1/keymaps/default/keymap.c index 38508b2b03..79fb45f3db 100644 --- a/keyboards/mechstudio/chapter1/keymaps/default/keymap.c +++ b/keyboards/mechstudio/chapter1/keymaps/default/keymap.c @@ -27,6 +27,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = {ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN)} + [0] = {ENCODER_CCW_CW(MS_WHLU, MS_WHLD)} }; #endif diff --git a/keyboards/mechwild/puckbuddy/keymaps/default/keymap.c b/keyboards/mechwild/puckbuddy/keymaps/default/keymap.c index 2ef70b652a..0ad534e256 100644 --- a/keyboards/mechwild/puckbuddy/keymaps/default/keymap.c +++ b/keyboards/mechwild/puckbuddy/keymaps/default/keymap.c @@ -37,8 +37,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_MUTE, MO(_FN3), MO(_FN2), MO(_FN1), LGUI(KC_D), MO(_FN2), KC_HOME, MO(_FN3), KC_END, - KC_BTN3, DPI_FINE, - KC_BTN1, KC_BTN2, KC_BTN2, KC_BTN1 + MS_BTN3, DPI_FINE, + MS_BTN1, MS_BTN2, MS_BTN2, MS_BTN1 ), [_FN1] = LAYOUT( UG_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, TAP_TOG, diff --git a/keyboards/mechwild/sugarglider/keymaps/default/keymap.c b/keyboards/mechwild/sugarglider/keymaps/default/keymap.c index d723ba10a6..46818cf209 100644 --- a/keyboards/mechwild/sugarglider/keymaps/default/keymap.c +++ b/keyboards/mechwild/sugarglider/keymaps/default/keymap.c @@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, TAP_UP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_MUTE, TAP_DN, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, TG(_STENO), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_MUTE, KC_LGUI, KC_LALT, TL_LOWR, KC_MS_BTN1, TAP_TOG, KC_MS_BTN2, TL_UPPR, KC_SPC, KC_RSFT, KC_MUTE + KC_MUTE, KC_LGUI, KC_LALT, TL_LOWR, MS_BTN1, TAP_TOG, MS_BTN2, TL_UPPR, KC_SPC, KC_RSFT, KC_MUTE ), [_LOWER] = LAYOUT( KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, DPI_UP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, @@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_WH_U, KC_WH_D) }, + [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(MS_WHLU, MS_WHLD) }, [_LOWER] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_HOME, KC_END), ENCODER_CCW_CW(DPI_UP, DPI_DN) }, [_RAISE] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_HOME, KC_END), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_HOME, KC_END) }, [_ADJUST] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_BRID, KC_BRIU), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_BRID, KC_BRIU) }, diff --git a/keyboards/mechwild/sugarglider/sugarglider.c b/keyboards/mechwild/sugarglider/sugarglider.c index 086294470e..d2a199bb7c 100644 --- a/keyboards/mechwild/sugarglider/sugarglider.c +++ b/keyboards/mechwild/sugarglider/sugarglider.c @@ -97,9 +97,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { break; case 3: if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } break; } diff --git a/keyboards/mlego/m65/keymaps/default/keymap.c b/keyboards/mlego/m65/keymaps/default/keymap.c index 6ff4b5dc70..52ead0ab36 100644 --- a/keyboards/mlego/m65/keymaps/default/keymap.c +++ b/keyboards/mlego/m65/keymaps/default/keymap.c @@ -15,17 +15,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LWR] = LAYOUT_ortho_5x13( KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , KC_EQL , - KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______ , - _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R), + MS_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , + MS_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , + _______, MS_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_UP , _______ , + _______, MS_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT), [_RSE] = LAYOUT_ortho_5x13( 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_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_WHLU, _______ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_WHLL, MS_WHLD, MS_WHLR), [_ADJ] = LAYOUT_ortho_5x13( UG_NEXT, UG_PREV , A(KC_F2), _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_T , RGB_M_SW, diff --git a/keyboards/mlego/m65/keymaps/uk/keymap.c b/keyboards/mlego/m65/keymaps/uk/keymap.c index f708346239..06d5dd5bf2 100644 --- a/keyboards/mlego/m65/keymaps/uk/keymap.c +++ b/keyboards/mlego/m65/keymaps/uk/keymap.c @@ -185,10 +185,10 @@ MS - mouse directions */ [_LWR] = LAYOUT_ortho_5x13( KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL, UK_EQL, - KC_BTN3,UP(lq,lQ),UP(lw,lW),UP(le,lE),UP(lr,lR),UP(lt,lT),UP(ly,lY),UP(lu,lU),UP(li,lI), UP(lo,lO), UP(lp,lP), _______, _______, - KC_BTN2,UP(la,lA),UP(ls,lS),UP(ld,lD),UP(lf,lF),UP(lg,lG),UP(lh,lH),UP(lj,lJ),UP(lk,lK), UP(ll,lL),UP(ll1,lL1), UP(lk1,lK1), _______, - _______, KC_BTN1,UP(lz,lZ),UP(lx,lX),UP(lc,lC),UP(lv,lV),UP(lb,lB),UP(ln,lN),UP(lm,lM),UP(lc1,lC1),UP(lp1,lP1), KC_MS_U, UP(lq1,lQ1), - _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R), + MS_BTN3,UP(lq,lQ),UP(lw,lW),UP(le,lE),UP(lr,lR),UP(lt,lT),UP(ly,lY),UP(lu,lU),UP(li,lI), UP(lo,lO), UP(lp,lP), _______, _______, + MS_BTN2,UP(la,lA),UP(ls,lS),UP(ld,lD),UP(lf,lF),UP(lg,lG),UP(lh,lH),UP(lj,lJ),UP(lk,lK), UP(ll,lL),UP(ll1,lL1), UP(lk1,lK1), _______, + _______, MS_BTN1,UP(lz,lZ),UP(lx,lX),UP(lc,lC),UP(lv,lV),UP(lb,lB),UP(ln,lN),UP(lm,lM),UP(lc1,lC1),UP(lp1,lP1), MS_UP, UP(lq1,lQ1), + _______, MS_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT), /* lower layer @@ -221,8 +221,8 @@ raise layer shifted 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 , _______,UP(ra1,rA1), _______, _______, _______,UP(rt,rT), _______, _______,UP(ri,rI), _______, _______, _______, _______ , KC_CAPS, UP(ra,rA), UP(rs,rS), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, KC_F20 , _______, _______,UP(rc,rC), _______, _______, _______, _______, _______, _______, KC_WH_U, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R), + _______, KC_F20 , _______, _______,UP(rc,rC), _______, _______, _______, _______, _______, _______, MS_WHLU, _______ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_WHLL, MS_WHLD, MS_WHLR), /* adj layer * ┌───┬────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────┬────┐ diff --git a/keyboards/molecule/keymaps/default/keymap.c b/keyboards/molecule/keymaps/default/keymap.c index 9030ba98d1..4b4fbd4eca 100755 --- a/keyboards/molecule/keymaps/default/keymap.c +++ b/keyboards/molecule/keymaps/default/keymap.c @@ -41,8 +41,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_LOWER] = LAYOUT( KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_F2, KC_F3, KC_WH_U, KC_F4, KC_F5, KC_F6, KC_F7, KC_UP, KC_F8, KC_F9, - KC_F1, KC_BTN2, KC_WH_D, KC_BTN1, KC_F11, KC_F12, KC_LEFT, KC_DOWN, KC_RGHT, KC_F10, + KC_F2, KC_F3, MS_WHLU, KC_F4, KC_F5, KC_F6, KC_F7, KC_UP, KC_F8, KC_F9, + KC_F1, MS_BTN2, MS_WHLD, MS_BTN1, KC_F11, KC_F12, KC_LEFT, KC_DOWN, KC_RGHT, KC_F10, KC_LCTL, KC_LSFT, KC_LALT, KC_SPC, KC_ENT, KC_RGUI, KC_RSFT, KC_RCTL, KC_TRNS, MO(4) ), diff --git a/keyboards/mt/mt40/keymaps/default/keymap.c b/keyboards/mt/mt40/keymaps/default/keymap.c index 22e13e662a..0880037a9b 100644 --- a/keyboards/mt/mt40/keymaps/default/keymap.c +++ b/keyboards/mt/mt40/keymaps/default/keymap.c @@ -64,9 +64,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, OOOOOOO, _______, _______, _______, _______, _______, _______, _______), [4] = LAYOUT_planck_mit( - _______, _______, _______, _______, _______, _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, - KC_PSCR, KC_INS, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, - KC_CAPS, _______, KC_MPLY, KC_MRWD, KC_MFFD, _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, + _______, _______, _______, _______, _______, _______, _______, MS_ACL0, MS_ACL1, MS_ACL2, _______, _______, + KC_PSCR, KC_INS, KC_MUTE, KC_VOLD, KC_VOLU, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, _______, _______, + KC_CAPS, _______, KC_MPLY, KC_MRWD, KC_MFFD, _______, _______, _______, MS_BTN1, MS_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, OOOOOOO, _______, _______, _______), diff --git a/keyboards/numatreus/keymaps/like_jis/keymap.c b/keyboards/numatreus/keymaps/like_jis/keymap.c index 6fc526610a..1b3838bf6b 100644 --- a/keyboards/numatreus/keymaps/like_jis/keymap.c +++ b/keyboards/numatreus/keymaps/like_jis/keymap.c @@ -112,13 +112,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = LAYOUT( //,----------------------------------. ,----------------------------------. - QK_BOOT, RGBRST, AG_NORM, AG_SWAP, KC_CAPS, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, + QK_BOOT, RGBRST, AG_NORM, AG_SWAP, KC_CAPS, XXXXXXX, MS_WHLL, MS_WHLU, KC_HOME, KC_PGUP, //|------+------+------+------+------| |------+------+------+------+------| - UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, KC_SCRL, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, + UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, KC_SCRL, XXXXXXX, MS_WHLR, MS_WHLD, KC_END, KC_PGDN, //|------+------+------+------+------| |------+------+------+------+------| - UG_NEXT, UG_HUED, UG_SATD, UG_VALD, KC_NUM, XXXXXXX, KC_BTN1, KC_BTN2, KC_MS_U, XXXXXXX, + UG_NEXT, UG_HUED, UG_SATD, UG_VALD, KC_NUM, XXXXXXX, MS_BTN1, MS_BTN2, MS_UP, XXXXXXX, //|------+------+------+------+------|------+------+------+------+------+------+------| - KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT //|------+------+------+------+-------------+------+------+------+------+------+------| ) }; diff --git a/keyboards/obosob/steal_this_keyboard/keymaps/default/keymap.c b/keyboards/obosob/steal_this_keyboard/keymaps/default/keymap.c index 2d20fafe30..2a8f615201 100644 --- a/keyboards/obosob/steal_this_keyboard/keymaps/default/keymap.c +++ b/keyboards/obosob/steal_this_keyboard/keymaps/default/keymap.c @@ -43,9 +43,9 @@ KC_Z, MT_X, MT_C, KC_V, KC_B, KC_N, KC_M, MT_COMM, MT_DOT, KC_P0, KC_BSPC, MT_SPC, KC_P1 ), [1] = LAYOUT_split_3x5_2( -_______, _______, _______, _______, _______, _______, KC_BTN1, KC_WH_U, KC_BTN2, _______, -_______, KC_BTN2, XXXXXXX, KC_BTN1, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, -_______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R, _______, +_______, _______, _______, _______, _______, _______, MS_BTN1, MS_WHLU, MS_BTN2, _______, +_______, MS_BTN2, XXXXXXX, MS_BTN1, _______, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, +_______, _______, _______, _______, _______, _______, MS_WHLL, MS_WHLD, MS_WHLR, _______, _______, _______, _______, _______ ), [2] = LAYOUT_split_3x5_2( diff --git a/keyboards/oddball/keymaps/default/keymap.c b/keyboards/oddball/keymaps/default/keymap.c index 2d1c7ee049..7df7f9c152 100644 --- a/keyboards/oddball/keymaps/default/keymap.c +++ b/keyboards/oddball/keymaps/default/keymap.c @@ -32,9 +32,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_LOWER] = LAYOUT( - KC_DEL, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_BTN3, KC_DQUO, KC_7, KC_8, KC_9, KC_ASTR, KC_UNDS, - KC_SCROLL, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BTN2, KC_QUOT, KC_4, KC_5, KC_6, KC_PLUS, KC_ENT, - _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BTN1, KC_0, KC_1, KC_2, KC_3, KC_MINS, _______, + KC_DEL, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, MS_BTN3, KC_DQUO, KC_7, KC_8, KC_9, KC_ASTR, KC_UNDS, + KC_SCROLL, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, MS_BTN2, KC_QUOT, KC_4, KC_5, KC_6, KC_PLUS, KC_ENT, + _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, MS_BTN1, KC_0, KC_1, KC_2, KC_3, KC_MINS, _______, _______, _______, _______, _______ ), diff --git a/keyboards/oddball/keymaps/pmw3360/keymap.c b/keyboards/oddball/keymaps/pmw3360/keymap.c index 2d1c7ee049..7df7f9c152 100644 --- a/keyboards/oddball/keymaps/pmw3360/keymap.c +++ b/keyboards/oddball/keymaps/pmw3360/keymap.c @@ -32,9 +32,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_LOWER] = LAYOUT( - KC_DEL, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_BTN3, KC_DQUO, KC_7, KC_8, KC_9, KC_ASTR, KC_UNDS, - KC_SCROLL, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BTN2, KC_QUOT, KC_4, KC_5, KC_6, KC_PLUS, KC_ENT, - _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BTN1, KC_0, KC_1, KC_2, KC_3, KC_MINS, _______, + KC_DEL, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, MS_BTN3, KC_DQUO, KC_7, KC_8, KC_9, KC_ASTR, KC_UNDS, + KC_SCROLL, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, MS_BTN2, KC_QUOT, KC_4, KC_5, KC_6, KC_PLUS, KC_ENT, + _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, MS_BTN1, KC_0, KC_1, KC_2, KC_3, KC_MINS, _______, _______, _______, _______, _______ ), diff --git a/keyboards/oddball/oddball.c b/keyboards/oddball/oddball.c index bbc3b3f2e4..aa74b07475 100644 --- a/keyboards/oddball/oddball.c +++ b/keyboards/oddball/oddball.c @@ -107,23 +107,23 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // handle mouse drag and scroll switch (keycode) { - case KC_BTN1: + case MS_BTN1: on_mouse_button(MOUSE_BTN1, record); return false; - case KC_BTN2: + case MS_BTN2: on_mouse_button(MOUSE_BTN2, record); return false; - case KC_BTN3: + case MS_BTN3: on_mouse_button(MOUSE_BTN3, record); return false; - case KC_BTN4: + case MS_BTN4: on_mouse_button(MOUSE_BTN4, record); return false; - case KC_BTN5: + case MS_BTN5: on_mouse_button(MOUSE_BTN5, record); return false; diff --git a/keyboards/org60/keymaps/default/keymap.c b/keyboards/org60/keymaps/default/keymap.c index 666f61ca83..0cd34ec9d5 100644 --- a/keyboards/org60/keymaps/default/keymap.c +++ b/keyboards/org60/keymaps/default/keymap.c @@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // 1: Function Layer LAYOUT( QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, - KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SCRL, KC_PAUS, KC_DEL, + KC_NO, MS_WHLU, KC_UP, MS_WHLD, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SCRL, KC_PAUS, KC_DEL, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_RSFT, KC_NO ,KC_PGUP, KC_INS, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDN,KC_END), diff --git a/keyboards/owlab/voice65/hotswap/keymaps/default/keymap.c b/keyboards/owlab/voice65/hotswap/keymaps/default/keymap.c index d189bc66f6..de2738e648 100644 --- a/keyboards/owlab/voice65/hotswap/keymaps/default/keymap.c +++ b/keyboards/owlab/voice65/hotswap/keymaps/default/keymap.c @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [3] = LAYOUT_65_ansi_blocker( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_WH_U, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MS_WHLU, MS_WHLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) @@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, [1] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN) }, - [2] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D) }, + [2] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) }, [3] = { ENCODER_CCW_CW(_______, _______) }, }; #endif diff --git a/keyboards/owlab/voice65/soldered/keymaps/default/keymap.c b/keyboards/owlab/voice65/soldered/keymaps/default/keymap.c index fc92357cf5..70d22ceba9 100644 --- a/keyboards/owlab/voice65/soldered/keymaps/default/keymap.c +++ b/keyboards/owlab/voice65/soldered/keymaps/default/keymap.c @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [3] = LAYOUT_65_ansi_blocker( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_WH_U, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MS_WHLU, MS_WHLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) @@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, [1] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN) }, - [2] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D) }, + [2] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) }, [3] = { ENCODER_CCW_CW(_______, _______) }, }; #endif diff --git a/keyboards/p3d/spacey/keymaps/default/keymap.c b/keyboards/p3d/spacey/keymaps/default/keymap.c index 19bc5323b8..031728b37d 100644 --- a/keyboards/p3d/spacey/keymaps/default/keymap.c +++ b/keyboards/p3d/spacey/keymaps/default/keymap.c @@ -33,8 +33,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FN] = LAYOUT_all( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_ESC, KC_TAB, 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT, KC_MS_U, - KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_MS_L, KC_MS_D, KC_MS_R, + 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_ENT, MS_UP, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MS_LEFT, MS_DOWN, MS_RGHT, KC_LCTL, KC_LGUI, KC_NO, KC_LALT, KC_SPC, KC_BSPC, KC_RALT, KC_APP, KC_RGUI, KC_RCTL ) }; diff --git a/keyboards/p3d/synapse/synapse.c b/keyboards/p3d/synapse/synapse.c index 0b532eaab6..c851e47f6b 100644 --- a/keyboards/p3d/synapse/synapse.c +++ b/keyboards/p3d/synapse/synapse.c @@ -20,9 +20,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (index == 1) { /* left encoder*/ if (clockwise){ - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } else if (index == 0) { /* right encoder */ if (clockwise){ diff --git a/keyboards/pabile/p18/keymaps/default/keymap.c b/keyboards/pabile/p18/keymaps/default/keymap.c index 0223a450cd..8d93db1097 100644 --- a/keyboards/pabile/p18/keymaps/default/keymap.c +++ b/keyboards/pabile/p18/keymaps/default/keymap.c @@ -19,9 +19,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } } else if (index == 1) { /* Second encoder */ if (clockwise) { - tap_code(KC_WH_U); /*mouse wheel up*/ + tap_code(MS_WHLU); /*mouse wheel up*/ } else { - tap_code(KC_WH_D); /*mouse wheel down*/ + tap_code(MS_WHLD); /*mouse wheel down*/ } } return true; diff --git a/keyboards/pabile/p20/ver1/keymaps/default/keymap.c b/keyboards/pabile/p20/ver1/keymaps/default/keymap.c index a844e2c8a1..03b32323a4 100644 --- a/keyboards/pabile/p20/ver1/keymaps/default/keymap.c +++ b/keyboards/pabile/p20/ver1/keymaps/default/keymap.c @@ -15,18 +15,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_RPRN, KC_NO, KC_PSLS, KC_NO), [2] = LAYOUT_ortho_5x4( KC_NUM, KC_NO, KC_NO, KC_NO, - KC_BTN1, KC_MS_U, KC_BTN2, KC_NO, - KC_MS_L, KC_MS_D, KC_MS_R, KC_TAB, - KC_WH_U, KC_NO, KC_WH_D, KC_NO, + MS_BTN1, MS_UP, MS_BTN2, KC_NO, + MS_LEFT, MS_DOWN, MS_RGHT, KC_TAB, + MS_WHLU, KC_NO, MS_WHLD, KC_NO, KC_NO, KC_NO, KC_DEL, KC_ESC) }; bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { - tap_code(KC_WH_U); /*mouse wheel up*/ + tap_code(MS_WHLU); /*mouse wheel up*/ } else { - tap_code(KC_WH_D); /*mouse wheel down */ + tap_code(MS_WHLD); /*mouse wheel down */ } } else if (index == 1) { /* Second encoder */ if (clockwise) { diff --git a/keyboards/pabile/p40/keymaps/default/keymap.c b/keyboards/pabile/p40/keymaps/default/keymap.c index d607deb73c..f0f25eef0c 100644 --- a/keyboards/pabile/p40/keymaps/default/keymap.c +++ b/keyboards/pabile/p40/keymaps/default/keymap.c @@ -22,8 +22,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO), [4] = LAYOUT_ortho_4x10( - KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, KC_DEL, - KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_NO, KC_NO, KC_NO, KC_NO, + KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_BTN1, MS_UP, MS_BTN2, KC_DEL, + KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, MS_WHLU, MS_LEFT, MS_DOWN, MS_RGHT, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_WHLD, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO) }; diff --git a/keyboards/pabile/p40_ortho/keymaps/default/keymap.c b/keyboards/pabile/p40_ortho/keymaps/default/keymap.c index 891d2b5735..74614bbb34 100644 --- a/keyboards/pabile/p40_ortho/keymaps/default/keymap.c +++ b/keyboards/pabile/p40_ortho/keymaps/default/keymap.c @@ -39,8 +39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO), [4] = LAYOUT_ortho_4x10( - KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, KC_DEL, - KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_NO, KC_NO, KC_NO, KC_NO, + KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_BTN1, MS_UP, MS_BTN2, KC_DEL, + KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, MS_WHLU, MS_LEFT, MS_DOWN, MS_RGHT, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_WHLD, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO) }; diff --git a/keyboards/pabile/p42/keymaps/default/keymap.c b/keyboards/pabile/p42/keymaps/default/keymap.c index ef4bad015b..b69f8719b4 100644 --- a/keyboards/pabile/p42/keymaps/default/keymap.c +++ b/keyboards/pabile/p42/keymaps/default/keymap.c @@ -22,8 +22,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS), [4] = LAYOUT( - KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, KC_DEL, - KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_BTN1, MS_UP, MS_BTN2, KC_DEL, + KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, MS_WHLU, MS_LEFT, MS_DOWN, MS_RGHT, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_WHLD, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS) }; diff --git a/keyboards/phoenix/keymaps/default/keymap.c b/keyboards/phoenix/keymaps/default/keymap.c index 909e1dbb60..8191c0af26 100644 --- a/keyboards/phoenix/keymaps/default/keymap.c +++ b/keyboards/phoenix/keymaps/default/keymap.c @@ -116,13 +116,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_BTN1, KC_TRNS, KC_TRNS, + MS_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, MS_UP, KC_TRNS, KC_TRNS, KC_TRNS, + MS_LEFT, MS_DOWN, MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), diff --git a/keyboards/pimentoso/paddino02/rev1/keymaps/default/keymap.c b/keyboards/pimentoso/paddino02/rev1/keymaps/default/keymap.c index 343ae043b4..364224b77b 100755 --- a/keyboards/pimentoso/paddino02/rev1/keymaps/default/keymap.c +++ b/keyboards/pimentoso/paddino02/rev1/keymaps/default/keymap.c @@ -3,7 +3,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT( - KC_ESC, KC_BTN1, KC_UP, KC_BTN2, + KC_ESC, MS_BTN1, KC_UP, MS_BTN2, KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, MO(1), KC_SPC), diff --git a/keyboards/pimentoso/paddino02/rev2/left/keymaps/default/keymap.c b/keyboards/pimentoso/paddino02/rev2/left/keymaps/default/keymap.c index 343ae043b4..364224b77b 100755 --- a/keyboards/pimentoso/paddino02/rev2/left/keymaps/default/keymap.c +++ b/keyboards/pimentoso/paddino02/rev2/left/keymaps/default/keymap.c @@ -3,7 +3,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT( - KC_ESC, KC_BTN1, KC_UP, KC_BTN2, + KC_ESC, MS_BTN1, KC_UP, MS_BTN2, KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, MO(1), KC_SPC), diff --git a/keyboards/pimentoso/paddino02/rev2/right/keymaps/default/keymap.c b/keyboards/pimentoso/paddino02/rev2/right/keymaps/default/keymap.c index 0cc38837d3..7e624fcf66 100755 --- a/keyboards/pimentoso/paddino02/rev2/right/keymaps/default/keymap.c +++ b/keyboards/pimentoso/paddino02/rev2/right/keymaps/default/keymap.c @@ -3,7 +3,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT( - KC_ESC, KC_BTN2, KC_UP, KC_BTN1, + KC_ESC, MS_BTN2, KC_UP, MS_BTN1, KC_LSFT, KC_RGHT, KC_DOWN, KC_LEFT, MO(1), KC_SPC), diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c index c08e58653a..a56cee0549 100644 --- a/keyboards/planck/keymaps/default/keymap.c +++ b/keyboards/planck/keymaps/default/keymap.c @@ -258,13 +258,13 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } else { if (clockwise) { #ifdef MOUSEKEY_ENABLE - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); #else tap_code(KC_PGDN); #endif } else { #ifdef MOUSEKEY_ENABLE - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); #else tap_code(KC_PGUP); #endif diff --git a/keyboards/ploopyco/madromys/keymaps/default/keymap.c b/keyboards/ploopyco/madromys/keymaps/default/keymap.c index bc8265b39d..a4e46efc87 100644 --- a/keyboards/ploopyco/madromys/keymaps/default/keymap.c +++ b/keyboards/ploopyco/madromys/keymaps/default/keymap.c @@ -18,5 +18,5 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( KC_BTN4, KC_BTN5, DRAG_SCROLL, KC_BTN2, KC_BTN1, KC_BTN3 ) + [0] = LAYOUT( MS_BTN4, MS_BTN5, DRAG_SCROLL, MS_BTN2, MS_BTN1, MS_BTN3 ) }; diff --git a/keyboards/ploopyco/mouse/keymaps/default/keymap.c b/keyboards/ploopyco/mouse/keymaps/default/keymap.c index 29d81b8061..d2ed79a774 100644 --- a/keyboards/ploopyco/mouse/keymaps/default/keymap.c +++ b/keyboards/ploopyco/mouse/keymaps/default/keymap.c @@ -19,5 +19,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT(/* Base */ - C(KC_C), KC_BTN1, KC_BTN3, KC_BTN2, C(KC_V), KC_BTN4, KC_BTN5, DPI_CONFIG) + C(KC_C), MS_BTN1, MS_BTN3, MS_BTN2, C(KC_V), MS_BTN4, MS_BTN5, DPI_CONFIG) }; diff --git a/keyboards/ploopyco/ploopyco.c b/keyboards/ploopyco/ploopyco.c index 57f2a26b8c..f094f784cb 100644 --- a/keyboards/ploopyco/ploopyco.c +++ b/keyboards/ploopyco/ploopyco.c @@ -80,7 +80,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { return false; } # ifdef MOUSEKEY_ENABLE - tap_code(clockwise ? KC_WH_U : KC_WH_D); + tap_code(clockwise ? MS_WHLU : MS_WHLD); # else report_mouse_t mouse_report = pointing_device_get_report(); mouse_report.v = clockwise ? 1 : -1; diff --git a/keyboards/ploopyco/trackball/keymaps/default/keymap.c b/keyboards/ploopyco/trackball/keymaps/default/keymap.c index 83a4a16847..e330a2efff 100644 --- a/keyboards/ploopyco/trackball/keymaps/default/keymap.c +++ b/keyboards/ploopyco/trackball/keymaps/default/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( /* Base */ - KC_BTN1, KC_BTN3, KC_BTN2, - KC_BTN4, KC_BTN5 + MS_BTN1, MS_BTN3, MS_BTN2, + MS_BTN4, MS_BTN5 ), }; diff --git a/keyboards/ploopyco/trackball_mini/keymaps/default/keymap.c b/keyboards/ploopyco/trackball_mini/keymaps/default/keymap.c index 3659076bec..ac51e8b89a 100644 --- a/keyboards/ploopyco/trackball_mini/keymaps/default/keymap.c +++ b/keyboards/ploopyco/trackball_mini/keymaps/default/keymap.c @@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( /* Base */ - KC_BTN1, KC_BTN3, KC_BTN2, - KC_BTN4, KC_BTN5 + MS_BTN1, MS_BTN3, MS_BTN2, + MS_BTN4, MS_BTN5 ), }; diff --git a/keyboards/ploopyco/trackball_thumb/keymaps/default/keymap.c b/keyboards/ploopyco/trackball_thumb/keymaps/default/keymap.c index 8729deabc1..eb50542ce4 100644 --- a/keyboards/ploopyco/trackball_thumb/keymaps/default/keymap.c +++ b/keyboards/ploopyco/trackball_thumb/keymaps/default/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( /* Base */ - KC_BTN4, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN5, + MS_BTN4, MS_BTN1, MS_BTN3, MS_BTN2, MS_BTN5, DPI_CONFIG ), }; diff --git a/keyboards/pluckey/keymaps/default/keymap.c b/keyboards/pluckey/keymaps/default/keymap.c index 787bb192b2..604215b3c6 100644 --- a/keyboards/pluckey/keymaps/default/keymap.c +++ b/keyboards/pluckey/keymaps/default/keymap.c @@ -51,15 +51,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_RAISE] = LAYOUT_all( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, - _______, _______, _______, KC_VOLU, _______, _______, KC_LPRN, KC_RPRN, _______, KC_BTN4, KC_UP, KC_BTN5, _______, _______, + _______, _______, _______, KC_VOLU, _______, _______, KC_LPRN, KC_RPRN, _______, MS_BTN4, KC_UP, MS_BTN5, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_LPRN, KC_RPRN, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______, _______, _______, _______, KC_VOLD, _______, _______, M_ARROW, KC_PGUP, KC_PGDN, _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, MO_ADJU, _______, KC_DEL, _______, _______, MO_CURR, _______, _______ ), [_ADJUST] = LAYOUT_all( KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_WHLU, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_WHLL, MS_WHLD, MS_WHLR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CLR, _______, _______, _______, _______, _______ ) diff --git a/keyboards/pluckey/keymaps/default_ergo/keymap.c b/keyboards/pluckey/keymaps/default_ergo/keymap.c index 313b118b8a..5fe90e9fbb 100644 --- a/keyboards/pluckey/keymaps/default_ergo/keymap.c +++ b/keyboards/pluckey/keymaps/default_ergo/keymap.c @@ -51,15 +51,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_RAISE] = LAYOUT_ergo( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, - _______, _______, _______, KC_VOLU, _______, _______, KC_LPRN, KC_RPRN, _______, KC_BTN4, KC_UP, KC_BTN5, _______, _______, + _______, _______, _______, KC_VOLU, _______, _______, KC_LPRN, KC_RPRN, _______, MS_BTN4, KC_UP, MS_BTN5, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______, _______, _______, _______, KC_VOLD, _______, _______, M_ARROW, KC_PGUP, KC_PGDN, _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, MO_ADJU, _______, KC_DEL, _______, _______, MO_CURR, _______, _______ ), [_ADJUST] = LAYOUT_ergo( KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_WHLU, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, MS_WHLL, MS_WHLD, MS_WHLR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CLR, _______, _______, _______, _______, _______ ) diff --git a/keyboards/pluckey/pluckey.c b/keyboards/pluckey/pluckey.c index d9215b9339..db801c8b81 100644 --- a/keyboards/pluckey/pluckey.c +++ b/keyboards/pluckey/pluckey.c @@ -28,9 +28,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } else if (index == 1) { if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } return true; diff --git a/keyboards/proteus67/keymaps/default/keymap.c b/keyboards/proteus67/keymaps/default/keymap.c index 225476b40c..710ae56a90 100644 --- a/keyboards/proteus67/keymaps/default/keymap.c +++ b/keyboards/proteus67/keymaps/default/keymap.c @@ -18,8 +18,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_LAYERB] = LAYOUT_ortho_5x14( UG_TOGG , UG_HUEU ,UG_HUED ,UG_SATU , UG_SATD , UG_VALU , UG_VALD , RGB_M_P , RGB_M_B , RGB_M_R , RGB_M_SW , RGB_M_K , RGB_M_X , RGB_M_G , - KC_TRNS , KC_TRNS, KC_TRNS ,KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_BTN1 , KC_MS_U , KC_BTN2 , KC_TRNS ,KC_TRNS, - KC_TRNS, KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_MS_L , KC_MS_D , KC_MS_R , KC_SCLN,KC_QUOT , + KC_TRNS , KC_TRNS, KC_TRNS ,KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , MS_BTN1 , MS_UP , MS_BTN2 , KC_TRNS ,KC_TRNS, + KC_TRNS, KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , MS_LEFT , MS_DOWN , MS_RGHT , KC_SCLN,KC_QUOT , KC_TRNS, KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_NUBS, KC_TRNS, KC_TRNS , KC_TRNS ,KC_TRNS,KC_TRNS, KC_TRNS , UG_PREV, KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ), diff --git a/keyboards/prototypist/oceanographer/keymaps/default/keymap.c b/keyboards/prototypist/oceanographer/keymaps/default/keymap.c index 83b907f9a4..ceeb224927 100644 --- a/keyboards/prototypist/oceanographer/keymaps/default/keymap.c +++ b/keyboards/prototypist/oceanographer/keymaps/default/keymap.c @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, [_FN1] = { ENCODER_CCW_CW(UG_VALD, UG_VALU)}, - [_FN2] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP)}, + [_FN2] = { ENCODER_CCW_CW(MS_WHLD, MS_WHLU)}, [_FN3] = { ENCODER_CCW_CW(KC_LEFT, KC_RIGHT)} }; #endif diff --git a/keyboards/prototypist/oceanographer/keymaps/default_625/keymap.c b/keyboards/prototypist/oceanographer/keymaps/default_625/keymap.c index 94e8e936f8..185ce52c9b 100644 --- a/keyboards/prototypist/oceanographer/keymaps/default_625/keymap.c +++ b/keyboards/prototypist/oceanographer/keymaps/default_625/keymap.c @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, [_FN1] = { ENCODER_CCW_CW(UG_VALD, UG_VALU)}, - [_FN2] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP)}, + [_FN2] = { ENCODER_CCW_CW(MS_WHLD, MS_WHLU)}, [_FN3] = { ENCODER_CCW_CW(KC_LEFT, KC_RIGHT)} }; #endif diff --git a/keyboards/prototypist/oceanographer/keymaps/split_225_2/keymap.c b/keyboards/prototypist/oceanographer/keymaps/split_225_2/keymap.c index cc7c155752..0a1d1558dd 100644 --- a/keyboards/prototypist/oceanographer/keymaps/split_225_2/keymap.c +++ b/keyboards/prototypist/oceanographer/keymaps/split_225_2/keymap.c @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, [_FN1] = { ENCODER_CCW_CW(UG_VALD, UG_VALU)}, - [_FN2] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP)}, + [_FN2] = { ENCODER_CCW_CW(MS_WHLD, MS_WHLU)}, [_FN3] = { ENCODER_CCW_CW(KC_LEFT, KC_RIGHT)} }; #endif diff --git a/keyboards/qck75/v1/v1.c b/keyboards/qck75/v1/v1.c index 5e512b292c..d7756fe06d 100644 --- a/keyboards/qck75/v1/v1.c +++ b/keyboards/qck75/v1/v1.c @@ -26,16 +26,16 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { break; case THIRD: if (clockwise) { - tap_code(KC_MS_R); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_L); + tap_code(MS_LEFT); } break; case FOURTH: if (clockwise) { - tap_code(KC_MS_U); + tap_code(MS_UP); } else { - tap_code(KC_MS_D); + tap_code(MS_DOWN); } break; } diff --git a/keyboards/qpockets/eggman/keymaps/default/keymap.c b/keyboards/qpockets/eggman/keymaps/default/keymap.c index 079272d918..60b70837fb 100644 --- a/keyboards/qpockets/eggman/keymaps/default/keymap.c +++ b/keyboards/qpockets/eggman/keymaps/default/keymap.c @@ -63,9 +63,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* left encoder */ if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } else if (index == 1) { /* right encoder */ if (clockwise) { diff --git a/keyboards/qpockets/space_space/rev1/keymaps/big_space/keymap.c b/keyboards/qpockets/space_space/rev1/keymaps/big_space/keymap.c index 1bbdd632e8..1b88459606 100644 --- a/keyboards/qpockets/space_space/rev1/keymaps/big_space/keymap.c +++ b/keyboards/qpockets/space_space/rev1/keymaps/big_space/keymap.c @@ -85,9 +85,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { default: if (clockwise){ - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else{ - tap_code(KC_WH_D); + tap_code(MS_WHLD); } break; } diff --git a/keyboards/qpockets/space_space/rev1/keymaps/default/keymap.c b/keyboards/qpockets/space_space/rev1/keymaps/default/keymap.c index 19390f665c..f872606d07 100644 --- a/keyboards/qpockets/space_space/rev1/keymaps/default/keymap.c +++ b/keyboards/qpockets/space_space/rev1/keymaps/default/keymap.c @@ -87,9 +87,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { default: if (clockwise){ - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else{ - tap_code(KC_WH_D); + tap_code(MS_WHLD); } break; } diff --git a/keyboards/qpockets/space_space/rev2/rev2.c b/keyboards/qpockets/space_space/rev2/rev2.c index e6053afb75..04581833ff 100644 --- a/keyboards/qpockets/space_space/rev2/rev2.c +++ b/keyboards/qpockets/space_space/rev2/rev2.c @@ -20,9 +20,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (index == 1) { /* left encoder*/ if (clockwise){ - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } else if (index == 0) { /* right encoder */ if (clockwise){ diff --git a/keyboards/qpockets/wanten/keymaps/2u_bars/keymap.c b/keyboards/qpockets/wanten/keymaps/2u_bars/keymap.c index 3322fc8923..de67171c2e 100644 --- a/keyboards/qpockets/wanten/keymaps/2u_bars/keymap.c +++ b/keyboards/qpockets/wanten/keymaps/2u_bars/keymap.c @@ -78,9 +78,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } } else if (index == 1) { /* center encoder */ if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } return true; diff --git a/keyboards/qpockets/wanten/keymaps/625_bar/keymap.c b/keyboards/qpockets/wanten/keymaps/625_bar/keymap.c index 1bd1be2f66..fc5dab3b77 100644 --- a/keyboards/qpockets/wanten/keymaps/625_bar/keymap.c +++ b/keyboards/qpockets/wanten/keymaps/625_bar/keymap.c @@ -78,9 +78,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } } else if (index == 1) { /* center encoder */ if (clockwise) { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } else { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } } return true; diff --git a/keyboards/qpockets/wanten/keymaps/default/keymap.c b/keyboards/qpockets/wanten/keymaps/default/keymap.c index 248974a7eb..386a8d982d 100644 --- a/keyboards/qpockets/wanten/keymaps/default/keymap.c +++ b/keyboards/qpockets/wanten/keymaps/default/keymap.c @@ -78,9 +78,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } } else if (index == 1) { /* center encoder */ if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } return true; diff --git a/keyboards/qvex/lynepad/keymaps/default/keymap.c b/keyboards/qvex/lynepad/keymaps/default/keymap.c index 142f295de6..a4c3030f22 100644 --- a/keyboards/qvex/lynepad/keymaps/default/keymap.c +++ b/keyboards/qvex/lynepad/keymaps/default/keymap.c @@ -24,9 +24,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |----------------------------| */ [0] = LAYOUT( - KC_MS_BTN4, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, - KC_MS_BTN5, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, - KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2 + MS_BTN4, MS_BTN2, MS_UP, MS_BTN1, + MS_BTN5, MS_LEFT, MS_DOWN, MS_RGHT, + MS_ACL0, MS_ACL1, MS_ACL2 ) }; @@ -41,9 +41,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } } else if (index == 1) { /* Second encoder */ if (clockwise) { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } else { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } } return true; @@ -76,10 +76,10 @@ void matrix_scan_user(void) { } if (enc2Center != enc2CenterPrev) { if (enc2Center < ENC_TILT_THRESHOLD) { - register_code16(KC_MS_BTN3); + register_code16(MS_BTN3); } else { - unregister_code16(KC_MS_BTN3); + unregister_code16(MS_BTN3); } /* * Encoder sets ALL values when center is pressed so bail out at this point diff --git a/keyboards/qwertyydox/keymaps/default/keymap.c b/keyboards/qwertyydox/keymaps/default/keymap.c index 49d45b9c5f..69e1d5c31c 100644 --- a/keyboards/qwertyydox/keymaps/default/keymap.c +++ b/keyboards/qwertyydox/keymaps/default/keymap.c @@ -42,11 +42,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAV] = LAYOUT( //,--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------. - KC_ESC, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_WH_L, KC_WH_R, KC_ESC, KC_NO, KC_UP, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, + KC_ESC, KC_NO, MS_ACL0, MS_ACL1, MS_ACL2, MS_WHLL, MS_WHLR, KC_ESC, KC_NO, KC_UP, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_WH_U, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, + KC_NO, KC_Z, KC_X, KC_C, KC_V, MS_WHLU, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_INS, KC_HOME, KC_PGUP, KC_BTN1, KC_BTN2, KC_WH_D, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R, KC_NO, KC_NO, + KC_INS, KC_HOME, KC_PGUP, MS_BTN1, MS_BTN2, MS_WHLD, MS_LEFT, MS_UP, MS_DOWN, MS_RGHT, KC_NO, KC_NO, //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| KC_DEL, KC_END, KC_PGDN, nav, KC_LCTL, KC_SPC, TO(0), TO(1), KC_LSFT, KC_BSPC, KC_NO, KC_NO, KC_NO, QK_BOOT //`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------' diff --git a/keyboards/rainkeebs/rainkeeb/keymaps/default/keymap.c b/keyboards/rainkeebs/rainkeeb/keymaps/default/keymap.c index 914d1113b1..bcc7ea0f88 100644 --- a/keyboards/rainkeebs/rainkeeb/keymaps/default/keymap.c +++ b/keyboards/rainkeebs/rainkeeb/keymaps/default/keymap.c @@ -62,16 +62,16 @@ bool encoder_update_user(uint8_t index, bool clockwise) { break; case _RAISE: if (clockwise) { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } else { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } break; case _ADJUST: if (clockwise) { - tap_code(KC_MS_WH_RIGHT); + tap_code(MS_WHLR); } else { - tap_code(KC_MS_WH_LEFT); + tap_code(MS_WHLL); } break; case _GAME: diff --git a/keyboards/rainkeebs/trailmix/keymaps/default/keymap.c b/keyboards/rainkeebs/trailmix/keymaps/default/keymap.c index 77418f9cd6..7c3fcb3ce0 100644 --- a/keyboards/rainkeebs/trailmix/keymaps/default/keymap.c +++ b/keyboards/rainkeebs/trailmix/keymaps/default/keymap.c @@ -58,9 +58,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN)}, + [_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(MS_WHLU, MS_WHLD)}, [_LOWER] = {ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_HOME, KC_END)}, - [_RAISE] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_WH_L, KC_WH_R)}, - [_ADJUST] = {ENCODER_CCW_CW(KC_MS_LEFT, KC_MS_RIGHT), ENCODER_CCW_CW(KC_MS_UP, KC_MS_DOWN)}, + [_RAISE] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(MS_WHLL, MS_WHLR)}, + [_ADJUST] = {ENCODER_CCW_CW(MS_LEFT, MS_RGHT), ENCODER_CCW_CW(MS_UP, MS_DOWN)}, }; #endif diff --git a/keyboards/rainkeebs/trailmix/trailmix.c b/keyboards/rainkeebs/trailmix/trailmix.c index 105d988dad..954c72f2c8 100644 --- a/keyboards/rainkeebs/trailmix/trailmix.c +++ b/keyboards/rainkeebs/trailmix/trailmix.c @@ -34,9 +34,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } } else if (index == 1) { if (clockwise) { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } else { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } } break; @@ -49,9 +49,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } } else if (index == 1) { if (clockwise) { - tap_code(KC_WH_R); + tap_code(MS_WHLR); } else { - tap_code(KC_WH_L); + tap_code(MS_WHLL); } } break; @@ -73,15 +73,15 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { case _ADJUST: if (index == 0) { if (clockwise) { - tap_code(KC_MS_RIGHT); + tap_code(MS_RGHT); } else { - tap_code(KC_MS_LEFT); + tap_code(MS_LEFT); } } else if (index == 1) { if (clockwise) { - tap_code(KC_MS_DOWN); + tap_code(MS_DOWN); } else { - tap_code(KC_MS_UP); + tap_code(MS_UP); } } break; diff --git a/keyboards/rart/rart4x4/keymaps/default/keymap.c b/keyboards/rart/rart4x4/keymaps/default/keymap.c index e57b87a35f..9f16aff6ed 100644 --- a/keyboards/rart/rart4x4/keymaps/default/keymap.c +++ b/keyboards/rart/rart4x4/keymaps/default/keymap.c @@ -43,9 +43,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } } else if (index == 1) { /* Second encoder */ if (clockwise) { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } else { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } } return true; diff --git a/keyboards/rart/rartpad/keymaps/default/keymap.c b/keyboards/rart/rartpad/keymaps/default/keymap.c index 342b280c57..8b177bba5c 100644 --- a/keyboards/rart/rartpad/keymaps/default/keymap.c +++ b/keyboards/rart/rartpad/keymaps/default/keymap.c @@ -45,9 +45,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } } else if (index == 1) { /* Second encoder */ if (clockwise) { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } else { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } } return true; diff --git a/keyboards/rate/pistachio/keymaps/default/keymap.c b/keyboards/rate/pistachio/keymaps/default/keymap.c index a8cd297ce8..3d7d8fb636 100644 --- a/keyboards/rate/pistachio/keymaps/default/keymap.c +++ b/keyboards/rate/pistachio/keymaps/default/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_MPLY, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_HOME, KC_MUTE, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT, KC_END, KC_VOLU, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_RSFT, KC_PGUP, - KC_VOLD, KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, JP_MHEN, LT(_FN,KC_SPC), LT(_FN,KC_SPC), JP_HENK, KC_BTN1, KC_INS, KC_RALT, KC_APP, KC_RCTL, KC_PGDN + KC_VOLD, KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, JP_MHEN, LT(_FN,KC_SPC), LT(_FN,KC_SPC), JP_HENK, MS_BTN1, KC_INS, KC_RALT, KC_APP, KC_RCTL, KC_PGDN ), [_FN] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/recompile_keys/nomu30/keymaps/center_sprit/keymap.c b/keyboards/recompile_keys/nomu30/keymaps/center_sprit/keymap.c index 16d320f045..98167fa2d3 100644 --- a/keyboards/recompile_keys/nomu30/keymaps/center_sprit/keymap.c +++ b/keyboards/recompile_keys/nomu30/keymaps/center_sprit/keymap.c @@ -93,9 +93,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-------------------------------------------------------------------------------------------------------------. QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| - _______, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX, + _______, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, XXXXXXX, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, XXXXXXX, //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| - UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, _______, KC_BTN1, KC_BTN2, XXXXXXX + UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX, _______, MS_BTN1, MS_BTN2, XXXXXXX //`---------+---------+---------+---------+---------+---------+---------+---------+---------' ) }; diff --git a/keyboards/recompile_keys/nomu30/keymaps/center_sprit/readme.md b/keyboards/recompile_keys/nomu30/keymaps/center_sprit/readme.md index 34a3ec1fbe..bc468beb37 100644 --- a/keyboards/recompile_keys/nomu30/keymaps/center_sprit/readme.md +++ b/keyboards/recompile_keys/nomu30/keymaps/center_sprit/readme.md @@ -59,9 +59,9 @@ At first, Move to Lower layer with long push. After that Adjust key with long pu //,-------------------------------------------------------------------------------------------------------------. QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| - _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX, + _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, XXXXXXX, //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------| - RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, _______, KC_BTN1, KC_BTN2, XXXXXXX + RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, _______, MS_BTN1, MS_BTN2, XXXXXXX //`---------+---------+---------+---------+---------+---------+---------+---------+---------' ) diff --git a/keyboards/redox/keymaps/default/keymap.c b/keyboards/redox/keymaps/default/keymap.c index d69a5d5cdd..2636144025 100644 --- a/keyboards/redox/keymaps/default/keymap.c +++ b/keyboards/redox/keymaps/default/keymap.c @@ -70,13 +70,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - XXXXXXX ,XXXXXXX ,KC_MS_U ,XXXXXXX ,KC_WH_U ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , + XXXXXXX ,XXXXXXX ,MS_UP ,XXXXXXX ,MS_WHLU ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - XXXXXXX ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,XXXXXXX ,_______ , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,XXXXXXX , + XXXXXXX ,MS_LEFT ,MS_DOWN ,MS_RGHT ,MS_WHLD ,XXXXXXX ,_______ , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,XXXXXXX , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ - XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , MS_BTN1 , MS_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ ), diff --git a/keyboards/redox_media/redox_media.c b/keyboards/redox_media/redox_media.c index e3a83c6c2d..ffc2f11a6c 100644 --- a/keyboards/redox_media/redox_media.c +++ b/keyboards/redox_media/redox_media.c @@ -29,9 +29,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } } else if (index == 1) { /* Second encoder */ if (clockwise) { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } else { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } } return true; diff --git a/keyboards/reviung/reviung5/keymaps/default_lre/keymap.c b/keyboards/reviung/reviung5/keymaps/default_lre/keymap.c index 4a73d57a6a..e53eccf645 100644 --- a/keyboards/reviung/reviung5/keymaps/default_lre/keymap.c +++ b/keyboards/reviung/reviung5/keymaps/default_lre/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { if (IS_LAYER_ON(_LOWER)) { - tap_code16((clockwise == true) ? KC_WH_D : KC_WH_U); + tap_code16((clockwise == true) ? MS_WHLD : MS_WHLU); } else { tap_code((clockwise == true) ? KC_VOLD : KC_VOLU); } diff --git a/keyboards/reviung/reviung5/keymaps/default_rre/keymap.c b/keyboards/reviung/reviung5/keymaps/default_rre/keymap.c index ec684c6a2f..4d7f666952 100644 --- a/keyboards/reviung/reviung5/keymaps/default_rre/keymap.c +++ b/keyboards/reviung/reviung5/keymaps/default_rre/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { if (IS_LAYER_ON(_LOWER)) { - tap_code16((clockwise == true) ? KC_WH_D : KC_WH_U); + tap_code16((clockwise == true) ? MS_WHLD : MS_WHLU); } else { tap_code((clockwise == true) ? KC_VOLD : KC_VOLU); } diff --git a/keyboards/rocketboard_16/keycode_lookup.c b/keyboards/rocketboard_16/keycode_lookup.c index a29808d04d..a765968bc3 100644 --- a/keyboards/rocketboard_16/keycode_lookup.c +++ b/keyboards/rocketboard_16/keycode_lookup.c @@ -254,22 +254,22 @@ lookup_table_t lookup_table[333] = {"KC_RSFT", KC_RSFT}, {"KC_RALT", KC_RALT}, {"KC_RGUI", KC_RGUI}, - {"KC_MS_UP", KC_MS_UP}, - {"KC_MS_DOWN", KC_MS_DOWN}, - {"KC_MS_LEFT", KC_MS_LEFT}, - {"KC_MS_RIGHT", KC_MS_RIGHT}, - {"KC_MS_BTN1", KC_MS_BTN1}, - {"KC_MS_BTN2", KC_MS_BTN2}, - {"KC_MS_BTN3", KC_MS_BTN3}, - {"KC_MS_BTN4", KC_MS_BTN4}, - {"KC_MS_BTN5", KC_MS_BTN5}, - {"KC_MS_WH_UP", KC_MS_WH_UP}, - {"KC_MS_WH_DOWN", KC_MS_WH_DOWN}, - {"KC_MS_WH_LEFT", KC_MS_WH_LEFT}, - {"KC_MS_WH_RIGHT", KC_MS_WH_RIGHT}, - {"KC_MS_ACCEL0", KC_MS_ACCEL0}, - {"KC_MS_ACCEL1", KC_MS_ACCEL1}, - {"KC_MS_ACCEL2", KC_MS_ACCEL2}, + {"MS_UP", MS_UP}, + {"MS_DOWN", MS_DOWN}, + {"MS_LEFT", MS_LEFT}, + {"MS_RGHT", MS_RGHT}, + {"MS_BTN1", MS_BTN1}, + {"MS_BTN2", MS_BTN2}, + {"MS_BTN3", MS_BTN3}, + {"MS_BTN4", MS_BTN4}, + {"MS_BTN5", MS_BTN5}, + {"MS_WHLU", MS_WHLU}, + {"MS_WHLD", MS_WHLD}, + {"MS_WHLL", MS_WHLL}, + {"MS_WHLR", MS_WHLR}, + {"MS_ACL0", MS_ACL0}, + {"MS_ACL1", MS_ACL1}, + {"MS_ACL2", MS_ACL2}, {"KC_EXLM", KC_EXLM}, {"KC_AT", KC_AT}, {"KC_HASH", KC_HASH}, diff --git a/keyboards/rominronin/katana60/rev1/keymaps/colemak/keymap.c b/keyboards/rominronin/katana60/rev1/keymaps/colemak/keymap.c index 29e9ddf825..34607fd5ed 100644 --- a/keyboards/rominronin/katana60/rev1/keymaps/colemak/keymap.c +++ b/keyboards/rominronin/katana60/rev1/keymaps/colemak/keymap.c @@ -42,10 +42,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [NUMB] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, DF(0), KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, - _______, _______, _______, KC_MS_U, _______, _______, _______, KC_7, KC_8, KC_9, KC_PPLS, _______, _______, _______, - _______, KC_BTN2, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_4, KC_5, KC_6, KC_PPLS, _______, _______, _______, - _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, KC_1, KC_2, KC_3, KC_PENT, _______, _______, _______, - _______, _______, _______, _______, KC_BTN1, _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______ + _______, _______, _______, MS_UP, _______, _______, _______, KC_7, KC_8, KC_9, KC_PPLS, _______, _______, _______, + _______, MS_BTN2, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, KC_4, KC_5, KC_6, KC_PPLS, _______, _______, _______, + _______, _______, MS_ACL0, MS_ACL1, MS_ACL2, _______, _______, _______, KC_1, KC_2, KC_3, KC_PENT, _______, _______, _______, + _______, _______, _______, _______, MS_BTN1, _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______ ), [SYMB] = LAYOUT( QK_BOOT, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, @@ -56,8 +56,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [CURS] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_WH_U, _______, _______, _______, _______, _______, _______, K_PRVWD, KC_UP, K_NXTWD, _______, _______, - _______, KC_LCTL, KC_WH_D, KC_LSFT, _______, _______, _______, _______, KC_BSPC, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, _______, + _______, _______, MS_WHLU, _______, _______, _______, _______, _______, _______, K_PRVWD, KC_UP, K_NXTWD, _______, _______, + _______, KC_LCTL, MS_WHLD, KC_LSFT, _______, _______, _______, _______, KC_BSPC, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, _______, _______, UNDO, CUT, COPY, PASTE, _______, _______, _______, _______, _______, K_LSTRT, _______, K_LEND, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) diff --git a/keyboards/rominronin/katana60/rev1/keymaps/default/keymap.c b/keyboards/rominronin/katana60/rev1/keymaps/default/keymap.c index 20ed993ade..1da40aa611 100644 --- a/keyboards/rominronin/katana60/rev1/keymaps/default/keymap.c +++ b/keyboards/rominronin/katana60/rev1/keymaps/default/keymap.c @@ -42,10 +42,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [NUMB] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, DF(0), KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, - _______, _______, _______, KC_MS_U, _______, _______, _______, KC_7, KC_8, KC_9, KC_PPLS, _______, _______, _______, - _______, KC_BTN2, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_4, KC_5, KC_6, KC_PPLS, _______, _______, _______, - _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, KC_1, KC_2, KC_3, KC_PENT, _______, _______, _______, - _______, _______, _______, _______, KC_BTN1, _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______ + _______, _______, _______, MS_UP, _______, _______, _______, KC_7, KC_8, KC_9, KC_PPLS, _______, _______, _______, + _______, MS_BTN2, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, KC_4, KC_5, KC_6, KC_PPLS, _______, _______, _______, + _______, _______, MS_ACL0, MS_ACL1, MS_ACL2, _______, _______, _______, KC_1, KC_2, KC_3, KC_PENT, _______, _______, _______, + _______, _______, _______, _______, MS_BTN1, _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______ ), [SYMB] = LAYOUT( QK_BOOT, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, @@ -56,8 +56,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [CURS] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_WH_U, _______, _______, _______, _______, _______, _______, K_PRVWD, KC_UP, K_NXTWD, _______, _______, - _______, KC_LCTL, KC_WH_D, KC_LSFT, _______, _______, _______, _______, KC_BSPC, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, _______, + _______, _______, MS_WHLU, _______, _______, _______, _______, _______, _______, K_PRVWD, KC_UP, K_NXTWD, _______, _______, + _______, KC_LCTL, MS_WHLD, KC_LSFT, _______, _______, _______, _______, KC_BSPC, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, _______, _______, UNDO, CUT, COPY, PASTE, _______, _______, _______, _______, _______, K_LSTRT, _______, K_LEND, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) diff --git a/keyboards/rominronin/katana60/rev2/keymaps/default/keymap.c b/keyboards/rominronin/katana60/rev2/keymaps/default/keymap.c index ee057c5c11..0964f0ebab 100644 --- a/keyboards/rominronin/katana60/rev2/keymaps/default/keymap.c +++ b/keyboards/rominronin/katana60/rev2/keymaps/default/keymap.c @@ -43,9 +43,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [NUMB] = LAYOUT_1_a( _______, _______, _______, _______, _______, _______, _______, DF(0), _______, _______, KC_PEQL, KC_PSLS, KC_PAST, _______, _______, - _______, _______, _______, KC_MS_U, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______, - _______, KC_BTN2, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, - _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______, + _______, _______, _______, MS_UP, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______, + _______, MS_BTN2, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, + _______, _______, MS_ACL0, MS_ACL1, MS_ACL2, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______, _______, _______, _______, _______, KC_P0, _______, _______, KC_PDOT, KC_PENT, _______, _______ ), [SYMB] = LAYOUT_1_a( diff --git a/keyboards/salicylic_acid3/nafuda/keymaps/default/keymap.c b/keyboards/salicylic_acid3/nafuda/keymaps/default/keymap.c index 21889f2fe6..9c2917fac1 100644 --- a/keyboards/salicylic_acid3/nafuda/keymaps/default/keymap.c +++ b/keyboards/salicylic_acid3/nafuda/keymaps/default/keymap.c @@ -33,9 +33,9 @@ LT(_ADJUST, KC_BSPC), KC_UP,TG(_BROWSER), //|-------------------------------------------| TG(_MOUSE), //|---------------+---------------+-----------| - KC_BTN1, KC_MS_U, KC_BTN2, + MS_BTN1, MS_UP, MS_BTN2, //|---------------+---------------+-----------| - KC_MS_L, KC_MS_D, KC_MS_R + MS_LEFT, MS_DOWN, MS_RGHT //|-------------------------------------------| ), @@ -43,9 +43,9 @@ LT(_ADJUST, KC_BSPC), KC_UP,TG(_BROWSER), //|-------------------------------------------| LCTL(KC_W), //|---------------+---------------+-----------| - LCTL(LSFT(KC_T)), KC_WH_U,TG(_BROWSER), + LCTL(LSFT(KC_T)), MS_WHLU,TG(_BROWSER), //|---------------+---------------+-----------| - LCTL(LSFT(KC_TAB)), KC_WH_D,LCTL(KC_TAB) + LCTL(LSFT(KC_TAB)), MS_WHLD,LCTL(KC_TAB) //|-------------------------------------------| ), diff --git a/keyboards/salicylic_acid3/naked48/keymaps/default_with_nafuda/keymap.c b/keyboards/salicylic_acid3/naked48/keymaps/default_with_nafuda/keymap.c index 6dd300f9db..4c5b7656d1 100644 --- a/keyboards/salicylic_acid3/naked48/keymaps/default_with_nafuda/keymap.c +++ b/keyboards/salicylic_acid3/naked48/keymaps/default_with_nafuda/keymap.c @@ -43,9 +43,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------| KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, TG(_MOUSE), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| - 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_BTN1, KC_MS_U, KC_BTN2, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, MS_BTN1, MS_UP, MS_BTN2, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_MS_L, KC_MS_D, KC_MS_R, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, MS_LEFT, MS_DOWN, MS_RGHT, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------| MO(_ADJUST),KC_LCTL, KC_LALT, KC_LGUI,MO(_LOWER),KC_SPC,KC_SPC,MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT //`------------------------------------------------------------------------------------------------------------' @@ -55,9 +55,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------| KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, LCTL(KC_W), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,LCTL(LSFT(KC_T)),KC_WH_U,TG(_BROWSER), + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,LCTL(LSFT(KC_T)),MS_WHLU,TG(_BROWSER), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,LCTL(LSFT(KC_TAB)), KC_WH_D,LCTL(KC_TAB), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,LCTL(LSFT(KC_TAB)), MS_WHLD,LCTL(KC_TAB), //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------| MO(_ADJUST),KC_LCTL, KC_LALT, KC_LGUI,MO(_LOWER),KC_SPC,KC_SPC,MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT //`------------------------------------------------------------------------------------------------------------' diff --git a/keyboards/salicylic_acid3/naked60/keymaps/default/keymap.c b/keyboards/salicylic_acid3/naked60/keymaps/default/keymap.c index ffc5a0ad62..7c0f96a076 100644 --- a/keyboards/salicylic_acid3/naked60/keymaps/default/keymap.c +++ b/keyboards/salicylic_acid3/naked60/keymaps/default/keymap.c @@ -80,9 +80,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-----------------------------------------------------| |-----------------------------------------------------. TG(_FLOCK), KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MS_BTN1, MS_UP, MS_BTN2, XXXXXXX,LALT(KC_PSCR), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MS_LEFT, MS_DOWN, MS_RGHT, XXXXXXX, KC_PSCR, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| diff --git a/keyboards/salicylic_acid3/naked60/keymaps/default_with_nafuda/keymap.c b/keyboards/salicylic_acid3/naked60/keymaps/default_with_nafuda/keymap.c index 89c44f87a6..0db21f9bdc 100644 --- a/keyboards/salicylic_acid3/naked60/keymaps/default_with_nafuda/keymap.c +++ b/keyboards/salicylic_acid3/naked60/keymaps/default_with_nafuda/keymap.c @@ -55,9 +55,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------| KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, TG(_MOUSE), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_BTN1, MS_UP, MS_BTN2, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------| _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| @@ -69,9 +69,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------| _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LCTL(KC_W), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,LCTL(LSFT(KC_T)),KC_WH_U,TG(_BROWSER), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,LCTL(LSFT(KC_T)),MS_WHLU,TG(_BROWSER), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,LCTL(LSFT(KC_TAB)), KC_WH_D,LCTL(KC_TAB), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,LCTL(LSFT(KC_TAB)), MS_WHLD,LCTL(KC_TAB), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------| _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| @@ -111,9 +111,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------| TG(_FLOCK), KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, UG_VALD, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), _ADJUST, UG_SATD, UG_VALU, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MS_BTN1, MS_UP, MS_BTN2, XXXXXXX,LALT(KC_PSCR), _ADJUST, UG_SATD, UG_VALU, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, UG_NEXT, UG_TOGG, UG_SATU, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MS_LEFT, MS_DOWN, MS_RGHT, XXXXXXX, KC_PSCR, UG_NEXT, UG_TOGG, UG_SATU, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------| _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| diff --git a/keyboards/salicylic_acid3/naked60/keymaps/default_with_setta21/keymap.c b/keyboards/salicylic_acid3/naked60/keymaps/default_with_setta21/keymap.c index 81c1c63541..07d2111b88 100644 --- a/keyboards/salicylic_acid3/naked60/keymaps/default_with_setta21/keymap.c +++ b/keyboards/salicylic_acid3/naked60/keymaps/default_with_setta21/keymap.c @@ -86,9 +86,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------| TG(_FLOCK), KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,UG_VALD,UG_HUED,UG_SATD,XXXXXXX,_______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------| - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), UG_VALU,UG_HUEU,UG_SATU,XXXXXXX,_______, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MS_BTN1, MS_UP, MS_BTN2, XXXXXXX,LALT(KC_PSCR), UG_VALU,UG_HUEU,UG_SATU,XXXXXXX,_______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------| - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, _______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MS_LEFT, MS_DOWN, MS_RGHT, XXXXXXX, KC_PSCR, _______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------| _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), UG_NEXT, UG_TOGG,_______,_______, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------| diff --git a/keyboards/sergiopoverony/creator_pro/keymaps/default/keymap.c b/keyboards/sergiopoverony/creator_pro/keymaps/default/keymap.c index d29621929b..11ee5a85d7 100644 --- a/keyboards/sergiopoverony/creator_pro/keymaps/default/keymap.c +++ b/keyboards/sergiopoverony/creator_pro/keymaps/default/keymap.c @@ -39,9 +39,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) { case _RED: if (clockwise) { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } else { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } break; diff --git a/keyboards/shuguet/shu89/keymaps/default/keymap.json b/keyboards/shuguet/shu89/keymaps/default/keymap.json index 1725f3438e..12cdccf3db 100644 --- a/keyboards/shuguet/shu89/keymaps/default/keymap.json +++ b/keyboards/shuguet/shu89/keymaps/default/keymap.json @@ -13,8 +13,8 @@ ], [ "QK_BOOT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", "RGB_VAI", "RGB_VAD", "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG" , "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "RM_VALU", "RM_VALD", "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RM_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", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_VOLU", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MPLY", "KC_MPLY", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MPRV", "KC_VOLD", "KC_MNXT" diff --git a/keyboards/signum/3_0/keymaps/default/keymap.c b/keyboards/signum/3_0/keymaps/default/keymap.c index 27f79e7692..76a349f713 100644 --- a/keyboards/signum/3_0/keymaps/default/keymap.c +++ b/keyboards/signum/3_0/keymaps/default/keymap.c @@ -750,9 +750,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ------------------------------------------------- */ LAYOUT_ortho_4x12( - KC_TRNS, KC_ACL1, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, KC_NO, KC_NO, - KC_TRNS, KC_ACL2, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN1, KC_MS_L, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, - KC_TRNS, KC_ACL0, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_NO, KC_MS_D, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, MS_ACL1, KC_NO, KC_NO, KC_NO, KC_NO, MS_WHLU, MS_WHLL, MS_UP, MS_WHLR, KC_NO, KC_NO, + KC_TRNS, MS_ACL2, MS_BTN2, MS_BTN3, MS_BTN1, MS_BTN1, MS_LEFT, MS_LEFT, MS_DOWN, MS_RGHT, KC_NO, KC_NO, + KC_TRNS, MS_ACL0, KC_NO, KC_NO, KC_NO, KC_NO, MS_WHLD, KC_NO, MS_DOWN, KC_NO, KC_NO, KC_TRNS, TG(6), 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/signum/3_0/keymaps/default/layout.py b/keyboards/signum/3_0/keymaps/default/layout.py index 4691985d29..b7c07eb6a4 100644 --- a/keyboards/signum/3_0/keymaps/default/layout.py +++ b/keyboards/signum/3_0/keymaps/default/layout.py @@ -380,12 +380,12 @@ qmk_dict = { # Layer Switching missing, Lx -> MO(x), Tx -> TG(x) "qwertz": "DF(0)", "neo": "DF(2)", # Mouse Keys - "^ Mouse": "KC_MS_U", "v Mouse": "KC_MS_D", "< Mouse": "KC_MS_L", - "> Mouse": "KC_MS_R", "Mouse 1": "KC_BTN1", "Mouse 2": "KC_BTN2", - "Mouse 3": "KC_BTN3", "Mouse 4": "KC_BTN4", "Mouse 5": "KC_BTN5", - "^ Wheel": "KC_WH_U", "v Wheel": "KC_WH_D", "< Wheel": "KC_WH_L", - "> Wheel": "KC_WH_R", "acc0": "KC_ACL0", "acc1": "KC_ACL1", - "acc2": "KC_ACL2", + "^ Mouse": "MS_UP", "v Mouse": "MS_DOWN", "< Mouse": "MS_LEFT", + "> Mouse": "MS_RGHT", "Mouse 1": "MS_BTN1", "Mouse 2": "MS_BTN2", + "Mouse 3": "MS_BTN3", "Mouse 4": "MS_BTN4", "Mouse 5": "MS_BTN5", + "^ Wheel": "MS_WHLU", "v Wheel": "MS_WHLD", "< Wheel": "MS_WHLL", + "> Wheel": "MS_WHLR", "acc0": "MS_ACL0", "acc1": "MS_ACL1", + "acc2": "MS_ACL2", # Modifiers missinng, add entry for each specific application # Mod-Tap Keys missing, add entry for each specific application "_Sh_swp": "LSFT_T(SH_TOGG)", diff --git a/keyboards/splitkb/aurora/sweep/keymaps/default/keymap.json b/keyboards/splitkb/aurora/sweep/keymaps/default/keymap.json index 885faaf858..12ec8170fc 100644 --- a/keyboards/splitkb/aurora/sweep/keymaps/default/keymap.json +++ b/keyboards/splitkb/aurora/sweep/keymaps/default/keymap.json @@ -11,9 +11,9 @@ "KC_P0" , "KC_BSPC" , "LT(7,KC_SPC)" , "KC_P1" ], [ - "RM_TOGG" , "RM_NEXT" , "RM_HUEU" , "RM_SATU" , "RM_VALU" , "RM_SPDU" , "KC_BTN1" , "KC_WH_U" , "KC_BTN2" , "KC_TRNS", - "KC_TRNS" , "KC_BTN2" , "KC_NO" , "KC_BTN1" , "KC_TRNS" , "KC_TRNS" , "KC_MS_L" , "KC_MS_D" , "KC_MS_U" , "KC_MS_R", - "KC_TRNS" , "RM_PREV" , "RM_HUED" , "RM_SATD" , "RM_VALD" , "RM_SPDD" , "KC_WH_L" , "KC_WH_D" , "KC_WH_R" , "KC_TRNS", + "RM_TOGG" , "RM_NEXT" , "RM_HUEU" , "RM_SATU" , "RM_VALU" , "RM_SPDU" , "MS_BTN1" , "MS_WHLU" , "MS_BTN2" , "KC_TRNS", + "KC_TRNS" , "MS_BTN2" , "KC_NO" , "MS_BTN1" , "KC_TRNS" , "KC_TRNS" , "MS_LEFT" , "MS_DOWN" , "MS_UP" , "MS_RGHT", + "KC_TRNS" , "RM_PREV" , "RM_HUED" , "RM_SATD" , "RM_VALD" , "RM_SPDD" , "MS_WHLL" , "MS_WHLD" , "MS_WHLR" , "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" ], [ diff --git a/keyboards/splitkb/halcyon/ferris/keymaps/default/keymap.json b/keyboards/splitkb/halcyon/ferris/keymaps/default/keymap.json index 95748c743f..df28d96b42 100644 --- a/keyboards/splitkb/halcyon/ferris/keymaps/default/keymap.json +++ b/keyboards/splitkb/halcyon/ferris/keymaps/default/keymap.json @@ -11,9 +11,9 @@ "KC_P0" , "KC_BSPC" , "LT(7,KC_SPC)" , "KC_P1" ], [ - "RM_TOGG" , "RM_NEXT" , "RM_HUEU" , "RM_SATU" , "RM_VALU" , "RM_SPDU" , "KC_BTN1" , "KC_WH_U" , "KC_BTN2" , "KC_TRNS", - "KC_TRNS" , "KC_BTN2" , "KC_NO" , "KC_BTN1" , "KC_TRNS" , "KC_TRNS" , "KC_MS_L" , "KC_MS_D" , "KC_MS_U" , "KC_MS_R", - "KC_TRNS" , "RM_PREV" , "RM_HUED" , "RM_SATD" , "RM_VALD" , "RM_SPDD" , "KC_WH_L" , "KC_WH_D" , "KC_WH_R" , "KC_TRNS", + "RM_TOGG" , "RM_NEXT" , "RM_HUEU" , "RM_SATU" , "RM_VALU" , "RM_SPDU" , "MS_BTN1" , "MS_WHLU" , "MS_BTN2" , "KC_TRNS", + "KC_TRNS" , "MS_BTN2" , "KC_NO" , "MS_BTN1" , "KC_TRNS" , "KC_TRNS" , "MS_LEFT" , "MS_DOWN" , "MS_UP" , "MS_RGHT", + "KC_TRNS" , "RM_PREV" , "RM_HUED" , "RM_SATD" , "RM_VALD" , "RM_SPDD" , "MS_WHLL" , "MS_WHLD" , "MS_WHLR" , "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" ], [ diff --git a/keyboards/tada68/keymaps/default/keymap.c b/keyboards/tada68/keymaps/default/keymap.c index fcc37aff6c..f4fa3a95d3 100755 --- a/keyboards/tada68/keymaps/default/keymap.c +++ b/keyboards/tada68/keymaps/default/keymap.c @@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, 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_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, - _______, _______, _______, BL_DOWN, BL_TOGG, BL_UP, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_BTN1, KC_MS_U, KC_BTN2, - _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R + _______, _______, _______, BL_DOWN, BL_TOGG, BL_UP, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, MS_BTN1, MS_UP, MS_BTN2, + _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT ), }; diff --git a/keyboards/tada68/keymaps/rgb/keymap.c b/keyboards/tada68/keymaps/rgb/keymap.c index 0f2186b0b3..7f57c9ddfb 100755 --- a/keyboards/tada68/keymaps/rgb/keymap.c +++ b/keyboards/tada68/keymaps/rgb/keymap.c @@ -45,6 +45,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, 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_UP,_______,_______, UG_TOGG,UG_NEXT,UG_HUEU,UG_HUED,UG_SATU,UG_SATD,UG_VALU,UG_VALD, _______,KC_HOME, _______,KC_LEFT,KC_DOWN,KC_RIGHT,_______,_______,_______,_______,_______,_______,_______,_______, _______,KC_END, - _______,_______,_______,BL_DOWN,BL_TOGG,BL_UP, _______,KC_VOLD,KC_VOLU,KC_MUTE,_______,KC_BTN1, KC_MS_U, KC_BTN2, - _______,_______,_______, _______, _______,_______,_______,KC_MS_L,KC_MS_D, KC_MS_R), + _______,_______,_______,BL_DOWN,BL_TOGG,BL_UP, _______,KC_VOLD,KC_VOLU,KC_MUTE,_______,MS_BTN1, MS_UP, MS_BTN2, + _______,_______,_______, _______, _______,_______,_______,MS_LEFT,MS_DOWN, MS_RGHT), }; diff --git a/keyboards/takashicompany/baumkuchen/baumkuchen.c b/keyboards/takashicompany/baumkuchen/baumkuchen.c index 7d4f26b73e..e7cc85f091 100644 --- a/keyboards/takashicompany/baumkuchen/baumkuchen.c +++ b/keyboards/takashicompany/baumkuchen/baumkuchen.c @@ -10,9 +10,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } if (clockwise) { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } else { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } return true; diff --git a/keyboards/takashicompany/center_enter/keymaps/default/keymap.c b/keyboards/takashicompany/center_enter/keymaps/default/keymap.c index 82fafc41c7..a6d9ab43a6 100644 --- a/keyboards/takashicompany/center_enter/keymaps/default/keymap.c +++ b/keyboards/takashicompany/center_enter/keymaps/default/keymap.c @@ -88,9 +88,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } else { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } return true; diff --git a/keyboards/takashicompany/compacx/compacx.c b/keyboards/takashicompany/compacx/compacx.c index 5a63210c5b..5f4a262273 100644 --- a/keyboards/takashicompany/compacx/compacx.c +++ b/keyboards/takashicompany/compacx/compacx.c @@ -19,9 +19,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (!clockwise) { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } else { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } return true; diff --git a/keyboards/takashicompany/dogtag/keymaps/default/keymap.c b/keyboards/takashicompany/dogtag/keymaps/default/keymap.c index c109ee4093..9c966137e7 100644 --- a/keyboards/takashicompany/dogtag/keymaps/default/keymap.c +++ b/keyboards/takashicompany/dogtag/keymaps/default/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }, + [0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(MS_WHLU, MS_WHLD) }, [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, }; #endif diff --git a/keyboards/takashicompany/goat51/keymaps/default/keymap.c b/keyboards/takashicompany/goat51/keymaps/default/keymap.c index 39267f596c..71d623c91f 100644 --- a/keyboards/takashicompany/goat51/keymaps/default/keymap.c +++ b/keyboards/takashicompany/goat51/keymaps/default/keymap.c @@ -114,9 +114,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } else { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } return true; diff --git a/keyboards/takashicompany/jourkey/keymaps/default/keymap.c b/keyboards/takashicompany/jourkey/keymaps/default/keymap.c index fa642bc6e2..62650eb777 100644 --- a/keyboards/takashicompany/jourkey/keymaps/default/keymap.c +++ b/keyboards/takashicompany/jourkey/keymaps/default/keymap.c @@ -13,6 +13,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) } + [0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) } }; #endif diff --git a/keyboards/takashicompany/qoolee/keymaps/default/keymap.c b/keyboards/takashicompany/qoolee/keymaps/default/keymap.c index 04595e49c1..7c6f68ee5e 100644 --- a/keyboards/takashicompany/qoolee/keymaps/default/keymap.c +++ b/keyboards/takashicompany/qoolee/keymaps/default/keymap.c @@ -69,9 +69,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } else { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } return true; diff --git a/keyboards/takashicompany/spreadwriter/keymaps/default/keymap.c b/keyboards/takashicompany/spreadwriter/keymaps/default/keymap.c index 83572b124b..5858e9d8b1 100644 --- a/keyboards/takashicompany/spreadwriter/keymaps/default/keymap.c +++ b/keyboards/takashicompany/spreadwriter/keymaps/default/keymap.c @@ -81,9 +81,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } else { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } return false; } diff --git a/keyboards/thumbsup/keymaps/default/keymap.c b/keyboards/thumbsup/keymaps/default/keymap.c index 04a16a5081..e9fb913248 100644 --- a/keyboards/thumbsup/keymaps/default/keymap.c +++ b/keyboards/thumbsup/keymaps/default/keymap.c @@ -98,9 +98,9 @@ without separate thumbcluster. * `-------------------------------------------------------' */ [_CURSORRGHT] = LAYOUT( - _______, KC_BRK, KC_WH_D, KC_MS_U, KC_WH_U, KC_DEL, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_GRV, KC_DEL, - KC_ENT, LCTL(KC_A), KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, _______, - _______, LCTL(KC_Z), LSFT(KC_DEL), LCTL(KC_INS), LSFT(KC_INS), XXXXXXX, KC_INS, KC_BTN1, KC_BTN3, KC_BTN2, XXXXXXX, _______, + _______, KC_BRK, MS_WHLD, MS_UP, MS_WHLU, KC_DEL, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_GRV, KC_DEL, + KC_ENT, LCTL(KC_A), MS_LEFT, MS_DOWN, MS_RGHT, XXXXXXX, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, _______, + _______, LCTL(KC_Z), LSFT(KC_DEL), LCTL(KC_INS), LSFT(KC_INS), XXXXXXX, KC_INS, MS_BTN1, MS_BTN3, MS_BTN2, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), @@ -118,9 +118,9 @@ without separate thumbcluster. * `-------------------------------------------------------' */ [_CURSORLEFT] = LAYOUT( - _______, KC_BRK, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_DEL, KC_WH_U, KC_MS_U, KC_WH_D, KC_GRV, KC_DEL, - KC_ENT, LCTL(KC_A), KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, _______, - _______, XXXXXXX, KC_BTN2, KC_BTN3, KC_BTN1, KC_INS, XXXXXXX, LCTL(KC_DEL), LCTL(KC_INS), LSFT(KC_INS), XXXXXXX, _______, + _______, KC_BRK, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_DEL, MS_WHLU, MS_UP, MS_WHLD, KC_GRV, KC_DEL, + KC_ENT, LCTL(KC_A), KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, MS_LEFT, MS_DOWN, MS_RGHT, XXXXXXX, _______, + _______, XXXXXXX, MS_BTN2, MS_BTN3, MS_BTN1, KC_INS, XXXXXXX, LCTL(KC_DEL), LCTL(KC_INS), LSFT(KC_INS), XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), diff --git a/keyboards/toffee_studio/blueberry/keymaps/default/keymap.c b/keyboards/toffee_studio/blueberry/keymaps/default/keymap.c index ee26853885..11bc271ea1 100644 --- a/keyboards/toffee_studio/blueberry/keymaps/default/keymap.c +++ b/keyboards/toffee_studio/blueberry/keymaps/default/keymap.c @@ -28,9 +28,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_DEL, - _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, UG_SPDU, - KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER, UG_SPDD, - KC_WH_D, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, UG_VALU, UG_TOGG, + _______, MS_BTN1, MS_UP, MS_BTN2, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, UG_SPDU, + MS_WHLU, MS_LEFT, MS_DOWN, MS_RGHT, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER, UG_SPDD, + MS_WHLD, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, UG_VALU, UG_TOGG, _______, _______, _______, KC_SPC, MO(2), _______, UG_PREV, UG_VALD, UG_NEXT ), diff --git a/keyboards/tominabox1/le_chiffre/keymaps/default/keymap.c b/keyboards/tominabox1/le_chiffre/keymaps/default/keymap.c index 291f98a60e..756eb06506 100644 --- a/keyboards/tominabox1/le_chiffre/keymaps/default/keymap.c +++ b/keyboards/tominabox1/le_chiffre/keymaps/default/keymap.c @@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_BASE] = {ENCODER_CCW_CW(KC_MNXT, KC_MPRV) }, - [_NUM_SYM] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U) }, + [_NUM_SYM] = { ENCODER_CCW_CW(MS_WHLD, MS_WHLU) }, [_NAV] = { ENCODER_CCW_CW(KC_PGDN, KC_PGUP) } }; #endif diff --git a/keyboards/tunks/ergo33/keymaps/default/keymap.c b/keyboards/tunks/ergo33/keymaps/default/keymap.c index 8f646f08ca..58e7b8ec27 100644 --- a/keyboards/tunks/ergo33/keymaps/default/keymap.c +++ b/keyboards/tunks/ergo33/keymaps/default/keymap.c @@ -49,9 +49,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { if (clockwise) { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } else { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } } return true; diff --git a/keyboards/tzarc/djinn/keymaps/default/keymap.c b/keyboards/tzarc/djinn/keymaps/default/keymap.c index b63e1624c7..2c6fb9e1db 100644 --- a/keyboards/tzarc/djinn/keymaps/default/keymap.c +++ b/keyboards/tzarc/djinn/keymaps/default/keymap.c @@ -63,10 +63,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // clang-format off const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_LOWER] = { ENCODER_CCW_CW(RM_HUED, RM_HUEU), ENCODER_CCW_CW(RM_SATD, RM_SATU) }, - [_RAISE] = { ENCODER_CCW_CW(RM_VALD, RM_VALU), ENCODER_CCW_CW(RM_SPDD, RM_SPDU) }, - [_ADJUST] = { ENCODER_CCW_CW(RM_PREV, RM_NEXT), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) }, + [_QWERTY] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_LOWER] = { ENCODER_CCW_CW(RM_HUED, RM_HUEU), ENCODER_CCW_CW(RM_SATD, RM_SATU) }, + [_RAISE] = { ENCODER_CCW_CW(RM_VALD, RM_VALU), ENCODER_CCW_CW(RM_SPDD, RM_SPDU) }, + [_ADJUST] = { ENCODER_CCW_CW(RM_PREV, RM_NEXT), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) }, }; // clang-format on diff --git a/keyboards/varanidae/keymaps/ansi/keymap.c b/keyboards/varanidae/keymaps/ansi/keymap.c index c020bd6718..94ebf62048 100644 --- a/keyboards/varanidae/keymaps/ansi/keymap.c +++ b/keyboards/varanidae/keymaps/ansi/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_ansi( - KC_BTN3, KC_F16, KC_F17, KC_F18, KC_F19, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, + MS_BTN3, KC_F16, KC_F17, KC_F18, KC_F19, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, 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_PSLS, KC_P7, KC_P8, KC_P9, 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_PAST, KC_P4, KC_P5, KC_P6, KC_END, KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, @@ -30,6 +30,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D) } + [0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) } }; #endif diff --git a/keyboards/varanidae/keymaps/ansi_split_bs_rshift/keymap.c b/keyboards/varanidae/keymaps/ansi_split_bs_rshift/keymap.c index becb812071..fdc0d4c526 100644 --- a/keyboards/varanidae/keymaps/ansi_split_bs_rshift/keymap.c +++ b/keyboards/varanidae/keymaps/ansi_split_bs_rshift/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_ansi_split_bs_rshift( - KC_BTN3, KC_F16, KC_F17, KC_F18, KC_F19, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, + MS_BTN3, KC_F16, KC_F17, KC_F18, KC_F19, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, 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_DEL, KC_BSPC, KC_PSLS, KC_P7, KC_P8, KC_P9, 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_PAST, KC_P4, KC_P5, KC_P6, KC_END, KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, @@ -30,6 +30,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D) } + [0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) } }; #endif diff --git a/keyboards/varanidae/keymaps/default/keymap.c b/keyboards/varanidae/keymaps/default/keymap.c index 4c43532108..fff5411754 100644 --- a/keyboards/varanidae/keymaps/default/keymap.c +++ b/keyboards/varanidae/keymaps/default/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_all( - KC_BTN3, KC_F16, KC_F17, KC_F18, KC_F19, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, + MS_BTN3, KC_F16, KC_F17, KC_F18, KC_F19, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, 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_DEL, KC_BSPC, KC_PSLS, KC_P7, KC_P8, KC_P9, 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_PAST, KC_P4, KC_P5, KC_P6, KC_END, KC_LALT, 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, @@ -30,6 +30,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D) } + [0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) } }; #endif diff --git a/keyboards/varanidae/keymaps/iso/keymap.c b/keyboards/varanidae/keymaps/iso/keymap.c index b1f1b0c9a4..0de8eb6c23 100644 --- a/keyboards/varanidae/keymaps/iso/keymap.c +++ b/keyboards/varanidae/keymaps/iso/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_iso( - KC_BTN3, KC_F16, KC_F17, KC_F18, KC_F19, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, + MS_BTN3, KC_F16, KC_F17, KC_F18, KC_F19, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, 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_PSLS, KC_P7, KC_P8, KC_P9, 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_PAST, KC_P4, KC_P5, KC_P6, KC_END, KC_LALT, 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, @@ -30,6 +30,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D) } + [0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) } }; #endif diff --git a/keyboards/varanidae/keymaps/iso_split_bs_rshift/keymap.c b/keyboards/varanidae/keymaps/iso_split_bs_rshift/keymap.c index 7324f62877..5d53eccab9 100644 --- a/keyboards/varanidae/keymaps/iso_split_bs_rshift/keymap.c +++ b/keyboards/varanidae/keymaps/iso_split_bs_rshift/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_iso_split_bs_rshift( - KC_BTN3, KC_F16, KC_F17, KC_F18, KC_F19, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, + MS_BTN3, KC_F16, KC_F17, KC_F18, KC_F19, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, 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_DEL, KC_BSPC, KC_PSLS, KC_P7, KC_P8, KC_P9, 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_PAST, KC_P4, KC_P5, KC_P6, KC_END, KC_LALT, 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, @@ -30,6 +30,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D) } + [0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD) } }; #endif diff --git a/keyboards/waterfowl/waterfowl.c b/keyboards/waterfowl/waterfowl.c index fb30fd0078..9d9b0bf467 100644 --- a/keyboards/waterfowl/waterfowl.c +++ b/keyboards/waterfowl/waterfowl.c @@ -23,9 +23,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } if (index == 0) { // Left roller if (clockwise) { - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); } else { - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); } } else if (index == 1) { // Left encoder if (clockwise) { @@ -35,9 +35,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } } else if (index == 2) { // Right roller if (clockwise) { - tap_code16(S(KC_MS_WH_DOWN)); + tap_code16(S(MS_WHLD)); } else { - tap_code16(S(KC_MS_WH_UP)); + tap_code16(S(MS_WHLU)); } } else if (index == 3) { // Right encoder if (clockwise) { diff --git a/keyboards/wolf/frogpad/keymaps/default/keymap.c b/keyboards/wolf/frogpad/keymaps/default/keymap.c index adc4cf77e8..236afeab06 100644 --- a/keyboards/wolf/frogpad/keymaps/default/keymap.c +++ b/keyboards/wolf/frogpad/keymaps/default/keymap.c @@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_LAYER0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_LAYER1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) } + [_LAYER0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_LAYER1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) } }; #endif \ No newline at end of file diff --git a/keyboards/work_louder/micro/micro.c b/keyboards/work_louder/micro/micro.c index 07ab92f7a7..f88ac8bb45 100644 --- a/keyboards/work_louder/micro/micro.c +++ b/keyboards/work_louder/micro/micro.c @@ -39,9 +39,9 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } } else if (index == 1) { if (clockwise) { - tap_code_delay(KC_WH_U, 10); + tap_code_delay(MS_WHLU, 10); } else { - tap_code_delay(KC_WH_D, 10); + tap_code_delay(MS_WHLD, 10); } } return true; diff --git a/keyboards/xdboards/recon/recon.c b/keyboards/xdboards/recon/recon.c index 708c9d894c..823f3df7bf 100644 --- a/keyboards/xdboards/recon/recon.c +++ b/keyboards/xdboards/recon/recon.c @@ -101,13 +101,13 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { // Page up/Page down if (clockwise) { #ifdef MOUSEKEY_ENABLE - tap_code(KC_WH_U); + tap_code(MS_WHLU); #else tap_code(KC_PGUP); #endif } else { #ifdef MOUSEKEY_ENABLE - tap_code(KC_WH_D); + tap_code(MS_WHLD); #else tap_code(KC_PGDN); #endif diff --git a/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c b/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c index ad54ef0c86..e3a54e714e 100644 --- a/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c +++ b/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [1] = LAYOUT_60_ansi_split_bs_rshift_space( QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, - KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SCRL, KC_PAUS, KC_DEL, + KC_NO, MS_WHLU, KC_UP, MS_WHLD, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SCRL, KC_PAUS, KC_DEL, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, KC_INS, KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, KC_SPC, KC_ESC, KC_RGUI, MO(1), KC_HOME, KC_PGDN, KC_END diff --git a/keyboards/xiudi/xd60/keymaps/default/keymap.c b/keyboards/xiudi/xd60/keymaps/default/keymap.c index af133d9b3a..f6dce2c5c7 100644 --- a/keyboards/xiudi/xd60/keymaps/default/keymap.c +++ b/keyboards/xiudi/xd60/keymaps/default/keymap.c @@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // 1: Function Layer LAYOUT_all( QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, - KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SCRL, KC_PAUS, KC_DEL, + KC_NO, MS_WHLU, KC_UP, MS_WHLD, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SCRL, KC_PAUS, KC_DEL, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, KC_INS, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDN, KC_END), diff --git a/keyboards/yanghu/unicorne/keymaps/default/keymap.c b/keyboards/yanghu/unicorne/keymaps/default/keymap.c index 48e3b9a343..590f4a16ba 100644 --- a/keyboards/yanghu/unicorne/keymaps/default/keymap.c +++ b/keyboards/yanghu/unicorne/keymaps/default/keymap.c @@ -59,13 +59,13 @@ bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { if (clockwise) { #ifdef MOUSEKEY_ENABLE - tap_code(KC_MS_WH_DOWN); + tap_code(MS_WHLD); #else tap_code(KC_PGDN); #endif } else { #ifdef MOUSEKEY_ENABLE - tap_code(KC_MS_WH_UP); + tap_code(MS_WHLU); #else tap_code(KC_PGUP); #endif diff --git a/keyboards/ydkb/grape/keymaps/default/keymap.c b/keyboards/ydkb/grape/keymaps/default/keymap.c index 62a9e55433..d468c44028 100644 --- a/keyboards/ydkb/grape/keymaps/default/keymap.c +++ b/keyboards/ydkb/grape/keymaps/default/keymap.c @@ -24,6 +24,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_P0, KC_P0, KC_PDOT, KC_PENT, 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_F13, KC_F14, KC_F15, KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_F16, KC_F17, KC_F18, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_BTN1, KC_BTN2 + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, MS_BTN1, MS_BTN2 ) }; diff --git a/keyboards/ymdk/yd60mq/keymaps/iso/keymap.c b/keyboards/ymdk/yd60mq/keymaps/iso/keymap.c index 9c437680df..310549c07d 100644 --- a/keyboards/ymdk/yd60mq/keymaps/iso/keymap.c +++ b/keyboards/ymdk/yd60mq/keymaps/iso/keymap.c @@ -19,8 +19,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,: Function Layer [1] = LAYOUT_60_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, - XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, KC_HOME, KC_PSCR, - KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, UG_HUEU, UG_SATU, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, XXXXXXX, KC_MNXT, + XXXXXXX, MS_BTN1, MS_UP, MS_BTN2, MS_WHLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, KC_HOME, KC_PSCR, + KC_TRNS, MS_LEFT, MS_DOWN, MS_RGHT, MS_WHLD, UG_HUEU, UG_SATU, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, XXXXXXX, KC_MNXT, KC_TRNS, UG_NEXT, UG_PREV, UG_VALU, UG_VALD, UG_HUED, UG_SATD, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MPRV, KC_TRNS, KC_TRNS, KC_TRNS, UG_TOGG, UG_SPDU, UG_SPDD, XXXXXXX, KC_TRNS ) diff --git a/keyboards/yushakobo/navpad/10/keymaps/default/keymap.c b/keyboards/yushakobo/navpad/10/keymaps/default/keymap.c index a0c62cc4ce..c0e194aeda 100644 --- a/keyboards/yushakobo/navpad/10/keymaps/default/keymap.c +++ b/keyboards/yushakobo/navpad/10/keymaps/default/keymap.c @@ -29,9 +29,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { QK_BOOT, EE_CLR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NUM, KC_QUOT, KC_PEQL, KC_NO, KC_CAPS, KC_NUM, KC_SCRL, S(KC_9), KC_UP, S(KC_0), S(KC_SPC), - KC_LEFT, KC_BTN3, KC_RGHT, S(KC_SPC), + KC_LEFT, MS_BTN3, KC_RGHT, S(KC_SPC), KC_TRNS, S(KC_ENT), KC_TRNS, KC_BSPC, KC_DOWN, KC_DEL, KC_TRNS, - KC_BTN1, KC_ENT, S(KC_SPC),LT(2,KC_SPC),KC_SPC, KC_COMM, KC_TRNS + MS_BTN1, KC_ENT, S(KC_SPC),LT(2,KC_SPC),KC_SPC, KC_COMM, KC_TRNS ), [_FN2] =LAYOUT ( diff --git a/keyboards/yushakobo/navpad/10/keymaps/default/readme.md b/keyboards/yushakobo/navpad/10/keymaps/default/readme.md index b9cf727e24..42e3df9506 100644 --- a/keyboards/yushakobo/navpad/10/keymaps/default/readme.md +++ b/keyboards/yushakobo/navpad/10/keymaps/default/readme.md @@ -25,11 +25,11 @@ |----------+----------+----------+----------+-----------+----------+---------------| | KC_CAPS | KC_NUM | KC_SCRL | S(KC_9) | KC_UP | S(KC_0) | S(KC_SPC) | `--------------------------------+----------+-----------+----------+---------------| - | KC_LEFT | KC_BTN3 | KC_RGHT | S(KC_SPC) | + | KC_LEFT | MS_BTN3 | KC_RGHT | S(KC_SPC) | ,--------------------------------+----------+-----------+----------+---------------| | KC_TRNS | S(KC_ENT)| KC_TRNS | KC_BSPC | KC_DOWN | KC_DEL | KC_TRNS | |----------+----------+----------+----------+-----------+----------+---------------| - | KC_BTN1 | KC_ENT |S(KC_SPC)|LT(2,KC_SPC)|KC_SPC | KC_COMM | KC_TRNS | + | MS_BTN1 | KC_ENT |S(KC_SPC)|LT(2,KC_SPC)|KC_SPC | KC_COMM | KC_TRNS | '----------------------------------------------------------------------------------` ``` ### FN2 layer diff --git a/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/keymap.c b/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/keymap.c index 5c5d1110a1..18c34677d0 100644 --- a/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/keymap.c +++ b/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/keymap.c @@ -31,9 +31,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { QK_BOOT, EE_CLR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NUM, KC_QUOT, KC_PEQL, KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL, KC_CAPS, KC_NUM, KC_SCRL, S(KC_9), KC_UP, S(KC_0), S(KC_SPC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, - KC_LEFT, KC_BTN3, KC_RGHT, S(KC_SPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_QUOT, + KC_LEFT, MS_BTN3, KC_RGHT, S(KC_SPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_QUOT, KC_TRNS, S(KC_ENT), KC_TRNS, KC_BSPC, KC_DOWN, KC_DEL, KC_TRNS, KC_RBRC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, - KC_BTN1, KC_ENT, S(KC_SPC),LT(2,KC_SPC),KC_SPC, KC_COMM, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + MS_BTN1, KC_ENT, S(KC_SPC),LT(2,KC_SPC),KC_SPC, KC_COMM, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), [_FN2] =LAYOUT ( diff --git a/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/readme.md b/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/readme.md index 48eeee421f..f18c01d8ef 100644 --- a/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/readme.md +++ b/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/readme.md @@ -25,11 +25,11 @@ `--------------------------------+----------+-----------+----------+---------------| |------------+----------+-----------+-----------+-----------+-----------| | KC_CAPS | KC_NUM | KC_SCRL | S(KC_9) | KC_UP | S(KC_0) | S(KC_SPC) | | KC_Q | KC_W | KC_E | KC_R | KC_T | KC_BSPC | `--------------------------------+----------+-----------+----------+---------------| |------------+----------+-----------+-----------+-----------+-----------| - | KC_LEFT | KC_BTN3 | KC_RGHT | S(KC_SPC) | | KC_A | KC_S | KC_D | KC_F | KC_G | KC_QUOT | + | KC_LEFT | MS_BTN3 | KC_RGHT | S(KC_SPC) | | KC_A | KC_S | KC_D | KC_F | KC_G | KC_QUOT | ,--------------------------------+----------+-----------+----------+---------------| ,-------------+------------+----------+-----------+-----------+-----------+-----------| | KC_TRNS | S(KC_ENT)| KC_TRNS | KC_BSPC | KC_DOWN | KC_DEL | KC_TRNS | | KC_RBRC | KC_Z | KC_X | KC_C | KC_V | KC_B | KC_ENT | |----------+----------+----------+----------+-----------+----------+---------------| |-------------+------------+----------+-----------+-----------+-----------+-----------| - | KC_BTN1 | KC_ENT |S(KC_SPC)|LT(2,KC_SPC)|KC_SPC | KC_COMM | KC_TRNS | | KC_TRNS | KC_TRNS | KC_NO | KC_LEFT | KC_DOWN | KC_UP | KC_RGHT | + | MS_BTN1 | KC_ENT |S(KC_SPC)|LT(2,KC_SPC)|KC_SPC | KC_COMM | KC_TRNS | | KC_TRNS | KC_TRNS | KC_NO | KC_LEFT | KC_DOWN | KC_UP | KC_RGHT | '----------------------------------------------------------------------------------` '-------------------------------------------------------------------------------------` ``` ### FN2 layer diff --git a/keyboards/yushakobo/quick17/keymaps/default/keymap.c b/keyboards/yushakobo/quick17/keymaps/default/keymap.c index 80e1b04ca5..8b3cd6fff1 100644 --- a/keyboards/yushakobo/quick17/keymaps/default/keymap.c +++ b/keyboards/yushakobo/quick17/keymaps/default/keymap.c @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT,KC_X, KC_V, KC_B, LT(2,KC_SPC),LCTL(KC_S) ), [_EDIT2] = LAYOUT( - KC_ESC, KC_Q, KC_BTN3,KC_INS, KC_ENT, KC_DEL, + KC_ESC, KC_Q, MS_BTN3,KC_INS, KC_ENT, KC_DEL, KC_LCTL,KC_LBRC,KC_RBRC,KC_PGDN,KC_PGUP,LCTL(KC_Y), KC_LSFT,TO(3), RM_TOGG,TO(0), _______,KC_NO ), @@ -92,9 +92,9 @@ bool encoder_update_user(uint8_t index, bool clockwise){ } } else { // IS_LAYER_ON(_CONTROL) if (clockwise) { - tap_code(KC_WH_U); + tap_code(MS_WHLU); } else { - tap_code(KC_WH_D); + tap_code(MS_WHLD); } } } diff --git a/keyboards/zsa/moonlander/keymaps/default/keymap.c b/keyboards/zsa/moonlander/keymaps/default/keymap.c index 338e8e4f97..899b2d559b 100644 --- a/keyboards/zsa/moonlander/keymaps/default/keymap.c +++ b/keyboards/zsa/moonlander/keymaps/default/keymap.c @@ -53,10 +53,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MDIA] = LAYOUT( LED_LEVEL,_______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, - _______, _______, _______, KC_MS_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, MS_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, _______, _______, - _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, + _______, _______, _______, MS_BTN1, MS_BTN2, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______ ), }; diff --git a/layouts/default/ortho_5x13/default_ortho_5x13/keymap.c b/layouts/default/ortho_5x13/default_ortho_5x13/keymap.c index 11958f3700..1ab20cdc25 100644 --- a/layouts/default/ortho_5x13/default_ortho_5x13/keymap.c +++ b/layouts/default/ortho_5x13/default_ortho_5x13/keymap.c @@ -26,16 +26,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [1] = LAYOUT_ortho_5x13( KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , KC_EQL , - KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______ , - _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R + MS_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , + MS_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , + _______, MS_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_UP, _______ , + _______, MS_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT ), [2] = LAYOUT_ortho_5x13( 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 , _______, _______, _______, _______, QK_RBT, _______, _______, _______, _______, _______, _______, _______, _______ , KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, KC_WH_U, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R + _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, MS_WHLU, _______ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_WHLL, MS_WHLD, MS_WHLR ), }; diff --git a/layouts/default/ortho_6x13/default_ortho_6x13/keymap.c b/layouts/default/ortho_6x13/default_ortho_6x13/keymap.c index 2fa8f2acce..013b3ba987 100644 --- a/layouts/default/ortho_6x13/default_ortho_6x13/keymap.c +++ b/layouts/default/ortho_6x13/default_ortho_6x13/keymap.c @@ -30,17 +30,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT_ortho_6x13( KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, _______, _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______ , - _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R + MS_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , + MS_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , + _______, MS_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_UP, _______ , + _______, MS_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT ), [2] = LAYOUT_ortho_6x13( 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 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , _______, _______, _______, _______, QK_RBT, _______, _______, _______, _______, _______, _______, _______, _______ , KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, KC_WH_U, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R + _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, MS_WHLU, _______ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_WHLL, MS_WHLD, MS_WHLR ), }; diff --git a/quantum/quantum_keycodes_legacy.h b/quantum/quantum_keycodes_legacy.h index 58dc2fe6f6..e417591fe2 100644 --- a/quantum/quantum_keycodes_legacy.h +++ b/quantum/quantum_keycodes_legacy.h @@ -3,59 +3,6 @@ // clang-format off // Deprecated Quantum keycodes -#define RGB_TOG QK_UNDERGLOW_TOGGLE -#define RGB_MOD QK_UNDERGLOW_MODE_NEXT -#define RGB_MODE_FORWARD QK_UNDERGLOW_MODE_NEXT -#define RGB_RMOD QK_UNDERGLOW_MODE_PREVIOUS -#define RGB_MODE_REVERSE QK_UNDERGLOW_MODE_PREVIOUS -#define RGB_HUI QK_UNDERGLOW_HUE_UP -#define RGB_HUD QK_UNDERGLOW_HUE_DOWN -#define RGB_SAI QK_UNDERGLOW_SATURATION_UP -#define RGB_SAD QK_UNDERGLOW_SATURATION_DOWN -#define RGB_VAI QK_UNDERGLOW_VALUE_UP -#define RGB_VAD QK_UNDERGLOW_VALUE_DOWN -#define RGB_SPI QK_UNDERGLOW_SPEED_UP -#define RGB_SPD QK_UNDERGLOW_SPEED_DOWN - -#define KC_MS_UP QK_MOUSE_CURSOR_UP -#define KC_MS_U QK_MOUSE_CURSOR_UP -#define KC_MS_DOWN QK_MOUSE_CURSOR_DOWN -#define KC_MS_D QK_MOUSE_CURSOR_DOWN -#define KC_MS_LEFT QK_MOUSE_CURSOR_LEFT -#define KC_MS_L QK_MOUSE_CURSOR_LEFT -#define KC_MS_RIGHT QK_MOUSE_CURSOR_RIGHT -#define KC_MS_R QK_MOUSE_CURSOR_RIGHT -#define KC_MS_BTN1 QK_MOUSE_BUTTON_1 -#define KC_BTN1 QK_MOUSE_BUTTON_1 -#define KC_MS_BTN2 QK_MOUSE_BUTTON_2 -#define KC_BTN2 QK_MOUSE_BUTTON_2 -#define KC_MS_BTN3 QK_MOUSE_BUTTON_3 -#define KC_BTN3 QK_MOUSE_BUTTON_3 -#define KC_MS_BTN4 QK_MOUSE_BUTTON_4 -#define KC_BTN4 QK_MOUSE_BUTTON_4 -#define KC_MS_BTN5 QK_MOUSE_BUTTON_5 -#define KC_BTN5 QK_MOUSE_BUTTON_5 -#define KC_MS_BTN6 QK_MOUSE_BUTTON_6 -#define KC_BTN6 QK_MOUSE_BUTTON_6 -#define KC_MS_BTN7 QK_MOUSE_BUTTON_7 -#define KC_BTN7 QK_MOUSE_BUTTON_7 -#define KC_MS_BTN8 QK_MOUSE_BUTTON_8 -#define KC_BTN8 QK_MOUSE_BUTTON_8 -#define KC_MS_WH_UP QK_MOUSE_WHEEL_UP -#define KC_WH_U QK_MOUSE_WHEEL_UP -#define KC_MS_WH_DOWN QK_MOUSE_WHEEL_DOWN -#define KC_WH_D QK_MOUSE_WHEEL_DOWN -#define KC_MS_WH_LEFT QK_MOUSE_WHEEL_LEFT -#define KC_WH_L QK_MOUSE_WHEEL_LEFT -#define KC_MS_WH_RIGHT QK_MOUSE_WHEEL_RIGHT -#define KC_WH_R QK_MOUSE_WHEEL_RIGHT -#define KC_MS_ACCEL0 QK_MOUSE_ACCELERATION_0 -#define KC_ACL0 QK_MOUSE_ACCELERATION_0 -#define KC_MS_ACCEL1 QK_MOUSE_ACCELERATION_1 -#define KC_ACL1 QK_MOUSE_ACCELERATION_1 -#define KC_MS_ACCEL2 QK_MOUSE_ACCELERATION_2 -#define KC_ACL2 QK_MOUSE_ACCELERATION_2 - #define QK_OUTPUT_AUTO OU_AUTO #define C_S_T(kc) LCS_T(kc) diff --git a/tests/pointing/test_pointing.cpp b/tests/pointing/test_pointing.cpp index bd886b18a2..6de6ad30f0 100644 --- a/tests/pointing/test_pointing.cpp +++ b/tests/pointing/test_pointing.cpp @@ -131,7 +131,7 @@ TEST_F(Pointing, CorrectButtonIsReportedWhenPressed) { TEST_F(Pointing, CorrectButtonIsReportedWhenKeyPressed) { TestDriver driver; - auto key = KeymapKey(0, 0, 0, KC_MS_BTN1); + auto key = KeymapKey(0, 0, 0, QK_MOUSE_BUTTON_1); set_keymap({key}); EXPECT_MOUSE_REPORT(driver, (0, 0, 0, 0, 1)); From 5ef791902201111feb3f976cfbce8755b0be66b0 Mon Sep 17 00:00:00 2001 From: obosob Date: Fri, 11 Jul 2025 23:55:21 +0100 Subject: [PATCH 071/167] Give mouse report to pointing_device_task_user first in ploopyco devices (#25475) --- keyboards/ploopyco/ploopyco.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/ploopyco/ploopyco.c b/keyboards/ploopyco/ploopyco.c index f094f784cb..642696be0f 100644 --- a/keyboards/ploopyco/ploopyco.c +++ b/keyboards/ploopyco/ploopyco.c @@ -139,6 +139,7 @@ void cycle_dpi(void) { } report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { + mouse_report = pointing_device_task_user(mouse_report); if (is_drag_scroll) { scroll_accumulated_h += (float)mouse_report.x / PLOOPY_DRAGSCROLL_DIVISOR_H; scroll_accumulated_v += (float)mouse_report.y / PLOOPY_DRAGSCROLL_DIVISOR_V; @@ -163,7 +164,7 @@ report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { mouse_report.y = 0; } - return pointing_device_task_user(mouse_report); + return mouse_report; } bool process_record_kb(uint16_t keycode, keyrecord_t* record) { From 9e757bc2ecc09a48dcde351e8d3e31f02c05e4e7 Mon Sep 17 00:00:00 2001 From: Jon Henry Fernandez Date: Fri, 11 Jul 2025 22:29:16 -0500 Subject: [PATCH 072/167] [Keyboard] Add togkey/pad_pocket (#25470) * Initial Source for Pad Pocket * Added Tap Dance and Combo Configurations * Updated LED Count * Updated read me * Updated Readme * -Removed config.h file - Added tap dance and combos to keymap level - Removed tap dance and combos from keyboard.json - Fixed conflict with submodules * Fixed Formatting --- keyboards/togkey/pad_pocket/keyboard.json | 49 +++++++++++++++++++ .../pad_pocket/keymaps/default/keymap.c | 29 +++++++++++ .../pad_pocket/keymaps/default/rules.mk | 2 + keyboards/togkey/pad_pocket/readme.md | 27 ++++++++++ 4 files changed, 107 insertions(+) create mode 100644 keyboards/togkey/pad_pocket/keyboard.json create mode 100644 keyboards/togkey/pad_pocket/keymaps/default/keymap.c create mode 100644 keyboards/togkey/pad_pocket/keymaps/default/rules.mk create mode 100644 keyboards/togkey/pad_pocket/readme.md diff --git a/keyboards/togkey/pad_pocket/keyboard.json b/keyboards/togkey/pad_pocket/keyboard.json new file mode 100644 index 0000000000..9f9d5a3aea --- /dev/null +++ b/keyboards/togkey/pad_pocket/keyboard.json @@ -0,0 +1,49 @@ +{ + "manufacturer": "TogKey", + "keyboard_name": "Pad Pocket", + "maintainer": "togkey86", + "development_board": "promicro_rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["GP29", "GP22"], + "rows": ["GP26"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "hue_steps": 10, + "led_count": 2 + }, + "url": "https://togkey.com/products/togkey-pad-pocket", + "usb": { + "device_version": "1.0.0", + "pid": "0x8688", + "vid": "0xFEED" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP21" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0} + ] + } + } +} diff --git a/keyboards/togkey/pad_pocket/keymaps/default/keymap.c b/keyboards/togkey/pad_pocket/keymaps/default/keymap.c new file mode 100644 index 0000000000..500597eb08 --- /dev/null +++ b/keyboards/togkey/pad_pocket/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +// Copyright 2025 TogKey +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +//Tap Dances +enum { + TD_VOLDOWN_MEDIAPREV, + TD_VOLUP_MEDIANEXT +}; + +tap_dance_action_t tap_dance_actions[] = { + [TD_VOLDOWN_MEDIAPREV] = ACTION_TAP_DANCE_DOUBLE(KC_AUDIO_VOL_DOWN, KC_MEDIA_PREV_TRACK), + [TD_VOLUP_MEDIANEXT] = ACTION_TAP_DANCE_DOUBLE(KC_AUDIO_VOL_UP, KC_MEDIA_NEXT_TRACK) +}; + +//Combos +const uint16_t PROGMEM media_combo[] = {TD(TD_VOLDOWN_MEDIAPREV), TD(TD_VOLUP_MEDIANEXT), COMBO_END}; + +combo_t key_combos[] = { + COMBO(media_combo, KC_MEDIA_PLAY_PAUSE) +}; + +//Keymap +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + TD(TD_VOLDOWN_MEDIAPREV), TD(TD_VOLUP_MEDIANEXT) + ) +}; diff --git a/keyboards/togkey/pad_pocket/keymaps/default/rules.mk b/keyboards/togkey/pad_pocket/keymaps/default/rules.mk new file mode 100644 index 0000000000..7981fd23ac --- /dev/null +++ b/keyboards/togkey/pad_pocket/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +COMBO_ENABLE = yes +TAP_DANCE_ENABLE = yes diff --git a/keyboards/togkey/pad_pocket/readme.md b/keyboards/togkey/pad_pocket/readme.md new file mode 100644 index 0000000000..160d698ad6 --- /dev/null +++ b/keyboards/togkey/pad_pocket/readme.md @@ -0,0 +1,27 @@ +# pad_pocket + +![pad_pocket](https://i.imgur.com/yCrqAe5.jpeg) + +A simple 2-Key Macropad Keychain based off an RP2040 Development Board and a custom PCB that is pre-programmed to control media. + +* Keyboard Maintainer: [Jon Henry](https://github.com/togkey86) +* Hardware Supported: Togkey Pad Pocket/Duo PCB, RP2040 Pro Micro Development Board +* Hardware Availability: (https://togkey.com) + +Make example for this keyboard (after setting up your build environment): + + make togkey/pad_pocket:default + +Flashing example for this keyboard: + + make togkey/pad_pocket: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 (The left key closest to the USB Port) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file From c7a24a441f6b3e25b726089c3305ef2d92b46fd4 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 12 Jul 2025 16:56:32 +0100 Subject: [PATCH 073/167] Add zip to .gitignore (#25483) --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 20e706a2b5..5886640d68 100644 --- a/.gitignore +++ b/.gitignore @@ -64,6 +64,7 @@ build/ cmake-build-debug CMakeLists.txt *.pdf +*.zip # Let these ones be user specific, since we have so many different configurations *.code-workspace From 86badb394e338aa2def4d1caf77089ce0acf03e9 Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Sat, 12 Jul 2025 19:38:32 -0600 Subject: [PATCH 074/167] Enable correct SPI peripheral `dilemma/3x5_2/assembled` (#25479) Initial --- keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h b/keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h index 81821c159d..52b726a56d 100644 --- a/keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h +++ b/keyboards/bastardkb/dilemma/3x5_2/assembled/mcuconf.h @@ -19,5 +19,5 @@ #include_next -#undef RP_SPI_USE_SPI1 -#define RP_SPI_USE_SPI1 TRUE +#undef RP_SPI_USE_SPI0 +#define RP_SPI_USE_SPI0 TRUE From ad4233d07849ad96096fb84d01b0ed3200030b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=95=E3=82=A3=E3=83=AB=E3=82=BF=E3=83=BC=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=83=91=E3=83=BC?= <76888457+filterpaper@users.noreply.github.com> Date: Sun, 13 Jul 2025 23:38:32 +0800 Subject: [PATCH 075/167] Clamp reactive offset value (#25489) * Avoids underflow of the unsigned 8-bit --- quantum/rgb_matrix/animations/solid_reactive_anim.h | 1 + quantum/rgb_matrix/animations/solid_reactive_simple_anim.h | 1 + 2 files changed, 2 insertions(+) diff --git a/quantum/rgb_matrix/animations/solid_reactive_anim.h b/quantum/rgb_matrix/animations/solid_reactive_anim.h index 67f568ca38..d11dda50c3 100644 --- a/quantum/rgb_matrix/animations/solid_reactive_anim.h +++ b/quantum/rgb_matrix/animations/solid_reactive_anim.h @@ -4,6 +4,7 @@ RGB_MATRIX_EFFECT(SOLID_REACTIVE) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS static hsv_t SOLID_REACTIVE_math(hsv_t hsv, uint16_t offset) { + if (offset > 255) offset = 255; # ifdef RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE hsv.h = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 8) >> 4); # endif diff --git a/quantum/rgb_matrix/animations/solid_reactive_simple_anim.h b/quantum/rgb_matrix/animations/solid_reactive_simple_anim.h index f20f1b1fb6..22ba42296f 100644 --- a/quantum/rgb_matrix/animations/solid_reactive_simple_anim.h +++ b/quantum/rgb_matrix/animations/solid_reactive_simple_anim.h @@ -4,6 +4,7 @@ RGB_MATRIX_EFFECT(SOLID_REACTIVE_SIMPLE) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS static hsv_t SOLID_REACTIVE_SIMPLE_math(hsv_t hsv, uint16_t offset) { + if (offset > 255) offset = 255; # ifdef RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE hsv.h = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 8) >> 4); # endif From f797d4f49d38d9538f6072048b1dfd2f981696f0 Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Sun, 13 Jul 2025 09:59:44 -0600 Subject: [PATCH 076/167] Configure SPI for `QMK_BLOK` board (#25487) --- .../chibios/boards/QMK_BLOK/configs/config.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/platforms/chibios/boards/QMK_BLOK/configs/config.h b/platforms/chibios/boards/QMK_BLOK/configs/config.h index 834dc497d3..26fe7cddc7 100644 --- a/platforms/chibios/boards/QMK_BLOK/configs/config.h +++ b/platforms/chibios/boards/QMK_BLOK/configs/config.h @@ -17,6 +17,23 @@ # define I2C1_SCL_PIN D0 #endif +/**====================== + ** SPI Driver + *========================**/ + +#ifndef SPI_DRIVER +# define SPI_DRIVER SPID0 +#endif +#ifndef SPI_SCK_PIN +# define SPI_SCK_PIN B1 +#endif +#ifndef SPI_MISO_PIN +# define SPI_MISO_PIN B3 +#endif +#ifndef SPI_MOSI_PIN +# define SPI_MOSI_PIN B2 +#endif + /**====================== ** UART Driver *========================**/ From d67e94fb1b3f4e6d57b211983f8527571bdcb816 Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Sun, 13 Jul 2025 09:59:59 -0600 Subject: [PATCH 077/167] Configure SPI for `STEMCELL` board (#25486) --- .../chibios/boards/STEMCELL/configs/config.h | 15 +++++++++++++++ .../chibios/boards/STEMCELL/configs/mcuconf.h | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/platforms/chibios/boards/STEMCELL/configs/config.h b/platforms/chibios/boards/STEMCELL/configs/config.h index 82f6c63636..ab10432e4e 100644 --- a/platforms/chibios/boards/STEMCELL/configs/config.h +++ b/platforms/chibios/boards/STEMCELL/configs/config.h @@ -27,3 +27,18 @@ # define SERIAL_USART_DRIVER SD2 #endif +/**====================== + ** SPI Driver + *========================**/ +#ifndef SPI_DRIVER +# define SPI_DRIVER SPID1 +#endif +#ifndef SPI_SCK_PIN +# define SPI_SCK_PIN B1 +#endif +#ifndef SPI_MISO_PIN +# define SPI_MISO_PIN B3 +#endif +#ifndef SPI_MOSI_PIN +# define SPI_MOSI_PIN B2 +#endif diff --git a/platforms/chibios/boards/STEMCELL/configs/mcuconf.h b/platforms/chibios/boards/STEMCELL/configs/mcuconf.h index db239854aa..d4b870f8e4 100644 --- a/platforms/chibios/boards/STEMCELL/configs/mcuconf.h +++ b/platforms/chibios/boards/STEMCELL/configs/mcuconf.h @@ -196,7 +196,7 @@ /* * SPI driver system settings. */ -#define STM32_SPI_USE_SPI1 FALSE +#define STM32_SPI_USE_SPI1 TRUE #define STM32_SPI_USE_SPI2 FALSE #define STM32_SPI_USE_SPI3 FALSE #define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0) From 5ef94415aabb88d53596483134f91036555ba082 Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Sun, 13 Jul 2025 10:00:10 -0600 Subject: [PATCH 078/167] Configure SPI for `QMK_PM2040` board (#25481) --- .../chibios/boards/QMK_PM2040/configs/config.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/platforms/chibios/boards/QMK_PM2040/configs/config.h b/platforms/chibios/boards/QMK_PM2040/configs/config.h index f8b46b7fe4..5ba030a556 100644 --- a/platforms/chibios/boards/QMK_PM2040/configs/config.h +++ b/platforms/chibios/boards/QMK_PM2040/configs/config.h @@ -17,6 +17,22 @@ # define I2C1_SCL_PIN D0 #endif +/**====================== + ** SPI Driver + *========================**/ +#ifndef SPI_DRIVER +# define SPI_DRIVER SPID0 +#endif +#ifndef SPI_SCK_PIN +# define SPI_SCK_PIN B1 +#endif +#ifndef SPI_MISO_PIN +# define SPI_MISO_PIN B3 +#endif +#ifndef SPI_MOSI_PIN +# define SPI_MOSI_PIN B2 +#endif + /**====================== ** UART Driver *========================**/ From 56ad3a5f435b57605388ad986e85ca6e4d607eb2 Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Sun, 13 Jul 2025 21:26:04 -0600 Subject: [PATCH 079/167] Refactor `bastardkb/charybdis/3x5` (#25488) * Refactor bastardkb/charybdis/3x5 - Migrate various configuration to data-driven - Use short SPDX license headers - Remove configuration that trends towards user-specific (CRC Table) - Migrate common configuration upwards - Migrate keymap to JSON - Remove likely unneeded v1 revision per #23638 - Remove revisions splinky_2, splinky_3, and stemcell where a converter should be used - Rename v2/elitec -> elitec. Specifically named elitec, as this board requires pin compatibility with an Elite-C (bottom 5 pins) * Aliases --- data/mappings/keyboard_aliases.hjson | 12 +++ keyboards/bastardkb/charybdis/3x5/3x5.c | 87 ------------------- .../charybdis/3x5/blackpill/config.h | 37 +------- .../charybdis/3x5/blackpill/halconf.h | 21 +---- .../charybdis/3x5/blackpill/keyboard.json | 43 +++------ .../charybdis/3x5/blackpill/mcuconf.h | 28 +----- .../charybdis/3x5/blackpill/readme.md | 3 - .../charybdis/3x5/blackpill/rules.mk | 5 -- keyboards/bastardkb/charybdis/3x5/config.h | 22 ----- .../bastardkb/charybdis/3x5/elitec/config.h | 5 ++ .../charybdis/3x5/elitec/keyboard.json | 19 ++++ keyboards/bastardkb/charybdis/3x5/info.json | 64 +++++++++++--- .../charybdis/3x5/keymaps/default/keymap.c | 71 --------------- .../charybdis/3x5/keymaps/default/keymap.json | 26 ++++++ .../charybdis/3x5/keymaps/default/readme.md | 7 -- keyboards/bastardkb/charybdis/3x5/readme.md | 15 ---- keyboards/bastardkb/charybdis/3x5/rules.mk | 1 + .../charybdis/3x5/v1/elitec/config.h | 25 ------ .../charybdis/3x5/v1/elitec/keyboard.json | 41 --------- .../charybdis/3x5/v1/elitec/rules.mk | 4 - .../charybdis/3x5/v2/elitec/config.h | 24 ----- .../charybdis/3x5/v2/elitec/keyboard.json | 35 -------- .../charybdis/3x5/v2/elitec/rules.mk | 4 - .../charybdis/3x5/v2/splinky_2/config.h | 38 -------- .../charybdis/3x5/v2/splinky_2/keyboard.json | 33 ------- .../charybdis/3x5/v2/splinky_2/mcuconf.h | 23 ----- .../charybdis/3x5/v2/splinky_2/readme.md | 5 -- .../charybdis/3x5/v2/splinky_2/rules.mk | 5 -- .../charybdis/3x5/v2/splinky_3/config.h | 38 -------- .../charybdis/3x5/v2/splinky_3/keyboard.json | 33 ------- .../charybdis/3x5/v2/splinky_3/mcuconf.h | 23 ----- .../charybdis/3x5/v2/splinky_3/readme.md | 5 -- .../charybdis/3x5/v2/splinky_3/rules.mk | 5 -- .../charybdis/3x5/v2/stemcell/config.h | 52 ----------- .../charybdis/3x5/v2/stemcell/halconf.h | 24 ----- .../charybdis/3x5/v2/stemcell/keyboard.json | 38 -------- .../charybdis/3x5/v2/stemcell/mcuconf.h | 32 ------- .../charybdis/3x5/v2/stemcell/rules.mk | 6 -- keyboards/bastardkb/charybdis/charybdis.c | 23 +---- keyboards/bastardkb/charybdis/charybdis.h | 21 +---- keyboards/bastardkb/charybdis/config.h | 68 ++------------- keyboards/bastardkb/charybdis/info.json | 48 +++++++++- keyboards/bastardkb/charybdis/post_config.h | 25 ++---- 43 files changed, 201 insertions(+), 943 deletions(-) delete mode 100644 keyboards/bastardkb/charybdis/3x5/3x5.c delete mode 100644 keyboards/bastardkb/charybdis/3x5/blackpill/readme.md delete mode 100644 keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/3x5/config.h create mode 100644 keyboards/bastardkb/charybdis/3x5/elitec/config.h create mode 100644 keyboards/bastardkb/charybdis/3x5/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c create mode 100644 keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.json delete mode 100644 keyboards/bastardkb/charybdis/3x5/keymaps/default/readme.md delete mode 100644 keyboards/bastardkb/charybdis/3x5/readme.md create mode 100644 keyboards/bastardkb/charybdis/3x5/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/3x5/v1/elitec/config.h delete mode 100644 keyboards/bastardkb/charybdis/3x5/v1/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/3x5/v1/elitec/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/elitec/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/splinky_2/config.h delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/splinky_2/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/splinky_2/mcuconf.h delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/splinky_2/readme.md delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/splinky_2/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/splinky_3/config.h delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/splinky_3/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/splinky_3/mcuconf.h delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/splinky_3/readme.md delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/splinky_3/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/stemcell/config.h delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/stemcell/halconf.h delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/stemcell/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/stemcell/mcuconf.h delete mode 100644 keyboards/bastardkb/charybdis/3x5/v2/stemcell/rules.mk diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index cf0cfe52f1..db62bce419 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -68,6 +68,18 @@ "bakeneko80": { "target": "kkatano/bakeneko80" }, + "bastardkb/charybdis/3x5/v2/elitec": { + "target": "bastardkb/charybdis/3x5/elitec" + }, + "bastardkb/charybdis/3x5/v2/splinky_2": { + "target": "bastardkb/charybdis/3x5/elitec" + }, + "bastardkb/charybdis/3x5/v2/splinky_3": { + "target": "bastardkb/charybdis/3x5/elitec" + }, + "bastardkb/charybdis/3x5/v2/stemcell": { + "target": "bastardkb/charybdis/3x5/elitec" + }, "bastardkb/dilemma/3x5_2/splinky": { "target": "bastardkb/dilemma/3x5_2/promicro" }, diff --git a/keyboards/bastardkb/charybdis/3x5/3x5.c b/keyboards/bastardkb/charybdis/3x5/3x5.c deleted file mode 100644 index 6e8e3bef10..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/3x5.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2020 Christopher Courtney (@drashna) - * Copyright 2021 Quentin LEBASTARD - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Publicw 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 "charybdis.h" - -// clang-format off -#ifdef RGB_MATRIX_ENABLE -/** - * \brief LEDs index. - * - * ╭────────────────────╮ ╭────────────────────╮ - * 2 3 8 9 12 30 27 26 21 20 - * ├────────────────────┤ ├────────────────────┤ - * 1 4 7 10 13 31 28 25 22 19 - * ├────────────────────┤ ├────────────────────┤ - * 0 5 6 11 14 32 29 24 23 18 - * ╰────────────────────╯ ╰────────────────────╯ - * 15 16 17 33 34 XX - * ╰────────────╯ ╰────────────╯ - * - * Note: the LED config simulates 36 LEDs instead of the actual 35 to prevent - * confusion when testing LEDs during assembly when handedness is not set - * correctly. Those fake LEDs are bound to the physical top-left corner. - */ -led_config_t g_led_config = { { - /* Key Matrix to LED index. */ - // Left split. - { 2, 3, 8, 9, 12 }, // Top row - { 1, 4, 7, 10, 13 }, // Middle row - { 0, 5, 6, 11, 14 }, // Bottom row - { 17, NO_LED, 15, 16, NO_LED }, // Thumb cluster - // Right split. - { 20, 21, 26, 27, 30 }, // Top row - { 19, 22, 25, 28, 31 }, // Middle row - { 18, 23, 24, 29, 32 }, // Bottom row - { 33, NO_LED, 34, NO_LED, NO_LED }, // Thumb cluster -}, { - /* LED index to physical position. */ - // Left split. - /* index=0 */ { 0, 42 }, { 0, 21 }, { 0, 0 }, // col 1 (left most) - /* index=3 */ { 18, 0 }, { 18, 21 }, { 18, 42 }, // col 2 - /* index=6 */ { 36, 42 }, { 36, 21 }, { 36, 0 }, - /* index=9 */ { 54, 0 }, { 54, 21 }, { 54, 42 }, - /* index=12 */ { 72, 0 }, { 72, 21 }, { 72, 42 }, - /* index=15 */ { 72, 64 }, { 90, 64 }, { 108, 64 }, // Thumb cluster - // Right split. - /* index=18 */ { 224, 42 }, { 224, 21 }, { 224, 0 }, // col 10 (right most) - /* index=21 */ { 206, 0 }, { 206, 21 }, { 206, 42 }, // col 9 - /* index=24 */ { 188, 42 }, { 188, 21 }, { 188, 0 }, - /* index=27 */ { 170, 0 }, { 170, 21 }, { 170, 42 }, - /* index=30 */ { 152, 0 }, { 152, 21 }, { 152, 42 }, - /* index=33 */ { 134, 64 }, { 152, 64 }, { 0, 0 }, -}, { - /* LED index to flag. */ - // Left split. - /* index=0 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 1 - /* index=3 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 2 - /* index=6 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=9 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=12 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=15 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster - // Right split. - /* index=18 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 10 - /* index=21 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 9 - /* index=24 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=27 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=30 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=33 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // Thumb cluster -} }; -#endif -// clang-format on diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/config.h b/keyboards/bastardkb/charybdis/3x5/blackpill/config.h index bd1e0fe31e..9c01986583 100644 --- a/keyboards/bastardkb/charybdis/3x5/blackpill/config.h +++ b/keyboards/bastardkb/charybdis/3x5/blackpill/config.h @@ -1,28 +1,9 @@ -/* - * Copyright 2020 Christopher Courtney (@drashna) - * Copyright 2021 Stefan Kerkmann (@KarlK90) - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Publicw License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Christopher Courtney (@drashna) +// Copyright 2021 Stefan Kerkmann (@KarlK90) +// Copyright 2021 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -/* Handedness. */ -#define SPLIT_HAND_PIN A3 // High -> left, Low -> right. - -/* RGB settings. */ #define WS2812_PWM_DRIVER PWMD2 #define WS2812_PWM_CHANNEL 2 #define WS2812_PWM_PAL_MODE 1 @@ -30,14 +11,6 @@ #define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM1 #define WS2812_PWM_DMA_CHANNEL 3 -/* Serial configuration for split keyboard. */ -#define SERIAL_USART_TX_PIN A9 - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED - -/* SPI config for EEPROM and pmw3360 sensor. */ #define SPI_DRIVER SPID1 #define SPI_SCK_PIN A5 #define SPI_SCK_PAL_MODE 5 @@ -46,9 +19,7 @@ #define SPI_MISO_PIN A6 #define SPI_MISO_PAL_MODE 5 -/* EEPROM config. */ #define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A4 -/* PMW3360 settings. */ #define POINTING_DEVICE_CS_PIN B14 #define PMW33XX_CS_DIVISOR 64 diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h b/keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h index 300b0eeaed..6876cc3e00 100644 --- a/keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h +++ b/keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h @@ -1,21 +1,6 @@ -/** - * Copyright 2020 Nick Brassel (tzarc) - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Nick Brassel (tzarc) +// Copyright 2021 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #define HAL_USE_PWM TRUE diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/keyboard.json b/keyboards/bastardkb/charybdis/3x5/blackpill/keyboard.json index bcc57981b5..15edbf74b8 100644 --- a/keyboards/bastardkb/charybdis/3x5/blackpill/keyboard.json +++ b/keyboards/bastardkb/charybdis/3x5/blackpill/keyboard.json @@ -1,38 +1,23 @@ { - "keyboard_name": "Charybdis Nano (3x5) Blackpill", - "usb": { - "device_version": "1.0.0", - "shared_endpoint": { - "keyboard": true - } - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, + "development_board": "blackpill_f411", "eeprom": { "driver": "spi" }, - "split": { - "enabled": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "ws2812": { - "pin": "A1", - "driver": "pwm" - }, - "build": { - "debounce_type": "asym_eager_defer_pk" - }, "matrix_pins": { "cols": ["B1", "B10", "B3", "B4", "B5"], "rows": ["A2", "B8", "A8", "B9"] }, - "diode_direction": "ROW2COL", - "development_board": "blackpill_f411" + "split": { + "handedness": { + "pin": "A3" + }, + "serial": { + "driver": "usart", + "pin": "A9" + } + }, + "ws2812": { + "driver": "pwm", + "pin": "A1" + } } diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h b/keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h index 46b3b42f8b..be641fb899 100644 --- a/keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h +++ b/keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h @@ -1,22 +1,7 @@ -/* - * Copyright 2020 Nick Brassel (tzarc) - * Copyright 2021 Stefan Kerkmann (@KarlK90) - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Nick Brassel (tzarc) +// Copyright 2021 Stefan Kerkmann (@KarlK90) +// Copyright 2021 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include_next @@ -30,11 +15,6 @@ #undef STM32_SPI_USE_SPI1 #define STM32_SPI_USE_SPI1 TRUE -#undef STM32_SPI_SPI1_RX_DMA_STREAM -#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0) -#undef STM32_SPI_SPI1_TX_DMA_STREAM -#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3) - #undef STM32_SERIAL_USE_USART1 #define STM32_SERIAL_USE_USART1 TRUE diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/readme.md b/keyboards/bastardkb/charybdis/3x5/blackpill/readme.md deleted file mode 100644 index 7ef08798b8..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/blackpill/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Charybdis Nano (3x5) BlackPill - -An ergonomic keyboard with integrated trackball, with BlackPill (STM32F411) mod. diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk b/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk deleted file mode 100644 index c8d355efb7..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint -SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/charybdis/3x5/config.h b/keyboards/bastardkb/charybdis/3x5/config.h deleted file mode 100644 index 1c952759a7..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/config.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * Copyright 2021 Charly Delay (@0xcharly) - * - * This 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 - -/* Trackball angle adjustment. */ -#define ROTATIONAL_TRANSFORM_ANGLE -25 diff --git a/keyboards/bastardkb/charybdis/3x5/elitec/config.h b/keyboards/bastardkb/charybdis/3x5/elitec/config.h new file mode 100644 index 0000000000..411ddaf6b9 --- /dev/null +++ b/keyboards/bastardkb/charybdis/3x5/elitec/config.h @@ -0,0 +1,5 @@ +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define POINTING_DEVICE_CS_PIN F0 diff --git a/keyboards/bastardkb/charybdis/3x5/elitec/keyboard.json b/keyboards/bastardkb/charybdis/3x5/elitec/keyboard.json new file mode 100644 index 0000000000..22064f13aa --- /dev/null +++ b/keyboards/bastardkb/charybdis/3x5/elitec/keyboard.json @@ -0,0 +1,19 @@ +{ + "build": { + "lto": true + }, + "development_board": "elite_c", + "matrix_pins": { + "cols": ["F5", "B6", "D7", "E6", "B4"], + "rows": ["F7", "C6", "D4", "B5"] + }, + "pin_compatible": "elite_c", + "split": { + "serial": { + "pin": "D2" + } + }, + "ws2812": { + "pin": "D3" + } +} diff --git a/keyboards/bastardkb/charybdis/3x5/info.json b/keyboards/bastardkb/charybdis/3x5/info.json index 9627b9852f..3953cb43e2 100644 --- a/keyboards/bastardkb/charybdis/3x5/info.json +++ b/keyboards/bastardkb/charybdis/3x5/info.json @@ -1,15 +1,58 @@ { - "manufacturer": "Bastard Keyboards", - "url": "https://bastardkb.com/charybdis-nano", - "usb": { - "pid": "0x1832", - "vid": "0xA8F8" + "keyboard_name": "Charybdis Nano (3x5)", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": false, + "pointing_device": true, + "rgb_matrix": true }, "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"matrix": [2, 0], "x": 0, "y": 42, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 21, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 18, "y": 0, "flags": 4}, + {"matrix": [1, 1], "x": 18, "y": 21, "flags": 4}, + {"matrix": [2, 1], "x": 18, "y": 42, "flags": 4}, + {"matrix": [2, 2], "x": 36, "y": 42, "flags": 4}, + {"matrix": [1, 2], "x": 36, "y": 21, "flags": 4}, + {"matrix": [0, 2], "x": 36, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 54, "y": 0, "flags": 4}, + {"matrix": [1, 3], "x": 54, "y": 21, "flags": 4}, + {"matrix": [2, 3], "x": 54, "y": 42, "flags": 4}, + {"matrix": [0, 4], "x": 72, "y": 0, "flags": 4}, + {"matrix": [1, 4], "x": 72, "y": 21, "flags": 4}, + {"matrix": [2, 4], "x": 72, "y": 42, "flags": 4}, + {"matrix": [3, 2], "x": 72, "y": 64, "flags": 1}, + {"matrix": [3, 3], "x": 90, "y": 64, "flags": 1}, + {"matrix": [3, 0], "x": 108, "y": 64, "flags": 1}, + {"matrix": [6, 0], "x": 224, "y": 42, "flags": 4}, + {"matrix": [5, 0], "x": 224, "y": 21, "flags": 4}, + {"matrix": [4, 0], "x": 224, "y": 0, "flags": 4}, + {"matrix": [4, 1], "x": 206, "y": 0, "flags": 4}, + {"matrix": [5, 1], "x": 206, "y": 21, "flags": 4}, + {"matrix": [6, 1], "x": 206, "y": 42, "flags": 4}, + {"matrix": [6, 2], "x": 188, "y": 42, "flags": 4}, + {"matrix": [5, 2], "x": 188, "y": 21, "flags": 4}, + {"matrix": [4, 2], "x": 188, "y": 0, "flags": 4}, + {"matrix": [4, 3], "x": 170, "y": 0, "flags": 4}, + {"matrix": [5, 3], "x": 170, "y": 21, "flags": 4}, + {"matrix": [6, 3], "x": 170, "y": 42, "flags": 4}, + {"matrix": [4, 4], "x": 152, "y": 0, "flags": 4}, + {"matrix": [5, 4], "x": 152, "y": 21, "flags": 4}, + {"matrix": [6, 4], "x": 152, "y": 42, "flags": 4}, + {"matrix": [7, 0], "x": 134, "y": 64, "flags": 4}, + {"matrix": [7, 2], "x": 152, "y": 64, "flags": 4}, + {"x": 170, "y": 64, "flags": 4} + ], "split_count": [18, 18] }, - "layout_aliases": { - "LAYOUT_charybdis_3x5": "LAYOUT" + "usb": { + "device_version": "2.0.0", + "pid": "0x1832" }, "layouts": { "LAYOUT": { @@ -19,41 +62,34 @@ {"matrix": [0, 2], "x": 2, "y": 0}, {"matrix": [0, 3], "x": 3, "y": 0}, {"matrix": [0, 4], "x": 4, "y": 0}, - {"matrix": [4, 4], "x": 11, "y": 0}, {"matrix": [4, 3], "x": 12, "y": 0}, {"matrix": [4, 2], "x": 13, "y": 0}, {"matrix": [4, 1], "x": 14, "y": 0}, {"matrix": [4, 0], "x": 15, "y": 0}, - {"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1}, {"matrix": [1, 2], "x": 2, "y": 1}, {"matrix": [1, 3], "x": 3, "y": 1}, {"matrix": [1, 4], "x": 4, "y": 1}, - {"matrix": [5, 4], "x": 11, "y": 1}, {"matrix": [5, 3], "x": 12, "y": 1}, {"matrix": [5, 2], "x": 13, "y": 1}, {"matrix": [5, 1], "x": 14, "y": 1}, {"matrix": [5, 0], "x": 15, "y": 1}, - {"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, {"matrix": [2, 2], "x": 2, "y": 2}, {"matrix": [2, 3], "x": 3, "y": 2}, {"matrix": [2, 4], "x": 4, "y": 2}, - {"matrix": [6, 4], "x": 11, "y": 2}, {"matrix": [6, 3], "x": 12, "y": 2}, {"matrix": [6, 2], "x": 13, "y": 2}, {"matrix": [6, 1], "x": 14, "y": 2}, {"matrix": [6, 0], "x": 15, "y": 2}, - {"matrix": [3, 2], "x": 4, "y": 3}, {"matrix": [3, 3], "x": 5, "y": 3}, {"matrix": [3, 0], "x": 6, "y": 3}, - {"matrix": [7, 0], "x": 9, "y": 3}, {"matrix": [7, 2], "x": 10, "y": 3} ] diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c deleted file mode 100644 index e5e0ba1207..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -enum charybdis_keymap_layers { - LAYER_BASE = 0, - LAYER_LOWER, - LAYER_RAISE, -}; - -#define LOWER MO(LAYER_LOWER) -#define RAISE MO(LAYER_RAISE) - -#define CTL_BSP CTL_T(KC_BSPC) -#define SFT_SPC SFT_T(KC_SPC) -#define GUI_ENT GUI_T(KC_ENT) - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [LAYER_BASE] = LAYOUT( - // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮ - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, - // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯ - CTL_BSP, SFT_SPC, LOWER, RAISE, GUI_ENT - // ╰───────────────────────────╯ ╰──────────────────╯ - ), - - [LAYER_LOWER] = LAYOUT( - // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮ - RM_TOGG, KC_MNXT, KC_MPLY, KC_MPRV, XXXXXXX, KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_4, KC_5, KC_6, KC_PMNS, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - XXXXXXX, XXXXXXX, XXXXXXX, EE_CLR, QK_BOOT, KC_PAST, KC_1, KC_2, KC_3, KC_PSLS, - // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯ - XXXXXXX, XXXXXXX, _______, XXXXXXX, _______ - // ╰───────────────────────────╯ ╰──────────────────╯ - ), - - [LAYER_RAISE] = LAYOUT( - // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, KC_MUTE, KC_VOLD, XXXXXXX, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, - // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤ - KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, QK_BOOT, EE_CLR, XXXXXXX, XXXXXXX, XXXXXXX, - // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯ - _______, _______, XXXXXXX, _______, XXXXXXX - // ╰───────────────────────────╯ ╰──────────────────╯ - ), -}; -// clang-format on diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.json b/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.json new file mode 100644 index 0000000000..f92366cd4d --- /dev/null +++ b/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.json @@ -0,0 +1,26 @@ +{ + "keyboard": "bastardkb/charybdis/3x5/elitec", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", + "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", + "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", + "KC_LGUI", "MO(1)", "KC_SPC", "KC_ENT", "MO(2)" + ], + [ + "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", + "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______" + ], + [ + "QK_BOOT", "_______", "_______", "_______", "_______", "RM_VALU", "RM_HUEU", "RM_SATU", "RM_NEXT", "RM_TOGG", + "EE_CLR", "_______", "_______", "_______", "_______", "RM_VALD", "RM_HUED", "RM_SATD", "RM_PREV", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______" + ] + ] +} + diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/default/readme.md b/keyboards/bastardkb/charybdis/3x5/keymaps/default/readme.md deleted file mode 100644 index 3908656820..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/default/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# Charybdis (3x5) default keymap - -> :bulb: Have a look at the [`via` keymap](../via) for a more feature-rich layout. - -The Charydbis (3x5) default keymap is inspired from the original [Dactyl Manuform](../../../../../handwired/dactyl_manuform) default keymap. - -This layout supports RGB matrix. However, due to space constraints on the MCU, only a limited number of effect can be enabled at once. Look at the `config.h` file and enable your favorite effect. diff --git a/keyboards/bastardkb/charybdis/3x5/readme.md b/keyboards/bastardkb/charybdis/3x5/readme.md deleted file mode 100644 index 7a91035bea..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Charybdis Nano (3x5) - -An ergonomic keyboard with integrated trackball. - -The Charybdis is available in 4x6 and 3x5 form factor at [bastardkb.com](https://bastardkb.com). - -## Keymaps - -### [`default`](keymaps/default) - -A simple QWERTY layout with 4 layers. - -### [`via`](keymaps/via) - -A [Miryoku-inspired](https://github.com/manna-harbour/miryoku), feature-rich, keymap with VIA support. diff --git a/keyboards/bastardkb/charybdis/3x5/rules.mk b/keyboards/bastardkb/charybdis/3x5/rules.mk new file mode 100644 index 0000000000..fab9162dc6 --- /dev/null +++ b/keyboards/bastardkb/charybdis/3x5/rules.mk @@ -0,0 +1 @@ +POINTING_DEVICE_DRIVER = pmw3360 diff --git a/keyboards/bastardkb/charybdis/3x5/v1/elitec/config.h b/keyboards/bastardkb/charybdis/3x5/v1/elitec/config.h deleted file mode 100644 index dc0c6e4e03..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v1/elitec/config.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2020 Christopher Courtney (@drashna) - * Copyright 2021 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -/* PMW3360 settings. */ -#define POINTING_DEVICE_CS_PIN B0 diff --git a/keyboards/bastardkb/charybdis/3x5/v1/elitec/keyboard.json b/keyboards/bastardkb/charybdis/3x5/v1/elitec/keyboard.json deleted file mode 100644 index 2fd99fb5ab..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v1/elitec/keyboard.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "keyboard_name": "Charybdis Nano (3x5) Elite-C", - "usb": { - "device_version": "1.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "build": { - "lto": true - }, - "ws2812": { - "pin": "D3" - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["C7", "F0", "D7", "E6", "B4"], - "rows": ["B7", "C6", "D4", "B5"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "D2" - }, - "matrix_pins": { - "right": { - "cols": ["C7", "B7", "D7", "E6", "B4"], - "rows": ["F0", "C6", "D4", "B5"] - } - } - }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu" -} diff --git a/keyboards/bastardkb/charybdis/3x5/v1/elitec/rules.mk b/keyboards/bastardkb/charybdis/3x5/v1/elitec/rules.mk deleted file mode 100644 index 17dae28bd1..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v1/elitec/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint diff --git a/keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h b/keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h deleted file mode 100644 index 3b91322247..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -/* PMW3360 settings. */ -#define POINTING_DEVICE_CS_PIN F0 diff --git a/keyboards/bastardkb/charybdis/3x5/v2/elitec/keyboard.json b/keyboards/bastardkb/charybdis/3x5/v2/elitec/keyboard.json deleted file mode 100644 index 51f6cedf51..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/elitec/keyboard.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "keyboard_name": "Charybdis Nano (3x5) Elite-C", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "build": { - "lto": true - }, - "ws2812": { - "pin": "D3" - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["F5", "B6", "D7", "E6", "B4"], - "rows": ["F7", "C6", "D4", "B5"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "D2" - } - }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu" -} diff --git a/keyboards/bastardkb/charybdis/3x5/v2/elitec/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/elitec/rules.mk deleted file mode 100644 index 17dae28bd1..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/elitec/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/config.h b/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/config.h deleted file mode 100644 index e6e2a4f216..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define SPLIT_HAND_PIN GP13 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* SPI & PMW3360 settings. */ -#define SPI_DRIVER SPID0 -#define SPI_SCK_PIN GP18 -#define SPI_MISO_PIN GP20 -#define SPI_MOSI_PIN GP19 -#define POINTING_DEVICE_CS_PIN GP14 - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/keyboard.json b/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/keyboard.json deleted file mode 100644 index cf800062b3..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/keyboard.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "keyboard_name": "Charybdis Nano (3x5) Splinky", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["GP28", "GP15", "GP6", "GP7", "GP8"], - "rows": ["GP26", "GP5", "GP4", "GP9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "ws2812": { - "pin": "GP0", - "driver": "vendor" - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/mcuconf.h b/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/mcuconf.h deleted file mode 100644 index 6aaf31428c..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/mcuconf.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 RP_SPI_USE_SPI0 -#define RP_SPI_USE_SPI0 TRUE diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/readme.md b/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/readme.md deleted file mode 100644 index 662eb5825c..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Splinky controller - -The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040. - -See [plut0nium/0xB2](https://github.com/plut0nium/0xB2/#releases) to figure out the right version for you (v2 or v3). diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/rules.mk deleted file mode 100644 index db29cb6789..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 - -SERIAL_DRIVER = vendor diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/config.h b/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/config.h deleted file mode 100644 index ee7745d41e..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define SPLIT_HAND_PIN GP15 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* SPI & PMW3360 settings. */ -#define SPI_DRIVER SPID0 -#define SPI_SCK_PIN GP22 -#define SPI_MISO_PIN GP20 -#define SPI_MOSI_PIN GP23 -#define POINTING_DEVICE_CS_PIN GP16 - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/keyboard.json b/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/keyboard.json deleted file mode 100644 index d9039f7591..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/keyboard.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "keyboard_name": "Charybdis Nano (3x5) Splinky", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["GP28", "GP21", "GP6", "GP7", "GP8"], - "rows": ["GP26", "GP5", "GP4", "GP9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "ws2812": { - "pin": "GP0", - "driver": "vendor" - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/mcuconf.h b/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/mcuconf.h deleted file mode 100644 index 6aaf31428c..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/mcuconf.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 RP_SPI_USE_SPI0 -#define RP_SPI_USE_SPI0 TRUE diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/readme.md b/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/readme.md deleted file mode 100644 index 662eb5825c..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Splinky controller - -The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040. - -See [plut0nium/0xB2](https://github.com/plut0nium/0xB2/#releases) to figure out the right version for you (v2 or v3). diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/rules.mk deleted file mode 100644 index db29cb6789..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 - -SERIAL_DRIVER = vendor diff --git a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/config.h b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/config.h deleted file mode 100644 index 3efb323302..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/config.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define A0 PAL_LINE(GPIOA, 0) -// #define SPLIT_HAND_PIN A0 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* RGB settings. */ -#define WS2812_PWM_DRIVER PWMD2 -#define WS2812_PWM_CHANNEL 4 -#define WS2812_PWM_PAL_MODE 1 -#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM7 -#define WS2812_PWM_DMA_CHANNEL 3 - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED - -/* SPI config for pmw3360 sensor. */ -#define SPI_DRIVER SPID1 -#define SPI_SCK_PIN A5 -#define SPI_SCK_PAL_MODE 5 -#define SPI_MOSI_PIN A7 -#define SPI_MOSI_PAL_MODE 5 -#define SPI_MISO_PIN A6 -#define SPI_MISO_PAL_MODE 5 - -/* PMW3360 settings. */ -#define POINTING_DEVICE_CS_PIN A1 -#define PMW3360_CS_MODE 3 -#define PMW3360_CS_DIVISOR 64 diff --git a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/halconf.h b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/halconf.h deleted file mode 100644 index 0397de50b7..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/halconf.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define HAL_USE_PWM TRUE -#define HAL_USE_SERIAL TRUE -#define HAL_USE_SPI TRUE - -#include_next diff --git a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/keyboard.json b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/keyboard.json deleted file mode 100644 index ca48cc0f3c..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/keyboard.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "keyboard_name": "Charybdis Nano (3x5) STeMCell", - "usb": { - "device_version": "2.0.0", - "shared_endpoint": { - "keyboard": true - } - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "ws2812": { - "pin": "A2", - "driver": "pwm" - }, - "build": { - "debounce_type": "asym_eager_defer_pk" - }, - "matrix_pins": { - "cols": ["B2", "A4", "B4", "B5", "B8"], - "rows": ["B0", "B3", "A15", "B9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "A3" - } - }, - "development_board": "stemcell" -} diff --git a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/mcuconf.h b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/mcuconf.h deleted file mode 100644 index 17a46d8f95..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/mcuconf.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include_next - -#undef STM32_SPI_USE_SPI1 -#define STM32_SPI_USE_SPI1 TRUE - -#undef STM32_SERIAL_USE_USART1 -#define STM32_SERIAL_USE_USART1 FALSE - -#undef STM32_PWM_USE_TIM2 -#define STM32_PWM_USE_TIM2 TRUE - -#undef STM32_ST_USE_TIMER -#define STM32_ST_USE_TIMER 5 diff --git a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/stemcell/rules.mk deleted file mode 100644 index 4373b9c33d..0000000000 --- a/keyboards/bastardkb/charybdis/3x5/v2/stemcell/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint - -SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/charybdis/charybdis.c b/keyboards/bastardkb/charybdis/charybdis.c index 2251b24758..bd916844b8 100644 --- a/keyboards/bastardkb/charybdis/charybdis.c +++ b/keyboards/bastardkb/charybdis/charybdis.c @@ -1,22 +1,7 @@ -/* - * Copyright 2020 Christopher Courtney (@drashna) - * Copyright 2021 Quentin LEBASTARD - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Publicw License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Christopher Courtney (@drashna) +// Copyright 2021 Quentin LEBASTARD +// Copyright 2021 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #include "charybdis.h" #include "transactions.h" #include diff --git a/keyboards/bastardkb/charybdis/charybdis.h b/keyboards/bastardkb/charybdis/charybdis.h index a8ee639d9a..afa75e981f 100644 --- a/keyboards/bastardkb/charybdis/charybdis.h +++ b/keyboards/bastardkb/charybdis/charybdis.h @@ -1,21 +1,6 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2021 Quentin LEBASTARD +// Copyright 2021 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include "quantum.h" diff --git a/keyboards/bastardkb/charybdis/config.h b/keyboards/bastardkb/charybdis/config.h index ebbddecf57..f4c017875b 100644 --- a/keyboards/bastardkb/charybdis/config.h +++ b/keyboards/bastardkb/charybdis/config.h @@ -1,25 +1,8 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2021 Quentin LEBASTARD +// Copyright 2021 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -/* Pointing device configuration. */ - // Enable use of pointing device on slave split. #define SPLIT_POINTING_ENABLE @@ -32,46 +15,5 @@ // Invert X axis on mouse reports. #define POINTING_DEVICE_INVERT_X -/* RGB matrix support. */ -#ifdef RGB_MATRIX_ENABLE -# define ENABLE_RGB_MATRIX_ALPHAS_MODS -# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT -# define ENABLE_RGB_MATRIX_BREATHING -# define ENABLE_RGB_MATRIX_BAND_SAT -# define ENABLE_RGB_MATRIX_BAND_VAL -# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL -# define ENABLE_RGB_MATRIX_CYCLE_ALL -# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN -# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN -# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL -# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL -# define ENABLE_RGB_MATRIX_DUAL_BEACON -# define ENABLE_RGB_MATRIX_RAINBOW_BEACON -# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS -# define ENABLE_RGB_MATRIX_RAINDROPS -# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -# define ENABLE_RGB_MATRIX_HUE_BREATHING -# define ENABLE_RGB_MATRIX_HUE_PENDULUM -# define ENABLE_RGB_MATRIX_HUE_WAVE -# define ENABLE_RGB_MATRIX_TYPING_HEATMAP -# define ENABLE_RGB_MATRIX_DIGITAL_RAIN -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define ENABLE_RGB_MATRIX_SPLASH -# define ENABLE_RGB_MATRIX_MULTISPLASH -# define ENABLE_RGB_MATRIX_SOLID_SPLASH -# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -#endif +/* Trackball angle adjustment. */ +#define ROTATIONAL_TRANSFORM_ANGLE -25 diff --git a/keyboards/bastardkb/charybdis/info.json b/keyboards/bastardkb/charybdis/info.json index 6a4ed7c9f7..4d7545d40a 100644 --- a/keyboards/bastardkb/charybdis/info.json +++ b/keyboards/bastardkb/charybdis/info.json @@ -1,7 +1,50 @@ { + "url": "https://github.com/Bastardkb/Charybdis", "rgb_matrix": { "animations": { - "cycle_left_right": true + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_rain": true, + "pixel_flow": true, + "pixel_fractal": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true }, "default": { "speed": 32, @@ -10,10 +53,11 @@ "sleep": true }, "split": { + "enabled": true, "transport": { "sync": { "matrix_state": true } } } -} \ No newline at end of file +} diff --git a/keyboards/bastardkb/charybdis/post_config.h b/keyboards/bastardkb/charybdis/post_config.h index 4cfd24c4b6..5f5045f04e 100644 --- a/keyboards/bastardkb/charybdis/post_config.h +++ b/keyboards/bastardkb/charybdis/post_config.h @@ -1,23 +1,8 @@ -/* - * Copyright 2012 Jun Wako - * Copyright 2015 Jack Humbert - * Copyright 2021 Quentin LEBASTARD - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2012 Jun Wako +// Copyright 2015 Jack Humbert +// Copyright 2021 Quentin LEBASTARD +// Copyright 2021 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once // Enable syncing of charybdis config From 20555f9a3366abf9d4246e00ad032590ff16236a Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 14 Jul 2025 13:53:57 +0100 Subject: [PATCH 080/167] Relocate `AUDIO_INIT_DELAY` implementation (#25491) --- quantum/audio/audio.c | 19 +++++++++++++++++++ quantum/audio/audio.h | 6 +++++- quantum/keyboard.c | 20 ++------------------ 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 247b737331..461ec89544 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -183,6 +183,25 @@ void audio_init(void) { #endif } +void audio_task(void) { +#ifdef AUDIO_INIT_DELAY + // startup song potentially needs to be run a little bit + // after keyboard startup, or else they will not work correctly + // because of interaction with the USB device state, which + // may still be in flux... + static bool delayed_tasks_run = false; + static uint16_t delayed_task_timer = 0; + if (!delayed_tasks_run) { + if (!delayed_task_timer) { + delayed_task_timer = timer_read(); + } else if (timer_elapsed(delayed_task_timer) > 300) { + audio_startup(); + delayed_tasks_run = true; + } + } +#endif +} + void audio_startup(void) { if (audio_config.enable) { PLAY_SONG(startup_song); diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index 647744a686..a41814d0f8 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -69,7 +69,11 @@ void eeconfig_update_audio_current(void); * @post audio system (and hardware) initialized and ready to play tones */ void audio_init(void); -void audio_startup(void); + +/** + * \brief Handle various subsystem background tasks. + */ +void audio_task(void); /** * @brief en-/disable audio output, save this choice to the eeprom diff --git a/quantum/keyboard.c b/quantum/keyboard.c index c1a6d444a5..bf4890a51d 100644 --- a/quantum/keyboard.c +++ b/quantum/keyboard.c @@ -648,24 +648,8 @@ void quantum_task(void) { if (!is_keyboard_master()) return; #endif -#if defined(AUDIO_ENABLE) && defined(AUDIO_INIT_DELAY) - // There are some tasks that need to be run a little bit - // after keyboard startup, or else they will not work correctly - // because of interaction with the USB device state, which - // may still be in flux... - // - // At the moment the only feature that needs this is the - // startup song. - static bool delayed_tasks_run = false; - static uint16_t delayed_task_timer = 0; - if (!delayed_tasks_run) { - if (!delayed_task_timer) { - delayed_task_timer = timer_read(); - } else if (timer_elapsed(delayed_task_timer) > 300) { - audio_startup(); - delayed_tasks_run = true; - } - } +#ifdef AUDIO_ENABLE + audio_task(); #endif #if defined(AUDIO_ENABLE) && !defined(NO_MUSIC_MODE) From f0b04b2a3a3b21cbb833a26de6f68fac100b1b94 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 14 Jul 2025 14:47:21 +0100 Subject: [PATCH 081/167] Only userspace should be searched for keyboard aliases when locating keymaps (#25477) --- lib/python/qmk/keymap.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/lib/python/qmk/keymap.py b/lib/python/qmk/keymap.py index b7138aa4a1..4cf07f59d6 100644 --- a/lib/python/qmk/keymap.py +++ b/lib/python/qmk/keymap.py @@ -343,24 +343,21 @@ def locate_keymap(keyboard, keymap, force_layout=None): # Check the keyboard folder first, last match wins keymap_path = '' - search_dirs = [QMK_FIRMWARE] - keyboard_dirs = [keyboard_folder(keyboard)] + search_conf = {QMK_FIRMWARE: [keyboard_folder(keyboard)]} if HAS_QMK_USERSPACE: # When we've got userspace, check there _last_ as we want them to override anything in the main repo. - search_dirs.append(QMK_USERSPACE) # We also want to search for any aliases as QMK's folder structure may have changed, with an alias, but the user # hasn't updated their keymap location yet. - keyboard_dirs.extend(keyboard_aliases(keyboard)) - keyboard_dirs = list(set(keyboard_dirs)) + search_conf[QMK_USERSPACE] = list(set([keyboard_folder(keyboard), *keyboard_aliases(keyboard)])) - for search_dir in search_dirs: + for search_dir, keyboard_dirs in search_conf.items(): for keyboard_dir in keyboard_dirs: checked_dirs = '' - for dir in keyboard_dir.split('/'): + for folder_name in keyboard_dir.split('/'): if checked_dirs: - checked_dirs = '/'.join((checked_dirs, dir)) + checked_dirs = '/'.join((checked_dirs, folder_name)) else: - checked_dirs = dir + checked_dirs = folder_name keymap_dir = Path(search_dir) / Path('keyboards') / checked_dirs / 'keymaps' From 507c948ed8bb927096c6951ef75d8398fae040f9 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 16 Jul 2025 14:56:29 +0100 Subject: [PATCH 082/167] Allow `qmk flash ` to flash AT32 boards (#25497) --- lib/python/qmk/flashers.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/python/qmk/flashers.py b/lib/python/qmk/flashers.py index 2cca4941d3..22d9133d65 100644 --- a/lib/python/qmk/flashers.py +++ b/lib/python/qmk/flashers.py @@ -96,7 +96,7 @@ def _find_bootloader(): details = 'halfkay' else: details = 'qmk-hid' - elif bl in {'apm32-dfu', 'gd32v-dfu', 'kiibohd', 'stm32-dfu'}: + elif bl in {'apm32-dfu', 'at32-dfu', 'gd32v-dfu', 'kiibohd', 'stm32-dfu'}: details = (vid, pid) else: details = None @@ -176,7 +176,7 @@ def _flash_dfu_util(details, file): # kiibohd elif details[0] == '1c11' and details[1] == 'b007': cli.run(['dfu-util', '-a', '0', '-d', f'{details[0]}:{details[1]}', '-D', file], capture_output=False) - # STM32, APM32, or GD32V DFU + # STM32, APM32, AT32, or GD32V DFU else: cli.run(['dfu-util', '-a', '0', '-d', f'{details[0]}:{details[1]}', '-s', '0x08000000:leave', '-D', file], capture_output=False) @@ -226,7 +226,7 @@ def flasher(mcu, file): return (True, "Please make sure 'teensy_loader_cli' or 'hid_bootloader_cli' is available on your system.") else: return (True, "Specifying the MCU with '-m' is necessary for HalfKay/HID bootloaders!") - elif bl in {'apm32-dfu', 'gd32v-dfu', 'kiibohd', 'stm32-dfu'}: + elif bl in {'apm32-dfu', 'at32-dfu', 'gd32v-dfu', 'kiibohd', 'stm32-dfu'}: _flash_dfu_util(details, file) elif bl == 'wb32-dfu': if _flash_wb32_dfu_updater(file): From 865c29f4dec268da53ccc290217c957307275a93 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Thu, 17 Jul 2025 13:36:04 +0100 Subject: [PATCH 083/167] Ensure keyboard aliases do not point to themselves (#25500) --- lib/python/qmk/cli/ci/validate_aliases.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/python/qmk/cli/ci/validate_aliases.py b/lib/python/qmk/cli/ci/validate_aliases.py index 8b062dbe56..4f2fe6c941 100644 --- a/lib/python/qmk/cli/ci/validate_aliases.py +++ b/lib/python/qmk/cli/ci/validate_aliases.py @@ -25,6 +25,21 @@ def _target_keyboard_exists(target): return True +def _alias_not_self(alias): + """Check if alias points to itself, either directly or within a circular reference + """ + aliases = keyboard_alias_definitions() + + found = set() + while alias in aliases: + found.add(alias) + alias = aliases[alias].get('target', alias) + if alias in found: + return False + + return True + + @cli.subcommand('Validates the list of keyboard aliases.', hidden=True) def ci_validate_aliases(cli): aliases = keyboard_alias_definitions() @@ -32,7 +47,11 @@ def ci_validate_aliases(cli): success = True for alias in aliases.keys(): target = aliases[alias].get('target', None) - if not _target_keyboard_exists(target): + if not _alias_not_self(alias): + cli.log.error(f'Keyboard alias {alias} should not point to itself') + success = False + + elif not _target_keyboard_exists(target): cli.log.error(f'Keyboard alias {alias} has a target that doesn\'t exist: {target}') success = False From 16ffaa6482e741380f5001f9a2cbb2b81520cebe Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 17 Jul 2025 11:09:01 -0600 Subject: [PATCH 084/167] Add `null65iso` keyboard (#25465) --- .../nulldesignco/null65iso/v1/keyboard.json | 240 ++++++++++++++++++ .../null65iso/v1/keymaps/default/keymap.c | 22 ++ keyboards/nulldesignco/null65iso/v1/readme.md | 27 ++ 3 files changed, 289 insertions(+) create mode 100755 keyboards/nulldesignco/null65iso/v1/keyboard.json create mode 100755 keyboards/nulldesignco/null65iso/v1/keymaps/default/keymap.c create mode 100755 keyboards/nulldesignco/null65iso/v1/readme.md diff --git a/keyboards/nulldesignco/null65iso/v1/keyboard.json b/keyboards/nulldesignco/null65iso/v1/keyboard.json new file mode 100755 index 0000000000..6b40b2e0d1 --- /dev/null +++ b/keyboards/nulldesignco/null65iso/v1/keyboard.json @@ -0,0 +1,240 @@ +{ + "manufacturer": "nulldesignco", + "keyboard_name": "null65iso", + "maintainer": "quark-works", + "processor": "RP2040", + "bootloader": "rp2040", + "usb": { + "vid": "0x6E6C", + "pid": "0x0010", + "device_version": "1.0.0" + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "ws2812": { + "pin": "GP18", + "driver": "vendor" + }, + "rgb_matrix": { + "max_brightness": 90, + "center_point": [120,32], + "sleep": true, + "driver": "ws2812", + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "flower_blooming": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "riverflow": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "starlight": true, + "starlight_dual_hue": true, + "starlight_dual_sat": true, + "typing_heatmap": true + }, + "layout": [ + {"matrix": [4, 6], "x": 102, "y": 64, "flags": 4}, + + {"matrix": [4, 9], "x": 102, "y": 64, "flags": 4}, + {"matrix": [4, 10], "x": 160, "y": 64, "flags": 4}, + {"matrix": [4, 11], "x": 176, "y": 64, "flags": 4}, + {"matrix": [4, 12], "x": 192, "y": 64, "flags": 4}, + {"matrix": [4, 13], "x": 208, "y": 64, "flags": 4}, + {"matrix": [4, 14], "x": 240, "y": 64, "flags": 4}, + + {"matrix": [3, 14], "x": 240, "y": 48, "flags": 4}, + {"matrix": [3, 13], "x": 224, "y": 48, "flags": 4}, + {"matrix": [3, 12], "x": 202, "y": 48, "flags": 4}, + {"matrix": [3, 11], "x": 180, "y": 48, "flags": 4}, + {"matrix": [3, 10], "x": 164, "y": 48, "flags": 4}, + {"matrix": [3, 9], "x": 148, "y": 48, "flags": 4}, + {"matrix": [3, 8], "x": 132, "y": 48, "flags": 4}, + {"matrix": [3, 7], "x": 116, "y": 48, "flags": 4}, + {"matrix": [3, 6], "x": 100, "y": 48, "flags": 4}, + {"matrix": [3, 5], "x": 84, "y": 48, "flags": 4}, + {"matrix": [3, 4], "x": 68, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 52, "y": 48, "flags": 4}, + {"matrix": [3, 2], "x": 36, "y": 48, "flags": 4}, + + + {"matrix": [4, 2], "x": 42, "y": 64, "flags": 4}, + {"matrix": [4, 1], "x": 22, "y": 64, "flags": 4}, + {"matrix": [4, 0], "x": 2, "y": 64, "flags": 4}, + + {"matrix": [3, 1], "x": 20, "y": 48, "flags": 4}, + {"matrix": [3, 0], "x": 2, "y": 48, "flags": 4}, + + {"matrix": [2, 0], "x": 6, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 28, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 44, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 60, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 76, "y": 32, "flags": 4}, + {"matrix": [2, 5], "x": 92, "y": 32, "flags": 4}, + {"matrix": [2, 6], "x": 108, "y": 32, "flags": 4}, + {"matrix": [2, 7], "x": 124, "y": 32, "flags": 4}, + {"matrix": [2, 8], "x": 140, "y": 32, "flags": 4}, + {"matrix": [2, 9], "x": 156, "y": 32, "flags": 4}, + {"matrix": [2, 10], "x": 172, "y": 32, "flags": 4}, + {"matrix": [2, 11], "x": 188, "y": 32, "flags": 4}, + {"matrix": [2, 12], "x": 214, "y": 32, "flags": 4}, + {"matrix": [2, 14], "x": 240, "y": 32, "flags": 4}, + + {"matrix": [1, 14], "x": 240, "y": 16, "flags": 4}, + {"matrix": [1, 13], "x": 220, "y": 24, "flags": 4}, + {"matrix": [1, 12], "x": 200, "y": 16, "flags": 4}, + {"matrix": [1, 11], "x": 184, "y": 16, "flags": 4}, + {"matrix": [1, 10], "x": 168, "y": 16, "flags": 4}, + {"matrix": [1, 9], "x": 152, "y": 16, "flags": 4}, + {"matrix": [1, 8], "x": 136, "y": 16, "flags": 4}, + {"matrix": [1, 7], "x": 120, "y": 16, "flags": 4}, + {"matrix": [1, 6], "x": 104, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 88, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 72, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 56, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 40, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 24, "y": 16, "flags": 4}, + {"matrix": [1, 0], "x": 4, "y": 16, "flags": 4}, + + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 96, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 112, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 128, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 144, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 160, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 176, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 192, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 216, "y": 0, "flags": 4}, + {"matrix": [0, 14], "x": 240, "y": 0, "flags": 4} + ] + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["GP4", "GP3", "GP2", "GP17", "GP15"], + "cols": ["GP28", "GP27", "GP29", "GP0", "GP1", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6", "GP5"] + }, + "url": "https://nulldesignco.com/", + "community_layouts": ["65_iso"], + "layouts": { + "LAYOUT_65_iso": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [0, 12], "x": 12, "y": 0 }, + { "matrix": [0, 13], "w": 2, "x": 13, "y": 0 }, + { "matrix": [0, 14], "x": 15, "y": 0 }, + { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "matrix": [1, 14], "x": 15, "y": 1 }, + { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "matrix": [2, 12], "x": 12.75, "y": 2 }, + { "matrix": [1, 13], "w": 1.25, "x": 13.75, "y": 1, "h": 2 }, + { "matrix": [2, 14], "x": 15, "y": 2 }, + { "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, + { "matrix": [3, 13], "x": 14, "y": 3 }, + { "matrix": [3, 14], "x": 15, "y": 3 }, + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, + { "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 9], "x": 10, "y": 4 }, + { "matrix": [4, 10], "x": 11, "y": 4 }, + { "matrix": [4, 11], "x": 12, "y": 4 }, + { "matrix": [4, 12], "x": 13, "y": 4 }, + { "matrix": [4, 13], "x": 14, "y": 4 }, + { "matrix": [4, 14], "x": 15, "y": 4 } + ] + } + } +} diff --git a/keyboards/nulldesignco/null65iso/v1/keymaps/default/keymap.c b/keyboards/nulldesignco/null65iso/v1/keymaps/default/keymap.c new file mode 100755 index 0000000000..c360ef0e8a --- /dev/null +++ b/keyboards/nulldesignco/null65iso/v1/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2025 quark-works +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_65_iso( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; + +bool rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(25, 255, 0, 0); + } + return false; +} diff --git a/keyboards/nulldesignco/null65iso/v1/readme.md b/keyboards/nulldesignco/null65iso/v1/readme.md new file mode 100755 index 0000000000..f7fdeac131 --- /dev/null +++ b/keyboards/nulldesignco/null65iso/v1/readme.md @@ -0,0 +1,27 @@ +# null65iso v1 + +![sp](https://i.imgur.com/dypoXbB.png) + +65% tray mount PCB with RGB per key. + +* Keyboard Maintainer: [Quark](https://github.com/quark-works) +* Hardware Supported: PCB +* Hardware Availability: https://nulldesignco.com/ + +Make example for this keyboard (after setting up your build environment): + + make nulldesignco/null65iso/v1:default + +Flashing example for this keyboard: + + make nulldesignco/null65iso/v1: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 boot button**: Hold the button labeled as "BOOT" on the back of the board or short the two pads on the front while you connect the keyboard to your computer. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file From 7098252252ad17e14118d06da14d7fe62d807f83 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 17 Jul 2025 11:09:17 -0600 Subject: [PATCH 085/167] Add `null65ansi` keyboard (#25464) --- .../nulldesignco/null65ansi/v1/keyboard.json | 237 ++++++++++++++++++ .../null65ansi/v1/keymaps/default/keymap.c | 22 ++ .../nulldesignco/null65ansi/v1/readme.md | 27 ++ 3 files changed, 286 insertions(+) create mode 100755 keyboards/nulldesignco/null65ansi/v1/keyboard.json create mode 100755 keyboards/nulldesignco/null65ansi/v1/keymaps/default/keymap.c create mode 100755 keyboards/nulldesignco/null65ansi/v1/readme.md diff --git a/keyboards/nulldesignco/null65ansi/v1/keyboard.json b/keyboards/nulldesignco/null65ansi/v1/keyboard.json new file mode 100755 index 0000000000..8fb0393494 --- /dev/null +++ b/keyboards/nulldesignco/null65ansi/v1/keyboard.json @@ -0,0 +1,237 @@ +{ + "manufacturer": "nulldesignco", + "keyboard_name": "null65ansi", + "maintainer": "quark-works", + "processor": "RP2040", + "bootloader": "rp2040", + "usb": { + "vid": "0x6E6C", + "pid": "0x0001", + "device_version": "1.0.0" + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "ws2812": { + "pin": "GP18", + "driver": "vendor" + }, + "rgb_matrix": { + "max_brightness": 90, + "center_point": [120,32], + "sleep": true, + "driver": "ws2812", + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "flower_blooming": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "riverflow": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "starlight": true, + "starlight_dual_hue": true, + "starlight_dual_sat": true, + "typing_heatmap": true + }, + "layout": [ + {"matrix": [4, 5], "x": 102, "y": 64, "flags": 4}, + + {"matrix": [4, 9], "x": 102, "y": 64, "flags": 4}, + {"matrix": [4, 10], "x": 160, "y": 64, "flags": 4}, + {"matrix": [4, 11], "x": 176, "y": 64, "flags": 4}, + {"matrix": [4, 12], "x": 192, "y": 64, "flags": 4}, + {"matrix": [4, 13], "x": 208, "y": 64, "flags": 4}, + {"matrix": [4, 14], "x": 240, "y": 64, "flags": 4}, + + {"matrix": [3, 14], "x": 240, "y": 48, "flags": 4}, + {"matrix": [3, 13], "x": 224, "y": 48, "flags": 4}, + {"matrix": [3, 12], "x": 202, "y": 48, "flags": 4}, + {"matrix": [3, 10], "x": 180, "y": 48, "flags": 4}, + {"matrix": [3, 9], "x": 164, "y": 48, "flags": 4}, + {"matrix": [3, 8], "x": 148, "y": 48, "flags": 4}, + {"matrix": [3, 7], "x": 132, "y": 48, "flags": 4}, + {"matrix": [3, 6], "x": 116, "y": 48, "flags": 4}, + {"matrix": [3, 5], "x": 100, "y": 48, "flags": 4}, + {"matrix": [3, 4], "x": 84, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 68, "y": 48, "flags": 4}, + {"matrix": [3, 2], "x": 52, "y": 48, "flags": 4}, + {"matrix": [3, 1], "x": 36, "y": 48, "flags": 4}, + + {"matrix": [4, 2], "x": 42, "y": 64, "flags": 4}, + {"matrix": [4, 1], "x": 22, "y": 64, "flags": 4}, + {"matrix": [4, 0], "x": 2, "y": 64, "flags": 4}, + + {"matrix": [3, 0], "x": 10, "y": 48, "flags": 4}, + + {"matrix": [2, 0], "x": 6, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 28, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 44, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 60, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 76, "y": 32, "flags": 4}, + {"matrix": [2, 5], "x": 92, "y": 32, "flags": 4}, + {"matrix": [2, 6], "x": 108, "y": 32, "flags": 4}, + {"matrix": [2, 7], "x": 124, "y": 32, "flags": 4}, + {"matrix": [2, 8], "x": 140, "y": 32, "flags": 4}, + {"matrix": [2, 9], "x": 156, "y": 32, "flags": 4}, + {"matrix": [2, 10], "x": 172, "y": 32, "flags": 4}, + {"matrix": [2, 11], "x": 188, "y": 32, "flags": 4}, + {"matrix": [2, 13], "x": 214, "y": 32, "flags": 4}, + {"matrix": [2, 14], "x": 240, "y": 32, "flags": 4}, + + {"matrix": [1, 14], "x": 240, "y": 16, "flags": 4}, + {"matrix": [1, 13], "x": 220, "y": 16, "flags": 4}, + {"matrix": [1, 12], "x": 200, "y": 16, "flags": 4}, + {"matrix": [1, 11], "x": 184, "y": 16, "flags": 4}, + {"matrix": [1, 10], "x": 168, "y": 16, "flags": 4}, + {"matrix": [1, 9], "x": 152, "y": 16, "flags": 4}, + {"matrix": [1, 8], "x": 136, "y": 16, "flags": 4}, + {"matrix": [1, 7], "x": 120, "y": 16, "flags": 4}, + {"matrix": [1, 6], "x": 104, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 88, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 72, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 56, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 40, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 24, "y": 16, "flags": 4}, + {"matrix": [1, 0], "x": 4, "y": 16, "flags": 4}, + + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 96, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 112, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 128, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 144, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 160, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 176, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 192, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 216, "y": 0, "flags": 4}, + {"matrix": [0, 14], "x": 240, "y": 0, "flags": 4} + ] + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["GP4", "GP3", "GP2", "GP17", "GP15"], + "cols": ["GP28", "GP27", "GP29", "GP0", "GP1", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6", "GP5"] + }, + "url": "https://nulldesignco.com/", + "community_layouts": ["65_ansi"], + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [0, 12], "x": 12, "y": 0 }, + { "matrix": [0, 13], "w": 2, "x": 13, "y": 0 }, + { "matrix": [0, 14], "x": 15, "y": 0 }, + { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "matrix": [1, 14], "x": 15, "y": 1 }, + { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "matrix": [2, 14], "x": 15, "y": 2 }, + { "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 2.25, "y": 3 }, + { "matrix": [3, 2], "x": 3.25, "y": 3 }, + { "matrix": [3, 3], "x": 4.25, "y": 3 }, + { "matrix": [3, 4], "x": 5.25, "y": 3 }, + { "matrix": [3, 5], "x": 6.25, "y": 3 }, + { "matrix": [3, 6], "x": 7.25, "y": 3 }, + { "matrix": [3, 7], "x": 8.25, "y": 3 }, + { "matrix": [3, 8], "x": 9.25, "y": 3 }, + { "matrix": [3, 9], "x": 10.25, "y": 3 }, + { "matrix": [3, 10], "x": 11.25, "y": 3 }, + { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, + { "matrix": [3, 13], "x": 14, "y": 3 }, + { "matrix": [3, 14], "x": 15, "y": 3 }, + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, + { "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 9], "x": 10, "y": 4 }, + { "matrix": [4, 10], "x": 11, "y": 4 }, + { "matrix": [4, 11], "x": 12, "y": 4 }, + { "matrix": [4, 12], "x": 13, "y": 4 }, + { "matrix": [4, 13], "x": 14, "y": 4 }, + { "matrix": [4, 14], "x": 15, "y": 4 } + ] + } + } +} diff --git a/keyboards/nulldesignco/null65ansi/v1/keymaps/default/keymap.c b/keyboards/nulldesignco/null65ansi/v1/keymaps/default/keymap.c new file mode 100755 index 0000000000..7a921cf608 --- /dev/null +++ b/keyboards/nulldesignco/null65ansi/v1/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2025 quark-works +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_65_ansi( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; + +bool rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(24, 255, 0, 0); + } + return false; +} diff --git a/keyboards/nulldesignco/null65ansi/v1/readme.md b/keyboards/nulldesignco/null65ansi/v1/readme.md new file mode 100755 index 0000000000..308d4120e3 --- /dev/null +++ b/keyboards/nulldesignco/null65ansi/v1/readme.md @@ -0,0 +1,27 @@ +# null65ansi v1 + +![sp](https://i.imgur.com/zO7Jlwj.png) + +65% tray mount PCB with RGB per key. + +* Keyboard Maintainer: [Quark](https://github.com/quark-works) +* Hardware Supported: PCB +* Hardware Availability: https://nulldesignco.com/ + +Make example for this keyboard (after setting up your build environment): + + make nulldesignco/null65ansi/v1:default + +Flashing example for this keyboard: + + make nulldesignco/null65ansi/v1: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 boot button**: Hold the button labeled as "BOOT" on the back of the board or short the two pads on the front while you connect the keyboard to your computer. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file From 43853b337bbccacf9e0e78bc5fcd7b9e09de4a4b Mon Sep 17 00:00:00 2001 From: Bailey <69098787+Ll3ma@users.noreply.github.com> Date: Fri, 18 Jul 2025 01:49:52 +0800 Subject: [PATCH 086/167] [Keyboard] Rename ll3macorn -> ll3ma (#25498) * rebrand for Ll3ma * rebrand for Ll3ma * Update keyboard_aliases.hjson * Update keyboard_aliases.hjson * Update keyboard_aliases.hjson * Update keyboard_aliases.hjson * Update keyboard_aliases.hjson Co-authored-by: Joel Challis --------- Co-authored-by: Joel Challis --- data/mappings/keyboard_aliases.hjson | 3 +++ keyboards/{ll3macorn => ll3ma}/bongopad/bongopad.c | 2 +- keyboards/{ll3macorn => ll3ma}/bongopad/config.h | 2 +- keyboards/{ll3macorn => ll3ma}/bongopad/keyboard.json | 6 +++--- .../{ll3macorn => ll3ma}/bongopad/keymaps/default/keymap.c | 2 +- .../{ll3macorn => ll3ma}/bongopad/keymaps/default/rules.mk | 0 keyboards/{ll3macorn => ll3ma}/bongopad/readme.md | 4 ++-- 7 files changed, 11 insertions(+), 8 deletions(-) rename keyboards/{ll3macorn => ll3ma}/bongopad/bongopad.c (99%) rename keyboards/{ll3macorn => ll3ma}/bongopad/config.h (74%) rename keyboards/{ll3macorn => ll3ma}/bongopad/keyboard.json (94%) rename keyboards/{ll3macorn => ll3ma}/bongopad/keymaps/default/keymap.c (94%) rename keyboards/{ll3macorn => ll3ma}/bongopad/keymaps/default/rules.mk (100%) rename keyboards/{ll3macorn => ll3ma}/bongopad/readme.md (79%) diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index db62bce419..42fb5e2139 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -425,6 +425,9 @@ "lfkeyboards/smk65": { "target": "lfkeyboards/smk65/revb" }, + "ll3macorn/bongopad": { + "target": "ll3ma/bongopad" + }, "m3v3van": { "target": "matthewdias/m3n3van" }, diff --git a/keyboards/ll3macorn/bongopad/bongopad.c b/keyboards/ll3ma/bongopad/bongopad.c similarity index 99% rename from keyboards/ll3macorn/bongopad/bongopad.c rename to keyboards/ll3ma/bongopad/bongopad.c index f6d03ded6c..910e5a4d70 100644 --- a/keyboards/ll3macorn/bongopad/bongopad.c +++ b/keyboards/ll3ma/bongopad/bongopad.c @@ -1,4 +1,4 @@ -// Copyright 2021 Ll3macorn (@ll3macorn) +// Copyright 2025 Ll3ma (@ll3ma) // SPDX-License-Identifier: GPL-2.0-or-later #include "quantum.h" diff --git a/keyboards/ll3macorn/bongopad/config.h b/keyboards/ll3ma/bongopad/config.h similarity index 74% rename from keyboards/ll3macorn/bongopad/config.h rename to keyboards/ll3ma/bongopad/config.h index 4ee4b5a997..c9f7f102de 100644 --- a/keyboards/ll3macorn/bongopad/config.h +++ b/keyboards/ll3ma/bongopad/config.h @@ -1,4 +1,4 @@ -// Copyright 2021 Ll3macorn (@ll3macorn) +// Copyright 2025 Ll3ma (@ll3ma) // SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/keyboards/ll3macorn/bongopad/keyboard.json b/keyboards/ll3ma/bongopad/keyboard.json similarity index 94% rename from keyboards/ll3macorn/bongopad/keyboard.json rename to keyboards/ll3ma/bongopad/keyboard.json index a47529ed28..c3abc03fc9 100644 --- a/keyboards/ll3macorn/bongopad/keyboard.json +++ b/keyboards/ll3ma/bongopad/keyboard.json @@ -1,8 +1,8 @@ { "keyboard_name": "BongoPad", - "manufacturer": "Ll3macorn", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ll3macorn/bongopad", - "maintainer": "Ll3macorn", + "manufacturer": "Ll3ma", + "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ll3ma/bongopad", + "maintainer": "Ll3ma", "usb": { "vid": "0x3728", "pid": "0x2949", diff --git a/keyboards/ll3macorn/bongopad/keymaps/default/keymap.c b/keyboards/ll3ma/bongopad/keymaps/default/keymap.c similarity index 94% rename from keyboards/ll3macorn/bongopad/keymaps/default/keymap.c rename to keyboards/ll3ma/bongopad/keymaps/default/keymap.c index d91a949dee..1afcc87cfe 100644 --- a/keyboards/ll3macorn/bongopad/keymaps/default/keymap.c +++ b/keyboards/ll3ma/bongopad/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -// Copyright 2021 Ll3macorn (@ll3macorn) +// Copyright 2025 Ll3ma (@ll3ma) // SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H diff --git a/keyboards/ll3macorn/bongopad/keymaps/default/rules.mk b/keyboards/ll3ma/bongopad/keymaps/default/rules.mk similarity index 100% rename from keyboards/ll3macorn/bongopad/keymaps/default/rules.mk rename to keyboards/ll3ma/bongopad/keymaps/default/rules.mk diff --git a/keyboards/ll3macorn/bongopad/readme.md b/keyboards/ll3ma/bongopad/readme.md similarity index 79% rename from keyboards/ll3macorn/bongopad/readme.md rename to keyboards/ll3ma/bongopad/readme.md index d2902aae6a..0751ac4fc8 100644 --- a/keyboards/ll3macorn/bongopad/readme.md +++ b/keyboards/ll3ma/bongopad/readme.md @@ -1,10 +1,10 @@ # BongoPad -* Keyboard Maintainer: [Ll3macorn](https://github.com/Ll3macorn) +* Keyboard Maintainer: [Ll3ma](https://github.com/Ll3ma) * Hardware Supported: Pro micro Make example for this keyboard (after setting up your build environment): - make ll3macorn/bongopad:default + make ll3ma/bongopad: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). From 65cce9105d4880b47052c0af57e86480784d1013 Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Sat, 19 Jul 2025 23:23:28 -0600 Subject: [PATCH 087/167] Refactor `helix/rev3_{4,5}rows` (#25430) * Refactor helix/rev3_{4,5}rows rev3_4rows and rev3_5rows are identical, except for the extra row users can snap off of their PCBs. - Add alias for rev3_4rows - Migrates legacy defines and configuration to keyboard.json - Tidy's keymap and migrates to JSON - Removes RGB Light configuration, enables RGB Matrix - Removes DIP switch configuration, as they do not appear to be present on PCBs - Adds an alternate 4 row layout for snappable PCB - Tidy's up OLED code - Enables standard features (bootmagic, extrakey, etc.) * Alias for rev3_5rows -> rev3 * Add product URL * Replace mistakenly removed DIP switch configuration * Remove rebase artifact --- data/mappings/keyboard_aliases.hjson | 6 + keyboards/helix/rev3/config.h | 5 + keyboards/helix/rev3/keyboard.json | 250 ++++++++++++++++++ .../helix/rev3/keymaps/default/keymap.json | 38 +++ keyboards/helix/rev3/rev3.c | 77 ++++++ keyboards/helix/rev3_4rows/config.h | 60 ----- keyboards/helix/rev3_4rows/keyboard.json | 118 --------- .../helix/rev3_4rows/keymaps/default/keymap.c | 180 ------------- .../rev3_4rows/keymaps/default/oled_display.c | 120 --------- .../rev3_4rows/keymaps/default/readme.md | 66 ----- keyboards/helix/rev3_4rows/oled_display.c | 9 - keyboards/helix/rev3_4rows/readme.md | 13 - keyboards/helix/rev3_4rows/rev3_4rows.c | 114 -------- keyboards/helix/rev3_4rows/rev3_4rows.h | 22 -- keyboards/helix/rev3_4rows/rules.mk | 9 - keyboards/helix/rev3_5rows/config.h | 60 ----- keyboards/helix/rev3_5rows/keyboard.json | 198 -------------- .../helix/rev3_5rows/keymaps/default/keymap.c | 182 ------------- .../rev3_5rows/keymaps/default/oled_display.c | 120 --------- .../rev3_5rows/keymaps/default/readme.md | 81 ------ .../helix/rev3_5rows/keymaps/default/rules.mk | 1 - keyboards/helix/rev3_5rows/oled_display.c | 9 - keyboards/helix/rev3_5rows/readme.md | 13 - keyboards/helix/rev3_5rows/rev3_5rows.c | 114 -------- keyboards/helix/rev3_5rows/rev3_5rows.h | 22 -- keyboards/helix/rev3_5rows/rules.mk | 10 - 26 files changed, 376 insertions(+), 1521 deletions(-) create mode 100644 keyboards/helix/rev3/config.h create mode 100644 keyboards/helix/rev3/keyboard.json create mode 100644 keyboards/helix/rev3/keymaps/default/keymap.json create mode 100644 keyboards/helix/rev3/rev3.c delete mode 100644 keyboards/helix/rev3_4rows/config.h delete mode 100644 keyboards/helix/rev3_4rows/keyboard.json delete mode 100644 keyboards/helix/rev3_4rows/keymaps/default/keymap.c delete mode 100644 keyboards/helix/rev3_4rows/keymaps/default/oled_display.c delete mode 100644 keyboards/helix/rev3_4rows/keymaps/default/readme.md delete mode 100644 keyboards/helix/rev3_4rows/oled_display.c delete mode 100644 keyboards/helix/rev3_4rows/readme.md delete mode 100644 keyboards/helix/rev3_4rows/rev3_4rows.c delete mode 100644 keyboards/helix/rev3_4rows/rev3_4rows.h delete mode 100644 keyboards/helix/rev3_4rows/rules.mk delete mode 100644 keyboards/helix/rev3_5rows/config.h delete mode 100644 keyboards/helix/rev3_5rows/keyboard.json delete mode 100644 keyboards/helix/rev3_5rows/keymaps/default/keymap.c delete mode 100644 keyboards/helix/rev3_5rows/keymaps/default/oled_display.c delete mode 100644 keyboards/helix/rev3_5rows/keymaps/default/readme.md delete mode 100644 keyboards/helix/rev3_5rows/keymaps/default/rules.mk delete mode 100644 keyboards/helix/rev3_5rows/oled_display.c delete mode 100644 keyboards/helix/rev3_5rows/readme.md delete mode 100644 keyboards/helix/rev3_5rows/rev3_5rows.c delete mode 100644 keyboards/helix/rev3_5rows/rev3_5rows.h delete mode 100644 keyboards/helix/rev3_5rows/rules.mk diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index 42fb5e2139..73339a2c56 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -2311,6 +2311,12 @@ "handwired/dygma/raise": { "target": "handwired/dygma/raise/ansi" }, + "helix/rev3_4rows": { + "target": "helix/rev3" + }, + "helix/rev3_5rows": { + "target": "helix/rev3" + }, "ibm/model_m/mschwingen": { "target": "ibm/model_m/mschwingen/led_wired" }, diff --git a/keyboards/helix/rev3/config.h b/keyboards/helix/rev3/config.h new file mode 100644 index 0000000000..dac611de9a --- /dev/null +++ b/keyboards/helix/rev3/config.h @@ -0,0 +1,5 @@ +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define OLED_FONT_H "keyboards/helix/common/glcdfont.c" diff --git a/keyboards/helix/rev3/keyboard.json b/keyboards/helix/rev3/keyboard.json new file mode 100644 index 0000000000..7122afdd64 --- /dev/null +++ b/keyboards/helix/rev3/keyboard.json @@ -0,0 +1,250 @@ +{ + "manufacturer": "Yushakobo", + "keyboard_name": "Helix rev3", + "maintainer": "MakotoKurauchi", + "build": { + "lto": true + }, + "development_board": "promicro", + "diode_direction": "COL2ROW", + "dip_switch": { + "matrix_grid": [ + [0, 6], + [1, 6], + [5, 6], + [6, 6] + ] + }, + "encoder": { + "rotary": [ + {"pin_a": "B6", "pin_b": "B5"} + ] + }, + "features": { + "bootmagic": true, + "dip_switch": false, + "encoder": true, + "extrakey": true, + "mousekey": true, + "oled": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"], + "rows": ["D4", "C6", "D7", "E6", "B4"] + }, + "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 16, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 32, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 48, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 64, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 80, "y": 16, "flags": 4}, + {"matrix": [2, 5], "x": 80, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 64, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 48, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 16, "y": 32, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 48, "flags": 4}, + {"matrix": [3, 1], "x": 16, "y": 48, "flags": 4}, + {"matrix": [3, 2], "x": 32, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 48, "y": 48, "flags": 4}, + {"matrix": [3, 4], "x": 64, "y": 48, "flags": 4}, + {"matrix": [3, 5], "x": 80, "y": 48, "flags": 4}, + {"matrix": [3, 6], "x": 96, "y": 48, "flags": 4}, + {"matrix": [4, 6], "x": 96, "y": 64, "flags": 4}, + {"matrix": [4, 5], "x": 80, "y": 64, "flags": 4}, + {"matrix": [4, 4], "x": 64, "y": 64, "flags": 4}, + {"matrix": [4, 3], "x": 48, "y": 64, "flags": 4}, + {"matrix": [4, 2], "x": 32, "y": 64, "flags": 4}, + {"matrix": [4, 1], "x": 16, "y": 64, "flags": 4}, + {"matrix": [4, 0], "x": 0, "y": 64, "flags": 4}, + {"matrix": [5, 5], "x": 144, "y": 0, "flags": 4}, + {"matrix": [5, 4], "x": 160, "y": 0, "flags": 4}, + {"matrix": [5, 3], "x": 176, "y": 0, "flags": 4}, + {"matrix": [5, 2], "x": 192, "y": 0, "flags": 4}, + {"matrix": [5, 1], "x": 208, "y": 0, "flags": 4}, + {"matrix": [5, 0], "x": 224, "y": 0, "flags": 4}, + {"matrix": [6, 0], "x": 224, "y": 16, "flags": 4}, + {"matrix": [6, 1], "x": 208, "y": 16, "flags": 4}, + {"matrix": [6, 2], "x": 192, "y": 16, "flags": 4}, + {"matrix": [6, 3], "x": 176, "y": 16, "flags": 4}, + {"matrix": [6, 4], "x": 160, "y": 16, "flags": 4}, + {"matrix": [6, 5], "x": 144, "y": 16, "flags": 4}, + {"matrix": [7, 5], "x": 144, "y": 32, "flags": 4}, + {"matrix": [7, 4], "x": 160, "y": 32, "flags": 4}, + {"matrix": [7, 3], "x": 176, "y": 32, "flags": 4}, + {"matrix": [7, 2], "x": 192, "y": 32, "flags": 4}, + {"matrix": [7, 1], "x": 208, "y": 32, "flags": 4}, + {"matrix": [7, 0], "x": 224, "y": 32, "flags": 4}, + {"matrix": [8, 0], "x": 224, "y": 48, "flags": 4}, + {"matrix": [8, 1], "x": 208, "y": 48, "flags": 4}, + {"matrix": [8, 2], "x": 192, "y": 48, "flags": 4}, + {"matrix": [8, 3], "x": 176, "y": 48, "flags": 4}, + {"matrix": [8, 4], "x": 160, "y": 48, "flags": 4}, + {"matrix": [8, 5], "x": 144, "y": 48, "flags": 4}, + {"matrix": [8, 6], "x": 128, "y": 48, "flags": 4}, + {"matrix": [9, 6], "x": 128, "y": 64, "flags": 4}, + {"matrix": [9, 5], "x": 144, "y": 64, "flags": 4}, + {"matrix": [9, 4], "x": 160, "y": 64, "flags": 4}, + {"matrix": [9, 3], "x": 176, "y": 64, "flags": 4}, + {"matrix": [9, 2], "x": 192, "y": 64, "flags": 4}, + {"matrix": [9, 1], "x": 208, "y": 64, "flags": 4}, + {"matrix": [9, 0], "x": 224, "y": 64, "flags": 4} + ], + "max_brightness": 150, + "sleep": true, + "split_count": [32, 32] + }, + "split": { + "enabled": true, + "handedness": { + "matrix_grid": ["D7", "B2"] + }, + "serial": { + "pin": "D2" + } + }, + "url": "https://shop.yushakobo.jp/products/2143", + "usb": { + "device_version": "0.0.1", + "pid": "0x0003", + "vid": "0x3265" + }, + "ws2812": { + "pin": "D3" + }, + "layouts": { + "LAYOUT_4row": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [4, 5], "x": 9, "y": 0}, + {"matrix": [4, 4], "x": 10, "y": 0}, + {"matrix": [4, 3], "x": 11, "y": 0}, + {"matrix": [4, 2], "x": 12, "y": 0}, + {"matrix": [4, 1], "x": 13, "y": 0}, + {"matrix": [4, 0], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [5, 5], "x": 9, "y": 1}, + {"matrix": [5, 4], "x": 10, "y": 1}, + {"matrix": [5, 3], "x": 11, "y": 1}, + {"matrix": [5, 2], "x": 12, "y": 1}, + {"matrix": [5, 1], "x": 13, "y": 1}, + {"matrix": [5, 0], "x": 14, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [6, 5], "x": 9, "y": 2}, + {"matrix": [6, 4], "x": 10, "y": 2}, + {"matrix": [6, 3], "x": 11, "y": 2}, + {"matrix": [6, 2], "x": 12, "y": 2}, + {"matrix": [6, 1], "x": 13, "y": 2}, + {"matrix": [6, 0], "x": 14, "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}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [7, 6], "x": 8, "y": 3}, + {"matrix": [7, 5], "x": 9, "y": 3}, + {"matrix": [7, 4], "x": 10, "y": 3}, + {"matrix": [7, 3], "x": 11, "y": 3}, + {"matrix": [7, 2], "x": 12, "y": 3}, + {"matrix": [7, 1], "x": 13, "y": 3}, + {"matrix": [7, 0], "x": 14, "y": 3} + ] + }, + "LAYOUT_5row": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 5], "x": 9, "y": 0}, + {"matrix": [5, 4], "x": 10, "y": 0}, + {"matrix": [5, 3], "x": 11, "y": 0}, + {"matrix": [5, 2], "x": 12, "y": 0}, + {"matrix": [5, 1], "x": 13, "y": 0}, + {"matrix": [5, 0], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 5], "x": 9, "y": 1}, + {"matrix": [6, 4], "x": 10, "y": 1}, + {"matrix": [6, 3], "x": 11, "y": 1}, + {"matrix": [6, 2], "x": 12, "y": 1}, + {"matrix": [6, 1], "x": 13, "y": 1}, + {"matrix": [6, 0], "x": 14, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 5], "x": 9, "y": 2}, + {"matrix": [7, 4], "x": 10, "y": 2}, + {"matrix": [7, 3], "x": 11, "y": 2}, + {"matrix": [7, 2], "x": 12, "y": 2}, + {"matrix": [7, 1], "x": 13, "y": 2}, + {"matrix": [7, 0], "x": 14, "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}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [8, 6], "x": 8, "y": 3}, + {"matrix": [8, 5], "x": 9, "y": 3}, + {"matrix": [8, 4], "x": 10, "y": 3}, + {"matrix": [8, 3], "x": 11, "y": 3}, + {"matrix": [8, 2], "x": 12, "y": 3}, + {"matrix": [8, 1], "x": 13, "y": 3}, + {"matrix": [8, 0], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4}, + {"matrix": [4, 5], "x": 5, "y": 4}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [9, 6], "x": 8, "y": 4}, + {"matrix": [9, 5], "x": 9, "y": 4}, + {"matrix": [9, 4], "x": 10, "y": 4}, + {"matrix": [9, 3], "x": 11, "y": 4}, + {"matrix": [9, 2], "x": 12, "y": 4}, + {"matrix": [9, 1], "x": 13, "y": 4}, + {"matrix": [9, 0], "x": 14, "y": 4} + ] + } + } +} diff --git a/keyboards/helix/rev3/keymaps/default/keymap.json b/keyboards/helix/rev3/keymaps/default/keymap.json new file mode 100644 index 0000000000..429aecd714 --- /dev/null +++ b/keyboards/helix/rev3/keymaps/default/keymap.json @@ -0,0 +1,38 @@ +{ + "keyboard": "helix/rev3", + "keymap": "default", + "layout": "LAYOUT_5row", + "config": { + "features": { + "encoder_map": true + } + }, + "layers": [ + [ + "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_LBRC", "KC_RBRC", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ENT" , + "MO(3)", "KC_ESC", "KC_LALT", "KC_LGUI", "LALT(KC_GRV)", "MO(1)", "KC_SPC", "KC_SPC", "MO(2)", "LALT(KC_GRV)", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT" + ], + [ + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL", + "_______", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_BSLS", + "KC_CAPS", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "_______", "_______", "KC_F12", "_______", "_______", "KC_PGDN", "KC_PGUP", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY" + ], + [ + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", + "QK_BOOT", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "EE_CLR", "_______", "_______", "_______", "_______", "_______", "AG_NORM", "AG_SWAP", "_______", "_______", "RM_TOGG", "RM_HUEU", "RM_SATU", "RM_VALU", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "RM_NEXT", "RM_HUED", "RM_SATD", "RM_VALD" + ] + ], + "encoders": [ + [{"ccw": "KC_VOLD", "cw": "KC_VOLU"}, {"ccw": "KC_PGUP", "cw": "KC_PGDN"}], + [{"ccw": "_______", "cw": "_______"}, {"ccw": "_______", "cw": "_______"}], + [{"ccw": "_______", "cw": "_______"}, {"ccw": "_______", "cw": "_______"}] + ] +} diff --git a/keyboards/helix/rev3/rev3.c b/keyboards/helix/rev3/rev3.c new file mode 100644 index 0000000000..b9960a11bf --- /dev/null +++ b/keyboards/helix/rev3/rev3.c @@ -0,0 +1,77 @@ +// Copyright 2020 Yushakobo +// SPDX-License-Identifier: GPL-2.0-or-later +#include "quantum.h" + +#ifdef OLED_ENABLE +void render_status(void) { + static const char os_logo[][2][3] PROGMEM = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}}; + if (!keymap_config.swap_lalt_lgui) { + oled_write_P(os_logo[0][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[0][1], false); + } else { + oled_write_P(os_logo[1][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[1][1], false); + } + + oled_write_P(PSTR(" Layer: "), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_ln_P(PSTR("Default"), false); + break; + case 1: + oled_write_ln_P(PSTR("Lower"), false); + break; + case 2: + oled_write_ln_P(PSTR("Raise"), false); + break; + case 3: + oled_write_ln_P(PSTR("Adjust"), false); + break; + default: + oled_write_ln_P(PSTR("Undefined"), false); + } + oled_write_P(PSTR("\n"), false); + + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + // clang-format off + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + // clang-format on + }; + oled_write_P(qmk_logo, false); +} + +static void render_rgb_matrix_status(void) { + oled_write_P(PSTR(" LED"), false); + oled_write(get_u8_str(rgb_matrix_get_mode(), ' '), false); + oled_write_char(':', false); + oled_write(get_u8_str(rgb_matrix_get_hue() / RGB_MATRIX_HUE_STEP, ' '), false); + oled_write_char(',', false); + oled_write(get_u8_str(rgb_matrix_get_sat() / RGB_MATRIX_SAT_STEP, ' '), false); + oled_write_char(',', false); + oled_write(get_u8_str(rgb_matrix_get_val() / RGB_MATRIX_VAL_STEP, ' '), false); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (is_keyboard_master()) { + render_status(); + } else { + render_logo(); + render_rgb_matrix_status(); + } + return false; +} +#endif diff --git a/keyboards/helix/rev3_4rows/config.h b/keyboards/helix/rev3_4rows/config.h deleted file mode 100644 index 56d9a13feb..0000000000 --- a/keyboards/helix/rev3_4rows/config.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -Copyright 2020 yushakobo - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -/* key matrix size */ -#define MATRIX_ROWS 8 -#define MATRIX_COLS 7 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ -#define MATRIX_ROW_PINS { D4, C6, D7, E6 } -#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - -/* Split hand configration */ -#define SPLIT_HAND_MATRIX_GRID D7,B2 - -/* Custom font */ -#define OLED_FONT_H "keyboards/helix/common/glcdfont.c" - -/* - * 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/helix/rev3_4rows/keyboard.json b/keyboards/helix/rev3_4rows/keyboard.json deleted file mode 100644 index 3d44e8fe78..0000000000 --- a/keyboards/helix/rev3_4rows/keyboard.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "keyboard_name": "Helix rev3 4rows", - "manufacturer": "yushakobo", - "maintainer": "yushakobo", - "usb": { - "vid": "0x3265", - "pid": "0x0004", - "device_version": "0.0.1" - }, - "qmk": { - "locking": { - "enabled": true, - "resync": true - } - }, - "rgb_matrix": { - "driver": "ws2812", - "sat_steps": 8, - "val_steps": 8, - "speed_steps": 10, - "max_brightness": 150, - "split_count": [25, 25], - "sleep": true - }, - "dip_switch": { - "matrix_grid": [ [0,6], [1,6], [5,6], [6,6] ] - }, - "encoder": { - "rotary": [ - {"pin_a": "B6", "pin_b": "B5"} - ] - }, - "split": { - "enabled": true, - "serial": { - "pin": "D2" - } - }, - "ws2812": { - "pin": "D3" - }, - "rgblight": { - "led_count": 50, - "max_brightness": 120, - "split_count": [25, 25], - "animations": { - "rainbow_mood": true, - "rainbow_swirl": true, - "static_gradient": true, - "rgb_test": true - } - }, - "processor": "atmega32u4", - "bootloader": "caterina", - "layouts": { - "LAYOUT": { - "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0}, - {"matrix": [0, 1], "x": 1, "y": 0}, - {"matrix": [0, 2], "x": 2, "y": 0}, - {"matrix": [0, 3], "x": 3, "y": 0}, - {"matrix": [0, 4], "x": 4, "y": 0}, - {"matrix": [0, 5], "x": 5, "y": 0}, - - {"matrix": [4, 5], "x": 9, "y": 0}, - {"matrix": [4, 4], "x": 10, "y": 0}, - {"matrix": [4, 3], "x": 11, "y": 0}, - {"matrix": [4, 2], "x": 12, "y": 0}, - {"matrix": [4, 1], "x": 13, "y": 0}, - {"matrix": [4, 0], "x": 14, "y": 0}, - - {"matrix": [1, 0], "x": 0, "y": 1}, - {"matrix": [1, 1], "x": 1, "y": 1}, - {"matrix": [1, 2], "x": 2, "y": 1}, - {"matrix": [1, 3], "x": 3, "y": 1}, - {"matrix": [1, 4], "x": 4, "y": 1}, - {"matrix": [1, 5], "x": 5, "y": 1}, - - {"matrix": [5, 5], "x": 9, "y": 1}, - {"matrix": [5, 4], "x": 10, "y": 1}, - {"matrix": [5, 3], "x": 11, "y": 1}, - {"matrix": [5, 2], "x": 12, "y": 1}, - {"matrix": [5, 1], "x": 13, "y": 1}, - {"matrix": [5, 0], "x": 14, "y": 1}, - - {"matrix": [2, 0], "x": 0, "y": 2}, - {"matrix": [2, 1], "x": 1, "y": 2}, - {"matrix": [2, 2], "x": 2, "y": 2}, - {"matrix": [2, 3], "x": 3, "y": 2}, - {"matrix": [2, 4], "x": 4, "y": 2}, - {"matrix": [2, 5], "x": 5, "y": 2}, - - {"matrix": [6, 5], "x": 9, "y": 2}, - {"matrix": [6, 4], "x": 10, "y": 2}, - {"matrix": [6, 3], "x": 11, "y": 2}, - {"matrix": [6, 2], "x": 12, "y": 2}, - {"matrix": [6, 1], "x": 13, "y": 2}, - {"matrix": [6, 0], "x": 14, "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}, - {"matrix": [3, 4], "x": 4, "y": 3}, - {"matrix": [3, 5], "x": 5, "y": 3}, - {"matrix": [3, 6], "x": 6, "y": 3}, - - {"matrix": [7, 6], "x": 8, "y": 3}, - {"matrix": [7, 5], "x": 9, "y": 3}, - {"matrix": [7, 4], "x": 10, "y": 3}, - {"matrix": [7, 3], "x": 11, "y": 3}, - {"matrix": [7, 2], "x": 12, "y": 3}, - {"matrix": [7, 1], "x": 13, "y": 3}, - {"matrix": [7, 0], "x": 14, "y": 3} - ] - } - } -} diff --git a/keyboards/helix/rev3_4rows/keymaps/default/keymap.c b/keyboards/helix/rev3_4rows/keymaps/default/keymap.c deleted file mode 100644 index e528558ed6..0000000000 --- a/keyboards/helix/rev3_4rows/keymaps/default/keymap.c +++ /dev/null @@ -1,180 +0,0 @@ -/* Copyright 2020 yushakobo - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _QWERTY = 0, - _LOWER, - _RAISE, - _ADJUST -}; - -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - EISU = SAFE_RANGE, - KANA, - ADJUST, - RGBRST -}; - -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Qwerty - * ,-----------------------------------------. ,-----------------------------------------. - * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - * `-------------------------------------------------------------------------------------------------' - */ - [_QWERTY] = LAYOUT( - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , - ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - - /* Lower - * ,-----------------------------------------. ,-----------------------------------------. - * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | CAPS | F7 | F8 | F9 | F10 | F11 | | F12 | | | Home | End | | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * `-------------------------------------------------------------------------------------------------' - */ - [_LOWER] = LAYOUT( - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME, KC_END, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - ), - - /* Raise - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | CAPS | F7 | F8 | F9 | F10 | F11 | | F12 | | |PageDn|PageUp| | - * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| - * | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * `-------------------------------------------------------------------------------------------------' - */ - [_RAISE] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - ), - - /* Adjust (Lower + Raise) - * ,-----------------------------------------. ,-----------------------------------------. - * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | Reset|RGBRST|EEPRST| | | | | | | | | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | Mac | | Win | |RGB ON| HUE+ | SAT+ | VAL+ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | MODE | HUE- | SAT- | VAL- | - * `-------------------------------------------------------------------------------------------------' - */ - [_ADJUST] = LAYOUT( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - _______, QK_BOOT, RGBRST, EE_CLR, _______, _______, _______, _______, _______, _______, _______, KC_DEL, - _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD - ) - -}; - -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { /* Left side encoder */ - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } - } else if (index == 1) { /* Right side encoder */ - if (clockwise) { - tap_code(KC_DOWN); - } else { - tap_code(KC_UP); - } - } - return true; -} - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case EISU: - if (record->event.pressed) { - if (is_mac_mode()) { - register_code(KC_LNG2); - }else{ - tap_code16(LALT(KC_GRAVE)); - } - } else { - unregister_code(KC_LNG2); - } - return false; - break; - case KANA: - if (record->event.pressed) { - if (is_mac_mode()) { - register_code(KC_LNG1); - }else{ - tap_code16(LALT(KC_GRAVE)); - } - } else { - unregister_code(KC_LNG1); - } - return false; - break; - case ADJUST: - if (record->event.pressed) { - layer_on(_LOWER); - layer_on(_RAISE); - } else { - layer_off(_LOWER); - layer_off(_RAISE); - } - break; - case RGBRST: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - } - #endif - break; - } - return true; -} diff --git a/keyboards/helix/rev3_4rows/keymaps/default/oled_display.c b/keyboards/helix/rev3_4rows/keymaps/default/oled_display.c deleted file mode 100644 index 1158461e78..0000000000 --- a/keyboards/helix/rev3_4rows/keymaps/default/oled_display.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Copyright 2020 yushakobo - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -#include - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _QWERTY = 0, - _LOWER, - _RAISE, - _ADJUST -}; - -#ifdef OLED_ENABLE - -void render_status(void) { - - // Render to mode icon - static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; - if (is_mac_mode()) { - oled_write_P(os_logo[0][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[0][1], false); - }else{ - oled_write_P(os_logo[1][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[1][1], false); - } - - oled_write_P(PSTR(" "), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - - switch (get_highest_layer(layer_state)) { - case _QWERTY: - oled_write_P(PSTR("Default\n"), false); - break; - case _RAISE: - oled_write_P(PSTR("Raise\n"), false); - break; - case _LOWER: - oled_write_P(PSTR("Lower\n"), false); - break; - case _ADJUST: - oled_write_P(PSTR("Adjust\n"), false); - break; - default: - // Or use the write_ln shortcut over adding '\n' to the end of your string - oled_write_ln_P(PSTR("Undefined"), false); - } - - oled_write_P(PSTR("\n"), false); - - // Host Keyboard LED Status - led_t led_state = host_keyboard_led_state(); - oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); -} - - -static void render_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, - 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 - }; - - oled_write_P(qmk_logo, false); -} - -static void render_rgbled_status(bool full) { -#ifdef RGBLIGHT_ENABLE - if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { - if (full) { - // " LED %d:%d,%d,%d" - oled_write_P(PSTR(" LED"), false); - oled_write(get_u8_str(rgblight_get_mode(), ' '), false); - oled_write_char(':', false); - oled_write(get_u8_str(rgblight_get_hue() / RGBLIGHT_HUE_STEP, ' '), false); - oled_write_char(',', false); - oled_write(get_u8_str(rgblight_get_sat() / RGBLIGHT_SAT_STEP, ' '), false); - oled_write_char(',', false); - oled_write(get_u8_str(rgblight_get_val() / RGBLIGHT_VAL_STEP, ' '), false); - } else { - // "[%2d]" - oled_write_char('[', false); - oled_write(get_u8_str(rgblight_get_mode(), ' '), false); - oled_write_char(']', false); - } - } -#endif -} - -bool oled_task_user(void) { - if(is_keyboard_master()){ - render_status(); - }else{ - render_logo(); - render_rgbled_status(true); - } - return false; -} -#endif diff --git a/keyboards/helix/rev3_4rows/keymaps/default/readme.md b/keyboards/helix/rev3_4rows/keymaps/default/readme.md deleted file mode 100644 index e747096851..0000000000 --- a/keyboards/helix/rev3_4rows/keymaps/default/readme.md +++ /dev/null @@ -1,66 +0,0 @@ -# The default keymap for Helix rev3 4rows - -### Qwerty Layer (Base) -``` -,-----------------------------------------. ,-----------------------------------------. -| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| Shift| Z | X | C | V | B | | N | M | , | . | / |Enter | -|------+------+------+------+------+------+-------------+------+------+------+------+------+------| -|Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | -`-------------------------------------------------------------------------------------------------' -``` -### Lower Layer -``` -,-----------------------------------------. ,-----------------------------------------. -| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| CAPS | F7 | F8 | F9 | F10 | F11 | | F12 | | | Home | End | | -|------+------+------+------+------+------+-------------+------+------+------+------+------+------| -| | | | | | | | | | | Next | Vol- | Vol+ | Play | -`-------------------------------------------------------------------------------------------------' -``` -### Raise Layer -``` -,-----------------------------------------. ,-----------------------------------------. -| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| CAPS | F7 | F8 | F9 | F10 | F11 | | F12 | | |PageDn|PageUp| | -|------+------+------+------+------+------+-------------+------+------+------+------+------+------| -| | | | | | | | | | | Next | Vol- | Vol+ | Play | -`-------------------------------------------------------------------------------------------------' -``` -### Adjust Layer (Lower + Raise) -``` -,-----------------------------------------. ,-----------------------------------------. -| F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| | Reset|RGBRST|EEPRST| | | | | | | | | Del | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| | | | | | Mac | | Win | |RGB ON| HUE+ | SAT+ | VAL+ | -|------+------+------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | | | | MODE | HUE- | SAT- | VAL- | -`-------------------------------------------------------------------------------------------------' -``` - -### Rotary Encoder Settings - -|L/R|Clockwise|Counter Clockwise| -|---|---|---| -|Left|Page Down|Page Up| -|Right|Down|Up| - -### DipSW Settings - -|Switch No.|| -|---|---| -|Left 1|Toggle Win/mac| -|Left 2|Not assigned| -|Right 1|Not assigned| -|Right 2|Not assigned| diff --git a/keyboards/helix/rev3_4rows/oled_display.c b/keyboards/helix/rev3_4rows/oled_display.c deleted file mode 100644 index 36bf63cb60..0000000000 --- a/keyboards/helix/rev3_4rows/oled_display.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - - There are several ways to create your own keymap oled code: - - * Add the oled code to your keymaps//keymap.c. - * Create a new file in your keymaps// directory, add the oled code, and add `SRC + = ` to keymaps//rules.mk. - * Copy keymaps/default/oled_display.c to your keymaps// directory and modify it. - -*/ diff --git a/keyboards/helix/rev3_4rows/readme.md b/keyboards/helix/rev3_4rows/readme.md deleted file mode 100644 index 25e856badf..0000000000 --- a/keyboards/helix/rev3_4rows/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -# Helix rev3 4rows - -A compact split ortholinear keyboard. - -* Keyboard Maintainer: [yushakobo](https://github.com/yushakobo) -* Hardware Supported: Helix rev3 PCBs, Pro Micro -* Hardware Availability: (Under preparation) - -Make example for this keyboard (after setting up your build environment): - - make helix/rev3_4rows:default:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/helix/rev3_4rows/rev3_4rows.c b/keyboards/helix/rev3_4rows/rev3_4rows.c deleted file mode 100644 index 7f655b6852..0000000000 --- a/keyboards/helix/rev3_4rows/rev3_4rows.c +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright 2020 yushakobo - * - * This 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 "rev3_4rows.h" - -bool is_mac_mode(void) { - return keymap_config.swap_lalt_lgui == false; -} - -void set_mac_mode(bool macmode) { - /* The result is the same as pressing the AG_NORM(=MAGIC_UNSWAP_ALT_GUI)/AG_SWAP(=MAGIC_SWAP_ALT_GUI) keys. - * see - * https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L123-L124 - * https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L80-L81 - */ - keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = !macmode; - eeconfig_update_keymap(&keymap_config); -} - -#ifdef DIP_SWITCH_ENABLE -bool dip_switch_update_kb(uint8_t index, bool active) { - switch (index) { - case 0: - if(active) { // Left no.1 Helix rev3 common - set_mac_mode(false); - } else { - set_mac_mode(true); - } - break; - default: // Left no.2 or Right no.1 or Right no.2 for user/keymap - dip_switch_update_user(index, active); - break; - } - return true; -} -#endif - -#ifdef OLED_ENABLE -static char *sprint_decimal(char *buf, int data) { - if (data > 9) { - buf = sprint_decimal(buf, data/10); - } - *buf++ = "0123456789"[data%10]; - *buf = '\0'; - return buf; -} - -char *sprints(char *buf, char *src) { - while (*src) { - *buf++ = *src++; - } - *buf = '\0'; - return buf; -} - -char *sprintd(char *buf, char *leadstr, int data) { - buf = sprints(buf, leadstr); - buf = sprint_decimal(buf, data); - return buf; -} - -char *sprint2d(char *buf, char *leadstr, int data) { - buf = sprints(buf, leadstr); - if (data > 99) { - return sprint_decimal(buf, data); - } - if (data < 10) { - *buf++ = ' '; - } - return sprint_decimal(buf, data); -} - -bool oled_task_kb(void) { - if (!oled_task_user()) { return false; } - static const char PROGMEM helix_logo[] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, - 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, - 0x0 - }; - static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; - - if (is_keyboard_master()) { - if (is_mac_mode()) { - oled_write_P(os_logo[0][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[0][1], false); - }else{ - oled_write_P(os_logo[1][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[1][1], false); - } - char buf[20]; - sprint2d(buf, " Layer: ", get_highest_layer(layer_state)); - oled_write(buf, false); - } else { - oled_write_P(helix_logo, false); - } - return false; -} -#endif diff --git a/keyboards/helix/rev3_4rows/rev3_4rows.h b/keyboards/helix/rev3_4rows/rev3_4rows.h deleted file mode 100644 index f36a5f2840..0000000000 --- a/keyboards/helix/rev3_4rows/rev3_4rows.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2020 yushakobo - * - * This 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" - -bool is_mac_mode(void); -void set_mac_mode(bool macmode); diff --git a/keyboards/helix/rev3_4rows/rules.mk b/keyboards/helix/rev3_4rows/rules.mk deleted file mode 100644 index 01251cd780..0000000000 --- a/keyboards/helix/rev3_4rows/rules.mk +++ /dev/null @@ -1,9 +0,0 @@ -EXTRAKEY_ENABLE = yes # Audio control and System control -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -RGB_MATRIX_ENABLE = no -OLED_ENABLE = yes -ENCODER_ENABLE = yes -DIP_SWITCH_ENABLE = no -LTO_ENABLE = yes - -SRC += oled_display.c diff --git a/keyboards/helix/rev3_5rows/config.h b/keyboards/helix/rev3_5rows/config.h deleted file mode 100644 index 84173da2de..0000000000 --- a/keyboards/helix/rev3_5rows/config.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -Copyright 2020 yushakobo - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -/* key matrix size */ -#define MATRIX_ROWS 10 -#define MATRIX_COLS 7 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ -#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 } -#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - -/* Split hand configration */ -#define SPLIT_HAND_MATRIX_GRID D7,B2 - -/* Custom font */ -#define OLED_FONT_H "keyboards/helix/common/glcdfont.c" - -/* - * 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/helix/rev3_5rows/keyboard.json b/keyboards/helix/rev3_5rows/keyboard.json deleted file mode 100644 index 12328ea86d..0000000000 --- a/keyboards/helix/rev3_5rows/keyboard.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "keyboard_name": "Helix rev3 5rows", - "manufacturer": "yushakobo", - "maintainer": "yushakobo", - "usb": { - "vid": "0x3265", - "pid": "0x0003", - "device_version": "0.0.1" - }, - "qmk": { - "locking": { - "enabled": true, - "resync": true - } - }, - "rgb_matrix": { - "driver": "ws2812", - "sat_steps": 8, - "val_steps": 8, - "speed_steps": 10, - "layout": [ - {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4}, - {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4}, - {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4}, - {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4}, - {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4}, - {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, - {"matrix": [1, 0], "x": 0, "y": 16, "flags": 4}, - {"matrix": [1, 1], "x": 16, "y": 16, "flags": 4}, - {"matrix": [1, 2], "x": 32, "y": 16, "flags": 4}, - {"matrix": [1, 3], "x": 48, "y": 16, "flags": 4}, - {"matrix": [1, 4], "x": 64, "y": 16, "flags": 4}, - {"matrix": [1, 5], "x": 80, "y": 16, "flags": 4}, - {"matrix": [2, 5], "x": 80, "y": 32, "flags": 4}, - {"matrix": [2, 4], "x": 64, "y": 32, "flags": 4}, - {"matrix": [2, 3], "x": 48, "y": 32, "flags": 4}, - {"matrix": [2, 2], "x": 32, "y": 32, "flags": 4}, - {"matrix": [2, 1], "x": 16, "y": 32, "flags": 4}, - {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4}, - {"matrix": [3, 0], "x": 0, "y": 48, "flags": 4}, - {"matrix": [3, 1], "x": 16, "y": 48, "flags": 4}, - {"matrix": [3, 2], "x": 32, "y": 48, "flags": 4}, - {"matrix": [3, 3], "x": 48, "y": 48, "flags": 4}, - {"matrix": [3, 4], "x": 64, "y": 48, "flags": 4}, - {"matrix": [3, 5], "x": 80, "y": 48, "flags": 4}, - {"matrix": [3, 6], "x": 96, "y": 48, "flags": 4}, - {"matrix": [4, 6], "x": 96, "y": 64, "flags": 4}, - {"matrix": [4, 5], "x": 80, "y": 64, "flags": 4}, - {"matrix": [4, 4], "x": 64, "y": 64, "flags": 4}, - {"matrix": [4, 3], "x": 48, "y": 64, "flags": 4}, - {"matrix": [4, 2], "x": 32, "y": 64, "flags": 4}, - {"matrix": [4, 1], "x": 16, "y": 64, "flags": 4}, - {"matrix": [4, 0], "x": 0, "y": 64, "flags": 4}, - {"matrix": [5, 5], "x": 144, "y": 0, "flags": 4}, - {"matrix": [5, 4], "x": 160, "y": 0, "flags": 4}, - {"matrix": [5, 3], "x": 176, "y": 0, "flags": 4}, - {"matrix": [5, 2], "x": 192, "y": 0, "flags": 4}, - {"matrix": [5, 1], "x": 208, "y": 0, "flags": 4}, - {"matrix": [5, 0], "x": 224, "y": 0, "flags": 4}, - {"matrix": [6, 0], "x": 224, "y": 16, "flags": 4}, - {"matrix": [6, 1], "x": 208, "y": 16, "flags": 4}, - {"matrix": [6, 2], "x": 192, "y": 16, "flags": 4}, - {"matrix": [6, 3], "x": 176, "y": 16, "flags": 4}, - {"matrix": [6, 4], "x": 160, "y": 16, "flags": 4}, - {"matrix": [6, 5], "x": 144, "y": 16, "flags": 4}, - {"matrix": [7, 5], "x": 144, "y": 32, "flags": 4}, - {"matrix": [7, 4], "x": 160, "y": 32, "flags": 4}, - {"matrix": [7, 3], "x": 176, "y": 32, "flags": 4}, - {"matrix": [7, 2], "x": 192, "y": 32, "flags": 4}, - {"matrix": [7, 1], "x": 208, "y": 32, "flags": 4}, - {"matrix": [7, 0], "x": 224, "y": 32, "flags": 4}, - {"matrix": [8, 0], "x": 224, "y": 48, "flags": 4}, - {"matrix": [8, 1], "x": 208, "y": 48, "flags": 4}, - {"matrix": [8, 2], "x": 192, "y": 48, "flags": 4}, - {"matrix": [8, 3], "x": 176, "y": 48, "flags": 4}, - {"matrix": [8, 4], "x": 160, "y": 48, "flags": 4}, - {"matrix": [8, 5], "x": 144, "y": 48, "flags": 4}, - {"matrix": [8, 6], "x": 128, "y": 48, "flags": 4}, - {"matrix": [9, 6], "x": 128, "y": 64, "flags": 4}, - {"matrix": [9, 5], "x": 144, "y": 64, "flags": 4}, - {"matrix": [9, 4], "x": 160, "y": 64, "flags": 4}, - {"matrix": [9, 3], "x": 176, "y": 64, "flags": 4}, - {"matrix": [9, 2], "x": 192, "y": 64, "flags": 4}, - {"matrix": [9, 1], "x": 208, "y": 64, "flags": 4}, - {"matrix": [9, 0], "x": 224, "y": 64, "flags": 4} - ], - "max_brightness": 128, - "split_count": [32, 32], - "sleep": true - }, - "dip_switch": { - "matrix_grid": [ [0,6], [1,6], [5,6], [6,6] ] - }, - "encoder": { - "rotary": [ - {"pin_a": "B6", "pin_b": "B5"} - ] - }, - "split": { - "enabled": true, - "serial": { - "pin": "D2" - } - }, - "ws2812": { - "pin": "D3" - }, - "rgblight": { - "led_count": 64, - "max_brightness": 120, - "split_count": [32, 32], - "animations": { - "rainbow_mood": true, - "rainbow_swirl": true - } - }, - "processor": "atmega32u4", - "bootloader": "caterina", - "layouts": { - "LAYOUT": { - "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0}, - {"matrix": [0, 1], "x": 1, "y": 0}, - {"matrix": [0, 2], "x": 2, "y": 0}, - {"matrix": [0, 3], "x": 3, "y": 0}, - {"matrix": [0, 4], "x": 4, "y": 0}, - {"matrix": [0, 5], "x": 5, "y": 0}, - - {"matrix": [5, 5], "x": 9, "y": 0}, - {"matrix": [5, 4], "x": 10, "y": 0}, - {"matrix": [5, 3], "x": 11, "y": 0}, - {"matrix": [5, 2], "x": 12, "y": 0}, - {"matrix": [5, 1], "x": 13, "y": 0}, - {"matrix": [5, 0], "x": 14, "y": 0}, - - {"matrix": [1, 0], "x": 0, "y": 1}, - {"matrix": [1, 1], "x": 1, "y": 1}, - {"matrix": [1, 2], "x": 2, "y": 1}, - {"matrix": [1, 3], "x": 3, "y": 1}, - {"matrix": [1, 4], "x": 4, "y": 1}, - {"matrix": [1, 5], "x": 5, "y": 1}, - - {"matrix": [6, 5], "x": 9, "y": 1}, - {"matrix": [6, 4], "x": 10, "y": 1}, - {"matrix": [6, 3], "x": 11, "y": 1}, - {"matrix": [6, 2], "x": 12, "y": 1}, - {"matrix": [6, 1], "x": 13, "y": 1}, - {"matrix": [6, 0], "x": 14, "y": 1}, - - {"matrix": [2, 0], "x": 0, "y": 2}, - {"matrix": [2, 1], "x": 1, "y": 2}, - {"matrix": [2, 2], "x": 2, "y": 2}, - {"matrix": [2, 3], "x": 3, "y": 2}, - {"matrix": [2, 4], "x": 4, "y": 2}, - {"matrix": [2, 5], "x": 5, "y": 2}, - - {"matrix": [7, 5], "x": 9, "y": 2}, - {"matrix": [7, 4], "x": 10, "y": 2}, - {"matrix": [7, 3], "x": 11, "y": 2}, - {"matrix": [7, 2], "x": 12, "y": 2}, - {"matrix": [7, 1], "x": 13, "y": 2}, - {"matrix": [7, 0], "x": 14, "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}, - {"matrix": [3, 4], "x": 4, "y": 3}, - {"matrix": [3, 5], "x": 5, "y": 3}, - {"matrix": [3, 6], "x": 6, "y": 3}, - - {"matrix": [8, 6], "x": 8, "y": 3}, - {"matrix": [8, 5], "x": 9, "y": 3}, - {"matrix": [8, 4], "x": 10, "y": 3}, - {"matrix": [8, 3], "x": 11, "y": 3}, - {"matrix": [8, 2], "x": 12, "y": 3}, - {"matrix": [8, 1], "x": 13, "y": 3}, - {"matrix": [8, 0], "x": 14, "y": 3}, - - {"matrix": [4, 0], "x": 0, "y": 4}, - {"matrix": [4, 1], "x": 1, "y": 4}, - {"matrix": [4, 2], "x": 2, "y": 4}, - {"matrix": [4, 3], "x": 3, "y": 4}, - {"matrix": [4, 4], "x": 4, "y": 4}, - {"matrix": [4, 5], "x": 5, "y": 4}, - {"matrix": [4, 6], "x": 6, "y": 4}, - - {"matrix": [9, 6], "x": 8, "y": 4}, - {"matrix": [9, 5], "x": 9, "y": 4}, - {"matrix": [9, 4], "x": 10, "y": 4}, - {"matrix": [9, 3], "x": 11, "y": 4}, - {"matrix": [9, 2], "x": 12, "y": 4}, - {"matrix": [9, 1], "x": 13, "y": 4}, - {"matrix": [9, 0], "x": 14, "y": 4} - ] - } - } -} diff --git a/keyboards/helix/rev3_5rows/keymaps/default/keymap.c b/keyboards/helix/rev3_5rows/keymaps/default/keymap.c deleted file mode 100644 index 342ee77e99..0000000000 --- a/keyboards/helix/rev3_5rows/keymaps/default/keymap.c +++ /dev/null @@ -1,182 +0,0 @@ -/* Copyright 2020 yushakobo - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _QWERTY = 0, - _LOWER, - _RAISE, - _ADJUST -}; - -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - EISU = SAFE_RANGE, - KANA, - ADJUST, - RGBRST -}; - -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Qwerty - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | [ | ] | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | - * `-------------------------------------------------------------------------------------------------' - */ - [_QWERTY] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , - ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - /* Lower - * ,-----------------------------------------. ,-----------------------------------------. - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | CAPS | F7 | F8 | F9 | F10 | F11 | ( | ) | F12 | | | Home | End | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * `-------------------------------------------------------------------------------------------------' - */ - [_LOWER] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_LPRN, KC_RPRN, KC_F12, _______, _______, KC_HOME, KC_END, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - ), - - /* Raise - * ,-----------------------------------------. ,-----------------------------------------. - * | | | | | | | | | | | | | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | CAPS | F7 | F8 | F9 | F10 | F11 | | | F12 | | |PageDn|PageUp| | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * `-------------------------------------------------------------------------------------------------' - */ - [_RAISE] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSPC, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY - ), - - /* Adjust (Lower + Raise) - * ,-----------------------------------------. ,-----------------------------------------. - * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | Reset|RGBRST|EEPRST| | | | | | | | | Del | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | Mac | | Win | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | |RGB ON| HUE+ | SAT+ | VAL+ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | MODE | HUE- | SAT- | VAL- | - * `-------------------------------------------------------------------------------------------------' - */ - [_ADJUST] = LAYOUT( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - _______, QK_BOOT, RGBRST, EE_CLR, _______, _______, _______, _______, _______, _______, _______, KC_DEL, - _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD - ) - -}; - -#if defined(ENCODER_MAP_ENABLE) -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_QWERTY] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_LOWER] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_HOME, KC_END) }, - [_RAISE] = { ENCODER_CCW_CW(UG_VALD, UG_VALU), ENCODER_CCW_CW(UG_SPDD, UG_SPDU) }, - [_ADJUST] = { ENCODER_CCW_CW(UG_PREV, UG_NEXT), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) }, -}; -#endif - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case EISU: - if (record->event.pressed) { - if (is_mac_mode()) { - register_code(KC_LNG2); - }else{ - tap_code16(LALT(KC_GRAVE)); - } - } else { - unregister_code(KC_LNG2); - } - return false; - break; - case KANA: - if (record->event.pressed) { - if (is_mac_mode()) { - register_code(KC_LNG1); - }else{ - tap_code16(LALT(KC_GRAVE)); - } - } else { - unregister_code(KC_LNG1); - } - return false; - break; - case ADJUST: - if (record->event.pressed) { - layer_on(_LOWER); - layer_on(_RAISE); - } else { - layer_off(_LOWER); - layer_off(_RAISE); - } - break; - case RGBRST: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - } - #endif - break; - } - return true; -} diff --git a/keyboards/helix/rev3_5rows/keymaps/default/oled_display.c b/keyboards/helix/rev3_5rows/keymaps/default/oled_display.c deleted file mode 100644 index 1158461e78..0000000000 --- a/keyboards/helix/rev3_5rows/keymaps/default/oled_display.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Copyright 2020 yushakobo - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -#include - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _QWERTY = 0, - _LOWER, - _RAISE, - _ADJUST -}; - -#ifdef OLED_ENABLE - -void render_status(void) { - - // Render to mode icon - static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; - if (is_mac_mode()) { - oled_write_P(os_logo[0][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[0][1], false); - }else{ - oled_write_P(os_logo[1][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[1][1], false); - } - - oled_write_P(PSTR(" "), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - - switch (get_highest_layer(layer_state)) { - case _QWERTY: - oled_write_P(PSTR("Default\n"), false); - break; - case _RAISE: - oled_write_P(PSTR("Raise\n"), false); - break; - case _LOWER: - oled_write_P(PSTR("Lower\n"), false); - break; - case _ADJUST: - oled_write_P(PSTR("Adjust\n"), false); - break; - default: - // Or use the write_ln shortcut over adding '\n' to the end of your string - oled_write_ln_P(PSTR("Undefined"), false); - } - - oled_write_P(PSTR("\n"), false); - - // Host Keyboard LED Status - led_t led_state = host_keyboard_led_state(); - oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); -} - - -static void render_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, - 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 - }; - - oled_write_P(qmk_logo, false); -} - -static void render_rgbled_status(bool full) { -#ifdef RGBLIGHT_ENABLE - if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { - if (full) { - // " LED %d:%d,%d,%d" - oled_write_P(PSTR(" LED"), false); - oled_write(get_u8_str(rgblight_get_mode(), ' '), false); - oled_write_char(':', false); - oled_write(get_u8_str(rgblight_get_hue() / RGBLIGHT_HUE_STEP, ' '), false); - oled_write_char(',', false); - oled_write(get_u8_str(rgblight_get_sat() / RGBLIGHT_SAT_STEP, ' '), false); - oled_write_char(',', false); - oled_write(get_u8_str(rgblight_get_val() / RGBLIGHT_VAL_STEP, ' '), false); - } else { - // "[%2d]" - oled_write_char('[', false); - oled_write(get_u8_str(rgblight_get_mode(), ' '), false); - oled_write_char(']', false); - } - } -#endif -} - -bool oled_task_user(void) { - if(is_keyboard_master()){ - render_status(); - }else{ - render_logo(); - render_rgbled_status(true); - } - return false; -} -#endif diff --git a/keyboards/helix/rev3_5rows/keymaps/default/readme.md b/keyboards/helix/rev3_5rows/keymaps/default/readme.md deleted file mode 100644 index 423443ba71..0000000000 --- a/keyboards/helix/rev3_5rows/keymaps/default/readme.md +++ /dev/null @@ -1,81 +0,0 @@ -# The default keymap for Helix rev3 5rows - -### Qwerty Layer (Base) -``` -,-----------------------------------------. ,-----------------------------------------. -| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' | -|------+------+------+------+------+------+------+------+------+------+------+------+------+------| -| Shift| Z | X | C | V | B | [ | ] | N | M | , | . | / |Enter | -|------+------+------+------+------+------+------+------+------+------+------+------+------+------| -|Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right | -`-------------------------------------------------------------------------------------------------' - -``` - -### Lower Layer -``` -,-----------------------------------------. ,-----------------------------------------. -| | | | | | | | | | | | | | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | -|------+------+------+------+------+------+------+------+------+------+------+------+------+------| -| CAPS | F7 | F8 | F9 | F10 | F11 | ( | ) | F12 | | | Home | End | | -|------+------+------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | | | | Next | Vol- | Vol+ | Play | -`-------------------------------------------------------------------------------------------------' - -``` - - -### Raise Layer -``` -,-----------------------------------------. ,-----------------------------------------. -| | | | | | | | | | | | | Bksp | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ | -|------+------+------+------+------+------+------+------+------+------+------+------+------+------| -| CAPS | F7 | F8 | F9 | F10 | F11 | | | F12 | | |PageDn|PageUp| | -|------+------+------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | | | | Next | Vol- | Vol+ | Play | -`-------------------------------------------------------------------------------------------------' - -``` - -### Adjust Layer (Lower + Raise) -``` -,-----------------------------------------. ,-----------------------------------------. -| F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| | Reset|RGBRST|EEPRST| | | | | | | | | Del | -|------+------+------+------+------+------| |------+------+------+------+------+------| -| | | | | | Mac | | Win | | | | | | -|------+------+------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | | | |RGB ON| HUE+ | SAT+ | VAL+ | -|------+------+------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | | | | MODE | HUE- | SAT- | VAL- | -`-------------------------------------------------------------------------------------------------' -``` - -### Rotary Encoder Settings - -|L/R|Clockwise|Counter Clockwise| -|---|---|---| -|Left|Page Down|Page Up| -|Right|Down|Up| - -### DipSW Settings - -|Switch No.|| -|---|---| -|Left 1|Toggle Win/mac| -|Left 2|Not assigned| -|Right 1|Not assigned| -|Right 2|Not assigned| diff --git a/keyboards/helix/rev3_5rows/keymaps/default/rules.mk b/keyboards/helix/rev3_5rows/keymaps/default/rules.mk deleted file mode 100644 index ee32568148..0000000000 --- a/keyboards/helix/rev3_5rows/keymaps/default/rules.mk +++ /dev/null @@ -1 +0,0 @@ -ENCODER_MAP_ENABLE = yes diff --git a/keyboards/helix/rev3_5rows/oled_display.c b/keyboards/helix/rev3_5rows/oled_display.c deleted file mode 100644 index 36bf63cb60..0000000000 --- a/keyboards/helix/rev3_5rows/oled_display.c +++ /dev/null @@ -1,9 +0,0 @@ -/* - - There are several ways to create your own keymap oled code: - - * Add the oled code to your keymaps//keymap.c. - * Create a new file in your keymaps// directory, add the oled code, and add `SRC + = ` to keymaps//rules.mk. - * Copy keymaps/default/oled_display.c to your keymaps// directory and modify it. - -*/ diff --git a/keyboards/helix/rev3_5rows/readme.md b/keyboards/helix/rev3_5rows/readme.md deleted file mode 100644 index ff7e2cd59a..0000000000 --- a/keyboards/helix/rev3_5rows/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -# Helix rev3 5rows - -A compact split ortholinear keyboard. - -* Keyboard Maintainer: [yushakobo](https://github.com/yushakobo) -* Hardware Supported: Helix rev3 PCBs, Pro Micro -* Hardware Availability: (Under preparation) - -Make example for this keyboard (after setting up your build environment): - - make helix/rev3_5rows:default:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/helix/rev3_5rows/rev3_5rows.c b/keyboards/helix/rev3_5rows/rev3_5rows.c deleted file mode 100644 index af7276a2b5..0000000000 --- a/keyboards/helix/rev3_5rows/rev3_5rows.c +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright 2020 yushakobo - * - * This 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 "rev3_5rows.h" - -bool is_mac_mode(void) { - return keymap_config.swap_lalt_lgui == false; -} - -void set_mac_mode(bool macmode) { - /* The result is the same as pressing the AG_NORM(=MAGIC_UNSWAP_ALT_GUI)/AG_SWAP(=MAGIC_SWAP_ALT_GUI) keys. - * see - * https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L123-L124 - * https://github.com/qmk/qmk_firmware/blob/fb4a6ad30ea7a648acd59793ed4a30c3a8d8dc32/quantum/process_keycode/process_magic.c#L80-L81 - */ - keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = !macmode; - eeconfig_update_keymap(&keymap_config); -} - -#ifdef DIP_SWITCH_ENABLE -bool dip_switch_update_kb(uint8_t index, bool active) { - switch (index) { - case 0: - if(active) { // Left no.1 Helix rev3 common - set_mac_mode(false); - } else { - set_mac_mode(true); - } - break; - default: // Left no.2 or Right no.1 or Right no.2 for user/keymap - dip_switch_update_user(index, active); - break; - } - return true; -} -#endif - -#ifdef OLED_ENABLE -static char *sprint_decimal(char *buf, int data) { - if (data > 9) { - buf = sprint_decimal(buf, data/10); - } - *buf++ = "0123456789"[data%10]; - *buf = '\0'; - return buf; -} - -char *sprints(char *buf, char *src) { - while (*src) { - *buf++ = *src++; - } - *buf = '\0'; - return buf; -} - -char *sprintd(char *buf, char *leadstr, int data) { - buf = sprints(buf, leadstr); - buf = sprint_decimal(buf, data); - return buf; -} - -char *sprint2d(char *buf, char *leadstr, int data) { - buf = sprints(buf, leadstr); - if (data > 99) { - return sprint_decimal(buf, data); - } - if (data < 10) { - *buf++ = ' '; - } - return sprint_decimal(buf, data); -} - -bool oled_task_kb(void) { - if (!oled_task_user()) { return false; } - static const char PROGMEM helix_logo[] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, - 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, - 0x0 - }; - static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; - - if (is_keyboard_master()) { - if (is_mac_mode()) { - oled_write_P(os_logo[0][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[0][1], false); - }else{ - oled_write_P(os_logo[1][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[1][1], false); - } - char buf[20]; - sprint2d(buf, " Layer: ", get_highest_layer(layer_state)); - oled_write(buf, false); - } else { - oled_write_P(helix_logo, false); - } - return false; -} -#endif diff --git a/keyboards/helix/rev3_5rows/rev3_5rows.h b/keyboards/helix/rev3_5rows/rev3_5rows.h deleted file mode 100644 index f36a5f2840..0000000000 --- a/keyboards/helix/rev3_5rows/rev3_5rows.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2020 yushakobo - * - * This 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" - -bool is_mac_mode(void); -void set_mac_mode(bool macmode); diff --git a/keyboards/helix/rev3_5rows/rules.mk b/keyboards/helix/rev3_5rows/rules.mk deleted file mode 100644 index d1972faa1b..0000000000 --- a/keyboards/helix/rev3_5rows/rules.mk +++ /dev/null @@ -1,10 +0,0 @@ -EXTRAKEY_ENABLE = yes # Audio control and System control -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -RGB_MATRIX_ENABLE = no -OLED_ENABLE = yes -ENCODER_ENABLE = yes -DIP_SWITCH_ENABLE = no -MOUSEKEY_ENABLE = yes -LTO_ENABLE = yes - -SRC += oled_display.c From 74d64c7f43a9a1a0f6a0a26c981f1611ac0edaa3 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 23 Jul 2025 04:33:37 +0100 Subject: [PATCH 088/167] [docs] Align keyboard and keymap placeholders (#25509) --- docs/cli_commands.md | 14 +++++++------- docs/hardware_keyboard_guidelines.md | 10 +++++----- docs/newbs_building_firmware.md | 2 +- docs/newbs_flashing.md | 2 +- docs/reference_info_json.md | 2 +- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/cli_commands.md b/docs/cli_commands.md index c6a7ffe191..54bf5cc123 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -17,12 +17,12 @@ qmk compile [-c] **Usage for Keymaps**: ``` -qmk compile [-c] [-e =] [-j ] [--compiledb] -kb -km +qmk compile [-c] [-e =] [-j ] [--compiledb] -kb -km ``` **Usage in Keyboard Directory**: -Must be in keyboard directory with a default keymap, or in keymap directory for keyboard, or supply one with `--keymap ` +Must be in keyboard directory with a default keymap, or in keymap directory for keyboard, or supply one with `--keymap ` ``` qmk compile ``` @@ -30,7 +30,7 @@ qmk compile **Usage for building all keyboards that support a specific keymap**: ``` -qmk compile -kb all -km +qmk compile -kb all -km ``` **Example**: @@ -62,7 +62,7 @@ $ qmk compile Must be under `qmk_firmware/layouts/`, and in a keymap folder. ``` -qmk compile -kb +qmk compile -kb ``` **Example**: @@ -77,11 +77,11 @@ $ qmk compile -kb dz60 It is possible to speed up compilation by adding the `-j`/`--parallel` flag. ``` -qmk compile -j -kb +qmk compile -j -kb ``` The `num_jobs` argument determines the maximum number of jobs that can be used. Setting it to zero will enable parallel compilation without limiting the maximum number of jobs. ``` -qmk compile -j 0 -kb +qmk compile -j 0 -kb ``` **Compilation Database**: @@ -120,7 +120,7 @@ qmk flash [-bl ] [-c] [-e =] [-j ] -km [-bl ] [-c] [-e =] [-j ] +qmk flash -kb -km [-bl ] [-c] [-e =] [-j ] ``` **Usage for pre-compiled firmwares**: diff --git a/docs/hardware_keyboard_guidelines.md b/docs/hardware_keyboard_guidelines.md index 7e88ff231d..4df443f9fc 100644 --- a/docs/hardware_keyboard_guidelines.md +++ b/docs/hardware_keyboard_guidelines.md @@ -71,8 +71,8 @@ Your keyboard should be located in `qmk_firmware/keyboards/` and the folder name * `keyboard.json` (or `info.json`) * `config.h` * `rules.mk` -* `.c` -* `.h` +* `.c` +* `.h` ### `readme.md` @@ -203,7 +203,7 @@ The `post_rules.mk` file can interpret `features` of a keyboard-level before `co See `build_keyboard.mk` and `common_features.mk` for more details. ::: -### `` +### `` This file should contain C code required for the functionality of your keyboard, for example hardware initialisation code, OLED display code, and so on. This file should only contain code necessary for the keyboard to work, and *not* things that should be left to the end user to configure in their keymap. This file is automatically included in compilation if it exists. This is not a required file. @@ -214,9 +214,9 @@ The following functions are typically defined in this file: * `bool process_record_kb(uint16_t keycode, keyrecord_t *record)` * `bool led_update_kb(led_t led_state)` -### `` +### `` -This file can contain function prototypes for custom functions and other header file code utilised by `.c`. The `.c` file should include this file. This is not a required file. +This file can contain function prototypes for custom functions and other header file code utilised by `.c`. The `.c` file should include this file. This is not a required file. ## Image/Hardware Files diff --git a/docs/newbs_building_firmware.md b/docs/newbs_building_firmware.md index f5e529b9ce..82442b7adc 100644 --- a/docs/newbs_building_firmware.md +++ b/docs/newbs_building_firmware.md @@ -33,7 +33,7 @@ qmk new-keymap If you did not configure your environment, or you have multiple keyboards, you can specify a keyboard name: ```sh -qmk new-keymap -kb +qmk new-keymap -kb ``` Look at the output from that command, you should see something like this: diff --git a/docs/newbs_flashing.md b/docs/newbs_flashing.md index 5d5c1983e1..8131920686 100644 --- a/docs/newbs_flashing.md +++ b/docs/newbs_flashing.md @@ -60,7 +60,7 @@ open . The firmware file always follows this naming format: ``` -_.{bin,hex} +_.{bin,hex} ``` For example, the `planck/rev5` with a `default` keymap will have this filename: diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md index a64f2992b5..59daafe3f9 100644 --- a/docs/reference_info_json.md +++ b/docs/reference_info_json.md @@ -2,7 +2,7 @@ The information contained in `info.json` is combined with the `config.h` and `rules.mk` files, dynamically generating the necessary configuration for your keyboard at compile time. It is also used by the [QMK API](https://github.com/qmk/qmk_api), and contains the information [QMK Configurator](https://config.qmk.fm/) needs to display a representation of your keyboard. Its key/value pairs are ruled by the [`data/schemas/keyboard.jsonschema`](https://github.com/qmk/qmk_firmware/blob/master/data/schemas/keyboard.jsonschema) file. To learn more about the why and how of the schema file see the [Data Driven Configuration](data_driven_config) page. -You can create `info.json` files at every level under `qmk_firmware/keyboards/`. These files are combined, with more specific files overriding keys in less specific files. This means you do not need to duplicate your metadata information. For example, `qmk_firmware/keyboards/clueboard/info.json` specifies information common to all Clueboard products, such as `manufacturer` and `maintainer`, while `qmk_firmware/keyboards/clueboard/66/info.json` contains more specific information about Clueboard 66%. +You can create `info.json` files at every level under `qmk_firmware/keyboards/`. These files are combined, with more specific files overriding keys in less specific files. This means you do not need to duplicate your metadata information. For example, `qmk_firmware/keyboards/clueboard/info.json` specifies information common to all Clueboard products, such as `manufacturer` and `maintainer`, while `qmk_firmware/keyboards/clueboard/66/info.json` contains more specific information about Clueboard 66%. ## General Metadata {#general-metadata} From 36c3f4deba7e4c670736cc95db144b25156e90f1 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 23 Jul 2025 13:08:48 +0100 Subject: [PATCH 089/167] [docs] Align more keyboard placeholders (#25510) --- docs/drivers/aw20216s.md | 2 +- docs/drivers/is31fl3218.md | 2 +- docs/drivers/is31fl3236.md | 2 +- docs/drivers/is31fl3729.md | 2 +- docs/drivers/is31fl3731.md | 2 +- docs/drivers/is31fl3733.md | 2 +- docs/drivers/is31fl3736.md | 2 +- docs/drivers/is31fl3737.md | 2 +- docs/drivers/is31fl3741.md | 2 +- docs/drivers/is31fl3742a.md | 2 +- docs/drivers/is31fl3743a.md | 2 +- docs/drivers/is31fl3745.md | 2 +- docs/drivers/is31fl3746a.md | 2 +- docs/drivers/snled27351.md | 2 +- docs/getting_started_introduction.md | 4 ++-- docs/getting_started_make_guide.md | 4 ++-- docs/hardware_keyboard_guidelines.md | 4 ++-- 17 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/drivers/aw20216s.md b/docs/drivers/aw20216s.md index 042c8df129..a8c87dd0f9 100644 --- a/docs/drivers/aw20216s.md +++ b/docs/drivers/aw20216s.md @@ -44,7 +44,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = { diff --git a/docs/drivers/is31fl3218.md b/docs/drivers/is31fl3218.md index 1c98069120..ccc70c3340 100644 --- a/docs/drivers/is31fl3218.md +++ b/docs/drivers/is31fl3218.md @@ -37,7 +37,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT] = { diff --git a/docs/drivers/is31fl3236.md b/docs/drivers/is31fl3236.md index 98e05e4abd..83ce227203 100644 --- a/docs/drivers/is31fl3236.md +++ b/docs/drivers/is31fl3236.md @@ -50,7 +50,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const is31fl3236_led_t PROGMEM g_is31fl3236_leds[IS31FL3236_LED_COUNT] = { diff --git a/docs/drivers/is31fl3729.md b/docs/drivers/is31fl3729.md index 32618d82d5..1461874707 100644 --- a/docs/drivers/is31fl3729.md +++ b/docs/drivers/is31fl3729.md @@ -120,7 +120,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const is31fl3729_led_t PROGMEM g_is31fl3729_leds[IS31FL3729_LED_COUNT] = { diff --git a/docs/drivers/is31fl3731.md b/docs/drivers/is31fl3731.md index 0d928a919e..78b3d7b1ce 100644 --- a/docs/drivers/is31fl3731.md +++ b/docs/drivers/is31fl3731.md @@ -61,7 +61,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { diff --git a/docs/drivers/is31fl3733.md b/docs/drivers/is31fl3733.md index e299f785bd..13e9148a29 100644 --- a/docs/drivers/is31fl3733.md +++ b/docs/drivers/is31fl3733.md @@ -145,7 +145,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { diff --git a/docs/drivers/is31fl3736.md b/docs/drivers/is31fl3736.md index b679a232cd..e03275531c 100644 --- a/docs/drivers/is31fl3736.md +++ b/docs/drivers/is31fl3736.md @@ -129,7 +129,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = { diff --git a/docs/drivers/is31fl3737.md b/docs/drivers/is31fl3737.md index d23def237f..e4663aa019 100644 --- a/docs/drivers/is31fl3737.md +++ b/docs/drivers/is31fl3737.md @@ -117,7 +117,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = { diff --git a/docs/drivers/is31fl3741.md b/docs/drivers/is31fl3741.md index dce5c08b21..b26262da7c 100644 --- a/docs/drivers/is31fl3741.md +++ b/docs/drivers/is31fl3741.md @@ -117,7 +117,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = { diff --git a/docs/drivers/is31fl3742a.md b/docs/drivers/is31fl3742a.md index ebe648cba4..e4f15162f6 100644 --- a/docs/drivers/is31fl3742a.md +++ b/docs/drivers/is31fl3742a.md @@ -117,7 +117,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const is31fl3742a_led_t PROGMEM g_is31fl3742a_leds[IS31FL3742A_LED_COUNT] = { diff --git a/docs/drivers/is31fl3743a.md b/docs/drivers/is31fl3743a.md index 9ca55c5eeb..b031edd5fb 100644 --- a/docs/drivers/is31fl3743a.md +++ b/docs/drivers/is31fl3743a.md @@ -127,7 +127,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const is31fl3743a_led_t PROGMEM g_is31fl3743a_leds[IS31FL3743A_LED_COUNT] = { diff --git a/docs/drivers/is31fl3745.md b/docs/drivers/is31fl3745.md index f13f029bfe..fb53dd3690 100644 --- a/docs/drivers/is31fl3745.md +++ b/docs/drivers/is31fl3745.md @@ -127,7 +127,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const is31fl3745_led_t PROGMEM g_is31fl3745_leds[IS31FL3745_LED_COUNT] = { diff --git a/docs/drivers/is31fl3746a.md b/docs/drivers/is31fl3746a.md index bdd5c18357..19439a8a40 100644 --- a/docs/drivers/is31fl3746a.md +++ b/docs/drivers/is31fl3746a.md @@ -132,7 +132,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const is31fl3746a_led_t PROGMEM g_is31fl3746a_leds[IS31FL3746A_LED_COUNT] = { diff --git a/docs/drivers/snled27351.md b/docs/drivers/snled27351.md index 1d91182f7c..c0785711d9 100644 --- a/docs/drivers/snled27351.md +++ b/docs/drivers/snled27351.md @@ -52,7 +52,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config ## LED Mapping {#led-mapping} -In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: +In order to use this driver, each output must be mapped to an LED index, by adding the following to your `.c`: ```c const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = { diff --git a/docs/getting_started_introduction.md b/docs/getting_started_introduction.md index 9417351747..4a44e0e700 100644 --- a/docs/getting_started_introduction.md +++ b/docs/getting_started_introduction.md @@ -19,8 +19,8 @@ Within the folder `keyboards`, its subfolder `handwired` and its vendor and manu * `config.h`: The file that sets the default compile time options. Do not edit this file directly, instead use a keymap specific `config.h`. * `info.json`: The file used for setting layout for QMK Configurator. See [Configurator Support](reference_configurator_support) for more information. * `readme.md`: A brief overview of the keyboard. -* `.h`: This file is where the keyboard layout is defined against the keyboard's switch matrix. -* `.c`: This file is where you can find custom code for the keyboard. +* `.h`: This file is where the keyboard layout is defined against the keyboard's switch matrix. +* `.c`: This file is where you can find custom code for the keyboard. For more information on project structure, see [QMK Keyboard Guidelines](hardware_keyboard_guidelines). diff --git a/docs/getting_started_make_guide.md b/docs/getting_started_make_guide.md index 59455adb30..54f915e444 100644 --- a/docs/getting_started_make_guide.md +++ b/docs/getting_started_make_guide.md @@ -1,8 +1,8 @@ # More Detailed `make` Instructions -The full syntax of the `make` command is `::`, where: +The full syntax of the `make` command is `::`, where: -* `` is the path of the keyboard, for example `planck` +* `` is the path of the keyboard, for example `planck` * Use `all` to compile all keyboards * Specify the path to compile a revision, for example `planck/rev4` or `planck/rev3` * If the keyboard doesn't have any folders, it can be left out diff --git a/docs/hardware_keyboard_guidelines.md b/docs/hardware_keyboard_guidelines.md index 4df443f9fc..0b8f35a373 100644 --- a/docs/hardware_keyboard_guidelines.md +++ b/docs/hardware_keyboard_guidelines.md @@ -203,7 +203,7 @@ The `post_rules.mk` file can interpret `features` of a keyboard-level before `co See `build_keyboard.mk` and `common_features.mk` for more details. ::: -### `` +### `.c` This file should contain C code required for the functionality of your keyboard, for example hardware initialisation code, OLED display code, and so on. This file should only contain code necessary for the keyboard to work, and *not* things that should be left to the end user to configure in their keymap. This file is automatically included in compilation if it exists. This is not a required file. @@ -214,7 +214,7 @@ The following functions are typically defined in this file: * `bool process_record_kb(uint16_t keycode, keyrecord_t *record)` * `bool led_update_kb(led_t led_state)` -### `` +### `.h` This file can contain function prototypes for custom functions and other header file code utilised by `.c`. The `.c` file should include this file. This is not a required file. From 542440eac5f6d0788fcc496fc1ef2b7e4301a175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=95=E3=82=A3=E3=83=AB=E3=82=BF=E3=83=BC=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=83=91=E3=83=BC?= <76888457+filterpaper@users.noreply.github.com> Date: Fri, 25 Jul 2025 08:04:12 +0800 Subject: [PATCH 090/167] Add MATRIX_ROWS_PER_HAND definition (#25513) --- quantum/matrix.c | 38 +++++++++++++++++--------------------- quantum/matrix.h | 6 ++++++ quantum/matrix_common.c | 18 +++++++----------- 3 files changed, 30 insertions(+), 32 deletions(-) diff --git a/quantum/matrix.c b/quantum/matrix.c index a877fb4e41..167a70e5b6 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -25,10 +25,6 @@ along with this program. If not, see . #ifdef SPLIT_KEYBOARD # include "split_common/split_util.h" # include "split_common/transactions.h" - -# define ROWS_PER_HAND (MATRIX_ROWS / 2) -#else -# define ROWS_PER_HAND (MATRIX_ROWS) #endif #ifdef DIRECT_PINS_RIGHT @@ -52,13 +48,13 @@ along with this program. If not, see . #endif #ifdef DIRECT_PINS -static SPLIT_MUTABLE pin_t direct_pins[ROWS_PER_HAND][MATRIX_COLS] = DIRECT_PINS; +static SPLIT_MUTABLE pin_t direct_pins[MATRIX_ROWS_PER_HAND][MATRIX_COLS] = DIRECT_PINS; #elif (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW) # ifdef MATRIX_ROW_PINS -static SPLIT_MUTABLE_ROW pin_t row_pins[ROWS_PER_HAND] = MATRIX_ROW_PINS; +static SPLIT_MUTABLE_ROW pin_t row_pins[MATRIX_ROWS_PER_HAND] = MATRIX_ROW_PINS; # endif // MATRIX_ROW_PINS # ifdef MATRIX_COL_PINS -static SPLIT_MUTABLE_COL pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; +static SPLIT_MUTABLE_COL pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; # endif // MATRIX_COL_PINS #endif @@ -109,7 +105,7 @@ static inline uint8_t readMatrixPin(pin_t pin) { #ifdef DIRECT_PINS __attribute__((weak)) void matrix_init_pins(void) { - for (int row = 0; row < ROWS_PER_HAND; row++) { + for (int row = 0; row < MATRIX_ROWS_PER_HAND; row++) { for (int col = 0; col < MATRIX_COLS; col++) { pin_t pin = direct_pins[row][col]; if (pin != NO_PIN) { @@ -158,7 +154,7 @@ static void unselect_row(uint8_t row) { } static void unselect_rows(void) { - for (uint8_t x = 0; x < ROWS_PER_HAND; x++) { + for (uint8_t x = 0; x < MATRIX_ROWS_PER_HAND; x++) { unselect_row(x); } } @@ -228,7 +224,7 @@ static void unselect_cols(void) { __attribute__((weak)) void matrix_init_pins(void) { unselect_cols(); - for (uint8_t x = 0; x < ROWS_PER_HAND; x++) { + for (uint8_t x = 0; x < MATRIX_ROWS_PER_HAND; x++) { if (row_pins[x] != NO_PIN) { gpio_atomic_set_pin_input_high(row_pins[x]); } @@ -245,7 +241,7 @@ __attribute__((weak)) void matrix_read_rows_on_col(matrix_row_t current_matrix[] matrix_output_select_delay(); // For each row... - for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) { + for (uint8_t row_index = 0; row_index < MATRIX_ROWS_PER_HAND; row_index++) { // Check row pin state if (readMatrixPin(row_pins[row_index]) == 0) { // Pin LO, set col bit @@ -275,16 +271,16 @@ void matrix_init(void) { // Set pinout for right half if pinout for that half is defined if (!isLeftHand) { # ifdef DIRECT_PINS_RIGHT - const pin_t direct_pins_right[ROWS_PER_HAND][MATRIX_COLS] = DIRECT_PINS_RIGHT; - for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { + const pin_t direct_pins_right[MATRIX_ROWS_PER_HAND][MATRIX_COLS] = DIRECT_PINS_RIGHT; + for (uint8_t i = 0; i < MATRIX_ROWS_PER_HAND; i++) { for (uint8_t j = 0; j < MATRIX_COLS; j++) { direct_pins[i][j] = direct_pins_right[i][j]; } } # endif # ifdef MATRIX_ROW_PINS_RIGHT - const pin_t row_pins_right[ROWS_PER_HAND] = MATRIX_ROW_PINS_RIGHT; - for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { + const pin_t row_pins_right[MATRIX_ROWS_PER_HAND] = MATRIX_ROW_PINS_RIGHT; + for (uint8_t i = 0; i < MATRIX_ROWS_PER_HAND; i++) { row_pins[i] = row_pins_right[i]; } # endif @@ -296,8 +292,8 @@ void matrix_init(void) { # endif } - thisHand = isLeftHand ? 0 : (ROWS_PER_HAND); - thatHand = ROWS_PER_HAND - thisHand; + thisHand = isLeftHand ? 0 : (MATRIX_ROWS_PER_HAND); + thatHand = MATRIX_ROWS_PER_HAND - thisHand; #endif // initialize key pins @@ -307,7 +303,7 @@ void matrix_init(void) { memset(matrix, 0, sizeof(matrix)); memset(raw_matrix, 0, sizeof(raw_matrix)); - debounce_init(ROWS_PER_HAND); + debounce_init(MATRIX_ROWS_PER_HAND); matrix_init_kb(); } @@ -325,7 +321,7 @@ uint8_t matrix_scan(void) { #if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW) // Set row, read cols - for (uint8_t current_row = 0; current_row < ROWS_PER_HAND; current_row++) { + for (uint8_t current_row = 0; current_row < MATRIX_ROWS_PER_HAND; current_row++) { matrix_read_cols_on_row(curr_matrix, current_row); } #elif (DIODE_DIRECTION == ROW2COL) @@ -340,9 +336,9 @@ uint8_t matrix_scan(void) { if (changed) memcpy(raw_matrix, curr_matrix, sizeof(curr_matrix)); #ifdef SPLIT_KEYBOARD - changed = debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, changed) | matrix_post_scan(); + changed = debounce(raw_matrix, matrix + thisHand, MATRIX_ROWS_PER_HAND, changed) | matrix_post_scan(); #else - changed = debounce(raw_matrix, matrix, ROWS_PER_HAND, changed); + changed = debounce(raw_matrix, matrix, MATRIX_ROWS_PER_HAND, changed); matrix_scan_kb(); #endif return (uint8_t)changed; diff --git a/quantum/matrix.h b/quantum/matrix.h index a5b628fc59..99f01aece2 100644 --- a/quantum/matrix.h +++ b/quantum/matrix.h @@ -35,6 +35,12 @@ typedef uint32_t matrix_row_t; # error "MATRIX_COLS: invalid value" #endif +#ifdef SPLIT_KEYBOARD +# define MATRIX_ROWS_PER_HAND (MATRIX_ROWS / 2) +#else +# define MATRIX_ROWS_PER_HAND (MATRIX_ROWS) +#endif + #define MATRIX_ROW_SHIFTER ((matrix_row_t)1) #ifdef __cplusplus diff --git a/quantum/matrix_common.c b/quantum/matrix_common.c index d02c527caa..b4a86fc483 100644 --- a/quantum/matrix_common.c +++ b/quantum/matrix_common.c @@ -8,10 +8,6 @@ # include "split_common/split_util.h" # include "split_common/transactions.h" # include - -# define ROWS_PER_HAND (MATRIX_ROWS / 2) -#else -# define ROWS_PER_HAND (MATRIX_ROWS) #endif #ifndef MATRIX_IO_DELAY @@ -95,8 +91,8 @@ void matrix_print(void) { bool matrix_post_scan(void) { bool changed = false; if (is_keyboard_master()) { - static bool last_connected = false; - matrix_row_t slave_matrix[ROWS_PER_HAND] = {0}; + static bool last_connected = false; + matrix_row_t slave_matrix[MATRIX_ROWS_PER_HAND] = {0}; if (transport_master_if_connected(matrix + thisHand, slave_matrix)) { changed = memcmp(matrix + thatHand, slave_matrix, sizeof(slave_matrix)) != 0; @@ -148,8 +144,8 @@ __attribute__((weak)) void matrix_slave_scan_user(void) {} __attribute__((weak)) void matrix_init(void) { #ifdef SPLIT_KEYBOARD - thisHand = isLeftHand ? 0 : (ROWS_PER_HAND); - thatHand = ROWS_PER_HAND - thisHand; + thisHand = isLeftHand ? 0 : (MATRIX_ROWS_PER_HAND); + thatHand = MATRIX_ROWS_PER_HAND - thisHand; #endif matrix_init_custom(); @@ -160,7 +156,7 @@ __attribute__((weak)) void matrix_init(void) { matrix[i] = 0; } - debounce_init(ROWS_PER_HAND); + debounce_init(MATRIX_ROWS_PER_HAND); matrix_init_kb(); } @@ -169,9 +165,9 @@ __attribute__((weak)) uint8_t matrix_scan(void) { bool changed = matrix_scan_custom(raw_matrix); #ifdef SPLIT_KEYBOARD - changed = debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, changed) | matrix_post_scan(); + changed = debounce(raw_matrix, matrix + thisHand, MATRIX_ROWS_PER_HAND, changed) | matrix_post_scan(); #else - changed = debounce(raw_matrix, matrix, ROWS_PER_HAND, changed); + changed = debounce(raw_matrix, matrix, MATRIX_ROWS_PER_HAND, changed); matrix_scan_kb(); #endif From 7a939ec218056346930096a6e1836fd6bcf64027 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 28 Jul 2025 20:40:11 +0100 Subject: [PATCH 091/167] Remove some encoder resolution that duplicate defaults (#25517) --- keyboards/gkeyboard/gpad8_2r/keyboard.json | 4 ++-- keyboards/handwired/maverick0197/keydeck8/keyboard.json | 2 +- keyboards/inland/kb83/keyboard.json | 2 +- keyboards/keychron/q1v2/ansi_encoder/keyboard.json | 2 +- keyboards/keychron/q1v2/iso_encoder/keyboard.json | 2 +- keyboards/keychron/q1v2/jis_encoder/keyboard.json | 2 +- keyboards/mechwild/sugarglider/info.json | 8 ++++---- keyboards/pica40/rev2/keyboard.json | 2 +- keyboards/stront/keyboard.json | 6 +----- 9 files changed, 13 insertions(+), 17 deletions(-) diff --git a/keyboards/gkeyboard/gpad8_2r/keyboard.json b/keyboards/gkeyboard/gpad8_2r/keyboard.json index 95645a53fc..6e3f510921 100644 --- a/keyboards/gkeyboard/gpad8_2r/keyboard.json +++ b/keyboards/gkeyboard/gpad8_2r/keyboard.json @@ -35,8 +35,8 @@ "encoder": { "enabled": true, "rotary": [ - {"pin_a": "GP29", "pin_b": "GP28", "resolution": 4}, - {"pin_a": "GP2", "pin_b": "GP3", "resolution": 4} + {"pin_a": "GP29", "pin_b": "GP28"}, + {"pin_a": "GP2", "pin_b": "GP3"} ] }, "rgb_matrix": { diff --git a/keyboards/handwired/maverick0197/keydeck8/keyboard.json b/keyboards/handwired/maverick0197/keydeck8/keyboard.json index 057552e621..0f11bb194b 100644 --- a/keyboards/handwired/maverick0197/keydeck8/keyboard.json +++ b/keyboards/handwired/maverick0197/keydeck8/keyboard.json @@ -11,7 +11,7 @@ }, "encoder": { "rotary": [ - {"pin_a": "D3", "pin_b": "D2", "resolution": 4} + {"pin_a": "D3", "pin_b": "D2"} ] }, "matrix_pins": { diff --git a/keyboards/inland/kb83/keyboard.json b/keyboards/inland/kb83/keyboard.json index cd454cb93d..9e88019bd4 100644 --- a/keyboards/inland/kb83/keyboard.json +++ b/keyboards/inland/kb83/keyboard.json @@ -64,7 +64,7 @@ }, "encoder": { "rotary": [ - {"pin_a": "B13", "pin_b": "B14", "resolution": 4} + {"pin_a": "B13", "pin_b": "B14"} ] }, "qmk": { diff --git a/keyboards/keychron/q1v2/ansi_encoder/keyboard.json b/keyboards/keychron/q1v2/ansi_encoder/keyboard.json index 616c444891..a22a5f6de8 100644 --- a/keyboards/keychron/q1v2/ansi_encoder/keyboard.json +++ b/keyboards/keychron/q1v2/ansi_encoder/keyboard.json @@ -9,7 +9,7 @@ "encoder": { "enabled": true, "rotary": [ - {"pin_a": "A10", "pin_b": "A8", "resolution": 4} + {"pin_a": "A10", "pin_b": "A8"} ] }, "layouts": { diff --git a/keyboards/keychron/q1v2/iso_encoder/keyboard.json b/keyboards/keychron/q1v2/iso_encoder/keyboard.json index 38e34176b8..98f860ddd4 100644 --- a/keyboards/keychron/q1v2/iso_encoder/keyboard.json +++ b/keyboards/keychron/q1v2/iso_encoder/keyboard.json @@ -9,7 +9,7 @@ "encoder": { "enabled": true, "rotary": [ - {"pin_a": "A10", "pin_b": "A8", "resolution": 4} + {"pin_a": "A10", "pin_b": "A8"} ] }, "layouts": { diff --git a/keyboards/keychron/q1v2/jis_encoder/keyboard.json b/keyboards/keychron/q1v2/jis_encoder/keyboard.json index 544958f24f..464f952e0d 100644 --- a/keyboards/keychron/q1v2/jis_encoder/keyboard.json +++ b/keyboards/keychron/q1v2/jis_encoder/keyboard.json @@ -9,7 +9,7 @@ "encoder": { "enabled": true, "rotary": [ - {"pin_a": "A10", "pin_b": "A8", "resolution": 4} + {"pin_a": "A10", "pin_b": "A8"} ] }, "layouts": { diff --git a/keyboards/mechwild/sugarglider/info.json b/keyboards/mechwild/sugarglider/info.json index 514c90b6ce..0df558b0b2 100644 --- a/keyboards/mechwild/sugarglider/info.json +++ b/keyboards/mechwild/sugarglider/info.json @@ -51,10 +51,10 @@ }, "encoder": { "rotary": [ - {"pin_a": "B0", "pin_b": "A2", "resolution": 4}, - {"pin_a": "B3", "pin_b": "A15", "resolution": 4}, - {"pin_a": "B9", "pin_b": "B8", "resolution": 4}, - {"pin_a": "C15", "pin_b": "C14", "resolution": 4} + {"pin_a": "B0", "pin_b": "A2"}, + {"pin_a": "B3", "pin_b": "A15"}, + {"pin_a": "B9", "pin_b": "B8"}, + {"pin_a": "C15", "pin_b": "C14"} ] }, "layouts": { diff --git a/keyboards/pica40/rev2/keyboard.json b/keyboards/pica40/rev2/keyboard.json index 7fd2094706..3c753af26a 100644 --- a/keyboards/pica40/rev2/keyboard.json +++ b/keyboards/pica40/rev2/keyboard.json @@ -46,7 +46,7 @@ }, "encoder": { "rotary": [ - {"pin_a": "GP7", "pin_b": "GP7", "resolution": 4} + {"pin_a": "GP7", "pin_b": "GP7"} ] }, "usb": { diff --git a/keyboards/stront/keyboard.json b/keyboards/stront/keyboard.json index 250d5b56e1..6e83ffa50d 100644 --- a/keyboards/stront/keyboard.json +++ b/keyboards/stront/keyboard.json @@ -75,11 +75,7 @@ }, "encoder": { "rotary": [ - { - "pin_a": "GP7", - "pin_b": "GP8", - "resolution": 4 - } + {"pin_a": "GP7", "pin_b": "GP8"} ] }, "features": { From d575bf7ddcb66849a449aa5f714eb926644862ec Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Fri, 1 Aug 2025 23:26:30 +1000 Subject: [PATCH 092/167] Add proprietary libraries policy page. (#25532) --- docs/_sidebar.json | 10 ++- docs/proprietary_libs.md | 171 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 179 insertions(+), 2 deletions(-) create mode 100644 docs/proprietary_libs.md diff --git a/docs/_sidebar.json b/docs/_sidebar.json index 37f2dc580c..ee4709a650 100644 --- a/docs/_sidebar.json +++ b/docs/_sidebar.json @@ -21,8 +21,14 @@ { "text": "Debugging QMK", "link": "/faq_debug" }, { "text": "Keymap FAQ", "link": "/faq_keymap" }, { "text": "Squeezing Space from AVR", "link": "/squeezing_avr" }, - { "text": "Glossary", "link": "/reference_glossary" }, - { "text": "License Violations", "link": "/license_violations" } + { "text": "Glossary", "link": "/reference_glossary" } + ] + }, + { + "text": "Licensing", + "items": [ + { "text": "License Violations", "link": "/license_violations" }, + { "text": "Proprietary Libraries", "link": "/proprietary_libs" } ] }, { diff --git a/docs/proprietary_libs.md b/docs/proprietary_libs.md new file mode 100644 index 0000000000..9a4d305638 --- /dev/null +++ b/docs/proprietary_libs.md @@ -0,0 +1,171 @@ +# Proprietary Vendor Libraries + +QMK Firmware cannot include support for any proprietary vendor libraries that impose additional restrictions beyond those in the GPL. This includes binary-only distributions, hardware-locked libraries, and code with redistribution limitations. This document explains why such libraries are incompatible with the GPL-based QMK Firmware and addresses commonly proposed workarounds. + +## Architecture Constraints + +Firmware presents unique licensing challenges: + +- **Monolithic binary**: All code compiles into a single executable image +- **No OS isolation**: No operating system provides process or memory separation +- **Shared resources**: All code shares the same memory space, peripherals, and execution context +- **Static linking**: Everything is statically linked at compile time + +This monolithic nature means any proprietary code becomes inseparable from GPL code, creating immediate license violations. + +## Common Vendor Library Restrictions + +Proprietary vendor libraries typically impose restrictions incompatible with GPL freedoms: + +**Hardware Lock-in:** +- Library only licensed for specific vendor's chips +- Cannot port firmware to alternative hardware +- Examples: Nordic's and ST's chip-only clauses in their respective licenses + +**No Source Distribution:** +- Binary-only libraries without corresponding source +- Precompiled static libraries (.a/.lib files) +- No ability to modify or fix bugs +- Examples: WCH CH582 precompiled libraries, Nordic SoftDevice + +**Redistribution Limitations:** +- Restrictions on who can distribute +- Limitations on commercial use +- Required permissions or fees + +**Additional Legal Terms:** +- Patent assertions beyond GPL's scope +- Indemnification requirements +- Jurisdiction restrictions +- Explicit anti-GPL clauses + +## Bluetooth Stack Licensing Examples + +Both Nordic and ST provide Bluetooth stacks under restrictive licenses: + +**Nordic SoftDevice (under Nordic 5-clause license):** +- Binary-only Bluetooth/radio stack +- License restricts to Nordic hardware +- No source code available +- Communicates via SVC interface (still not GPL-compatible) + +**ST's Bluetooth Stack (under SLA0044 license):** +- Explicitly forbids being subject to "Open Source Terms", specifically mentioning incompatibility with the GPL +- Restricted to ST microcontrollers only +- Similar functional role to Nordic's SoftDevice + +Both represent the same fundamental problem: critical wireless functionality locked behind proprietary licenses. + +## Why the System Library Exception Doesn't Apply + +The GPL's System Library exception **cannot** rescue proprietary vendor libraries. + +### System Library Requirements + +The exception only covers libraries that: +1. Are part of the "normal form of packaging a Major Component" +2. The Major Component is an OS kernel, compiler, or similar system software +3. Are not distributed with the application +4. Are not part of the application itself + +### Why Vendor Libraries Fail These Requirements + +1. **No operating system**: Bare-metal firmware has no OS to provide system libraries +2. **Not Major Components**: Hardware drivers and HALs aren't kernels or compilers +3. **Distributed together**: Vendor code becomes part of the firmware binary +4. **Application-level code**: Peripheral drivers are application functionality + +The exception covers things like Windows system DLLs or Linux glibc, not microcontroller vendor libraries or Bluetooth stacks. + +## Attempted Workarounds + +### Architectural Separation Attempts + +**Supervisor Call (SVC) Interfaces:** + +Nordic's SoftDevice uses supervisor call based APIs instead of direct linking: +- Fixed memory regions for proprietary code +- Communication through CPU exception mechanisms +- Claims of "no linking" between components + +**Why this fails:** The GPL considers functional integration, not just linking methods. In Bluetooth-capable boards, these would require the proprietary component to function, thus they form a single work regardless of the communication mechanism. This applies equally to Nordic's SoftDevice and any similar architecture ST provides. + +**Binary-Only Distributions:** + +Multiple vendors provide precompiled libraries: +- WCH: Precompiled BLE stack +- Nordic: Binary-only SoftDevice library +- ST: Same solution as Nordic + +**Why this fails:** This is classic static linking of proprietary code into GPL code. The inability to modify these libraries violates GPL's fundamental requirements. + +### Loader-Based Separation + +- Write a GPL bootloader/loader +- Load proprietary firmware (such as Nordic/ST Bluetooth) from external storage +- Claim they're separate works + +**Problems:** +- If designed as a system, courts view as single work +- Distribution patterns matter (shipped together?) +- Functional interdependence suggests unity +- Appears designed to circumvent GPL + +## Real-World Examples + +### Bluetooth/Wireless Stacks +- **Nordic SoftDevice**: Binary-only, SVC-interface, hardware-locked +- **ST Bluetooth**: Binary-only, license explicitly GPL-incompatible +- **WCH CH582**: Precompiled Bluetooth libraries + +### HAL and Driver Libraries +- **ST HAL/LL drivers**: Source available but SLA0044 restricted +- **Nordic SDK**: Source visible but 5-Clause restricted +- **Various vendor HALs**: Platform-locked licenses + +### Mixed Proprietary/Open +- Open peripheral drivers with closed protocol stacks +- Basic HAL with proprietary performance libraries +- Partially documented systems requiring binary supplements + +## Legal and Practical Consequences + +Including any proprietary vendor library means: + +1. **License Violation**: Immediate GPL non-compliance +2. **Distribution Ban**: Users cannot legally share modified firmware +3. **Commercial Risk**: Products using the firmware face legal liability +4. **Contributor Tainting**: All GPL contributions become legally problematic +5. **Update Restrictions**: Cannot fix bugs in proprietary components + +## Evaluation Criteria for Libraries + +Before including any library, QMK needs to verify: +- Complete source code available +- GPL-compatible license (GPL, LGPL, MIT, BSD, Apache) +- No hardware restrictions +- No redistribution limitations +- No additional legal terms +- No anti-GPL clauses + +## Policy Implementation + +QMK Firmware maintains a strict policy: + +1. **No proprietary libraries**: Regardless of technical workarounds +2. **No binary blobs**: All code must have source available +3. **No platform restrictions**: Must allow porting to any hardware +4. **No additional terms**: Only GPL restrictions permitted + +## Summary + +There is no legally safe way to include proprietary vendor libraries in GPL firmware. This applies whether they're: +- Bluetooth stacks (Nordic SoftDevice, ST Bluetooth) +- Precompiled static libraries +- Binary blobs with SVC interfaces +- Source code with restrictive licenses +- Mixed open/closed systems + +**Technical architectures cannot overcome license obligations.** + +QMK chooses GPL compliance, ensuring users receive all freedoms the GPL promises. From ae07dee941adb231981ab5fe62dfc39acea069e7 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 3 Aug 2025 04:01:13 +0100 Subject: [PATCH 093/167] Improve 'new-keymap' error handling when default keymap is missing (#25536) --- lib/python/qmk/cli/new/keymap.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/python/qmk/cli/new/keymap.py b/lib/python/qmk/cli/new/keymap.py index 20a0c0198c..4d19a726a4 100755 --- a/lib/python/qmk/cli/new/keymap.py +++ b/lib/python/qmk/cli/new/keymap.py @@ -9,6 +9,7 @@ from milc import cli from milc.questions import question, choice from qmk.constants import HAS_QMK_USERSPACE, QMK_USERSPACE +from qmk.errors import NoSuchKeyboardError from qmk.path import is_keyboard, keymaps, keymap from qmk.git import git_get_username from qmk.decorators import automagic_keyboard, automagic_keymap @@ -110,13 +111,18 @@ def new_keymap(cli): cli.log.error(f'Keyboard {{fg_cyan}}{kb_name}{{fg_reset}} does not exist! Please choose a valid name.') return False - # generate keymap paths - keymaps_dirs = keymaps(kb_name) - keymap_path_default = keymap(kb_name, 'default') - keymap_path_new = keymaps_dirs[0] / user_name + # validate before any keymap ops + try: + keymaps_dirs = keymaps(kb_name) + keymap_path_new = keymaps_dirs[0] / user_name + except NoSuchKeyboardError: + cli.log.error(f'Keymap folder for {{fg_cyan}}{kb_name}{{fg_reset}} does not exist!') + return False - if not keymap_path_default.exists(): - cli.log.error(f'Default keymap {{fg_cyan}}{keymap_path_default}{{fg_reset}} does not exist!') + keymap_path_default = keymap(kb_name, 'default') + + if not keymap_path_default: + cli.log.error(f'Default keymap for {{fg_cyan}}{kb_name}{{fg_reset}} does not exist!') return False if not validate_keymap_name(user_name): @@ -134,7 +140,7 @@ def new_keymap(cli): _set_converter(keymap_path_new / 'keymap.json', converter) # end message to user - cli.log.info(f'{{fg_green}}Created a new keymap called {{fg_cyan}}{user_name}{{fg_green}} in: {{fg_cyan}}{keymap_path_new}.{{fg_reset}}') + cli.log.info(f'{{fg_green}}Created a new keymap called {{fg_cyan}}{user_name}{{fg_green}} in: {{fg_cyan}}{keymap_path_new}{{fg_reset}}.') cli.log.info(f"Compile a firmware with your new keymap by typing: {{fg_yellow}}qmk compile -kb {kb_name} -km {user_name}{{fg_reset}}.") # Add to userspace compile if we have userspace available From 1a58fce043e7f2e2b938dee03945dabc29e48d73 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Aug 2025 21:15:03 +0100 Subject: [PATCH 094/167] Bump actions/download-artifact from 4 to 5 (#25545) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci_build_major_branch.yml | 2 +- .github/workflows/ci_build_major_branch_keymap.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci_build_major_branch.yml b/.github/workflows/ci_build_major_branch.yml index ddc7cb10d1..403ad8b3ef 100644 --- a/.github/workflows/ci_build_major_branch.yml +++ b/.github/workflows/ci_build_major_branch.yml @@ -88,7 +88,7 @@ jobs: fetch-depth: 0 - name: Download firmwares - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: pattern: firmware-* path: . diff --git a/.github/workflows/ci_build_major_branch_keymap.yml b/.github/workflows/ci_build_major_branch_keymap.yml index 2e0f3036a3..4123b17b5f 100644 --- a/.github/workflows/ci_build_major_branch_keymap.yml +++ b/.github/workflows/ci_build_major_branch_keymap.yml @@ -92,7 +92,7 @@ jobs: uses: actions/checkout@v4 - name: Get target definitions - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: targets-${{ inputs.keymap }} path: . @@ -139,7 +139,7 @@ jobs: uses: actions/checkout@v4 - name: Download firmwares - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: pattern: firmware-${{ inputs.keymap }}-* path: . From 12dc6d1ac80b6919fcdb084d897612559b2f391b Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Sun, 10 Aug 2025 00:14:40 +0200 Subject: [PATCH 095/167] Fix serial speed DD configuration & migrate keyboards (#25546) * Fix serial speed DD configuration - Fixes incorrect SOFT_SERIAL_SPEED mapping - Renames key split.soft_serial_speed -> split.serial.speed - Migrates keyoards that configure this, and remove configuration from keyboards that do not differ from the default behaviour - Add deprecation notice and migration support --- data/mappings/info_config.hjson | 2 +- data/schemas/keyboard.jsonschema | 10 ++++--- docs/reference_info_json.md | 6 ++--- keyboards/aleblazer/zodiark/config.h | 19 ------------- keyboards/flxlb/zplit/config.h | 1 - keyboards/giabalanai/config.h | 10 ------- .../6x6/blackpill_f411/config.h | 7 ----- keyboards/handwired/myskeeb/config.h | 1 - keyboards/handwired/split65/promicro/config.h | 2 -- keyboards/handwired/split65/stm32/config.h | 1 - keyboards/manta60/config.h | 2 -- keyboards/momoka_ergo/config.h | 2 -- keyboards/momoka_ergo/keyboard.json | 3 ++- keyboards/omkbd/ergodash/mini/config.h | 10 ------- keyboards/omkbd/ergodash/rev1/config.h | 10 ------- keyboards/omkbd/runner3680/3x6/config.h | 27 ------------------- keyboards/omkbd/runner3680/3x7/config.h | 27 ------------------- keyboards/omkbd/runner3680/3x8/config.h | 27 ------------------- keyboards/omkbd/runner3680/4x6/config.h | 27 ------------------- keyboards/omkbd/runner3680/4x7/config.h | 27 ------------------- keyboards/omkbd/runner3680/4x8/config.h | 27 ------------------- keyboards/omkbd/runner3680/5x6/config.h | 27 ------------------- keyboards/omkbd/runner3680/5x6_5x8/config.h | 27 ------------------- keyboards/omkbd/runner3680/5x7/config.h | 27 ------------------- keyboards/omkbd/runner3680/5x8/config.h | 27 ------------------- keyboards/redox/rev1/proton_c/config.h | 7 ----- keyboards/tkw/grandiceps/config.h | 2 -- keyboards/unikeyboard/diverge3/config.h | 4 --- keyboards/unikeyboard/diverge3/keyboard.json | 3 ++- keyboards/zvecr/split_blackpill/config.h | 2 -- keyboards/zvecr/split_blackpill/keyboard.json | 3 ++- keyboards/zvecr/zv48/config.h | 1 - lib/python/qmk/info.py | 3 +++ 33 files changed, 20 insertions(+), 361 deletions(-) delete mode 100644 keyboards/aleblazer/zodiark/config.h delete mode 100644 keyboards/omkbd/runner3680/3x6/config.h delete mode 100644 keyboards/omkbd/runner3680/3x7/config.h delete mode 100644 keyboards/omkbd/runner3680/3x8/config.h delete mode 100644 keyboards/omkbd/runner3680/4x6/config.h delete mode 100644 keyboards/omkbd/runner3680/4x7/config.h delete mode 100644 keyboards/omkbd/runner3680/4x8/config.h delete mode 100644 keyboards/omkbd/runner3680/5x6/config.h delete mode 100644 keyboards/omkbd/runner3680/5x6_5x8/config.h delete mode 100644 keyboards/omkbd/runner3680/5x7/config.h delete mode 100644 keyboards/omkbd/runner3680/5x8/config.h diff --git a/data/mappings/info_config.hjson b/data/mappings/info_config.hjson index 356dd6ba52..a160e490c7 100644 --- a/data/mappings/info_config.hjson +++ b/data/mappings/info_config.hjson @@ -184,7 +184,7 @@ // Split Keyboard "SOFT_SERIAL_PIN": {"info_key": "split.serial.pin"}, - "SOFT_SERIAL_SPEED": {"info_key": "split.soft_serial_speed"}, + "SELECT_SOFT_SERIAL_SPEED": {"info_key": "split.serial.speed"}, "SPLIT_HAND_MATRIX_GRID": {"info_key": "split.handedness.matrix_grid", "value_type": "array", "to_c": false}, "SPLIT_HAND_PIN": {"info_key": "split.handedness.pin"}, "SPLIT_USB_DETECT": {"info_key": "split.usb_detect.enabled", "value_type": "flag"}, diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index 13ceec5afa..3775b66c1a 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -864,8 +864,7 @@ }, "soft_serial_speed": { "type": "integer", - "minimum": 0, - "maximum": 5 + "$comment": "Deprecated: use split.serial.speed instead" }, "serial": { "type": "object", @@ -875,7 +874,12 @@ "type": "string", "enum": ["bitbang", "usart", "vendor"] }, - "pin": {"$ref": "./definitions.jsonschema#/mcu_pin"} + "pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}, + "speed": { + "type": "integer", + "minimum": 0, + "maximum": 5 + } } }, "transport": { diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md index c30859955f..cf22317613 100644 --- a/docs/reference_info_json.md +++ b/docs/reference_info_json.md @@ -753,9 +753,9 @@ Configures the [Split Keyboard](features/split_keyboard) feature. * Default: `"bitbang"` * `pin` Pin * The GPIO pin to use for transmit and receive. - * `soft_serial_speed` Number - * The protocol speed, from `0` to `5` (`serial` transport protocol only). - * Default: `1` + * `speed` Number + * The protocol speed, from `0` to `5` (fastest to slowest). + * Default: `1` * `transport` * `protocol` String * The split transport protocol to use. Must be one of `custom`, `i2c`, `serial`. diff --git a/keyboards/aleblazer/zodiark/config.h b/keyboards/aleblazer/zodiark/config.h deleted file mode 100644 index 8230f082b3..0000000000 --- a/keyboards/aleblazer/zodiark/config.h +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright 2021 Spencer Deven - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ -#pragma once - -#define SELECT_SOFT_SERIAL_SPEED 1 diff --git a/keyboards/flxlb/zplit/config.h b/keyboards/flxlb/zplit/config.h index 832108a54b..af2447eb68 100644 --- a/keyboards/flxlb/zplit/config.h +++ b/keyboards/flxlb/zplit/config.h @@ -18,7 +18,6 @@ along with this program. If not, see . #pragma once -#define SELECT_SOFT_SERIAL_SPEED 1 // #define USE_I2C #define SPLIT_USB_DETECT #define SPLIT_USB_TIMEOUT 500 diff --git a/keyboards/giabalanai/config.h b/keyboards/giabalanai/config.h index bd501c1f76..886df53c18 100644 --- a/keyboards/giabalanai/config.h +++ b/keyboards/giabalanai/config.h @@ -17,16 +17,6 @@ along with this program. If not, see . #pragma once -#define SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps - // Right side has to be the master since 1, LED data is output from right side, and 2, Audio pin is prepared on right side as a reserve. #define MASTER_RIGHT diff --git a/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/config.h b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/config.h index 2258a17c2e..191cd9b224 100644 --- a/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/config.h +++ b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/config.h @@ -25,13 +25,6 @@ #define SERIAL_USART_RX_PIN B7 // USART RX pin #define SERIAL_USART_TX_PIN B6 // USART TX pin -#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5 - // 0: 460800 baud - // 1: 230400 baud (default) - // 2: 115200 baud - // 3: 57600 baud - // 4: 38400 baud - // 5: 19200 baud #define SERIAL_USART_DRIVER SD1 // USART driver of TX and RX pin. default: SD1 #define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 #define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 diff --git a/keyboards/handwired/myskeeb/config.h b/keyboards/handwired/myskeeb/config.h index 8c37524a0e..d290d41aee 100644 --- a/keyboards/handwired/myskeeb/config.h +++ b/keyboards/handwired/myskeeb/config.h @@ -2,7 +2,6 @@ // Comunication and Split Detection -#define SELECT_SOFT_SERIAL_SPEED 1 #define SPLIT_USB_DETECT #define EE_HANDS #define SPLIT_USB_TIMEOUT 1000 diff --git a/keyboards/handwired/split65/promicro/config.h b/keyboards/handwired/split65/promicro/config.h index f5c5ee3be2..e6a8650b9b 100644 --- a/keyboards/handwired/split65/promicro/config.h +++ b/keyboards/handwired/split65/promicro/config.h @@ -15,8 +15,6 @@ */ #pragma once -#define SELECT_SOFT_SERIAL_SPEED 1 - // Feature diable options //#define NO_DEBUG //#define NO_PRINT diff --git a/keyboards/handwired/split65/stm32/config.h b/keyboards/handwired/split65/stm32/config.h index 3d48891e7e..bf84e29fba 100644 --- a/keyboards/handwired/split65/stm32/config.h +++ b/keyboards/handwired/split65/stm32/config.h @@ -21,7 +21,6 @@ #define AUDIO_PIN_ALT A4 #define AUDIO_PIN_ALT_AS_NEGATIVE -#define SELECT_SOFT_SERIAL_SPEED 1 #define SERIAL_USART_DRIVER SD1 #define SERIAL_USART_TX_PAL_MODE 7 #define SERIAL_USART_TIMEOUT 100 diff --git a/keyboards/manta60/config.h b/keyboards/manta60/config.h index 3f0a8cf4e1..01a48cb684 100644 --- a/keyboards/manta60/config.h +++ b/keyboards/manta60/config.h @@ -17,8 +17,6 @@ along with this program. If not, see . #pragma once -#define SELECT_SOFT_SERIAL_SPEED 1 - # ifndef IOS_DEVICE_ENABLE # define RGBLIGHT_VAL_STEP 16 # define RGBLIGHT_LIMIT_VAL 128 /* The maximum brightness level */ diff --git a/keyboards/momoka_ergo/config.h b/keyboards/momoka_ergo/config.h index dbd81b1213..6a401e3906 100644 --- a/keyboards/momoka_ergo/config.h +++ b/keyboards/momoka_ergo/config.h @@ -17,7 +17,5 @@ along with this program. If not, see . #pragma once -#define SELECT_SOFT_SERIAL_SPEED 5 - #define SPLIT_USB_DETECT #define EE_HANDS diff --git a/keyboards/momoka_ergo/keyboard.json b/keyboards/momoka_ergo/keyboard.json index 3b2ba6664f..3430932625 100644 --- a/keyboards/momoka_ergo/keyboard.json +++ b/keyboards/momoka_ergo/keyboard.json @@ -28,7 +28,8 @@ "split": { "enabled": true, "serial": { - "pin": "D1" + "pin": "D1", + "speed": 5 } }, "rgblight": { diff --git a/keyboards/omkbd/ergodash/mini/config.h b/keyboards/omkbd/ergodash/mini/config.h index 12b408ff56..373c238afd 100644 --- a/keyboards/omkbd/ergodash/mini/config.h +++ b/keyboards/omkbd/ergodash/mini/config.h @@ -19,13 +19,3 @@ along with this program. If not, see . #pragma once #define AUDIO_PIN C6 - -#define SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps diff --git a/keyboards/omkbd/ergodash/rev1/config.h b/keyboards/omkbd/ergodash/rev1/config.h index 12b408ff56..373c238afd 100644 --- a/keyboards/omkbd/ergodash/rev1/config.h +++ b/keyboards/omkbd/ergodash/rev1/config.h @@ -19,13 +19,3 @@ along with this program. If not, see . #pragma once #define AUDIO_PIN C6 - -#define SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps diff --git a/keyboards/omkbd/runner3680/3x6/config.h b/keyboards/omkbd/runner3680/3x6/config.h deleted file mode 100644 index 2b0210d2be..0000000000 --- a/keyboards/omkbd/runner3680/3x6/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2019 omkbd - * - * This 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 SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps diff --git a/keyboards/omkbd/runner3680/3x7/config.h b/keyboards/omkbd/runner3680/3x7/config.h deleted file mode 100644 index 2b0210d2be..0000000000 --- a/keyboards/omkbd/runner3680/3x7/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2019 omkbd - * - * This 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 SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps diff --git a/keyboards/omkbd/runner3680/3x8/config.h b/keyboards/omkbd/runner3680/3x8/config.h deleted file mode 100644 index 2b0210d2be..0000000000 --- a/keyboards/omkbd/runner3680/3x8/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2019 omkbd - * - * This 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 SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps diff --git a/keyboards/omkbd/runner3680/4x6/config.h b/keyboards/omkbd/runner3680/4x6/config.h deleted file mode 100644 index 2b0210d2be..0000000000 --- a/keyboards/omkbd/runner3680/4x6/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2019 omkbd - * - * This 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 SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps diff --git a/keyboards/omkbd/runner3680/4x7/config.h b/keyboards/omkbd/runner3680/4x7/config.h deleted file mode 100644 index 2b0210d2be..0000000000 --- a/keyboards/omkbd/runner3680/4x7/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2019 omkbd - * - * This 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 SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps diff --git a/keyboards/omkbd/runner3680/4x8/config.h b/keyboards/omkbd/runner3680/4x8/config.h deleted file mode 100644 index 2b0210d2be..0000000000 --- a/keyboards/omkbd/runner3680/4x8/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2019 omkbd - * - * This 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 SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps diff --git a/keyboards/omkbd/runner3680/5x6/config.h b/keyboards/omkbd/runner3680/5x6/config.h deleted file mode 100644 index 2b0210d2be..0000000000 --- a/keyboards/omkbd/runner3680/5x6/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2019 omkbd - * - * This 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 SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps diff --git a/keyboards/omkbd/runner3680/5x6_5x8/config.h b/keyboards/omkbd/runner3680/5x6_5x8/config.h deleted file mode 100644 index b6f3f5ff86..0000000000 --- a/keyboards/omkbd/runner3680/5x6_5x8/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2021 omkbd - * - * This 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 SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps diff --git a/keyboards/omkbd/runner3680/5x7/config.h b/keyboards/omkbd/runner3680/5x7/config.h deleted file mode 100644 index 2b0210d2be..0000000000 --- a/keyboards/omkbd/runner3680/5x7/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2019 omkbd - * - * This 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 SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps diff --git a/keyboards/omkbd/runner3680/5x8/config.h b/keyboards/omkbd/runner3680/5x8/config.h deleted file mode 100644 index 2b0210d2be..0000000000 --- a/keyboards/omkbd/runner3680/5x8/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2019 omkbd - * - * This 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 SELECT_SOFT_SERIAL_SPEED 1 -/*Sets the protocol speed when using serial communication*/ -//Speeds: -//0: about 189kbps (Experimental only) -//1: about 137kbps (default) -//2: about 75kbps -//3: about 39kbps -//4: about 26kbps -//5: about 20kbps diff --git a/keyboards/redox/rev1/proton_c/config.h b/keyboards/redox/rev1/proton_c/config.h index 4d28bd2f4a..b151d2b29e 100644 --- a/keyboards/redox/rev1/proton_c/config.h +++ b/keyboards/redox/rev1/proton_c/config.h @@ -13,13 +13,6 @@ #define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve. // Check if this feature is necessary with your keyboard design and available on the mcu. -#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5 - // 0: 460800 baud - // 1: 230400 baud (default) - // 2: 115200 baud - // 3: 57600 baud - // 4: 38400 baud - // 5: 19200 baud #define SERIAL_USART_DRIVER SD1 // USART driver of TX and RX pin. default: SD1 #define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 #define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 diff --git a/keyboards/tkw/grandiceps/config.h b/keyboards/tkw/grandiceps/config.h index a02e14f91f..04c41e2a11 100644 --- a/keyboards/tkw/grandiceps/config.h +++ b/keyboards/tkw/grandiceps/config.h @@ -15,8 +15,6 @@ */ #pragma once -#define SELECT_SOFT_SERIAL_SPEED 1 - #define WS2812_PWM_DRIVER PWMD3 #define WS2812_PWM_CHANNEL 4 #define WS2812_PWM_PAL_MODE 2 diff --git a/keyboards/unikeyboard/diverge3/config.h b/keyboards/unikeyboard/diverge3/config.h index bdd2b7cbb2..c77a4f1d16 100644 --- a/keyboards/unikeyboard/diverge3/config.h +++ b/keyboards/unikeyboard/diverge3/config.h @@ -17,10 +17,6 @@ along with this program. If not, see . #pragma once -#ifndef SELECT_SOFT_SERIAL_SPEED -#define SELECT_SOFT_SERIAL_SPEED 3 -#endif - /* If defined, GRAVE_ESC will always act as ESC when CTRL is held. * This is useful for the Windows task manager shortcut (ctrl+shift+esc). */ diff --git a/keyboards/unikeyboard/diverge3/keyboard.json b/keyboards/unikeyboard/diverge3/keyboard.json index 187e5dead0..6a4813d115 100644 --- a/keyboards/unikeyboard/diverge3/keyboard.json +++ b/keyboards/unikeyboard/diverge3/keyboard.json @@ -34,7 +34,8 @@ "split": { "enabled": true, "serial": { - "pin": "D0" + "pin": "D0", + "speed": 3 } }, "development_board": "promicro", diff --git a/keyboards/zvecr/split_blackpill/config.h b/keyboards/zvecr/split_blackpill/config.h index efc3bbe66a..59582a9726 100644 --- a/keyboards/zvecr/split_blackpill/config.h +++ b/keyboards/zvecr/split_blackpill/config.h @@ -2,8 +2,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define SELECT_SOFT_SERIAL_SPEED 0 - #define WS2812_PWM_DRIVER PWMD3 #define WS2812_PWM_CHANNEL 1 #define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM3 diff --git a/keyboards/zvecr/split_blackpill/keyboard.json b/keyboards/zvecr/split_blackpill/keyboard.json index 407314b71a..2884b790d7 100644 --- a/keyboards/zvecr/split_blackpill/keyboard.json +++ b/keyboards/zvecr/split_blackpill/keyboard.json @@ -27,7 +27,8 @@ }, "serial": { "driver": "usart", - "pin": "B6" + "pin": "B6", + "speed": 0 }, "bootmagic": { "matrix": [4, 0] diff --git a/keyboards/zvecr/zv48/config.h b/keyboards/zvecr/zv48/config.h index 9e8c2656a9..ab9ca3355b 100644 --- a/keyboards/zvecr/zv48/config.h +++ b/keyboards/zvecr/zv48/config.h @@ -3,7 +3,6 @@ #pragma once -//#define SELECT_SOFT_SERIAL_SPEED 0 #define SERIAL_USART_SPEED 921600 #define WS2812_PWM_DRIVER PWMD3 diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index b4fa481b1b..f63228b2bc 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -477,6 +477,9 @@ def _extract_split_serial(info_data, config_c): if 'soft_serial_pin' in split: split['serial'] = split.get('serial', {}) split['serial']['pin'] = split.pop('soft_serial_pin') + if 'soft_serial_speed' in split: + split['serial'] = split.get('serial', {}) + split['serial']['speed'] = split.pop('soft_serial_speed') def _extract_split_transport(info_data, config_c): From 9dcf2a11b252d95ad83f9cd34815c57c3147168d Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 9 Aug 2025 23:18:21 +0100 Subject: [PATCH 096/167] Refactor inland/kb83 (#25542) Update keyboard to match current standards: * Move LED config to DD * Revert back to core behaviour for keycodes * Remove vendor code * Configure dip switch map * Align readme --- keyboards/inland/kb83/kb83.c | 410 +----------------- keyboards/inland/kb83/keyboard.json | 94 ++++ .../inland/kb83/keymaps/default/keymap.c | 5 + .../inland/kb83/keymaps/default/rules.mk | 1 + keyboards/inland/kb83/readme.md | 9 +- 5 files changed, 109 insertions(+), 410 deletions(-) diff --git a/keyboards/inland/kb83/kb83.c b/keyboards/inland/kb83/kb83.c index 07d8bdbdb4..431406d008 100644 --- a/keyboards/inland/kb83/kb83.c +++ b/keyboards/inland/kb83/kb83.c @@ -128,128 +128,6 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = { {1, CB10_CA5, CB11_CA5, CB12_CA5}, }; -led_config_t g_led_config = { - { - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, NO_LED, NO_LED}, - { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, NO_LED, 28}, - { 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, NO_LED, 43}, - { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, NO_LED, 56, NO_LED, 57}, - { 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, NO_LED, NO_LED, 69, 70, 71}, - { 72, 73, 74, NO_LED, NO_LED, 75, NO_LED, NO_LED, NO_LED, 76, 77, 78, NO_LED, 79, 80, 81} - }, - { - { 0, 0}, // 0 - { 14, 0}, // 1 - { 29, 0}, // 2 - { 44, 0}, // 3 - { 59, 0}, // 4 - { 74, 0}, // 5 - { 89, 0}, // 6 - {104, 0}, // 7 - {119, 0}, // 8 - {134, 0}, // 9 - {149, 0}, // 10 - {164, 0}, // 11 - {179, 0}, // 12 - {194, 0}, // 13 - - { 0, 12}, // 14 - { 14, 12}, // 15 - { 28, 12}, // 16 - { 42, 12}, // 17 - { 56, 12}, // 18 - { 70, 12}, // 19 - { 84, 12}, // 20 - { 98, 12}, // 21 - {112, 12}, // 22 - {126, 12}, // 23 - {140, 12}, // 24 - {154, 12}, // 25 - {168, 12}, // 26 - {182, 12}, // 27 - {224, 12}, // 28 - - { 0, 25}, // 29 - { 14, 25}, // 30 - { 28, 25}, // 31 - { 42, 25}, // 32 - { 56, 25}, // 33 - { 70, 25}, // 34 - { 84, 25}, // 35 - { 98, 25}, // 36 - {112, 25}, // 37 - {126, 25}, // 38 - {140, 25}, // 39 - {154, 25}, // 40 - {168, 25}, // 41 - {182, 25}, // 42 - {224, 25}, // 43 - - { 0, 38}, // 44 - { 28, 38}, // 45 - { 42, 38}, // 46 - { 56, 38}, // 47 - { 70, 38}, // 48 - { 84, 38}, // 49 - { 98, 38}, // 50 - {112, 38}, // 51 - {126, 38}, // 52 - {140, 38}, // 53 - {154, 38}, // 54 - {168, 38}, // 55 - {182, 38}, // 56 - {224, 38}, // 57 - - { 0, 51}, // 58 - { 18, 51}, // 59 - { 37, 51}, // 60 - { 56, 51}, // 61 - { 74, 51}, // 62 - { 93, 51}, // 63 - {112, 51}, // 64 - {130, 51}, // 65 - {149, 51}, // 66 - {168, 51}, // 67 - {186, 51}, // 68 - {200, 51}, // 69 - {214, 51}, // 70 - {224, 51}, // 71 - - { 0, 64}, // 72 - { 18, 64}, // 73 - { 37, 64}, // 74 - { 92, 64}, // 75 - {140, 64}, // 76 - {154, 64}, // 77 - {168, 64}, // 78 - {196, 64}, // 80 - {210, 64}, // 81 - {224, 64}, // 82 - - {0, 0}, // 68 LED 1 - {0, 16}, // 69 LED 2 - {0, 32}, // 70 LED 3 - {0, 48}, // 71 LED 4 - {0, 64}, // 72 LED 5 - - {224, 0 }, // 78 LED 12 - {224, 16}, // 79 LED 13 - {224, 32}, // 80 LED 14 - {224, 48}, // 81 LED 15 - {224, 64}, // 82 LED 16 - }, - { - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, - } -}; - bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { return false; @@ -275,45 +153,14 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { #endif -enum __layers { - WIN_B, - WIN_FN, - MAC_B, - MAC_FN -}; - -enum colors { - WHITE, - RED, - GREEN, - BLUE -}; -enum colors led_color_status = WHITE; - // clang-format on -static bool fn_make_flag = false; -static bool Lkey_flag = false; -static bool reset_glint_flag = false; -static bool while_test_flag = false; -static bool alarm_flag = false; -static uint16_t current_time = 0; -static uint8_t glint_cnt = 0; -static uint16_t scancode = 0; -static uint8_t alarm_cnt = 0; -static uint8_t RGB_HSV_level; - -hsv_t hsv; - -void led_test(uint8_t color); -void clear_eeprom(void); -void rgb_hsv_updata_user(void); bool dip_switch_update_kb(uint8_t index, bool active) { if (!dip_switch_update_user(index, active)) { return false; } if (index == 0) { - default_layer_set(1UL << (active ? MAC_B : WIN_B)); + set_single_default_layer(active ? 2 : 0); } return true; } @@ -323,163 +170,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return false; } switch (keycode) { - case MO(WIN_FN): - case MO(MAC_FN): - fn_make_flag = record->event.pressed; - return true; - case KC_ESC: - if (fn_make_flag && record->event.pressed) { - Lkey_flag = true; - current_time = timer_read(); - scancode = KC_ESC; - return false; - } else { - Lkey_flag = 0; - } - return true; - case KC_END: - if (fn_make_flag && record->event.pressed) { - if (while_test_flag) { - while_test_flag = false; - rgb_matrix_init(); - } else { - Lkey_flag = true; - current_time = timer_read(); - scancode = KC_END; - } - return false; - } else { - Lkey_flag = 0; - } - return true; - case KC_LEFT: - if (while_test_flag == true) { - if (record->event.pressed) { - if (glint_cnt == 0) - glint_cnt = 3; - else - glint_cnt--; - if ((glint_cnt % 4) == 0) { - rgb_matrix_sethsv_noeeprom(HSV_WHITE); - } else if ((glint_cnt % 4) == 1) { - rgb_matrix_sethsv_noeeprom(HSV_RED); - } else if ((glint_cnt % 4) == 2) { - rgb_matrix_sethsv_noeeprom(HSV_GREEN); - } else if ((glint_cnt % 4) == 3) { - rgb_matrix_sethsv_noeeprom(HSV_BLUE); - } - } - return false; - } - return true; - case KC_RGHT: - if (while_test_flag == true) { - if (record->event.pressed) { - glint_cnt++; - if (glint_cnt >= 4) glint_cnt = 0; - - if ((glint_cnt % 4) == 0) { - rgb_matrix_sethsv_noeeprom(HSV_WHITE); - } else if ((glint_cnt % 4) == 1) { - rgb_matrix_sethsv_noeeprom(HSV_RED); - } else if ((glint_cnt % 4) == 2) { - rgb_matrix_sethsv_noeeprom(HSV_GREEN); - } else if ((glint_cnt % 4) == 3) { - rgb_matrix_sethsv_noeeprom(HSV_BLUE); - } - } - return false; - } - return true; - case DF(WIN_B): - if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) { - alarm_flag = true; - rgb_matrix_toggle_noeeprom(); - current_time = timer_read(); - set_single_persistent_default_layer(WIN_B); - return false; - } - return true; - case DF(MAC_B): - if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) { - alarm_flag = true; - rgb_matrix_toggle_noeeprom(); - current_time = timer_read(); - set_single_persistent_default_layer(MAC_B); - return false; - } - return true; - - case QK_RGB_MATRIX_VALUE_UP: - if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) { - if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_val() / (RGB_MATRIX_MAXIMUM_BRIGHTNESS / 4)) < 4) { - RGB_HSV_level++; - rgb_matrix_config.hsv.v = (uint8_t)(RGB_MATRIX_MAXIMUM_BRIGHTNESS / 4) * RGB_HSV_level; - } - rgb_hsv_updata_user(); - } - return false; - case QK_RGB_MATRIX_VALUE_DOWN: - if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) { - if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_val() / (RGB_MATRIX_MAXIMUM_BRIGHTNESS / 4)) > 0) { - RGB_HSV_level--; - rgb_matrix_config.hsv.v = (uint8_t)(RGB_MATRIX_MAXIMUM_BRIGHTNESS / 4) * RGB_HSV_level; - } - rgb_hsv_updata_user(); - } - return false; - case QK_RGB_MATRIX_SATURATION_UP: - if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) { - if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_sat() / (UINT8_MAX / 4)) < 4) { - RGB_HSV_level++; - rgb_matrix_config.hsv.s = (uint8_t)(UINT8_MAX / 4) * RGB_HSV_level; - } - rgb_hsv_updata_user(); - } - return false; - case QK_RGB_MATRIX_SATURATION_DOWN: - if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) { - if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_sat() / (UINT8_MAX / 4)) > 0) { - RGB_HSV_level--; - rgb_matrix_config.hsv.s = (uint8_t)(UINT8_MAX / 4) * RGB_HSV_level; - } - rgb_hsv_updata_user(); - } - return false; - case QK_RGB_MATRIX_HUE_UP: - if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) { - if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_hue() / (UINT8_MAX / 6)) < 6) { - RGB_HSV_level++; - rgb_matrix_config.hsv.h = (uint8_t)(UINT8_MAX / 6) * RGB_HSV_level; - } - rgb_hsv_updata_user(); - } - return false; - case QK_RGB_MATRIX_HUE_DOWN: - if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) { - if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_hue() / (UINT8_MAX / 6)) > 0) { - RGB_HSV_level--; - rgb_matrix_config.hsv.h = (uint8_t)(UINT8_MAX / 6) * RGB_HSV_level; - } - rgb_hsv_updata_user(); - } - return false; - case QK_RGB_MATRIX_SPEED_UP: - if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) { - if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_speed() / (UINT8_MAX / 4)) < 4) { - RGB_HSV_level++; - rgb_matrix_set_speed((uint8_t)(UINT8_MAX / 4) * RGB_HSV_level); - } - } - return false; - case QK_RGB_MATRIX_SPEED_DOWN: - if ((fn_make_flag && record->event.pressed) && (alarm_flag == 0)) { - if ((RGB_HSV_level = (uint8_t)rgb_matrix_get_speed() / (UINT8_MAX / 4)) > 0) { - RGB_HSV_level--; - rgb_matrix_set_speed((uint8_t)(UINT8_MAX / 4) * RGB_HSV_level); - } - } - return false; case QK_RGB_MATRIX_TOGGLE: if (record->event.pressed) { switch (rgb_matrix_get_flags()) { @@ -499,102 +189,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return false; default: - return process_record_user(keycode, record); + return true; } } - -void housekeeping_task_kb(void) { - if (Lkey_flag) { - if (scancode == KC_ESC) { - if (timer_elapsed(current_time) >= 3000) { - Lkey_flag = false; - clear_eeprom(); - - current_time = timer_read(); - reset_glint_flag = true; - glint_cnt = 0; - rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR); - rgb_matrix_sethsv_noeeprom(HSV_OFF); - } - } else if (scancode == KC_END) { - if (timer_elapsed(current_time) >= 3000) { - Lkey_flag = false; - clear_eeprom(); - - while_test_flag = true; - glint_cnt = 0; - rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR); - rgb_matrix_sethsv_noeeprom(HSV_WHITE); - } - } - } else if (reset_glint_flag) { - if ((timer_elapsed(current_time)) >= 300) { - current_time = timer_read(); - if (((glint_cnt++) & 0x01) == 0) { - rgb_matrix_sethsv_noeeprom(HSV_RED); - } else { - rgb_matrix_sethsv_noeeprom(HSV_OFF); - } - if (glint_cnt >= 7) { - glint_cnt = 0; - reset_glint_flag = false; - rgb_matrix_init(); - } - } - } else if (alarm_cnt != 0) { - alarm_cnt--; - if (alarm_cnt == 0) { - alarm_flag = true; - rgb_matrix_toggle_noeeprom(); - current_time = timer_read(); - } - } else if (alarm_flag) { - if ((timer_elapsed(current_time)) >= 200) { - rgb_matrix_toggle_noeeprom(); - alarm_flag = 0; - } - } -} - -void led_test(uint8_t color) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR); - - switch (color) { - case WHITE: - rgb_matrix_sethsv_noeeprom(HSV_WHITE); - break; - - case RED: - rgb_matrix_sethsv_noeeprom(HSV_RED); - break; - - case GREEN: - rgb_matrix_sethsv_noeeprom(HSV_GREEN); - break; - - case BLUE: - rgb_matrix_sethsv_noeeprom(HSV_BLUE); - break; - } -} - -void clear_eeprom(void) { - layer_state_t default_layer_temp = default_layer_state; - eeconfig_init(); - default_layer_set(default_layer_temp); - -#ifdef VIA_ENABLE - // This resets the layout options - via_set_layout_options(VIA_EEPROM_LAYOUT_OPTIONS_DEFAULT); - // This resets the keymaps in EEPROM to what is in flash. - dynamic_keymap_reset(); - // This resets the macros in EEPROM to nothing. - dynamic_keymap_macro_reset(); -#endif - - rgb_matrix_enable_noeeprom(); -} - -void rgb_hsv_updata_user(void) { - rgb_matrix_sethsv(rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v); -} diff --git a/keyboards/inland/kb83/keyboard.json b/keyboards/inland/kb83/keyboard.json index 9e88019bd4..8686e33885 100644 --- a/keyboards/inland/kb83/keyboard.json +++ b/keyboards/inland/kb83/keyboard.json @@ -32,6 +32,100 @@ "multisplash": true }, "driver": "snled27351", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 14, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 29, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 44, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 59, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 74, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 89, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 104, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 119, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 134, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 149, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 164, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 179, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 194, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 12, "flags": 4}, + {"matrix": [1, 1], "x": 14, "y": 12, "flags": 4}, + {"matrix": [1, 2], "x": 28, "y": 12, "flags": 4}, + {"matrix": [1, 3], "x": 42, "y": 12, "flags": 4}, + {"matrix": [1, 4], "x": 56, "y": 12, "flags": 4}, + {"matrix": [1, 5], "x": 70, "y": 12, "flags": 4}, + {"matrix": [1, 6], "x": 84, "y": 12, "flags": 4}, + {"matrix": [1, 7], "x": 98, "y": 12, "flags": 4}, + {"matrix": [1, 8], "x": 112, "y": 12, "flags": 4}, + {"matrix": [1, 9], "x": 126, "y": 12, "flags": 4}, + {"matrix": [1, 10], "x": 140, "y": 12, "flags": 4}, + {"matrix": [1, 11], "x": 154, "y": 12, "flags": 4}, + {"matrix": [1, 12], "x": 168, "y": 12, "flags": 4}, + {"matrix": [1, 13], "x": 182, "y": 12, "flags": 4}, + {"matrix": [1, 15], "x": 224, "y": 12, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 25, "flags": 4}, + {"matrix": [2, 1], "x": 14, "y": 25, "flags": 4}, + {"matrix": [2, 2], "x": 28, "y": 25, "flags": 4}, + {"matrix": [2, 3], "x": 42, "y": 25, "flags": 4}, + {"matrix": [2, 4], "x": 56, "y": 25, "flags": 4}, + {"matrix": [2, 5], "x": 70, "y": 25, "flags": 4}, + {"matrix": [2, 6], "x": 84, "y": 25, "flags": 4}, + {"matrix": [2, 7], "x": 98, "y": 25, "flags": 4}, + {"matrix": [2, 8], "x": 112, "y": 25, "flags": 4}, + {"matrix": [2, 9], "x": 126, "y": 25, "flags": 4}, + {"matrix": [2, 10], "x": 140, "y": 25, "flags": 4}, + {"matrix": [2, 11], "x": 154, "y": 25, "flags": 4}, + {"matrix": [2, 12], "x": 168, "y": 25, "flags": 4}, + {"matrix": [2, 13], "x": 182, "y": 25, "flags": 4}, + {"matrix": [2, 15], "x": 224, "y": 25, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 38, "flags": 4}, + {"matrix": [3, 1], "x": 28, "y": 38, "flags": 4}, + {"matrix": [3, 2], "x": 42, "y": 38, "flags": 4}, + {"matrix": [3, 3], "x": 56, "y": 38, "flags": 4}, + {"matrix": [3, 4], "x": 70, "y": 38, "flags": 4}, + {"matrix": [3, 5], "x": 84, "y": 38, "flags": 4}, + {"matrix": [3, 6], "x": 98, "y": 38, "flags": 4}, + {"matrix": [3, 7], "x": 112, "y": 38, "flags": 4}, + {"matrix": [3, 8], "x": 126, "y": 38, "flags": 4}, + {"matrix": [3, 9], "x": 140, "y": 38, "flags": 4}, + {"matrix": [3, 10], "x": 154, "y": 38, "flags": 4}, + {"matrix": [3, 11], "x": 168, "y": 38, "flags": 4}, + {"matrix": [3, 13], "x": 182, "y": 38, "flags": 4}, + {"matrix": [3, 15], "x": 224, "y": 38, "flags": 4}, + {"matrix": [4, 0], "x": 0, "y": 51, "flags": 4}, + {"matrix": [4, 1], "x": 18, "y": 51, "flags": 4}, + {"matrix": [4, 2], "x": 37, "y": 51, "flags": 4}, + {"matrix": [4, 3], "x": 56, "y": 51, "flags": 4}, + {"matrix": [4, 4], "x": 74, "y": 51, "flags": 4}, + {"matrix": [4, 5], "x": 93, "y": 51, "flags": 4}, + {"matrix": [4, 6], "x": 112, "y": 51, "flags": 4}, + {"matrix": [4, 7], "x": 130, "y": 51, "flags": 4}, + {"matrix": [4, 8], "x": 149, "y": 51, "flags": 4}, + {"matrix": [4, 9], "x": 168, "y": 51, "flags": 4}, + {"matrix": [4, 10], "x": 186, "y": 51, "flags": 4}, + {"matrix": [4, 13], "x": 200, "y": 51, "flags": 4}, + {"matrix": [4, 14], "x": 214, "y": 51, "flags": 4}, + {"matrix": [4, 15], "x": 224, "y": 51, "flags": 4}, + {"matrix": [5, 0], "x": 0, "y": 64, "flags": 4}, + {"matrix": [5, 1], "x": 18, "y": 64, "flags": 4}, + {"matrix": [5, 2], "x": 37, "y": 64, "flags": 4}, + {"matrix": [5, 5], "x": 92, "y": 64, "flags": 4}, + {"matrix": [5, 9], "x": 140, "y": 64, "flags": 4}, + {"matrix": [5, 10], "x": 154, "y": 64, "flags": 4}, + {"matrix": [5, 11], "x": 168, "y": 64, "flags": 4}, + {"matrix": [5, 13], "x": 196, "y": 64, "flags": 4}, + {"matrix": [5, 14], "x": 210, "y": 64, "flags": 4}, + {"matrix": [5, 15], "x": 224, "y": 64, "flags": 4}, + {"x": 0, "y": 0, "flags": 2}, + {"x": 0, "y": 16, "flags": 2}, + {"x": 0, "y": 32, "flags": 2}, + {"x": 0, "y": 48, "flags": 2}, + {"x": 0, "y": 64, "flags": 2}, + {"x": 224, "y": 0, "flags": 2}, + {"x": 224, "y": 16, "flags": 2}, + {"x": 224, "y": 32, "flags": 2}, + {"x": 224, "y": 48, "flags": 2}, + {"x": 224, "y": 64, "flags": 2} + ], "max_brightness": 200, "react_on_keyup": true, "sleep": true diff --git a/keyboards/inland/kb83/keymaps/default/keymap.c b/keyboards/inland/kb83/keymaps/default/keymap.c index df7df65678..ac2aa5e7f7 100644 --- a/keyboards/inland/kb83/keymaps/default/keymap.c +++ b/keyboards/inland/kb83/keymaps/default/keymap.c @@ -71,3 +71,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { }; #endif +#if defined(DIP_SWITCH_MAP_ENABLE) +const uint16_t PROGMEM dip_switch_map[NUM_DIP_SWITCHES][NUM_DIP_STATES] = { + DIP_SWITCH_OFF_ON(DF(WIN_B), DF(MAC_B)) +}; +#endif diff --git a/keyboards/inland/kb83/keymaps/default/rules.mk b/keyboards/inland/kb83/keymaps/default/rules.mk index ee32568148..d64aefdfb8 100644 --- a/keyboards/inland/kb83/keymaps/default/rules.mk +++ b/keyboards/inland/kb83/keymaps/default/rules.mk @@ -1 +1,2 @@ ENCODER_MAP_ENABLE = yes +DIP_SWITCH_MAP_ENABLE = yes diff --git a/keyboards/inland/kb83/readme.md b/keyboards/inland/kb83/readme.md index e6f1d45990..a56b5c5b5a 100644 --- a/keyboards/inland/kb83/readme.md +++ b/keyboards/inland/kb83/readme.md @@ -14,6 +14,11 @@ Flashing example for this keyboard: make inland/kb83:default:flash -**Reset Key**: Hold down the key located at *K01*, which programmed as *Esc* while plugging in the keyboard. - See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Bootmagic reset**: Hold down the top left key, which programmed as *Esc* while plugging in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From 00ca3628267ae85d3eb2ec19a364913c1fca434d Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Sun, 10 Aug 2025 00:27:13 +0200 Subject: [PATCH 097/167] Migrate `helix` common configuration (#25433) * Initial tidying up of top level helix/ directory Align readme.md with template & provide more detailed PCB information Remove unused rules.mk Add common config.h file Update glcdfont.c with formatting and license header * Further migrations after PRs merged Move shared configuration to top level info.json and config.h More descriptive hardware compatibility * Add changelog * Align configuration between PCBs - Migrate beta & pico to use RGB Matrix - Move previously RGB Matrix-dependent OLED code in rev3/rev3.c to top level - Remove reundant OLED code in beta/beta.c - Remove RGBLight references * Update changelog with RGB Matrix configuration --- docs/ChangeLog/20250831/HelixRefactor.md | 37 ++++ keyboards/helix/beta/beta.c | 77 -------- keyboards/helix/beta/keyboard.json | 102 ++++++---- keyboards/helix/common/glcdfont.c | 233 ----------------------- keyboards/helix/{beta => }/config.h | 2 +- keyboards/helix/glcdfont.c | 232 ++++++++++++++++++++++ keyboards/helix/{rev3/rev3.c => helix.c} | 0 keyboards/helix/info.json | 40 ++++ keyboards/helix/pico/keyboard.json | 87 +++++---- keyboards/helix/readme.md | 51 +++-- keyboards/helix/rev3/config.h | 5 - keyboards/helix/rev3/keyboard.json | 27 +-- keyboards/helix/rules.mk | 1 - 13 files changed, 475 insertions(+), 419 deletions(-) create mode 100644 docs/ChangeLog/20250831/HelixRefactor.md delete mode 100644 keyboards/helix/beta/beta.c delete mode 100644 keyboards/helix/common/glcdfont.c rename keyboards/helix/{beta => }/config.h (59%) create mode 100644 keyboards/helix/glcdfont.c rename keyboards/helix/{rev3/rev3.c => helix.c} (100%) create mode 100644 keyboards/helix/info.json delete mode 100644 keyboards/helix/rev3/config.h delete mode 100644 keyboards/helix/rules.mk diff --git a/docs/ChangeLog/20250831/HelixRefactor.md b/docs/ChangeLog/20250831/HelixRefactor.md new file mode 100644 index 0000000000..58136ce06b --- /dev/null +++ b/docs/ChangeLog/20250831/HelixRefactor.md @@ -0,0 +1,37 @@ +# Refactor of `keyboards/helix` + +This series of PRs aims to align this keyboard's configuration with current standards, and also remove unnecessary contents. + +### Refactor `helix/pico` [#25428](https://github.com/qmk/qmk_firmware/pull/25428) + - Removes redundant `back`, `base`, `sc`, `under`, & `qmk_conf` revisions + - Migrates legacy defines and configuration to JSON + - Migrates `default` keymap to JSON + - Fixes RGB configuration to illuminate 25 LEDs per half + - Enables standard features like Bootmagic, extrakey, etc. + - Updates keyboard aliases accordingly + +### Refactor `helix/rev2` [#25429](https://github.com/qmk/qmk_firmware/pull/25429) + - Removes redundant `back`, `base`, `sc`, `under`, & `qmk_conf` revisions + - Renames `rev2` to `beta`, as the only PCB sources in the official Helix GitHub repository are named "[beta](https://github.com/MakotoKurauchi/helix/tree/master/PCB/beta)", this keyboard's name in QMK Firmware was already "beta", and this PCB is sold under the name "[beta](https://shop.yushakobo.jp/products/oss_pcb?variant=39452554231969)" on the Yushakobo store + - Migrates legacy defines and configuration to JSON + - Migrates `default` keymap to JSON + - Fixes RGB configuration to illuminate 32 LEDs per half + - Enables standard features like Bootmagic, extrakey, etc. + - Updates keyboard aliases accordingly + - Tidy's up OLED code + - Adds alternate 4 row layout, as this PCB allows users to snap off the bottom row + +### Refactor `helix/rev3_{4,5}rows` [#25430](https://github.com/qmk/qmk_firmware/pull/25430) + - The `rev3_4rows` and `rev3_5rows` firmwares are identical, except for the extra row users can snap off. The 4 row PCB is not sold anywhere as an individual product, only the [5 row PCB](https://shop.yushakobo.jp/products/2143). Thus, this PR removes the aforementioned two build targets and adds a single `rev3` revision + - Migrates legacy defines and configuration to JSON + - Migrates `default` keymap to JSON + - Removes RGB Light configuration + - Updates keyboard aliases accordingly + - Tidy's up OLED code + - Adds alternate 4 row layout, as this PCB allows users to snap off the bottom row + +### Migrate helix common configuration [#25433](https://github.com/qmk/qmk_firmware/pull/25433) + - Migrates common configuration shared between revisions to the top-level keyboard directory + - Improves `readme.md` to provide more detail regarding PCB revisions + - Removes unnecessary top-level `rules.mk` file and other general tidying + - Migrates `beta` and `pico` revisions to use RGB Matrix, which is more appropriate as these PCBs are fit with per-key RGB LEDs diff --git a/keyboards/helix/beta/beta.c b/keyboards/helix/beta/beta.c deleted file mode 100644 index 8020772b96..0000000000 --- a/keyboards/helix/beta/beta.c +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2020 Yushakobo -// SPDX-License-Identifier: GPL-2.0-or-later -#include "quantum.h" - -#ifdef OLED_ENABLE -void render_status(void) { - static const char os_logo[][2][3] PROGMEM = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}}; - if (!keymap_config.swap_lalt_lgui) { - oled_write_P(os_logo[0][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[0][1], false); - } else { - oled_write_P(os_logo[1][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[1][1], false); - } - - oled_write_P(PSTR(" Layer: "), false); - switch (get_highest_layer(layer_state)) { - case 0: - oled_write_ln_P(PSTR("Default"), false); - break; - case 1: - oled_write_ln_P(PSTR("Lower"), false); - break; - case 2: - oled_write_ln_P(PSTR("Raise"), false); - break; - case 3: - oled_write_ln_P(PSTR("Adjust"), false); - break; - default: - oled_write_ln_P(PSTR("Undefined"), false); - } - oled_write_P(PSTR("\n"), false); - - led_t led_state = host_keyboard_led_state(); - oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); -} - -static void render_logo(void) { - static const char PROGMEM qmk_logo[] = { - // clang-format off - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, - 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 - // clang-format on - }; - oled_write_P(qmk_logo, false); -} - -static void render_rgblight_status(void) { - oled_write_P(PSTR(" LED"), false); - oled_write(get_u8_str(rgblight_get_mode(), ' '), false); - oled_write_char(':', false); - oled_write(get_u8_str(rgblight_get_hue() / RGBLIGHT_HUE_STEP, ' '), false); - oled_write_char(',', false); - oled_write(get_u8_str(rgblight_get_sat() / RGBLIGHT_SAT_STEP, ' '), false); - oled_write_char(',', false); - oled_write(get_u8_str(rgblight_get_val() / RGBLIGHT_VAL_STEP, ' '), false); -} - -bool oled_task_kb(void) { - if (!oled_task_user()) { - return false; - } - if (is_keyboard_master()) { - render_status(); - } else { - render_logo(); - render_rgblight_status(); - } - return false; -} -#endif diff --git a/keyboards/helix/beta/keyboard.json b/keyboards/helix/beta/keyboard.json index 240a0a8869..c4eb48aab1 100644 --- a/keyboards/helix/beta/keyboard.json +++ b/keyboards/helix/beta/keyboard.json @@ -1,48 +1,82 @@ { - "manufacturer": "Yushakobo", "keyboard_name": "Helix Beta", - "maintainer": "MakotoKurauchi", - "development_board": "promicro", - "diode_direction": "COL2ROW", - "features": { - "bootmagic": true, - "extrakey": true, - "mousekey": true, - "oled": true, - "rgblight": true - }, "matrix_pins": { "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"], "rows": ["D4", "C6", "D7", "E6", "B4"] }, - "rgblight": { - "animations": { - "breathing": true, - "christmas": true, - "knight": true, - "rainbow_mood": true, - "rainbow_swirl": true, - "snake": true, - "static_gradient": true - }, - "led_count": 64, - "max_brightness": 45, + "rgb_matrix": { + "layout": [ + {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 16, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 32, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 48, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 64, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 80, "y": 16, "flags": 4}, + {"matrix": [2, 5], "x": 80, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 64, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 48, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 16, "y": 32, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 48, "flags": 4}, + {"matrix": [3, 1], "x": 16, "y": 48, "flags": 4}, + {"matrix": [3, 2], "x": 32, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 48, "y": 48, "flags": 4}, + {"matrix": [3, 4], "x": 64, "y": 48, "flags": 4}, + {"matrix": [3, 5], "x": 80, "y": 48, "flags": 4}, + {"matrix": [3, 6], "x": 96, "y": 48, "flags": 4}, + {"matrix": [4, 6], "x": 96, "y": 64, "flags": 4}, + {"matrix": [4, 5], "x": 80, "y": 64, "flags": 4}, + {"matrix": [4, 4], "x": 64, "y": 64, "flags": 4}, + {"matrix": [4, 3], "x": 48, "y": 64, "flags": 4}, + {"matrix": [4, 2], "x": 32, "y": 64, "flags": 4}, + {"matrix": [4, 1], "x": 16, "y": 64, "flags": 4}, + {"matrix": [4, 0], "x": 0, "y": 64, "flags": 4}, + {"matrix": [5, 5], "x": 144, "y": 0, "flags": 4}, + {"matrix": [5, 4], "x": 160, "y": 0, "flags": 4}, + {"matrix": [5, 3], "x": 176, "y": 0, "flags": 4}, + {"matrix": [5, 2], "x": 192, "y": 0, "flags": 4}, + {"matrix": [5, 1], "x": 208, "y": 0, "flags": 4}, + {"matrix": [5, 0], "x": 224, "y": 0, "flags": 4}, + {"matrix": [6, 0], "x": 224, "y": 16, "flags": 4}, + {"matrix": [6, 1], "x": 208, "y": 16, "flags": 4}, + {"matrix": [6, 2], "x": 192, "y": 16, "flags": 4}, + {"matrix": [6, 3], "x": 176, "y": 16, "flags": 4}, + {"matrix": [6, 4], "x": 160, "y": 16, "flags": 4}, + {"matrix": [6, 5], "x": 144, "y": 16, "flags": 4}, + {"matrix": [7, 5], "x": 144, "y": 32, "flags": 4}, + {"matrix": [7, 4], "x": 160, "y": 32, "flags": 4}, + {"matrix": [7, 3], "x": 176, "y": 32, "flags": 4}, + {"matrix": [7, 2], "x": 192, "y": 32, "flags": 4}, + {"matrix": [7, 1], "x": 208, "y": 32, "flags": 4}, + {"matrix": [7, 0], "x": 224, "y": 32, "flags": 4}, + {"matrix": [8, 0], "x": 224, "y": 48, "flags": 4}, + {"matrix": [8, 1], "x": 208, "y": 48, "flags": 4}, + {"matrix": [8, 2], "x": 192, "y": 48, "flags": 4}, + {"matrix": [8, 3], "x": 176, "y": 48, "flags": 4}, + {"matrix": [8, 4], "x": 160, "y": 48, "flags": 4}, + {"matrix": [8, 5], "x": 144, "y": 48, "flags": 4}, + {"matrix": [8, 6], "x": 128, "y": 48, "flags": 4}, + {"matrix": [9, 6], "x": 128, "y": 64, "flags": 4}, + {"matrix": [9, 5], "x": 144, "y": 64, "flags": 4}, + {"matrix": [9, 4], "x": 160, "y": 64, "flags": 4}, + {"matrix": [9, 3], "x": 176, "y": 64, "flags": 4}, + {"matrix": [9, 2], "x": 192, "y": 64, "flags": 4}, + {"matrix": [9, 1], "x": 208, "y": 64, "flags": 4}, + {"matrix": [9, 0], "x": 224, "y": 64, "flags": 4} + ], "split_count": [32, 32] }, - "split": { - "enabled": true, - "serial": { - "pin": "D2" - } - }, "url": "https://shop.yushakobo.jp/products/oss_pcb?variant=39452554231969", "usb": { "device_version": "0.0.1", - "pid": "0x0000", - "vid": "0x3265" - }, - "ws2812": { - "pin": "D3" + "pid": "0x0000" }, "layouts": { "LAYOUT_4row": { diff --git a/keyboards/helix/common/glcdfont.c b/keyboards/helix/common/glcdfont.c deleted file mode 100644 index 697d58886e..0000000000 --- a/keyboards/helix/common/glcdfont.c +++ /dev/null @@ -1,233 +0,0 @@ -// 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 - -static const unsigned char font[] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, 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, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 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, 0x7E, 0x04, 0x08, 0x00, - 0x10, 0x20, 0x7E, 0x20, 0x10, 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, - 0x00, 0x41, 0x22, 0x14, 0x08, 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, 0x30, 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, - 0x03, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, - 0xFE, 0xF8, 0xF0, 0xC0, 0x20, 0xF8, - 0xFE, 0xFF, 0xFE, 0x79, 0x27, 0x1F, - 0x7F, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, - 0xC0, 0x20, 0xF8, 0xFE, 0xFF, 0xFF, - 0x7F, 0x3F, 0x3F, 0x7F, 0xFF, 0xFE, - 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, - 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xFF, 0x7F, 0x7F, 0x7F, - 0xBF, 0xBF, 0xC0, 0xC0, 0xC0, 0xE0, - 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, - 0xF8, 0x78, 0x78, 0x7C, 0x3C, 0x3C, - 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, - 0xBF, 0xBF, 0xDF, 0xDF, 0xEF, 0xEF, - 0x00, 0x03, 0x07, 0x1F, 0x7F, 0xFF, - 0xFF, 0xFF, 0xFE, 0xF8, 0xE0, 0xC0, - 0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, - 0x7F, 0x1F, 0x07, 0x03, 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, 0xC1, 0xF3, - 0xCF, 0xBF, 0x7F, 0xFF, 0xFF, 0xFC, - 0xFB, 0xE7, 0x81, 0x00, 0x00, 0x00, - 0x00, 0x80, 0xE3, 0xCF, 0x3F, 0xFF, - 0xFF, 0xFF, 0xFC, 0xFB, 0xE7, 0x81, - 0x00, 0x00, 0x00, 0x00, 0x81, 0xE7, - 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x00, - 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF8, 0xF8, 0xFC, 0x7C, 0x7E, - 0x7E, 0x3E, 0xFE, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xF7, 0xF7, 0xF7, 0xFB, - 0xFB, 0x7D, 0x7D, 0x7D, 0xBE, 0xBE, - 0xBE, 0xDF, 0xDF, 0xE0, 0xE0, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0xFC, 0xFC, 0x7C, 0x7E, 0x7E, - 0x3E, 0x3E, 0x1F, 0x1F, 0x1F, 0x0F, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, - 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x81, - 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, - 0x60, 0x70, 0x7C, 0x7F, 0x7F, 0x7F, - 0x7F, 0x1F, 0x06, 0x01, 0x03, 0x0F, - 0x3F, 0x7F, 0x7F, 0x7E, 0x7C, 0x7C, - 0x7E, 0x7F, 0x7F, 0x7F, 0x1F, 0x06, - 0x01, 0x07, 0x0F, 0x3F, 0x7F, 0x7F, - 0x7E, 0x7C, 0x7C, 0x7E, 0x7F, 0x7F, - 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7D, 0x7D, 0x3D, 0x3E, - 0x1E, 0x1F, 0x1F, 0x1F, 0x0F, 0x0F, - 0x07, 0x07, 0x07, 0x03, 0x03, 0x00, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, - 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, - 0x00, 0x40, 0x70, 0x78, 0x7E, 0x7F, - 0x7F, 0x7F, 0x3F, 0x0F, 0x03, 0x01, - 0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0x7F, - 0x7E, 0x78, 0x70, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 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/helix/beta/config.h b/keyboards/helix/config.h similarity index 59% rename from keyboards/helix/beta/config.h rename to keyboards/helix/config.h index dac611de9a..01040ab49f 100644 --- a/keyboards/helix/beta/config.h +++ b/keyboards/helix/config.h @@ -2,4 +2,4 @@ // SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define OLED_FONT_H "keyboards/helix/common/glcdfont.c" +#define OLED_FONT_H "keyboards/helix/glcdfont.c" diff --git a/keyboards/helix/glcdfont.c b/keyboards/helix/glcdfont.c new file mode 100644 index 0000000000..1b81bbcbfe --- /dev/null +++ b/keyboards/helix/glcdfont.c @@ -0,0 +1,232 @@ +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#include "progmem.h" + +static const unsigned char font[] PROGMEM = { + // clang-format off + 0x00, 0x00, 0x00, 0x00, 0x00, 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, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 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, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 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, + 0x00, 0x41, 0x22, 0x14, 0x08, 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, 0x30, 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, + 0x03, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, + 0xFE, 0xF8, 0xF0, 0xC0, 0x20, 0xF8, + 0xFE, 0xFF, 0xFE, 0x79, 0x27, 0x1F, + 0x7F, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, + 0xC0, 0x20, 0xF8, 0xFE, 0xFF, 0xFF, + 0x7F, 0x3F, 0x3F, 0x7F, 0xFF, 0xFE, + 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0x7F, 0x7F, 0x7F, + 0xBF, 0xBF, 0xC0, 0xC0, 0xC0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, + 0xF8, 0x78, 0x78, 0x7C, 0x3C, 0x3C, + 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0xBF, 0xBF, 0xDF, 0xDF, 0xEF, 0xEF, + 0x00, 0x03, 0x07, 0x1F, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFE, 0xF8, 0xE0, 0xC0, + 0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, + 0x7F, 0x1F, 0x07, 0x03, 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, 0xC1, 0xF3, + 0xCF, 0xBF, 0x7F, 0xFF, 0xFF, 0xFC, + 0xFB, 0xE7, 0x81, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xE3, 0xCF, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFC, 0xFB, 0xE7, 0x81, + 0x00, 0x00, 0x00, 0x00, 0x81, 0xE7, + 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0xF8, 0xFC, 0x7C, 0x7E, + 0x7E, 0x3E, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF7, 0xF7, 0xF7, 0xFB, + 0xFB, 0x7D, 0x7D, 0x7D, 0xBE, 0xBE, + 0xBE, 0xDF, 0xDF, 0xE0, 0xE0, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0xFC, 0xFC, 0x7C, 0x7E, 0x7E, + 0x3E, 0x3E, 0x1F, 0x1F, 0x1F, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, + 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x81, + 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, + 0x60, 0x70, 0x7C, 0x7F, 0x7F, 0x7F, + 0x7F, 0x1F, 0x06, 0x01, 0x03, 0x0F, + 0x3F, 0x7F, 0x7F, 0x7E, 0x7C, 0x7C, + 0x7E, 0x7F, 0x7F, 0x7F, 0x1F, 0x06, + 0x01, 0x07, 0x0F, 0x3F, 0x7F, 0x7F, + 0x7E, 0x7C, 0x7C, 0x7E, 0x7F, 0x7F, + 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7D, 0x7D, 0x3D, 0x3E, + 0x1E, 0x1F, 0x1F, 0x1F, 0x0F, 0x0F, + 0x07, 0x07, 0x07, 0x03, 0x03, 0x00, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, + 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x00, 0x40, 0x70, 0x78, 0x7E, 0x7F, + 0x7F, 0x7F, 0x3F, 0x0F, 0x03, 0x01, + 0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0x7F, + 0x7E, 0x78, 0x70, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + // clang-format on +}; diff --git a/keyboards/helix/rev3/rev3.c b/keyboards/helix/helix.c similarity index 100% rename from keyboards/helix/rev3/rev3.c rename to keyboards/helix/helix.c diff --git a/keyboards/helix/info.json b/keyboards/helix/info.json new file mode 100644 index 0000000000..a9ad385b7d --- /dev/null +++ b/keyboards/helix/info.json @@ -0,0 +1,40 @@ +{ + "manufacturer": "Yushakobo", + "maintainer": "MakotoKurauchi", + "build": { + "lto": true + }, + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "oled": true, + "rgb_matrix": true + }, + "rgb_matrix": { + "animations": { + "breathing": true, + "cycle_left_right": true, + "cycle_pinwheel": true, + "multisplash": true, + "solid_splash": true + }, + "driver": "ws2812", + "max_brightness": 150, + "sleep": true + }, + "split": { + "enabled": true, + "serial": { + "pin": "D2" + } + }, + "usb": { + "vid": "0x3265" + }, + "ws2812": { + "pin": "D3" + } +} diff --git a/keyboards/helix/pico/keyboard.json b/keyboards/helix/pico/keyboard.json index 61ea537576..62b25b753b 100644 --- a/keyboards/helix/pico/keyboard.json +++ b/keyboards/helix/pico/keyboard.json @@ -1,48 +1,71 @@ { - "manufacturer": "Yushakobo", "keyboard_name": "Helix Pico", - "maintainer": "MakotoKurauchi", - "development_board": "promicro", - "diode_direction": "COL2ROW", "features": { - "audio": false, - "bootmagic": true, - "extrakey": true, - "mousekey": true, - "rgblight": true + "audio": false }, "matrix_pins": { "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"], "rows": ["D4", "C6", "D7", "E6"] }, - "rgblight": { - "animations": { - "breathing": true, - "christmas": true, - "knight": true, - "rainbow_mood": true, - "rainbow_swirl": true, - "snake": true, - "static_gradient": true - }, - "led_count": 50, - "max_brightness": 45, + "rgb_matrix": { + "layout": [ + {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 21, "flags": 4}, + {"matrix": [1, 1], "x": 16, "y": 21, "flags": 4}, + {"matrix": [1, 2], "x": 32, "y": 21, "flags": 4}, + {"matrix": [1, 3], "x": 48, "y": 21, "flags": 4}, + {"matrix": [1, 4], "x": 64, "y": 21, "flags": 4}, + {"matrix": [1, 5], "x": 80, "y": 21, "flags": 4}, + {"matrix": [2, 5], "x": 80, "y": 42, "flags": 4}, + {"matrix": [2, 4], "x": 64, "y": 42, "flags": 4}, + {"matrix": [2, 3], "x": 48, "y": 42, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 42, "flags": 4}, + {"matrix": [2, 1], "x": 16, "y": 42, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 42, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 64, "flags": 4}, + {"matrix": [3, 1], "x": 16, "y": 64, "flags": 4}, + {"matrix": [3, 2], "x": 32, "y": 64, "flags": 4}, + {"matrix": [3, 3], "x": 48, "y": 64, "flags": 4}, + {"matrix": [3, 4], "x": 64, "y": 64, "flags": 4}, + {"matrix": [3, 5], "x": 80, "y": 64, "flags": 4}, + {"matrix": [3, 6], "x": 96, "y": 64, "flags": 4}, + {"matrix": [4, 5], "x": 144, "y": 0, "flags": 4}, + {"matrix": [4, 4], "x": 160, "y": 0, "flags": 4}, + {"matrix": [4, 3], "x": 176, "y": 0, "flags": 4}, + {"matrix": [4, 2], "x": 192, "y": 0, "flags": 4}, + {"matrix": [4, 1], "x": 208, "y": 0, "flags": 4}, + {"matrix": [4, 0], "x": 224, "y": 0, "flags": 4}, + {"matrix": [5, 0], "x": 224, "y": 21, "flags": 4}, + {"matrix": [5, 1], "x": 208, "y": 21, "flags": 4}, + {"matrix": [5, 2], "x": 192, "y": 21, "flags": 4}, + {"matrix": [5, 3], "x": 176, "y": 21, "flags": 4}, + {"matrix": [5, 4], "x": 160, "y": 21, "flags": 4}, + {"matrix": [5, 5], "x": 144, "y": 21, "flags": 4}, + {"matrix": [6, 5], "x": 144, "y": 42, "flags": 4}, + {"matrix": [6, 4], "x": 160, "y": 42, "flags": 4}, + {"matrix": [6, 3], "x": 176, "y": 42, "flags": 4}, + {"matrix": [6, 2], "x": 192, "y": 42, "flags": 4}, + {"matrix": [6, 1], "x": 208, "y": 42, "flags": 4}, + {"matrix": [6, 0], "x": 224, "y": 42, "flags": 4}, + {"matrix": [7, 0], "x": 224, "y": 64, "flags": 4}, + {"matrix": [7, 1], "x": 208, "y": 64, "flags": 4}, + {"matrix": [7, 2], "x": 192, "y": 64, "flags": 4}, + {"matrix": [7, 3], "x": 176, "y": 64, "flags": 4}, + {"matrix": [7, 4], "x": 160, "y": 64, "flags": 4}, + {"matrix": [7, 5], "x": 144, "y": 64, "flags": 4}, + {"matrix": [7, 6], "x": 128, "y": 64, "flags": 4} + ], "split_count": [25, 25] }, - "split": { - "enabled": true, - "serial": { - "pin": "D2" - } - }, "url": "https://shop.yushakobo.jp/products/helixpico-pcb", "usb": { "device_version": "0.0.2", - "pid": "0x0001", - "vid": "0x3265" - }, - "ws2812": { - "pin": "D3" + "pid": "0x0001" }, "layouts": { "LAYOUT": { diff --git a/keyboards/helix/readme.md b/keyboards/helix/readme.md index 0c190f7626..810e0c1658 100644 --- a/keyboards/helix/readme.md +++ b/keyboards/helix/readme.md @@ -1,16 +1,45 @@ -Helix -=== +# Helix -![Helix](https://i.imgur.com/XBAmynN.jpg) +![image](https://i.imgur.com/11o4MRV.jpeg) -A compact split ortholinear keyboard. +* Keyboard Maintainer: [MakotoKurauchi](https://github.com/MakotoKurauchi) +* Hardware Supported: Helix Pico, Beta, rev3 PCBs w/ Pro Micro compatible development board +* Hardware Availability: [Yushakobo](https://shop.yushakobo.jp), [GitHub](https://github.com/MakotoKurauchi/helix) -Keyboard Maintainer: [Makoto Kurauchi](https://github.com/MakotoKurauchi/) [@pluis9](https://twitter.com/pluis9) [yushakobo](https://github.com/yushakobo) -Hardware Supported: Helix PCB Alpha, Beta, Rev3, Pro Micro -Hardware Availability: [PCB & Case Data](https://github.com/MakotoKurauchi/helix), [Yushakobo Shop](https://yushakobo.jp/shop/), [Little Keyboards](https://littlekeyboards.com/collections/helix) +## Revisions +- [Pico](https://shop.yushakobo.jp/products/helixpico-pcb) + - 4 row PCB + - per-key RGB + - support for a 128x32 OLED display + - footprint for speaker +- [Beta](https://shop.yushakobo.jp/products/oss_pcb?variant=39452554231969) + - 4 or 5 row PCB with snappable bottom row + - per-key RGB + - support for a 128x32 OLED display +- [rev3](https://shop.yushakobo.jp/products/2143) + - 4 or 5 row PCB with snappable bottom row + - per-key RGB + - support for a 128x32 OLED display + - rotary encoders -## How to build - * [Helix how to Customize and Compile](rev2/keymaps/default/readme.md#customize) - * [HelixPico how to Customize and Compile](pico/keymaps/default/readme.md#customize) +Make example for this keyboard (after setting up your build environment): -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. + make helix/pico:default + make helix/beta:default + make helix/rev3:default + +Flashing example for this keyboard: + + make helix/pico:default:flash + make helix/beta:default:flash + make helix/rev3:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix and plug in the keyboard +* **Physical reset button**: Briefly tap or double-tap the button near the TRRS jack +* **Keycode in layout**: Press the key mapped to `QK_BOOT` diff --git a/keyboards/helix/rev3/config.h b/keyboards/helix/rev3/config.h deleted file mode 100644 index dac611de9a..0000000000 --- a/keyboards/helix/rev3/config.h +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2025 QMK -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#define OLED_FONT_H "keyboards/helix/common/glcdfont.c" diff --git a/keyboards/helix/rev3/keyboard.json b/keyboards/helix/rev3/keyboard.json index 7122afdd64..887a5c8024 100644 --- a/keyboards/helix/rev3/keyboard.json +++ b/keyboards/helix/rev3/keyboard.json @@ -1,12 +1,5 @@ { - "manufacturer": "Yushakobo", "keyboard_name": "Helix rev3", - "maintainer": "MakotoKurauchi", - "build": { - "lto": true - }, - "development_board": "promicro", - "diode_direction": "COL2ROW", "dip_switch": { "matrix_grid": [ [0, 6], @@ -21,20 +14,14 @@ ] }, "features": { - "bootmagic": true, "dip_switch": false, - "encoder": true, - "extrakey": true, - "mousekey": true, - "oled": true, - "rgb_matrix": true + "encoder": true }, "matrix_pins": { "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"], "rows": ["D4", "C6", "D7", "E6", "B4"] }, "rgb_matrix": { - "driver": "ws2812", "layout": [ {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4}, {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4}, @@ -101,27 +88,17 @@ {"matrix": [9, 1], "x": 208, "y": 64, "flags": 4}, {"matrix": [9, 0], "x": 224, "y": 64, "flags": 4} ], - "max_brightness": 150, - "sleep": true, "split_count": [32, 32] }, "split": { - "enabled": true, "handedness": { "matrix_grid": ["D7", "B2"] - }, - "serial": { - "pin": "D2" } }, "url": "https://shop.yushakobo.jp/products/2143", "usb": { "device_version": "0.0.1", - "pid": "0x0003", - "vid": "0x3265" - }, - "ws2812": { - "pin": "D3" + "pid": "0x0003" }, "layouts": { "LAYOUT_4row": { diff --git a/keyboards/helix/rules.mk b/keyboards/helix/rules.mk deleted file mode 100644 index a2f233cf91..0000000000 --- a/keyboards/helix/rules.mk +++ /dev/null @@ -1 +0,0 @@ -HELIX_TOP_DIR := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) From 2695344241eabc8da3101a0c2cfecf1f0381226e Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Sun, 10 Aug 2025 11:39:12 +0200 Subject: [PATCH 098/167] Refactor `bastardkb/charybdis/3x6` (#25493) * Refactor bastardkb/charybdis/3x6 - Update keyboard aliases accordingly - Migrate various configuration to data-driven - Use short SPDX license headers - Remove configuration that trends towards user-specific (CRC Table) - Migrate common configuration upwards - Migrate keymap to JSON - Remove likely unneeded v1 revision per #23810 - Remove revisions splinky_2, splinky_3, and stemcell where a converter should be used - Rename v2/elitec -> elitec. Specifically named elitec, as this board requires pin compatibility with an Elite-C (bottom 5 pins) * Correct keyboard name in keymap * Replace unecessarily removed split hand pin configuration * Revert "Replace unecessarily removed split hand pin configuration" This reverts commit 737cb635fa8de29bdf0f4ae54cf51b7a4715c7f3. After second thought, it is not necessary to configure this by default, as any user who wishes to set handedness by pin and is using an Elite-C pin compatible development board will need to manually set the pin anyway, which likely means referencing the readme.md file, which also contains the necessary SPLIT_HAND_PIN_LOW_IS_LEFT configuration. --- data/mappings/keyboard_aliases.hjson | 12 +++ keyboards/bastardkb/charybdis/3x6/3x6.c | 91 ------------------- .../charybdis/3x6/blackpill/config.h | 33 +------ .../charybdis/3x6/blackpill/halconf.h | 21 +---- .../charybdis/3x6/blackpill/keyboard.json | 43 +++------ .../charybdis/3x6/blackpill/mcuconf.h | 28 +----- .../charybdis/3x6/blackpill/readme.md | 3 - .../charybdis/3x6/blackpill/rules.mk | 6 -- keyboards/bastardkb/charybdis/3x6/config.h | 22 ----- .../bastardkb/charybdis/3x6/elitec/config.h | 5 + .../charybdis/3x6/elitec/keyboard.json | 19 ++++ keyboards/bastardkb/charybdis/3x6/info.json | 68 +++++++++++--- .../charybdis/3x6/keymaps/default/keymap.c | 66 -------------- .../charybdis/3x6/keymaps/default/keymap.json | 25 +++++ .../charybdis/3x6/keymaps/default/readme.md | 7 -- keyboards/bastardkb/charybdis/3x6/readme.md | 15 --- keyboards/bastardkb/charybdis/3x6/rules.mk | 1 + .../charybdis/3x6/v1/elitec/config.h | 24 ----- .../charybdis/3x6/v1/elitec/keyboard.json | 41 --------- .../charybdis/3x6/v1/elitec/rules.mk | 4 - .../charybdis/3x6/v2/elitec/config.h | 24 ----- .../charybdis/3x6/v2/elitec/keyboard.json | 35 ------- .../charybdis/3x6/v2/elitec/rules.mk | 4 - .../charybdis/3x6/v2/splinky_2/config.h | 38 -------- .../charybdis/3x6/v2/splinky_2/keyboard.json | 33 ------- .../charybdis/3x6/v2/splinky_2/mcuconf.h | 23 ----- .../charybdis/3x6/v2/splinky_2/readme.md | 5 - .../charybdis/3x6/v2/splinky_2/rules.mk | 5 - .../charybdis/3x6/v2/splinky_3/config.h | 38 -------- .../charybdis/3x6/v2/splinky_3/keyboard.json | 33 ------- .../charybdis/3x6/v2/splinky_3/mcuconf.h | 23 ----- .../charybdis/3x6/v2/splinky_3/readme.md | 5 - .../charybdis/3x6/v2/splinky_3/rules.mk | 5 - .../charybdis/3x6/v2/stemcell/config.h | 52 ----------- .../charybdis/3x6/v2/stemcell/halconf.h | 24 ----- .../charybdis/3x6/v2/stemcell/keyboard.json | 38 -------- .../charybdis/3x6/v2/stemcell/mcuconf.h | 32 ------- .../charybdis/3x6/v2/stemcell/rules.mk | 6 -- 38 files changed, 141 insertions(+), 816 deletions(-) delete mode 100644 keyboards/bastardkb/charybdis/3x6/3x6.c delete mode 100644 keyboards/bastardkb/charybdis/3x6/blackpill/readme.md delete mode 100644 keyboards/bastardkb/charybdis/3x6/blackpill/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/3x6/config.h create mode 100644 keyboards/bastardkb/charybdis/3x6/elitec/config.h create mode 100644 keyboards/bastardkb/charybdis/3x6/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/3x6/keymaps/default/keymap.c create mode 100644 keyboards/bastardkb/charybdis/3x6/keymaps/default/keymap.json delete mode 100644 keyboards/bastardkb/charybdis/3x6/keymaps/default/readme.md delete mode 100644 keyboards/bastardkb/charybdis/3x6/readme.md create mode 100644 keyboards/bastardkb/charybdis/3x6/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/3x6/v1/elitec/config.h delete mode 100644 keyboards/bastardkb/charybdis/3x6/v1/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/3x6/v1/elitec/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/elitec/config.h delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/elitec/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/splinky_2/config.h delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/splinky_2/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/splinky_2/mcuconf.h delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/splinky_2/readme.md delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/splinky_2/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/splinky_3/config.h delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/splinky_3/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/splinky_3/mcuconf.h delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/splinky_3/readme.md delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/splinky_3/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/stemcell/config.h delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/stemcell/halconf.h delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/stemcell/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/stemcell/mcuconf.h delete mode 100644 keyboards/bastardkb/charybdis/3x6/v2/stemcell/rules.mk diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index 73339a2c56..6b1a330bfb 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -80,6 +80,18 @@ "bastardkb/charybdis/3x5/v2/stemcell": { "target": "bastardkb/charybdis/3x5/elitec" }, + "bastardkb/charybdis/3x6/v2/elitec": { + "target": "bastardkb/charybdis/3x6/elitec" + }, + "bastardkb/charybdis/3x6/v2/splinky_2": { + "target": "bastardkb/charybdis/3x6/elitec" + }, + "bastardkb/charybdis/3x6/v2/splinky_3": { + "target": "bastardkb/charybdis/3x6/elitec" + }, + "bastardkb/charybdis/3x6/v2/stemcell": { + "target": "bastardkb/charybdis/3x6/elitec" + }, "bastardkb/dilemma/3x5_2/splinky": { "target": "bastardkb/dilemma/3x5_2/promicro" }, diff --git a/keyboards/bastardkb/charybdis/3x6/3x6.c b/keyboards/bastardkb/charybdis/3x6/3x6.c deleted file mode 100644 index d2c0a39815..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/3x6.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Publicw 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 "charybdis.h" - -// clang-format off -#ifdef RGB_MATRIX_ENABLE -/** - * \brief LEDs index. - * - # 0,0 14 28 42 56 70 84 98 126 140 154 168 182 196 210 224,0 - # 0,0 15 30 45 60 75 90 105 119 134 149 164 179 194 209 224,0 - * ╭────────────────────────╮ ╭────────────────────────╮ - * 0 5 6 11 12 15 36 33 32 27 26 21 - * ├────────────────────────┤ ├────────────────────────┤ - * 1 4 7 10 13 16 37 34 31 28 25 22 - * ├────────────────────────┤ ├────────────────────────┤ - * 2 3 8 9 14 17 38 35 30 29 24 23 - * ╰────────────────────────╯ ╰────────────────────────╯ - * 18 19 20 39 40 XX - * ╰────────────╯ ╰────────────╯ - * - * Note: the LED config simulates 42 LEDs instead of the actual 41 to prevent - * confusion when testing LEDs during assembly when handedness is not set - * correctly. Those fake LEDs are bound to the physical top-left corner. - */ -led_config_t g_led_config = { { - /* Key Matrix to LED index. */ - // Left split. - { 0, 5, 6, 11, 12, 15 }, // Top row - { 1, 4, 7, 10, 13, 16 }, // Middle row - { 2, 3, 8, 9, 14, 17 }, // Bottom row - { NO_LED, 20, NO_LED, 18, 19, NO_LED }, // Thumb cluster - // Right split. - { 21, 26, 27, 32, 33, 36 }, // Top row - { 22, 25, 28, 31, 34, 37 }, // Middle row - { 23, 24, 29, 30, 35, 38 }, // Bottom row - { NO_LED, 41, NO_LED, 39, 40, NO_LED }, // Thumb cluster -}, { - /* LED index to physical position. */ - // Left split. - /* index=0 */ { 0, 0 }, { 0, 21 }, { 0, 42 }, // col 1 (left most) - /* index=3 */ { 15, 42 }, { 15, 21 }, { 15, 0 }, // col 2 - /* index=6 */ { 30, 0 }, { 30, 21 }, { 30, 42 }, - /* index=9 */ { 45, 42 }, { 45, 21 }, { 45, 0 }, - /* index=12 */ { 60, 0 }, { 60, 21 }, { 60, 42 }, - /* index=15 */ { 75, 0 }, { 75, 21 }, { 75, 42 }, - /* index=18 */ { 75, 64 }, { 90, 64 }, { 105, 64 }, // Thumb cluster - // Right split. - /* index=21 */ { 224, 0 }, { 224, 21 }, { 224, 42 }, // col 12 (right most) - /* index=24 */ { 209, 42 }, { 209, 21 }, { 209, 0 }, // col 10 - /* index=27 */ { 194, 0 }, { 194, 21 }, { 194, 42 }, - /* index=30 */ { 179, 42 }, { 179, 21 }, { 179, 0 }, - /* index=33 */ { 164, 0 }, { 164, 21 }, { 164, 42 }, - /* index=36 */ { 149, 0 }, { 149, 21 }, { 149, 42 }, - /* index=39 */ { 119, 64 }, { 134, 64 }, { 0, 0 }, // Thumb cluster -}, { - /* LED index to flag. */ - // Left split. - /* index=0 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 1 - /* index=3 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 2 - /* index=6 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=9 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=12 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=15 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=18 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // Thumb cluster - // Right split. - /* index=21 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 10 - /* index=24 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 9 - /* index=27 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=30 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=33 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=36 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=39 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // Thumb cluster -} }; -#endif -// clang-format on diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/config.h b/keyboards/bastardkb/charybdis/3x6/blackpill/config.h index e1365a109d..bb870669c8 100644 --- a/keyboards/bastardkb/charybdis/3x6/blackpill/config.h +++ b/keyboards/bastardkb/charybdis/3x6/blackpill/config.h @@ -1,26 +1,7 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Publicw License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -/* Handedness. */ -#define SPLIT_HAND_PIN A3 // High -> left, Low -> right. - -/* RGB settings. */ #define WS2812_PWM_DRIVER PWMD2 #define WS2812_PWM_CHANNEL 2 #define WS2812_PWM_PAL_MODE 1 @@ -28,14 +9,6 @@ #define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM1 #define WS2812_PWM_DMA_CHANNEL 3 -/* Serial configuration for split keyboard. */ -#define SERIAL_USART_TX_PIN A9 - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED - -/* SPI config for EEPROM and pmw3360 sensor. */ #define SPI_DRIVER SPID1 #define SPI_SCK_PIN A5 #define SPI_SCK_PAL_MODE 5 @@ -44,9 +17,7 @@ #define SPI_MISO_PIN A6 #define SPI_MISO_PAL_MODE 5 -/* EEPROM config. */ #define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A4 -/* PMW3360 settings. */ #define POINTING_DEVICE_CS_PIN B14 #define PMW33XX_CS_DIVISOR 64 diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/halconf.h b/keyboards/bastardkb/charybdis/3x6/blackpill/halconf.h index 5c5dff98d4..545fc20cb3 100644 --- a/keyboards/bastardkb/charybdis/3x6/blackpill/halconf.h +++ b/keyboards/bastardkb/charybdis/3x6/blackpill/halconf.h @@ -1,21 +1,6 @@ -/** - * Copyright 2020 Nick Brassel (tzarc) - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Nick Brassel (tzarc) +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #define HAL_USE_PWM TRUE diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/keyboard.json b/keyboards/bastardkb/charybdis/3x6/blackpill/keyboard.json index ecefbbeb99..df77023bd6 100644 --- a/keyboards/bastardkb/charybdis/3x6/blackpill/keyboard.json +++ b/keyboards/bastardkb/charybdis/3x6/blackpill/keyboard.json @@ -1,38 +1,23 @@ { - "keyboard_name": "Charybdis Mini (3x6) Blackpill", - "usb": { - "device_version": "1.0.0", - "shared_endpoint": { - "keyboard": true - } - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, + "development_board": "blackpill_f411", "eeprom": { "driver": "spi" }, - "split": { - "enabled": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "ws2812": { - "pin": "A1", - "driver": "pwm" - }, - "build": { - "debounce_type": "asym_eager_defer_pk" - }, "matrix_pins": { "cols": ["B0", "B1", "B10", "B3", "B4", "B5"], "rows": ["A2", "B8", "A8", "B9"] }, - "diode_direction": "ROW2COL", - "development_board": "blackpill_f411" + "split": { + "handedness": { + "pin": "A3" + }, + "serial": { + "driver": "usart", + "pin": "A9" + } + }, + "ws2812": { + "driver": "pwm", + "pin": "A1" + } } diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/mcuconf.h b/keyboards/bastardkb/charybdis/3x6/blackpill/mcuconf.h index e4cde4880b..ca63a57218 100644 --- a/keyboards/bastardkb/charybdis/3x6/blackpill/mcuconf.h +++ b/keyboards/bastardkb/charybdis/3x6/blackpill/mcuconf.h @@ -1,22 +1,7 @@ -/* - * Copyright 2020 Nick Brassel (tzarc) - * Copyright 2021 Stefan Kerkmann (@KarlK90) - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Nick Brassel (tzarc) +// Copyright 2021 Stefan Kerkmann (@KarlK90) +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include_next @@ -30,11 +15,6 @@ #undef STM32_SPI_USE_SPI1 #define STM32_SPI_USE_SPI1 TRUE -#undef STM32_SPI_SPI1_RX_DMA_STREAM -#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0) -#undef STM32_SPI_SPI1_TX_DMA_STREAM -#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3) - #undef STM32_SERIAL_USE_USART1 #define STM32_SERIAL_USE_USART1 TRUE diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/readme.md b/keyboards/bastardkb/charybdis/3x6/blackpill/readme.md deleted file mode 100644 index 6a9907c2ae..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/blackpill/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Charybdis Mini (3x6) BlackPill - -An ergonomic keyboard with integrated trackball, with BlackPill (STM32F411) mod. diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/rules.mk b/keyboards/bastardkb/charybdis/3x6/blackpill/rules.mk deleted file mode 100644 index 4373b9c33d..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/blackpill/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint - -SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/charybdis/3x6/config.h b/keyboards/bastardkb/charybdis/3x6/config.h deleted file mode 100644 index 1c952759a7..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/config.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * Copyright 2021 Charly Delay (@0xcharly) - * - * This 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 - -/* Trackball angle adjustment. */ -#define ROTATIONAL_TRANSFORM_ANGLE -25 diff --git a/keyboards/bastardkb/charybdis/3x6/elitec/config.h b/keyboards/bastardkb/charybdis/3x6/elitec/config.h new file mode 100644 index 0000000000..411ddaf6b9 --- /dev/null +++ b/keyboards/bastardkb/charybdis/3x6/elitec/config.h @@ -0,0 +1,5 @@ +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define POINTING_DEVICE_CS_PIN F0 diff --git a/keyboards/bastardkb/charybdis/3x6/elitec/keyboard.json b/keyboards/bastardkb/charybdis/3x6/elitec/keyboard.json new file mode 100644 index 0000000000..e736d9df98 --- /dev/null +++ b/keyboards/bastardkb/charybdis/3x6/elitec/keyboard.json @@ -0,0 +1,19 @@ +{ + "build": { + "lto": true + }, + "development_board": "elite_c", + "matrix_pins": { + "cols": ["F6", "F5", "B6", "D7", "E6", "B4"], + "rows": ["F7", "C6", "D4", "B5"] + }, + "pin_compatible": "elite_c", + "split": { + "serial": { + "pin": "D2" + } + }, + "ws2812": { + "pin": "D3" + } +} diff --git a/keyboards/bastardkb/charybdis/3x6/info.json b/keyboards/bastardkb/charybdis/3x6/info.json index 3597e72534..5d1ba362f7 100644 --- a/keyboards/bastardkb/charybdis/3x6/info.json +++ b/keyboards/bastardkb/charybdis/3x6/info.json @@ -1,13 +1,64 @@ { - "url": "https://bastardkb.com", - "usb": { - "pid": "0x1834" + "keyboard_name": "Charybdis Mini (3x6)", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": false, + "pointing_device": true, + "rgb_matrix": true }, "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 21, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 42, "flags": 4}, + {"matrix": [2, 1], "x": 15, "y": 42, "flags": 4}, + {"matrix": [1, 1], "x": 15, "y": 21, "flags": 4}, + {"matrix": [0, 1], "x": 15, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 30, "y": 0, "flags": 4}, + {"matrix": [1, 2], "x": 30, "y": 21, "flags": 4}, + {"matrix": [2, 2], "x": 30, "y": 42, "flags": 4}, + {"matrix": [2, 3], "x": 45, "y": 42, "flags": 4}, + {"matrix": [1, 3], "x": 45, "y": 21, "flags": 4}, + {"matrix": [0, 3], "x": 45, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 60, "y": 0, "flags": 4}, + {"matrix": [1, 4], "x": 60, "y": 21, "flags": 4}, + {"matrix": [2, 4], "x": 60, "y": 42, "flags": 4}, + {"matrix": [0, 5], "x": 75, "y": 0, "flags": 4}, + {"matrix": [1, 5], "x": 75, "y": 21, "flags": 4}, + {"matrix": [2, 5], "x": 75, "y": 42, "flags": 4}, + {"matrix": [3, 3], "x": 75, "y": 64, "flags": 4}, + {"matrix": [3, 4], "x": 90, "y": 64, "flags": 4}, + {"matrix": [3, 1], "x": 105, "y": 64, "flags": 4}, + {"matrix": [4, 0], "x": 224, "y": 0, "flags": 4}, + {"matrix": [5, 0], "x": 224, "y": 21, "flags": 4}, + {"matrix": [6, 0], "x": 224, "y": 42, "flags": 4}, + {"matrix": [6, 1], "x": 209, "y": 42, "flags": 4}, + {"matrix": [5, 1], "x": 209, "y": 21, "flags": 4}, + {"matrix": [4, 1], "x": 209, "y": 0, "flags": 4}, + {"matrix": [4, 2], "x": 194, "y": 0, "flags": 4}, + {"matrix": [5, 2], "x": 194, "y": 21, "flags": 4}, + {"matrix": [6, 2], "x": 194, "y": 42, "flags": 4}, + {"matrix": [6, 3], "x": 179, "y": 42, "flags": 4}, + {"matrix": [5, 3], "x": 179, "y": 21, "flags": 4}, + {"matrix": [4, 3], "x": 179, "y": 0, "flags": 4}, + {"matrix": [4, 4], "x": 164, "y": 0, "flags": 4}, + {"matrix": [5, 4], "x": 164, "y": 21, "flags": 4}, + {"matrix": [6, 4], "x": 164, "y": 42, "flags": 4}, + {"matrix": [4, 5], "x": 149, "y": 0, "flags": 4}, + {"matrix": [5, 5], "x": 149, "y": 21, "flags": 4}, + {"matrix": [6, 5], "x": 149, "y": 42, "flags": 4}, + {"matrix": [7, 3], "x": 119, "y": 64, "flags": 4}, + {"matrix": [7, 4], "x": 134, "y": 64, "flags": 4}, + {"matrix": [7, 1], "x": 149, "y": 64, "flags": 4} + ], "split_count": [21, 21] }, - "layout_aliases": { - "LAYOUT_charybdis_3x6": "LAYOUT" + "usb": { + "device_version": "2.0.0", + "pid": "0x1834" }, "layouts": { "LAYOUT": { @@ -18,46 +69,39 @@ {"label": "L03", "matrix": [0, 3], "x": 3, "y": 0}, {"label": "L04", "matrix": [0, 4], "x": 4, "y": 0}, {"label": "L05", "matrix": [0, 5], "x": 5, "y": 0}, - {"label": "R00", "matrix": [4, 5], "x": 11, "y": 0}, {"label": "R01", "matrix": [4, 4], "x": 12, "y": 0}, {"label": "R02", "matrix": [4, 3], "x": 13, "y": 0}, {"label": "R03", "matrix": [4, 2], "x": 14, "y": 0}, {"label": "R04", "matrix": [4, 1], "x": 15, "y": 0}, {"label": "R05", "matrix": [4, 0], "x": 16, "y": 0}, - {"label": "L10", "matrix": [1, 0], "x": 0, "y": 1}, {"label": "L11", "matrix": [1, 1], "x": 1, "y": 1}, {"label": "L12", "matrix": [1, 2], "x": 2, "y": 1}, {"label": "L13", "matrix": [1, 3], "x": 3, "y": 1}, {"label": "L14", "matrix": [1, 4], "x": 4, "y": 1}, {"label": "L15", "matrix": [1, 5], "x": 5, "y": 1}, - {"label": "R10", "matrix": [5, 5], "x": 11, "y": 1}, {"label": "R11", "matrix": [5, 4], "x": 12, "y": 1}, {"label": "R12", "matrix": [5, 3], "x": 13, "y": 1}, {"label": "R13", "matrix": [5, 2], "x": 14, "y": 1}, {"label": "R14", "matrix": [5, 1], "x": 15, "y": 1}, {"label": "R15", "matrix": [5, 0], "x": 16, "y": 1}, - {"label": "L20", "matrix": [2, 0], "x": 0, "y": 2}, {"label": "L21", "matrix": [2, 1], "x": 1, "y": 2}, {"label": "L22", "matrix": [2, 2], "x": 2, "y": 2}, {"label": "L23", "matrix": [2, 3], "x": 3, "y": 2}, {"label": "L24", "matrix": [2, 4], "x": 4, "y": 2}, {"label": "L25", "matrix": [2, 5], "x": 5, "y": 2}, - {"label": "R20", "matrix": [6, 5], "x": 11, "y": 2}, {"label": "R21", "matrix": [6, 4], "x": 12, "y": 2}, {"label": "R22", "matrix": [6, 3], "x": 13, "y": 2}, {"label": "R23", "matrix": [6, 2], "x": 14, "y": 2}, {"label": "R24", "matrix": [6, 1], "x": 15, "y": 2}, {"label": "R25", "matrix": [6, 0], "x": 16, "y": 2}, - {"label": "L33", "matrix": [3, 3], "x": 5, "y": 3}, {"label": "L34", "matrix": [3, 4], "x": 6, "y": 3}, {"label": "L31", "matrix": [3, 1], "x": 7, "y": 3}, - {"label": "R31", "matrix": [7, 1], "x": 9, "y": 3}, {"label": "R33", "matrix": [7, 3], "x": 10, "y": 3} ] diff --git a/keyboards/bastardkb/charybdis/3x6/keymaps/default/keymap.c b/keyboards/bastardkb/charybdis/3x6/keymaps/default/keymap.c deleted file mode 100644 index ba8028104e..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/keymaps/default/keymap.c +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -enum charybdis_keymap_layers { - LAYER_BASE = 0, - LAYER_LOWER, - LAYER_RAISE, -}; - -#define LOWER MO(LAYER_LOWER) -#define RAISE MO(LAYER_RAISE) - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [LAYER_BASE] = LAYOUT( - // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ - KC_LGUI, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RGUI, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RCTL, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - 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_BSPC, KC_SPC, LOWER, RAISE, KC_ENT - // ╰───────────────────────────╯ ╰──────────────────╯ - ), - - [LAYER_LOWER] = LAYOUT( - // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ - XXXXXXX, RM_TOGG, KC_MNXT, KC_MPLY, KC_MPRV, XXXXXXX, KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, XXXXXXX, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - XXXXXXX, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_4, KC_5, KC_6, KC_PMNS, XXXXXXX, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EE_CLR, QK_BOOT, KC_PAST, KC_1, KC_2, KC_3, KC_PSLS, XXXXXXX, - // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ - XXXXXXX, XXXXXXX, _______, XXXXXXX, _______ - // ╰───────────────────────────╯ ╰──────────────────╯ - ), - - [LAYER_RAISE] = LAYOUT( - // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, KC_MUTE, KC_VOLD, XXXXXXX, XXXXXXX, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - XXXXXXX, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, XXXXXXX, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - XXXXXXX, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, QK_BOOT, EE_CLR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ - _______, _______, XXXXXXX, _______, XXXXXXX - // ╰───────────────────────────╯ ╰──────────────────╯ - ), -}; -// clang-format on diff --git a/keyboards/bastardkb/charybdis/3x6/keymaps/default/keymap.json b/keyboards/bastardkb/charybdis/3x6/keymaps/default/keymap.json new file mode 100644 index 0000000000..e87fe18f34 --- /dev/null +++ b/keyboards/bastardkb/charybdis/3x6/keymaps/default/keymap.json @@ -0,0 +1,25 @@ +{ + "keyboard": "bastardkb/charybdis/3x6/elitec", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ESC", + "KC_LGUI", "MO(1)", "KC_SPC", "KC_ENT", "MO(2)" + ], + [ + "_______", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "_______", + "_______", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______" + ], + [ + "QK_BOOT", "_______", "_______", "_______", "_______", "_______", "RM_VALU", "RM_HUEU", "RM_SATU", "RM_NEXT", "RM_TOGG", "_______", + "EE_CLR", "_______", "_______", "_______", "_______", "_______", "RM_VALD", "RM_HUED", "RM_SATD", "RM_PREV", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______" + ] + ] +} diff --git a/keyboards/bastardkb/charybdis/3x6/keymaps/default/readme.md b/keyboards/bastardkb/charybdis/3x6/keymaps/default/readme.md deleted file mode 100644 index 8b407f68a2..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/keymaps/default/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# Charybdis Mini (3x6) default keymap - -> :bulb: Have a look at the [`via` keymap](../via) for a more feature-rich layout. - -The Charydbis Mini (3x6) default keymap is inspired from the original [Dactyl Manuform](../../../../../handwired/dactyl_manuform) default keymap. - -This layout supports RGB matrix. However, due to space constraints on the MCU, only a limited number of effect can be enabled at once. Look at the `config.h` file and enable your favorite effect. diff --git a/keyboards/bastardkb/charybdis/3x6/readme.md b/keyboards/bastardkb/charybdis/3x6/readme.md deleted file mode 100644 index c6385ed8f1..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Charybdis Nano (3x6) - -An ergonomic keyboard with integrated trackball. - -The Charybdis is available in 4x6, 3x6 and 3x5 form factor at [bastardkb.com](https://bastardkb.com). - -## Keymaps - -### [`default`](keymaps/default) - -A simple QWERTY layout with 4 layers. - -### [`via`](keymaps/via) - -A [Miryoku-inspired](https://github.com/manna-harbour/miryoku), feature-rich, keymap with VIA support. diff --git a/keyboards/bastardkb/charybdis/3x6/rules.mk b/keyboards/bastardkb/charybdis/3x6/rules.mk new file mode 100644 index 0000000000..fab9162dc6 --- /dev/null +++ b/keyboards/bastardkb/charybdis/3x6/rules.mk @@ -0,0 +1 @@ +POINTING_DEVICE_DRIVER = pmw3360 diff --git a/keyboards/bastardkb/charybdis/3x6/v1/elitec/config.h b/keyboards/bastardkb/charybdis/3x6/v1/elitec/config.h deleted file mode 100644 index f5c54c58ae..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v1/elitec/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -/* PMW3360 settings. */ -#define POINTING_DEVICE_CS_PIN B0 diff --git a/keyboards/bastardkb/charybdis/3x6/v1/elitec/keyboard.json b/keyboards/bastardkb/charybdis/3x6/v1/elitec/keyboard.json deleted file mode 100644 index cef4eab72f..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v1/elitec/keyboard.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "keyboard_name": "Charybdis Mini (3x6) Elite-C", - "usb": { - "device_version": "1.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "build": { - "lto": true - }, - "ws2812": { - "pin": "D3" - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["D5", "C7", "F0", "D7", "E6", "B4"], - "rows": ["B7", "C6", "D4", "B5"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "D2" - }, - "matrix_pins": { - "right": { - "cols": ["F1", "C7", "B7", "D7", "E6", "B4"], - "rows": ["F0", "C6", "D4", "B5"] - } - } - }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu" -} diff --git a/keyboards/bastardkb/charybdis/3x6/v1/elitec/rules.mk b/keyboards/bastardkb/charybdis/3x6/v1/elitec/rules.mk deleted file mode 100644 index 17dae28bd1..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v1/elitec/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint diff --git a/keyboards/bastardkb/charybdis/3x6/v2/elitec/config.h b/keyboards/bastardkb/charybdis/3x6/v2/elitec/config.h deleted file mode 100644 index 3b91322247..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/elitec/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -/* PMW3360 settings. */ -#define POINTING_DEVICE_CS_PIN F0 diff --git a/keyboards/bastardkb/charybdis/3x6/v2/elitec/keyboard.json b/keyboards/bastardkb/charybdis/3x6/v2/elitec/keyboard.json deleted file mode 100644 index fdfd2c38f9..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/elitec/keyboard.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "keyboard_name": "Charybdis Mini (3x6) Elite-C", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "build": { - "lto": true - }, - "ws2812": { - "pin": "D3" - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["F6", "F5", "B6", "D7", "E6", "B4"], - "rows": ["F7", "C6", "D4", "B5"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "D2" - } - }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu" -} diff --git a/keyboards/bastardkb/charybdis/3x6/v2/elitec/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/elitec/rules.mk deleted file mode 100644 index 17dae28bd1..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/elitec/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/config.h b/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/config.h deleted file mode 100644 index e6e2a4f216..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define SPLIT_HAND_PIN GP13 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* SPI & PMW3360 settings. */ -#define SPI_DRIVER SPID0 -#define SPI_SCK_PIN GP18 -#define SPI_MISO_PIN GP20 -#define SPI_MOSI_PIN GP19 -#define POINTING_DEVICE_CS_PIN GP14 - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/keyboard.json b/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/keyboard.json deleted file mode 100644 index 650bf46481..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/keyboard.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "keyboard_name": "Charybdis Mini (3x6) Splinky", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["GP27", "GP28", "GP15", "GP6", "GP7", "GP8"], - "rows": ["GP26", "GP5", "GP4", "GP9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "ws2812": { - "pin": "GP0", - "driver": "vendor" - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/mcuconf.h b/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/mcuconf.h deleted file mode 100644 index 6aaf31428c..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/mcuconf.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 RP_SPI_USE_SPI0 -#define RP_SPI_USE_SPI0 TRUE diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/readme.md b/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/readme.md deleted file mode 100644 index 662eb5825c..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Splinky controller - -The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040. - -See [plut0nium/0xB2](https://github.com/plut0nium/0xB2/#releases) to figure out the right version for you (v2 or v3). diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/rules.mk deleted file mode 100644 index db29cb6789..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 - -SERIAL_DRIVER = vendor diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/config.h b/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/config.h deleted file mode 100644 index ee7745d41e..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define SPLIT_HAND_PIN GP15 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* SPI & PMW3360 settings. */ -#define SPI_DRIVER SPID0 -#define SPI_SCK_PIN GP22 -#define SPI_MISO_PIN GP20 -#define SPI_MOSI_PIN GP23 -#define POINTING_DEVICE_CS_PIN GP16 - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/keyboard.json b/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/keyboard.json deleted file mode 100644 index b2a4890f56..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/keyboard.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "keyboard_name": "Charybdis Mini (3x6) Splinky", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["GP27", "GP28", "GP21", "GP6", "GP7", "GP8"], - "rows": ["GP26", "GP5", "GP4", "GP9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "ws2812": { - "pin": "GP0", - "driver": "vendor" - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/mcuconf.h b/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/mcuconf.h deleted file mode 100644 index 6aaf31428c..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/mcuconf.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 RP_SPI_USE_SPI0 -#define RP_SPI_USE_SPI0 TRUE diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/readme.md b/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/readme.md deleted file mode 100644 index 662eb5825c..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Splinky controller - -The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040. - -See [plut0nium/0xB2](https://github.com/plut0nium/0xB2/#releases) to figure out the right version for you (v2 or v3). diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/rules.mk deleted file mode 100644 index db29cb6789..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 - -SERIAL_DRIVER = vendor diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/config.h b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/config.h deleted file mode 100644 index 3efb323302..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/config.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define A0 PAL_LINE(GPIOA, 0) -// #define SPLIT_HAND_PIN A0 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* RGB settings. */ -#define WS2812_PWM_DRIVER PWMD2 -#define WS2812_PWM_CHANNEL 4 -#define WS2812_PWM_PAL_MODE 1 -#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM7 -#define WS2812_PWM_DMA_CHANNEL 3 - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED - -/* SPI config for pmw3360 sensor. */ -#define SPI_DRIVER SPID1 -#define SPI_SCK_PIN A5 -#define SPI_SCK_PAL_MODE 5 -#define SPI_MOSI_PIN A7 -#define SPI_MOSI_PAL_MODE 5 -#define SPI_MISO_PIN A6 -#define SPI_MISO_PAL_MODE 5 - -/* PMW3360 settings. */ -#define POINTING_DEVICE_CS_PIN A1 -#define PMW3360_CS_MODE 3 -#define PMW3360_CS_DIVISOR 64 diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/halconf.h b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/halconf.h deleted file mode 100644 index 8141e0cf4b..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/halconf.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define HAL_USE_PWM TRUE -#define HAL_USE_SERIAL TRUE -#define HAL_USE_SPI TRUE - -#include_next diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/keyboard.json b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/keyboard.json deleted file mode 100644 index a405395438..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/keyboard.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "keyboard_name": "Charybdis Mini (3x6) STeMCell", - "usb": { - "device_version": "2.0.0", - "shared_endpoint": { - "keyboard": true - } - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "ws2812": { - "pin": "A2", - "driver": "pwm" - }, - "build": { - "debounce_type": "asym_eager_defer_pk" - }, - "matrix_pins": { - "cols": ["B1", "B2", "A4", "B4", "B5", "B8"], - "rows": ["B0", "B3", "A15", "B9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "A3" - } - }, - "development_board": "stemcell" -} diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/mcuconf.h b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/mcuconf.h deleted file mode 100644 index 1a3c4433db..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/mcuconf.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include_next - -#undef STM32_SPI_USE_SPI1 -#define STM32_SPI_USE_SPI1 TRUE - -#undef STM32_SERIAL_USE_USART1 -#define STM32_SERIAL_USE_USART1 FALSE - -#undef STM32_PWM_USE_TIM2 -#define STM32_PWM_USE_TIM2 TRUE - -#undef STM32_ST_USE_TIMER -#define STM32_ST_USE_TIMER 5 diff --git a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/stemcell/rules.mk deleted file mode 100644 index 4373b9c33d..0000000000 --- a/keyboards/bastardkb/charybdis/3x6/v2/stemcell/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint - -SERIAL_DRIVER = usart From a3ecbc53f60e2e262a0df5e34a89ca6eeb17dd48 Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Sun, 10 Aug 2025 11:44:49 +0200 Subject: [PATCH 099/167] Refactor `bastardkb/charybdis/4x6` (#25494) * Refactor bastardkb/charybdis/4x6 - Update keyboard aliases accordingly - Migrate various configuration to data-driven - Use short SPDX license headers - Remove configuration that trends towards user-specific (CRC Table) - Migrate common configuration upwards - Migrate keymap to JSON - Remove likely unneeded v1 revision per #23811 - Remove revisions splinky_2, splinky_3, and stemcell where a converter should be used - Rename v2/elitec -> elitec. Specifically named elitec, as this board requires pin compatibility with an Elite-C (bottom 5 pins) * Add aliases * Replace unecessarily removed split hand pin configuration * Revert "Replace unecessarily removed split hand pin configuration" This reverts commit 0b98d1bc140a4b18c16d2b524cc8731f016372b1. After second thought, it is not necessary to configure this by default, as any user who wishes to set handedness by pin and is using an Elite-C pin compatible development board will need to manually set the pin anyway, which likely means referencing the readme.md file, which also contains the necessary SPLIT_HAND_PIN_LOW_IS_LEFT configuration. --- data/mappings/keyboard_aliases.hjson | 12 +++ keyboards/bastardkb/charybdis/4x6/4x6.c | 100 ------------------ .../charybdis/4x6/blackpill/config.h | 37 +------ .../charybdis/4x6/blackpill/halconf.h | 21 +--- .../charybdis/4x6/blackpill/keyboard.json | 43 +++----- .../charybdis/4x6/blackpill/mcuconf.h | 28 +---- .../charybdis/4x6/blackpill/readme.md | 3 - .../charybdis/4x6/blackpill/rules.mk | 6 -- keyboards/bastardkb/charybdis/4x6/config.h | 22 ---- .../bastardkb/charybdis/4x6/elitec/config.h | 5 + .../charybdis/4x6/elitec/keyboard.json | 19 ++++ keyboards/bastardkb/charybdis/4x6/info.json | 90 ++++++++++++---- .../charybdis/4x6/keymaps/default/keymap.c | 75 ------------- .../charybdis/4x6/keymaps/default/keymap.json | 31 ++++++ .../charybdis/4x6/keymaps/default/readme.md | 7 -- keyboards/bastardkb/charybdis/4x6/readme.md | 15 --- keyboards/bastardkb/charybdis/4x6/rules.mk | 1 + .../charybdis/4x6/v1/elitec/config.h | 25 ----- .../charybdis/4x6/v1/elitec/keyboard.json | 41 ------- .../charybdis/4x6/v1/elitec/rules.mk | 4 - .../charybdis/4x6/v2/elitec/config.h | 24 ----- .../charybdis/4x6/v2/elitec/keyboard.json | 35 ------ .../charybdis/4x6/v2/elitec/rules.mk | 4 - .../charybdis/4x6/v2/splinky_2/config.h | 38 ------- .../charybdis/4x6/v2/splinky_2/keyboard.json | 33 ------ .../charybdis/4x6/v2/splinky_2/mcuconf.h | 23 ---- .../charybdis/4x6/v2/splinky_2/readme.md | 5 - .../charybdis/4x6/v2/splinky_2/rules.mk | 5 - .../charybdis/4x6/v2/splinky_3/config.h | 38 ------- .../charybdis/4x6/v2/splinky_3/keyboard.json | 33 ------ .../charybdis/4x6/v2/splinky_3/mcuconf.h | 23 ---- .../charybdis/4x6/v2/splinky_3/readme.md | 5 - .../charybdis/4x6/v2/splinky_3/rules.mk | 5 - .../charybdis/4x6/v2/stemcell/config.h | 52 --------- .../charybdis/4x6/v2/stemcell/halconf.h | 24 ----- .../charybdis/4x6/v2/stemcell/keyboard.json | 38 ------- .../charybdis/4x6/v2/stemcell/mcuconf.h | 32 ------ .../charybdis/4x6/v2/stemcell/rules.mk | 6 -- 38 files changed, 165 insertions(+), 843 deletions(-) delete mode 100644 keyboards/bastardkb/charybdis/4x6/4x6.c delete mode 100644 keyboards/bastardkb/charybdis/4x6/blackpill/readme.md delete mode 100644 keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/4x6/config.h create mode 100644 keyboards/bastardkb/charybdis/4x6/elitec/config.h create mode 100644 keyboards/bastardkb/charybdis/4x6/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c create mode 100644 keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.json delete mode 100644 keyboards/bastardkb/charybdis/4x6/keymaps/default/readme.md delete mode 100644 keyboards/bastardkb/charybdis/4x6/readme.md create mode 100644 keyboards/bastardkb/charybdis/4x6/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h delete mode 100644 keyboards/bastardkb/charybdis/4x6/v1/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/4x6/v1/elitec/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/elitec/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/elitec/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/splinky_2/config.h delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/splinky_2/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/splinky_2/mcuconf.h delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/splinky_2/readme.md delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/splinky_2/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/splinky_3/config.h delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/splinky_3/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/splinky_3/mcuconf.h delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/splinky_3/readme.md delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/splinky_3/rules.mk delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/stemcell/config.h delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/stemcell/halconf.h delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/stemcell/keyboard.json delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/stemcell/mcuconf.h delete mode 100644 keyboards/bastardkb/charybdis/4x6/v2/stemcell/rules.mk diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index 6b1a330bfb..cd5ce6e9ab 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -92,6 +92,18 @@ "bastardkb/charybdis/3x6/v2/stemcell": { "target": "bastardkb/charybdis/3x6/elitec" }, + "bastardkb/charybdis/4x6/v2/elitec": { + "target": "bastardkb/charybdis/4x6/elitec" + }, + "bastardkb/charybdis/4x6/v2/splinky_2": { + "target": "bastardkb/charybdis/4x6/elitec" + }, + "bastardkb/charybdis/4x6/v2/splinky_3": { + "target": "bastardkb/charybdis/4x6/elitec" + }, + "bastardkb/charybdis/4x6/v2/stemcell": { + "target": "bastardkb/charybdis/4x6/elitec" + }, "bastardkb/dilemma/3x5_2/splinky": { "target": "bastardkb/dilemma/3x5_2/promicro" }, diff --git a/keyboards/bastardkb/charybdis/4x6/4x6.c b/keyboards/bastardkb/charybdis/4x6/4x6.c deleted file mode 100644 index ff1bbea470..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/4x6.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2020 Christopher Courtney (@drashna) - * Copyright 2021 Quentin LEBASTARD - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Publicw 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 "charybdis.h" - -// clang-format off -#ifdef RGB_MATRIX_ENABLE -/** - * \brief LEDs index. - * - * ╭────────────────────────╮ ╭────────────────────────╮ - * 0 7 8 15 16 20 49 45 44 37 36 29 - * ├────────────────────────┤ ├────────────────────────┤ - * 1 6 9 14 17 21 50 46 43 38 35 30 - * ├────────────────────────┤ ├────────────────────────┤ - * 2 5 10 13 18 22 51 47 42 39 34 31 - * ├────────────────────────┤ ├────────────────────────┤ - * 3 4 11 12 19 23 52 48 41 40 33 32 - * ╰────────────────────────╯ ╰────────────────────────╯ - * 26 27 28 53 54 XX - * 25 24 55 XX - * ╰────────────╯ ╰────────────╯ - * - * Note: the LED config simulates 58 LEDs instead of the actual 56 to prevent - * confusion when testing LEDs during assembly when handedness is not set - * correctly. Those fake LEDs are bound to the physical bottom-left corner. - */ -led_config_t g_led_config = { { - /* Key Matrix to LED index. */ - // Left split. - { 0, 7, 8, 15, 16, 20 }, // Num row - { 1, 6, 9, 14, 17, 21 }, // Top row - { 2, 5, 10, 13, 18, 22 }, // Middle row - { 3, 4, 11, 12, 19, 23 }, // Bottom row - { NO_LED, 28, 24, 26, 27, 25 }, // Thumb cluster - // Right split. - { 29, 36, 37, 44, 45, 49 }, // Num row - { 30, 35, 38, 43, 46, 50 }, // Top row - { 31, 34, 39, 42, 47, 51 }, // Middle row - { 32, 33, 40, 41, 48, 52 }, // Bottom row - { NO_LED, 53, 55, 54, NO_LED, NO_LED }, // Thumb cluster -}, { - /* LED index to physical position. */ - // Left split. - /* index=0 */ { 0, 0 }, { 0, 12 }, { 0, 24 }, { 0, 36 }, // col 1 (left most) - /* index=4 */ { 16, 36 }, { 16, 24 }, { 16, 12 }, { 16, 0 }, // col 2 - /* index=8 */ { 32, 0 }, { 32, 12 }, { 32, 24 }, { 32, 36 }, - /* index=12 */ { 48, 36 }, { 48, 24 }, { 48, 12 }, { 48, 0 }, - /* index=16 */ { 64, 0 }, { 64, 12 }, { 64, 24 }, { 64, 36 }, - /* index=20 */ { 80, 0 }, { 80, 12 }, { 80, 24 }, { 80, 36 }, - /* index=24 */ { 112, 64 }, { 96, 64 }, { 80, 52 }, - /* index=27 */ { 96, 52 }, { 112, 52 }, - // Right split. - /* index=29 */ { 224, 0 }, { 224, 12 }, { 224, 24 }, { 224, 36 }, // col 12 (right most) - /* index=33 */ { 208, 36 }, { 208, 24 }, { 208, 12 }, { 208, 0 }, // col 11 - /* index=37 */ { 192, 0 }, { 192, 12 }, { 192, 24 }, { 192, 36 }, - /* index=41 */ { 176, 36 }, { 176, 24 }, { 176, 12 }, { 176, 0 }, - /* index=45 */ { 160, 0 }, { 160, 12 }, { 160, 24 }, { 160, 36 }, - /* index=49 */ { 144, 0 }, { 144, 12 }, { 144, 24 }, { 144, 36 }, - /* index=53 */ { 112, 52 }, { 128, 64 }, { 112, 64 }, - /* index=56 */ { 0, 0 }, { 0, 0 }, -}, { - /* LED index to flag. */ - // Left split. - /* index=0 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 1 - /* index=4 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 2 - /* index=8 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=12 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=16 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=20 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=24 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster top - /* index=27 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster bottom - // Right split. - /* index=29 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 12 - /* index=33 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 11 - /* index=37 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=41 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=45 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=49 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, - /* index=53 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // Thumb cluster - /* index=55 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster fakes -} }; -#endif -// clang-format on diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/config.h b/keyboards/bastardkb/charybdis/4x6/blackpill/config.h index bd1e0fe31e..9c01986583 100644 --- a/keyboards/bastardkb/charybdis/4x6/blackpill/config.h +++ b/keyboards/bastardkb/charybdis/4x6/blackpill/config.h @@ -1,28 +1,9 @@ -/* - * Copyright 2020 Christopher Courtney (@drashna) - * Copyright 2021 Stefan Kerkmann (@KarlK90) - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Publicw License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Christopher Courtney (@drashna) +// Copyright 2021 Stefan Kerkmann (@KarlK90) +// Copyright 2021 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -/* Handedness. */ -#define SPLIT_HAND_PIN A3 // High -> left, Low -> right. - -/* RGB settings. */ #define WS2812_PWM_DRIVER PWMD2 #define WS2812_PWM_CHANNEL 2 #define WS2812_PWM_PAL_MODE 1 @@ -30,14 +11,6 @@ #define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM1 #define WS2812_PWM_DMA_CHANNEL 3 -/* Serial configuration for split keyboard. */ -#define SERIAL_USART_TX_PIN A9 - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED - -/* SPI config for EEPROM and pmw3360 sensor. */ #define SPI_DRIVER SPID1 #define SPI_SCK_PIN A5 #define SPI_SCK_PAL_MODE 5 @@ -46,9 +19,7 @@ #define SPI_MISO_PIN A6 #define SPI_MISO_PAL_MODE 5 -/* EEPROM config. */ #define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A4 -/* PMW3360 settings. */ #define POINTING_DEVICE_CS_PIN B14 #define PMW33XX_CS_DIVISOR 64 diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h b/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h index 300b0eeaed..6876cc3e00 100644 --- a/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h +++ b/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h @@ -1,21 +1,6 @@ -/** - * Copyright 2020 Nick Brassel (tzarc) - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Nick Brassel (tzarc) +// Copyright 2021 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #define HAL_USE_PWM TRUE diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/keyboard.json b/keyboards/bastardkb/charybdis/4x6/blackpill/keyboard.json index b55dc29445..4bef461b6b 100644 --- a/keyboards/bastardkb/charybdis/4x6/blackpill/keyboard.json +++ b/keyboards/bastardkb/charybdis/4x6/blackpill/keyboard.json @@ -1,38 +1,23 @@ { - "keyboard_name": "Charybdis (4x6) Blackpill", - "usb": { - "device_version": "1.0.0", - "shared_endpoint": { - "keyboard": true - } - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, + "development_board": "blackpill_f411", "eeprom": { "driver": "spi" }, - "split": { - "enabled": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "ws2812": { - "pin": "A1", - "driver": "pwm" - }, - "build": { - "debounce_type": "asym_eager_defer_pk" - }, "matrix_pins": { "cols": ["B0", "B1", "B10", "B3", "B4", "B5"], "rows": ["B15", "A2", "B8", "A8", "B9"] }, - "diode_direction": "ROW2COL", - "development_board": "blackpill_f411" + "split": { + "handedness": { + "pin": "A3" + }, + "serial": { + "driver": "usart", + "pin": "A9" + } + }, + "ws2812": { + "driver": "pwm", + "pin": "A1" + } } diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h index 46b3b42f8b..be641fb899 100644 --- a/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h +++ b/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h @@ -1,22 +1,7 @@ -/* - * Copyright 2020 Nick Brassel (tzarc) - * Copyright 2021 Stefan Kerkmann (@KarlK90) - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - +// Copyright 2020 Nick Brassel (tzarc) +// Copyright 2021 Stefan Kerkmann (@KarlK90) +// Copyright 2021 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include_next @@ -30,11 +15,6 @@ #undef STM32_SPI_USE_SPI1 #define STM32_SPI_USE_SPI1 TRUE -#undef STM32_SPI_SPI1_RX_DMA_STREAM -#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0) -#undef STM32_SPI_SPI1_TX_DMA_STREAM -#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3) - #undef STM32_SERIAL_USE_USART1 #define STM32_SERIAL_USE_USART1 TRUE diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/readme.md b/keyboards/bastardkb/charybdis/4x6/blackpill/readme.md deleted file mode 100644 index bbae15bb85..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/blackpill/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Charybdis (4x6) BlackPill - -An ergonomic keyboard with integrated trackball, with BlackPill (STM32F411) mod. diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk b/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk deleted file mode 100644 index 3caafdef92..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported. - -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint - -SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/charybdis/4x6/config.h b/keyboards/bastardkb/charybdis/4x6/config.h deleted file mode 100644 index 1c952759a7..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/config.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * Copyright 2021 Charly Delay (@0xcharly) - * - * This 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 - -/* Trackball angle adjustment. */ -#define ROTATIONAL_TRANSFORM_ANGLE -25 diff --git a/keyboards/bastardkb/charybdis/4x6/elitec/config.h b/keyboards/bastardkb/charybdis/4x6/elitec/config.h new file mode 100644 index 0000000000..411ddaf6b9 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/elitec/config.h @@ -0,0 +1,5 @@ +// Copyright 2022 Charly Delay (@0xcharly) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define POINTING_DEVICE_CS_PIN F0 diff --git a/keyboards/bastardkb/charybdis/4x6/elitec/keyboard.json b/keyboards/bastardkb/charybdis/4x6/elitec/keyboard.json new file mode 100644 index 0000000000..839598e85e --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/elitec/keyboard.json @@ -0,0 +1,19 @@ +{ + "build": { + "lto": true + }, + "development_board": "elite_c", + "matrix_pins": { + "cols": ["F6", "F5", "B6", "D7", "E6", "B4"], + "rows": ["F4", "F7", "C6", "D4", "B5"] + }, + "pin_compatible": "elite_c", + "split": { + "serial": { + "pin": "D2" + } + }, + "ws2812": { + "pin": "D3" + } +} diff --git a/keyboards/bastardkb/charybdis/4x6/info.json b/keyboards/bastardkb/charybdis/4x6/info.json index 54bb564306..17d68900df 100644 --- a/keyboards/bastardkb/charybdis/4x6/info.json +++ b/keyboards/bastardkb/charybdis/4x6/info.json @@ -1,15 +1,80 @@ { - "manufacturer": "Bastard Keyboards", - "url": "https://bastardkb.com/charybdis", - "usb": { - "pid": "0x1833", - "vid": "0xA8F8" + "keyboard_name": "Charybdis (4x6)", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": false, + "pointing_device": true, + "rgb_matrix": true }, "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 12, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 24, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 36, "flags": 4}, + {"matrix": [3, 1], "x": 16, "y": 36, "flags": 4}, + {"matrix": [2, 1], "x": 16, "y": 24, "flags": 4}, + {"matrix": [1, 1], "x": 16, "y": 12, "flags": 4}, + {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4}, + {"matrix": [1, 2], "x": 32, "y": 12, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 24, "flags": 4}, + {"matrix": [3, 2], "x": 32, "y": 36, "flags": 4}, + {"matrix": [3, 3], "x": 48, "y": 36, "flags": 4}, + {"matrix": [2, 3], "x": 48, "y": 24, "flags": 4}, + {"matrix": [1, 3], "x": 48, "y": 12, "flags": 4}, + {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4}, + {"matrix": [1, 4], "x": 64, "y": 12, "flags": 4}, + {"matrix": [2, 4], "x": 64, "y": 24, "flags": 4}, + {"matrix": [3, 4], "x": 64, "y": 36, "flags": 4}, + {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4}, + {"matrix": [1, 5], "x": 80, "y": 12, "flags": 4}, + {"matrix": [2, 5], "x": 80, "y": 24, "flags": 4}, + {"matrix": [3, 5], "x": 80, "y": 36, "flags": 4}, + {"matrix": [4, 2], "x": 112, "y": 64, "flags": 1}, + {"matrix": [4, 5], "x": 96, "y": 64, "flags": 1}, + {"matrix": [4, 3], "x": 80, "y": 52, "flags": 1}, + {"matrix": [4, 4], "x": 96, "y": 52, "flags": 1}, + {"matrix": [4, 1], "x": 112, "y": 52, "flags": 1}, + {"matrix": [5, 0], "x": 224, "y": 0, "flags": 4}, + {"matrix": [6, 0], "x": 224, "y": 12, "flags": 4}, + {"matrix": [7, 0], "x": 224, "y": 24, "flags": 4}, + {"matrix": [8, 0], "x": 224, "y": 36, "flags": 4}, + {"matrix": [8, 1], "x": 208, "y": 36, "flags": 4}, + {"matrix": [7, 1], "x": 208, "y": 24, "flags": 4}, + {"matrix": [6, 1], "x": 208, "y": 12, "flags": 4}, + {"matrix": [5, 1], "x": 208, "y": 0, "flags": 4}, + {"matrix": [5, 2], "x": 192, "y": 0, "flags": 4}, + {"matrix": [6, 2], "x": 192, "y": 12, "flags": 4}, + {"matrix": [7, 2], "x": 192, "y": 24, "flags": 4}, + {"matrix": [8, 2], "x": 192, "y": 36, "flags": 4}, + {"matrix": [8, 3], "x": 176, "y": 36, "flags": 4}, + {"matrix": [7, 3], "x": 176, "y": 24, "flags": 4}, + {"matrix": [6, 3], "x": 176, "y": 12, "flags": 4}, + {"matrix": [5, 3], "x": 176, "y": 0, "flags": 4}, + {"matrix": [5, 4], "x": 160, "y": 0, "flags": 4}, + {"matrix": [6, 4], "x": 160, "y": 12, "flags": 4}, + {"matrix": [7, 4], "x": 160, "y": 24, "flags": 4}, + {"matrix": [8, 4], "x": 160, "y": 36, "flags": 4}, + {"matrix": [5, 5], "x": 144, "y": 0, "flags": 4}, + {"matrix": [6, 5], "x": 144, "y": 12, "flags": 4}, + {"matrix": [7, 5], "x": 144, "y": 24, "flags": 4}, + {"matrix": [8, 5], "x": 144, "y": 36, "flags": 4}, + {"matrix": [9, 1], "x": 112, "y": 52, "flags": 4}, + {"matrix": [9, 3], "x": 128, "y": 64, "flags": 4}, + {"matrix": [9, 2], "x": 112, "y": 64, "flags": 4}, + {"x": 128, "y": 52, "flags": 1}, + {"x": 144, "y": 52, "flags": 1} + ], "split_count": [29, 29] }, - "layout_aliases": { - "LAYOUT_charybdis_4x6": "LAYOUT" + "usb": { + "device_version": "2.0.0", + "pid": "0x1833" }, "layouts": { "LAYOUT": { @@ -20,66 +85,55 @@ {"matrix": [0, 3], "x": 3, "y": 0}, {"matrix": [0, 4], "x": 4, "y": 0}, {"matrix": [0, 5], "x": 5, "y": 0}, - {"matrix": [5, 5], "x": 11, "y": 0}, {"matrix": [5, 4], "x": 12, "y": 0}, {"matrix": [5, 3], "x": 13, "y": 0}, {"matrix": [5, 2], "x": 14, "y": 0}, {"matrix": [5, 1], "x": 15, "y": 0}, {"matrix": [5, 0], "x": 16, "y": 0}, - {"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1}, {"matrix": [1, 2], "x": 2, "y": 1}, {"matrix": [1, 3], "x": 3, "y": 1}, {"matrix": [1, 4], "x": 4, "y": 1}, {"matrix": [1, 5], "x": 5, "y": 1}, - {"matrix": [6, 5], "x": 11, "y": 1}, {"matrix": [6, 4], "x": 12, "y": 1}, {"matrix": [6, 3], "x": 13, "y": 1}, {"matrix": [6, 2], "x": 14, "y": 1}, {"matrix": [6, 1], "x": 15, "y": 1}, {"matrix": [6, 0], "x": 16, "y": 1}, - {"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, {"matrix": [2, 2], "x": 2, "y": 2}, {"matrix": [2, 3], "x": 3, "y": 2}, {"matrix": [2, 4], "x": 4, "y": 2}, {"matrix": [2, 5], "x": 5, "y": 2}, - {"matrix": [7, 5], "x": 11, "y": 2}, {"matrix": [7, 4], "x": 12, "y": 2}, {"matrix": [7, 3], "x": 13, "y": 2}, {"matrix": [7, 2], "x": 14, "y": 2}, {"matrix": [7, 1], "x": 15, "y": 2}, {"matrix": [7, 0], "x": 16, "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}, {"matrix": [3, 4], "x": 4, "y": 3}, {"matrix": [3, 5], "x": 5, "y": 3}, - {"matrix": [8, 5], "x": 11, "y": 3}, {"matrix": [8, 4], "x": 12, "y": 3}, {"matrix": [8, 3], "x": 13, "y": 3}, {"matrix": [8, 2], "x": 14, "y": 3}, {"matrix": [8, 1], "x": 15, "y": 3}, {"matrix": [8, 0], "x": 16, "y": 3}, - {"matrix": [4, 3], "x": 5, "y": 4}, {"matrix": [4, 4], "x": 6, "y": 4}, {"matrix": [4, 1], "x": 7, "y": 4}, - {"matrix": [9, 1], "x": 9, "y": 4}, {"matrix": [9, 3], "x": 10, "y": 4}, - {"matrix": [4, 5], "x": 6, "y": 5}, {"matrix": [4, 2], "x": 7, "y": 5}, - {"matrix": [9, 5], "x": 9, "y": 5} ] } diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c deleted file mode 100644 index f440dac8cb..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -enum charybdis_keymap_layers { - LAYER_BASE = 0, - LAYER_LOWER, - LAYER_RAISE, -}; - -#define LOWER MO(LAYER_LOWER) -#define RAISE MO(LAYER_RAISE) - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [LAYER_BASE] = LAYOUT( - // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LALT, - // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ - KC_LGUI, KC_SPC, LOWER, RAISE, KC_ENT, - KC_LALT, KC_BSPC, KC_DEL - // ╰───────────────────────────╯ ╰──────────────────╯ - ), - - [LAYER_LOWER] = LAYOUT( - // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - RM_NEXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_P7, KC_P8, KC_P9, KC_RBRC, XXXXXXX, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - RM_TOGG, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PEQL, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - RM_PREV, XXXXXXX, XXXXXXX, XXXXXXX, EE_CLR, QK_BOOT, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT, - // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ - XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, - XXXXXXX, XXXXXXX, KC_P0 - // ╰───────────────────────────╯ ╰──────────────────╯ - ), - - [LAYER_RAISE] = LAYOUT( - // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ - KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_MPLY, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, KC_MUTE, - // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ - KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, QK_BOOT, EE_CLR, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, - // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ - _______, _______, XXXXXXX, _______, XXXXXXX, - _______, _______, XXXXXXX - // ╰───────────────────────────╯ ╰──────────────────╯ - ), -}; -// clang-format on diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.json b/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.json new file mode 100644 index 0000000000..2df4f16675 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.json @@ -0,0 +1,31 @@ +{ + "keyboard": "bastardkb/charybdis/4x6/elitec", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "KC_ESC" , "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_GRV" , + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_CAPS", + "KC_LGUI", "MO(1)", "KC_SPC", "KC_ENT", "MO(2)", + "KC_LALT", "KC_SPC", "KC_BSPC" + ], + [ + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "_______", + "_______", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______" + ], + [ + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "QK_BOOT", "_______", "_______", "_______", "_______", "_______", "RM_VALU", "RM_HUEU", "RM_SATU", "RM_NEXT", "RM_TOGG", "_______", + "EE_CLR", "_______", "_______", "_______", "_______", "_______", "RM_VALD", "RM_HUED", "RM_SATD", "RM_PREV", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______" + ] + ] +} diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/default/readme.md b/keyboards/bastardkb/charybdis/4x6/keymaps/default/readme.md deleted file mode 100644 index 23a85e54d5..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/default/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# Charybdis (4x6) default keymap - -> :bulb: Have a look at the [`via` keymap](../via) for a more feature-rich layout. - -The Charydbis (4x6) default keymap is inspired from the original [Dactyl Manuform](../../../../../handwired/dactyl_manuform) default keymap. - -This layout supports RGB matrix. However, due to space constraints on the MCU, only a limited number of effect can be enabled at once. Look at the `config.h` file and enable your favorite effect. diff --git a/keyboards/bastardkb/charybdis/4x6/readme.md b/keyboards/bastardkb/charybdis/4x6/readme.md deleted file mode 100644 index af2396cd6d..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Charybdis (4x6) - -An ergonomic keyboard with integrated trackball. - -The Charybdis is available in 4x6 and 3x5 form factor at [bastardkb.com](https://bastardkb.com). - -## Keymaps - -### [`default`](keymaps/default) - -A simple QWERTY layout with 3 layers. - -### [`via`](keymaps/via) - -Same as the [default](keymaps/default) keymap, but with VIA support. diff --git a/keyboards/bastardkb/charybdis/4x6/rules.mk b/keyboards/bastardkb/charybdis/4x6/rules.mk new file mode 100644 index 0000000000..fab9162dc6 --- /dev/null +++ b/keyboards/bastardkb/charybdis/4x6/rules.mk @@ -0,0 +1 @@ +POINTING_DEVICE_DRIVER = pmw3360 diff --git a/keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h b/keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h deleted file mode 100644 index dc0c6e4e03..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2020 Christopher Courtney (@drashna) - * Copyright 2021 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -/* PMW3360 settings. */ -#define POINTING_DEVICE_CS_PIN B0 diff --git a/keyboards/bastardkb/charybdis/4x6/v1/elitec/keyboard.json b/keyboards/bastardkb/charybdis/4x6/v1/elitec/keyboard.json deleted file mode 100644 index 6b0caff82e..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v1/elitec/keyboard.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "keyboard_name": "Charybdis (4x6) Elite-C", - "usb": { - "device_version": "1.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "build": { - "lto": true - }, - "ws2812": { - "pin": "D3" - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["D5", "C7", "F0", "D7", "E6", "B4"], - "rows": ["F1", "B7", "C6", "D4", "B5"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "D2" - }, - "matrix_pins": { - "right": { - "cols": ["F1", "C7", "B7", "D7", "E6", "B4"], - "rows": ["D5", "F0", "C6", "D4", "B5"] - } - } - }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu" -} diff --git a/keyboards/bastardkb/charybdis/4x6/v1/elitec/rules.mk b/keyboards/bastardkb/charybdis/4x6/v1/elitec/rules.mk deleted file mode 100644 index 0e4d15d5bc..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v1/elitec/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported. - -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint diff --git a/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h b/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h deleted file mode 100644 index 3b91322247..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -/* PMW3360 settings. */ -#define POINTING_DEVICE_CS_PIN F0 diff --git a/keyboards/bastardkb/charybdis/4x6/v2/elitec/keyboard.json b/keyboards/bastardkb/charybdis/4x6/v2/elitec/keyboard.json deleted file mode 100644 index 4163f9d476..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/elitec/keyboard.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "keyboard_name": "Charybdis (4x6) Elite-C", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "build": { - "lto": true - }, - "ws2812": { - "pin": "D3" - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["F6", "F5", "B6", "D7", "E6", "B4"], - "rows": ["F4", "F7", "C6", "D4", "B5"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "D2" - } - }, - "processor": "atmega32u4", - "bootloader": "atmel-dfu" -} diff --git a/keyboards/bastardkb/charybdis/4x6/v2/elitec/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/elitec/rules.mk deleted file mode 100644 index 0e4d15d5bc..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/elitec/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported. - -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/config.h b/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/config.h deleted file mode 100644 index e6e2a4f216..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define SPLIT_HAND_PIN GP13 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* SPI & PMW3360 settings. */ -#define SPI_DRIVER SPID0 -#define SPI_SCK_PIN GP18 -#define SPI_MISO_PIN GP20 -#define SPI_MOSI_PIN GP19 -#define POINTING_DEVICE_CS_PIN GP14 - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/keyboard.json b/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/keyboard.json deleted file mode 100644 index 0da7d0b442..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/keyboard.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "keyboard_name": "Charybdis (4x6) Splinky", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["GP27", "GP28", "GP15", "GP6", "GP7", "GP8"], - "rows": ["GP29", "GP26", "GP5", "GP4", "GP9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "ws2812": { - "pin": "GP0", - "driver": "vendor" - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/mcuconf.h deleted file mode 100644 index 6aaf31428c..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/mcuconf.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 RP_SPI_USE_SPI0 -#define RP_SPI_USE_SPI0 TRUE diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/readme.md b/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/readme.md deleted file mode 100644 index 662eb5825c..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Splinky controller - -The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040. - -See [plut0nium/0xB2](https://github.com/plut0nium/0xB2/#releases) to figure out the right version for you (v2 or v3). diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/rules.mk deleted file mode 100644 index db29cb6789..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 - -SERIAL_DRIVER = vendor diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/config.h b/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/config.h deleted file mode 100644 index ee7745d41e..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define SPLIT_HAND_PIN GP15 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* SPI & PMW3360 settings. */ -#define SPI_DRIVER SPID0 -#define SPI_SCK_PIN GP22 -#define SPI_MISO_PIN GP20 -#define SPI_MOSI_PIN GP23 -#define POINTING_DEVICE_CS_PIN GP16 - -/* Reset. */ -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/keyboard.json b/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/keyboard.json deleted file mode 100644 index 026684eb92..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/keyboard.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "keyboard_name": "Charybdis (4x6) Splinky", - "usb": { - "device_version": "2.0.0" - }, - "features": { - "bootmagic": true, - "mousekey": false, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "matrix_pins": { - "cols": ["GP27", "GP28", "GP21", "GP6", "GP7", "GP8"], - "rows": ["GP29", "GP26", "GP5", "GP4", "GP9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "GP1" - } - }, - "ws2812": { - "pin": "GP0", - "driver": "vendor" - }, - "processor": "RP2040", - "bootloader": "rp2040" -} diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/mcuconf.h deleted file mode 100644 index 6aaf31428c..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/mcuconf.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 RP_SPI_USE_SPI0 -#define RP_SPI_USE_SPI0 TRUE diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/readme.md b/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/readme.md deleted file mode 100644 index 662eb5825c..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Splinky controller - -The splinky is a Pro-Micro/Elite-C replacement with USB-C and RP2040. - -See [plut0nium/0xB2](https://github.com/plut0nium/0xB2/#releases) to figure out the right version for you (v2 or v3). diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/rules.mk deleted file mode 100644 index db29cb6789..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 - -SERIAL_DRIVER = vendor diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/config.h b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/config.h deleted file mode 100644 index 3efb323302..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/config.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2022 Charly Delay (@0xcharly) - * - * This 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 - -/* Handedness. */ -#define MASTER_RIGHT - -// To use the handedness pin, resistors need to be installed on the adapter PCB. -// If so, uncomment the following code, and undefine MASTER_RIGHT above. -// #define A0 PAL_LINE(GPIOA, 0) -// #define SPLIT_HAND_PIN A0 -// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. - -/* RGB settings. */ -#define WS2812_PWM_DRIVER PWMD2 -#define WS2812_PWM_CHANNEL 4 -#define WS2812_PWM_PAL_MODE 1 -#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM7 -#define WS2812_PWM_DMA_CHANNEL 3 - -/* CRC. */ -#define CRC8_USE_TABLE -#define CRC8_OPTIMIZE_SPEED - -/* SPI config for pmw3360 sensor. */ -#define SPI_DRIVER SPID1 -#define SPI_SCK_PIN A5 -#define SPI_SCK_PAL_MODE 5 -#define SPI_MOSI_PIN A7 -#define SPI_MOSI_PAL_MODE 5 -#define SPI_MISO_PIN A6 -#define SPI_MISO_PAL_MODE 5 - -/* PMW3360 settings. */ -#define POINTING_DEVICE_CS_PIN A1 -#define PMW3360_CS_MODE 3 -#define PMW3360_CS_DIVISOR 64 diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/halconf.h b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/halconf.h deleted file mode 100644 index 0397de50b7..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/halconf.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define HAL_USE_PWM TRUE -#define HAL_USE_SERIAL TRUE -#define HAL_USE_SPI TRUE - -#include_next diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/keyboard.json b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/keyboard.json deleted file mode 100644 index ed929f7fb7..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/keyboard.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "keyboard_name": "Charybdis (4x6) STeMCell", - "usb": { - "device_version": "2.0.0", - "shared_endpoint": { - "keyboard": true - } - }, - "features": { - "bootmagic": true, - "mousekey": true, - "extrakey": true, - "rgb_matrix": true, - "pointing_device": true - }, - "rgb_matrix": { - "driver": "ws2812" - }, - "ws2812": { - "pin": "A2", - "driver": "pwm" - }, - "build": { - "debounce_type": "asym_eager_defer_pk" - }, - "matrix_pins": { - "cols": ["B1", "B2", "A4", "B4", "B5", "B8"], - "rows": ["B10", "B0", "B3", "A15", "B9"] - }, - "diode_direction": "ROW2COL", - "split": { - "enabled": true, - "serial": { - "pin": "A3" - } - }, - "development_board": "stemcell" -} diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/mcuconf.h deleted file mode 100644 index 17a46d8f95..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/mcuconf.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include_next - -#undef STM32_SPI_USE_SPI1 -#define STM32_SPI_USE_SPI1 TRUE - -#undef STM32_SERIAL_USE_USART1 -#define STM32_SERIAL_USE_USART1 FALSE - -#undef STM32_PWM_USE_TIM2 -#define STM32_PWM_USE_TIM2 TRUE - -#undef STM32_ST_USE_TIMER -#define STM32_ST_USE_TIMER 5 diff --git a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/stemcell/rules.mk deleted file mode 100644 index 4373b9c33d..0000000000 --- a/keyboards/bastardkb/charybdis/4x6/v2/stemcell/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -AUDIO_SUPPORTED = no # Audio is not supported - -POINTING_DEVICE_DRIVER = pmw3360 -MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint - -SERIAL_DRIVER = usart From da2c6a41d815200312c72040642b60cee2842eee Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 15 Aug 2025 09:13:13 +0100 Subject: [PATCH 100/167] Remove converter assumption that everything is a promicro (#20330) --- builddefs/converters.mk | 5 ----- 1 file changed, 5 deletions(-) diff --git a/builddefs/converters.mk b/builddefs/converters.mk index 20ecea5cb9..9f8e80706e 100644 --- a/builddefs/converters.mk +++ b/builddefs/converters.mk @@ -1,8 +1,3 @@ -ifneq (,$(filter $(MCU),atmega32u4)) - # TODO: opt in rather than assume everything uses a pro micro - PIN_COMPATIBLE ?= promicro -endif - # Remove whitespace from any rule.mk provided vars # - env cannot be overwritten but cannot have whitespace anyway CONVERT_TO:=$(strip $(CONVERT_TO)) From d2ec940da5f7883e04777e72a338a70f4f828c8a Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 15 Aug 2025 19:32:54 +0100 Subject: [PATCH 101/167] Remove overriding of `DF()` within keyboards (#25541) --- keyboards/akko/5087/5087.c | 25 ++-------------- keyboards/akko/5087/keymaps/default/keymap.c | 4 +-- .../monsgeek/m1/keymaps/default/keymap.c | 4 +-- keyboards/monsgeek/m1/m1.c | 25 ++-------------- .../monsgeek/m3/keymaps/default/keymap.c | 4 +-- keyboards/monsgeek/m3/m3.c | 29 ++----------------- 6 files changed, 12 insertions(+), 79 deletions(-) diff --git a/keyboards/akko/5087/5087.c b/keyboards/akko/5087/5087.c index 27439c20ef..0b26ef90a6 100644 --- a/keyboards/akko/5087/5087.c +++ b/keyboards/akko/5087/5087.c @@ -125,24 +125,15 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = { }; #endif // RGB_MATRIX_ENABLE -enum __layers { - WIN_B, - WIN_W, - WIN_FN, - MAC_B, - MAC_W, - MAC_FN, -}; - // clang-format on -void matrix_init_kb(void) { +void keyboard_post_init_kb(void) { gpio_set_pin_output(LED_MAC_OS_PIN); // LDE2 MAC\WIN gpio_write_pin_low(LED_MAC_OS_PIN); gpio_set_pin_output(LED_WIN_LOCK_PIN); // LED3 Win Lock gpio_write_pin_low(LED_WIN_LOCK_PIN); - matrix_init_user(); + keyboard_post_init_user(); } void housekeeping_task_kb(void){ @@ -155,18 +146,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { return false; } switch (keycode) { - case DF(WIN_B): - if (record->event.pressed) { - set_single_persistent_default_layer(WIN_B); - } - return false; - case DF(MAC_B): - if (record->event.pressed) { - set_single_persistent_default_layer(MAC_B); - keymap_config.no_gui = 0; - eeconfig_update_keymap(&keymap_config); - } - return false; case QK_RGB_MATRIX_TOGGLE: if (record->event.pressed) { switch (rgb_matrix_get_flags()) { diff --git a/keyboards/akko/5087/keymaps/default/keymap.c b/keyboards/akko/5087/keymaps/default/keymap.c index 039823465c..162e862cd6 100644 --- a/keyboards/akko/5087/keymaps/default/keymap.c +++ b/keyboards/akko/5087/keymaps/default/keymap.c @@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [WIN_FN] = LAYOUT_tkl_ansi( /* FN */ _______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_SPDD, RM_SPDU, _______, _______, _______, _______, - _______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RM_NEXT, _______, _______, _______, + _______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, PDF(MAC_B),_______,_______, _______, RM_NEXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG, _______, _______, RM_HUEU, _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RM_VALU, _______, GU_TOGG, _______, _______, _______, _______, _______, _______, RM_SATD, RM_VALD, RM_SATU), @@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MAC_FN] = LAYOUT_tkl_ansi( /* FN */ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_SPDD, RM_SPDU, _______, _______, _______, _______, - _______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RM_NEXT, _______, _______, _______, + _______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, PDF(WIN_B),_______,_______, _______, RM_NEXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG, _______, _______, RM_HUEU, _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RM_VALU, _______, _______, _______, _______, _______, _______, _______, _______, RM_SATD, RM_VALD, RM_SATU) diff --git a/keyboards/monsgeek/m1/keymaps/default/keymap.c b/keyboards/monsgeek/m1/keymaps/default/keymap.c index 5cc4c0b3c3..df13a0c953 100644 --- a/keyboards/monsgeek/m1/keymaps/default/keymap.c +++ b/keyboards/monsgeek/m1/keymaps/default/keymap.c @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [WIN_FN] = LAYOUT_all( /* WASD/↑←↓→ */ _______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______, _______, _______, _______, _______, RM_NEXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_SPDD, RM_SPDU, _______, _______, - _______, _______,TG(WIN_W),_______, _______, _______, _______, _______, KC_INS, DF(MAC_B),KC_PSCR,_______, _______, RM_NEXT, _______, + _______, _______,TG(WIN_W),_______, _______, _______, _______, _______, KC_INS, PDF(MAC_B),KC_PSCR,_______, _______, RM_NEXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG, _______, _______, RM_NEXT, RM_HUEU, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RM_VALU, _______, _______, GU_TOGG, _______, _______, _______, _______, _______, RM_SATD, RM_VALD, RM_SATU), @@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MAC_FN] = LAYOUT_all( /* FN */ _______, 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, RM_NEXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_SPDD, RM_SPDU, _______, _______, - _______, _______,TG(MAC_W),_______, _______, _______, _______, _______, KC_INS, DF(WIN_B),KC_PSCR,_______, _______, RM_NEXT, _______, + _______, _______,TG(MAC_W),_______, _______, _______, _______, _______, KC_INS, PDF(WIN_B),KC_PSCR,_______, _______, RM_NEXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG, _______, _______, RM_NEXT, RM_HUEU, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RM_VALU, _______, _______, _______, _______, _______, _______, _______, _______, RM_SATD, RM_VALD, RM_SATU) diff --git a/keyboards/monsgeek/m1/m1.c b/keyboards/monsgeek/m1/m1.c index 2f7365e562..6466b55412 100644 --- a/keyboards/monsgeek/m1/m1.c +++ b/keyboards/monsgeek/m1/m1.c @@ -15,7 +15,7 @@ */ #include "quantum.h" - +// clang-format off #ifdef RGB_MATRIX_ENABLE const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = { /* Refer to SNLED27351 manual for these locations @@ -165,34 +165,13 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { } #endif -enum __layers { - WIN_B, - WIN_W, - WIN_FN, - MAC_B, - MAC_W, - MAC_FN -}; +// clang-format on bool process_record_kb(uint16_t keycode, keyrecord_t *record) { if (!process_record_user(keycode, record)) { return false; } switch (keycode) { - case DF(WIN_B): - if (record->event.pressed) { - set_single_persistent_default_layer(WIN_B); - layer_state_set(1<event.pressed) { - set_single_persistent_default_layer(MAC_B); - layer_state_set(1<event.pressed) { switch (rgb_matrix_get_flags()) { diff --git a/keyboards/monsgeek/m3/keymaps/default/keymap.c b/keyboards/monsgeek/m3/keymaps/default/keymap.c index 58f69628bf..c92d31da39 100644 --- a/keyboards/monsgeek/m3/keymaps/default/keymap.c +++ b/keyboards/monsgeek/m3/keymaps/default/keymap.c @@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [WIN_FN] = LAYOUT_tkl_ansi( /* FN */ _______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_SPDD, RM_SPDU, _______, _______, _______, _______, - _______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RM_NEXT, _______, _______, _______, + _______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, PDF(MAC_B),_______,_______, _______, RM_NEXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG, _______, _______, RM_HUEU, _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RM_VALU, _______, GU_TOGG, _______, _______, _______, _______, _______, _______, RM_SATD, RM_VALD, RM_SATU), @@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MAC_FN] = LAYOUT_tkl_ansi( /* FN */ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_SPDD, RM_SPDU, _______, _______, _______, _______, - _______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RM_NEXT, _______, _______, _______, + _______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, PDF(WIN_B),_______,_______, _______, RM_NEXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG, _______, _______, RM_HUEU, _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RM_VALU, _______, _______, _______, _______, _______, _______, _______, _______, RM_SATD, RM_VALD, RM_SATU) diff --git a/keyboards/monsgeek/m3/m3.c b/keyboards/monsgeek/m3/m3.c index bf5e038b3d..0b26ef90a6 100644 --- a/keyboards/monsgeek/m3/m3.c +++ b/keyboards/monsgeek/m3/m3.c @@ -126,22 +126,14 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = { #endif // RGB_MATRIX_ENABLE // clang-format on -enum __layers { - WIN_B, - WIN_W, - WIN_FN, - MAC_B, - MAC_W, - MAC_FN, -}; -void matrix_init_kb(void) { +void keyboard_post_init_kb(void) { gpio_set_pin_output(LED_MAC_OS_PIN); // LDE2 MAC\WIN gpio_write_pin_low(LED_MAC_OS_PIN); gpio_set_pin_output(LED_WIN_LOCK_PIN); // LED3 Win Lock gpio_write_pin_low(LED_WIN_LOCK_PIN); - matrix_init_user(); + keyboard_post_init_user(); } void housekeeping_task_kb(void){ @@ -154,23 +146,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { return false; } switch (keycode) { - case DF(WIN_B): - if (record->event.pressed) { - set_single_persistent_default_layer(WIN_B); - } - return false; - case DF(MAC_B): - if (record->event.pressed) { - set_single_persistent_default_layer(MAC_B); - keymap_config.no_gui = 0; - eeconfig_update_keymap(&keymap_config); - } - return false; - case GU_TOGG: - if (record->event.pressed) { - gpio_write_pin(LED_WIN_LOCK_PIN, !keymap_config.no_gui); - } - return true; case QK_RGB_MATRIX_TOGGLE: if (record->event.pressed) { switch (rgb_matrix_get_flags()) { From f29d8117bf877a4df1f88f40e0131f4465748540 Mon Sep 17 00:00:00 2001 From: dsanderling Date: Sat, 16 Aug 2025 15:04:37 +0000 Subject: [PATCH 102/167] Fix `boardsource/unicorne` RGB Matrix Coordinates (#25556) please see https://github.com/qmk/qmk_firmware/issues/23224 --- keyboards/boardsource/unicorne/keyboard.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/boardsource/unicorne/keyboard.json b/keyboards/boardsource/unicorne/keyboard.json index da1c3a787e..c87f8dd83a 100644 --- a/keyboards/boardsource/unicorne/keyboard.json +++ b/keyboards/boardsource/unicorne/keyboard.json @@ -118,9 +118,9 @@ {"matrix": [6, 1], "x": 208, "y": 42, "flags": 4}, {"matrix": [5, 1], "x": 208, "y": 24, "flags": 4}, {"matrix": [4, 1], "x": 208, "y": 7, "flags": 4}, - {"matrix": [4, 0], "x": 0, "y": 7, "flags": 1}, - {"matrix": [5, 0], "x": 0, "y": 24, "flags": 1}, - {"matrix": [6, 0], "x": 0, "y": 41, "flags": 1} + {"matrix": [4, 0], "x": 223, "y": 7, "flags": 1}, + {"matrix": [5, 0], "x": 223, "y": 24, "flags": 1}, + {"matrix": [6, 0], "x": 223, "y": 41, "flags": 1} ], "sleep": true }, From cc696a2ae838a9639335ca8eb3cb3b794c06bc33 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 17 Aug 2025 01:14:48 +0100 Subject: [PATCH 103/167] Refactor battery driver (#25550) --- builddefs/build_test.mk | 1 + builddefs/common_features.mk | 14 ++- builddefs/generic_features.mk | 1 + builddefs/testlist.mk | 1 + data/mappings/info_config.hjson | 8 ++ data/mappings/info_rules.hjson | 1 + data/schemas/keyboard.jsonschema | 22 +++++ docs/_sidebar.json | 1 + docs/drivers/battery.md | 69 +++++-------- docs/features/battery.md | 55 +++++++++++ docs/reference_info_json.md | 26 +++++ drivers/battery/battery_adc.c | 25 ++--- .../handwired/onekey/keymaps/battery/config.h | 2 +- .../handwired/onekey/keymaps/battery/keymap.c | 3 - .../onekey/keymaps/battery/keymap.json | 4 + .../handwired/onekey/keymaps/battery/rules.mk | 1 - keyboards/handwired/promethium/config.h | 2 - keyboards/handwired/promethium/keyboard.json | 7 ++ keyboards/handwired/promethium/rules.mk | 1 - {drivers => quantum}/battery/battery.c | 0 {drivers => quantum}/battery/battery.h | 0 quantum/battery/tests/battery_tests.cpp | 97 +++++++++++++++++++ quantum/battery/tests/rules.mk | 7 ++ quantum/battery/tests/testlist.mk | 2 + quantum/keyboard.c | 6 +- quantum/quantum.h | 4 + 26 files changed, 287 insertions(+), 73 deletions(-) create mode 100644 docs/features/battery.md delete mode 100644 keyboards/handwired/onekey/keymaps/battery/rules.mk rename {drivers => quantum}/battery/battery.c (100%) rename {drivers => quantum}/battery/battery.h (100%) create mode 100644 quantum/battery/tests/battery_tests.cpp create mode 100644 quantum/battery/tests/rules.mk create mode 100644 quantum/battery/tests/testlist.mk diff --git a/builddefs/build_test.mk b/builddefs/build_test.mk index 0c5c98e2a3..ccdad1b4e7 100644 --- a/builddefs/build_test.mk +++ b/builddefs/build_test.mk @@ -62,6 +62,7 @@ include $(BUILDDEFS_PATH)/common_features.mk include $(BUILDDEFS_PATH)/generic_features.mk include $(PLATFORM_PATH)/common.mk include $(TMK_PATH)/protocol.mk +include $(QUANTUM_PATH)/battery/tests/rules.mk include $(QUANTUM_PATH)/debounce/tests/rules.mk include $(QUANTUM_PATH)/encoder/tests/rules.mk include $(QUANTUM_PATH)/os_detection/tests/rules.mk diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk index c122afcff9..1da13997b5 100644 --- a/builddefs/common_features.mk +++ b/builddefs/common_features.mk @@ -945,21 +945,25 @@ ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes) endif endif +ifeq ($(strip $(BATTERY_ENABLE)), yes) + BATTERY_DRIVER_REQUIRED := yes +endif + VALID_BATTERY_DRIVER_TYPES := adc custom vendor -BATTERY_DRIVER ?= adc +BATTERY_DRIVER ?= none ifeq ($(strip $(BATTERY_DRIVER_REQUIRED)), yes) ifeq ($(filter $(BATTERY_DRIVER),$(VALID_BATTERY_DRIVER_TYPES)),) $(call CATASTROPHIC_ERROR,Invalid BATTERY_DRIVER,BATTERY_DRIVER="$(BATTERY_DRIVER)" is not a valid battery driver) endif - OPT_DEFS += -DBATTERY_DRIVER - OPT_DEFS += -DBATTERY_$(strip $(shell echo $(BATTERY_DRIVER) | tr '[:lower:]' '[:upper:]')) + OPT_DEFS += -DBATTERY_DRIVER_$(strip $(shell echo $(BATTERY_DRIVER) | tr '[:lower:]' '[:upper:]')) COMMON_VPATH += $(DRIVER_PATH)/battery - SRC += battery.c - SRC += battery_$(strip $(BATTERY_DRIVER)).c + ifneq ($(strip $(BATTERY_DRIVER)), custom) + SRC += battery_$(strip $(BATTERY_DRIVER)).c + endif # add extra deps ifeq ($(strip $(BATTERY_DRIVER)), adc) diff --git a/builddefs/generic_features.mk b/builddefs/generic_features.mk index c826514431..6d394977bd 100644 --- a/builddefs/generic_features.mk +++ b/builddefs/generic_features.mk @@ -21,6 +21,7 @@ SPACE_CADET_ENABLE ?= yes GENERIC_FEATURES = \ AUTO_SHIFT \ AUTOCORRECT \ + BATTERY \ BOOTMAGIC \ CAPS_WORD \ COMBO \ diff --git a/builddefs/testlist.mk b/builddefs/testlist.mk index 74a794adcd..2e81fe576b 100644 --- a/builddefs/testlist.mk +++ b/builddefs/testlist.mk @@ -1,6 +1,7 @@ TEST_LIST = $(sort $(patsubst %/test.mk,%, $(shell find $(ROOT_DIR)tests -type f -name test.mk))) FULL_TESTS := $(notdir $(TEST_LIST)) +include $(QUANTUM_PATH)/battery/tests/testlist.mk include $(QUANTUM_PATH)/debounce/tests/testlist.mk include $(QUANTUM_PATH)/encoder/tests/testlist.mk include $(QUANTUM_PATH)/os_detection/tests/testlist.mk diff --git a/data/mappings/info_config.hjson b/data/mappings/info_config.hjson index a160e490c7..4c53aa4339 100644 --- a/data/mappings/info_config.hjson +++ b/data/mappings/info_config.hjson @@ -43,6 +43,14 @@ "BOOTMAGIC_ROW": {"info_key": "bootmagic.matrix.0", "value_type": "int"}, "BOOTMAGIC_ROW_RIGHT": {"info_key": "split.bootmagic.matrix.0", "value_type": "int"}, + // Battery + "BATTERY_SAMPLE_INTERVAL": {"info_key": "battery.sample_interval", "value_type": "int"}, + "BATTERY_ADC_PIN": {"info_key": "battery.adc.pin"}, + "BATTERY_ADC_REF_VOLTAGE_MV": {"info_key": "battery.adc.reference_voltage", "value_type": "int"}, + "BATTERY_ADC_VOLTAGE_DIVIDER_R1": {"info_key": "battery.adc.divider_r1", "value_type": "int"}, + "BATTERY_ADC_VOLTAGE_DIVIDER_R2": {"info_key": "battery.adc.divider_r2", "value_type": "int"}, + "BATTERY_ADC_RESOLUTION": {"info_key": "battery.adc.resolution", "value_type": "int"}, + // Caps Word "BOTH_SHIFTS_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.both_shifts_turns_on", "value_type": "flag"}, "CAPS_WORD_IDLE_TIMEOUT": {"info_key": "caps_word.idle_timeout", "value_type": "int"}, diff --git a/data/mappings/info_rules.hjson b/data/mappings/info_rules.hjson index d43d83c3ea..5ecd5c12b3 100644 --- a/data/mappings/info_rules.hjson +++ b/data/mappings/info_rules.hjson @@ -13,6 +13,7 @@ "AUDIO_DRIVER": {"info_key": "audio.driver"}, "BACKLIGHT_DRIVER": {"info_key": "backlight.driver"}, + "BATTERY_DRIVER": {"info_key": "battery.driver"}, "BLUETOOTH_DRIVER": {"info_key": "bluetooth.driver"}, "BOARD": {"info_key": "board"}, "BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false}, diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index 3775b66c1a..93b1c82b1c 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -188,6 +188,28 @@ "as_caps_lock": {"type": "boolean"} } }, + "battery": { + "type": "object", + "additionalProperties": false, + "properties": { + "driver": { + "type": "string", + "enum": ["adc", "custom", "vendor"] + }, + "adc": { + "type": "object", + "additionalProperties": false, + "properties": { + "pin": {"$ref": "./definitions.jsonschema#/mcu_pin"}, + "reference_voltage": {"type": "integer"}, + "divider_r1": {"type": "integer"}, + "divider_r2": {"type": "integer"}, + "resolution": {"type": "integer"} + } + }, + "sample_interval": {"type": "integer"} + } + }, "bluetooth": { "type": "object", "additionalProperties": false, diff --git a/docs/_sidebar.json b/docs/_sidebar.json index ee4709a650..eec345b788 100644 --- a/docs/_sidebar.json +++ b/docs/_sidebar.json @@ -175,6 +175,7 @@ ] }, { "text": "Audio", "link": "/features/audio" }, + { "text": "Battery", "link": "/features/battery" }, { "text": "Bootmagic", "link": "/features/bootmagic" }, { "text": "Converters", "link": "/feature_converters" }, { "text": "Custom Matrix", "link": "/custom_matrix" }, diff --git a/docs/drivers/battery.md b/docs/drivers/battery.md index e482ffc8b6..ae07668cc0 100644 --- a/docs/drivers/battery.md +++ b/docs/drivers/battery.md @@ -1,6 +1,6 @@ # Battery Driver -This driver provides support for sampling battery level. +This driver provides support for directly sampling battery level. ## Usage @@ -10,21 +10,17 @@ To use this driver, add the following to your `rules.mk`: BATTERY_DRIVER_REQUIRED = yes ``` -## Basic Configuration {#basic-configuration} - -Add the following to your `config.h`: - -|Define |Default |Description | -|--------------------------|--------|--------------------------------------------------| -|`BATTERY_SAMPLE_INTERVAL` |`30000` |The time between battery samples in milliseconds. | +::::info Note +This is already configured for you if you are using the [Battery](../features/battery) feature. +:::: ## Driver Configuration {#driver-configuration} -Driver selection can be configured in `rules.mk` as `BATTERY_DRIVER`. Valid values are `adc` (default), `vendor`, or `custom`. See below for information on individual drivers. +Driver selection can be configured in `rules.mk` as `BATTERY_DRIVER`. Valid values are `adc`, `vendor`, or `custom`. See below for information on individual drivers. ### ADC Driver {#adc-driver} -This is the default battery driver. The default configuration assumes the battery is connected to a ADC capable pin through a voltage divider. +The default configuration assumes the battery is connected to a ADC capable pin through a voltage divider. ```make BATTERY_DRIVER = adc @@ -32,42 +28,25 @@ BATTERY_DRIVER = adc The following `#define`s apply only to the `adc` driver: -|Define |Default |Description | -|-----------------------------|--------------|--------------------------------------------------------------| -|`BATTERY_PIN` |*Not defined* |The GPIO pin connected to the voltage divider. | -|`BATTERY_REF_VOLTAGE_MV` |`3300` |The ADC reverence voltage, in millivolts. | -|`BATTERY_VOLTAGE_DIVIDER_R1` |`100` |The voltage divider resistance, in kOhm. Set to 0 to disable. | -|`BATTERY_VOLTAGE_DIVIDER_R2` |`100` |The voltage divider resistance, in kOhm. Set to 0 to disable. | -|`BATTERY_ADC_RESOLUTION` |`10` |The ADC resolution configured for the ADC Driver. | +|Define |Default |Description | +|---------------------------------|--------------|--------------------------------------------------------------| +|`BATTERY_ADC_PIN` |*Not defined* |The GPIO pin connected to the voltage divider. | +|`BATTERY_ADC_REF_VOLTAGE_MV` |`3300` |The ADC reverence voltage, in millivolts. | +|`BATTERY_ADC_VOLTAGE_DIVIDER_R1` |`100` |The voltage divider resistance, in kOhm. Set to 0 to disable. | +|`BATTERY_ADC_VOLTAGE_DIVIDER_R2` |`100` |The voltage divider resistance, in kOhm. Set to 0 to disable. | +|`BATTERY_ADC_RESOLUTION` |`10` |The ADC resolution configured for the ADC Driver. | -## Functions +### Custom Driver {#custom-driver} -### `uint8_t battery_get_percent(void)` {#api-battery-get-percent} +A custom driver is expected to implement the following interface: -Sample battery level. +```c +void battery_driver_init(void) { + // Perform any initialisation here +} -#### Return Value {#api-battery-get-percent-return} - -The battery percentage, in the range 0-100. - -## Callbacks - -### `void battery_percent_changed_user(uint8_t level)` {#api-battery-percent-changed-user} - -User hook called when battery level changed. - -### Arguments {#api-battery-percent-changed-user-arguments} - - - `uint8_t level` - The battery percentage, in the range 0-100. - ---- - -### `void battery_percent_changed_kb(uint8_t level)` {#api-battery-percent-changed-kb} - -Keyboard hook called when battery level changed. - -### Arguments {#api-battery-percent-changed-kb-arguments} - - - `uint8_t level` - The battery percentage, in the range 0-100. +uint8_t battery_driver_sample_percent(void) { + // Read and return current state here + return value; +} +``` diff --git a/docs/features/battery.md b/docs/features/battery.md new file mode 100644 index 0000000000..f5c725efb9 --- /dev/null +++ b/docs/features/battery.md @@ -0,0 +1,55 @@ +# Battery + +This feature provides the high level abstraction for sampling battery level. + +## Usage + +To use this driver, add the following to your `rules.mk`: + +```make +BATTERY_ENABLE = yes +``` + +## Basic Configuration {#basic-configuration} + +Add the following to your `config.h`: + +|Define |Default |Description | +|--------------------------|--------|--------------------------------------------------| +|`BATTERY_SAMPLE_INTERVAL` |`30000` |The time between battery samples in milliseconds. | + +## Driver Configuration {#driver-configuration} + +See the [Battery Driver](../drivers/battery) documentation for more information. + +## Functions + +### `uint8_t battery_get_percent(void)` {#api-battery-get-percent} + +Sample battery level. + +#### Return Value {#api-battery-get-percent-return} + +The battery percentage, in the range 0-100. + +## Callbacks + +### `void battery_percent_changed_user(uint8_t level)` {#api-battery-percent-changed-user} + +User hook called when battery level changed. + +### Arguments {#api-battery-percent-changed-user-arguments} + + - `uint8_t level` + The battery percentage, in the range 0-100. + +--- + +### `void battery_percent_changed_kb(uint8_t level)` {#api-battery-percent-changed-kb} + +Keyboard hook called when battery level changed. + +### Arguments {#api-battery-percent-changed-kb-arguments} + + - `uint8_t level` + The battery percentage, in the range 0-100. diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md index cf22317613..84377ef36c 100644 --- a/docs/reference_info_json.md +++ b/docs/reference_info_json.md @@ -179,6 +179,32 @@ Configures the [Backlight](features/backlight) feature. * `pins` Array: Pin * A list of GPIO pins connected to the backlight LEDs (`software` and `timer` drivers only). +## Battery + +Configures the [Battery](features/battery) feature. + +* `battery` + * `adc` + * `pin` Pin Required + * The GPIO pin connected to the voltage divider. + * `reference_voltage` Number + * The ADC reverence voltage, in millivolts. + * Default: `3300` + * `divider_r1` Number + * The voltage divider resistance, in kOhm. Set to 0 to disable. + * Default: `100` + * `divider_r2` Number + * The voltage divider resistance, in kOhm. Set to 0 to disable. + * Default: `100` + * `resolution` Number + * The ADC resolution configured for the ADC Driver. + * Default: `10` + * `driver` String Required + * The driver to use. Must be one of `adc`, `custom`, `vendor`. + * `sample_interval` Number + * The delay between sampling the battery in milliseconds. + * Default: `30000` (30 s) + ## Wireless/Bluetooth {#bluetooth} Configures the [Wireless](features/wireless) feature. diff --git a/drivers/battery/battery_adc.c b/drivers/battery/battery_adc.c index cf0e69cb48..145265b5db 100644 --- a/drivers/battery/battery_adc.c +++ b/drivers/battery/battery_adc.c @@ -1,23 +1,24 @@ // Copyright 2025 QMK // SPDX-License-Identifier: GPL-2.0-or-later +#include "battery_driver.h" #include "analog.h" #include "gpio.h" -#ifndef BATTERY_PIN -# error("BATTERY_PIN not configured!") +#ifndef BATTERY_ADC_PIN +# error("BATTERY_ADC_PIN not configured!") #endif -#ifndef BATTERY_REF_VOLTAGE_MV -# define BATTERY_REF_VOLTAGE_MV 3300 +#ifndef BATTERY_ADC_REF_VOLTAGE_MV +# define BATTERY_ADC_REF_VOLTAGE_MV 3300 #endif -#ifndef BATTERY_VOLTAGE_DIVIDER_R1 +#ifndef BATTERY_ADC_VOLTAGE_DIVIDER_R1 # define BATTERY_VOLTAGE_DIVIDER_R1 100 #endif -#ifndef BATTERY_VOLTAGE_DIVIDER_R2 -# define BATTERY_VOLTAGE_DIVIDER_R2 100 +#ifndef BATTERY_ADC_VOLTAGE_DIVIDER_R2 +# define BATTERY_ADC_VOLTAGE_DIVIDER_R2 100 #endif // TODO: infer from adc config? @@ -26,16 +27,16 @@ #endif void battery_driver_init(void) { - gpio_set_pin_input(BATTERY_PIN); + gpio_set_pin_input(BATTERY_ADC_PIN); } uint16_t battery_driver_get_mv(void) { - uint32_t raw = analogReadPin(BATTERY_PIN); + uint32_t raw = analogReadPin(BATTERY_ADC_PIN); - uint32_t bat_mv = raw * BATTERY_REF_VOLTAGE_MV / (1 << BATTERY_ADC_RESOLUTION); + uint32_t bat_mv = raw * BATTERY_ADC_REF_VOLTAGE_MV / (1 << BATTERY_ADC_RESOLUTION); -#if BATTERY_VOLTAGE_DIVIDER_R1 > 0 && BATTERY_VOLTAGE_DIVIDER_R2 > 0 - bat_mv = bat_mv * (BATTERY_VOLTAGE_DIVIDER_R1 + BATTERY_VOLTAGE_DIVIDER_R2) / BATTERY_VOLTAGE_DIVIDER_R2; +#if BATTERY_VOLTAGE_DIVIDER_R1 > 0 && BATTERY_ADC_VOLTAGE_DIVIDER_R2 > 0 + bat_mv = bat_mv * (BATTERY_VOLTAGE_DIVIDER_R1 + BATTERY_ADC_VOLTAGE_DIVIDER_R2) / BATTERY_ADC_VOLTAGE_DIVIDER_R2; #endif return bat_mv; diff --git a/keyboards/handwired/onekey/keymaps/battery/config.h b/keyboards/handwired/onekey/keymaps/battery/config.h index 8a1c05d436..b93bfe9000 100644 --- a/keyboards/handwired/onekey/keymaps/battery/config.h +++ b/keyboards/handwired/onekey/keymaps/battery/config.h @@ -3,4 +3,4 @@ #pragma once -#define BATTERY_PIN ADC_PIN +#define BATTERY_ADC_PIN ADC_PIN diff --git a/keyboards/handwired/onekey/keymaps/battery/keymap.c b/keyboards/handwired/onekey/keymaps/battery/keymap.c index 74191e83fc..793a6ed87e 100644 --- a/keyboards/handwired/onekey/keymaps/battery/keymap.c +++ b/keyboards/handwired/onekey/keymaps/battery/keymap.c @@ -2,7 +2,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H -#include "battery.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT_ortho_1x1(KC_A) @@ -14,8 +13,6 @@ void keyboard_post_init_user(void) { // debug_matrix=false; // debug_keyboard=true; // debug_mouse=false; - - battery_init(); } void housekeeping_task_user(void) { diff --git a/keyboards/handwired/onekey/keymaps/battery/keymap.json b/keyboards/handwired/onekey/keymaps/battery/keymap.json index c641dfe773..7232d6d899 100644 --- a/keyboards/handwired/onekey/keymaps/battery/keymap.json +++ b/keyboards/handwired/onekey/keymaps/battery/keymap.json @@ -1,6 +1,10 @@ { "config": { + "battery": { + "driver": "adc" + }, "features": { + "battery": true, "console": true } } diff --git a/keyboards/handwired/onekey/keymaps/battery/rules.mk b/keyboards/handwired/onekey/keymaps/battery/rules.mk deleted file mode 100644 index 06908179ae..0000000000 --- a/keyboards/handwired/onekey/keymaps/battery/rules.mk +++ /dev/null @@ -1 +0,0 @@ -BATTERY_DRIVER_REQUIRED = yes diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h index 974a4f951f..c63d3eaead 100644 --- a/keyboards/handwired/promethium/config.h +++ b/keyboards/handwired/promethium/config.h @@ -64,8 +64,6 @@ along with this program. If not, see . #define PS2_MOUSE_INIT_DELAY 2000 -#define BATTERY_PIN B5 - #ifndef __ASSEMBLER__ // assembler doesn't like enum in .h file enum led_sequence { LED_IND_LINUX, diff --git a/keyboards/handwired/promethium/keyboard.json b/keyboards/handwired/promethium/keyboard.json index fa72908039..2e47bd186a 100644 --- a/keyboards/handwired/promethium/keyboard.json +++ b/keyboards/handwired/promethium/keyboard.json @@ -10,6 +10,12 @@ "ws2812": { "pin": "B5" }, + "battery": { + "driver": "adc", + "adc": { + "pin": "B5" + } + }, "bluetooth": { "driver": "bluefruit_le" }, @@ -22,6 +28,7 @@ "nkro": true, "ps2_mouse": true, "ps2": true, + "battery": true, "bluetooth": true }, "build": { diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk index 4012f8ca29..ecadca399c 100644 --- a/keyboards/handwired/promethium/rules.mk +++ b/keyboards/handwired/promethium/rules.mk @@ -5,7 +5,6 @@ PS2_DRIVER = interrupt CUSTOM_MATRIX = yes WS2812_DRIVER_REQUIRED = yes -BATTERY_DRIVER_REQUIRED = yes SRC += rgbsps.c SRC += matrix.c diff --git a/drivers/battery/battery.c b/quantum/battery/battery.c similarity index 100% rename from drivers/battery/battery.c rename to quantum/battery/battery.c diff --git a/drivers/battery/battery.h b/quantum/battery/battery.h similarity index 100% rename from drivers/battery/battery.h rename to quantum/battery/battery.h diff --git a/quantum/battery/tests/battery_tests.cpp b/quantum/battery/tests/battery_tests.cpp new file mode 100644 index 0000000000..ee011be8a8 --- /dev/null +++ b/quantum/battery/tests/battery_tests.cpp @@ -0,0 +1,97 @@ +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "gtest/gtest.h" +#include "gmock/gmock.h" + +using testing::_; + +class BatteryDriverMock { + public: + virtual ~BatteryDriverMock() {} + + // mock methods + MOCK_METHOD0(battery_driver_init, void(void)); + MOCK_METHOD0(battery_driver_sample_percent, uint8_t(void)); + MOCK_METHOD1(battery_percent_changed_kb, void(uint8_t)); +}; + +class BatteryTest : public ::testing::Test { + public: + BatteryTest() { + _batteryDriverMock.reset(new ::testing::NiceMock()); + } + virtual ~BatteryTest() { + _batteryDriverMock.reset(); + } + + static std::unique_ptr _batteryDriverMock; +}; + +std::unique_ptr BatteryTest::_batteryDriverMock; + +extern "C" { +#include "quantum/battery/battery.h" +#include "timer.h" + +void advance_time(uint32_t ms); + +void battery_driver_init(void) { + if (BatteryTest::_batteryDriverMock) { + BatteryTest::_batteryDriverMock->battery_driver_init(); + } +} + +uint8_t battery_driver_sample_percent(void) { + if (BatteryTest::_batteryDriverMock) { + return BatteryTest::_batteryDriverMock->battery_driver_sample_percent(); + } + return 255; +} + +void battery_percent_changed_kb(uint8_t level) { + if (BatteryTest::_batteryDriverMock) { + BatteryTest::_batteryDriverMock->battery_percent_changed_kb(level); + } +} +} + +TEST_F(BatteryTest, TestInit) { + // init driver and initial sample + EXPECT_CALL(*_batteryDriverMock, battery_driver_init()).Times(1); + EXPECT_CALL(*_batteryDriverMock, battery_driver_sample_percent()).Times(1); + + battery_init(); +} + +TEST_F(BatteryTest, TestSampleCached) { + // sample before timeout + EXPECT_CALL(*_batteryDriverMock, battery_driver_sample_percent()).Times(0); + + advance_time(1); + battery_task(); +} + +TEST_F(BatteryTest, TestSampleNotCached) { + // sample after timeout + EXPECT_CALL(*_batteryDriverMock, battery_driver_sample_percent()).Times(1); + + advance_time(60000); + battery_task(); +} + +TEST_F(BatteryTest, TestGet) { + // sample does not directly sample + EXPECT_CALL(*_batteryDriverMock, battery_driver_sample_percent()).Times(0); + + battery_get_percent(); +} + +TEST_F(BatteryTest, TestChanged) { + // callbacks on value changed + EXPECT_CALL(*_batteryDriverMock, battery_percent_changed_kb(_)).Times(1); + + battery_task(); + advance_time(60000); + battery_task(); +} diff --git a/quantum/battery/tests/rules.mk b/quantum/battery/tests/rules.mk new file mode 100644 index 0000000000..86980f1020 --- /dev/null +++ b/quantum/battery/tests/rules.mk @@ -0,0 +1,7 @@ +VPATH += $(DRIVER_PATH)/battery + +battery_SRC := \ + $(PLATFORM_PATH)/timer.c \ + $(PLATFORM_PATH)/$(PLATFORM_KEY)/timer.c \ + $(QUANTUM_PATH)/battery/battery.c \ + $(QUANTUM_PATH)/battery/tests/battery_tests.cpp \ diff --git a/quantum/battery/tests/testlist.mk b/quantum/battery/tests/testlist.mk new file mode 100644 index 0000000000..e91da865a0 --- /dev/null +++ b/quantum/battery/tests/testlist.mk @@ -0,0 +1,2 @@ +TEST_LIST += \ + battery \ diff --git a/quantum/keyboard.c b/quantum/keyboard.c index bf4890a51d..173c696e2d 100644 --- a/quantum/keyboard.c +++ b/quantum/keyboard.c @@ -122,7 +122,7 @@ along with this program. If not, see . #ifdef SPLIT_KEYBOARD # include "split_util.h" #endif -#ifdef BATTERY_DRIVER +#ifdef BATTERY_ENABLE # include "battery.h" #endif #ifdef BLUETOOTH_ENABLE @@ -532,7 +532,7 @@ void keyboard_init(void) { // init after split init pointing_device_init(); #endif -#ifdef BATTERY_DRIVER +#ifdef BATTERY_ENABLE battery_init(); #endif #ifdef BLUETOOTH_ENABLE @@ -779,7 +779,7 @@ void keyboard_task(void) { joystick_task(); #endif -#ifdef BATTERY_DRIVER +#ifdef BATTERY_ENABLE battery_task(); #endif diff --git a/quantum/quantum.h b/quantum/quantum.h index 0036cd784b..176c8a292d 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -63,6 +63,10 @@ # include "bootmagic.h" #endif +#ifdef BATTERY_ENABLE +# include "battery.h" +#endif + #ifdef DEFERRED_EXEC_ENABLE # include "deferred_exec.h" #endif From b834819a351f402c2f118a9a3474c197c154a7a5 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 17 Aug 2025 17:47:46 +0100 Subject: [PATCH 104/167] Swap spleeb to default GENERIC_PROMICRO_RP2040 board files (#25564) --- keyboards/spleeb/config.h | 1 - keyboards/spleeb/keyboard.json | 1 - 2 files changed, 2 deletions(-) diff --git a/keyboards/spleeb/config.h b/keyboards/spleeb/config.h index 64a1fb09ba..e71f0dc007 100644 --- a/keyboards/spleeb/config.h +++ b/keyboards/spleeb/config.h @@ -28,5 +28,4 @@ #endif // OLED_ENABLE #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U diff --git a/keyboards/spleeb/keyboard.json b/keyboards/spleeb/keyboard.json index 56b0bc83b0..3b55785ee9 100644 --- a/keyboards/spleeb/keyboard.json +++ b/keyboards/spleeb/keyboard.json @@ -18,7 +18,6 @@ "rows": ["GP5", "GP6", "GP7", "GP8", "GP9"] }, "processor": "RP2040", - "board": "QMK_PM2040", "secure": { "idle_timeout": 60000, "unlock_sequence": [ From 7110708d0fdaac1f068b4668fd9816308981a701 Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Sun, 17 Aug 2025 10:50:59 -0600 Subject: [PATCH 105/167] Refactor `tweetydabird/lotus58` (#25547) - Update aliases accordingly - Remove unnecessary elite_c revision; an alternate bootloader or development board can easily be set by a user. The PCB is not dependant on an Elite-C pin compatible microcontroller - Remove unnecessary nanoboot revision; any user going to the trouble of using this bootloader will have no trouble manually setting the size of their bootloader - Move the promicro revision to be the "standard" for this keyboard - Remove unnecessary rp2040_ce revision; the converter feature should be used here instead --- data/mappings/keyboard_aliases.hjson | 13 +- .../lotus58/elite_c/keyboard.json | 34 ----- .../lotus58/{info.json => keyboard.json} | 117 ++++++++++++++++-- .../lotus58/nanoboot/keyboard.json | 34 ----- .../tweetydabird/lotus58/nanoboot/rules.mk | 2 - .../lotus58/promicro/keyboard.json | 33 ----- keyboards/tweetydabird/lotus58/readme.md | 13 +- .../tweetydabird/lotus58/rp2040_ce/config.h | 9 -- .../tweetydabird/lotus58/rp2040_ce/halconf.h | 21 ---- .../lotus58/rp2040_ce/keyboard.json | 32 ----- .../tweetydabird/lotus58/rp2040_ce/mcuconf.h | 22 ---- 11 files changed, 120 insertions(+), 210 deletions(-) delete mode 100644 keyboards/tweetydabird/lotus58/elite_c/keyboard.json rename keyboards/tweetydabird/lotus58/{info.json => keyboard.json} (53%) delete mode 100644 keyboards/tweetydabird/lotus58/nanoboot/keyboard.json delete mode 100644 keyboards/tweetydabird/lotus58/nanoboot/rules.mk delete mode 100644 keyboards/tweetydabird/lotus58/promicro/keyboard.json delete mode 100644 keyboards/tweetydabird/lotus58/rp2040_ce/config.h delete mode 100644 keyboards/tweetydabird/lotus58/rp2040_ce/halconf.h delete mode 100644 keyboards/tweetydabird/lotus58/rp2040_ce/keyboard.json delete mode 100644 keyboards/tweetydabird/lotus58/rp2040_ce/mcuconf.h diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index cd5ce6e9ab..3978235e20 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -2265,8 +2265,17 @@ "trnthsn/s6xty5neor2": { "target": "trnthsn/s6xty5neor2/stm32f103" }, - "tweetydabird/lotus58": { - "target": "tweetydabird/lotus58/promicro" + "tweetydabird/lotus58/elite_c": { + "target": "tweetydabird/lotus58" + }, + "tweetydabird/lotus58/nanoboot": { + "target": "tweetydabird/lotus58" + }, + "tweetydabird/lotus58/promicro": { + "target": "tweetydabird/lotus58" + }, + "tweetydabird/lotus58/rp2040_ce": { + "target": "tweetydabird/lotus58" }, "unison": { "target": "unison/v04" diff --git a/keyboards/tweetydabird/lotus58/elite_c/keyboard.json b/keyboards/tweetydabird/lotus58/elite_c/keyboard.json deleted file mode 100644 index 2a4c4a21bc..0000000000 --- a/keyboards/tweetydabird/lotus58/elite_c/keyboard.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "build": { - "lto": true - }, - "development_board": "elite_c", - "pin_compatible": "elite_c", - "encoder": { - "rotary": [ - {"pin_a": "F5", "pin_b": "F4", "resolution": 2} - ] - }, - "matrix_pins": { - "cols": ["B1", "B2", "B3", "B6", "F7", "F6"], - "rows": ["D4", "C6", "D7", "E6", "B4"] - }, - "split": { - "encoder": { - "right": { - "rotary": [ - {"pin_a": "F4", "pin_b": "F5", "resolution": 2} - ] - } - }, - "handedness": { - "pin": "B5" - }, - "serial": { - "pin": "D2" - } - }, - "ws2812": { - "pin": "D3" - } -} diff --git a/keyboards/tweetydabird/lotus58/info.json b/keyboards/tweetydabird/lotus58/keyboard.json similarity index 53% rename from keyboards/tweetydabird/lotus58/info.json rename to keyboards/tweetydabird/lotus58/keyboard.json index 3c47e3fdc2..a74506ab29 100644 --- a/keyboards/tweetydabird/lotus58/info.json +++ b/keyboards/tweetydabird/lotus58/keyboard.json @@ -3,7 +3,16 @@ "keyboard_name": "Lotus 58 Glow", "maintainer": "TweetyDaBird", "bootloader_instructions": "Short marked pads on PCB, or hold top-outer key when plugging in each hand.", + "build": { + "lto": true + }, + "development_board": "promicro", "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "F5", "pin_b": "F4", "resolution": 2} + ] + }, "features": { "bootmagic": true, "encoder": true, @@ -11,17 +20,94 @@ "mousekey": true, "nkro": true, "oled": true, - "rgblight": true, + "rgb_matrix": true, "tri_layer": true }, - "rgblight": { + "host": { "default": { - "val": 87 - }, - "led_count": 70, + "nkro": true + } + }, + "matrix_pins": { + "cols": ["B1", "B2", "B3", "B6", "F7", "F6"], + "rows": ["D4", "C6", "D7", "E6", "B4"] + }, + "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"matrix": [0, 5], "x": 72, "y": 4, "flags": 4}, + {"x": 65, "y": 4, "flags": 2}, + {"matrix": [0, 4], "x": 58, "y": 2, "flags": 4}, + {"matrix": [0, 3], "x": 43, "y": 0, "flags": 4}, + {"x": 36, "y": 4, "flags": 2}, + {"matrix": [0, 2], "x": 29, "y": 2, "flags": 4}, + {"matrix": [0, 1], "x": 14, "y": 6, "flags": 4}, + {"x": 7, "y": 4, "flags": 2}, + {"matrix": [0, 0], "x": 0, "y": 8, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 23, "flags": 4}, + {"matrix": [1, 1], "x": 14, "y": 21, "flags": 4}, + {"matrix": [1, 2], "x": 29, "y": 17, "flags": 4}, + {"matrix": [1, 3], "x": 43, "y": 15, "flags": 4}, + {"matrix": [1, 4], "x": 58, "y": 17, "flags": 4}, + {"matrix": [1, 5], "x": 72, "y": 19, "flags": 4}, + {"matrix": [2, 5], "x": 72, "y": 34, "flags": 4}, + {"matrix": [2, 4], "x": 58, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 43, "y": 30, "flags": 4}, + {"matrix": [2, 2], "x": 29, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 14, "y": 36, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 38, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 53, "flags": 4}, + {"x": 7, "y": 52, "flags": 2}, + {"matrix": [3, 1], "x": 14, "y": 51, "flags": 4}, + {"matrix": [3, 2], "x": 29, "y": 47, "flags": 4}, + {"matrix": [3, 3], "x": 43, "y": 45, "flags": 4}, + {"matrix": [3, 4], "x": 58, "y": 47, "flags": 4}, + {"matrix": [3, 5], "x": 72, "y": 49, "flags": 4}, + {"x": 79, "y": 45, "flags": 2}, + {"matrix": [4, 5], "x": 87, "y": 41, "flags": 4}, + {"matrix": [4, 4], "x": 87, "y": 64, "flags": 4}, + {"matrix": [4, 3], "x": 65, "y": 64, "flags": 4}, + {"matrix": [4, 2], "x": 51, "y": 62, "flags": 4}, + {"x": 43, "y": 62, "flags": 2}, + {"matrix": [4, 1], "x": 36, "y": 62, "flags": 4}, + {"matrix": [5, 5], "x": 152, "y": 4, "flags": 4}, + {"x": 159, "y": 4, "flags": 2}, + {"matrix": [5, 4], "x": 166, "y": 2, "flags": 4}, + {"matrix": [5, 3], "x": 181, "y": 0, "flags": 4}, + {"x": 188, "y": 4, "flags": 2}, + {"matrix": [5, 2], "x": 195, "y": 2, "flags": 4}, + {"matrix": [5, 1], "x": 210, "y": 6, "flags": 4}, + {"x": 217, "y": 4, "flags": 2}, + {"matrix": [5, 0], "x": 224, "y": 8, "flags": 4}, + {"matrix": [6, 0], "x": 224, "y": 23, "flags": 4}, + {"matrix": [6, 1], "x": 210, "y": 21, "flags": 4}, + {"matrix": [6, 2], "x": 195, "y": 17, "flags": 4}, + {"matrix": [6, 3], "x": 181, "y": 15, "flags": 4}, + {"matrix": [6, 4], "x": 166, "y": 17, "flags": 4}, + {"matrix": [6, 5], "x": 152, "y": 19, "flags": 4}, + {"matrix": [7, 5], "x": 152, "y": 34, "flags": 4}, + {"matrix": [7, 4], "x": 166, "y": 32, "flags": 4}, + {"matrix": [7, 3], "x": 181, "y": 30, "flags": 4}, + {"matrix": [7, 2], "x": 195, "y": 32, "flags": 4}, + {"matrix": [7, 1], "x": 210, "y": 36, "flags": 4}, + {"matrix": [7, 0], "x": 224, "y": 38, "flags": 4}, + {"matrix": [8, 0], "x": 224, "y": 53, "flags": 4}, + {"x": 217, "y": 52, "flags": 2}, + {"matrix": [8, 1], "x": 210, "y": 51, "flags": 4}, + {"matrix": [8, 2], "x": 195, "y": 47, "flags": 4}, + {"matrix": [8, 3], "x": 181, "y": 45, "flags": 4}, + {"matrix": [8, 4], "x": 166, "y": 47, "flags": 4}, + {"matrix": [8, 5], "x": 152, "y": 49, "flags": 4}, + {"x": 159, "y": 45, "flags": 2}, + {"matrix": [9, 5], "x": 137, "y": 41, "flags": 4}, + {"matrix": [9, 4], "x": 137, "y": 64, "flags": 4}, + {"matrix": [9, 3], "x": 159, "y": 64, "flags": 4}, + {"matrix": [9, 2], "x": 173, "y": 62, "flags": 4}, + {"x": 180, "y": 62, "flags": 2}, + {"matrix": [9, 1], "x": 188, "y": 62, "flags": 4} + ], "max_brightness": 175, "sleep": true, - "split": true, "split_count": [35, 35] }, "split": { @@ -29,6 +115,19 @@ "matrix": [5, 0] }, "enabled": true, + "encoder": { + "right": { + "rotary": [ + {"pin_a": "F4", "pin_b": "F5", "resolution": 2} + ] + } + }, + "handedness": { + "pin": "B5" + }, + "serial": { + "pin": "D2" + }, "transport": { "sync": { "indicators": true, @@ -48,10 +147,8 @@ "pid": "0x23B0", "vid": "0xFEED" }, - "host": { - "default": { - "nkro": true - } + "ws2812": { + "pin": "D3" }, "layouts": { "LAYOUT": { diff --git a/keyboards/tweetydabird/lotus58/nanoboot/keyboard.json b/keyboards/tweetydabird/lotus58/nanoboot/keyboard.json deleted file mode 100644 index 85f37a265c..0000000000 --- a/keyboards/tweetydabird/lotus58/nanoboot/keyboard.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "build": { - "lto": true - }, - "pin_compatible": "promicro", - "processor": "atmega32u4", - "encoder": { - "rotary": [ - {"pin_a": "F5", "pin_b": "F4", "resolution": 2} - ] - }, - "matrix_pins": { - "cols": ["B1", "B2", "B3", "B6", "F7", "F6"], - "rows": ["D4", "C6", "D7", "E6", "B4"] - }, - "split": { - "encoder": { - "right": { - "rotary": [ - {"pin_a": "F4", "pin_b": "F5", "resolution": 2} - ] - } - }, - "handedness": { - "pin": "B5" - }, - "serial": { - "pin": "D2" - } - }, - "ws2812": { - "pin": "D3" - } -} diff --git a/keyboards/tweetydabird/lotus58/nanoboot/rules.mk b/keyboards/tweetydabird/lotus58/nanoboot/rules.mk deleted file mode 100644 index 1d937578bd..0000000000 --- a/keyboards/tweetydabird/lotus58/nanoboot/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -BOOTLOADER = qmk-hid -BOOTLOADER_SIZE = 512 diff --git a/keyboards/tweetydabird/lotus58/promicro/keyboard.json b/keyboards/tweetydabird/lotus58/promicro/keyboard.json deleted file mode 100644 index 83532c8ee2..0000000000 --- a/keyboards/tweetydabird/lotus58/promicro/keyboard.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "build": { - "lto": true - }, - "development_board": "promicro", - "encoder": { - "rotary": [ - {"pin_a": "F5", "pin_b": "F4", "resolution": 2} - ] - }, - "matrix_pins": { - "cols": ["B1", "B2", "B3", "B6", "F7", "F6"], - "rows": ["D4", "C6", "D7", "E6", "B4"] - }, - "split": { - "encoder": { - "right": { - "rotary": [ - {"pin_a": "F4", "pin_b": "F5", "resolution": 2} - ] - } - }, - "handedness": { - "pin": "B5" - }, - "serial": { - "pin": "D2" - } - }, - "ws2812": { - "pin": "D3" - } -} diff --git a/keyboards/tweetydabird/lotus58/readme.md b/keyboards/tweetydabird/lotus58/readme.md index 57a89a9b03..637706f2ab 100644 --- a/keyboards/tweetydabird/lotus58/readme.md +++ b/keyboards/tweetydabird/lotus58/readme.md @@ -9,22 +9,13 @@ * Hardware Availability: [Lectronz Store](https://lectronz.com/stores/tweetys-wild-thinking) * Hardware Design: [GitHub](https://github.com/TweetyDaBird/Lotus58) - -#### This keyboard firmware contains three different versions, all for the same PCB/hardware, but depending on your choice of controller/bootloader. - - -* promicro - This uses the default Caterina bootloader. -* elite_c - This uses the Atmel-DFU bootloader. -* nanoBoot - A tiny 512 byte bootloader giving far more usable memory for features (can be used on both Elite C and Pro Micro). - - Make example for this keyboard (after setting up your build environment): - make tweetydabird/lotus58/promicro:default + make tweetydabird/lotus58:default Flashing example for this keyboard: - make tweetydabird/lotus58/elite_c:default:flash + make tweetydabird/lotus58:default:flash See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/tweetydabird/lotus58/rp2040_ce/config.h b/keyboards/tweetydabird/lotus58/rp2040_ce/config.h deleted file mode 100644 index e4a23b7d7f..0000000000 --- a/keyboards/tweetydabird/lotus58/rp2040_ce/config.h +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2024 Markus Knutsson (@TweetyDaBird) -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#define SERIAL_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the Serial implementation uses the PIO0 peripheral - -#define I2C_DRIVER I2CD1 -#define I2C1_SDA_PIN GP2 -#define I2C1_SCL_PIN GP3 diff --git a/keyboards/tweetydabird/lotus58/rp2040_ce/halconf.h b/keyboards/tweetydabird/lotus58/rp2040_ce/halconf.h deleted file mode 100644 index 2e098f5113..0000000000 --- a/keyboards/tweetydabird/lotus58/rp2040_ce/halconf.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2022 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define HAL_USE_I2C TRUE - -#include_next diff --git a/keyboards/tweetydabird/lotus58/rp2040_ce/keyboard.json b/keyboards/tweetydabird/lotus58/rp2040_ce/keyboard.json deleted file mode 100644 index 07fb343974..0000000000 --- a/keyboards/tweetydabird/lotus58/rp2040_ce/keyboard.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "development_board": "promicro_rp2040", - "encoder": { - "rotary": [ - {"pin_a": "GP28", "pin_b": "GP29", "resolution": 2} - ] - }, - "matrix_pins": { - "cols": ["GP22", "GP23", "GP20", "GP21", "GP26", "GP27"], - "rows": ["GP4", "GP5", "GP6", "GP7", "GP8"] - }, - "split": { - "encoder": { - "right": { - "rotary": [ - {"pin_a": "GP29", "pin_b": "GP28", "resolution": 2} - ] - } - }, - "serial": { - "driver": "vendor", - "pin": "GP1" - }, - "handedness": { - "pin": "GP9" - } - }, - "ws2812": { - "driver": "vendor", - "pin": "GP0" - } -} diff --git a/keyboards/tweetydabird/lotus58/rp2040_ce/mcuconf.h b/keyboards/tweetydabird/lotus58/rp2040_ce/mcuconf.h deleted file mode 100644 index 2ae39bf675..0000000000 --- a/keyboards/tweetydabird/lotus58/rp2040_ce/mcuconf.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2022 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include_next - -#undef RP_I2C_USE_I2C1 -#define RP_I2C_USE_I2C1 TRUE From df8bb7ce24856589635af1a99fe9b6f2bee1ec02 Mon Sep 17 00:00:00 2001 From: Lung Sin <31788267+lungsin@users.noreply.github.com> Date: Mon, 25 Aug 2025 04:47:28 +0700 Subject: [PATCH 106/167] Add cachyos as pattern when installing dependencies (#25580) chore: add cachyos as pattern when installing dependencies --- util/qmk_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/qmk_install.sh b/util/qmk_install.sh index 3f49bd255a..0829a917ee 100755 --- a/util/qmk_install.sh +++ b/util/qmk_install.sh @@ -24,7 +24,7 @@ case $(uname -a) in . "$QMK_FIRMWARE_UTIL_DIR/install/linux_shared.sh" case $(grep ID /etc/os-release) in - *arch*|*manjaro*) + *arch*|*manjaro*|*cachyos*) . "$QMK_FIRMWARE_UTIL_DIR/install/arch.sh";; *debian*|*ubuntu*) . "$QMK_FIRMWARE_UTIL_DIR/install/debian.sh";; From b43ec9d65a2c379512800253470ae6485081f3ac Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 5 Sep 2025 22:07:20 +0100 Subject: [PATCH 107/167] 2025q3 develop changelog (#25597) --- docs/ChangeLog/20250831.md | 181 +++++++++++++++++++++++ docs/ChangeLog/20250831/HelixRefactor.md | 37 ----- docs/ChangeLog/20250831/PR25414.md | 5 - docs/_sidebar.json | 2 +- docs/breaking_changes.md | 20 +-- docs/breaking_changes_history.md | 1 + 6 files changed, 193 insertions(+), 53 deletions(-) create mode 100644 docs/ChangeLog/20250831.md delete mode 100644 docs/ChangeLog/20250831/HelixRefactor.md delete mode 100644 docs/ChangeLog/20250831/PR25414.md diff --git a/docs/ChangeLog/20250831.md b/docs/ChangeLog/20250831.md new file mode 100644 index 0000000000..12ce19289f --- /dev/null +++ b/docs/ChangeLog/20250831.md @@ -0,0 +1,181 @@ +# QMK Breaking Changes - 2025 Aug 31 Changelog + +## Changes Requiring User Action + +### Updated Keyboard Codebases + +| Old Keyboard Name | New Keyboard Name | +|--------------------------------------|----------------------------------| +| bastardkb/charybdis/3x5/v2/elitec | bastardkb/charybdis/3x5/elitec | +| bastardkb/charybdis/3x5/v2/splinky_2 | bastardkb/charybdis/3x5/elitec | +| bastardkb/charybdis/3x5/v2/splinky_3 | bastardkb/charybdis/3x5/elitec | +| bastardkb/charybdis/3x5/v2/stemcell | bastardkb/charybdis/3x5/elitec | +| bastardkb/charybdis/3x6/v2/elitec | bastardkb/charybdis/3x6/elitec | +| bastardkb/charybdis/3x6/v2/splinky_2 | bastardkb/charybdis/3x6/elitec | +| bastardkb/charybdis/3x6/v2/splinky_3 | bastardkb/charybdis/3x6/elitec | +| bastardkb/charybdis/3x6/v2/stemcell | bastardkb/charybdis/3x6/elitec | +| bastardkb/charybdis/4x6/v2/elitec | bastardkb/charybdis/4x6/elitec | +| bastardkb/charybdis/4x6/v2/splinky_2 | bastardkb/charybdis/4x6/elitec | +| bastardkb/charybdis/4x6/v2/splinky_3 | bastardkb/charybdis/4x6/elitec | +| bastardkb/charybdis/4x6/v2/stemcell | bastardkb/charybdis/4x6/elitec | +| bastardkb/dilemma/3x5_2/splinky | bastardkb/dilemma/3x5_2/promicro | +| bastardkb/scylla/v2/elitec | bastardkb/scylla/promicro | +| bastardkb/scylla/v2/splinky_2 | bastardkb/scylla/promicro | +| bastardkb/scylla/v2/splinky_3 | bastardkb/scylla/promicro | +| bastardkb/scylla/v2/stemcell | bastardkb/scylla/promicro | +| bastardkb/skeletyl/v2/elitec | bastardkb/skeletyl/promicro | +| bastardkb/skeletyl/v2/splinky_2 | bastardkb/skeletyl/promicro | +| bastardkb/skeletyl/v2/splinky_3 | bastardkb/skeletyl/promicro | +| bastardkb/skeletyl/v2/stemcell | bastardkb/skeletyl/promicro | +| bastardkb/tbkmini/v2/elitec | bastardkb/tbkmini/promicro | +| bastardkb/tbkmini/v2/splinky_2 | bastardkb/tbkmini/promicro | +| bastardkb/tbkmini/v2/splinky_3 | bastardkb/tbkmini/promicro | +| bastardkb/tbkmini/v2/stemcell | bastardkb/tbkmini/promicro | +| helix/rev2 | helix/beta | +| helix/rev3_4rows | helix/rev3 | +| helix/rev3_5rows | helix/rev3 | +| kprepublic/cstc40/daughterboard | kprepublic/cstc40/rev1 | +| kprepublic/cstc40/single_pcb | kprepublic/cstc40/rev2 | +| ll3macorn/bongopad | ll3ma/bongopad | +| novelkeys/nk65/base | novelkeys/nk65/v1 | +| tweetydabird/lotus58/elite_c | tweetydabird/lotus58 | +| tweetydabird/lotus58/nanoboot | tweetydabird/lotus58 | +| tweetydabird/lotus58/promicro | tweetydabird/lotus58 | +| tweetydabird/lotus58/rp2040_ce | tweetydabird/lotus58 | + +### Mitigate VIA keylogger security issues [#25414](https://github.com/qmk/qmk_firmware/pull/25414) + +VIA's keyboard matrix testing functionality, which allows users to identify active key presses, has been identified as a potential security concern by community members and security researchers. This feature has been demonstrated to enable unauthorized keystroke capture, with documented examples showing how malicious scripts could exploit this capability to create keyloggers. A recent security assessment revealed that user credentials could be compromised by exploiting the matrix testing function combined with VIA's keycode assignment queries. In this attack scenario, a script could remain active during a locked session and capture password input when users authenticate upon return. + +The QMK team notified the VIA team of this security vulnerability on May 17, 2022, and made multiple subsequent attempts to coordinate a mitigation strategy. Despite repeated outreach, the VIA team has provided no acknowledgment or response to these security concerns. Given the severity of the potential security implications and the lack of engagement from the VIA team, the QMK team has unilaterally implemented a security enhancement that modifies the keyboard matrix testing functionality to prevent the reporting of key press events. This change prioritizes user security and data protection over potential feature compatibility concerns within VIA. + +## Deprecation Notices + +In line with the [notice period](../support_deprecation_policy#how-much-advance-notice-will-be-given), deprecation notices for larger items are listed here. + +### `DEFAULT_FOLDER` removal ([#23281](https://github.com/qmk/qmk_firmware/pull/23281)) + +`DEFAULT_FOLDER` was originally introduced to work around limitations within the build system. +Parent folders containing common configuration would create invalid build targets. + +With the introduction of [`keyboard.json`](./20240526#keyboard-json) as a configuration file, the build system now has a consistent method to detect build targets. +The `DEFAULT_FOLDER` functionality is now removed with the intent that `rules.mk` is now pure configuration. + +Backwards compatibility of build targets has been maintained where possible. + +### Converter `Pin Compatible` updates ([#20330](https://github.com/qmk/qmk_firmware/pull/20330)) + +Converter support has been further limited to only function if a keyboard declares that it is compatible. + +This can be configured in the following ways: + +:::::tabs + +==== keyboard.json + +```json [keyboard.json] +{ + "development_board": "promicro", // [!code focus] +} +``` + +==== rules.mk + +```make [rules.mk] +PIN_COMPATIBLE = promicro +``` + +::::: + +see the [Converters Feature](../feature_converters) documentation for more information. + +### Removal of deprecated RGB and Mouse keycodes ([#25444](https://github.com/qmk/qmk_firmware/pull/25444)) + +Backwards compatibility of deprecated RGB and Mouse keycodes has been removed. + +See the following documentation for the list of currently supported keycodes: + +* [RGB Lighting](../features/rgblight#keycodes) +* [RGB Matrix](../features/rgb_matrix#keycodes) +* [Mouse keys](../features/mouse_keys#mapping-mouse-actions) + +## Full changelist + +Core: +* Remove converter assumption that everything is a promicro ([#20330](https://github.com/qmk/qmk_firmware/pull/20330)) +* Remove `DEFAULT_FOLDER` handling ([#23281](https://github.com/qmk/qmk_firmware/pull/23281)) +* Add core handling for pointing device failures. ([#25315](https://github.com/qmk/qmk_firmware/pull/25315)) +* Relocate remaining `process_record_quantum` keycodes ([#25328](https://github.com/qmk/qmk_firmware/pull/25328)) +* Remove `process_action_kb` callback ([#25331](https://github.com/qmk/qmk_firmware/pull/25331)) +* Add `{rgb|led}_matrix_get_mode_name()`. ([#25344](https://github.com/qmk/qmk_firmware/pull/25344)) +* Align sleep_led logic ([#25395](https://github.com/qmk/qmk_firmware/pull/25395)) +* Mitigate VIA keylogger security issues ([#25414](https://github.com/qmk/qmk_firmware/pull/25414)) +* Deprecate some nonstandard mod & mod-tap keycode aliases ([#25437](https://github.com/qmk/qmk_firmware/pull/25437)) +* Refactor Starlight Smooth matrix effect ([#25442](https://github.com/qmk/qmk_firmware/pull/25442)) +* Remove deprecated `RGB_` and Mouse keycodes ([#25444](https://github.com/qmk/qmk_firmware/pull/25444)) +* Configure SPI for `QMK_PM2040` board ([#25481](https://github.com/qmk/qmk_firmware/pull/25481)) +* Configure SPI for `STEMCELL` board ([#25486](https://github.com/qmk/qmk_firmware/pull/25486)) +* Configure SPI for `QMK_BLOK` board ([#25487](https://github.com/qmk/qmk_firmware/pull/25487)) +* Clamp reactive offset value ([#25489](https://github.com/qmk/qmk_firmware/pull/25489)) +* Relocate `AUDIO_INIT_DELAY` implementation ([#25491](https://github.com/qmk/qmk_firmware/pull/25491)) +* Add MATRIX_ROWS_PER_HAND definition ([#25513](https://github.com/qmk/qmk_firmware/pull/25513)) +* Refactor battery driver ([#25550](https://github.com/qmk/qmk_firmware/pull/25550)) +* Add cachyos as pattern when installing dependencies ([#25580](https://github.com/qmk/qmk_firmware/pull/25580)) + +CLI: +* Add MATRIX_MASKED DD config ([#25383](https://github.com/qmk/qmk_firmware/pull/25383)) +* Ensure keyboard aliases do not point to themselves ([#25500](https://github.com/qmk/qmk_firmware/pull/25500)) + +Keyboards: +* [Update] E8ghtyNeo caps indicator ([#25009](https://github.com/qmk/qmk_firmware/pull/25009)) +* Keychron C3 Pro `c3_pro.c` corrections ([#25049](https://github.com/qmk/qmk_firmware/pull/25049)) +* Update franky36 pid and vid ([#25160](https://github.com/qmk/qmk_firmware/pull/25160)) +* Added Encoder support for Soyuz ([#25279](https://github.com/qmk/qmk_firmware/pull/25279)) +* CSTC40 rev3 (FXTWINK) ([#25285](https://github.com/qmk/qmk_firmware/pull/25285)) +* Migrate remaining `DEFAULT_FOLDER` to keyboard aliases ([#25291](https://github.com/qmk/qmk_firmware/pull/25291)) +* Configure boards to use development_board - R ([#25316](https://github.com/qmk/qmk_firmware/pull/25316)) +* Configure boards to use development_board - P ([#25317](https://github.com/qmk/qmk_firmware/pull/25317)) +* Configure boards to use development_board - NO ([#25338](https://github.com/qmk/qmk_firmware/pull/25338)) +* Configure boards to use development_board - LM ([#25341](https://github.com/qmk/qmk_firmware/pull/25341)) +* maple_computing/launchpad - Remove broken `default_rgb` keymap ([#25342](https://github.com/qmk/qmk_firmware/pull/25342)) +* update winry25 VID and PID ([#25351](https://github.com/qmk/qmk_firmware/pull/25351)) +* Configure boards to use development_board - DE ([#25369](https://github.com/qmk/qmk_firmware/pull/25369)) +* Configure boards to use development_board - FGHIJ ([#25370](https://github.com/qmk/qmk_firmware/pull/25370)) +* refactor(mercutio): layouts & reformatting ([#25408](https://github.com/qmk/qmk_firmware/pull/25408)) +* Configure boards to use development_board - ABC ([#25417](https://github.com/qmk/qmk_firmware/pull/25417)) +* Configure boards to use development_board - K ([#25421](https://github.com/qmk/qmk_firmware/pull/25421)) +* Refactor `helix/pico` ([#25428](https://github.com/qmk/qmk_firmware/pull/25428)) +* Refactor `helix/rev2` ([#25429](https://github.com/qmk/qmk_firmware/pull/25429)) +* Refactor `helix/rev3_{4,5}rows` ([#25430](https://github.com/qmk/qmk_firmware/pull/25430)) +* Migrate `helix` common configuration ([#25433](https://github.com/qmk/qmk_firmware/pull/25433)) +* Refactor `bastardkb/tbkmini` ([#25438](https://github.com/qmk/qmk_firmware/pull/25438)) +* Convert `novelkeys/nk65` to use RGB Matrix ([#25450](https://github.com/qmk/qmk_firmware/pull/25450)) +* Convert moon to lite custom matrix ([#25452](https://github.com/qmk/qmk_firmware/pull/25452)) +* Refactor `bastardkb/skeletyl` ([#25456](https://github.com/qmk/qmk_firmware/pull/25456)) +* Refactor `bastardkb/scylla` ([#25459](https://github.com/qmk/qmk_firmware/pull/25459)) +* Refactor `bastardkb/dilemma/3x5_2` ([#25462](https://github.com/qmk/qmk_firmware/pull/25462)) +* Migrate `usb.force_nkro` to `host.default.nkro` ([#25468](https://github.com/qmk/qmk_firmware/pull/25468)) +* Give mouse report to pointing_device_task_user first in ploopyco devices ([#25475](https://github.com/qmk/qmk_firmware/pull/25475)) +* Refactor `bastardkb/charybdis/3x5` ([#25488](https://github.com/qmk/qmk_firmware/pull/25488)) +* Refactor `bastardkb/charybdis/3x6` ([#25493](https://github.com/qmk/qmk_firmware/pull/25493)) +* Refactor `bastardkb/charybdis/4x6` ([#25494](https://github.com/qmk/qmk_firmware/pull/25494)) +* Rebrand For Ll3ma Keyboards ([#25498](https://github.com/qmk/qmk_firmware/pull/25498)) +* Remove some encoder resolution that duplicate defaults ([#25517](https://github.com/qmk/qmk_firmware/pull/25517)) +* Remove overriding of `DF()` within keyboards ([#25541](https://github.com/qmk/qmk_firmware/pull/25541)) +* Refactor inland/kb83 ([#25542](https://github.com/qmk/qmk_firmware/pull/25542)) +* Refactor `tweetydabird/lotus58` ([#25547](https://github.com/qmk/qmk_firmware/pull/25547)) +* Swap spleeb to default GENERIC_PROMICRO_RP2040 board files ([#25564](https://github.com/qmk/qmk_firmware/pull/25564)) + +Keyboard fixes: +* Fix `keebio/quefrency/rev1:default60` ([#25423](https://github.com/qmk/qmk_firmware/pull/25423)) +* Fixup `bastardkb/tbkmini` keymap's build target ([#25458](https://github.com/qmk/qmk_firmware/pull/25458)) +* Miscellaneous fixes for lint warnings ([#25469](https://github.com/qmk/qmk_firmware/pull/25469)) +* Fix pytest/has_community default keymap location ([#25471](https://github.com/qmk/qmk_firmware/pull/25471)) +* Fix serial speed DD configuration & migrate keyboards ([#25546](https://github.com/qmk/qmk_firmware/pull/25546)) +* Update rgb x coordinate of rightmost column ([#25556](https://github.com/qmk/qmk_firmware/pull/25556)) + +Bugs: +* Fix buggy switch statement in quantum.c ([#25322](https://github.com/qmk/qmk_firmware/pull/25322)) +* Compilation fixes for `-fno-common` ([#25436](https://github.com/qmk/qmk_firmware/pull/25436)) +* Only userspace should be searched for keyboard aliases when locating keymaps ([#25477](https://github.com/qmk/qmk_firmware/pull/25477)) +* Allow `qmk flash ` to flash AT32 boards ([#25497](https://github.com/qmk/qmk_firmware/pull/25497)) diff --git a/docs/ChangeLog/20250831/HelixRefactor.md b/docs/ChangeLog/20250831/HelixRefactor.md deleted file mode 100644 index 58136ce06b..0000000000 --- a/docs/ChangeLog/20250831/HelixRefactor.md +++ /dev/null @@ -1,37 +0,0 @@ -# Refactor of `keyboards/helix` - -This series of PRs aims to align this keyboard's configuration with current standards, and also remove unnecessary contents. - -### Refactor `helix/pico` [#25428](https://github.com/qmk/qmk_firmware/pull/25428) - - Removes redundant `back`, `base`, `sc`, `under`, & `qmk_conf` revisions - - Migrates legacy defines and configuration to JSON - - Migrates `default` keymap to JSON - - Fixes RGB configuration to illuminate 25 LEDs per half - - Enables standard features like Bootmagic, extrakey, etc. - - Updates keyboard aliases accordingly - -### Refactor `helix/rev2` [#25429](https://github.com/qmk/qmk_firmware/pull/25429) - - Removes redundant `back`, `base`, `sc`, `under`, & `qmk_conf` revisions - - Renames `rev2` to `beta`, as the only PCB sources in the official Helix GitHub repository are named "[beta](https://github.com/MakotoKurauchi/helix/tree/master/PCB/beta)", this keyboard's name in QMK Firmware was already "beta", and this PCB is sold under the name "[beta](https://shop.yushakobo.jp/products/oss_pcb?variant=39452554231969)" on the Yushakobo store - - Migrates legacy defines and configuration to JSON - - Migrates `default` keymap to JSON - - Fixes RGB configuration to illuminate 32 LEDs per half - - Enables standard features like Bootmagic, extrakey, etc. - - Updates keyboard aliases accordingly - - Tidy's up OLED code - - Adds alternate 4 row layout, as this PCB allows users to snap off the bottom row - -### Refactor `helix/rev3_{4,5}rows` [#25430](https://github.com/qmk/qmk_firmware/pull/25430) - - The `rev3_4rows` and `rev3_5rows` firmwares are identical, except for the extra row users can snap off. The 4 row PCB is not sold anywhere as an individual product, only the [5 row PCB](https://shop.yushakobo.jp/products/2143). Thus, this PR removes the aforementioned two build targets and adds a single `rev3` revision - - Migrates legacy defines and configuration to JSON - - Migrates `default` keymap to JSON - - Removes RGB Light configuration - - Updates keyboard aliases accordingly - - Tidy's up OLED code - - Adds alternate 4 row layout, as this PCB allows users to snap off the bottom row - -### Migrate helix common configuration [#25433](https://github.com/qmk/qmk_firmware/pull/25433) - - Migrates common configuration shared between revisions to the top-level keyboard directory - - Improves `readme.md` to provide more detail regarding PCB revisions - - Removes unnecessary top-level `rules.mk` file and other general tidying - - Migrates `beta` and `pico` revisions to use RGB Matrix, which is more appropriate as these PCBs are fit with per-key RGB LEDs diff --git a/docs/ChangeLog/20250831/PR25414.md b/docs/ChangeLog/20250831/PR25414.md deleted file mode 100644 index bee901c6ca..0000000000 --- a/docs/ChangeLog/20250831/PR25414.md +++ /dev/null @@ -1,5 +0,0 @@ -# Mitigate VIA keylogger security issues [#25414](https://github.com/qmk/qmk_firmware/pull/25414) - -VIA's keyboard matrix testing functionality, which allows users to identify active key presses, has been identified as a potential security concern by community members and security researchers. This feature has been demonstrated to enable unauthorized keystroke capture, with documented examples showing how malicious scripts could exploit this capability to create keyloggers. A recent security assessment revealed that user credentials could be compromised by exploiting the matrix testing function combined with VIA's keycode assignment queries. In this attack scenario, a script could remain active during a locked session and capture password input when users authenticate upon return. - -The QMK team notified the VIA team of this security vulnerability on May 17, 2022, and made multiple subsequent attempts to coordinate a mitigation strategy. Despite repeated outreach, the VIA team has provided no acknowledgment or response to these security concerns. Given the severity of the potential security implications and the lack of engagement from the VIA team, the QMK team has unilaterally implemented a security enhancement that modifies the keyboard matrix testing functionality to prevent the reporting of key press events. This change prioritizes user security and data protection over potential feature compatibility concerns within VIA. diff --git a/docs/_sidebar.json b/docs/_sidebar.json index eec345b788..d237b0e1d0 100644 --- a/docs/_sidebar.json +++ b/docs/_sidebar.json @@ -214,7 +214,7 @@ { "text": "My Pull Request Was Flagged", "link": "/breaking_changes_instructions" }, { "text": "Most Recent ChangeLog", - "link": "/ChangeLog/20250525" + "link": "/ChangeLog/20250831" }, { "text": "Past Breaking Changes", "link": "/breaking_changes_history" }, { "text": "Deprecation Policy", "link": "/support_deprecation_policy" } diff --git a/docs/breaking_changes.md b/docs/breaking_changes.md index 9063fc18db..1e9335d8bc 100644 --- a/docs/breaking_changes.md +++ b/docs/breaking_changes.md @@ -10,25 +10,25 @@ Practically, this means QMK merges the `develop` branch into the `master` branch ## What has been included in past Breaking Changes? +* [2025 Aug 31](ChangeLog/20250831) * [2025 May 25](ChangeLog/20250525) * [2025 Feb 23](ChangeLog/20250223) -* [2024 Nov 24](ChangeLog/20241124) * [Older Breaking Changes](breaking_changes_history) ## When is the next Breaking Change? -The next Breaking Change is scheduled for Aug 31, 2025. +The next Breaking Change is scheduled for November 30, 2025. ### Important Dates -* 2025 May 25 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions. -* 2025 Aug 3 - `develop` closed to new PRs. -* 2025 Aug 3 - Call for testers. -* 2025 Aug 17 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes -* 2025 Aug 24 - `develop` is locked, only critical bugfix PRs merged. -* 2025 Aug 29 - `master` is locked, no PRs merged. -* 2025 Aug 31 - Merge `develop` to `master`. -* 2025 Aug 31 - `master` is unlocked. PRs can be merged again. +* 2025 Aug 31 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions. +* 2025 Nov 2 - `develop` closed to new PRs. +* 2025 Nov 2 - Call for testers. +* 2025 Nov 16 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes +* 2025 Nov 23 - `develop` is locked, only critical bugfix PRs merged. +* 2025 Nov 28 - `master` is locked, no PRs merged. +* 2025 Nov 30 - Merge `develop` to `master`. +* 2025 Nov 30 - `master` is unlocked. PRs can be merged again. ## What changes will be included? diff --git a/docs/breaking_changes_history.md b/docs/breaking_changes_history.md index 274aa340df..29ceb09db7 100644 --- a/docs/breaking_changes_history.md +++ b/docs/breaking_changes_history.md @@ -2,6 +2,7 @@ This page links to all previous changelogs from the QMK Breaking Changes process. +* [2025 Aug 31](ChangeLog/20250831) - version 0.30.0 * [2025 May 25](ChangeLog/20250525) - version 0.29.0 * [2025 Feb 23](ChangeLog/20250223) - version 0.28.0 * [2024 Nov 24](ChangeLog/20241124) - version 0.27.0 From 2a4b9f79fd32a41fd157cba83293ece995523b45 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sat, 6 Sep 2025 17:54:54 +1000 Subject: [PATCH 108/167] Merge point for 2025q3 breaking changes. --- readme.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/readme.md b/readme.md index e5c0d41b7b..62aed12066 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,3 @@ -# THIS IS THE DEVELOP BRANCH - -Warning- This is the `develop` branch of QMK Firmware. You may encounter broken code here. Please see [Breaking Changes](https://docs.qmk.fm/#/breaking_changes) for more information. - # Quantum Mechanical Keyboard Firmware [![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags) From e42877d0071d40e4ad1f9576f6739f7dedde1165 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 7 Sep 2025 13:08:17 +0100 Subject: [PATCH 109/167] Bump actions/labeler from 5 to 6 (#25604) Bumps [actions/labeler](https://github.com/actions/labeler) from 5 to 6. - [Release notes](https://github.com/actions/labeler/releases) - [Commits](https://github.com/actions/labeler/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/labeler dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 2dc354dda2..0e9f29908e 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -10,4 +10,4 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/labeler@v5 + - uses: actions/labeler@v6 From 20e7906c80ef0880a97ed2a4ede725350d38f066 Mon Sep 17 00:00:00 2001 From: takashicompany Date: Mon, 8 Sep 2025 02:25:17 +0900 Subject: [PATCH 110/167] Add new keyboard "Palmbrain" (#25377) Co-authored-by: Duncan Sutherland Co-authored-by: Joel Challis Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/takashicompany/palmbrain/config.h | 6 ++ .../takashicompany/palmbrain/keyboard.json | 80 +++++++++++++++++++ .../palmbrain/keymaps/default/keymap.c | 49 ++++++++++++ keyboards/takashicompany/palmbrain/readme.md | 31 +++++++ 4 files changed, 166 insertions(+) create mode 100644 keyboards/takashicompany/palmbrain/config.h create mode 100644 keyboards/takashicompany/palmbrain/keyboard.json create mode 100644 keyboards/takashicompany/palmbrain/keymaps/default/keymap.c create mode 100644 keyboards/takashicompany/palmbrain/readme.md diff --git a/keyboards/takashicompany/palmbrain/config.h b/keyboards/takashicompany/palmbrain/config.h new file mode 100644 index 0000000000..d9d98bf85f --- /dev/null +++ b/keyboards/takashicompany/palmbrain/config.h @@ -0,0 +1,6 @@ +// Copyright 2025 takashicompany (@takashicompany) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define EE_HANDS diff --git a/keyboards/takashicompany/palmbrain/keyboard.json b/keyboards/takashicompany/palmbrain/keyboard.json new file mode 100644 index 0000000000..830b202bed --- /dev/null +++ b/keyboards/takashicompany/palmbrain/keyboard.json @@ -0,0 +1,80 @@ +{ + "manufacturer": "takashicompany", + "keyboard_name": "Palmbrain", + "maintainer": "takashicompany", + "development_board": "promicro", + "dynamic_keymap": { + "layer_count": 12 + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "direct": [ + ["F5", "D1", "F6", "E6", "F7", "F4", "D0", "C6", "B4", "B1", "D3", "D4", "D7", "B5", "B3", "B2", "B6"] + ] + }, + "split": { + "enabled": true, + "matrix_pins": { + "right": { + "direct": [ + ["F7", "E6", "F6", "D1", "F5", "B1", "B4", "C6", "D0", "F4", "B3", "B5", "D7", "D4", "D3", "B6", "B2"] + ] + } + }, + "serial": { + "pin": "D2" + } + }, + "url": "https://github.com/takashicompany/palmbrain", + "usb": { + "device_version": "1.0.0", + "pid": "0x0066", + "vid": "0x7463" + }, + "community_layouts": ["split_3x5_2"], + "layouts": { + "LAYOUT_split_3x5_2": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.45}, + {"matrix": [0, 1], "x": 0.9, "y": 0.225}, + {"matrix": [0, 2], "x": 1.8, "y": 0}, + {"matrix": [0, 3], "x": 2.7, "y": 0.225}, + {"matrix": [0, 4], "x": 3.6, "y": 0.45}, + {"matrix": [1, 0], "x": 7.2, "y": 0.45}, + {"matrix": [1, 1], "x": 8.1, "y": 0.225}, + {"matrix": [1, 2], "x": 9, "y": 0}, + {"matrix": [1, 3], "x": 9.9, "y": 0.225}, + {"matrix": [1, 4], "x": 10.8, "y": 0.45}, + {"matrix": [0, 5], "x": 0, "y": 1.35}, + {"matrix": [0, 6], "x": 0.9, "y": 1.125}, + {"matrix": [0, 7], "x": 1.8, "y": 0.9}, + {"matrix": [0, 8], "x": 2.7, "y": 1.125}, + {"matrix": [0, 9], "x": 3.6, "y": 1.35}, + {"matrix": [1, 5], "x": 7.2, "y": 1.35}, + {"matrix": [1, 6], "x": 8.1, "y": 1.125}, + {"matrix": [1, 7], "x": 9, "y": 0.9}, + {"matrix": [1, 8], "x": 9.9, "y": 1.125}, + {"matrix": [1, 9], "x": 10.8, "y": 1.35}, + {"matrix": [0, 10], "x": 0, "y": 2.25}, + {"matrix": [0, 11], "x": 0.9, "y": 2.025}, + {"matrix": [0, 12], "x": 1.8, "y": 1.8}, + {"matrix": [0, 13], "x": 2.7, "y": 2.025}, + {"matrix": [0, 14], "x": 3.6, "y": 2.25}, + {"matrix": [1, 10], "x": 7.2, "y": 2.25}, + {"matrix": [1, 11], "x": 8.1, "y": 2.025}, + {"matrix": [1, 12], "x": 9, "y": 1.8}, + {"matrix": [1, 13], "x": 9.9, "y": 2.025}, + {"matrix": [1, 14], "x": 10.8, "y": 2.25}, + {"matrix": [0, 15], "x": 3.6, "y": 3.375}, + {"matrix": [0, 16], "x": 4.5, "y": 3.375}, + {"matrix": [1, 15], "x": 6.3, "y": 3.375}, + {"matrix": [1, 16], "x": 7.2, "y": 3.375} + ] + } + } +} diff --git a/keyboards/takashicompany/palmbrain/keymaps/default/keymap.c b/keyboards/takashicompany/palmbrain/keymaps/default/keymap.c new file mode 100644 index 0000000000..fede7140e2 --- /dev/null +++ b/keyboards/takashicompany/palmbrain/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +// Copyright 2025 takashicompany (@takashicompany) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_split_3x5_2( + LT(4, KC_Q), KC_W, KC_E, LT(3, KC_R), KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, LT(4, KC_D), KC_F, KC_G, KC_H, KC_J, LT(3, KC_K), KC_L, KC_ENT, + LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, + LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1) + ), + + [1] = LAYOUT_split_3x5_2( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3, + LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_split_3x5_2( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3), + KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3), + KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_split_3x5_2( + KC_ESC, KC_TAB, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, + KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, + KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [4] = LAYOUT_split_3x5_2( + KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(5), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [5] = LAYOUT_split_3x5_2( + UG_TOGG, UG_NEXT, UG_HUEU, UG_SATU, UG_VALU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/takashicompany/palmbrain/readme.md b/keyboards/takashicompany/palmbrain/readme.md new file mode 100644 index 0000000000..ac41ca488a --- /dev/null +++ b/keyboards/takashicompany/palmbrain/readme.md @@ -0,0 +1,31 @@ +# Palmbrain + +![takashicompany/Palmbrain](https://i.imgur.com/Og9lYip.jpeg) + +Palmbrain is a 34-key split keyboard with a key pitch of 17 mm (0.9 u). +It can be equipped with BLE Micro Pro and is also compatible with wireless connectivity. + +Palmbrainは17mm(0.9u)のキーピッチを採用した34キーの分割型のキーボードです。 +BLE Micro Proを搭載することが可能で、無線化にも対応しています。 + +* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany) +* Hardware Supported: PCB, Pro Micro development board. +* Hardware Availability: https://github.com/takashicompany/palmbrain + +Make example for this keyboard (after setting up your build environment): + + make takashicompany/palmbrain:default + +Flashing example for this keyboard: + + make takashicompany/palmbrain:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From fa37d958b4f77c56846e455792516ea90cf9001f Mon Sep 17 00:00:00 2001 From: Danny Date: Mon, 8 Sep 2025 02:57:07 -0400 Subject: [PATCH 111/167] Add Nyquist LM (#25583) --- keyboards/keebio/nyquist_lm/info.json | 8 + .../nyquist_lm/keymaps/default/keymap.c | 35 ++ .../nyquist_lm/keymaps/default/rules.mk | 1 + keyboards/keebio/nyquist_lm/readme.md | 24 ++ keyboards/keebio/nyquist_lm/rev1/config.h | 23 ++ keyboards/keebio/nyquist_lm/rev1/halconf.h | 10 + .../keebio/nyquist_lm/rev1/keyboard.json | 304 ++++++++++++++++++ keyboards/keebio/nyquist_lm/rev1/mcuconf.h | 14 + keyboards/keebio/nyquist_lm/rev1/rev1.c | 11 + 9 files changed, 430 insertions(+) create mode 100644 keyboards/keebio/nyquist_lm/info.json create mode 100644 keyboards/keebio/nyquist_lm/keymaps/default/keymap.c create mode 100644 keyboards/keebio/nyquist_lm/keymaps/default/rules.mk create mode 100644 keyboards/keebio/nyquist_lm/readme.md create mode 100644 keyboards/keebio/nyquist_lm/rev1/config.h create mode 100644 keyboards/keebio/nyquist_lm/rev1/halconf.h create mode 100644 keyboards/keebio/nyquist_lm/rev1/keyboard.json create mode 100644 keyboards/keebio/nyquist_lm/rev1/mcuconf.h create mode 100644 keyboards/keebio/nyquist_lm/rev1/rev1.c diff --git a/keyboards/keebio/nyquist_lm/info.json b/keyboards/keebio/nyquist_lm/info.json new file mode 100644 index 0000000000..64fa5a05ca --- /dev/null +++ b/keyboards/keebio/nyquist_lm/info.json @@ -0,0 +1,8 @@ +{ + "manufacturer": "Keebio", + "maintainer": "Keebio", + "url": "https://keeb.io", + "usb": { + "vid": "0xCB10" + } +} diff --git a/keyboards/keebio/nyquist_lm/keymaps/default/keymap.c b/keyboards/keebio/nyquist_lm/keymaps/default/keymap.c new file mode 100644 index 0000000000..e47cd18d4f --- /dev/null +++ b/keyboards/keebio/nyquist_lm/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + MO(3), KC_LCTL, KC_LALT, KC_LGUI, TL_LOWR, KC_SPC, KC_SPC, TL_UPPR, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [1] = LAYOUT_ortho_5x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + RM_NEXT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME,KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [2] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [3] = LAYOUT_ortho_5x12( + _______, QK_BOOT, RM_TOGG, RM_NEXT, RM_HUED, RM_HUEU, RM_SATD, RM_SATU, RM_VALD, RM_VALU, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/keebio/nyquist_lm/keymaps/default/rules.mk b/keyboards/keebio/nyquist_lm/keymaps/default/rules.mk new file mode 100644 index 0000000000..7c9bf212a6 --- /dev/null +++ b/keyboards/keebio/nyquist_lm/keymaps/default/rules.mk @@ -0,0 +1 @@ +TRI_LAYER_ENABLE = yes diff --git a/keyboards/keebio/nyquist_lm/readme.md b/keyboards/keebio/nyquist_lm/readme.md new file mode 100644 index 0000000000..84d65f7c9f --- /dev/null +++ b/keyboards/keebio/nyquist_lm/readme.md @@ -0,0 +1,24 @@ +# Nyquist LM + +A low-profile 60% split 5x12 ortholinear keyboard made and sold by Keebio. [More info at Keebio](https://keeb.io). + +* Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges) +* Hardware Availability: [Keebio](https://keeb.io/) + +Make example for this keyboard (after setting up your build environment): + + make keebio/nyquist_lm/rev1:default + +Example of flashing this keyboard: + + make keebio/nyquist_lm/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 the top left of left half or top right of right half and plug in the keyboard +* **Physical reset button**: Press and hold the button on the back of the PCB for at least 1 second and let go +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/keebio/nyquist_lm/rev1/config.h b/keyboards/keebio/nyquist_lm/rev1/config.h new file mode 100644 index 0000000000..06498b8b8b --- /dev/null +++ b/keyboards/keebio/nyquist_lm/rev1/config.h @@ -0,0 +1,23 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Defines for the split keyboard setup */ +#define SERIAL_USART_DRIVER SD1 // USART 1 +#define SERIAL_USART_TX_PIN A9 +#define SERIAL_USART_RX_PIN A10 +#define SERIAL_USART_TX_PAL_MODE 7 +#define SERIAL_USART_RX_PAL_MODE 7 +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_PIN_SWAP + +#define USB_VBUS_PIN A7 + +/* Defines for the RGB matrix */ +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 3 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 2 +#define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM3_UP diff --git a/keyboards/keebio/nyquist_lm/rev1/halconf.h b/keyboards/keebio/nyquist_lm/rev1/halconf.h new file mode 100644 index 0000000000..ce1dfd06d7 --- /dev/null +++ b/keyboards/keebio/nyquist_lm/rev1/halconf.h @@ -0,0 +1,10 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SERIAL TRUE + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/keebio/nyquist_lm/rev1/keyboard.json b/keyboards/keebio/nyquist_lm/rev1/keyboard.json new file mode 100644 index 0000000000..011bb01b5e --- /dev/null +++ b/keyboards/keebio/nyquist_lm/rev1/keyboard.json @@ -0,0 +1,304 @@ +{ + "keyboard_name": "Nyquist LM Rev. 1", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["A6", "A5", "A4", "A15", "B5", "B6"], + "rows": ["B3", "B4", "B7", "F0", "F1"] + }, + "processor": "STM32G431", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "flower_blooming": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_fractal": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true, + "starlight": true, + "starlight_smooth": true, + "starlight_dual_hue": true, + "starlight_dual_sat": true, + "riverflow": true + }, + "driver": "ws2812", + "layout": [ + { "flags": 4, "matrix": [0, 0], "x": 9, "y": 6 }, + { "flags": 4, "matrix": [0, 1], "x": 28, "y": 6 }, + { "flags": 4, "matrix": [0, 2], "x": 46, "y": 6 }, + { "flags": 4, "matrix": [0, 3], "x": 65, "y": 6 }, + { "flags": 4, "matrix": [0, 4], "x": 84, "y": 6 }, + { "flags": 4, "matrix": [0, 5], "x": 102, "y": 6 }, + + { "flags": 4, "matrix": [1, 5], "x": 102, "y": 19 }, + { "flags": 4, "matrix": [1, 4], "x": 84, "y": 19 }, + { "flags": 4, "matrix": [1, 3], "x": 65, "y": 19 }, + { "flags": 4, "matrix": [1, 2], "x": 46, "y": 19 }, + { "flags": 4, "matrix": [1, 1], "x": 28, "y": 19 }, + { "flags": 4, "matrix": [1, 0], "x": 9, "y": 19 }, + + { "flags": 4, "matrix": [2, 0], "x": 9, "y": 32 }, + { "flags": 4, "matrix": [2, 1], "x": 28, "y": 32 }, + { "flags": 4, "matrix": [2, 2], "x": 46, "y": 32 }, + { "flags": 4, "matrix": [2, 3], "x": 65, "y": 32 }, + { "flags": 4, "matrix": [2, 4], "x": 84, "y": 32 }, + { "flags": 4, "matrix": [2, 5], "x": 102, "y": 32 }, + + { "flags": 4, "matrix": [3, 5], "x": 102, "y": 44 }, + { "flags": 4, "matrix": [3, 4], "x": 84, "y": 44 }, + { "flags": 4, "matrix": [3, 3], "x": 65, "y": 44 }, + { "flags": 4, "matrix": [3, 2], "x": 46, "y": 44 }, + { "flags": 4, "matrix": [3, 1], "x": 28, "y": 44 }, + { "flags": 4, "matrix": [3, 0], "x": 9, "y": 44 }, + + { "flags": 4, "matrix": [4, 0], "x": 9, "y": 57 }, + { "flags": 4, "matrix": [4, 1], "x": 28, "y": 57 }, + { "flags": 4, "matrix": [4, 2], "x": 46, "y": 57 }, + { "flags": 4, "matrix": [4, 3], "x": 65, "y": 57 }, + { "flags": 4, "matrix": [4, 4], "x": 81, "y": 57 }, + { "flags": 4, "matrix": [4, 5], "x": 102, "y": 57 }, + + { "flags": 4, "matrix": [5, 0], "x": 121, "y": 6 }, + { "flags": 4, "matrix": [5, 1], "x": 140, "y": 6 }, + { "flags": 4, "matrix": [5, 2], "x": 158, "y": 6 }, + { "flags": 4, "matrix": [5, 3], "x": 177, "y": 6 }, + { "flags": 4, "matrix": [5, 4], "x": 196, "y": 6 }, + { "flags": 4, "matrix": [5, 5], "x": 214, "y": 6 }, + + { "flags": 4, "matrix": [6, 5], "x": 214, "y": 19 }, + { "flags": 4, "matrix": [6, 4], "x": 196, "y": 19 }, + { "flags": 4, "matrix": [6, 3], "x": 177, "y": 19 }, + { "flags": 4, "matrix": [6, 2], "x": 158, "y": 19 }, + { "flags": 4, "matrix": [6, 1], "x": 140, "y": 19 }, + { "flags": 4, "matrix": [6, 0], "x": 121, "y": 19 }, + + { "flags": 4, "matrix": [7, 0], "x": 121, "y": 32 }, + { "flags": 4, "matrix": [7, 1], "x": 140, "y": 32 }, + { "flags": 4, "matrix": [7, 2], "x": 158, "y": 32 }, + { "flags": 4, "matrix": [7, 3], "x": 177, "y": 32 }, + { "flags": 4, "matrix": [7, 4], "x": 196, "y": 32 }, + { "flags": 4, "matrix": [7, 5], "x": 214, "y": 32 }, + + { "flags": 4, "matrix": [8, 5], "x": 214, "y": 44 }, + { "flags": 4, "matrix": [8, 4], "x": 196, "y": 44 }, + { "flags": 4, "matrix": [8, 3], "x": 177, "y": 44 }, + { "flags": 4, "matrix": [8, 2], "x": 158, "y": 44 }, + { "flags": 4, "matrix": [8, 1], "x": 140, "y": 44 }, + { "flags": 4, "matrix": [8, 0], "x": 121, "y": 44 }, + + { "flags": 4, "matrix": [9, 0], "x": 121, "y": 57 }, + { "flags": 4, "matrix": [9, 1], "x": 140, "y": 57 }, + { "flags": 4, "matrix": [9, 2], "x": 158, "y": 57 }, + { "flags": 4, "matrix": [9, 3], "x": 177, "y": 57 }, + { "flags": 4, "matrix": [9, 4], "x": 196, "y": 57 }, + { "flags": 4, "matrix": [9, 5], "x": 214, "y": 57 } + ], + "max_brightness": 160, + "sleep": true, + "split_count": [30, 30] + }, + "split": { + "bootmagic": { + "matrix": [5, 5] + }, + "enabled": true, + "handedness": { + "pin": "A8" + }, + "serial": { + "driver": "usart" + }, + "transport": { + "sync": { + "matrix_state": true + } + } + }, + "usb": { + "device_version": "1.0.0", + "pid": "0x1856" + }, + "ws2812": { + "driver": "pwm", + "pin": "B0" + }, + "community_layouts": ["ortho_5x12", "ortho_4x12"], + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "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}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4}, + {"matrix": [4, 5], "x": 5, "y": 4}, + + {"matrix": [9, 0], "x": 7, "y": 4}, + {"matrix": [9, 1], "x": 8, "y": 4}, + {"matrix": [9, 2], "x": 9, "y": 4}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + }, + "LAYOUT_ortho_4x12": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "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}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3} + ] + } + } +} diff --git a/keyboards/keebio/nyquist_lm/rev1/mcuconf.h b/keyboards/keebio/nyquist_lm/rev1/mcuconf.h new file mode 100644 index 0000000000..77847f5b2c --- /dev/null +++ b/keyboards/keebio/nyquist_lm/rev1/mcuconf.h @@ -0,0 +1,14 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +/* enable USART1, used for split comms */ +#undef STM32_SERIAL_USE_USART1 +#define STM32_SERIAL_USE_USART1 TRUE + +/* enable TIM3, used for RGB LED PWM driver */ +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/keebio/nyquist_lm/rev1/rev1.c b/keyboards/keebio/nyquist_lm/rev1/rev1.c new file mode 100644 index 0000000000..9acf0dc882 --- /dev/null +++ b/keyboards/keebio/nyquist_lm/rev1/rev1.c @@ -0,0 +1,11 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +void keyboard_pre_init_kb(void) { + // Disable the PD peripheral in pre-init because its pins (B4, B6) are being used in the matrix: + PWR->CR3 |= PWR_CR3_UCPD_DBDIS; + // Call the corresponding _user() function (see https://docs.qmk.fm/#/custom_quantum_functions) + keyboard_pre_init_user(); +} From 1e067bd4dd5f378a9c3170d742d23823556d7991 Mon Sep 17 00:00:00 2001 From: Zackarias Montell Date: Tue, 9 Sep 2025 18:27:15 +0200 Subject: [PATCH 112/167] Add 5x6_split/rev1 keyboard (#25507) --- keyboards/handwired/5x6_split/rev1/config.h | 23 ++++ .../handwired/5x6_split/rev1/keyboard.json | 107 ++++++++++++++++++ .../5x6_split/rev1/keymaps/default/keymap.c | 46 ++++++++ keyboards/handwired/5x6_split/rev1/readme.md | 33 ++++++ 4 files changed, 209 insertions(+) create mode 100644 keyboards/handwired/5x6_split/rev1/config.h create mode 100644 keyboards/handwired/5x6_split/rev1/keyboard.json create mode 100644 keyboards/handwired/5x6_split/rev1/keymaps/default/keymap.c create mode 100644 keyboards/handwired/5x6_split/rev1/readme.md diff --git a/keyboards/handwired/5x6_split/rev1/config.h b/keyboards/handwired/5x6_split/rev1/config.h new file mode 100644 index 0000000000..0797edb143 --- /dev/null +++ b/keyboards/handwired/5x6_split/rev1/config.h @@ -0,0 +1,23 @@ +/* Copyright 2025 Zackarias Montell (@Wholteza) + * + * This 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 SERIAL_USART_FULL_DUPLEX + +#define SERIAL_USART_TX_PIN GP0 +#define SERIAL_USART_RX_PIN GP1 + +#define MASTER_RIGHT diff --git a/keyboards/handwired/5x6_split/rev1/keyboard.json b/keyboards/handwired/5x6_split/rev1/keyboard.json new file mode 100644 index 0000000000..4589b87855 --- /dev/null +++ b/keyboards/handwired/5x6_split/rev1/keyboard.json @@ -0,0 +1,107 @@ +{ + "manufacturer": "zacke.dev", + "keyboard_name": "5x6_split", + "maintainer": "Wholteza", + "board": "GENERIC_RP_RP2040", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP16", "GP17", "GP18", "GP19", "GP20", "GP21"], + "rows": ["GP15", "GP14", "GP13", "GP12", "GP11"] + }, + "processor": "RP2040", + "split": { + "enabled": true, + "matrix_pins": { + "right": { + "cols": ["GP10", "GP11", "GP12", "GP13", "GP14", "GP15"], + "rows": ["GP16", "GP17", "GP18", "GP19", "GP20"] + } + }, + "serial": { + "driver": "vendor" + }, + "transport": { + "watchdog": true, + "watchdog_timeout": 3000 + } + }, + "url": "https://git.zacke.dev/wholteza/5x6-split-kb/src/branch/main/rev1", + "usb": { + "device_version": "1.0.0", + "pid": "0x0057", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [5, 0], "x": 6, "y": 0}, + {"matrix": [5, 1], "x": 7, "y": 0}, + {"matrix": [5, 2], "x": 8, "y": 0}, + {"matrix": [5, 3], "x": 9, "y": 0}, + {"matrix": [5, 4], "x": 10, "y": 0}, + {"matrix": [5, 5], "x": 11, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [6, 0], "x": 6, "y": 1}, + {"matrix": [6, 1], "x": 7, "y": 1}, + {"matrix": [6, 2], "x": 8, "y": 1}, + {"matrix": [6, 3], "x": 9, "y": 1}, + {"matrix": [6, 4], "x": 10, "y": 1}, + {"matrix": [6, 5], "x": 11, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [7, 0], "x": 6, "y": 2}, + {"matrix": [7, 1], "x": 7, "y": 2}, + {"matrix": [7, 2], "x": 8, "y": 2}, + {"matrix": [7, 3], "x": 9, "y": 2}, + {"matrix": [7, 4], "x": 10, "y": 2}, + {"matrix": [7, 5], "x": 11, "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}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [8, 0], "x": 6, "y": 3}, + {"matrix": [8, 1], "x": 7, "y": 3}, + {"matrix": [8, 2], "x": 8, "y": 3}, + {"matrix": [8, 3], "x": 9, "y": 3}, + {"matrix": [8, 4], "x": 10, "y": 3}, + {"matrix": [8, 5], "x": 11, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4}, + {"matrix": [4, 5], "x": 5, "y": 4}, + {"matrix": [9, 0], "x": 6, "y": 4}, + {"matrix": [9, 1], "x": 7, "y": 4}, + {"matrix": [9, 2], "x": 8, "y": 4}, + {"matrix": [9, 3], "x": 9, "y": 4}, + {"matrix": [9, 4], "x": 10, "y": 4}, + {"matrix": [9, 5], "x": 11, "y": 4} + ] + } + } +} diff --git a/keyboards/handwired/5x6_split/rev1/keymaps/default/keymap.c b/keyboards/handwired/5x6_split/rev1/keymaps/default/keymap.c new file mode 100644 index 0000000000..05f023d3c8 --- /dev/null +++ b/keyboards/handwired/5x6_split/rev1/keymaps/default/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2025 Zackarias Montell (@Wholteza) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _LOWER, + _RAISE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + _______, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [_LOWER] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_RAISE] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, QK_BOOT + ) +}; diff --git a/keyboards/handwired/5x6_split/rev1/readme.md b/keyboards/handwired/5x6_split/rev1/readme.md new file mode 100644 index 0000000000..0e0c41fc1d --- /dev/null +++ b/keyboards/handwired/5x6_split/rev1/readme.md @@ -0,0 +1,33 @@ +# 5x6_split revision 1 + +![5x6_split-rev1](https://i.imgur.com/FJ3kro3.jpeg) + +**This is the first revision of the 5x6_split keyboard.** + +The 5x6_split is designed to be easily accessible, with openly and freely available hardware and firmware. It features a split layout to minimize the PCB footprint, reducing manufacturing costs. Like the Ergodox, it allows you to keep your hands at shoulder width for a more natural typing posture, but without a thumb cluster, making it a better option for users who experience discomfort or limitations in their thumbs. + +The keyboard is also designed with ergonomics in mind. Its low profile, measuring just 19.4 mm from the table to the top of the keycaps (including rubber feet), helps reduce wrist strain during extended use. + +In the repository linked below (see the Hardware Availability section), you will find KiCad schematics, PCB designs, and 3D models for a printable chassis. + +* Keyboard Maintainer: [wholteza](https://github.com/wholteza) +* Hardware Supported: Raspberry Pi Pico, 5x6_split PCB, 5x6_split Chassis +* Hardware Availability: [PCB, Chassi 3d-models](https://git.zacke.dev/wholteza/5x6-split-kb/src/branch/main/rev1) + +Make example for this keyboard (after setting up your build environment): + + make handwired/5x6_split/rev1:default + +Flashing example for this keyboard: + + make handwired/5x6_split/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 (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From ec515f21647d15f7a99702e57700fca12f51620b Mon Sep 17 00:00:00 2001 From: Zackarias Montell Date: Tue, 9 Sep 2025 18:28:12 +0200 Subject: [PATCH 113/167] Add handwired/planck keyboard (#25506) --- keyboards/handwired/planck/keyboard.json | 77 +++++++++++++++++++ .../handwired/planck/keymaps/default/keymap.c | 43 +++++++++++ keyboards/handwired/planck/readme.md | 27 +++++++ 3 files changed, 147 insertions(+) create mode 100644 keyboards/handwired/planck/keyboard.json create mode 100644 keyboards/handwired/planck/keymaps/default/keymap.c create mode 100644 keyboards/handwired/planck/readme.md diff --git a/keyboards/handwired/planck/keyboard.json b/keyboards/handwired/planck/keyboard.json new file mode 100644 index 0000000000..dde4ecb9e6 --- /dev/null +++ b/keyboards/handwired/planck/keyboard.json @@ -0,0 +1,77 @@ +{ + "manufacturer": "OLKB", + "keyboard_name": "Planck", + "maintainer": "Wholteza ", + "bootloader": "halfkay", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["C7", "D6", "D7", "B4", "B5", "B6", "F7", "F6", "F5", "F4", "F1", "F0"], + "rows": ["E6", "B3", "B7", "D0"] + }, + "processor": "atmega32u4", + "url": "https://blog.roastpotatoes.co/guide/2015/11/04/how-to-handwire-a-planck/", + "usb": { + "device_version": "1.0.0", + "pid": "0x0053", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [2, 11], "x": 11, "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}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 7], "x": 7, "y": 3}, + {"matrix": [3, 8], "x": 8, "y": 3}, + {"matrix": [3, 9], "x": 9, "y": 3}, + {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 11], "x": 11, "y": 3} + ] + } + } +} diff --git a/keyboards/handwired/planck/keymaps/default/keymap.c b/keyboards/handwired/planck/keymaps/default/keymap.c new file mode 100644 index 0000000000..3783d37f95 --- /dev/null +++ b/keyboards/handwired/planck/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2025 Zackarias Montel (@Wholteza) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _NUM, + _SYM +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [_NUM] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_SYM] = LAYOUT( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, QK_BOOT + ) +}; diff --git a/keyboards/handwired/planck/readme.md b/keyboards/handwired/planck/readme.md new file mode 100644 index 0000000000..3bdbf87270 --- /dev/null +++ b/keyboards/handwired/planck/readme.md @@ -0,0 +1,27 @@ +# Plank Handwired + +![plank handwired](https://i.imgur.com/khseWs7.jpeg) + +A compact 40% (12x4) ortholinear keyboard kit sold by OLKB before the PCB was released. + +Keyboard Maintainer: [Wholteza](https://github.com/wholteza) +Hardware Supported: [Teensy 2.0](https://www.pjrc.com/store/teensy.html) +Hardware Availability: [PJRC](https://www.pjrc.com/store/teensy.html) + +Make example for this keyboard (after setting up your build environment): + + make handwired/planck:default + +Flashing example for this keyboard: + + make handwired/planck: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 (The left key closest to the USB Port) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From 4fc14c2712b149e37673ed3130377778336f6447 Mon Sep 17 00:00:00 2001 From: Sam Mohr Date: Tue, 9 Sep 2025 12:32:59 -0400 Subject: [PATCH 114/167] [Keyboard] Add the Clog (#23009) --- keyboards/clog/keyboard.json | 89 +++++++++++++++++++++++++ keyboards/clog/keymaps/default/config.h | 7 ++ keyboards/clog/keymaps/default/keymap.c | 35 ++++++++++ keyboards/clog/readme.md | 26 ++++++++ 4 files changed, 157 insertions(+) create mode 100644 keyboards/clog/keyboard.json create mode 100644 keyboards/clog/keymaps/default/config.h create mode 100644 keyboards/clog/keymaps/default/keymap.c create mode 100644 keyboards/clog/readme.md diff --git a/keyboards/clog/keyboard.json b/keyboards/clog/keyboard.json new file mode 100644 index 0000000000..6197a176e5 --- /dev/null +++ b/keyboards/clog/keyboard.json @@ -0,0 +1,89 @@ +{ + "keyboard_name": "The Clog", + "manufacturer": "S'mores", + "url": "https://github.com/smores56/clog", + "maintainer": "@smores56", + "usb": { + "vid": "0xBEEF", + "pid": "0x5051", + "device_version": "0.0.1" + }, + "development_board": "elite_c", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": false + }, + "matrix_pins": { + "direct": [ + ["B2", "F7", "F6", "F5", "F4"], + ["B6", "B3", "B1", "D3", "D1"], + ["D0", "D4", "C6", "D7", "E6"], + ["B4", "B5", null, null, null] + ] + }, + "split": { + "bootmagic": { + "matrix": [4, 4] + }, + "enabled": true, + "matrix_pins": { + "right": { + "direct": [ + ["F4", "F5", "F6", "F7", "B2"], + ["D1", "D3", "B1", "B3", "B6"], + ["E6", "D7", "C6", "D4", "D0"], + ["B5", "B4", null, null, null] + ] + } + }, + "serial": { + "pin": "D2" + } + }, + "community_layouts": ["split_3x5_2"], + "layout_aliases": { + "LAYOUT": "LAYOUT_split_3x5_2" + }, + "layouts": { + "LAYOUT_split_3x5_2": { + "layout": [ + {"label": "L01", "matrix": [0, 0], "x": 0, "y": 2.27}, + {"label": "L02", "matrix": [0, 1], "x": 2, "y": 0.31}, + {"label": "L03", "matrix": [0, 2], "x": 3, "y": 0}, + {"label": "L04", "matrix": [0, 3], "x": 4, "y": 0.28}, + {"label": "L05", "matrix": [0, 4], "x": 5, "y": 0.42}, + {"label": "R01", "matrix": [4, 0], "x": 9, "y": 0.42}, + {"label": "R02", "matrix": [4, 1], "x": 10, "y": 0.28}, + {"label": "R03", "matrix": [4, 2], "x": 11, "y": 0}, + {"label": "R04", "matrix": [4, 3], "x": 12, "y": 0.31}, + {"label": "R05", "matrix": [4, 4], "x": 14, "y": 2.27}, + {"label": "L06", "matrix": [1, 0], "x": 0, "y": 2.27}, + {"label": "L07", "matrix": [1, 1], "x": 2, "y": 1.31}, + {"label": "L08", "matrix": [1, 2], "x": 3, "y": 1}, + {"label": "L09", "matrix": [1, 3], "x": 4, "y": 1.28}, + {"label": "L10", "matrix": [1, 4], "x": 5, "y": 1.42}, + {"label": "R06", "matrix": [5, 0], "x": 9, "y": 1.42}, + {"label": "R07", "matrix": [5, 1], "x": 10, "y": 1.28}, + {"label": "R08", "matrix": [5, 2], "x": 11, "y": 1}, + {"label": "R09", "matrix": [5, 3], "x": 12, "y": 1.31}, + {"label": "R10", "matrix": [5, 4], "x": 14, "y": 2.27}, + {"label": "L11", "matrix": [2, 0], "x": 0, "y": 3.27}, + {"label": "L12", "matrix": [2, 1], "x": 2, "y": 2.31}, + {"label": "L13", "matrix": [2, 2], "x": 3, "y": 2}, + {"label": "L14", "matrix": [2, 3], "x": 4, "y": 2.28}, + {"label": "L15", "matrix": [2, 4], "x": 5, "y": 2.42}, + {"label": "R11", "matrix": [6, 0], "x": 9, "y": 2.42}, + {"label": "R12", "matrix": [6, 1], "x": 10, "y": 2.28}, + {"label": "R13", "matrix": [6, 2], "x": 11, "y": 2}, + {"label": "R14", "matrix": [6, 3], "x": 12, "y": 2.31}, + {"label": "R15", "matrix": [6, 4], "x": 14, "y": 3.27}, + {"label": "L16", "matrix": [3, 0], "x": 5, "y": 3.9}, + {"label": "L17", "matrix": [3, 1], "x": 6, "y": 3.7}, + {"label": "R16", "matrix": [7, 0], "x": 8, "y": 3.7}, + {"label": "R17", "matrix": [7, 1], "x": 9, "y": 3.9} + ] + } + } +} diff --git a/keyboards/clog/keymaps/default/config.h b/keyboards/clog/keymaps/default/config.h new file mode 100644 index 0000000000..be257a5919 --- /dev/null +++ b/keyboards/clog/keymaps/default/config.h @@ -0,0 +1,7 @@ +// Copyright 2024 Sam Mohr (@smores56) +// SPDX-License-Identifier: GPL-2.0+ + +#pragma once + +// Defaults for usable home row mods +#define TAPPING_TERM 250 diff --git a/keyboards/clog/keymaps/default/keymap.c b/keyboards/clog/keymaps/default/keymap.c new file mode 100644 index 0000000000..98617d7de0 --- /dev/null +++ b/keyboards/clog/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +// Copyright 2024 Sam Mohr (@smores56) +// SPDX-License-Identifier: GPL-2.0+ + +#include QMK_KEYBOARD_H + +/* Base layer 0 layout uses home row mods. See the following guide for details: + * https://precondition.github.io/home-row-mods + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x5_2( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + CTL_T(KC_A),ALT_T(KC_S),GUI_T(KC_D),SFT_T(KC_F), KC_G, KC_H, SFT_T(KC_J),GUI_T(KC_K),ALT_T(KC_L),CTL_T(KC_SCLN), + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + LT(2,KC_TAB), KC_ENT, KC_SPC, LT(1,KC_BSPC) + ), + [1] = LAYOUT_split_3x5_2( + KC_INS, KC_1, KC_2, KC_3, KC_VOLU, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_DQUO, + KC_DEL, KC_4, KC_5, KC_6, KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, + KC_CAPS, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______, + MO(3), QK_GESC, _______, _______ + ), + [2] = LAYOUT_split_3x5_2( + _______, KC_LBRC, KC_LCBR, KC_RCBR, _______, KC_CIRC, KC_LPRN, KC_RPRN, KC_RBRC, KC_TILD, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + _______, _______, _______, _______, _______, KC_ASTR, KC_UNDS, KC_PLUS, KC_PIPE, _______, + _______, _______, KC_DEL, MO(3) + ), + [3] = LAYOUT_split_3x5_2( + _______, KC_F1, KC_F2, KC_F3, KC_F10, _______, MS_WHLU, MS_WHLD, _______, QK_BOOT, + _______, KC_F4, KC_F5, KC_F6, KC_F11, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, KC_INS, + _______, KC_F7, KC_F8, KC_F9, KC_F12, _______, MS_BTN1, MS_BTN2, _______, _______, + _______, _______, _______, _______ + ) +}; diff --git a/keyboards/clog/readme.md b/keyboards/clog/readme.md new file mode 100644 index 0000000000..ddf7105669 --- /dev/null +++ b/keyboards/clog/readme.md @@ -0,0 +1,26 @@ +# The Clog + +This is the official firmware for a family of boards designed by [smores56](https://github.com/smores56), +the first of which was [the Clog](https://github.com/smores56/clog). This firmware works for the following boards: + +- [The Clog](https://github.com/smores56/clog) +- [The Clog V3](https://github.com/smores56/clog-v3) +- [The Steel Toe](https://github.com/smores56/steel-toe) +- [The Sephirette](https://github.com/smores56/sephirette) + +Make example for this keyboard (after setting up your build environment): + + make clog:default + +Flashing example for this keyboard: + + make clog: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 2 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 +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From f6f627d07fe6acf54e88bfba2e41688e3eb58444 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Wed, 10 Sep 2025 02:35:01 +1000 Subject: [PATCH 115/167] Print build failures with `qmk mass-compile` and `qmk userspace-compile` if requested (`-p`/`--print-failures`) (#25518) --- docs/cli_commands.md | 7 +++--- lib/python/qmk/cli/mass_compile.py | 31 ++++++++++++++++++++++--- lib/python/qmk/cli/userspace/compile.py | 3 ++- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/docs/cli_commands.md b/docs/cli_commands.md index 54bf5cc123..02f362b14c 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -631,14 +631,15 @@ This command compiles all the External Userspace build targets. **Usage**: ``` -qmk userspace-compile [-h] [-e ENV] [-n] [-c] [-j PARALLEL] [-t] +qmk userspace-compile [-h] [-e ENV] [-p] [-n] [-c] [-j PARALLEL] [-t] options: -h, --help show this help message and exit - -e ENV, --env ENV Set a variable to be passed to make. May be passed multiple times. + -e, --env ENV Set a variable to be passed to make. May be passed multiple times. + -p, --print-failures Print failed builds. -n, --dry-run Don't actually build, just show the commands to be run. -c, --clean Remove object files before compiling. - -j PARALLEL, --parallel PARALLEL + -j, --parallel PARALLEL Set the number of parallel make jobs; 0 means unlimited. -t, --no-temp Remove temporary files during build. ``` diff --git a/lib/python/qmk/cli/mass_compile.py b/lib/python/qmk/cli/mass_compile.py index 4c4669d451..e71280f482 100755 --- a/lib/python/qmk/cli/mass_compile.py +++ b/lib/python/qmk/cli/mass_compile.py @@ -16,7 +16,7 @@ from qmk.build_targets import BuildTarget, JsonKeymapBuildTarget from qmk.util import maybe_exit_config -def mass_compile_targets(targets: List[BuildTarget], clean: bool, dry_run: bool, no_temp: bool, parallel: int, **env): +def mass_compile_targets(targets: List[BuildTarget], clean: bool, dry_run: bool, no_temp: bool, parallel: int, print_failures: bool, **env): if len(targets) == 0: return @@ -37,6 +37,30 @@ def mass_compile_targets(targets: List[BuildTarget], clean: bool, dry_run: bool, builddir.mkdir(parents=True, exist_ok=True) with open(makefile, "w") as f: + # yapf: disable + f.write( + f"""\ +# This file is auto-generated by qmk mass-compile +# Do not edit this file directly. +all: print_failures +.PHONY: all_targets print_failures +print_failures: all_targets +"""# noqa + ) + if print_failures: + f.write( + f"""\ + @for f in $$(ls .build/failed.log.{os.getpid()}.* 2>/dev/null | sort); do \\ + echo; \\ + echo "======================================================================================"; \\ + echo "Failed build log: $$f"; \\ + echo "------------------------------------------------------"; \\ + cat $$f; \\ + echo "------------------------------------------------------"; \\ + done +"""# noqa + ) + # yapf: enable for target in sorted(targets, key=lambda t: (t.keyboard, t.keymap)): keyboard_name = target.keyboard keymap_name = target.keymap @@ -58,7 +82,7 @@ def mass_compile_targets(targets: List[BuildTarget], clean: bool, dry_run: bool, f.write( f"""\ .PHONY: {target_filename}{target_suffix}_binary -all: {target_filename}{target_suffix}_binary +all_targets: {target_filename}{target_suffix}_binary {target_filename}{target_suffix}_binary: @rm -f "{build_log}" || true @echo "Compiling QMK Firmware for target: '{keyboard_name}:{keymap_name}'..." >>"{build_log}" @@ -98,6 +122,7 @@ all: {target_filename}{target_suffix}_binary @cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs; 0 means unlimited.") @cli.argument('-c', '--clean', arg_only=True, action='store_true', help="Remove object files before compiling.") @cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't actually build, just show the commands to be run.") +@cli.argument('-p', '--print-failures', arg_only=True, action='store_true', help="Print failed builds.") @cli.argument( '-f', '--filter', @@ -123,4 +148,4 @@ def mass_compile(cli): else: targets = search_keymap_targets([('all', cli.config.mass_compile.keymap)], cli.args.filter) - return mass_compile_targets(targets, cli.args.clean, cli.args.dry_run, cli.args.no_temp, cli.config.mass_compile.parallel, **build_environment(cli.args.env)) + return mass_compile_targets(targets, cli.args.clean, cli.args.dry_run, cli.args.no_temp, cli.config.mass_compile.parallel, cli.args.print_failures, **build_environment(cli.args.env)) diff --git a/lib/python/qmk/cli/userspace/compile.py b/lib/python/qmk/cli/userspace/compile.py index f164ca2ef1..64fa3ed0c9 100644 --- a/lib/python/qmk/cli/userspace/compile.py +++ b/lib/python/qmk/cli/userspace/compile.py @@ -20,6 +20,7 @@ def _extra_arg_setter(target, extra_args): @cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs; 0 means unlimited.") @cli.argument('-c', '--clean', arg_only=True, action='store_true', help="Remove object files before compiling.") @cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't actually build, just show the commands to be run.") +@cli.argument('-p', '--print-failures', arg_only=True, action='store_true', help="Print failed builds.") @cli.argument('-e', '--env', arg_only=True, action='append', default=[], help="Set a variable to be passed to make. May be passed multiple times.") @cli.subcommand('Compiles the build targets specified in userspace `qmk.json`.') def userspace_compile(cli): @@ -42,4 +43,4 @@ def userspace_compile(cli): if len(keyboard_keymap_targets) > 0: build_targets.extend(search_keymap_targets(keyboard_keymap_targets)) - return mass_compile_targets(list(set(build_targets)), cli.args.clean, cli.args.dry_run, cli.config.userspace_compile.no_temp, cli.config.userspace_compile.parallel, **build_environment(cli.args.env)) + return mass_compile_targets(list(set(build_targets)), cli.args.clean, cli.args.dry_run, cli.config.userspace_compile.no_temp, cli.config.userspace_compile.parallel, cli.args.print_failures, **build_environment(cli.args.env)) From 7be4540b4688eab74920eb4cb2347af43fb6a779 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 17:40:53 +0100 Subject: [PATCH 116/167] Bump actions/checkout from 4 to 5 (#25554) Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/api.yml | 2 +- .github/workflows/auto_tag.yml | 2 +- .github/workflows/ci_build_major_branch.yml | 4 ++-- .github/workflows/ci_build_major_branch_keymap.yml | 6 +++--- .github/workflows/cli.yml | 2 +- .github/workflows/develop_update.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/feature_branch_update.yml | 2 +- .github/workflows/format.yml | 2 +- .github/workflows/format_push.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/regen.yml | 2 +- .github/workflows/regen_push.yml | 2 +- .github/workflows/unit_test.yml | 2 +- 14 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml index db78f16112..cdf6349878 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -25,7 +25,7 @@ jobs: if: github.repository == 'qmk/qmk_firmware' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 1 persist-credentials: false diff --git a/.github/workflows/auto_tag.yml b/.github/workflows/auto_tag.yml index 4afca6c66d..a2c6a104a8 100644 --- a/.github/workflows/auto_tag.yml +++ b/.github/workflows/auto_tag.yml @@ -28,7 +28,7 @@ jobs: if: github.repository == 'qmk/qmk_firmware' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/ci_build_major_branch.yml b/.github/workflows/ci_build_major_branch.yml index 403ad8b3ef..48ae71114f 100644 --- a/.github/workflows/ci_build_major_branch.yml +++ b/.github/workflows/ci_build_major_branch.yml @@ -45,7 +45,7 @@ jobs: git config --global --add safe.directory '*' - name: Checkout QMK Firmware - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Determine concurrency id: generate_slice_length @@ -83,7 +83,7 @@ jobs: git config --global --add safe.directory '*' - name: Checkout QMK Firmware - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/ci_build_major_branch_keymap.yml b/.github/workflows/ci_build_major_branch_keymap.yml index 4123b17b5f..1a0b44b908 100644 --- a/.github/workflows/ci_build_major_branch_keymap.yml +++ b/.github/workflows/ci_build_major_branch_keymap.yml @@ -37,7 +37,7 @@ jobs: git config --global --add safe.directory '*' - name: Checkout QMK Firmware - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Generate build targets id: generate_targets @@ -89,7 +89,7 @@ jobs: git config --global --add safe.directory '*' - name: Checkout QMK Firmware - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Get target definitions uses: actions/download-artifact@v5 @@ -136,7 +136,7 @@ jobs: steps: - name: Checkout QMK Firmware - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Download firmwares uses: actions/download-artifact@v5 diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml index 77b5bfe073..fc24c6b366 100644 --- a/.github/workflows/cli.yml +++ b/.github/workflows/cli.yml @@ -24,7 +24,7 @@ jobs: - name: Disable safe.directory check run : git config --global --add safe.directory '*' - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: submodules: recursive diff --git a/.github/workflows/develop_update.yml b/.github/workflows/develop_update.yml index afcda1fe98..5c046b8f64 100644 --- a/.github/workflows/develop_update.yml +++ b/.github/workflows/develop_update.yml @@ -15,7 +15,7 @@ jobs: if: github.repository == 'qmk/qmk_firmware' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: token: ${{ secrets.QMK_BOT_TOKEN }} fetch-depth: 0 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 34319675bf..275e2b2483 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -30,7 +30,7 @@ jobs: container: ghcr.io/qmk/qmk_cli steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 1 diff --git a/.github/workflows/feature_branch_update.yml b/.github/workflows/feature_branch_update.yml index 283a255342..fc33f883a8 100644 --- a/.github/workflows/feature_branch_update.yml +++ b/.github/workflows/feature_branch_update.yml @@ -21,7 +21,7 @@ jobs: - riot steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: token: ${{ secrets.QMK_BOT_TOKEN }} fetch-depth: 0 diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 309b9eeda1..9dbda4e5a6 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -26,7 +26,7 @@ jobs: - name: Disable safe.directory check run : git config --global --add safe.directory '*' - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/format_push.yml b/.github/workflows/format_push.yml index b865ea9eec..74a42669d6 100644 --- a/.github/workflows/format_push.yml +++ b/.github/workflows/format_push.yml @@ -19,7 +19,7 @@ jobs: - name: Disable safe.directory check run : git config --global --add safe.directory '*' - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 581fe02156..62e1263a48 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -18,7 +18,7 @@ jobs: - name: Disable safe.directory check run : git config --global --add safe.directory '*' - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/regen.yml b/.github/workflows/regen.yml index a31526084f..06759102cc 100644 --- a/.github/workflows/regen.yml +++ b/.github/workflows/regen.yml @@ -19,7 +19,7 @@ jobs: - name: Disable safe.directory check run : git config --global --add safe.directory '*' - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Run qmk generators run: | diff --git a/.github/workflows/regen_push.yml b/.github/workflows/regen_push.yml index 8f22e931f1..4798e86c59 100644 --- a/.github/workflows/regen_push.yml +++ b/.github/workflows/regen_push.yml @@ -19,7 +19,7 @@ jobs: - name: Disable safe.directory check run : git config --global --add safe.directory '*' - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Run qmk generators run: | diff --git a/.github/workflows/unit_test.yml b/.github/workflows/unit_test.yml index a834053a76..7ab9969242 100644 --- a/.github/workflows/unit_test.yml +++ b/.github/workflows/unit_test.yml @@ -26,7 +26,7 @@ jobs: container: ghcr.io/qmk/qmk_cli steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: submodules: recursive - name: Install dependencies From 09ab67c0440d8e5e3faf832d23eb1b754845a573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Magimel?= Date: Tue, 9 Sep 2025 23:51:13 +0200 Subject: [PATCH 117/167] docs: fix misspellings (#25555) * docs: fix misspellings * docs: do line breaks with HTML instead of spaces To remove trailing spaces and to avoid breaking things, line breaks can be done with the HTML br tag. --- docs/ChangeLog/20200229.md | 2 +- docs/ChangeLog/20200530.md | 20 ++++---- docs/ChangeLog/20210529.md | 6 +-- docs/ChangeLog/20210828.md | 2 +- docs/ChangeLog/20220226.md | 2 +- docs/custom_quantum_functions.md | 8 ++-- docs/drivers/serial.md | 16 +++---- docs/feature_debounce_type.md | 2 +- docs/feature_eeprom.md | 4 +- docs/feature_layers.md | 46 +++++++++---------- docs/feature_userspace.md | 43 ++++++++--------- docs/features/audio.md | 29 ++++++------ docs/features/bootmagic.md | 2 +- docs/features/encoders.md | 2 +- docs/features/haptic_feedback.md | 14 +++--- docs/features/pointing_device.md | 79 +++++++++++++++++--------------- docs/features/repeat_key.md | 34 +++++++------- docs/features/rgb_matrix.md | 14 +++--- docs/features/space_cadet.md | 2 +- docs/features/split_keyboard.md | 62 ++++++++++++------------- docs/features/st7565.md | 4 +- docs/features/stenography.md | 2 +- docs/hand_wire.md | 10 ++-- docs/hardware_drivers.md | 2 +- docs/quantum_painter_lvgl.md | 4 +- docs/squeezing_avr.md | 14 +++--- docs/usb_nkro.txt | 2 +- drivers/lcd/st7565.h | 4 +- tmk_core/protocol/report.c | 2 +- 29 files changed, 219 insertions(+), 214 deletions(-) diff --git a/docs/ChangeLog/20200229.md b/docs/ChangeLog/20200229.md index 02bca3e371..fd075c24e0 100644 --- a/docs/ChangeLog/20200229.md +++ b/docs/ChangeLog/20200229.md @@ -36,7 +36,7 @@ Four times a year QMK runs a process for merging Breaking Changes. A Breaking Ch ## Encoder flip * Flips the encoder direction so that `clockwise == true` is for actually turning the knob clockwise -* Adds `ENCODER_DIRECTION_FLIP` define, so that reversing the expected dirction is simple for users. +* Adds `ENCODER_DIRECTION_FLIP` define, so that reversing the expected direction is simple for users. * Cleans up documentation page for encoders diff --git a/docs/ChangeLog/20200530.md b/docs/ChangeLog/20200530.md index 9def9ae123..701b6bd5d6 100644 --- a/docs/ChangeLog/20200530.md +++ b/docs/ChangeLog/20200530.md @@ -19,7 +19,7 @@ These PRs move the V-USB driver code out of the qmk_firmware repository and into Updates all of the per key tap-hold functions to pass the `keyrecord_t` structure, and include documentation changes. -Any remaining versions or code outside of the main repo will need to be converted: +Any remaining versions or code outside of the main repo will need to be converted: | Old function | New Function | |------------------------------------------------------|---------------------------------------------------------------------------| |`uint16_t get_tapping_term(uint16_t keycode)` |`uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record)` | @@ -38,7 +38,7 @@ After the next breaking change you will not be able to build if `bin/qmk hello` [#8269](https://github.com/qmk/qmk_firmware/pull/8269) - Provides debug functionality on ChibiOS/ARM that is more compliant than previous integrations. -- Less maintenence, fewer QMK customisations, and allows QMK to sidestep previous compile and runtime issues. +- Less maintenance, fewer QMK customisations, and allows QMK to sidestep previous compile and runtime issues. - A `make git-submodule` may be required after pulling the latest QMK Firmware code to update to the new dependency. ### Fixed RGB_DISABLE_AFTER_TIMEOUT to be seconds based & small internals cleanup @@ -51,8 +51,10 @@ After the next breaking change you will not be able to build if `bin/qmk hello` The `RGB_DISABLE_AFTER_TIMEOUT` definition is now deprecated, and has been superseded by `RGB_DISABLE_TIMEOUT`. To use the new definition, rename `RGB_DISABLE_AFTER_TIMEOUT` to `RGB_DISABLE_TIMEOUT` in your `config.h` file, and multiply the value set by 1200. -Before: `#define RGB_DISABLE_AFTER_TIMEOUT 100` -After: `#define RGB_DISABLE_TIMEOUT 120000` +```diff +-#define RGB_DISABLE_AFTER_TIMEOUT 100 ++#define RGB_DISABLE_TIMEOUT 120000 +``` ### Switch to qmk forks for everything @@ -103,8 +105,8 @@ This allows current lily58 firmware to advance with updates to the `split_common - Alternatively, if you did not change the OLED code from that in `default`, you may find it easier to simply copy the [relevant section](https://github.com/qmk/qmk_firmware/blob/4ac310668501ae6786c711ecc8f01f62ddaa1c0b/keyboards/lily58/keymaps/default/keymap.c#L138-L172). Otherwise, the changes you need to make are as follows (sample change [here](https://github.com/qmk/qmk_firmware/pull/6260/files#diff-20943ea59856e9bdf3d99ecb2eee40b7R138-R173)) - [Remove](https://github.com/qmk/qmk_firmware/pull/6260/files#diff-20943ea59856e9bdf3d99ecb2eee40b7L138-L141) the block ```c -#ifdef SSD1306OLED - iota_gfx_init(!has_usb()); // turns on the display +#ifdef SSD1306OLED + iota_gfx_init(!has_usb()); // turns on the display #endif ``` - Within the block bounded by `#ifdef OLED_DRIVER_ENABLE` and `#endif // OLED_DRIVER_ENABLE`, add the following block to ensure that your two OLEDs are rotated correctly across the left and right sides: @@ -127,7 +129,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { * Refactor to use split_common and remove split codes under the zinc/revx/ * Add - backlight RGB LED and/or underglow RGB LED option -* Add - continuous RGB animations feature (between L and R halves) +* Add - continuous RGB animations feature (between L and R halves) * Fix - keymap files to adapt to changes * all authors of keymaps confirmed this PR * Update - documents and rules.mk @@ -164,8 +166,8 @@ void keyboard_pre_init_kb(void) { - The following changes are for compatibility with the OLED driver. If you don't use the OLED driver you may safely delete [this section](https://github.com/qmk/qmk_firmware/blob/e6b9980bd45c186f7360df68c24b6e05a80c10dc/keyboards/lily58/keymaps/default/keymap.c#L144-L190) - [Remove](https://github.com/qmk/qmk_firmware/pull/6260/files#diff-20943ea59856e9bdf3d99ecb2eee40b7L91-L158) the block ```c -#ifdef SSD1306OLED - iota_gfx_init(!has_usb()); // turns on the display +#ifdef SSD1306OLED + iota_gfx_init(!has_usb()); // turns on the display #endif ``` - Within the block bounded by `#ifdef OLED_DRIVER_ENABLE` and `#endif // OLED_DRIVER_ENABLE`, add the following block to ensure that your two OLEDs are rotated correctly across the left and right sides: diff --git a/docs/ChangeLog/20210529.md b/docs/ChangeLog/20210529.md index 69923b0c5a..e3d250874a 100644 --- a/docs/ChangeLog/20210529.md +++ b/docs/ChangeLog/20210529.md @@ -12,7 +12,7 @@ Added support for MK66F18 (Teensy 3.6) microcontroller. ### New command: qmk console ([#12828](https://github.com/qmk/qmk_firmware/pull/12828)) {#new-command-qmk-console} -A new `qmk console` command has been added for attaching to your keyboard's console. It operates similiarly to QMK Toolbox by allowing you to connect to one or more keyboard consoles to display debugging messages. +A new `qmk console` command has been added for attaching to your keyboard's console. It operates similarly to QMK Toolbox by allowing you to connect to one or more keyboard consoles to display debugging messages. ### Improved command: qmk config {#improve-command-qmk-config} @@ -121,8 +121,8 @@ bool encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_UP); } } - return true; - // If you return true, this will allow the keyboard level code to run, as well. + return true; + // If you return true, this will allow the keyboard level code to run, as well. //Returning false will override the keyboard level code. Depending on how the keyboard level function is set up. } ``` diff --git a/docs/ChangeLog/20210828.md b/docs/ChangeLog/20210828.md index 18b1d92b0c..9268711262 100644 --- a/docs/ChangeLog/20210828.md +++ b/docs/ChangeLog/20210828.md @@ -104,7 +104,7 @@ void dip_switch_update_user(uint8_t index, bool active) { } } -void dip_switch_update_mask_kb(uint32_t state) { +void dip_switch_update_mask_kb(uint32_t state) { dip_switch_update_mask_user(state); } diff --git a/docs/ChangeLog/20220226.md b/docs/ChangeLog/20220226.md index a10b6447ea..29283a3a9c 100644 --- a/docs/ChangeLog/20220226.md +++ b/docs/ChangeLog/20220226.md @@ -29,7 +29,7 @@ Bootloader configuration is no longer assumed. Keyboards must now set either: ### Rename `AdafruitBLE` to `BluefruitLE` ([#16127](https://github.com/qmk/qmk_firmware/pull/16127)) -In preparation of future bluetooth work, the `AdafruitBLE` integration has been renamed to allow potential for any other Adafruit BLE products. +In preparation of future bluetooth work, the `AdafruitBLE` integration has been renamed to allow potential for any other Adafruit BLE products. ### Updated Keyboard Codebases {#updated-keyboard-codebases} diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md index c69beb055e..2c4eac64f0 100644 --- a/docs/custom_quantum_functions.md +++ b/docs/custom_quantum_functions.md @@ -145,7 +145,7 @@ void keyboard_pre_init_user(void) { This is called when the matrix is initialized, and after some of the hardware has been set up, but before many of the features have been initialized. -This is useful for setting up stuff that you may need elsewhere, but isn't hardware related nor is dependant on where it's started. +This is useful for setting up stuff that you may need elsewhere, but isn't hardware related nor is dependent on where it's started. ### `matrix_init_*` Function Documentation @@ -209,7 +209,7 @@ You should use this function if you need custom matrix scanning code. It can als This function gets called at the end of all QMK processing, before starting the next iteration. You can safely assume that QMK has dealt with the last matrix scan at the time that these functions are invoked -- layer states have been updated, USB reports have been sent, LEDs have been updated, and displays have been drawn. -Similar to `matrix_scan_*`, these are called as often as the MCU can handle. To keep your board responsive, it's suggested to do as little as possible during these function calls, potentially throtting their behaviour if you do indeed require implementing something special. +Similar to `matrix_scan_*`, these are called as often as the MCU can handle. To keep your board responsive, it's suggested to do as little as possible during these function calls, potentially throttling their behaviour if you do indeed require implementing something special. ### Example `void housekeeping_task_user(void)` implementation @@ -246,7 +246,7 @@ void check_rgb_timeout(void) { } } /* Then, call the above functions from QMK's built in post processing functions like so */ -/* Runs at the end of each scan loop, check if RGB timeout has occured or not */ +/* Runs at the end of each scan loop, check if RGB timeout has occurred or not */ void housekeeping_task_user(void) { #ifdef RGBLIGHT_TIMEOUT check_rgb_timeout(); @@ -316,7 +316,7 @@ bool shutdown_kb(bool jump_to_bootloader) { if (!shutdown_user(jump_to_bootloader)) { return false; } - + if (jump_to_bootloader) { // red for bootloader rgb_matrix_set_color_all(RGB_OFF); diff --git a/docs/drivers/serial.md b/docs/drivers/serial.md index dda75f629a..2c78f59043 100644 --- a/docs/drivers/serial.md +++ b/docs/drivers/serial.md @@ -33,7 +33,7 @@ On ARM platforms the bitbang driver causes connection issues when using it toget +-------+ +-------+ ``` -One GPIO pin is needed for the bitbang driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SOFT_SERIAL_PIN` (SSP) in the configuration. A TRS or USB cable provides enough conductors for this driver to function. +One GPIO pin is needed for the bitbang driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SOFT_SERIAL_PIN` (SSP) in the configuration. A TRS or USB cable provides enough conductors for this driver to function. ### Setup @@ -63,12 +63,12 @@ SERIAL_DRIVER = bitbang ## USART Half-duplex -Targeting ARM boards based on ChibiOS, where communication is offloaded to a USART hardware device that supports Half-duplex operation. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose Half-duplex over Bitbang if MCU is capable of utilising Half-duplex, and Full-duplex can't be used instead (e.g. lack of available GPIO pins, or imcompatible PCB design). +Targeting ARM boards based on ChibiOS, where communication is offloaded to a USART hardware device that supports Half-duplex operation. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose Half-duplex over Bitbang if MCU is capable of utilising Half-duplex, and Full-duplex can't be used instead (e.g. lack of available GPIO pins, or incompatible PCB design). ### Pin configuration ``` - LEFT RIGHT + LEFT RIGHT +-------+ | | +-------+ | | R R | | | | | SERIAL | | | @@ -80,7 +80,7 @@ Targeting ARM boards based on ChibiOS, where communication is offloaded to a USA +-------+ +-------+ ``` -Only one GPIO pin is needed for the Half-duplex driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SERIAL_USART_TX_PIN` in the configuration. Ensure that the pin chosen for split communication can operate as the TX pin of the contoller's USART peripheral. A TRS or USB cable provides enough conductors for this driver to function. As the split connection is configured to operate in open-drain mode, an **external pull-up resistor is needed to keep the line high**. Resistor values of 1.5kΩ to 8.2kΩ are known to work. +Only one GPIO pin is needed for the Half-duplex driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SERIAL_USART_TX_PIN` in the configuration. Ensure that the pin chosen for split communication can operate as the TX pin of the contoller's USART peripheral. A TRS or USB cable provides enough conductors for this driver to function. As the split connection is configured to operate in open-drain mode, an **external pull-up resistor is needed to keep the line high**. Resistor values of 1.5kΩ to 8.2kΩ are known to work. ::: warning ***Note:*** A pull-up resistor isn't required for RP2040 controllers configured with PIO subsystem. @@ -278,7 +278,7 @@ There are several advanced configuration options that can be defined in your key ### Baudrate -If you're having issues or need a higher baudrate with serial communication, you can change the baudrate which in turn controls the communication speed for serial. You want to lower the baudrate if you experience failed transactions. +If you're having issues or need a higher baudrate with serial communication, you can change the baudrate which in turn controls the communication speed for serial. You want to lower the baudrate if you experience failed transactions. ```c #define SELECT_SOFT_SERIAL_SPEED n @@ -307,19 +307,19 @@ This is the default time window in milliseconds in which a successful communicat ## Troubleshooting -If you're having issues withe serial communication, you can enable debug messages that will give you insights which part of the communication failed. The enable these messages add to your keyboards `config.h` file: +If you're having issues with serial communication, you can enable debug messages that will give you insights which part of the communication failed. The enable these messages add to your keyboards `config.h` file: ```c #define SERIAL_DEBUG ``` - + ::: tip The messages will be printed out to the `CONSOLE` output. For additional information, refer to [Debugging/Troubleshooting QMK](../faq_debug). ::: ## Alternate Functions for selected STM32 MCUs -Pins for USART Peripherals with +Pins for USART Peripherals with ### STM32F303 / Proton-C [Datasheet](https://www.st.com/resource/en/datasheet/stm32f303cc.pdf) diff --git a/docs/feature_debounce_type.md b/docs/feature_debounce_type.md index eb29b4ef26..4e3b0f4543 100644 --- a/docs/feature_debounce_type.md +++ b/docs/feature_debounce_type.md @@ -47,7 +47,7 @@ susceptible to noise, you must choose a debounce method that will also mitigate * Debounce algorithms often have a 'debounce time' parameter, that specifies the maximum settling time of the switch contacts. This time might be measured in various units: * Cycles-based debouncing waits n cycles (scans), decreasing count by one each matrix_scan - * Timestamp-based debouncing stores the millisecond timestamp a change occurred, and does substraction to figure out time elapsed. + * Timestamp-based debouncing stores the millisecond timestamp a change occurred, and does subtraction to figure out time elapsed. * Timestamp-based debouncing is usually superior, especially in the case of noise-resistant devices because settling times of physical switches is specified in units of time, and should not depend on the matrix scan-rate of the keyboard. * Cycles-based debouncing is sometimes considered inferior, because the settling time that it is able to compensate for depends on the diff --git a/docs/feature_eeprom.md b/docs/feature_eeprom.md index 22257b3202..7d40e81f5a 100644 --- a/docs/feature_eeprom.md +++ b/docs/feature_eeprom.md @@ -100,7 +100,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled if (user_config.rgb_layer_change) { // only if this is enabled user_config.rgb_layer_change = false; // disable it, and - eeconfig_update_user(user_config.raw); // write the setings to EEPROM + eeconfig_update_user(user_config.raw); // write the settings to EEPROM } } return true; break; @@ -109,7 +109,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } } ``` -And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the `EE_CLR` keycode or [Bootmagic](features/bootmagic) functionallity. For example, if you want to set rgb layer indication by default, and save the default valued. +And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the `EE_CLR` keycode or [Bootmagic](features/bootmagic) functionality. For example, if you want to set rgb layer indication by default, and save the default valued. ```c void eeconfig_init_user(void) { // EEPROM is getting reset! diff --git a/docs/feature_layers.md b/docs/feature_layers.md index da6a28bd88..8e6510ca2a 100644 --- a/docs/feature_layers.md +++ b/docs/feature_layers.md @@ -25,7 +25,7 @@ active layer until pressed again. Currently, the `layer` argument of `LT()` is limited to layers 0-15, and the `kc` argument to the [Basic Keycode set](keycodes_basic), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 4 bits are used for the function identifier and 4 bits for the layer, leaving only 8 bits for the keycode. -For a similar reason, the `layer` argument of `LM()` is also limited to layers 0-15 and the `mod` argument must fit within 5 bits. As a consequence, although left and right modifiers are supported by `LM()`, it is impossible to mix and match left and right modifiers. Specifying at least one right-hand modifier in a combination such as `MOD_RALT|MOD_LSFT` will convert *all* the listed modifiers to their right-hand counterpart. So, using the aforementionned mod-mask will actually send Right Alt+Right Shift. Make sure to use the `MOD_xxx` constants over alternative ways of specifying modifiers when defining your layer-mod key. +For a similar reason, the `layer` argument of `LM()` is also limited to layers 0-15 and the `mod` argument must fit within 5 bits. As a consequence, although left and right modifiers are supported by `LM()`, it is impossible to mix and match left and right modifiers. Specifying at least one right-hand modifier in a combination such as `MOD_RALT|MOD_LSFT` will convert *all* the listed modifiers to their right-hand counterpart. So, using the aforementioned mod-mask will actually send Right Alt+Right Shift. Make sure to use the `MOD_xxx` constants over alternative ways of specifying modifiers when defining your layer-mod key. | `LM(1,KC_LSFT)` | `LM(1,MOD_MASK_SHIFT)` | `LM(1,MOD_BIT(KC_LSFT))` | `LM(1,MOD_LSFT)` | |:---------------:|:----------------------:|:------------------------:|:----------------:| @@ -61,27 +61,27 @@ Sometimes, you might want to switch between layers in a macro or as part of a ta There are a number of functions (and variables) related to how you can use or manipulate the layers. -|Function |Description | -|----------------------------------------------|---------------------------------------------------------------------------------------------------------| -| `layer_state_set(layer_mask)` | Directly sets the layer state (avoid unless you know what you are doing). | -| `layer_clear()` | Clears all layers (turns them all off). | -| `layer_move(layer)` | Turns specified layer on, and all other layers off. | -| `layer_on(layer)` | Turns specified layer on, leaves all other layers in existing state. | -| `layer_off(layer)` | Turns specified layer off, leaves all other layers in existing state. | -| `layer_invert(layer)` | Inverts/toggles the state of the specified layer | -| `layer_or(layer_mask)` | Turns on layers based on matching bits between specifed layer and existing layer state. | -| `layer_and(layer_mask)` | Turns on layers based on matching enabled bits between specifed layer and existing layer state. | -| `layer_xor(layer_mask)` | Turns on layers based on non-matching bits between specifed layer and existing layer state. | -| `layer_debug(layer_mask)` | Prints out the current bit mask and highest active layer to debugger console. | -| `default_layer_set(layer_mask)` | Directly sets the default layer state (avoid unless you know what you are doing). | -| `default_layer_or(layer_mask)` | Turns on layers based on matching bits between specifed layer and existing default layer state. | -| `default_layer_and(layer_mask)` | Turns on layers based on matching enabled bits between specifed layer and existing default layer state. | -| `default_layer_xor(layer_mask)` | Turns on layers based on non-matching bits between specifed layer and existing default layer state. | -| `default_layer_debug(layer_mask)` | Prints out the current bit mask and highest active default layer to debugger console. | -| [`set_single_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer) | Sets the default layer, but does _not_ write it to persistent memory (EEPROM). | -| [`set_single_persistent_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer) | Sets the default layer and writes it to persistent memory (EEPROM). | -| [`update_tri_layer(x, y, z)`](ref_functions.md#update_tri_layerx-y-z) | Checks if layers `x` and `y` are both on, and sets `z` based on that (on if both on, otherwise off). | -| [`update_tri_layer_state(state, x, y, z)`](ref_functions.md#update_tri_layer_statestate-x-y-z) | Does the same as `update_tri_layer(x, y, z)`, but from `layer_state_set_*` functions. | +|Function |Description | +|---------------------------------------------|--------------------------------------------------------------------------------------------------------| +|`layer_state_set(layer_mask)` |Directly sets the layer state (avoid unless you know what you are doing). | +|`layer_clear()` |Clears all layers (turns them all off). | +|`layer_move(layer)` |Turns specified layer on, and all other layers off. | +|`layer_on(layer)` |Turns specified layer on, leaves all other layers in existing state. | +|`layer_off(layer)` |Turns specified layer off, leaves all other layers in existing state. | +|`layer_invert(layer)` |Inverts/toggles the state of the specified layer | +|`layer_or(layer_mask)` |Turns on layers based on matching bits between specified layer and existing layer state. | +|`layer_and(layer_mask)` |Turns on layers based on matching enabled bits between specified layer and existing layer state. | +|`layer_xor(layer_mask)` |Turns on layers based on non-matching bits between specified layer and existing layer state. | +|`layer_debug(layer_mask)` |Prints out the current bit mask and highest active layer to debugger console. | +|`default_layer_set(layer_mask)` |Directly sets the default layer state (avoid unless you know what you are doing). | +|`default_layer_or(layer_mask)` |Turns on layers based on matching bits between specified layer and existing default layer state. | +|`default_layer_and(layer_mask)` |Turns on layers based on matching enabled bits between specified layer and existing default layer state.| +|`default_layer_xor(layer_mask)` |Turns on layers based on non-matching bits between specified layer and existing default layer state. | +|`default_layer_debug(layer_mask)` |Prints out the current bit mask and highest active default layer to debugger console. | +|[`set_single_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer) |Sets the default layer, but does _not_ write it to persistent memory (EEPROM). | +|[`set_single_persistent_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer)|Sets the default layer and writes it to persistent memory (EEPROM). | +|[`update_tri_layer(x, y, z)`](ref_functions.md#update_tri_layerx-y-z) |Checks if layers `x` and `y` are both on, and sets `z` based on that (on if both on, otherwise off).| +|[`update_tri_layer_state(state, x, y, z)`](ref_functions.md#update_tri_layer_statestate-x-y-z) |Does the same as `update_tri_layer(x, y, z)`, but from `layer_state_set_*` functions. | In addition to the functions that you can call, there are a number of callback functions that get called every time the layer changes. This passes the layer state to the function, where it can be read or modified. @@ -154,7 +154,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_CYCLE_LAYERS: // Our logic will happen on presses, nothing is done on releases - if (!record->event.pressed) { + if (!record->event.pressed) { // We've already handled the keycode (doing nothing), let QMK know so no further code is run unnecessarily return false; } diff --git a/docs/feature_userspace.md b/docs/feature_userspace.md index 0f5c4a5f96..2c8c08b38e 100644 --- a/docs/feature_userspace.md +++ b/docs/feature_userspace.md @@ -24,10 +24,10 @@ For example, make planck:jack -Will include the `/users/jack/` folder in the path, along with `/users/jack/rules.mk`. +Will include the `/users/jack/` folder in the path, along with `/users/jack/rules.mk`. ::: warning -This `name` can be [overridden](#override-default-userspace), if needed. +This `name` can be [overridden](#override-default-userspace), if needed. ::: ## `Rules.mk` @@ -38,9 +38,9 @@ It's highly recommended that you use `.c` as the default source file to be SRC += .c -Additional files may be added in the same way - it's recommended you have one named ``.c/.h to start off with, though. +Additional files may be added in the same way - it's recommended you have one named ``.c/.h to start off with, though. -The `/users//rules.mk` file will be included in the build _after_ the `rules.mk` from your keymap. This allows you to have features in your userspace `rules.mk` that depend on individual QMK features that may or may not be available on a specific keyboard. +The `/users//rules.mk` file will be included in the build _after_ the `rules.mk` from your keymap. This allows you to have features in your userspace `rules.mk` that depend on individual QMK features that may or may not be available on a specific keyboard. For example, if you have RGB control features shared between all your keyboards that support RGB lighting, you can add support for that if the RGBLIGHT feature is enabled: ```make @@ -82,7 +82,7 @@ You should use the `config.h` for [configuration options](config_options), and t Please include authorship (your name, GitHub username, email), and optionally [a license that's GPL compatible](https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses). -You can use this as a template: +You can use this as a template: ``` Copyright @ @@ -100,9 +100,9 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . ``` -You'd want to replace the year, name, email and GitHub username with your info. +You'd want to replace the year, name, email and GitHub username with your info. -Additionally, this is a good place to document your code, if you wish to share it with others. +Additionally, this is a good place to document your code, if you wish to share it with others. ## Build All Keyboards That Support a Specific Keymap @@ -118,20 +118,21 @@ This is ideal for when you want ensure everything compiles successfully when pre ## Examples -For a brief example, checkout [`/users/_example/`](https://github.com/qmk/qmk_firmware/tree/master/users/_example). -For more complicated examples, checkout the [`awesome-qmk` colletion](https://github.com/qmk/awesome-qmk). +For a brief example, checkout [`/users/_example/`](https://github.com/qmk/qmk_firmware/tree/master/users/_example). + +For more complicated examples, checkout the [`awesome-qmk` collection](https://github.com/qmk/awesome-qmk). ### Customized Functions -QMK has a bunch of [functions](custom_quantum_functions) that have [`_quantum`, `_kb`, and `_user` versions](custom_quantum_functions#a-word-on-core-vs-keyboards-vs-keymap) that you can use. You will pretty much always want to use the user version of these functions. But the problem is that if you use them in your userspace, then you don't have a version that you can use in your keymap. +QMK has a bunch of [functions](custom_quantum_functions) that have [`_quantum`, `_kb`, and `_user` versions](custom_quantum_functions#a-word-on-core-vs-keyboards-vs-keymap) that you can use. You will pretty much always want to use the user version of these functions. But the problem is that if you use them in your userspace, then you don't have a version that you can use in your keymap. -However, you can actually add support for keymap version, so that you can use it in both your userspace and your keymap! +However, you can actually add support for keymap version, so that you can use it in both your userspace and your keymap! -For instance, let's look at the `layer_state_set_user()` function. You can enable the [Tri Layer State](ref_functions#olkb-tri-layers) functionality on all of your boards, while also retaining the Tri Layer functionality in your `keymap.c` files. +For instance, let's look at the `layer_state_set_user()` function. You can enable the [Tri Layer State](ref_functions#olkb-tri-layers) functionality on all of your boards, while also retaining the Tri Layer functionality in your `keymap.c` files. -In your `` file, you'd want to add this: +In your `` file, you'd want to add this: ```c __attribute__ ((weak)) layer_state_t layer_state_set_keymap (layer_state_t state) { @@ -143,7 +144,7 @@ layer_state_t layer_state_set_user (layer_state_t state) { return layer_state_set_keymap (state); } ``` -The `__attribute__ ((weak))` part tells the compiler that this is a placeholder function that can then be replaced by a version in your `keymap.c`. That way, you don't need to add it to your `keymap.c`, but if you do, you won't get any conflicts because the function is the same name. +The `__attribute__ ((weak))` part tells the compiler that this is a placeholder function that can then be replaced by a version in your `keymap.c`. That way, you don't need to add it to your `keymap.c`, but if you do, you won't get any conflicts because the function is the same name. The `_keymap` part here doesn't matter, it just needs to be something other than `_quantum`, `_kb`, or `_user`, since those are already in use. So you could use `layer_state_set_mine`, `layer_state_set_fn`, or anything else. @@ -151,7 +152,7 @@ You can see a list of this and other common functions in [`template.c`](https:// ### Custom Features -Since the Userspace feature can support a staggering number of boards, you may have boards that you want to enable certain functionality for, but not for others. And you can actually create "features" that you can enable or disable in your own userspace. +Since the Userspace feature can support a staggering number of boards, you may have boards that you want to enable certain functionality for, but not for others. And you can actually create "features" that you can enable or disable in your own userspace. For instance, if you wanted to have a bunch of macros available, but only on certain boards (to save space), you could "hide" them being a `#ifdef MACROS_ENABLED`, and then enable it per board. To do this, add this to your rules.mk ```make @@ -159,11 +160,11 @@ ifeq ($(strip $(MACROS_ENABLED)), yes) OPT_DEFS += -DMACROS_ENABLED endif ``` -The `OPT_DEFS` setting causes `MACROS_ENABLED` to be defined for your keyboards (note the `-D` in front of the name), and you could use `#ifdef MACROS_ENABLED` to check the status in your c/h files, and handle that code based on that. +The `OPT_DEFS` setting causes `MACROS_ENABLED` to be defined for your keyboards (note the `-D` in front of the name), and you could use `#ifdef MACROS_ENABLED` to check the status in your c/h files, and handle that code based on that. Then you add `MACROS_ENABLED = yes` to the `rules.mk` for you keymap to enable this feature and the code in your userspace. -And in your `process_record_user` function, you'd do something like this: +And in your `process_record_user` function, you'd do something like this: ```c bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { @@ -187,9 +188,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { ### Consolidated Macros -If you wanted to consolidate macros and other functions into your userspace for all of your keymaps, you can do that. This builds upon the [Customized Functions](#customized-functions) example above. This lets you maintain a bunch of macros that are shared between the different keyboards, and allow for keyboard specific macros, too. +If you wanted to consolidate macros and other functions into your userspace for all of your keymaps, you can do that. This builds upon the [Customized Functions](#customized-functions) example above. This lets you maintain a bunch of macros that are shared between the different keyboards, and allow for keyboard specific macros, too. -First, you'd want to go through all of your `keymap.c` files and replace `process_record_user` with `process_record_keymap` instead. This way, you can still use keyboard specific codes on those boards, and use your custom "global" keycodes as well. You'll also want to replace `SAFE_RANGE` with `NEW_SAFE_RANGE` so that you wont have any overlapping keycodes +First, you'd want to go through all of your `keymap.c` files and replace `process_record_user` with `process_record_keymap` instead. This way, you can still use keyboard specific codes on those boards, and use your custom "global" keycodes as well. You'll also want to replace `SAFE_RANGE` with `NEW_SAFE_RANGE` so that you won't have any overlapping keycodes Then add `#include ".h"` to all of your keymap.c files. This allows you to use these new keycodes without having to redefine them in each keymap. @@ -245,7 +246,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } ``` -For boards that may not have a shift button (such as on a macro pad), we need a way to always include the bootloader option. To do that, add the following to the `rules.mk` in your userspace folder: +For boards that may not have a shift button (such as on a macro pad), we need a way to always include the bootloader option. To do that, add the following to the `rules.mk` in your userspace folder: ```make ifeq ($(strip $(FLASH_BOOTLOADER)), yes) @@ -255,7 +256,7 @@ endif This will add a new `KC_MAKE` keycode that can be used in any of your keymaps. And this keycode will output `make :`, making frequent compiling easier. And this will work with any keyboard and any keymap as it will output the current boards info, so that you don't have to type this out every time. -Also, holding Shift will add the flash target (`:flash`) to the command. Holding Control will add some commands that will speed up compiling time by processing multiple files at once. +Also, holding Shift will add the flash target (`:flash`) to the command. Holding Control will add some commands that will speed up compiling time by processing multiple files at once. And for the boards that lack a shift key, or that you want to always attempt the flashing part, you can add `FLASH_BOOTLOADER = yes` to the `rules.mk` of that keymap. diff --git a/docs/features/audio.md b/docs/features/audio.md index 2f5e5b2d98..a5f770d811 100644 --- a/docs/features/audio.md +++ b/docs/features/audio.md @@ -73,16 +73,13 @@ Should you rather choose to generate and use your own sample-table with the DAC ### PWM (software) -if the DAC pins are unavailable (or the MCU has no usable DAC at all, like STM32F1xx); PWM can be an alternative. +If the DAC pins are unavailable (or the MCU has no usable DAC at all, like STM32F1xx); PWM can be an alternative. Note that there is currently only one speaker/pin supported. -set in `rules.mk`: - -`AUDIO_DRIVER = pwm_software` and in `config.h`: -`#define AUDIO_PIN C13` (can be any pin) to have the selected pin output a pwm signal, generated from a timer callback which toggles the pin in software. +To use this feature, set `AUDIO_DRIVER = pwm_software` in `rules.mk` and set `#define AUDIO_PIN C13` (can be any pin) in `config.h` to have the selected pin output a pwm signal, generated from a timer callback which toggles the pin in software. #### Wiring -the usual piezo wiring: red goes to the selected AUDIO_PIN, black goes to ground. +The usual piezo wiring: red goes to the selected AUDIO_PIN, black goes to ground. OR if you can chose to drive one piezo with two pins, for example `#define AUDIO_PIN B1`, `#define AUDIO_PIN_ALT B2` in `config.h`, with `#define AUDIO_PIN_ALT_AS_NEGATIVE` - then the red lead could go to B1, the black to B2. @@ -159,7 +156,7 @@ PLAY_LOOP(my_song); It's advised that you wrap all audio features in `#ifdef AUDIO_ENABLE` / `#endif` to avoid causing problems when audio isn't built into the keyboard. -The available keycodes for audio are: +The available keycodes for audio are: |Key |Aliases |Description | |-------------------------|---------|-------------------------------------------| @@ -178,8 +175,8 @@ These keycodes turn all of the audio functionality on and off. Turning it off m |`AUDIO_PIN` | *Not defined* |Configures the pin that the speaker is connected to. | |`AUDIO_PIN_ALT` | *Not defined* |Configures the pin for a second speaker or second pin connected to one speaker. | |`AUDIO_PIN_ALT_AS_NEGATIVE` | *Not defined* |Enables support for one speaker connected to two pins. | -|`AUDIO_INIT_DELAY` | *Not defined* |Enables delay during startup song to accomidate for USB startup issues. | -|`AUDIO_ENABLE_TONE_MULTIPLEXING` | *Not defined* |Enables time splicing/multiplexing to create multiple tones simutaneously. | +|`AUDIO_INIT_DELAY` | *Not defined* |Enables delay during startup song to accommodate for USB startup issues. | +|`AUDIO_ENABLE_TONE_MULTIPLEXING` | *Not defined* |Enables time splicing/multiplexing to create multiple tones simultaneously. | |`AUDIO_POWER_CONTROL_PIN` | *Not defined* |Enables power control code to enable or cut off power to speaker (such as with PAM8302 amp). | |`AUDIO_POWER_CONTROL_PIN_ON_STATE`| `1` |The state of the audio power control pin when audio is "on" - `1` for high, `0` for low. | |`STARTUP_SONG` | `STARTUP_SOUND` |Plays when the keyboard starts up (audio.c) | @@ -301,9 +298,9 @@ Things that return false are not part of the mask, and are always processed. ### Music Map -By default, the Music Mode uses the columns and row to determine the scale for the keys. For a board that uses a rectangular matrix that matches the keyboard layout, this is just fine. However, for boards that use a more complicated matrix (such as the Planck Rev6, or many split keyboards) this would result in a very skewed experience. +By default, the Music Mode uses the columns and row to determine the scale for the keys. For a board that uses a rectangular matrix that matches the keyboard layout, this is just fine. However, for boards that use a more complicated matrix (such as the Planck Rev6, or many split keyboards) this would result in a very skewed experience. -However, the Music Map option allows you to remap the scaling for the music mode, so it fits the layout, and is more natural. +However, the Music Map option allows you to remap the scaling for the music mode, so it fits the layout, and is more natural. To enable this feature, add `#define MUSIC_MAP` to your `config.h` file, and then you will want to add a `uint8_t music_map` to your keyboard's `c` file, or your `keymap.c`. @@ -316,13 +313,13 @@ const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_ortho_4x12( ); ``` -You will want to use whichever `LAYOUT` macro that your keyboard uses here. This maps it to the correct key location. Start in the bottom left of the keyboard layout, and move to the right, and then upwards. Fill in all the entries until you have a complete matrix. +You will want to use whichever `LAYOUT` macro that your keyboard uses here. This maps it to the correct key location. Start in the bottom left of the keyboard layout, and move to the right, and then upwards. Fill in all the entries until you have a complete matrix. -You can look at the [Planck Keyboard](https://github.com/qmk/qmk_firmware/blob/e9ace1487887c1f8b4a7e8e6d87c322988bec9ce/keyboards/planck/planck.c#L24-L29) as an example of how to implement this. +You can look at the [Planck Keyboard](https://github.com/qmk/qmk_firmware/blob/e9ace1487887c1f8b4a7e8e6d87c322988bec9ce/keyboards/planck/planck.c#L24-L29) as an example of how to implement this. ## Audio Click -This adds a click sound each time you hit a button, to simulate click sounds from the keyboard. And the sounds are slightly different for each keypress, so it doesn't sound like a single long note, if you type rapidly. +This adds a click sound each time you hit a button, to simulate click sounds from the keyboard. And the sounds are slightly different for each keypress, so it doesn't sound like a single long note, if you type rapidly. Keycodes available: @@ -341,7 +338,7 @@ The feature is disabled by default, to save space. To enable it, add this to yo #define AUDIO_CLICKY ``` -You can configure the default, min and max frequencies, the stepping and built in randomness by defining these values: +You can configure the default, min and max frequencies, the stepping and built in randomness by defining these values: | Option | Default Value | Description | |--------|---------------|-------------| @@ -349,7 +346,7 @@ You can configure the default, min and max frequencies, the stepping and built i | `AUDIO_CLICKY_FREQ_MIN` | 65.0f | Sets the lowest frequency (under 60f are a bit buggy). | | `AUDIO_CLICKY_FREQ_MAX` | 1500.0f | Sets the highest frequency. Too high may result in coworkers attacking you. | | `AUDIO_CLICKY_FREQ_FACTOR` | 1.18921f| Sets the stepping of UP/DOWN key codes. This is a multiplicative factor. The default steps the frequency up/down by a musical minor third. | -| `AUDIO_CLICKY_FREQ_RANDOMNESS` | 0.05f | Sets a factor of randomness for the clicks, Setting this to `0f` will make each click identical, and `1.0f` will make this sound much like the 90's computer screen scrolling/typing effect. | +| `AUDIO_CLICKY_FREQ_RANDOMNESS` | 0.05f | Sets a factor of randomness for the clicks, Setting this to `0f` will make each click identical, and `1.0f` will make this sound much like the 90's computer screen scrolling/typing effect. | | `AUDIO_CLICKY_DELAY_DURATION` | 1 | An integer note duration where 1 is 1/16th of the tempo, or a sixty-fourth note (see `quantum/audio/musical_notes.h` for implementation details). The main clicky effect will be delayed by this duration. Adjusting this to values around 6-12 will help compensate for loud switches. | ## MIDI Functionality diff --git a/docs/features/bootmagic.md b/docs/features/bootmagic.md index 49fae5ba45..15c2bec293 100644 --- a/docs/features/bootmagic.md +++ b/docs/features/bootmagic.md @@ -46,7 +46,7 @@ When [handedness](split_keyboard#setting-handedness) is predetermined via option } ``` -If you pick the top right key for the right half, it is `R05` on the top layout. Within the key matrix below, `R05` is located on row 4 columnn 4. To use that key as the right half's Bootmagic trigger, add these entries to your `config.h` file: +If you pick the top right key for the right half, it is `R05` on the top layout. Within the key matrix below, `R05` is located on row 4 column 4. To use that key as the right half's Bootmagic trigger, add these entries to your `config.h` file: ```c #define BOOTMAGIC_ROW_RIGHT 4 diff --git a/docs/features/encoders.md b/docs/features/encoders.md index a674eaa4a6..59f949be65 100644 --- a/docs/features/encoders.md +++ b/docs/features/encoders.md @@ -68,7 +68,7 @@ Additionally, if one side does not have an encoder, you can specify `{}` for the ``` ::: warning -Keep in mind that whenver you change the encoder resolution, you will need to reflash the half that has the encoder affected by the change. +Keep in mind that whenever you change the encoder resolution, you will need to reflash the half that has the encoder affected by the change. ::: ## Encoder map {#encoder-map} diff --git a/docs/features/haptic_feedback.md b/docs/features/haptic_feedback.md index 52667965a0..08e66ea8e1 100644 --- a/docs/features/haptic_feedback.md +++ b/docs/features/haptic_feedback.md @@ -44,14 +44,14 @@ Not all keycodes below will work depending on which haptic mechanism you have ch |`QK_HAPTIC_MODE_NEXT` |`HF_NEXT`| Go to next DRV2605L waveform | |`QK_HAPTIC_MODE_PREVIOUS` |`HF_PREV`| Go to previous DRV2605L waveform | |`QK_HAPTIC_CONTINUOUS_TOGGLE`|`HF_CONT`| Toggle continuous haptic mode on/off | -|`QK_HAPTIC_CONTINUOUS_UP` |`HF_CONU`| Increase DRV2605L continous haptic strength | -|`QK_HAPTIC_CONTINUOUS_DOWN` |`HF_COND`| Decrease DRV2605L continous haptic strength | +|`QK_HAPTIC_CONTINUOUS_UP` |`HF_CONU`| Increase DRV2605L continuous haptic strength | +|`QK_HAPTIC_CONTINUOUS_DOWN` |`HF_COND`| Decrease DRV2605L continuous haptic strength | |`QK_HAPTIC_DWELL_UP` |`HF_DWLU`| Increase Solenoid dwell time | |`QK_HAPTIC_DWELL_DOWN` |`HF_DWLD`| Decrease Solenoid dwell time | ### Solenoids -The solenoid code supports relay switches, and similar hardware, as well as solenoids. +The solenoid code supports relay switches, and similar hardware, as well as solenoids. For a regular solenoid, you will need a build a circuit to drive the solenoid through a mosfet as most MCU will not be able to provide the current needed to drive the coil in the solenoid. @@ -75,7 +75,7 @@ For relay switches, the hardware may already contain all of that ciruitry, and j |`SOLENOID_BUZZ_NONACTUATED` | `SOLENOID_MIN_DWELL` |Non-Actuated-time when the switch is in buzz mode. | * If solenoid buzz is off, then dwell time is how long the "plunger" stays activated. The dwell time changes how the solenoid sounds. -* If solenoid buzz is on, then dwell time sets the length of the buzz, while `SOLENOID_BUZZ_ACTUATED` and `SOLENOID_BUZZ_NONACTUATED` set the (non-)actuation times withing the buzz period. +* If solenoid buzz is on, then dwell time sets the length of the buzz, while `SOLENOID_BUZZ_ACTUATED` and `SOLENOID_BUZZ_NONACTUATED` set the (non-)actuation times within the buzz period. * With the current implementation, for any of the above time settings, the precision of these settings may be affected by how fast the keyboard is able to scan the matrix. Therefore, if the keyboards scanning routine is slow, it may be preferable to set `SOLENOID_DWELL_STEP_SIZE` to a value slightly smaller than the time it takes to scan the keyboard. @@ -104,7 +104,7 @@ Eccentric Rotating Mass vibration motors (ERM) is motor with a off-set weight at ``` ##### LRA -Linear resonant actuators (LRA, also know as a linear vibrator) works different from a ERM. A LRA has a weight and magnet suspended by springs and a voice coil. When the drive signal is applied, the weight would be vibrate on a single axis (side to side or up and down). Since the weight is attached to a spring, there is a resonance effect at a specific frequency. This frequency is where the LRA will operate the most efficiently. Refer to the motor's datasheet for the recommanded range for this frequency. +Linear resonant actuators (LRA, also know as a linear vibrator) works different from a ERM. A LRA has a weight and magnet suspended by springs and a voice coil. When the drive signal is applied, the weight would be vibrate on a single axis (side to side or up and down). Since the weight is attached to a spring, there is a resonance effect at a specific frequency. This frequency is where the LRA will operate the most efficiently. Refer to the motor's datasheet for the recommended range for this frequency. ```c #define DRV2605L_FB_ERM_LRA 1 @@ -114,7 +114,7 @@ Linear resonant actuators (LRA, also know as a linear vibrator) works different /* Please refer to your datasheet for the optimal setting for your specific motor. */ #define DRV2605L_RATED_VOLTAGE 2 #define DRV2605L_V_PEAK 2.8 -#define DRV2605L_V_RMS 2.0 +#define DRV2605L_V_RMS 2.0 #define DRV2605L_V_PEAK 2.1 #define DRV2605L_F_LRA 205 /* resonance freq */ ``` @@ -125,7 +125,7 @@ DRV2605L comes with preloaded library of various waveform sequences that can be List of waveform sequences from the datasheet: -|seq# | Sequence name |seq# | Sequence name |seq# |Sequence name | +|seq# | Sequence name |seq# | Sequence name |seq# |Sequence name | |-----|---------------------|-----|-----------------------------------|-----|--------------------------------------| | 1 | strong_click | 43 | lg_dblclick_med_60 | 85 | transition_rampup_med_smooth2 | | 2 | strong_click_60 | 44 | lg_dblsharp_tick | 86 | transition_rampup_short_smooth1 | diff --git a/docs/features/pointing_device.md b/docs/features/pointing_device.md index f25ea1b033..d6dcddcdf0 100644 --- a/docs/features/pointing_device.md +++ b/docs/features/pointing_device.md @@ -51,7 +51,7 @@ The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surfac | `ADNS9800_CS_PIN` | (Required) Sets the Chip Select pin connected to the sensor. | `POINTING_DEVICE_CS_PIN` | -The CPI range is 800-8200, in increments of 200. Defaults to 1800 CPI. +The CPI range is 800-8200, in increments of 200. Defaults to 1800 CPI. ### Analog Joystick @@ -258,7 +258,7 @@ To use the paw 3204 sensor, add this to your `rules.mk` POINTING_DEVICE_DRIVER = paw3204 ``` -The paw 3204 sensor uses a serial type protocol for communication, and requires an additional light source. +The paw 3204 sensor uses a serial type protocol for communication, and requires an additional light source. | Setting (`config.h`) | Description | Default | | -------------------- |--------------------------------------------------------------- | -------------------------- | @@ -275,7 +275,7 @@ To use the Pimoroni Trackball module, add this to your `rules.mk`: POINTING_DEVICE_DRIVER = pimoroni_trackball ``` -The Pimoroni Trackball module is a I2C based breakout board with an RGB enable trackball. +The Pimoroni Trackball module is a I2C based breakout board with an RGB enable trackball. | Setting (`config.h`) | Description | Default | | ------------------------------------ | ---------------------------------------------------------------------------------- | ------- | @@ -386,7 +386,7 @@ void pointing_device_driver_set_cpi(uint16_t cpi) {} ``` ::: warning -Ideally, new sensor hardware should be added to `drivers/sensors/` and `quantum/pointing_device_drivers.c`, but there may be cases where it's very specific to the hardware. So these functions are provided, just in case. +Ideally, new sensor hardware should be added to `drivers/sensors/` and `quantum/pointing_device_drivers.c`, but there may be cases where it's very specific to the hardware. So these functions are provided, just in case. ::: ## Common Configuration @@ -413,7 +413,7 @@ Ideally, new sensor hardware should be added to `drivers/sensors/` and `quantum/ When using `SPLIT_POINTING_ENABLE` the `POINTING_DEVICE_MOTION_PIN` functionality is not supported and `POINTING_DEVICE_TASK_THROTTLE_MS` will default to `1`. Increasing this value will increase transport performance at the cost of possible mouse responsiveness. ::: -The `POINTING_DEVICE_CS_PIN`, `POINTING_DEVICE_SDIO_PIN`, and `POINTING_DEVICE_SCLK_PIN` provide a convenient way to define a single pin that can be used for an interchangeable sensor config. This allows you to have a single config, without defining each device. Each sensor allows for this to be overridden with their own defines. +The `POINTING_DEVICE_CS_PIN`, `POINTING_DEVICE_SDIO_PIN`, and `POINTING_DEVICE_SCLK_PIN` provide a convenient way to define a single pin that can be used for an interchangeable sensor config. This allows you to have a single config, without defining each device. Each sensor allows for this to be overridden with their own defines. ::: warning Any pointing device with a lift/contact status can integrate inertial cursor feature into its driver, controlled by `POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE`. e.g. PMW3360 can use Lift_Stat from Motion register. Note that `POINTING_DEVICE_MOTION_PIN` cannot be used with this feature; continuous polling of `get_report()` is needed to generate glide reports. @@ -424,7 +424,7 @@ Any pointing device with a lift/contact status can integrate inertial cursor fea | Setting | Description | Default | | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------- | | `POINTING_DEVICE_HIRES_SCROLL_ENABLE` | (Optional) Enables high resolution scrolling. | _not defined_ | -| `POINTING_DEVICE_HIRES_SCROLL_MULTIPLIER`| (Optional) Resolution mutiplier value used by high resolution scrolling. Must be between 1 and 127, inclusive. | `120` | +| `POINTING_DEVICE_HIRES_SCROLL_MULTIPLIER`| (Optional) Resolution multiplier value used by high resolution scrolling. Must be between 1 and 127, inclusive. | `120` | | `POINTING_DEVICE_HIRES_SCROLL_EXPONENT` | (Optional) Resolution exponent value used by high resolution scrolling. Must be between 0 and 127, inclusive. | `0` | The `POINTING_DEVICE_HIRES_SCROLL_ENABLE` setting enables smooth and continuous scrolling when using trackballs or high-end encoders as mouse wheels (as opposed to the typical stepped behavior of most mouse wheels). @@ -435,7 +435,7 @@ If even smoother scrolling than provided by this default value is desired, first The function `pointing_device_get_hires_scroll_resolution()` can be called to get the pre-computed resolution multiplier value as a `uint16_t`. ::: warning -High resolution scrolling usually results in larger and/or more frequent mouse reports. This can result in overflow errors and overloading of the host computer's input buffer. +High resolution scrolling usually results in larger and/or more frequent mouse reports. This can result in overflow errors and overloading of the host computer's input buffer. To deal with these issues, define `WHEEL_EXTENDED_REPORT` and throttle the rate at which mouse reports are sent. ::: @@ -465,7 +465,7 @@ If there is a `_RIGHT` configuration option or callback, the [common configurati ::: -## Callbacks and Functions +## Callbacks and Functions | Function | Description | | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | @@ -513,7 +513,7 @@ To manually manipulate the mouse reports outside of the `pointing_device_task_*` * `pointing_device_get_report()` - Returns the current report_mouse_t that represents the information sent to the host computer * `pointing_device_set_report(report_mouse_t mouse_report)` - Overrides and saves the report_mouse_t to be sent to the host computer -* `pointing_device_send()` - Sends the mouse report to the host and zeroes out the report. +* `pointing_device_send()` - Sends the mouse report to the host and zeroes out the report. When the mouse report is sent, the x, y, v, and h values are set to 0 (this is done in `pointing_device_send()`, which can be overridden to avoid this behavior). This way, button states persist, but movement will only occur once. For further customization, both `pointing_device_init` and `pointing_device_task` can be overridden. @@ -548,7 +548,7 @@ Recall that the mouse report is set to zero (except the buttons) whenever it is ### Drag Scroll or Mouse Scroll -A very common implementation is to use the mouse movement to scroll instead of moving the cursor on the system. This uses the `pointing_device_task_user` callback to intercept and modify the mouse report before it's sent to the host system. +A very common implementation is to use the mouse movement to scroll instead of moving the cursor on the system. This uses the `pointing_device_task_user` callback to intercept and modify the mouse report before it's sent to the host system. ```c enum custom_keycodes { @@ -575,7 +575,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } ``` -This allows you to toggle between scrolling and cursor movement by pressing the DRAG_SCROLL key. +This allows you to toggle between scrolling and cursor movement by pressing the DRAG_SCROLL key. ### Advanced Drag Scroll @@ -711,7 +711,7 @@ If you are having issues with pointing device drivers debug messages can be enab ```c #define POINTING_DEVICE_DEBUG ``` - + ::: tip The messages will be printed out to the `CONSOLE` output. For additional information, refer to [Debugging/Troubleshooting QMK](../faq_debug). ::: @@ -720,7 +720,7 @@ The messages will be printed out to the `CONSOLE` output. For additional informa --- # Automatic Mouse Layer {#pointing-device-auto-mouse} -When using a pointing device combined with a keyboard the mouse buttons are often kept on a separate layer from the default keyboard layer, which requires pressing or holding a key to change layers before using the mouse. To make this easier and more efficient an additional pointing device feature may be enabled that will automatically activate a target layer as soon as the pointing device is active _(in motion, mouse button pressed etc.)_ and deactivate the target layer after a set time. +When using a pointing device combined with a keyboard the mouse buttons are often kept on a separate layer from the default keyboard layer, which requires pressing or holding a key to change layers before using the mouse. To make this easier and more efficient an additional pointing device feature may be enabled that will automatically activate a target layer as soon as the pointing device is active _(in motion, mouse button pressed etc.)_ and deactivate the target layer after a set time. Additionally if any key that is defined as a mouse key is pressed then the layer will be held as long as the key is pressed and the timer will be reset on key release. When a non-mouse key is pressed then the layer is deactivated early _(with some exceptions see below)_. Mod, mod tap, and one shot mod keys are ignored _(i.e. don't hold or activate layer but do not deactivate the layer either)_ when sending a modifier keycode _(e.g. hold for mod tap)_ allowing for mod keys to be used with the mouse without activating the target layer when typing. @@ -754,8 +754,9 @@ void pointing_device_init_user(void) { } ``` -Because the auto mouse feature can be disabled/enabled during runtime and starts as disabled by default it must be enabled by calling `set_auto_mouse_enable(true);` somewhere in firmware before the feature will work. -_Note: for setting the target layer during initialization either setting `AUTO_MOUSE_DEFAULT_LAYER` in `config.h` or calling `set_auto_mouse_layer()` can be used._ +Because the auto mouse feature can be disabled/enabled during runtime and starts as disabled by default it must be enabled by calling `set_auto_mouse_enable(true);` somewhere in firmware before the feature will work. + +_Note: for setting the target layer during initialization either setting `AUTO_MOUSE_DEFAULT_LAYER` in `config.h` or calling `set_auto_mouse_layer()` can be used._ ## How to Customize: @@ -774,7 +775,7 @@ There are a few ways to control the auto mouse feature with both `config.h` opti ### Adding mouse keys -While all default mouse keys and layer keys(for current mouse layer) are treated as mouse keys, additional Keyrecords can be added to mouse keys by adding them to the is_mouse_record_* stack. +While all default mouse keys and layer keys(for current mouse layer) are treated as mouse keys, additional Keyrecords can be added to mouse keys by adding them to the is_mouse_record_* stack. #### Callbacks for setting up additional key codes as mouse keys: | Callback | Description | @@ -782,7 +783,7 @@ While all default mouse keys and layer keys(for current mouse layer) are treated | `bool is_mouse_record_kb(uint16_t keycode, keyrecord_t* record)` | keyboard level callback for adding mouse keys | | `bool is_mouse_record_user(uint16_t keycode, keyrecord_t* record)` | user/keymap level callback for adding mouse keys | -##### To use the callback function to add mouse keys: +##### To use the callback function to add mouse keys: The following code will cause the enter key and all of the arrow keys to be treated as mouse keys (hold target layer while they are pressed and reset active layer timer). ```c @@ -806,7 +807,7 @@ bool is_mouse_record_kb(uint16_t keycode, keyrecord_t* record) { There are several functions that allow for more advanced interaction with the auto mouse feature allowing for greater control. -### Functions to control auto mouse enable and target layer: +### Functions to control auto mouse enable and target layer: | Function | Description | Aliases | Return type | | :--------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------- | --------------: | | `set_auto_mouse_enable(bool enable)` | Enable or disable auto mouse (true:enable, false:disable) | | `void`(None) | @@ -825,25 +826,27 @@ There are several functions that allow for more advanced interaction with the au | `get_auto_mouse_key_tracker(void)` | Gets the current count for the auto mouse key tracker. | | `int8_t` | | `set_auto_mouse_key_tracker(int8_t key_tracker)` | Sets/Overrides the current count for the auto mouse key tracker. | | `void`(None) | -_NOTES:_ - - _Due to the nature of how some functions work, the `auto_mouse_trigger_reset`, and `auto_mouse_layer_off` functions should never be called in the `layer_state_set_*` stack as this can cause indefinite loops._ - - _It is recommended that `remove_auto_mouse_layer` is used in the `layer_state_set_*` stack of functions and `auto_mouse_layer_off` is used everywhere else_ - - _`remove_auto_mouse_layer(state, false)` or `auto_mouse_layer_off()` should be called before any instance of `set_auto_mouse_enabled(false)` or `set_auto_mouse_layer(layer)` to ensure that the target layer will be removed appropriately before disabling auto mouse or changing target to avoid a stuck layer_ - -### Functions for handling custom key events: +_NOTES:_ + +- _Due to the nature of how some functions work, the `auto_mouse_trigger_reset`, and `auto_mouse_layer_off` functions should never be called in the `layer_state_set_*` stack as this can cause indefinite loops._ +- _It is recommended that `remove_auto_mouse_layer` is used in the `layer_state_set_*` stack of functions and `auto_mouse_layer_off` is used everywhere else_ +- _`remove_auto_mouse_layer(state, false)` or `auto_mouse_layer_off()` should be called before any instance of `set_auto_mouse_enabled(false)` or `set_auto_mouse_layer(layer)` to ensure that the target layer will be removed appropriately before disabling auto mouse or changing target to avoid a stuck layer_ + +### Functions for handling custom key events: | Function | Description | Return type | | :--------------------------------------------------------- | -------------------------------------------------------------------------------- | --------------: | | `auto_mouse_keyevent(bool pressed)` | Auto mouse mouse key event (true: key down, false: key up) | `void`(None) | | `auto_mouse_trigger_reset(bool pressed)` | Reset auto mouse status on key down and start delay timer (non-mouse key event) | `void`(None) | | `auto_mouse_toggle(void)` | Toggle on/off target toggle state (disables layer deactivation when true) | `void`(None) | -| `get_auto_mouse_toggle(void)` | Return value of toggling state variable | `bool` | +| `get_auto_mouse_toggle(void)` | Return value of toggling state variable | `bool` | + _NOTE: Generally it would be preferable to use the `is_mouse_record_*` functions to add any additional keys that should act as mouse keys rather than adding `auto_mouse_keyevent(record.event->pressed)` to `process_records_*`_ -### Advanced control examples +### Advanced control examples -#### Disable auto mouse on certain layers: +#### Disable auto mouse on certain layers: -The auto mouse feature can be disabled any time and this can be helpful if you want to disable the auto mouse feature under certain circumstances such as when particular layers are active. One issue however is the handling of the target layer, it needs to be removed appropriately **before** disabling auto mouse _(see notes under control functions above)_. The following function would disable the auto_mouse feature whenever the layers `_LAYER5` through `_LAYER7` are active as the top most layer _(ignoring target layer)_. +The auto mouse feature can be disabled any time and this can be helpful if you want to disable the auto mouse feature under certain circumstances such as when particular layers are active. One issue however is the handling of the target layer, it needs to be removed appropriately **before** disabling auto mouse _(see notes under control functions above)_. The following function would disable the auto_mouse feature whenever the layers `_LAYER5` through `_LAYER7` are active as the top most layer _(ignoring target layer)_. ```c // in keymap.c: @@ -882,7 +885,7 @@ layer_state_t default_layer_state_set_user(layer_state_t state) { auto_mouse_layer_off(); set_auto_mouse_layer(_MOUSE_LAYER_2); break; - + default: if((AUTO_MOUSE_TARGET_LAYER) == _MOUSE_LAYER_1) break; auto_mouse_layer_off(); @@ -892,9 +895,11 @@ layer_state_t default_layer_state_set_user(layer_state_t state) { } ``` -### Use custom keys to control auto mouse: -Custom key records could also be created that control the auto mouse feature. -The code example below would create a custom key that would toggle the auto mouse feature on and off when pressed while also setting a bool that could be used to disable other code that may turn it on such as the layer code above. +### Use custom keys to control auto mouse: + +Custom key records could also be created that control the auto mouse feature. + +The code example below would create a custom key that would toggle the auto mouse feature on and off when pressed while also setting a bool that could be used to disable other code that may turn it on such as the layer code above. ```c // in config.h: @@ -923,11 +928,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) { ## Customize Target Layer Activation -Layer activation can be customized by overwriting the `auto_mouse_activation` function. This function is checked every time `pointing_device_task` is called when inactive and every `AUTO_MOUSE_DEBOUNCE` ms when active, and will evaluate pointing device level conditions that trigger target layer activation. When it returns true, the target layer will be activated barring the usual exceptions _(e.g. delay time has not expired)_. +Layer activation can be customized by overwriting the `auto_mouse_activation` function. This function is checked every time `pointing_device_task` is called when inactive and every `AUTO_MOUSE_DEBOUNCE` ms when active, and will evaluate pointing device level conditions that trigger target layer activation. When it returns true, the target layer will be activated barring the usual exceptions _(e.g. delay time has not expired)_. By default it will return true if any of the `mouse_report` axes `x`,`y`,`h`,`v` are non zero, or if there is any mouse buttons active in `mouse_report`. _Note: The Cirque pinnacle track pad already implements a custom activation function that will activate on touchdown as well as movement all of the default conditions, currently this only works for the master side of split keyboards._ - + | Function | Description | Return type | | :--------------------------------------------------------- | -------------------------------------------------------------------------------- | --------------: | | `auto_mouse_activation(report_mouse_t mouse_report)` | Overwritable function that controls target layer activation (when true) | `bool` | @@ -939,12 +944,12 @@ When using a custom pointing device (overwriting `pointing_device_task`) the fol ```c bool pointing_device_task(void) { //...Custom pointing device task code - + // handle automatic mouse layer (needs report_mouse_t as input) pointing_device_task_auto_mouse(local_mouse_report); - + //...More custom pointing device task code - + return pointing_device_send(); } ``` diff --git a/docs/features/repeat_key.md b/docs/features/repeat_key.md index 7f2bdc44e6..543dfd1008 100644 --- a/docs/features/repeat_key.md +++ b/docs/features/repeat_key.md @@ -5,7 +5,7 @@ Key after tapping the Z key types another "`z`." This is useful for typing doubled letters, like the `z` in "`dazzle`": a double tap on Z can instead be a roll from Z to Repeat, which is potentially faster and more comfortable. The Repeat Key is also useful for -hotkeys, like repeating Ctrl + Shift + Right Arrow to select by word. +hotkeys, like repeating Ctrl + Shift + Right Arrow to select by word. Repeat Key remembers mods that were active with the last key press. These mods are combined with any additional mods while pressing the Repeat Key. If the last @@ -49,10 +49,10 @@ reduce firmware size, Alternate Repeat may be disabled by adding in config.h: The following alternate keys are defined by default. See `get_alt_repeat_key_keycode_user()` below for how to change or add to these -definitions. Where it makes sense, these definitions also include combinations +definitions. Where it makes sense, these definitions also include combinations with mods, like Ctrl + Left ↔ Ctrl + Right Arrow. -**Navigation** +**Navigation** |Keycodes |Description | |-----------------------------------|-----------------------------------| @@ -65,7 +65,7 @@ with mods, like Ctrl + Left ↔ Ctrl + Right Arrow. |`MS_WHLL` ↔ `MS_WHLR` | Mouse Wheel Left ↔ Right | |`MS_WHLU` ↔ `MS_WHLD` | Mouse Wheel Up ↔ Down | -**Misc** +**Misc** |Keycodes |Description | |-----------------------------------|-----------------------------------| @@ -73,7 +73,7 @@ with mods, like Ctrl + Left ↔ Ctrl + Right Arrow. |`KC_LBRC` ↔ `KC_RBRC` | `[` ↔ `]` | |`KC_LCBR` ↔ `KC_RCBR` | `{` ↔ `}` | -**Media** +**Media** |Keycodes |Description | |-----------------------------------|-----------------------------------| @@ -176,9 +176,9 @@ macro](../feature_macros). This way macros can be used without having to dedicate keys to them. The following defines a couple shortcuts. * Typing K, Alt Repeat produces "`keyboard`," with the - initial "`k`" typed as usual and the "`eybord`" produced by the macro. + initial "`k`" typed as usual and the "`eybord`" produced by the macro. * Typing ., Alt Repeat produces "`../`," handy for "up - directory" on the shell. Similary, . types the initial "`.`" and + directory" on the shell. Similarly, . types the initial "`.`" and "`./`" is produced by the macro. ```c @@ -290,7 +290,7 @@ By default, pressing the Repeat Key will simply behave as if the last key were pressed again. This also works with macro keys with custom handlers, invoking the macro again. In case fine-tuning is needed for sensible repetition, you can handle how a key is repeated with `get_repeat_key_count()` within -`process_record_user()`. +`process_record_user()`. The `get_repeat_key_count()` function returns a signed count of times the key has been repeated or alternate repeated. When a key is pressed as usual, @@ -306,16 +306,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) { if (get_repeat_key_count() > 0) { // MY_MACRO is being repeated! if (record->event.pressed) { - SEND_STRING("repeat!"); + SEND_STRING("repeat!"); } - } else { + } else { // MY_MACRO is being used normally. - if (record->event.pressed) { + if (record->event.pressed) { SEND_STRING("macro"); } } return false; - + // Other macros... } return true; @@ -347,19 +347,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) { case MY_MACRO: if (get_repeat_key_count() > 0) { // Repeating. if (record->event.pressed) { - SEND_STRING("repeat!"); + SEND_STRING("repeat!"); } } else if (get_repeat_key_count() < 0) { // Alternate repeating. if (record->event.pressed) { SEND_STRING("alt repeat!"); } } else { // Used normally. - if (record->event.pressed) { + if (record->event.pressed) { SEND_STRING("macro"); } } return false; - + // Other macros... } return true; @@ -377,7 +377,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) { | `set_last_mods(mods)` | Set the mods to apply when repeating. | | `get_repeat_key_count()` | Signed count of times the key has been repeated or alternate repeated. | | `get_alt_repeat_key_keycode()` | Keycode to be used for alternate repeating. | - + ## Additional "Alternate" keys @@ -437,7 +437,7 @@ static void process_altrep3(uint16_t keycode, uint8_t mods) { bool process_record_user(uint16_t keycode, keyrecord_t* record) { switch (keycode) { - case ALTREP2: + case ALTREP2: if (record->event.pressed) { process_altrep2(get_last_keycode(), get_last_mods()); } diff --git a/docs/features/rgb_matrix.md b/docs/features/rgb_matrix.md index b0110b436b..95ee4c4896 100644 --- a/docs/features/rgb_matrix.md +++ b/docs/features/rgb_matrix.md @@ -125,13 +125,13 @@ enum rgb_matrix_effects { RGB_MATRIX_CYCLE_SPIRAL, // Full gradient spinning spiral around center of keyboard RGB_MATRIX_DUAL_BEACON, // Full gradient spinning around center of keyboard RGB_MATRIX_RAINBOW_BEACON, // Full tighter gradient spinning around center of keyboard - RGB_MATRIX_RAINBOW_PINWHEELS, // Full dual gradients spinning two halfs of keyboard + RGB_MATRIX_RAINBOW_PINWHEELS, // Full dual gradients spinning two halves of keyboard RGB_MATRIX_FLOWER_BLOOMING, // Full tighter gradient of first half scrolling left to right and second half scrolling right to left RGB_MATRIX_RAINDROPS, // Randomly changes a single key's hue RGB_MATRIX_JELLYBEAN_RAINDROPS, // Randomly changes a single key's hue and saturation - RGB_MATRIX_HUE_BREATHING, // Hue shifts up a slight ammount at the same time, then shifts back - RGB_MATRIX_HUE_PENDULUM, // Hue shifts up a slight ammount in a wave to the right, then back to the left - RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight ammount and then back down in a wave to the right + RGB_MATRIX_HUE_BREATHING, // Hue shifts up a slight amount at the same time, then shifts back + RGB_MATRIX_HUE_PENDULUM, // Hue shifts up a slight amount in a wave to the right, then back to the left + RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight amount and then back down in a wave to the right RGB_MATRIX_PIXEL_FRACTAL, // Single hue fractal filled keys pulsing horizontally out to edges RGB_MATRIX_PIXEL_FLOW, // Pulsing RGB flow along LED wiring with random hues RGB_MATRIX_PIXEL_RAIN, // Randomly light keys with random hues @@ -240,7 +240,7 @@ In order to change the delay of temperature decrease define `RGB_MATRIX_TYPING_H As heatmap uses the physical position of the leds set in the g_led_config, you may need to tweak the following options to get the best effect for your keyboard. Note the size of this grid is `224x64`. -Limit the distance the effect spreads to surrounding keys. +Limit the distance the effect spreads to surrounding keys. ```c #define RGB_MATRIX_TYPING_HEATMAP_SPREAD 40 @@ -406,8 +406,8 @@ const char* effect_name = rgb_matrix_get_mode_name(rgb_matrix_get_mode()); #define RGB_MATRIX_VAL_STEP 16 // The value by which to increment the brightness per adjustment action #define RGB_MATRIX_SPD_STEP 16 // The value by which to increment the animation speed per adjustment action #define RGB_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL // Sets the default LED flags, if none has been set -#define RGB_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right. - // If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR +#define RGB_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right. + // If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR #define RGB_TRIGGER_ON_KEYDOWN // Triggers RGB keypress events on key down. This makes RGB control feel more responsive. This may cause RGB to not function properly on some boards ``` diff --git a/docs/features/space_cadet.md b/docs/features/space_cadet.md index 0abdaebf33..66761f5a46 100644 --- a/docs/features/space_cadet.md +++ b/docs/features/space_cadet.md @@ -32,7 +32,7 @@ COMMAND_ENABLE = no ## Configuration -By default Space Cadet assumes a US ANSI layout, but if your layout uses different keys for parentheses, you can redefine them in your `config.h`. In addition, you can redefine the modifier to send on tap, or even send no modifier at all. The new configuration defines bundle all options up into a single define of 3 key codes in this order: the `Modifier` when held or when used with other keys, the `Tap Modifer` sent when tapped (no modifier if `KC_TRNS`), finally the `Keycode` sent when tapped. Now keep in mind, mods from other keys will still apply to the `Keycode` if say `KC_RSFT` is held while tapping `SC_LSPO` key with `KC_TRNS` as the `Tap Modifer`. +By default Space Cadet assumes a US ANSI layout, but if your layout uses different keys for parentheses, you can redefine them in your `config.h`. In addition, you can redefine the modifier to send on tap, or even send no modifier at all. The new configuration defines bundle all options up into a single define of 3 key codes in this order: the `Modifier` when held or when used with other keys, the `Tap Modifier` sent when tapped (no modifier if `KC_TRNS`), finally the `Keycode` sent when tapped. Now keep in mind, mods from other keys will still apply to the `Keycode` if say `KC_RSFT` is held while tapping `SC_LSPO` key with `KC_TRNS` as the `Tap Modifier`. |Define |Default |Description | |----------------|-------------------------------|---------------------------------------------------------------------------------| diff --git a/docs/features/split_keyboard.md b/docs/features/split_keyboard.md index fbf5d3d3e2..4b299b14f8 100644 --- a/docs/features/split_keyboard.md +++ b/docs/features/split_keyboard.md @@ -1,12 +1,12 @@ -# Split Keyboard +# Split Keyboard -Many keyboards in the QMK Firmware repo are "split" keyboards. They use two controllers—one plugging into USB, and the second connected by a serial or an I2C connection over a TRRS or similar cable. +Many keyboards in the QMK Firmware repo are "split" keyboards. They use two controllers—one plugging into USB, and the second connected by a serial or an I2C connection over a TRRS or similar cable. -Split keyboards can have a lot of benefits, but there is some additional work needed to get them enabled. +Split keyboards can have a lot of benefits, but there is some additional work needed to get them enabled. -QMK Firmware has a generic implementation that is usable by any board, as well as numerous board specific implementations. +QMK Firmware has a generic implementation that is usable by any board, as well as numerous board specific implementations. -For this, we will mostly be talking about the generic implementation used by the Let's Split and other keyboards. +For this, we will mostly be talking about the generic implementation used by the Let's Split and other keyboards. ::: warning ARM split supports most QMK subsystems when using the 'serial' and 'serial_usart' drivers. I2C slave is currently unsupported. @@ -29,33 +29,33 @@ Notes: ## Hardware Configuration -This assumes that you're using two Pro Micro-compatible controllers, and are using TRRS jacks to connect to two halves. +This assumes that you're using two Pro Micro-compatible controllers, and are using TRRS jacks to connect to two halves. ### Required Hardware Apart from diodes and key switches for the keyboard matrix in each half, you will need 2x TRRS sockets and 1x TRRS cable. -Alternatively, you can use any sort of cable and socket that has at least 3 wires. +Alternatively, you can use any sort of cable and socket that has at least 3 wires. If you want to use I2C to communicate between halves, you will need a cable with at least 4 wires and 2x 4.7kΩ pull-up resistors. -#### Considerations +#### Considerations -The most commonly used connection is a TRRS cable and jacks. These provide 4 wires, making them very useful for split keyboards, and are easy to find. +The most commonly used connection is a TRRS cable and jacks. These provide 4 wires, making them very useful for split keyboards, and are easy to find. -However, since one of the wires carries VCC, this means that the boards are not hot pluggable. You should always disconnect the board from USB before unplugging and plugging in TRRS cables, or you can short the controller, or worse. +However, since one of the wires carries VCC, this means that the boards are not hot pluggable. You should always disconnect the board from USB before unplugging and plugging in TRRS cables, or you can short the controller, or worse. -Another option is to use phone cables (as in, old school RJ-11/RJ-14 cables). Make sure that you use one that actually supports 4 wires/lanes. +Another option is to use phone cables (as in, old school RJ-11/RJ-14 cables). Make sure that you use one that actually supports 4 wires/lanes. -However, USB cables, SATA cables, and even just 4 wires have been known to be used for communication between the controllers. +However, USB cables, SATA cables, and even just 4 wires have been known to be used for communication between the controllers. ::: warning -Using USB cables for communication between the controllers works just fine, but the connector could be mistaken for a normal USB connection and potentially short out the keyboard, depending on how it's wired. For this reason, they are not recommended for connecting split keyboards. +Using USB cables for communication between the controllers works just fine, but the connector could be mistaken for a normal USB connection and potentially short out the keyboard, depending on how it's wired. For this reason, they are not recommended for connecting split keyboards. ::: ### Serial Wiring -The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and D0/D1/D2/D3 (aka PD0/PD1/PD2/PD3) between the two Pro Micros. +The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and D0/D1/D2/D3 (aka PD0/PD1/PD2/PD3) between the two Pro Micros. ::: tip Note that the pin used here is actually set by `SOFT_SERIAL_PIN` below. @@ -66,7 +66,7 @@ Note that the pin used here is actually set by `SOFT_SERIAL_PIN` below. ### I2C Wiring -The 4 wires of the TRRS cable need to connect GND, VCC, and SCL and SDA (aka PD0/pin 3 and PD1/pin 2, respectively) between the two Pro Micros. +The 4 wires of the TRRS cable need to connect GND, VCC, and SCL and SDA (aka PD0/pin 3 and PD1/pin 2, respectively) between the two Pro Micros. The pull-up resistors may be placed on either half. If you wish to use the halves independently, it is also possible to use 4 resistors and have the pull-ups in both halves. Note that the total resistance for the connected system should be within spec at 2.2k-10kOhm, with an 'ideal' at 4.7kOhm, regardless of the placement and number. @@ -75,13 +75,13 @@ Note that the total resistance for the connected system should be within spec at ## Firmware Configuration -To enable the split keyboard feature, add the following to your `rules.mk`: +To enable the split keyboard feature, add the following to your `rules.mk`: ```make SPLIT_KEYBOARD = yes ``` -If you're using a custom transport (communication method), then you will also need to add: +If you're using a custom transport (communication method), then you will also need to add: ```make SPLIT_TRANSPORT = custom @@ -109,7 +109,7 @@ You can configure the firmware to read a pin on the controller to determine hand #define SPLIT_HAND_PIN B7 ``` -This will read the specified pin. By default, if it's high, then the controller assumes it is the left hand, and if it's low, it's assumed to be the right side. +This will read the specified pin. By default, if it's high, then the controller assumes it is the left hand, and if it's low, it's assumed to be the right side. This behaviour can be flipped by adding this to you `config.h` file: @@ -141,10 +141,10 @@ While `MATRIX_MASKED` isn't necessary to use `SPLIT_HAND_MATRIX_GRID` successful #### Handedness by EEPROM -This method sets the keyboard's handedness by setting a flag in the persistent storage (`EEPROM`). This is checked when the controller first starts up, and determines what half the keyboard is, and how to orient the keyboard layout. +This method sets the keyboard's handedness by setting a flag in the persistent storage (`EEPROM`). This is checked when the controller first starts up, and determines what half the keyboard is, and how to orient the keyboard layout. -To enable this method, add the following to your `config.h` file: +To enable this method, add the following to your `config.h` file: ```c #define EE_HANDS @@ -176,7 +176,7 @@ Some controllers (e.g. Blackpill with DFU compatible bootloader) will need to be [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases/) can also be used to flash EEPROM handedness files. Place the controller in bootloader mode and select menu option Tools -> EEPROM -> Set Left/Right Hand ::: -This setting is not changed when re-initializing the EEPROM using the `EE_CLR` key, or using the `eeconfig_init()` function. However, if you reset the EEPROM outside of the firmware's built in options (such as flashing a file that overwrites the `EEPROM`, like how the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases/)'s "Reset EEPROM" button works), you'll need to re-flash the controller with the `EEPROM` files. +This setting is not changed when re-initializing the EEPROM using the `EE_CLR` key, or using the `eeconfig_init()` function. However, if you reset the EEPROM outside of the firmware's built in options (such as flashing a file that overwrites the `EEPROM`, like how the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases/)'s "Reset EEPROM" button works), you'll need to re-flash the controller with the `EEPROM` files. You can find the `EEPROM` files in the QMK firmware repo, [here](https://github.com/qmk/qmk_firmware/tree/master/quantum/split_common). @@ -208,13 +208,13 @@ Because not every split keyboard is identical, there are a number of additional #define USE_I2C ``` -This configures the use of I2C support for split keyboard transport (AVR only). +This configures the use of I2C support for split keyboard transport (AVR only). ```c #define SOFT_SERIAL_PIN D0 ``` -This sets the pin to be used for serial communication. If you're not using serial, you shouldn't need to define this. +This sets the pin to be used for serial communication. If you're not using serial, you shouldn't need to define this. However, if you are using serial and I2C on the board, you will need to set this, and to something other than D0 and D1 (as these are used for I2C communication). @@ -235,7 +235,7 @@ If you're having issues with serial communication, you can change this value, as #define FORCED_SYNC_THROTTLE_MS 100 ``` -This sets the maximum number of milliseconds before forcing a synchronization of data from master to slave. Under normal circumstances this sync occurs whenever the data _changes_, for safety a data transfer occurs after this number of milliseconds if no change has been detected since the last sync. +This sets the maximum number of milliseconds before forcing a synchronization of data from master to slave. Under normal circumstances this sync occurs whenever the data _changes_, for safety a data transfer occurs after this number of milliseconds if no change has been detected since the last sync. ```c #define SPLIT_MAX_CONNECTION_ERRORS 10 @@ -249,7 +249,7 @@ Set to 0 to disable the disconnection check altogether. ``` How long (in milliseconds) the master part should block all connection attempts to the slave after the communication has been flagged as disconnected (see `SPLIT_MAX_CONNECTION_ERRORS` above). -One communication attempt will be allowed everytime this amount of time has passed since the last attempt. If that attempt succeeds, the communication is seen as working again. +One communication attempt will be allowed every time this amount of time has passed since the last attempt. If that attempt succeeds, the communication is seen as working again. Set to 0 to disable this throttling of communications while disconnected. This can save you a couple of bytes of firmware size. @@ -280,7 +280,7 @@ This enables syncing of the Host LED status (caps lock, num lock, etc) between b #define SPLIT_MODS_ENABLE ``` -This enables transmitting modifier state (normal, weak, oneshot and oneshot locked) to the non primary side of the split keyboard. The purpose of this feature is to support cosmetic use of modifer state (e.g. displaying status on an OLED screen). +This enables transmitting modifier state (normal, weak, oneshot and oneshot locked) to the non primary side of the split keyboard. The purpose of this feature is to support cosmetic use of modifier state (e.g. displaying status on an OLED screen). ```c #define SPLIT_WPM_ENABLE @@ -304,7 +304,7 @@ This enables transmitting the current ST7565 on/off status to the slave side of #define SPLIT_POINTING_ENABLE ``` -This enables transmitting the pointing device status to the master side of the split keyboard. The purpose of this feature is to enable use pointing devices on the slave side. +This enables transmitting the pointing device status to the master side of the split keyboard. The purpose of this feature is to enable use pointing devices on the slave side. ::: warning There is additional required configuration for `SPLIT_POINTING_ENABLE` outlined in the [pointing device documentation](pointing_device#split-keyboard-configuration). @@ -401,7 +401,7 @@ By default, the inbound and outbound data is limited to a maximum of 32 bytes ea ### Hardware Configuration Options -There are some settings that you may need to configure, based on how the hardware is set up. +There are some settings that you may need to configure, based on how the hardware is set up. ```c #define MATRIX_ROW_PINS_RIGHT { } @@ -433,7 +433,7 @@ This option enables synchronization of the RGB Light modes between the controlle #define RGBLED_SPLIT { 6, 6 } ``` -This sets how many LEDs are directly connected to each controller. The first number is the left side, and the second number is the right side. +This sets how many LEDs are directly connected to each controller. The first number is the left side, and the second number is the right side. ::: tip This setting implies that `RGBLIGHT_SPLIT` is enabled, and will forcibly enable it, if it's not. @@ -479,7 +479,7 @@ This set the maximum slave timeout when waiting for communication from master wh Master/slave delegation is made either by detecting voltage on VBUS connection or waiting for USB communication (`SPLIT_USB_DETECT`). Pro Micro boards can use VBUS detection out of the box and be used with or without `SPLIT_USB_DETECT`. -Many ARM boards, but not all, do not support VBUS detection. Because it is common that ARM boards lack VBUS detection, `SPLIT_USB_DETECT` is automatically defined on ARM targets (technically when ChibiOS is targetted). +Many ARM boards, but not all, do not support VBUS detection. Because it is common that ARM boards lack VBUS detection, `SPLIT_USB_DETECT` is automatically defined on ARM targets (technically when ChibiOS is targeted). ### Teensy boards @@ -501,7 +501,7 @@ You may need to use the 5V pad from the regulator block above as the pads were t ## Additional Resources -Nicinabox has a [very nice and detailed guide](https://github.com/nicinabox/lets-split-guide) for the Let's Split keyboard, that covers most everything you need to know, including troubleshooting information. +Nicinabox has a [very nice and detailed guide](https://github.com/nicinabox/lets-split-guide) for the Let's Split keyboard, that covers most everything you need to know, including troubleshooting information. However, the RGB Light section is out of date, as it was written long before the RGB Split code was added to QMK Firmware. Instead, wire each strip up directly to the controller. diff --git a/docs/features/st7565.md b/docs/features/st7565.md index de3e44d8e9..09a1efce30 100644 --- a/docs/features/st7565.md +++ b/docs/features/st7565.md @@ -182,12 +182,12 @@ void st7565_render(void); void st7565_set_cursor(uint8_t col, uint8_t line); // Advances the cursor to the next page, writing ' ' if true -// Wraps to the begining when out of bounds +// Wraps to the beginning when out of bounds void st7565_advance_page(bool clearPageRemainder); // Moves the cursor forward 1 character length // Advance page if there is not enough room for the next character -// Wraps to the begining when out of bounds +// Wraps to the beginning when out of bounds void st7565_advance_char(void); // Writes a single character to the buffer at current cursor position diff --git a/docs/features/stenography.md b/docs/features/stenography.md index 4176344b5a..b253890e13 100644 --- a/docs/features/stenography.md +++ b/docs/features/stenography.md @@ -102,7 +102,7 @@ STENO_ENABLE = yes STENO_PROTOCOL = all ``` -If you want to switch protocols programatically, as part of a custom macro for example, don't use `tap_code(QK_STENO_*)`, as `tap_code` only supports [basic keycodes](../keycodes_basic). Instead, you should use `steno_set_mode(STENO_MODE_*)`, whose valid arguments are `STENO_MODE_BOLT` and `STENO_MODE_GEMINI`. +If you want to switch protocols programmatically, as part of a custom macro for example, don't use `tap_code(QK_STENO_*)`, as `tap_code` only supports [basic keycodes](../keycodes_basic). Instead, you should use `steno_set_mode(STENO_MODE_*)`, whose valid arguments are `STENO_MODE_BOLT` and `STENO_MODE_GEMINI`. The default protocol is Gemini PR but the last protocol used is stored in non-volatile memory so QMK will remember your choice between reboots of your keyboard — assuming that your keyboard features (emulated) EEPROM. diff --git a/docs/hand_wire.md b/docs/hand_wire.md index be21cf2cc4..492ca384b1 100644 --- a/docs/hand_wire.md +++ b/docs/hand_wire.md @@ -162,7 +162,7 @@ The pins you'll absolutely have to avoid, as with any controller, are: GND, VCC, Cut wires to the length of the distance from the a point on each column/row to the controller. You can solder anywhere along the row, as long as it's after the diode - soldering before the diode (on the keyswitch side) will cause that row not to work. -Ribbon cable can be used to keep this extra tidy. You may also want to consider routing the wires beneath the exisiting columns/rows. +Ribbon cable can be used to keep this extra tidy. You may also want to consider routing the wires beneath the existing columns/rows. Ribbon Cable @@ -188,7 +188,7 @@ qmk import-kbfirmware /path/to/export.json For example: ``` -$ qmk import-kbfirmware ~/Downloads/gh62.json +$ qmk import-kbfirmware ~/Downloads/gh62.json Ψ Importing gh62.json. ⚠ Support here is basic - Consider using 'qmk new-keyboard' instead @@ -227,16 +227,16 @@ If you've done all of these things, keep in mind that sometimes you might have h ## Finishing up -Once you have confirmed that the keyboard is working, if you have used a seperate (non handwire specific) controller you will want to secure it in place. This can be done in many different ways e.g. hot glue, double sided sticky tape, 3D printed caddy, electrical tape. +Once you have confirmed that the keyboard is working, if you have used a separate (non handwire specific) controller you will want to secure it in place. This can be done in many different ways e.g. hot glue, double sided sticky tape, 3D printed caddy, electrical tape. -If you found this fullfilling you could experiment by adding additional features such as [in switch LEDs](https://geekhack.org/index.php?topic=94258.0), [in switch RGB](https://www.reddit.com/r/MechanicalKeyboards/comments/5s1l5u/photoskeyboard_science_i_made_a_handwired_rgb/), [RGB underglow](https://medium.com/@DavidNZ/hand-wired-custom-keyboard-cdd14429c7b3#.7a1ovebsk) or even an [OLED display!](https://www.reddit.com/r/olkb/comments/5zy7og/adding_ssd1306_oled_display_to_your_build/) +If you found this fulfilling you could experiment by adding additional features such as [in switch LEDs](https://geekhack.org/index.php?topic=94258.0), [in switch RGB](https://www.reddit.com/r/MechanicalKeyboards/comments/5s1l5u/photoskeyboard_science_i_made_a_handwired_rgb/), [RGB underglow](https://medium.com/@DavidNZ/hand-wired-custom-keyboard-cdd14429c7b3#.7a1ovebsk) or even an [OLED display!](https://www.reddit.com/r/olkb/comments/5zy7og/adding_ssd1306_oled_display_to_your_build/) There are a lot of possibilities inside the firmware - explore [the documentation](/) for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by [the OLKB subreddit](https://reddit.com/r/olkb) or [QMK Discord](https://discord.gg/qmk) for help! ## Links to Other Guides - [matt3o's step by step guide (BrownFox build)](https://deskthority.net/viewtopic.php?f=7&t=6050) also his [website](https://matt3o.com/hand-wiring-a-custom-keyboard/) and [video guide](https://www.youtube.com/watch?v=LVzpsjFWPP4) -- [Cribbit's "Modern hand wiring guide - stronger, cleaner, easier"](https://geekhack.org/index.php?topic=87689.0) +- [Cribbit's "Modern hand wiring guide - stronger, cleaner, easier"](https://geekhack.org/index.php?topic=87689.0) - [Sasha Solomon's "Building my first Keyboard"](https://medium.com/@sachee/building-my-first-keyboard-and-you-can-too-512c0f8a4c5f) - [RoastPotatoes' "How to hand wire a Planck"](https://blog.roastpotatoes.co/guide/2015/11/04/how-to-handwire-a-planck/) - [Masterzen's "Handwired keyboard build log"](https://www.masterzen.fr/2018/12/16/handwired-keyboard-build-log-part-1/) diff --git a/docs/hardware_drivers.md b/docs/hardware_drivers.md index 694d46971a..40a25d9fa7 100644 --- a/docs/hardware_drivers.md +++ b/docs/hardware_drivers.md @@ -24,7 +24,7 @@ Support for WS2811/WS2812{a,b,c} LED's. For more information see the [RGB Light] ## IS31FL3731 -Support for up to 2 drivers. Each driver impliments 2 charlieplex matrices to individually address LEDs using I2C. This allows up to 144 same color LEDs or 32 RGB LEDs. For more information on how to setup the driver see the [RGB Matrix](features/rgb_matrix) page. +Support for up to 2 drivers. Each driver implements 2 charlieplex matrices to individually address LEDs using I2C. This allows up to 144 same color LEDs or 32 RGB LEDs. For more information on how to setup the driver see the [RGB Matrix](features/rgb_matrix) page. ## IS31FL3733 diff --git a/docs/quantum_painter_lvgl.md b/docs/quantum_painter_lvgl.md index 40b3c3b2f1..0ff0e321ec 100644 --- a/docs/quantum_painter_lvgl.md +++ b/docs/quantum_painter_lvgl.md @@ -5,7 +5,7 @@ LVGL (Light and Versatile Graphics Library) is an open-source graphics library p LVGL integrates with [Quantum Painter's](quantum_painter) API and drivers to render to the display, the hardware supported by Quantum Painter is also supported by LVGL. ::: tip -Keep in mind that enabling the LVGL integration has a big impact in firmware size, it is recommeded to use a supported MCU with >256 kB of flash space. +Keep in mind that enabling the LVGL integration has a big impact in firmware size, it is recommended to use a supported MCU with >256 kB of flash space. ::: To learn more about LVGL and how to use it please take a look at their [official documentation](https://docs.lvgl.io/8.2/intro/) @@ -35,7 +35,7 @@ static painter_device_t display; void keyboard_post_init_kb(void) { display = qp_make_.......; // Create the display qp_init(display, QP_ROTATION_0); // Initialise the display - + if (qp_lvgl_attach(display)) { // Attach LVGL to the display ...Your code to draw // Run LVGL specific code to draw } diff --git a/docs/squeezing_avr.md b/docs/squeezing_avr.md index c3f3d3c6e1..458b442d59 100644 --- a/docs/squeezing_avr.md +++ b/docs/squeezing_avr.md @@ -5,14 +5,14 @@ AVR is severely resource-constrained, and as QMK continues to grow, it is approa However, if you need to reduce the compiled size of your firmware to fit the controller's limited flash size, there are a number of options to do so. ## `rules.mk` Settings -First and foremost is enabling link time optimization. To do so, add this to your rules.mk: +First and foremost is enabling link time optimization. To do so, add this to your rules.mk: ```make LTO_ENABLE = yes ``` This will cause the final step to take longer, but should get you a smaller compiled size. This also disables Action Functions, and Action Macros, both of which are deprecated. This will get you the most savings, in most situations. -From there, disabling extraneous systems will help -- e.g.: +From there, disabling extraneous systems will help -- e.g.: ```make CONSOLE_ENABLE = no COMMAND_ENABLE = no @@ -21,10 +21,10 @@ EXTRAKEY_ENABLE = no ``` This disables some of the functionality that you may not need. But note that extrakeys disables stuff like the media keys and system volume control. -If that isn't enough to get your firmware down to size, then there are some additional features that you can disable: +If that isn't enough to get your firmware down to size, then there are some additional features that you can disable: ```make SPACE_CADET_ENABLE = no -GRAVE_ESC_ENABLE = no +GRAVE_ESC_ENABLE = no MAGIC_ENABLE = no ``` These features are enabled by default, but they may not be needed. Double check to make sure. The [Magic Keycodes](keycodes_magic) are the largest and control things like NKRO toggling, GUI and ALT/CTRL swapping, etc. Disabling them will disable those functions. See [Magic Functions](#magic-functions) for disabling related functions. @@ -51,7 +51,7 @@ Starting with Lock Key support. If you have a Cherry MX Lock switch (lucky you!) #undef LOCKING_SUPPORT_ENABLE #undef LOCKING_RESYNC_ENABLE ``` -Oneshots. If you're not using these, you can disable the feature by adding this to your `config.h`: +Oneshots. If you're not using these, you can disable the feature by adding this to your `config.h`: ```c #define NO_ACTION_ONESHOT ``` @@ -61,7 +61,7 @@ The same with tapping keys (mod tap, layer tap, etc) ``` ## Audio Settings -If you're using the Audio feature, by default that includes the music mode feature. This tranlates matrix positions into notes. It's neat for sure, but most likely, you're not using it. You can disable it by adding this to your `config.h`: +If you're using the Audio feature, by default that includes the music mode feature. This translates matrix positions into notes. It's neat for sure, but most likely, you're not using it. You can disable it by adding this to your `config.h`: ```c #define NO_MUSIC_MODE ``` @@ -124,7 +124,7 @@ into this: oled_write_P(PSTR("WPM: "), false); oled_write(get_u8_str(get_current_wpm(), ' '), false); ``` -which outputs `WPM: 5`. Or this: +which outputs `WPM: 5`. Or this: ```c // NEW CODE oled_write_P(PSTR("WPM: "), false); diff --git a/docs/usb_nkro.txt b/docs/usb_nkro.txt index d9f1d12292..5817291b6b 100644 --- a/docs/usb_nkro.txt +++ b/docs/usb_nkro.txt @@ -58,7 +58,7 @@ USB NKRO methods Report Format ------------- -Other report formats than followings are possible, though these format are typical one. +Other report formats than following are possible, though these format are typical one. 1. Standard 8bytes modifiers(bitmap) 1byte diff --git a/drivers/lcd/st7565.h b/drivers/lcd/st7565.h index 0e42c8765b..7ab10e23ed 100644 --- a/drivers/lcd/st7565.h +++ b/drivers/lcd/st7565.h @@ -116,12 +116,12 @@ void st7565_render(void); void st7565_set_cursor(uint8_t col, uint8_t line); // Advances the cursor to the next page, writing ' ' if true -// Wraps to the begining when out of bounds +// Wraps to the beginning when out of bounds void st7565_advance_page(bool clearPageRemainder); // Moves the cursor forward 1 character length // Advance page if there is not enough room for the next character -// Wraps to the begining when out of bounds +// Wraps to the beginning when out of bounds void st7565_advance_char(void); // Writes a single character to the buffer at current cursor position diff --git a/tmk_core/protocol/report.c b/tmk_core/protocol/report.c index f68334adeb..8cae256cc6 100644 --- a/tmk_core/protocol/report.c +++ b/tmk_core/protocol/report.c @@ -62,7 +62,7 @@ uint8_t get_first_key(void) { /** \brief Checks if a key is pressed in the report * * Returns true if the keyboard_report reports that the key is pressed, otherwise false - * Note: The function doesn't support modifers currently, and it returns false for KC_NO + * Note: The function doesn't support modifiers currently, and it returns false for KC_NO */ bool is_key_pressed(uint8_t key) { if (key == KC_NO) { From 65e1afe0af419fc8ad3e318376bd1cf3fea83283 Mon Sep 17 00:00:00 2001 From: diegorodriguezv Date: Tue, 9 Sep 2025 20:43:28 -0500 Subject: [PATCH 118/167] Correct link in faq_general.md (#25640) Updated the link to the QMK trademark page. --- docs/faq_general.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/faq_general.md b/docs/faq_general.md index fe26dc3806..c80c1b8938 100644 --- a/docs/faq_general.md +++ b/docs/faq_general.md @@ -38,7 +38,7 @@ Awesome! Open up a Pull Request for it. We'll review the code, and merge it! That's amazing! We would love to assist you with that! -In fact, we have a [whole page](https://qmk.fm/powered/) dedicated to adding QMK Branding to your page and keyboard. This covers pretty much everything you need (knowledge and images) to officially support QMK. +In fact, we have a [whole page](https://qmk.fm/trademark) dedicated to adding QMK Branding to your page and keyboard. This covers pretty much everything you need (knowledge and images) to officially support QMK. If you have any questions about this, open an issue or head to [Discord](https://discord.gg/qmk). From 24c05ff1c7915e3d07b2359caa0a0fc88ef02a69 Mon Sep 17 00:00:00 2001 From: diegorodriguezv Date: Tue, 9 Sep 2025 20:44:47 -0500 Subject: [PATCH 119/167] Correct link in porting_your_keyboard_to_qmk.md (#25635) Fixed anchor --- docs/porting_your_keyboard_to_qmk.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/porting_your_keyboard_to_qmk.md b/docs/porting_your_keyboard_to_qmk.md index 737ec4a2cf..108576cb58 100644 --- a/docs/porting_your_keyboard_to_qmk.md +++ b/docs/porting_your_keyboard_to_qmk.md @@ -164,7 +164,7 @@ There are a lot of features that can be turned on or off, configured or tuned. S ### Configuration Options -For available options for `config.h`, you should see the [Config Options](config_options#the-configh-file) page for more details. +For available options for `config.h`, you should see the [Config Options](config_options#the-config-h-file) page for more details. ### Build Options From c4ccbf06e147ce8d50b2629fb32e39ce56b4fb04 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 10 Sep 2025 09:11:46 +0100 Subject: [PATCH 120/167] Fix silakka54 layout (#25643) --- keyboards/silakka54/keyboard.json | 56 +++++++++++++++---------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/keyboards/silakka54/keyboard.json b/keyboards/silakka54/keyboard.json index f04b67d3aa..e621a10b37 100644 --- a/keyboards/silakka54/keyboard.json +++ b/keyboards/silakka54/keyboard.json @@ -40,12 +40,12 @@ {"matrix": [0, 4], "x": 4, "y": 0}, {"matrix": [0, 5], "x": 5, "y": 0}, - {"matrix": [5, 5], "x": 0, "y": 5}, - {"matrix": [5, 4], "x": 1, "y": 5}, - {"matrix": [5, 3], "x": 2, "y": 5}, - {"matrix": [5, 2], "x": 3, "y": 5}, - {"matrix": [5, 1], "x": 4, "y": 5}, - {"matrix": [5, 0], "x": 5, "y": 5}, + {"matrix": [5, 5], "x": 7, "y": 0}, + {"matrix": [5, 4], "x": 8, "y": 0}, + {"matrix": [5, 3], "x": 9, "y": 0}, + {"matrix": [5, 2], "x": 10, "y": 0}, + {"matrix": [5, 1], "x": 11, "y": 0}, + {"matrix": [5, 0], "x": 12, "y": 0}, {"matrix": [1, 0], "x": 0, "y": 1}, @@ -55,12 +55,12 @@ {"matrix": [1, 4], "x": 4, "y": 1}, {"matrix": [1, 5], "x": 5, "y": 1}, - {"matrix": [6, 5], "x": 0, "y": 6}, - {"matrix": [6, 4], "x": 1, "y": 6}, - {"matrix": [6, 3], "x": 2, "y": 6}, - {"matrix": [6, 2], "x": 3, "y": 6}, - {"matrix": [6, 1], "x": 4, "y": 6}, - {"matrix": [6, 0], "x": 5, "y": 6}, + {"matrix": [6, 5], "x": 7, "y": 1}, + {"matrix": [6, 4], "x": 8, "y": 1}, + {"matrix": [6, 3], "x": 9, "y": 1}, + {"matrix": [6, 2], "x": 10, "y": 1}, + {"matrix": [6, 1], "x": 11, "y": 1}, + {"matrix": [6, 0], "x": 12, "y": 1}, {"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, @@ -69,12 +69,12 @@ {"matrix": [2, 4], "x": 4, "y": 2}, {"matrix": [2, 5], "x": 5, "y": 2}, - {"matrix": [7, 5], "x": 0, "y": 7}, - {"matrix": [7, 4], "x": 1, "y": 7}, - {"matrix": [7, 3], "x": 2, "y": 7}, - {"matrix": [7, 2], "x": 3, "y": 7}, - {"matrix": [7, 1], "x": 4, "y": 7}, - {"matrix": [7, 0], "x": 5, "y": 7}, + {"matrix": [7, 5], "x": 7, "y": 2}, + {"matrix": [7, 4], "x": 8, "y": 2}, + {"matrix": [7, 3], "x": 9, "y": 2}, + {"matrix": [7, 2], "x": 10, "y": 2}, + {"matrix": [7, 1], "x": 11, "y": 2}, + {"matrix": [7, 0], "x": 12, "y": 2}, {"matrix": [3, 0], "x": 0, "y": 3}, {"matrix": [3, 1], "x": 1, "y": 3}, @@ -83,22 +83,20 @@ {"matrix": [3, 4], "x": 4, "y": 3}, {"matrix": [3, 5], "x": 5, "y": 3}, - {"matrix": [8, 5], "x": 0, "y": 9}, - {"matrix": [8, 4], "x": 1, "y": 9}, - {"matrix": [8, 3], "x": 2, "y": 9}, - {"matrix": [8, 2], "x": 3, "y": 9}, - {"matrix": [8, 1], "x": 4, "y": 9}, - {"matrix": [8, 0], "x": 5, "y": 9}, + {"matrix": [8, 5], "x": 7, "y": 3}, + {"matrix": [8, 4], "x": 8, "y": 3}, + {"matrix": [8, 3], "x": 9, "y": 3}, + {"matrix": [8, 2], "x": 10, "y": 3}, + {"matrix": [8, 1], "x": 11, "y": 3}, + {"matrix": [8, 0], "x": 12, "y": 3}, {"matrix": [4, 3], "x": 3, "y": 4}, {"matrix": [4, 4], "x": 4, "y": 4}, {"matrix": [4, 5], "x": 5, "y": 4}, - {"matrix": [9, 5], "x": 3, "y": 9}, - {"matrix": [9, 4], "x": 4, "y": 9}, - {"matrix": [9, 3], "x": 5, "y": 9} - - + {"matrix": [9, 5], "x": 7, "y": 4}, + {"matrix": [9, 4], "x": 8, "y": 4}, + {"matrix": [9, 3], "x": 9, "y": 4} ] } } From b4bdf3f1d5bb1c8926ca3b519e56e75f069376f9 Mon Sep 17 00:00:00 2001 From: diegorodriguezv Date: Wed, 10 Sep 2025 03:52:25 -0500 Subject: [PATCH 121/167] Update data_driven_config.md (#25612) --- docs/data_driven_config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data_driven_config.md b/docs/data_driven_config.md index 2c1a56e004..a97b314a2f 100644 --- a/docs/data_driven_config.md +++ b/docs/data_driven_config.md @@ -6,7 +6,7 @@ This page describes how QMK's data driven JSON configuration system works. It is Historically QMK has been configured through a combination of two mechanisms- `rules.mk` and `config.h`. While this worked well when QMK was only a handful of keyboards we've grown to encompass nearly 4000 supported keyboards. That extrapolates out to 6000 configuration files under `keyboards/` alone! The freeform nature of these files and the unique patterns people have used to avoid duplication have made ongoing maintenance a challenge, and a large number of our keyboards follow patterns that are outdated and sometimes harder to understand. -We have also been working on bringing the power of QMK to people who aren't comformable with a CLI, and other projects such as VIA are working to make using QMK as easy as installing a program. These tools need information about how a keyboard is laid out or what pins and features are available so that users can take full advantage of QMK. We introduced `info.json` as a first step towards this. The QMK API is an effort to combine these 3 sources of information- `config.h`, `rules.mk`, and `info.json`- into a single source of truth that end-user tools can use. +We have also been working on bringing the power of QMK to people who aren't comfortable with a CLI, and other projects such as VIA are working to make using QMK as easy as installing a program. These tools need information about how a keyboard is laid out or what pins and features are available so that users can take full advantage of QMK. We introduced `info.json` as a first step towards this. The QMK API is an effort to combine these 3 sources of information- `config.h`, `rules.mk`, and `info.json`- into a single source of truth that end-user tools can use. Now we have support for generating `rules.mk` and `config.h` values from `info.json`, allowing us to have a single source of truth. This will allow us to use automated tooling to maintain keyboards saving a lot of time and maintenance work. From fc55fcff3d28ca2c5b6c9b54c1330d6a1d3e1faf Mon Sep 17 00:00:00 2001 From: Alex Havermale Date: Wed, 10 Sep 2025 08:28:24 -0400 Subject: [PATCH 122/167] Add `haverworks/theseus75` keyboard (#25457) Co-authored-by: Moritz --- keyboards/haverworks/theseus75/config.h | 33 ++ keyboards/haverworks/theseus75/halconf.h | 10 + keyboards/haverworks/theseus75/keyboard.json | 456 ++++++++++++++++++ .../theseus75/keymaps/ansi/keymap.c | 31 ++ .../theseus75/keymaps/ansi/rules.mk | 1 + .../theseus75/keymaps/default/keymap.c | 31 ++ .../theseus75/keymaps/default/rules.mk | 1 + .../haverworks/theseus75/keymaps/iso/keymap.c | 31 ++ .../haverworks/theseus75/keymaps/iso/rules.mk | 1 + keyboards/haverworks/theseus75/mcuconf.h | 14 + keyboards/haverworks/theseus75/readme.md | 31 ++ keyboards/haverworks/theseus75/theseus75.c | 214 ++++++++ 12 files changed, 854 insertions(+) create mode 100644 keyboards/haverworks/theseus75/config.h create mode 100644 keyboards/haverworks/theseus75/halconf.h create mode 100644 keyboards/haverworks/theseus75/keyboard.json create mode 100644 keyboards/haverworks/theseus75/keymaps/ansi/keymap.c create mode 100644 keyboards/haverworks/theseus75/keymaps/ansi/rules.mk create mode 100644 keyboards/haverworks/theseus75/keymaps/default/keymap.c create mode 100644 keyboards/haverworks/theseus75/keymaps/default/rules.mk create mode 100644 keyboards/haverworks/theseus75/keymaps/iso/keymap.c create mode 100644 keyboards/haverworks/theseus75/keymaps/iso/rules.mk create mode 100644 keyboards/haverworks/theseus75/mcuconf.h create mode 100644 keyboards/haverworks/theseus75/readme.md create mode 100644 keyboards/haverworks/theseus75/theseus75.c diff --git a/keyboards/haverworks/theseus75/config.h b/keyboards/haverworks/theseus75/config.h new file mode 100644 index 0000000000..7627837e76 --- /dev/null +++ b/keyboards/haverworks/theseus75/config.h @@ -0,0 +1,33 @@ +// Copyright 2023 Moritz Plattner (@ebastler), Alex Havermale (@haversnail) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Defines for configuring the serial driver for split comms (see https://docs.qmk.fm/drivers/serial) */ +#define SERIAL_USART_DRIVER SD3 // USART 3 + +/* Defines for required pins */ +#define ID_PIN A13 +#define USBSW_PIN A14 // Switches the hub input/output with the MUXes +#define PSW_PIN A15 // Turns the power routing to the USB-C port on/off +#define BUS_B_PIN C13 // Tells the hub to be bus-powered or self-powered (which in turn tells the clients to use 100 mA or 500 mA) +#define USB_VBUS_PIN C15 // Only the master side will have VBUS present at power-up (used to determine master/slave) +#define USBPD_1_PIN F0 +#define USBPD_2_PIN F1 + +/* Additional defines for managing power and state scross split */ +#define DISABLE_BUS_POWER_MODE TRUE +#define KB_STATE_SYNC_INTERVAL 500 +#define USBPD_ALLOWANCE_CHECK_INTERVAL 100 +#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_STATE + +/* Defines for the RGB matrix */ +#define INDICATOR_MAX_BRIGHTNESS 255 +#define CAPS_LOCK_LED_INDEX 0 // LED1 on PCB +#define WS2812_EXTERNAL_PULLUP +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 4 +#define WS2812_PWM_PAL_MODE 10 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 2 +#define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM3_UP diff --git a/keyboards/haverworks/theseus75/halconf.h b/keyboards/haverworks/theseus75/halconf.h new file mode 100644 index 0000000000..e7da7271bb --- /dev/null +++ b/keyboards/haverworks/theseus75/halconf.h @@ -0,0 +1,10 @@ +// Copyright 2023 Moritz Plattner (@ebastler) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SERIAL TRUE + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/haverworks/theseus75/keyboard.json b/keyboards/haverworks/theseus75/keyboard.json new file mode 100644 index 0000000000..60f791ae9d --- /dev/null +++ b/keyboards/haverworks/theseus75/keyboard.json @@ -0,0 +1,456 @@ +{ + "manufacturer": "Haverworks", + "keyboard_name": "Theseus75", + "maintainer": "ebastler", + "bootloader": "stm32-dfu", + "bootmagic": { + "matrix": [0, 1] + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "A8", "pin_b": "C6", "resolution": 2} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["B11", "C14", "B6", "B5", "B4", "B3", "C11", "C10", null], + "rows": ["A9", "A10", "B15", "B12", "B13", "B14"] + }, + "processor": "STM32G431", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [3, 1], "x": 32, "y": 34, "flags": 8}, + {"x": 28, "y": 1, "flags": 2}, + {"x": 43, "y": 1, "flags": 2}, + {"x": 56, "y": 1, "flags": 2}, + {"x": 69, "y": 1, "flags": 2}, + {"x": 84, "y": 1, "flags": 2}, + {"x": 99, "y": 1, "flags": 2}, + {"x": 97, "y": 8, "flags": 2}, + {"x": 91, "y": 19, "flags": 2}, + {"x": 91, "y": 31, "flags": 2}, + {"x": 92, "y": 42, "flags": 2}, + {"x": 96, "y": 53, "flags": 2}, + {"x": 97, "y": 64, "flags": 2}, + {"x": 81, "y": 64, "flags": 2}, + {"x": 66, "y": 64, "flags": 2}, + {"x": 53, "y": 64, "flags": 2}, + {"x": 40, "y": 64, "flags": 2}, + {"x": 26, "y": 64, "flags": 2}, + {"x": 13, "y": 64, "flags": 2}, + {"x": 0, "y": 64, "flags": 2}, + {"x": 0, "y": 53, "flags": 2}, + {"x": 0, "y": 42, "flags": 2}, + {"x": 0, "y": 31, "flags": 2}, + {"x": 0, "y": 19, "flags": 2}, + {"x": 0, "y": 9, "flags": 2}, + {"x": 0, "y": 1, "flags": 2}, + {"x": 13, "y": 1, "flags": 2}, + {"x": 224, "y": 31, "flags": 2}, + {"x": 224, "y": 42, "flags": 2}, + {"x": 224, "y": 53, "flags": 2}, + {"x": 224, "y": 64, "flags": 2}, + {"x": 209, "y": 64, "flags": 2}, + {"x": 194, "y": 64, "flags": 2}, + {"x": 180, "y": 64, "flags": 2}, + {"x": 165, "y": 64, "flags": 2}, + {"x": 152, "y": 64, "flags": 2}, + {"x": 138, "y": 64, "flags": 2}, + {"x": 124, "y": 64, "flags": 2}, + {"x": 124, "y": 53, "flags": 2}, + {"x": 119, "y": 42, "flags": 2}, + {"x": 114, "y": 31, "flags": 2}, + {"x": 117, "y": 19, "flags": 2}, + {"x": 122, "y": 8, "flags": 2}, + {"x": 126, "y": 1, "flags": 2}, + {"x": 140, "y": 1, "flags": 2}, + {"x": 155, "y": 1, "flags": 2}, + {"x": 168, "y": 1, "flags": 2}, + {"x": 181, "y": 1, "flags": 2}, + {"x": 196, "y": 1, "flags": 2}, + {"x": 211, "y": 1, "flags": 2}, + {"x": 224, "y": 1, "flags": 2}, + {"x": 224, "y": 8, "flags": 2}, + {"x": 224, "y": 19, "flags": 2} + ], + "max_brightness": 128, + "sleep": true, + "split_count": [27, 26] + }, + "split": { + "bootmagic": { + "matrix": [6, 6] + }, + "enabled": true, + "encoder": { + "right": { + "rotary": [ + {"pin_a": "B5", "pin_b": "B4", "resolution": 2} + ] + } + }, + "handedness": { + "pin": "B9" + }, + "matrix_pins": { + "right": { + "cols": ["A10", "A9", "A8", "C6", "B15", "B14", "B13", "B12", "C14"], + "rows": ["B3", "C10", "C11", "A1", "A0", "B6"] + } + }, + "serial": { + "driver": "usart", + "pin": "B10" + }, + "soft_serial_speed": 0, + "transport": { + "sync": { + "indicators": true, + "layer_state": true, + "matrix_state": true + }, + "watchdog": true + } + }, + "url": "https://haver.works/theseus75", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x6877" + }, + "ws2812": { + "driver": "pwm", + "pin": "B7" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "LENC", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "ESC", "matrix": [0, 1], "x": 1.5, "y": 0}, + {"label": "F1", "matrix": [0, 2], "x": 2.75, "y": 0}, + {"label": "F2", "matrix": [0, 3], "x": 3.75, "y": 0}, + {"label": "F3", "matrix": [0, 4], "x": 4.75, "y": 0}, + {"label": "F4", "matrix": [0, 5], "x": 5.75, "y": 0}, + {"label": "F5", "matrix": [0, 6], "x": 7, "y": 0}, + {"label": "F6", "matrix": [0, 7], "x": 8, "y": 0}, + {"label": "F7", "matrix": [6, 0], "x": 10, "y": 0}, + {"label": "F8", "matrix": [6, 1], "x": 11, "y": 0}, + {"label": "F9", "matrix": [6, 2], "x": 12.25, "y": 0}, + {"label": "F10", "matrix": [6, 3], "x": 13.25, "y": 0}, + {"label": "F11", "matrix": [6, 4], "x": 14.25, "y": 0}, + {"label": "F12", "matrix": [6, 5], "x": 15.25, "y": 0}, + {"label": "F13", "matrix": [6, 6], "x": 16.5, "y": 0}, + {"label": "RENC", "matrix": [6, 8], "x": 18, "y": 0}, + {"label": "M1", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "GRAV", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "1", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "2", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "3", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "4", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "5", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "6", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "7", "matrix": [7, 0], "x": 9.5, "y": 1}, + {"label": "8", "matrix": [7, 1], "x": 10.5, "y": 1}, + {"label": "9", "matrix": [7, 2], "x": 11.5, "y": 1}, + {"label": "0", "matrix": [7, 3], "x": 12.5, "y": 1}, + {"label": "-", "matrix": [7, 4], "x": 13.5, "y": 1}, + {"label": "=", "matrix": [7, 5], "x": 14.5, "y": 1}, + {"label": "Back", "matrix": [7, 6], "x": 15.5, "y": 1}, + {"label": "Del", "matrix": [7, 7], "x": 16.5, "y": 1}, + {"label": "Home", "matrix": [7, 8], "x": 18, "y": 1}, + {"label": "M2", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "Tab", "matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.5}, + {"label": "Q", "matrix": [2, 3], "x": 3, "y": 2}, + {"label": "W", "matrix": [2, 4], "x": 4, "y": 2}, + {"label": "E", "matrix": [2, 5], "x": 5, "y": 2}, + {"label": "R", "matrix": [2, 6], "x": 6, "y": 2}, + {"label": "T", "matrix": [2, 7], "x": 7, "y": 2}, + {"label": "Y", "matrix": [8, 0], "x": 9, "y": 2}, + {"label": "U", "matrix": [8, 1], "x": 10, "y": 2}, + {"label": "I", "matrix": [8, 2], "x": 11, "y": 2}, + {"label": "O", "matrix": [8, 3], "x": 12, "y": 2}, + {"label": "P", "matrix": [8, 4], "x": 13, "y": 2}, + {"label": "[", "matrix": [8, 5], "x": 14, "y": 2}, + {"label": "]", "matrix": [8, 6], "x": 15, "y": 2}, + {"label": "BSLS", "matrix": [8, 7], "x": 16, "y": 2, "w": 1.5}, + {"label": "PgUp", "matrix": [8, 8], "x": 18, "y": 2}, + {"label": "M3", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "Caps", "matrix": [3, 1], "x": 1.5, "y": 3, "w": 1.75}, + {"label": "A", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "S", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "D", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "F", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "G", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "H", "matrix": [9, 0], "x": 9.25, "y": 3}, + {"label": "J", "matrix": [9, 1], "x": 10.25, "y": 3}, + {"label": "K", "matrix": [9, 2], "x": 11.25, "y": 3}, + {"label": "L", "matrix": [9, 3], "x": 12.25, "y": 3}, + {"label": ";", "matrix": [9, 4], "x": 13.25, "y": 3}, + {"label": "'", "matrix": [9, 5], "x": 14.25, "y": 3}, + {"label": "NUHS", "matrix": [9, 6], "x": 15.25, "y": 3}, + {"label": "Enter", "matrix": [9, 7], "x": 16.25, "y": 3, "w": 1.25}, + {"label": "PgDn", "matrix": [9, 8], "x": 18, "y": 3}, + {"label": "M4", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "Shift", "matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.25}, + {"label": "NUBS", "matrix": [4, 2], "x": 2.75, "y": 4}, + {"label": "Z", "matrix": [4, 3], "x": 3.75, "y": 4}, + {"label": "X", "matrix": [4, 4], "x": 4.75, "y": 4}, + {"label": "C", "matrix": [4, 5], "x": 5.75, "y": 4}, + {"label": "V", "matrix": [4, 6], "x": 6.75, "y": 4}, + {"label": "B", "matrix": [4, 7], "x": 7.75, "y": 4}, + {"label": "N", "matrix": [10, 0], "x": 9.75, "y": 4}, + {"label": "M", "matrix": [10, 1], "x": 10.75, "y": 4}, + {"label": ",", "matrix": [10, 2], "x": 11.75, "y": 4}, + {"label": ".", "matrix": [10, 3], "x": 12.75, "y": 4}, + {"label": "/", "matrix": [10, 4], "x": 13.75, "y": 4}, + {"label": "Shift", "matrix": [10, 6], "x": 14.75, "y": 4, "w": 1.75}, + {"label": "Up", "matrix": [10, 7], "x": 16.75, "y": 4}, + {"label": "End", "matrix": [10, 8], "x": 18, "y": 4}, + {"label": "M5", "matrix": [5, 0], "x": 0, "y": 5}, + {"label": "Ctrl", "matrix": [5, 1], "x": 1.5, "y": 5, "w": 1.25}, + {"label": "Gui", "matrix": [5, 2], "x": 2.75, "y": 5, "w": 1.25}, + {"label": "Alt", "matrix": [5, 3], "x": 4, "y": 5, "w": 1.25}, + {"label": "Space", "matrix": [5, 4], "x": 5.25, "y": 5, "w": 2.25}, + {"label": "FN", "matrix": [5, 7], "x": 7.5, "y": 5, "w": 1.25}, + {"label": "Space", "matrix": [11, 1], "x": 9.75, "y": 5, "w": 2.75}, + {"label": "Alt", "matrix": [11, 3], "x": 12.5, "y": 5}, + {"label": "Gui", "matrix": [11, 4], "x": 13.5, "y": 5}, + {"label": "Ctrl", "matrix": [11, 5], "x": 14.5, "y": 5}, + {"label": "Left", "matrix": [11, 6], "x": 15.75, "y": 5}, + {"label": "Down", "matrix": [11, 7], "x": 16.75, "y": 5}, + {"label": "Rght", "matrix": [11, 8], "x": 17.75, "y": 5} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"label": "LENC", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "ESC", "matrix": [0, 1], "x": 1.5, "y": 0}, + {"label": "F1", "matrix": [0, 2], "x": 2.75, "y": 0}, + {"label": "F2", "matrix": [0, 3], "x": 3.75, "y": 0}, + {"label": "F3", "matrix": [0, 4], "x": 4.75, "y": 0}, + {"label": "F4", "matrix": [0, 5], "x": 5.75, "y": 0}, + {"label": "F5", "matrix": [0, 6], "x": 7, "y": 0}, + {"label": "F6", "matrix": [0, 7], "x": 8, "y": 0}, + {"label": "F7", "matrix": [6, 0], "x": 10, "y": 0}, + {"label": "F8", "matrix": [6, 1], "x": 11, "y": 0}, + {"label": "F9", "matrix": [6, 2], "x": 12.25, "y": 0}, + {"label": "F10", "matrix": [6, 3], "x": 13.25, "y": 0}, + {"label": "F11", "matrix": [6, 4], "x": 14.25, "y": 0}, + {"label": "F12", "matrix": [6, 5], "x": 15.25, "y": 0}, + {"label": "F13", "matrix": [6, 6], "x": 16.5, "y": 0}, + {"label": "RENC", "matrix": [6, 8], "x": 18, "y": 0}, + {"label": "M1", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "GRAV", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "1", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "2", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "3", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "4", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "5", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "6", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "7", "matrix": [7, 0], "x": 9.5, "y": 1}, + {"label": "8", "matrix": [7, 1], "x": 10.5, "y": 1}, + {"label": "9", "matrix": [7, 2], "x": 11.5, "y": 1}, + {"label": "0", "matrix": [7, 3], "x": 12.5, "y": 1}, + {"label": "-", "matrix": [7, 4], "x": 13.5, "y": 1}, + {"label": "=", "matrix": [7, 5], "x": 14.5, "y": 1}, + {"label": "Back", "matrix": [7, 6], "x": 15.5, "y": 1, "w": 2}, + {"label": "Home", "matrix": [7, 8], "x": 18, "y": 1}, + {"label": "M2", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "Tab", "matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.5}, + {"label": "Q", "matrix": [2, 3], "x": 3, "y": 2}, + {"label": "W", "matrix": [2, 4], "x": 4, "y": 2}, + {"label": "E", "matrix": [2, 5], "x": 5, "y": 2}, + {"label": "R", "matrix": [2, 6], "x": 6, "y": 2}, + {"label": "T", "matrix": [2, 7], "x": 7, "y": 2}, + {"label": "Y", "matrix": [8, 0], "x": 9, "y": 2}, + {"label": "U", "matrix": [8, 1], "x": 10, "y": 2}, + {"label": "I", "matrix": [8, 2], "x": 11, "y": 2}, + {"label": "O", "matrix": [8, 3], "x": 12, "y": 2}, + {"label": "P", "matrix": [8, 4], "x": 13, "y": 2}, + {"label": "[", "matrix": [8, 5], "x": 14, "y": 2}, + {"label": "]", "matrix": [8, 6], "x": 15, "y": 2}, + {"label": "BSLS", "matrix": [8, 7], "x": 16, "y": 2, "w": 1.5}, + {"label": "PgUp", "matrix": [8, 8], "x": 18, "y": 2}, + {"label": "M3", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "Caps", "matrix": [3, 1], "x": 1.5, "y": 3, "w": 1.75}, + {"label": "A", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "S", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "D", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "F", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "G", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "H", "matrix": [9, 0], "x": 9.25, "y": 3}, + {"label": "J", "matrix": [9, 1], "x": 10.25, "y": 3}, + {"label": "K", "matrix": [9, 2], "x": 11.25, "y": 3}, + {"label": "L", "matrix": [9, 3], "x": 12.25, "y": 3}, + {"label": ";", "matrix": [9, 4], "x": 13.25, "y": 3}, + {"label": "'", "matrix": [9, 5], "x": 14.25, "y": 3}, + {"label": "Enter", "matrix": [9, 7], "x": 15.25, "y": 3, "w": 2.25}, + {"label": "PgDn", "matrix": [9, 8], "x": 18, "y": 3}, + {"label": "M4", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "Shift", "matrix": [4, 1], "x": 1.5, "y": 4, "w": 2.25}, + {"label": "Z", "matrix": [4, 3], "x": 3.75, "y": 4}, + {"label": "X", "matrix": [4, 4], "x": 4.75, "y": 4}, + {"label": "C", "matrix": [4, 5], "x": 5.75, "y": 4}, + {"label": "V", "matrix": [4, 6], "x": 6.75, "y": 4}, + {"label": "B", "matrix": [4, 7], "x": 7.75, "y": 4}, + {"label": "N", "matrix": [10, 0], "x": 9.75, "y": 4}, + {"label": "M", "matrix": [10, 1], "x": 10.75, "y": 4}, + {"label": ",", "matrix": [10, 2], "x": 11.75, "y": 4}, + {"label": ".", "matrix": [10, 3], "x": 12.75, "y": 4}, + {"label": "/", "matrix": [10, 4], "x": 13.75, "y": 4}, + {"label": "Shift", "matrix": [10, 6], "x": 14.75, "y": 4, "w": 1.75}, + {"label": "Up", "matrix": [10, 7], "x": 16.75, "y": 4}, + {"label": "End", "matrix": [10, 8], "x": 18, "y": 4}, + {"label": "M5", "matrix": [5, 0], "x": 0, "y": 5}, + {"label": "Ctrl", "matrix": [5, 1], "x": 1.5, "y": 5, "w": 1.25}, + {"label": "Gui", "matrix": [5, 2], "x": 2.75, "y": 5, "w": 1.25}, + {"label": "Alt", "matrix": [5, 3], "x": 4, "y": 5, "w": 1.25}, + {"label": "Space", "matrix": [5, 4], "x": 5.25, "y": 5, "w": 2.25}, + {"label": "FN", "matrix": [5, 7], "x": 7.5, "y": 5, "w": 1.25}, + {"label": "Space", "matrix": [11, 1], "x": 9.75, "y": 5, "w": 2.75}, + {"label": "Alt", "matrix": [11, 3], "x": 12.5, "y": 5}, + {"label": "Gui", "matrix": [11, 4], "x": 13.5, "y": 5}, + {"label": "Ctrl", "matrix": [11, 5], "x": 14.5, "y": 5}, + {"label": "Left", "matrix": [11, 6], "x": 15.75, "y": 5}, + {"label": "Down", "matrix": [11, 7], "x": 16.75, "y": 5}, + {"label": "Rght", "matrix": [11, 8], "x": 17.75, "y": 5} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"label": "LENC", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "ESC", "matrix": [0, 1], "x": 1.5, "y": 0}, + {"label": "F1", "matrix": [0, 2], "x": 2.75, "y": 0}, + {"label": "F2", "matrix": [0, 3], "x": 3.75, "y": 0}, + {"label": "F3", "matrix": [0, 4], "x": 4.75, "y": 0}, + {"label": "F4", "matrix": [0, 5], "x": 5.75, "y": 0}, + {"label": "F5", "matrix": [0, 6], "x": 7, "y": 0}, + {"label": "F6", "matrix": [0, 7], "x": 8, "y": 0}, + {"label": "F7", "matrix": [6, 0], "x": 10, "y": 0}, + {"label": "F8", "matrix": [6, 1], "x": 11, "y": 0}, + {"label": "F9", "matrix": [6, 2], "x": 12.25, "y": 0}, + {"label": "F10", "matrix": [6, 3], "x": 13.25, "y": 0}, + {"label": "F11", "matrix": [6, 4], "x": 14.25, "y": 0}, + {"label": "F12", "matrix": [6, 5], "x": 15.25, "y": 0}, + {"label": "F13", "matrix": [6, 6], "x": 16.5, "y": 0}, + {"label": "RENC", "matrix": [6, 8], "x": 18, "y": 0}, + {"label": "M1", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "GRAV", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "1", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "2", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "3", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "4", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "5", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "6", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "7", "matrix": [7, 0], "x": 9.5, "y": 1}, + {"label": "8", "matrix": [7, 1], "x": 10.5, "y": 1}, + {"label": "9", "matrix": [7, 2], "x": 11.5, "y": 1}, + {"label": "0", "matrix": [7, 3], "x": 12.5, "y": 1}, + {"label": "-", "matrix": [7, 4], "x": 13.5, "y": 1}, + {"label": "=", "matrix": [7, 5], "x": 14.5, "y": 1}, + {"label": "Back", "matrix": [7, 6], "x": 15.5, "y": 1, "w": 2}, + {"label": "Home", "matrix": [7, 8], "x": 18, "y": 1}, + {"label": "M2", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "Tab", "matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.5}, + {"label": "Q", "matrix": [2, 3], "x": 3, "y": 2}, + {"label": "W", "matrix": [2, 4], "x": 4, "y": 2}, + {"label": "E", "matrix": [2, 5], "x": 5, "y": 2}, + {"label": "R", "matrix": [2, 6], "x": 6, "y": 2}, + {"label": "T", "matrix": [2, 7], "x": 7, "y": 2}, + {"label": "Y", "matrix": [8, 0], "x": 9, "y": 2}, + {"label": "U", "matrix": [8, 1], "x": 10, "y": 2}, + {"label": "I", "matrix": [8, 2], "x": 11, "y": 2}, + {"label": "O", "matrix": [8, 3], "x": 12, "y": 2}, + {"label": "P", "matrix": [8, 4], "x": 13, "y": 2}, + {"label": "[", "matrix": [8, 5], "x": 14, "y": 2}, + {"label": "]", "matrix": [8, 6], "x": 15, "y": 2}, + {"label": "PgUp", "matrix": [8, 8], "x": 18, "y": 2}, + {"label": "M3", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "Caps", "matrix": [3, 1], "x": 1.5, "y": 3, "w": 1.75}, + {"label": "A", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "S", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "D", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "F", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "G", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "H", "matrix": [9, 0], "x": 9.25, "y": 3}, + {"label": "J", "matrix": [9, 1], "x": 10.25, "y": 3}, + {"label": "K", "matrix": [9, 2], "x": 11.25, "y": 3}, + {"label": "L", "matrix": [9, 3], "x": 12.25, "y": 3}, + {"label": ";", "matrix": [9, 4], "x": 13.25, "y": 3}, + {"label": "'", "matrix": [9, 5], "x": 14.25, "y": 3}, + {"label": "NUHS", "matrix": [9, 6], "x": 15.25, "y": 3}, + {"label": "Enter", "matrix": [9, 7], "x": 16.25, "y": 2, "w": 1.25, "h": 2}, + {"label": "PgDn", "matrix": [9, 8], "x": 18, "y": 3}, + {"label": "M4", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "Shift", "matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.25}, + {"label": "NUBS", "matrix": [4, 2], "x": 2.75, "y": 4}, + {"label": "Z", "matrix": [4, 3], "x": 3.75, "y": 4}, + {"label": "X", "matrix": [4, 4], "x": 4.75, "y": 4}, + {"label": "C", "matrix": [4, 5], "x": 5.75, "y": 4}, + {"label": "V", "matrix": [4, 6], "x": 6.75, "y": 4}, + {"label": "B", "matrix": [4, 7], "x": 7.75, "y": 4}, + {"label": "N", "matrix": [10, 0], "x": 9.75, "y": 4}, + {"label": "M", "matrix": [10, 1], "x": 10.75, "y": 4}, + {"label": ",", "matrix": [10, 2], "x": 11.75, "y": 4}, + {"label": ".", "matrix": [10, 3], "x": 12.75, "y": 4}, + {"label": "/", "matrix": [10, 4], "x": 13.75, "y": 4}, + {"label": "Shift", "matrix": [10, 6], "x": 14.75, "y": 4, "w": 1.75}, + {"label": "Up", "matrix": [10, 7], "x": 16.75, "y": 4}, + {"label": "End", "matrix": [10, 8], "x": 18, "y": 4}, + {"label": "M5", "matrix": [5, 0], "x": 0, "y": 5}, + {"label": "Ctrl", "matrix": [5, 1], "x": 1.5, "y": 5, "w": 1.25}, + {"label": "Gui", "matrix": [5, 2], "x": 2.75, "y": 5, "w": 1.25}, + {"label": "Alt", "matrix": [5, 3], "x": 4, "y": 5, "w": 1.25}, + {"label": "Space", "matrix": [5, 4], "x": 5.25, "y": 5, "w": 2.25}, + {"label": "FN", "matrix": [5, 7], "x": 7.5, "y": 5, "w": 1.25}, + {"label": "Space", "matrix": [11, 1], "x": 9.75, "y": 5, "w": 2.75}, + {"label": "Alt", "matrix": [11, 3], "x": 12.5, "y": 5}, + {"label": "Gui", "matrix": [11, 4], "x": 13.5, "y": 5}, + {"label": "Ctrl", "matrix": [11, 5], "x": 14.5, "y": 5}, + {"label": "Left", "matrix": [11, 6], "x": 15.75, "y": 5}, + {"label": "Down", "matrix": [11, 7], "x": 16.75, "y": 5}, + {"label": "Rght", "matrix": [11, 8], "x": 17.75, "y": 5} + ] + } + } +} diff --git a/keyboards/haverworks/theseus75/keymaps/ansi/keymap.c b/keyboards/haverworks/theseus75/keymaps/ansi/keymap.c new file mode 100644 index 0000000000..25494f7e47 --- /dev/null +++ b/keyboards/haverworks/theseus75/keymaps/ansi/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2023 Moritz Plattner (@ebastler), Alex Havermale (@haversnail) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ansi( + RM_TOGG, 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_MUTE, + KC_F13, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_F14, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_F15, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_F16, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_F17, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(RM_VALD, RM_VALU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(RM_PREV, RM_NEXT), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, +}; +#endif diff --git a/keyboards/haverworks/theseus75/keymaps/ansi/rules.mk b/keyboards/haverworks/theseus75/keymaps/ansi/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/haverworks/theseus75/keymaps/ansi/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/haverworks/theseus75/keymaps/default/keymap.c b/keyboards/haverworks/theseus75/keymaps/default/keymap.c new file mode 100644 index 0000000000..5e56d121eb --- /dev/null +++ b/keyboards/haverworks/theseus75/keymaps/default/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2023 Moritz Plattner (@ebastler), Alex Havermale (@haversnail) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + RM_TOGG, 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_MUTE, + KC_F13, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME, + KC_F14, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_F15, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_F16, 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_F17, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(RM_VALD, RM_VALU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(RM_PREV, RM_NEXT), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, +}; +#endif diff --git a/keyboards/haverworks/theseus75/keymaps/default/rules.mk b/keyboards/haverworks/theseus75/keymaps/default/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/haverworks/theseus75/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/haverworks/theseus75/keymaps/iso/keymap.c b/keyboards/haverworks/theseus75/keymaps/iso/keymap.c new file mode 100644 index 0000000000..d7487010ee --- /dev/null +++ b/keyboards/haverworks/theseus75/keymaps/iso/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2023 Moritz Plattner (@ebastler), Alex Havermale (@haversnail) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_iso( + RM_TOGG, 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_MUTE, + KC_F13, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_F14, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_F15, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_F16, 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_F17, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_iso( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(RM_VALD, RM_VALU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(RM_PREV, RM_NEXT), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, +}; +#endif diff --git a/keyboards/haverworks/theseus75/keymaps/iso/rules.mk b/keyboards/haverworks/theseus75/keymaps/iso/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/haverworks/theseus75/keymaps/iso/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/haverworks/theseus75/mcuconf.h b/keyboards/haverworks/theseus75/mcuconf.h new file mode 100644 index 0000000000..a3dbdb4ba2 --- /dev/null +++ b/keyboards/haverworks/theseus75/mcuconf.h @@ -0,0 +1,14 @@ +// Copyright 2023 Moritz Plattner (@ebastler) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +/* enable USART3, used for split comms */ +#undef STM32_SERIAL_USE_USART3 +#define STM32_SERIAL_USE_USART3 TRUE + +/* enable TIM3, used for Underglow PWM driver */ +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/haverworks/theseus75/readme.md b/keyboards/haverworks/theseus75/readme.md new file mode 100644 index 0000000000..7119f61a64 --- /dev/null +++ b/keyboards/haverworks/theseus75/readme.md @@ -0,0 +1,31 @@ +# Haverworks Theseus75 + +![Theseus75 v1 PCB](https://imgur.com/N81LsCO.png) + +The Theseus75 is a 75% row-staggered split keyboard with a macro column and rotary encoders on both sides. Each half features a dual-role USB-C port and integrated USB hub, allowing the unused port to act as a USB-C 2.0 High-Speed host for connecting a numpad, mouse, flash drive, security key, mobile phone, or similar device. + +> [!NOTE] +> Up to 5V at 1.5A can be supplied, depending on negotiations with the host. + +* Keyboard Maintainers: [Moritz Plattner](https://github.com/ebastler), [Alex Havermale](https://github.com/haversnail) +* Hardware Supported: Haverworks Theseus75 v1 PCBs (hot-swap and solder) +* Hardware Availability: [Group buy](https://haver.works/theseus75) + +Make example for this keyboard (after setting up your build environment): + + make haverworks/theseus75:default + +Flashing example for this keyboard: + + make haverworks/theseus75: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 two ways: + +* **Physical reset button**: Hold the Reset/Flash button on the back of the PCB for approximately one second (instructions are also included on the PCB) +* **Bootmagic reset**: + * **Left half**: Hold down the first key to the right of the encoder (Esc by default) and plug in the keyboard + * **Right half**: Hold down the first key to the left of the encoder (Print Screen by default) and plug in the keyboard diff --git a/keyboards/haverworks/theseus75/theseus75.c b/keyboards/haverworks/theseus75/theseus75.c new file mode 100644 index 0000000000..45ead4811d --- /dev/null +++ b/keyboards/haverworks/theseus75/theseus75.c @@ -0,0 +1,214 @@ +// Copyright 2023 Moritz Plattner (@ebastler), Alex Havermale (@haversnail) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" +#include "transactions.h" +#include +#include "print.h" +#include "split_util.h" +#include "usbpd.h" + +typedef struct _kb_state_t { + usbpd_allowance_t allowance; +} kb_state_t; + +kb_state_t kb_state; + +const char* usbpd_str(usbpd_allowance_t allowance) { + switch (allowance) { + case USBPD_500MA: + return "500mA"; + case USBPD_1500MA: + return "1500mA"; + case USBPD_3000MA: + return "3000mA"; + default: + dprintf("Encountered unknown allowance enum value: %d\n", allowance); + return "UNKNOWN"; + } +} + +void kb_state_slave_handler(uint8_t m2s_size, const void* m2s_buffer, uint8_t s2m_size, void* s2m_buffer) { + if (m2s_size == sizeof(kb_state_t)) { + memcpy(&kb_state, m2s_buffer, sizeof(kb_state_t)); + } else { + dprintf("Unexpected response in slave handler\n"); // TODO: add split debug logging + } +} + +void keyboard_pre_init_kb(void) { + // Disable the PD peripheral in pre-init because its pins are being used in the matrix: + PWR->CR3 |= PWR_CR3_UCPD_DBDIS; + // Call the corresponding _user() function (see https://docs.qmk.fm/#/custom_quantum_functions) + keyboard_pre_init_user(); +} + +void keyboard_post_init_kb(void) { + // Register keyboard state transaction: + transaction_register_rpc(RPC_ID_KB_STATE, kb_state_slave_handler); + + // Set default state values: + kb_state.allowance = USBPD_500MA; + + // If the keyboard is master, + if (is_keyboard_master()) { + // Turn on power to the split half and to underglow LEDs: + gpio_set_pin_output(PSW_PIN); + gpio_write_pin_high(PSW_PIN); + + // Enable inputs used for current negotiation: + gpio_set_pin_input_high(USBPD_1_PIN); + gpio_set_pin_input_high(USBPD_2_PIN); + + // Not needed in this mode (always high-Z with pull-up on PCB if port controller is sink) + gpio_set_pin_input_high(ID_PIN); + } else { + // Prepare output to enable power for USB output after negotiation: + gpio_set_pin_output(PSW_PIN); + + // Switch the USB MUXes between hub and ports: + gpio_set_pin_output(USBSW_PIN); + gpio_write_pin_high(USBSW_PIN); + + // Enable outputs used for current negotiation and default to 500mA: + gpio_set_pin_output(USBPD_1_PIN); + gpio_write_pin_high(USBPD_1_PIN); + gpio_set_pin_output(USBPD_2_PIN); + gpio_write_pin_high(USBPD_2_PIN); + + // Use ID pin to check if client is detected (if low: USB source port powered): + gpio_set_pin_input_high(ID_PIN); + + // Indicate that the hub is either self-powered or bus-powered based on whether the bus-power mode flag is enabled + // (configurable for users who would rather always have their device connect, regardless of whether they meet the specs): + gpio_set_pin_output(BUS_B_PIN); + if (DISABLE_BUS_POWER_MODE == TRUE) { + gpio_write_pin_high(BUS_B_PIN); + } else { + gpio_write_pin_low(BUS_B_PIN); + } + } + // Call the corresponding _user() function (see https://docs.qmk.fm/#/custom_quantum_functions) + keyboard_post_init_user(); +} + +void housekeeping_task_kb(void) { + // Update any shared kb state to send to slave: + static uint32_t last_usbpd_allowance_check_time = 0; + if (timer_elapsed32(last_usbpd_allowance_check_time) > USBPD_ALLOWANCE_CHECK_INTERVAL) { + // On master side: check USBPD_1_PIN and USBPD_2_PIN to determine current negotiated with host + // (Can't use the usbpd_get_allowance() function, as this uses this uses the native CC PD interface + // of the G series MCU, while we're using dedicated port controllers instead): + if (is_keyboard_master()) { + usbpd_allowance_t allowance; + + if (gpio_read_pin(USBPD_1_PIN)) { + allowance = USBPD_500MA; + } else if (gpio_read_pin(USBPD_2_PIN)) { + allowance = USBPD_1500MA; + } else { + allowance = USBPD_3000MA; + } + + if (kb_state.allowance != allowance) { + printf("Host negotiated current: %s -> %s\n", usbpd_str(kb_state.allowance), usbpd_str(allowance)); + kb_state.allowance = allowance; + } + } else { + // On peripheral side - If ID_PIN is low: USB client negotiated 5V successfully -> enable power routing + // Check if PSW_PIN is not already high to avoid wasting time + if (!gpio_read_pin(ID_PIN) && !gpio_read_pin(PSW_PIN)) { + gpio_write_pin_high(PSW_PIN); + dprintf("USB downstream device connected\n"); // TODO: add split debug logging + } else if (gpio_read_pin(ID_PIN) && gpio_read_pin(PSW_PIN)) { + gpio_write_pin_low(PSW_PIN); + dprintf("USB downstream device disconnected\n"); // TODO: add split debug logging + } + }; + last_usbpd_allowance_check_time = timer_read32(); + }; + + // Sync state from master to slave: + if (is_keyboard_master() && is_transport_connected()) { + bool needs_sync = false; + static uint32_t last_kb_state_sync_time; + static kb_state_t last_kb_state; + + // Check if the state values are different: + if (memcmp(&kb_state, &last_kb_state, sizeof(kb_state_t))) { + needs_sync = true; + memcpy(&last_kb_state, &kb_state, sizeof(kb_state_t)); + } + + // Sync state every so often regardless: + if (timer_elapsed32(last_kb_state_sync_time) > KB_STATE_SYNC_INTERVAL) { + needs_sync = true; + } + + if (needs_sync) { + bool did_sync = transaction_rpc_send(RPC_ID_KB_STATE, sizeof(kb_state_t), &kb_state); + if (did_sync) { + dprintf("Synced to slave\n"); + last_kb_state_sync_time = timer_read32(); + } else { + dprintf("Failed to sync state\n"); + } + } + } + + // Update the USBPD output pins on slave half whenever allowance has changed: + if (!is_keyboard_master()) { + static usbpd_allowance_t last_allowance; + + if (last_allowance != kb_state.allowance) { + last_allowance = kb_state.allowance; + + printf("Setting USB-PD output to %s (%s-powered)\n", usbpd_str(kb_state.allowance), kb_state.allowance == USBPD_500MA ? "bus" : "self"); // TODO: add split debug logging + + switch (kb_state.allowance) { + default: + case USBPD_500MA: + // Set USBPD output to 500 mA: + gpio_write_pin_high(USBPD_1_PIN); + gpio_write_pin_high(USBPD_2_PIN); + if (DISABLE_BUS_POWER_MODE == TRUE) { + // Indicate hub is self-powered and devices can try to connect or fast charge: + gpio_write_pin_high(BUS_B_PIN); + } else { + // Indicate hub is bus-powered and devices should not try to connect or fast charge: + gpio_write_pin_low(BUS_B_PIN); + } + break; + case USBPD_1500MA: + // Set USBPD output to 500 mA: + gpio_write_pin_high(USBPD_1_PIN); + gpio_write_pin_high(USBPD_2_PIN); + // Indicate hub is self-powered and devices can try to connect or fast charge: + gpio_write_pin_high(BUS_B_PIN); + break; + case USBPD_3000MA: + // Set USBPD output to 1500 mA: + gpio_write_pin_low(USBPD_1_PIN); + gpio_write_pin_high(USBPD_2_PIN); + // Indicate hub is self-powered and devices can try to connect or fast charge: + gpio_write_pin_high(BUS_B_PIN); + break; + } + } + } +} + +#ifdef RGB_MATRIX_ENABLE +bool rgb_matrix_indicators_kb(void) { + if (!rgb_matrix_indicators_user()) { + return false; + } + + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(CAPS_LOCK_LED_INDEX, INDICATOR_MAX_BRIGHTNESS, INDICATOR_MAX_BRIGHTNESS, INDICATOR_MAX_BRIGHTNESS); + } else { + rgb_matrix_set_color(CAPS_LOCK_LED_INDEX, 0, 0, 0); + } + return true; +} +#endif From 35e62d236b94d5b84c5e19db3f53095bf2138a4b Mon Sep 17 00:00:00 2001 From: Steven Karrmann Date: Wed, 10 Sep 2025 20:44:38 -0400 Subject: [PATCH 123/167] Add Cata keyboard (#25557) Co-authored-by: Jack Sangdahl --- keyboards/cata/keyboard.json | 65 +++++++++++++++++++++++++ keyboards/cata/keymaps/default/keymap.c | 42 ++++++++++++++++ keyboards/cata/readme.md | 27 ++++++++++ 3 files changed, 134 insertions(+) create mode 100644 keyboards/cata/keyboard.json create mode 100644 keyboards/cata/keymaps/default/keymap.c create mode 100644 keyboards/cata/readme.md diff --git a/keyboards/cata/keyboard.json b/keyboards/cata/keyboard.json new file mode 100644 index 0000000000..f6b5ef169f --- /dev/null +++ b/keyboards/cata/keyboard.json @@ -0,0 +1,65 @@ +{ + "manufacturer": "Steven Karrmann", + "keyboard_name": "Cata", + "maintainer": "skarrmann", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP9", "GP10", "GP11", "GP12", "GP13", "GP14"], + "rows": ["GP27", "GP5", "GP26", "GP6", "GP15", "GP7", "GP14", "GP8"] + }, + "processor": "RP2040", + "url": "https://github.com/skarrmann/cata", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "community_layouts": ["split_3x5_2"], + "layouts": { + "LAYOUT_split_3x5_2": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [1, 0], "x": 6, "y": 0}, + {"matrix": [1, 1], "x": 7, "y": 0}, + {"matrix": [1, 2], "x": 8, "y": 0}, + {"matrix": [1, 3], "x": 9, "y": 0}, + {"matrix": [1, 4], "x": 10, "y": 0}, + {"matrix": [2, 0], "x": 0, "y": 1}, + {"matrix": [2, 1], "x": 1, "y": 1}, + {"matrix": [2, 2], "x": 2, "y": 1}, + {"matrix": [2, 3], "x": 3, "y": 1}, + {"matrix": [2, 4], "x": 4, "y": 1}, + {"matrix": [3, 0], "x": 6, "y": 1}, + {"matrix": [3, 1], "x": 7, "y": 1}, + {"matrix": [3, 2], "x": 8, "y": 1}, + {"matrix": [3, 3], "x": 9, "y": 1}, + {"matrix": [3, 4], "x": 10, "y": 1}, + {"matrix": [4, 0], "x": 0, "y": 2}, + {"matrix": [4, 1], "x": 1, "y": 2}, + {"matrix": [4, 2], "x": 2, "y": 2}, + {"matrix": [4, 3], "x": 3, "y": 2}, + {"matrix": [4, 4], "x": 4, "y": 2}, + {"matrix": [5, 0], "x": 6, "y": 2}, + {"matrix": [5, 1], "x": 7, "y": 2}, + {"matrix": [5, 2], "x": 8, "y": 2}, + {"matrix": [5, 3], "x": 9, "y": 2}, + {"matrix": [5, 4], "x": 10, "y": 2}, + {"matrix": [6, 3], "x": 3, "y": 3}, + {"matrix": [6, 4], "x": 4, "y": 3}, + {"matrix": [7, 0], "x": 6, "y": 3}, + {"matrix": [7, 1], "x": 7, "y": 3} + ] + } + } +} diff --git a/keyboards/cata/keymaps/default/keymap.c b/keyboards/cata/keymaps/default/keymap.c new file mode 100644 index 0000000000..ac760ab014 --- /dev/null +++ b/keyboards/cata/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +// Copyright 2025 Steven Karrmann (@skarrmann) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _SYMBOL, + _NAVIGATION, + _FUNCTION +}; + +#define MO_SYM MO(_SYMBOL) +#define MO_NAV MO(_NAVIGATION) +#define MO_FUN MO(_FUNCTION) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_split_3x5_2( + KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , + KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_QUOT, + KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, + MO_NAV , KC_LSFT, KC_SPC , MO_SYM + ), + [_SYMBOL] = LAYOUT_split_3x5_2( + KC_SCLN, KC_LBRC, KC_RBRC, KC_5 , XXXXXXX, XXXXXXX, KC_6 , KC_MINS, KC_EQL , KC_GRV , + KC_1 , KC_2 , KC_3 , KC_4 , KC_BSLS, XXXXXXX, KC_7 , KC_8 , KC_9 , KC_0 , + OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, XXXXXXX, XXXXXXX, OS_RCTL, OS_RSFT, OS_RALT, OS_RGUI, + MO_FUN , _______, _______, _______ + ), + [_NAVIGATION] = LAYOUT_split_3x5_2( + KC_PSCR, KC_INS , KC_APP , KC_DEL , XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END , + KC_ESC , KC_TAB , KC_ENT , KC_BSPC, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, + OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, XXXXXXX, XXXXXXX, OS_RCTL, OS_RSFT, OS_RALT, OS_RGUI, + _______, _______, _______, MO_FUN + ), + [_FUNCTION] = LAYOUT_split_3x5_2( + KC_F1 , KC_F2 , KC_F3 , KC_F4 , QK_BOOT, KC_SCRL, KC_F9 , KC_F10 , KC_F11 , KC_F12 , + KC_F5 , KC_F6 , KC_F7 , KC_F8 , XXXXXXX, KC_CAPS, KC_MUTE, KC_VOLD, KC_VOLU, KC_PAUS, + OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, XXXXXXX, KC_NUM, OS_RCTL, OS_RSFT, OS_RALT, OS_RGUI, + _______, _______, _______, _______ + ), +}; diff --git a/keyboards/cata/readme.md b/keyboards/cata/readme.md new file mode 100644 index 0000000000..c21750b16d --- /dev/null +++ b/keyboards/cata/readme.md @@ -0,0 +1,27 @@ +# Cata + +![Cata](https://i.imgur.com/6jGENr9.jpeg) + +Cata is a 34 key ortholinear keyboard, powered by a Waveshare RP2040-Zero. + +* Keyboard Maintainer: [skarrmann](https://github.com/skarrmann) +* Hardware Supported: Cata PCBs with RP2040-Zero +* Hardware Availability: [Cata GitHub repository](https://github.com/skarrmann/cata) + +Make example for this keyboard (after setting up your build environment): + + make cata:default + +Flashing example for this keyboard: + + make cata: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 (the top left key) and plug in the keyboard. +* **Physical reset button**: Double-tap the RESET button on the RP-2040 Zero (button on the right). +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. From 05ea735e86b5de9cbd482a2c8e3a91d930f0388a Mon Sep 17 00:00:00 2001 From: Ryan Chomistek <35873399+RyanChomistek@users.noreply.github.com> Date: Thu, 11 Sep 2025 01:15:45 -0700 Subject: [PATCH 124/167] Add Leftpaw Keyboard (#25313) Co-authored-by: jack --- keyboards/leftpaw/keyboard.json | 114 +++++++++++++++++++++ keyboards/leftpaw/keymaps/default/keymap.c | 38 +++++++ keyboards/leftpaw/readme.md | 25 +++++ 3 files changed, 177 insertions(+) create mode 100644 keyboards/leftpaw/keyboard.json create mode 100644 keyboards/leftpaw/keymaps/default/keymap.c create mode 100644 keyboards/leftpaw/readme.md diff --git a/keyboards/leftpaw/keyboard.json b/keyboards/leftpaw/keyboard.json new file mode 100644 index 0000000000..34fea17b37 --- /dev/null +++ b/keyboards/leftpaw/keyboard.json @@ -0,0 +1,114 @@ +{ + "manufacturer": "Ryan Chomistek", + "keyboard_name": "leftpaw", + "maintainer": "Ryan Chomistek", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP21", "GP22", "GP26", "GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15"], + "rows": ["GP20", "GP19", "GP18", "GP17", "GP16"] + }, + "processor": "RP2040", + "url": "https://github.com/RyanChomistek/lefty", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "Num Lock", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "/", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "*", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "-", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "esc", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "!", "matrix": [0, 5], "x": 5.25, "y": 0}, + {"label": "@", "matrix": [0, 6], "x": 6.25, "y": 0}, + {"label": "#", "matrix": [0, 7], "x": 7.25, "y": 0}, + {"label": "$", "matrix": [0, 8], "x": 8.25, "y": 0}, + {"label": "%", "matrix": [0, 9], "x": 9.25, "y": 0}, + {"label": "^", "matrix": [0, 10], "x": 10.25, "y": 0}, + {"label": "&", "matrix": [0, 11], "x": 11.25, "y": 0}, + {"label": "*", "matrix": [0, 12], "x": 12.25, "y": 0}, + {"label": "(", "matrix": [0, 13], "x": 13.25, "y": 0}, + {"label": ")", "matrix": [0, 14], "x": 14.25, "y": 0}, + {"label": "_", "matrix": [0, 15], "x": 15.25, "y": 0}, + {"label": "+", "matrix": [0, 16], "x": 16.25, "y": 0}, + {"label": "Backspace", "matrix": [0, 17], "x": 17.25, "y": 0, "w": 2}, + {"label": "Pg Up", "matrix": [0, 18], "x": 19.5, "y": 0}, + {"label": "7", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "8", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "9", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "+", "matrix": [1, 3], "x": 3, "y": 1, "h": 2}, + {"label": "Tab", "matrix": [1, 4], "x": 4.25, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 5], "x": 5.75, "y": 1}, + {"label": "W", "matrix": [1, 6], "x": 6.75, "y": 1}, + {"label": "E", "matrix": [1, 7], "x": 7.75, "y": 1}, + {"label": "R", "matrix": [1, 8], "x": 8.75, "y": 1}, + {"label": "T", "matrix": [1, 9], "x": 9.75, "y": 1}, + {"label": "Y", "matrix": [1, 10], "x": 10.75, "y": 1}, + {"label": "U", "matrix": [1, 11], "x": 11.75, "y": 1}, + {"label": "I", "matrix": [1, 12], "x": 12.75, "y": 1}, + {"label": "O", "matrix": [1, 13], "x": 13.75, "y": 1}, + {"label": "P", "matrix": [1, 14], "x": 14.75, "y": 1}, + {"label": "{", "matrix": [1, 15], "x": 15.75, "y": 1}, + {"label": "}", "matrix": [1, 16], "x": 16.75, "y": 1}, + {"label": "|", "matrix": [1, 17], "x": 17.75, "y": 1, "w": 1.5}, + {"label": "Pg Dn", "matrix": [1, 18], "x": 19.5, "y": 1}, + {"label": "4", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "5", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "6", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "Caps Lock", "matrix": [2, 4], "x": 4.25, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 5], "x": 6, "y": 2}, + {"label": "S", "matrix": [2, 6], "x": 7, "y": 2}, + {"label": "D", "matrix": [2, 7], "x": 8, "y": 2}, + {"label": "F", "matrix": [2, 8], "x": 9, "y": 2}, + {"label": "G", "matrix": [2, 9], "x": 10, "y": 2}, + {"label": "H", "matrix": [2, 10], "x": 11, "y": 2}, + {"label": "J", "matrix": [2, 11], "x": 12, "y": 2}, + {"label": "K", "matrix": [2, 12], "x": 13, "y": 2}, + {"label": "L", "matrix": [2, 13], "x": 14, "y": 2}, + {"label": ":", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "\"", "matrix": [2, 15], "x": 16, "y": 2}, + {"label": "Enter", "matrix": [2, 17], "x": 17, "y": 2, "w": 2.25}, + {"label": "Delete", "matrix": [2, 18], "x": 19.5, "y": 2}, + {"label": "1", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "2", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "3", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "Enter", "matrix": [3, 3], "x": 3, "y": 3, "h": 2}, + {"label": "Shift", "matrix": [3, 4], "x": 4.25, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 5], "x": 6.5, "y": 3}, + {"label": "X", "matrix": [3, 6], "x": 7.5, "y": 3}, + {"label": "C", "matrix": [3, 7], "x": 8.5, "y": 3}, + {"label": "V", "matrix": [3, 8], "x": 9.5, "y": 3}, + {"label": "B", "matrix": [3, 9], "x": 10.5, "y": 3}, + {"label": "N", "matrix": [3, 10], "x": 11.5, "y": 3}, + {"label": "M", "matrix": [3, 11], "x": 12.5, "y": 3}, + {"label": "<", "matrix": [3, 12], "x": 13.5, "y": 3}, + {"label": ">", "matrix": [3, 13], "x": 14.5, "y": 3}, + {"label": "?", "matrix": [3, 14], "x": 15.5, "y": 3}, + {"label": "Shift", "matrix": [3, 16], "x": 16.5, "y": 3, "w": 1.5}, + {"label": "\u2191", "matrix": [3, 17], "x": 18.5, "y": 3.25}, + {"label": "0", "matrix": [4, 0], "x": 0, "y": 4, "w": 2}, + {"label": ".", "matrix": [4, 2], "x": 2, "y": 4}, + {"label": "Ctrl", "matrix": [4, 4], "x": 4.25, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 5], "x": 5.5, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 6], "x": 6.75, "y": 4, "w": 1.25}, + {"matrix": [4, 9], "x": 8, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 13], "x": 14.25, "y": 4}, + {"label": "Win", "matrix": [4, 14], "x": 15.25, "y": 4}, + {"label": "Ctrl", "matrix": [4, 15], "x": 16.25, "y": 4}, + {"label": "\u2190", "matrix": [4, 16], "x": 17.5, "y": 4.25}, + {"label": "\u2193", "matrix": [4, 17], "x": 18.5, "y": 4.25}, + {"label": "\u2192", "matrix": [4, 18], "x": 19.5, "y": 4.25} + ] + } + } +} diff --git a/keyboards/leftpaw/keymaps/default/keymap.c b/keyboards/leftpaw/keymaps/default/keymap.c new file mode 100644 index 0000000000..197e87ea94 --- /dev/null +++ b/keyboards/leftpaw/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2025 Ryan Chomistek + * + * This 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( + // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + KC_NUM, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPC, KC_GRAVE, + KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, 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_KP_4, KC_KP_5, KC_KP_6, MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE, KC_ENTER, KC_DELETE, + KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSFT, KC_UP, + KC_KP_0, KC_KP_DOT, KC_LCTL, KC_LWIN, KC_LALT, KC_SPACE, KC_RALT, KC_RWIN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT( + // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_PGUP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_KB_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + 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/leftpaw/readme.md b/keyboards/leftpaw/readme.md new file mode 100644 index 0000000000..9a58aafab9 --- /dev/null +++ b/keyboards/leftpaw/readme.md @@ -0,0 +1,25 @@ +# leftpaw + +A 76% keyboard with a numpad on the left hand side + +* Keyboard Maintainer: [Ryan Chomistek](https://github.com/RyanChomistek) +* Hardware Supported: RP2040 +* Hardware Availability: [PCB Files](https://github.com/RyanChomistek/lefty) and [Case Files](https://www.printables.com/model/1310397-leftpaw-keyboard) + +Make example for this keyboard (after setting up your build environment): + + make leftpaw:default + +Flashing example for this keyboard: + + make leftpaw:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From e5f47fa26947eb3d05cf1c18dfe71b51715516e0 Mon Sep 17 00:00:00 2001 From: Freather <72902384+CMMS-Freather@users.noreply.github.com> Date: Thu, 11 Sep 2025 16:16:25 +0800 Subject: [PATCH 125/167] add fave 10xs pcb (#25296) Co-authored-by: Joel Challis Co-authored-by: Duncan Sutherland --- keyboards/linworks/fave10xs/keyboard.json | 273 ++++++++++++++++++ .../fave10xs/keymaps/default/keymap.c | 15 + keyboards/linworks/fave10xs/readme.md | 27 ++ 3 files changed, 315 insertions(+) create mode 100644 keyboards/linworks/fave10xs/keyboard.json create mode 100644 keyboards/linworks/fave10xs/keymaps/default/keymap.c create mode 100644 keyboards/linworks/fave10xs/readme.md diff --git a/keyboards/linworks/fave10xs/keyboard.json b/keyboards/linworks/fave10xs/keyboard.json new file mode 100644 index 0000000000..9a52638448 --- /dev/null +++ b/keyboards/linworks/fave10xs/keyboard.json @@ -0,0 +1,273 @@ +{ + "manufacturer": "Lx3", + "keyboard_name": "Fave10xS", + "maintainer": "Freather", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["B10", "A6", "A7", "B0", "B1", "B2", "A13", "B12", "B13", "B14", "B15", "A8", "A9", "A10", "A15", "B3", "B4", "C13", "C14", "C15", "F0"], + "rows": ["A14", "B5", "B7", "B8", "F1", "A0"] + }, + "indicators": { + "caps_lock": "B11", + "scroll_lock": "B9", + "num_lock": "B6" + }, + "processor": "STM32F072", + "usb": { + "device_version": "1.0.0", + "pid": "0x0100", + "vid": "0x4C58" + }, + "community_layouts": ["fullsize_extended_ansi"], + "layouts": { + "LAYOUT_fullsize_extended_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 10], "x": 11, "y": 0}, + {"matrix": [0, 11], "x": 12, "y": 0}, + {"matrix": [0, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [0, 17], "x": 18.5, "y": 0}, + {"matrix": [0, 18], "x": 19.5, "y": 0}, + {"matrix": [0, 19], "x": 20.5, "y": 0}, + {"matrix": [0, 20], "x": 21.5, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [1, 17], "x": 18.5, "y": 1.25}, + {"matrix": [1, 18], "x": 19.5, "y": 1.25}, + {"matrix": [1, 19], "x": 20.5, "y": 1.25}, + {"matrix": [1, 20], "x": 21.5, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [3, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [2, 17], "x": 18.5, "y": 2.25}, + {"matrix": [2, 18], "x": 19.5, "y": 2.25}, + {"matrix": [2, 19], "x": 20.5, "y": 2.25}, + {"matrix": [2, 20], "x": 21.5, "y": 2.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [3, 17], "x": 18.5, "y": 3.25}, + {"matrix": [3, 18], "x": 19.5, "y": 3.25}, + {"matrix": [3, 19], "x": 20.5, "y": 3.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [4, 17], "x": 18.5, "y": 4.25}, + {"matrix": [4, 18], "x": 19.5, "y": 4.25}, + {"matrix": [4, 19], "x": 20.5, "y": 4.25}, + {"matrix": [4, 20], "x": 21.5, "y": 4.25, "h": 2}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25}, + {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2}, + {"matrix": [5, 19], "x": 20.5, "y": 5.25} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 10], "x": 11, "y": 0}, + {"matrix": [0, 11], "x": 12, "y": 0}, + {"matrix": [0, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [0, 17], "x": 18.5, "y": 0}, + {"matrix": [0, 18], "x": 19.5, "y": 0}, + {"matrix": [0, 19], "x": 20.5, "y": 0}, + {"matrix": [0, 20], "x": 21.5, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [2, 13], "x": 14, "y": 1.25}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [1, 17], "x": 18.5, "y": 1.25}, + {"matrix": [1, 18], "x": 19.5, "y": 1.25}, + {"matrix": [1, 19], "x": 20.5, "y": 1.25}, + {"matrix": [1, 20], "x": 21.5, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [3, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [2, 17], "x": 18.5, "y": 2.25}, + {"matrix": [2, 18], "x": 19.5, "y": 2.25}, + {"matrix": [2, 19], "x": 20.5, "y": 2.25}, + {"matrix": [2, 20], "x": 21.5, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [3, 17], "x": 18.5, "y": 3.25}, + {"matrix": [3, 18], "x": 19.5, "y": 3.25}, + {"matrix": [3, 19], "x": 20.5, "y": 3.25}, + {"matrix": [3, 20], "x": 21.5, "y": 3.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [4, 17], "x": 18.5, "y": 4.25}, + {"matrix": [4, 18], "x": 19.5, "y": 4.25}, + {"matrix": [4, 19], "x": 20.5, "y": 4.25}, + {"matrix": [4, 20], "x": 21.5, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 4], "x": 3.75, "y": 5.25, "w": 2.25}, + {"matrix": [5, 6], "x": 6, "y": 5.25, "w": 1.25}, + {"matrix": [5, 8], "x": 7.25, "y": 5.25, "w": 2.75}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25}, + {"matrix": [5, 17], "x": 18.5, "y": 5.25}, + {"matrix": [5, 18], "x": 19.5, "y": 5.25}, + {"matrix": [5, 19], "x": 20.5, "y": 5.25}, + {"matrix": [5, 20], "x": 21.5, "y": 5.25} + ] + } + } +} diff --git a/keyboards/linworks/fave10xs/keymaps/default/keymap.c b/keyboards/linworks/fave10xs/keymaps/default/keymap.c new file mode 100644 index 0000000000..f55ae86ed0 --- /dev/null +++ b/keyboards/linworks/fave10xs/keymaps/default/keymap.c @@ -0,0 +1,15 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#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_SCRL, KC_PAUS, KC_MNXT, KC_MPRV, KC_VOLU, KC_VOLD, + 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_TILD, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + 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_P7, KC_P8, KC_P9, KC_PPLS, + 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_P4, KC_P5, KC_P6, KC_PENT, + 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_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, KC_PCMM + ) +}; diff --git a/keyboards/linworks/fave10xs/readme.md b/keyboards/linworks/fave10xs/readme.md new file mode 100644 index 0000000000..9a823a9118 --- /dev/null +++ b/keyboards/linworks/fave10xs/readme.md @@ -0,0 +1,27 @@ +# fave10xs + +![fave10xs](https://i.imgur.com/o4pq0mV.png) + +Dolphin max PCB solder version Fave10xs + +* Keyboard Maintainer: [Freather](https://github.com/Freather) +* Hardware Supported: STM32F072 Linworks Fave10xs PCB +* Hardware Availability: small gb ran in Asia + +Make example for this keyboard (after setting up your build environment): + + make linworks/fave10xs:default + +Flashing example for this keyboard: + + make linworks/fave10xs: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**: Hold the button on the back of the PCB then plug in the PCB with USB cable +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From bef5c95675c2727d0e5ecf4108a2e379647074dc Mon Sep 17 00:00:00 2001 From: Nikolai Grigoriev <2364632+ngrigoriev@users.noreply.github.com> Date: Thu, 11 Sep 2025 04:42:20 -0400 Subject: [PATCH 126/167] Handwired Dactyl Manuform version 5x7 matrix, 6-key thumb cluster, 2 keys in the last row (#24246) Co-authored-by: Ryan --- .../dactyl_manuform/5x7_2_6/config.h | 20 +++ .../dactyl_manuform/5x7_2_6/keyboard.json | 115 ++++++++++++++++++ .../5x7_2_6/keymaps/default/keymap.c | 74 +++++++++++ .../dactyl_manuform/5x7_2_6/readme.md | 29 +++++ 4 files changed, 238 insertions(+) create mode 100644 keyboards/handwired/dactyl_manuform/5x7_2_6/config.h create mode 100644 keyboards/handwired/dactyl_manuform/5x7_2_6/keyboard.json create mode 100644 keyboards/handwired/dactyl_manuform/5x7_2_6/keymaps/default/keymap.c create mode 100644 keyboards/handwired/dactyl_manuform/5x7_2_6/readme.md diff --git a/keyboards/handwired/dactyl_manuform/5x7_2_6/config.h b/keyboards/handwired/dactyl_manuform/5x7_2_6/config.h new file mode 100644 index 0000000000..ce536e2d00 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x7_2_6/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2012 Jun Wako Nikolai Grigoriev @ngrigoriev + +This 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 EE_HANDS diff --git a/keyboards/handwired/dactyl_manuform/5x7_2_6/keyboard.json b/keyboards/handwired/dactyl_manuform/5x7_2_6/keyboard.json new file mode 100644 index 0000000000..7e41ff0083 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x7_2_6/keyboard.json @@ -0,0 +1,115 @@ +{ + "manufacturer": "Nikolai Grigoriev", + "keyboard_name": "Dactyl Manuform 5x7 2-key last row 6-key thumb cluster", + "maintainer": "ngrigoriev", + "build": { + "lto": true + }, + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": false, + "nkro": true + }, + "matrix_pins": { + "cols": ["F5", "F6", "F7", "B1", "B3", "B2", "B6"], + "rows": ["D4", "C6", "D7", "E6", "B4", "B5"] + }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "split": { + "enabled": true, + "transport": { + "protocol": "i2c" + }, + "usb_detect": { + "enabled": true + } + }, + "url": "https://github.com/ngrigoriev/dactyl-manuform-5x7_2_6", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_5x7_2_6": { + "layout": [ + {"label": "KC_GRV", "matrix": [0, 0], "x": 0, "y": 0.5, "w": 1.5}, + {"label": "KC_1", "matrix": [0, 1], "x": 1.5, "y": 0.5}, + {"label": "KC_2", "matrix": [0, 2], "x": 2.5, "y": 0}, + {"label": "KC_3", "matrix": [0, 3], "x": 3.5, "y": 0}, + {"label": "KC_4", "matrix": [0, 4], "x": 4.5, "y": 0}, + {"label": "KC_5", "matrix": [0, 5], "x": 5.5, "y": 0}, + {"label": "KC_NO", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "KC_EQL", "matrix": [6, 0], "x": 12, "y": 0}, + {"label": "KC_6", "matrix": [6, 1], "x": 13, "y": 0}, + {"label": "KC_7", "matrix": [6, 2], "x": 14, "y": 0}, + {"label": "KC_8", "matrix": [6, 3], "x": 15, "y": 0}, + {"label": "KC_9", "matrix": [6, 4], "x": 16, "y": 0}, + {"label": "KC_0", "matrix": [6, 5], "x": 17, "y": 0.5}, + {"label": "KC_BSPC", "matrix": [6, 6], "x": 18, "y": 0.5, "w": 1.5}, + {"label": "KC_TAB", "matrix": [1, 0], "x": 0, "y": 1.5, "w": 1.5}, + {"label": "KC_Q", "matrix": [1, 1], "x": 1.5, "y": 1.5}, + {"label": "KC_W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "KC_E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "KC_R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "KC_T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "KC_NO", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "KC_MINUS", "matrix": [7, 0], "x": 12, "y": 1}, + {"label": "KC_Y", "matrix": [7, 1], "x": 13, "y": 1}, + {"label": "KC_U", "matrix": [7, 2], "x": 14, "y": 1}, + {"label": "KC_I", "matrix": [7, 3], "x": 15, "y": 1}, + {"label": "KC_O", "matrix": [7, 4], "x": 16, "y": 1}, + {"label": "KC_P", "matrix": [7, 5], "x": 17, "y": 1.5}, + {"label": "KC_BSLS", "matrix": [7, 6], "x": 18, "y": 1.5, "w": 1.5}, + {"label": "KC_LCTL", "matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "KC_A", "matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"label": "KC_S", "matrix": [2, 2], "x": 2.5, "y": 2}, + {"label": "KC_D", "matrix": [2, 3], "x": 3.5, "y": 2}, + {"label": "KC_F", "matrix": [2, 4], "x": 4.5, "y": 2}, + {"label": "KC_G", "matrix": [2, 5], "x": 5.5, "y": 2}, + {"label": "KC_NO", "matrix": [2, 6], "x": 6.5, "y": 2}, + {"label": "KC_DEL", "matrix": [8, 0], "x": 12, "y": 2}, + {"label": "KC_H", "matrix": [8, 1], "x": 13, "y": 2}, + {"label": "KC_J", "matrix": [8, 2], "x": 14, "y": 2}, + {"label": "KC_K", "matrix": [8, 3], "x": 15, "y": 2}, + {"label": "KC_L", "matrix": [8, 4], "x": 16, "y": 2}, + {"label": "KC_SCLN", "matrix": [8, 5], "x": 17, "y": 2.5}, + {"label": "KC_RSFT", "matrix": [8, 6], "x": 18, "y": 2.5, "w": 1.5}, + {"label": "KC_LSFT", "matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.5}, + {"label": "KC_Z", "matrix": [3, 1], "x": 1.5, "y": 3.5}, + {"label": "KC_X", "matrix": [3, 2], "x": 2.5, "y": 3}, + {"label": "KC_C", "matrix": [3, 3], "x": 3.5, "y": 3}, + {"label": "KC_V", "matrix": [3, 4], "x": 4.5, "y": 3}, + {"label": "KC_B", "matrix": [3, 5], "x": 5.5, "y": 3}, + {"label": "KC_N", "matrix": [9, 1], "x": 13, "y": 3}, + {"label": "KC_M", "matrix": [9, 2], "x": 14, "y": 3}, + {"label": "KC_COMM", "matrix": [9, 3], "x": 15, "y": 3}, + {"label": "KC_DOT", "matrix": [9, 4], "x": 16, "y": 3}, + {"label": "KC_SLSH", "matrix": [9, 5], "x": 17, "y": 3.5}, + {"label": "KC_RSFT", "matrix": [9, 6], "x": 18, "y": 3.5, "w": 1.5}, + {"label": "KC_PGUP", "matrix": [4, 2], "x": 2.5, "y": 4}, + {"label": "KC_PGDN", "matrix": [4, 3], "x": 3.5, "y": 4}, + {"label": "KC_LBRC", "matrix": [10, 3], "x": 15, "y": 4}, + {"label": "KC_RBRC", "matrix": [10, 4], "x": 16, "y": 4}, + {"label": "KC_LCTL", "matrix": [4, 4], "x": 5, "y": 5, "h": 1.5, "r": 30}, + {"label": "KC_ESC", "matrix": [4, 5], "x": 6, "y": 5, "h": 1.5, "r": 30}, + {"label": "KC_ENTER", "matrix": [10, 1], "x": 12.5, "y": 5, "h": 1.5, "r": -30}, + {"label": "KC_SPC", "matrix": [10, 2], "x": 13.5, "y": 5, "h": 1.5, "r": -30}, + {"label": "KC_UP", "matrix": [5, 5], "x": 7.5, "y": 6.5, "r": 45}, + {"label": "KC_DOWN", "matrix": [5, 3], "x": 8, "y": 7.5, "r": 45}, + {"label": "KC_LEFT", "matrix": [11, 3], "x": 10.5, "y": 7.5, "r": -45}, + {"label": "KC_RIGHT", "matrix": [11, 1], "x": 11, "y": 6.5, "r": -45}, + {"label": "KC_LCMD", "matrix": [5, 4], "x": 6.5, "y": 7, "r": 45}, + {"label": "KC_LALT", "matrix": [5, 2], "x": 7, "y": 8, "r": 45}, + {"label": "KC_RCTL", "matrix": [11, 4], "x": 11.5, "y": 8, "r": -45}, + {"label": "KC_RALT", "matrix": [11, 2], "x": 12, "y": 7, "r": -45} + ] + } + } +} diff --git a/keyboards/handwired/dactyl_manuform/5x7_2_6/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/5x7_2_6/keymaps/default/keymap.c new file mode 100644 index 0000000000..5ad2f77bad --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x7_2_6/keymaps/default/keymap.c @@ -0,0 +1,74 @@ +/* vim: noai:ts=4:sw=4:nowrap +*/ +/* +Copyright 2012 Jun Wako Nikolai Grigoriev @ngrigoriev + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _BASE, + _MAGIC, + _NUMPAD, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_5x7_2_6( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, MO(_MAGIC), KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MO(_NUMPAD), KC_MINUS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, _______, KC_DEL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT), + KC_PGUP, KC_PGDN, KC_LBRC, KC_RBRC, + KC_LCTL, LT(_FN, KC_ESC), KC_ENTER,KC_SPC, + KC_UP, KC_DOWN, KC_LEFT, KC_RIGHT, + KC_LCMD, KC_LALT, KC_RCTL, KC_RALT + ), + + [_FN] = LAYOUT_5x7_2_6( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, MO(_MAGIC), _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F12, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, QK_BOOT, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_MPRV, KC_MNXT, _______, _______, + _______, _______, KC_DEL, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ), + + [_NUMPAD] = LAYOUT_5x7_2_6( + _______, _______, _______, _______, _______, _______, MO(_MAGIC), _______, _______, KC_NUM, _______, KC_PMNS, KC_PPLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_P4, KC_P5, KC_P6, KC_PAST, _______, + _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PSLS, _______, + _______, _______, KC_P0, KC_PDOT, + _______, _______, _______, KC_PENT, + _______, _______, _______, _______, + _______, _______, _______, _______ + ), + + [_MAGIC] = LAYOUT_5x7_2_6( + _______, _______, _______, _______, _______, _______, _______, CG_SWAP, _______, _______, _______, _______, _______, QK_REBOOT, + _______, _______, _______, _______, _______, _______, _______, CG_NORM, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOTLOADER, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/handwired/dactyl_manuform/5x7_2_6/readme.md b/keyboards/handwired/dactyl_manuform/5x7_2_6/readme.md new file mode 100644 index 0000000000..e29bbeb8ce --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x7_2_6/readme.md @@ -0,0 +1,29 @@ +# handwired/dactyl_manuform/5x7_2_6 + +![keyboad_image](https://i.ibb.co/09tfjY0/kbpic-small-21.jpg) + +A standard Dactyl Manuform keyboard with 5x7 matrix, 6 thumb cluster keys. Last row has 2 keys only. Index column has 3 rows. The outer keys are 1,5u wide. [More info on https://github.com/ngrigoriev/dactyl-manuform-5x7_2_6](https://github.com/ngrigoriev/dactyl-manuform-5x7_2_6). Based on the original set of Dactyl Manuform keyboards created and maintaied by [Jack Humbert](https://github.com/jackhumbert). + +This keyboard can be generated using one of Dactyl Manuform generators, such as (https://dactyl.mbugert.de/manuform). + +* Keyboard Maintainer: [Nikolai Grigoriev](https://github.com/ngrigoriev) +* Hardware Supported: Promicro +* Hardware Availability: general DIY + +Make example for this keyboard (after setting up your build environment): + + make handwired/dactyl_manuform/5x7_2_6:default + +Flashing example for this keyboard: + + make handwired/dactyl_manuform/5x7_2_6:default:flash + +See the [build environment setup](getting_started_build_tools) and the [make instructions](getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From 45a5a94b969c33e60acb4f9187c4d47f752cfafb Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Thu, 11 Sep 2025 11:04:19 +0100 Subject: [PATCH 127/167] Correct key position for Swiftrax Bebol (#25147) --- keyboards/handwired/swiftrax/bebol/keyboard.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/handwired/swiftrax/bebol/keyboard.json b/keyboards/handwired/swiftrax/bebol/keyboard.json index 0a665a0ae7..ad3af9176d 100644 --- a/keyboards/handwired/swiftrax/bebol/keyboard.json +++ b/keyboards/handwired/swiftrax/bebol/keyboard.json @@ -251,7 +251,7 @@ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, {"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, - {"label": "Ctrl", "matrix": [4, 12], "x": 12, "y": 4, "w": 1.5}, + {"label": "Ctrl", "matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, {"label": "\u2190", "matrix": [4, 13], "x": 13, "y": 4}, {"label": "\u2193", "matrix": [4, 14], "x": 14, "y": 4}, {"label": "\u2192", "matrix": [4, 15], "x": 15, "y": 4} @@ -327,7 +327,7 @@ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, {"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.5}, - {"label": "Ctrl", "matrix": [4, 12], "x": 12, "y": 4, "w": 1.5}, + {"label": "Ctrl", "matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}, {"label": "\u2190", "matrix": [4, 13], "x": 13, "y": 4}, {"label": "\u2193", "matrix": [4, 14], "x": 14, "y": 4}, {"label": "\u2192", "matrix": [4, 15], "x": 15, "y": 4} From 8f728aa7311f3d66d8c7b68bf85e5da605909b4c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 11:12:40 +0100 Subject: [PATCH 128/167] Bump vite from 5.4.19 to 5.4.20 in /builddefs/docsgen (#25646) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.19 to 5.4.20. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v5.4.20/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.4.20/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 5.4.20 dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- builddefs/docsgen/package.json | 2 +- builddefs/docsgen/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/builddefs/docsgen/package.json b/builddefs/docsgen/package.json index 69e229ae61..19c80580d6 100644 --- a/builddefs/docsgen/package.json +++ b/builddefs/docsgen/package.json @@ -1,7 +1,7 @@ { "license": "GPL-2.0-or-later", "devDependencies": { - "vite": "^5.4.19", + "vite": "^5.4.20", "vitepress": "^1.1.0", "vitepress-plugin-tabs": "^0.5.0", "vue": "^3.4.24" diff --git a/builddefs/docsgen/yarn.lock b/builddefs/docsgen/yarn.lock index 8a8457eb8d..bc2edf6024 100644 --- a/builddefs/docsgen/yarn.lock +++ b/builddefs/docsgen/yarn.lock @@ -766,10 +766,10 @@ tabbable@^6.2.0: resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== -vite@^5.2.9, vite@^5.4.19: - version "5.4.19" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.19.tgz#20efd060410044b3ed555049418a5e7d1998f959" - integrity sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA== +vite@^5.2.9, vite@^5.4.20: + version "5.4.20" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.20.tgz#3267a5e03f21212f44edfd72758138e8fcecd76a" + integrity sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g== dependencies: esbuild "^0.21.3" postcss "^8.4.43" From f31004ebec6903408f1b1687d89ba98900c82e4c Mon Sep 17 00:00:00 2001 From: bkchqaeh <167339684+bkchqaeh@users.noreply.github.com> Date: Fri, 19 Sep 2025 05:40:42 +0300 Subject: [PATCH 129/167] Add ENMEPAD3x4 (#25435) --- keyboards/enmeseoz/enmepad3x4/keyboard.json | 39 +++++++++++++++++++ .../enmepad3x4/keymaps/default/keymap.c | 31 +++++++++++++++ keyboards/enmeseoz/enmepad3x4/readme.md | 25 ++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 keyboards/enmeseoz/enmepad3x4/keyboard.json create mode 100644 keyboards/enmeseoz/enmepad3x4/keymaps/default/keymap.c create mode 100644 keyboards/enmeseoz/enmepad3x4/readme.md diff --git a/keyboards/enmeseoz/enmepad3x4/keyboard.json b/keyboards/enmeseoz/enmepad3x4/keyboard.json new file mode 100644 index 0000000000..50fccf9d8c --- /dev/null +++ b/keyboards/enmeseoz/enmepad3x4/keyboard.json @@ -0,0 +1,39 @@ +{ + "manufacturer": "ENMESEOZ", + "keyboard_name": "ENMEPAD", + "maintainer": "ENMESEOZ", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP26", "GP27", "GP28", "GP29"], + "rows": ["GP3", "GP4", "GP5"] + }, + "processor": "RP2040", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_3x4": { + "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} + ] + } + } +} diff --git a/keyboards/enmeseoz/enmepad3x4/keymaps/default/keymap.c b/keyboards/enmeseoz/enmepad3x4/keymaps/default/keymap.c new file mode 100644 index 0000000000..0f6fd6b302 --- /dev/null +++ b/keyboards/enmeseoz/enmepad3x4/keymaps/default/keymap.c @@ -0,0 +1,31 @@ +/* Copyright 2025 ENMESEOZ + * + * This 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] = { + + LAYOUT_3x4( + KC_0, KC_1, KC_4, KC_7, + KC_ENT, KC_2, KC_5, KC_8, + MO(1), KC_3, KC_6, KC_9 + ), + LAYOUT_3x4( + QK_BOOT, 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/enmeseoz/enmepad3x4/readme.md b/keyboards/enmeseoz/enmepad3x4/readme.md new file mode 100644 index 0000000000..dd7391daac --- /dev/null +++ b/keyboards/enmeseoz/enmepad3x4/readme.md @@ -0,0 +1,25 @@ +# ENMEPAD 3x4 + +ENMEPAD3x4 a compact macropad controlled with rp2040. + +* Keyboard Maintainer: [bkchqaeh](https://github.com/bkchqaeh) +* Hardware Supported: *rp2040* +* Hardware Availability: *Not available* + +Make example for this keyboard (after setting up your build environment): + + make enmeseoz/enmepad3x4:default + +Flashing example for this keyboard: + + make enmeseoz/enmepad3x4:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file From 880c0c8ee000b8a3c8f407f9204f09a5107acc28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Sep 2025 20:33:25 +0100 Subject: [PATCH 130/167] Bump tj-actions/changed-files from 46 to 47 (#25658) Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 46 to 47. - [Release notes](https://github.com/tj-actions/changed-files/releases) - [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md) - [Commits](https://github.com/tj-actions/changed-files/compare/v46...v47) --- updated-dependencies: - dependency-name: tj-actions/changed-files dependency-version: '47' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/format.yml | 2 +- .github/workflows/lint.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 9dbda4e5a6..be6617e2b2 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -36,7 +36,7 @@ jobs: - name: Get changed files id: file_changes - uses: tj-actions/changed-files@v46 + uses: tj-actions/changed-files@v47 with: use_rest_api: true diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 62e1263a48..7d4ff0a977 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -27,7 +27,7 @@ jobs: - name: Get changed files id: file_changes - uses: tj-actions/changed-files@v46 + uses: tj-actions/changed-files@v47 with: use_rest_api: true From 7aed244aaeb943377e134e21cce273a12b4b56f9 Mon Sep 17 00:00:00 2001 From: Jonas Eppard Date: Tue, 30 Sep 2025 00:54:48 +0200 Subject: [PATCH 131/167] [DOCS] Fix keycodes_basic FastForward + Rewind #25685 (#25686) --- docs/keycodes.md | 4 ++-- docs/keycodes_basic.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/keycodes.md b/docs/keycodes.md index e569e87431..c540a7ce7f 100644 --- a/docs/keycodes.md +++ b/docs/keycodes.md @@ -203,8 +203,8 @@ See also: [Basic Keycodes](keycodes_basic) |`KC_WWW_STOP` |`KC_WSTP` |Browser Stop |✔ | |✔ | |`KC_WWW_REFRESH` |`KC_WREF` |Browser Refresh |✔ | |✔ | |`KC_WWW_FAVORITES` |`KC_WFAV` |Browser Favorites |✔ | |✔ | -|`KC_MEDIA_FAST_FORWARD` |`KC_MFFD` |Next Track |✔ |✔5|✔ | -|`KC_MEDIA_REWIND` |`KC_MRWD` |Previous Track |✔6|✔5|✔ | +|`KC_MEDIA_FAST_FORWARD` |`KC_MFFD` |Fast Forward |✔ |✔5|✔ | +|`KC_MEDIA_REWIND` |`KC_MRWD` |Rewind |✔6|✔5|✔ | |`KC_BRIGHTNESS_UP` |`KC_BRIU` |Brightness Up |✔ |✔ |✔ | |`KC_BRIGHTNESS_DOWN` |`KC_BRID` |Brightness Down |✔ |✔ |✔ | |`KC_CONTROL_PANEL` |`KC_CPNL` |Open Control Panel |✔ | | | diff --git a/docs/keycodes_basic.md b/docs/keycodes_basic.md index 66dfbe6ded..8b0e1d694d 100644 --- a/docs/keycodes_basic.md +++ b/docs/keycodes_basic.md @@ -219,8 +219,8 @@ Some of these keycodes may behave differently depending on the OS. For example, |`KC_WWW_STOP` |`KC_WSTP`|Browser Stop | |`KC_WWW_REFRESH` |`KC_WREF`|Browser Refresh | |`KC_WWW_FAVORITES` |`KC_WFAV`|Browser Favorites | -|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD`|Next Track | -|`KC_MEDIA_REWIND` |`KC_MRWD`|Previous Track | +|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD`|Fast Forward | +|`KC_MEDIA_REWIND` |`KC_MRWD`|Rewind | |`KC_BRIGHTNESS_UP` |`KC_BRIU`|Brightness Up | |`KC_BRIGHTNESS_DOWN` |`KC_BRID`|Brightness Down | |`KC_CONTROL_PANEL` |`KC_CPNL`|Open Control Panel | From eae39d37c634646dfab59d801bbf957572cf3dce Mon Sep 17 00:00:00 2001 From: Danny Date: Sun, 5 Oct 2025 16:46:15 -0400 Subject: [PATCH 132/167] [Keyboard] Add Quefrency LM Rev. 1 (#25692) * Initial WIP commit * Update right half pins * Update RGB matrix and layout * Enable more RGB animations * Update license headers * Cleanup keymap and RGB * Move handedness pin definition, cleanup RGB defines * Adjust keymap --- keyboards/keebio/quefrency_lm/info.json | 21 ++ .../quefrency_lm/keymaps/default/keymap.c | 21 ++ keyboards/keebio/quefrency_lm/readme.md | 27 ++ keyboards/keebio/quefrency_lm/rev1/config.h | 23 ++ keyboards/keebio/quefrency_lm/rev1/halconf.h | 10 + .../keebio/quefrency_lm/rev1/keyboard.json | 320 ++++++++++++++++++ keyboards/keebio/quefrency_lm/rev1/mcuconf.h | 14 + keyboards/keebio/quefrency_lm/rev1/rev1.c | 11 + 8 files changed, 447 insertions(+) create mode 100644 keyboards/keebio/quefrency_lm/info.json create mode 100644 keyboards/keebio/quefrency_lm/keymaps/default/keymap.c create mode 100644 keyboards/keebio/quefrency_lm/readme.md create mode 100644 keyboards/keebio/quefrency_lm/rev1/config.h create mode 100644 keyboards/keebio/quefrency_lm/rev1/halconf.h create mode 100644 keyboards/keebio/quefrency_lm/rev1/keyboard.json create mode 100644 keyboards/keebio/quefrency_lm/rev1/mcuconf.h create mode 100644 keyboards/keebio/quefrency_lm/rev1/rev1.c diff --git a/keyboards/keebio/quefrency_lm/info.json b/keyboards/keebio/quefrency_lm/info.json new file mode 100644 index 0000000000..cb41e89ff6 --- /dev/null +++ b/keyboards/keebio/quefrency_lm/info.json @@ -0,0 +1,21 @@ +{ + "manufacturer": "Keebio", + "url": "https://keeb.io", + "maintainer": "nooges", + "usb": { + "vid": "0xCB10" + }, + "features": { + "bootmagic": true, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": false + }, + "split": { + "enabled": true + }, + "build": { + "lto": true + } +} diff --git a/keyboards/keebio/quefrency_lm/keymaps/default/keymap.c b/keyboards/keebio/quefrency_lm/keymaps/default/keymap.c new file mode 100644 index 0000000000..75bb1601de --- /dev/null +++ b/keyboards/keebio/quefrency_lm/keymaps/default/keymap.c @@ -0,0 +1,21 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65xt( + KC_F1, KC_F2, QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_F5, KC_F6, 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_F7, KC_F8, 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_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65xt( + RM_HUEU, RM_HUED, 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, _______, _______, + RM_SATU, RM_SATD, RM_TOGG, RM_NEXT, KC_UP, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, + RM_VALU, RM_VALD, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RM_SPDU, RM_SPDD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/keebio/quefrency_lm/readme.md b/keyboards/keebio/quefrency_lm/readme.md new file mode 100644 index 0000000000..c602f252cc --- /dev/null +++ b/keyboards/keebio/quefrency_lm/readme.md @@ -0,0 +1,27 @@ +# Quefrency LM + +A split 65XT staggered low-profile keyboard made and sold by Keebio. [More info at Keebio](https://keeb.io). + +* Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges) +* Hardware Availability: [Keebio](https://keeb.io/) + +Make example for this keyboard (after setting up your build environment): + + make keebio/quefrency_lm/rev1:default + +Example of flashing this keyboard: + + make keebio/quefrency_lm/rev1:default:flash + +Handedness detection is already hardwired onto the PCB, so no need to deal with `EE_HANDS` or flashing .eep files. + +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 one of these ways: + +* **Physical reset button**: Press and hold the button on the back of the PCB for at least 2 seconds and let go, or double-press the button +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + +A build guide for this keyboard can be found here: [Keebio Build Guides](https://docs.keeb.io) diff --git a/keyboards/keebio/quefrency_lm/rev1/config.h b/keyboards/keebio/quefrency_lm/rev1/config.h new file mode 100644 index 0000000000..039947f539 --- /dev/null +++ b/keyboards/keebio/quefrency_lm/rev1/config.h @@ -0,0 +1,23 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Defines for the split keyboard setup */ +#define SERIAL_USART_DRIVER SD3 // USART 3 +#define SERIAL_USART_TX_PIN B10 +#define SERIAL_USART_RX_PIN B11 +#define SERIAL_USART_TX_PAL_MODE 7 +#define SERIAL_USART_RX_PAL_MODE 7 +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_PIN_SWAP + +#define USB_VBUS_PIN C6 + +/* Defines for the RGB matrix */ +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 4 +#define WS2812_PWM_PAL_MODE 10 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 2 +#define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM3_UP diff --git a/keyboards/keebio/quefrency_lm/rev1/halconf.h b/keyboards/keebio/quefrency_lm/rev1/halconf.h new file mode 100644 index 0000000000..ce1dfd06d7 --- /dev/null +++ b/keyboards/keebio/quefrency_lm/rev1/halconf.h @@ -0,0 +1,10 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SERIAL TRUE + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/keebio/quefrency_lm/rev1/keyboard.json b/keyboards/keebio/quefrency_lm/rev1/keyboard.json new file mode 100644 index 0000000000..1e56222de4 --- /dev/null +++ b/keyboards/keebio/quefrency_lm/rev1/keyboard.json @@ -0,0 +1,320 @@ +{ + "manufacturer": "Keebio", + "keyboard_name": "Quefrency LM Rev. 1", + "maintainer": "nooges", + "bootloader": "stm32-dfu", + "bootmagic": { + "matrix": [0, 2] + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["B13", "B14", "B2", "F0", "C10", "B6", "C13", "C14", "C15"], + "rows": ["B4", "C11", "B12", "B5", "F1"] + }, + "processor": "STM32G431", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "flower_blooming": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_fractal": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true, + "starlight": true, + "starlight_smooth": true, + "starlight_dual_hue": true, + "starlight_dual_sat": true, + "riverflow": true + }, + "driver": "ws2812", + "layout": [ + { "matrix": [0, 8], "x": 103, "y": 4, "flags": 4 }, + { "x": 97, "y": 8, "flags": 2 }, + { "matrix": [0, 7], "x": 91, "y": 4, "flags": 4 }, + { "matrix": [0, 6], "x": 79, "y": 4, "flags": 4 }, + { "x": 73, "y": 0, "flags": 2 }, + { "matrix": [0, 5], "x": 67, "y": 4, "flags": 4 }, + { "matrix": [0, 4], "x": 54, "y": 4, "flags": 4 }, + { "matrix": [0, 3], "x": 42, "y": 4, "flags": 4 }, + { "matrix": [0, 2], "x": 30, "y": 4, "flags": 4 }, + { "x": 27, "y": 19, "flags": 2 }, + + { "matrix": [1, 2], "x": 33, "y": 19, "flags": 4 }, + { "matrix": [1, 3], "x": 48, "y": 19, "flags": 4 }, + { "matrix": [1, 4], "x": 61, "y": 19, "flags": 4 }, + { "matrix": [1, 5], "x": 73, "y": 19, "flags": 4 }, + { "matrix": [1, 6], "x": 85, "y": 19, "flags": 4 }, + { "matrix": [1, 7], "x": 97, "y": 19, "flags": 4 }, + + { "matrix": [2, 7], "x": 100, "y": 34, "flags": 4 }, + { "matrix": [2, 6], "x": 88, "y": 34, "flags": 4 }, + { "matrix": [2, 5], "x": 76, "y": 34, "flags": 4 }, + { "matrix": [2, 4], "x": 64, "y": 34, "flags": 4 }, + { "matrix": [2, 3], "x": 51, "y": 34, "flags": 4 }, + { "matrix": [2, 2], "x": 35, "y": 34, "flags": 4 }, + + { "matrix": [3, 2], "x": 38, "y": 49, "flags": 4 }, + { "matrix": [3, 4], "x": 58, "y": 49, "flags": 4 }, + { "matrix": [3, 5], "x": 70, "y": 49, "flags": 4 }, + { "matrix": [3, 6], "x": 82, "y": 49, "flags": 4 }, + { "matrix": [3, 7], "x": 94, "y": 49, "flags": 4 }, + { "x": 100, "y": 45, "flags": 2 }, + { "matrix": [3, 8], "x": 106, "y": 49, "flags": 4 }, + + { "matrix": [4, 7], "x": 98, "y": 64, "flags": 4 }, + { "x": 85, "y": 64, "flags": 2 }, + { "matrix": [4, 5], "x": 77, "y": 64, "flags": 4 }, + { "matrix": [4, 4], "x": 62, "y": 64, "flags": 4 }, + { "matrix": [4, 3], "x": 47, "y": 64, "flags": 4 }, + { "x": 39, "y": 60, "flags": 4 }, + { "matrix": [4, 2], "x": 32, "y": 64, "flags": 4 }, + + { "matrix": [4, 1], "x": 12, "y": 64, "flags": 4 }, + { "x": 6, "y": 60, "flags": 2 }, + { "matrix": [4, 0], "x": 0, "y": 64, "flags": 4 }, + { "matrix": [3, 0], "x": 0, "y": 49, "flags": 4 }, + { "matrix": [3, 1], "x": 12, "y": 49, "flags": 4 }, + { "matrix": [2, 1], "x": 12, "y": 34, "flags": 4 }, + { "matrix": [2, 0], "x": 0, "y": 34, "flags": 4 }, + { "matrix": [1, 0], "x": 0, "y": 19, "flags": 4 }, + { "matrix": [1, 1], "x": 12, "y": 19, "flags": 4 }, + { "matrix": [0, 1], "x": 12, "y": 4, "flags": 4 }, + { "x": 6, "y": 0, "flags": 2 }, + { "matrix": [0, 0], "x": 0, "y": 4, "flags": 4 }, + + { "matrix": [5, 0], "x": 127, "y": 4, "flags": 4 }, + { "x": 127, "y": 11, "flags": 2 }, + { "matrix": [5, 1], "x": 139, "y": 4, "flags": 4 }, + { "matrix": [5, 2], "x": 151, "y": 4, "flags": 4 }, + { "x": 157, "y": 0, "flags": 2 }, + { "matrix": [5, 3], "x": 163, "y": 4, "flags": 4 }, + { "matrix": [5, 4], "x": 176, "y": 4, "flags": 4 }, + { "x": 182, "y": 0, "flags": 2 }, + { "matrix": [5, 5], "x": 188, "y": 4, "flags": 4 }, + { "matrix": [5, 7], "x": 206, "y": 4, "flags": 4 }, + { "x": 218, "y": 0, "flags": 2 }, + { "matrix": [5, 8], "x": 224, "y": 4, "flags": 4 }, + + { "matrix": [6, 8], "x": 224, "y": 19, "flags": 4 }, + { "matrix": [6, 7], "x": 209, "y": 19, "flags": 4 }, + { "matrix": [6, 6], "x": 194, "y": 19, "flags": 4 }, + { "matrix": [6, 5], "x": 182, "y": 19, "flags": 4 }, + { "matrix": [6, 4], "x": 170, "y": 19, "flags": 4 }, + { "matrix": [6, 3], "x": 157, "y": 19, "flags": 4 }, + { "matrix": [6, 2], "x": 145, "y": 19, "flags": 4 }, + { "matrix": [6, 1], "x": 133, "y": 19, "flags": 4 }, + { "matrix": [6, 0], "x": 121, "y": 19, "flags": 4 }, + + { "matrix": [7, 0], "x": 124, "y": 34, "flags": 4 }, + { "matrix": [7, 1], "x": 136, "y": 34, "flags": 4 }, + { "matrix": [7, 2], "x": 148, "y": 34, "flags": 4 }, + { "matrix": [7, 3], "x": 160, "y": 34, "flags": 4 }, + { "matrix": [7, 4], "x": 173, "y": 34, "flags": 4 }, + { "matrix": [7, 5], "x": 185, "y": 34, "flags": 4 }, + { "matrix": [7, 7], "x": 204, "y": 34, "flags": 4 }, + { "matrix": [7, 8], "x": 224, "y": 34, "flags": 4 }, + + { "matrix": [8, 8], "x": 224, "y": 49, "flags": 4 }, + { "matrix": [8, 7], "x": 212, "y": 49, "flags": 4 }, + { "matrix": [8, 6], "x": 195, "y": 49, "flags": 4 }, + { "matrix": [8, 4], "x": 179, "y": 49, "flags": 4 }, + { "matrix": [8, 3], "x": 166, "y": 49, "flags": 4 }, + { "matrix": [8, 2], "x": 154, "y": 49, "flags": 4 }, + { "matrix": [8, 1], "x": 142, "y": 49, "flags": 4 }, + { "matrix": [8, 0], "x": 130, "y": 49, "flags": 4 }, + + { "x": 127, "y": 64, "flags": 2 }, + { "matrix": [9, 1], "x": 141, "y": 64, "flags": 4 }, + { "x": 157, "y": 64, "flags": 2 }, + { "matrix": [9, 2], "x": 163, "y": 64, "flags": 4 }, + { "matrix": [9, 3], "x": 176, "y": 64, "flags": 4 }, + { "matrix": [9, 4], "x": 188, "y": 64, "flags": 4 }, + { "x": 194, "y": 64, "flags": 2 }, + { "matrix": [9, 6], "x": 200, "y": 64, "flags": 4 }, + { "matrix": [9, 7], "x": 212, "y": 64, "flags": 4 }, + { "x": 218, "y": 64, "flags": 2 }, + { "matrix": [9, 8], "x": 224, "y": 64, "flags": 4 } + ], + "max_brightness": 120, + "sleep": true, + "split_count": [48, 48] + }, + "split": { + "bootmagic": { + "matrix": [5, 8] + }, + "enabled": true, + "handedness": { + "pin": "A0" + }, + + "matrix_pins": { + "right": { + "cols": ["B2", "A15", "A2", "A1", "A4", "B15", "B6", "C13", "C14"], + "rows": ["B12", "B13", "B14", "B5", "F1"] + } + }, + "serial": { + "driver": "usart" + }, + "transport": { + "sync": { + "matrix_state": true + } + } + }, + "url": "https://keeb.io", + "usb": { + "device_version": "1.0.0", + "pid": "0x1657", + "vid": "0xCB10" + }, + "ws2812": { + "driver": "pwm", + "pin": "B7" + }, + "layouts": { + "LAYOUT_65xt": { + "layout": [ + {"label": "F1", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F2", "matrix": [0, 1], "x": 1, "y": 0}, + + {"label": "Esc", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "1", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "2", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "3", "matrix": [0, 5], "x": 5.25, "y": 0}, + {"label": "4", "matrix": [0, 6], "x": 6.25, "y": 0}, + {"label": "5", "matrix": [0, 7], "x": 7.25, "y": 0}, + {"label": "6", "matrix": [0, 8], "x": 8.25, "y": 0}, + + {"label": "7", "matrix": [5, 0], "x": 10.25, "y": 0}, + {"label": "8", "matrix": [5, 1], "x": 11.25, "y": 0}, + {"label": "9", "matrix": [5, 2], "x": 12.25, "y": 0}, + {"label": "0", "matrix": [5, 3], "x": 13.25, "y": 0}, + {"label": "-", "matrix": [5, 4], "x": 14.25, "y": 0}, + {"label": "=", "matrix": [5, 5], "x": 15.25, "y": 0}, + {"label": "Bksp", "matrix": [5, 7], "x": 16.25, "y": 0, "w": 2}, + {"label": "Del", "matrix": [5, 8], "x": 18.25, "y": 0}, + + {"label": "F3", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "F4", "matrix": [1, 1], "x": 1, "y": 1}, + + {"label": "Tab", "matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 3], "x": 3.75, "y": 1}, + {"label": "W", "matrix": [1, 4], "x": 4.75, "y": 1}, + {"label": "E", "matrix": [1, 5], "x": 5.75, "y": 1}, + {"label": "R", "matrix": [1, 6], "x": 6.75, "y": 1}, + {"label": "T", "matrix": [1, 7], "x": 7.75, "y": 1}, + + {"label": "Y", "matrix": [6, 0], "x": 9.75, "y": 1}, + {"label": "U", "matrix": [6, 1], "x": 10.75, "y": 1}, + {"label": "I", "matrix": [6, 2], "x": 11.75, "y": 1}, + {"label": "O", "matrix": [6, 3], "x": 12.75, "y": 1}, + {"label": "P", "matrix": [6, 4], "x": 13.75, "y": 1}, + {"label": "{", "matrix": [6, 5], "x": 14.75, "y": 1}, + {"label": "}", "matrix": [6, 6], "x": 15.75, "y": 1}, + {"label": "|", "matrix": [6, 7], "x": 16.75, "y": 1, "w": 1.5}, + {"label": "Home", "matrix": [6, 8], "x": 18.25, "y": 1}, + + {"label": "F5", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "F6", "matrix": [2, 1], "x": 1, "y": 2}, + + {"label": "Caps Lock", "matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 3], "x": 4, "y": 2}, + {"label": "S", "matrix": [2, 4], "x": 5, "y": 2}, + {"label": "D", "matrix": [2, 5], "x": 6, "y": 2}, + {"label": "F", "matrix": [2, 6], "x": 7, "y": 2}, + {"label": "G", "matrix": [2, 7], "x": 8, "y": 2}, + + {"label": "H", "matrix": [7, 0], "x": 10, "y": 2}, + {"label": "J", "matrix": [7, 1], "x": 11, "y": 2}, + {"label": "K", "matrix": [7, 2], "x": 12, "y": 2}, + {"label": "L", "matrix": [7, 3], "x": 13, "y": 2}, + {"label": ":", "matrix": [7, 4], "x": 14, "y": 2}, + {"label": "\"", "matrix": [7, 5], "x": 15, "y": 2}, + {"label": "Enter", "matrix": [7, 7], "x": 16, "y": 2, "w": 2.25}, + {"label": "PgUp", "matrix": [7, 8], "x": 18.25, "y": 2}, + + {"label": "F7", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "F8", "matrix": [3, 1], "x": 1, "y": 3}, + + {"label": "Shift", "matrix": [3, 2], "x": 2.25, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 4], "x": 4.5, "y": 3}, + {"label": "X", "matrix": [3, 5], "x": 5.5, "y": 3}, + {"label": "C", "matrix": [3, 6], "x": 6.5, "y": 3}, + {"label": "V", "matrix": [3, 7], "x": 7.5, "y": 3}, + {"label": "B", "matrix": [3, 8], "x": 8.5, "y": 3}, + + {"label": "N", "matrix": [8, 0], "x": 10.5, "y": 3}, + {"label": "M", "matrix": [8, 1], "x": 11.5, "y": 3}, + {"label": ",", "matrix": [8, 2], "x": 12.5, "y": 3}, + {"label": ".", "matrix": [8, 3], "x": 13.5, "y": 3}, + {"label": "/", "matrix": [8, 4], "x": 14.5, "y": 3}, + {"label": "Shift", "matrix": [8, 6], "x": 15.5, "y": 3, "w": 1.75}, + {"label": "Up", "matrix": [8, 7], "x": 17.25, "y": 3}, + {"label": "PgDn", "matrix": [8, 8], "x": 18.25, "y": 3}, + + {"label": "F9", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "F10", "matrix": [4, 1], "x": 1, "y": 4}, + + {"label": "Ctrl", "matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 3], "x": 3.5, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.25}, + {"label": "Fn", "matrix": [4, 5], "x": 6, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 7], "x": 7.25, "y": 4, "w": 2.25}, + + {"label": "Space", "matrix": [9, 1], "x": 10.5, "y": 4, "w": 2.75}, + {"label": "Alt", "matrix": [9, 2], "x": 13.25, "y": 4}, + {"label": "Fn", "matrix": [9, 3], "x": 14.25, "y": 4}, + {"label": "Ctrl", "matrix": [9, 4], "x": 15.25, "y": 4}, + {"label": "Left", "matrix": [9, 6], "x": 16.25, "y": 4}, + {"label": "Down", "matrix": [9, 7], "x": 17.25, "y": 4}, + {"label": "Right", "matrix": [9, 8], "x": 18.25, "y": 4} + ] + } + } +} diff --git a/keyboards/keebio/quefrency_lm/rev1/mcuconf.h b/keyboards/keebio/quefrency_lm/rev1/mcuconf.h new file mode 100644 index 0000000000..81e0d04f67 --- /dev/null +++ b/keyboards/keebio/quefrency_lm/rev1/mcuconf.h @@ -0,0 +1,14 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +/* enable USART3, used for split comms */ +#undef STM32_SERIAL_USE_USART3 +#define STM32_SERIAL_USE_USART3 TRUE + +/* enable TIM3, used for RGB LED PWM driver */ +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/keebio/quefrency_lm/rev1/rev1.c b/keyboards/keebio/quefrency_lm/rev1/rev1.c new file mode 100644 index 0000000000..744fdd8293 --- /dev/null +++ b/keyboards/keebio/quefrency_lm/rev1/rev1.c @@ -0,0 +1,11 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +void keyboard_pre_init_kb(void) { + // Disable the PD peripheral in pre-init because its pins are being used in the matrix: + PWR->CR3 |= PWR_CR3_UCPD_DBDIS; + // Call the corresponding _user() function (see https://docs.qmk.fm/#/custom_quantum_functions) + keyboard_pre_init_user(); +} From 85fa06c3db45d33d19dc2bdea6049d60ef294bee Mon Sep 17 00:00:00 2001 From: Danny Tan <23428162+zykrah@users.noreply.github.com> Date: Mon, 6 Oct 2025 07:50:03 +1100 Subject: [PATCH 133/167] Update Idyllic pizzapad with Encoder (#25683) * Update pizzapad with encoder * Added extra features to enable volume controls * Added license header and updated pin number * Remove config.h file * Update keyboard.json features and pizzapad.c license header --- keyboards/idyllic/pizzapad/keyboard.json | 14 +++++++++++++- keyboards/idyllic/pizzapad/pizzapad.c | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 keyboards/idyllic/pizzapad/pizzapad.c diff --git a/keyboards/idyllic/pizzapad/keyboard.json b/keyboards/idyllic/pizzapad/keyboard.json index 638db19822..590d354034 100644 --- a/keyboards/idyllic/pizzapad/keyboard.json +++ b/keyboards/idyllic/pizzapad/keyboard.json @@ -13,10 +13,22 @@ "rows": ["GP6", "GP29", "GP28"] }, "usb": { - "device_version": "0.0.1", + "device_version": "0.0.2", "pid": "0x5050", "vid": "0x7A79" }, + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "nkro": true, + "encoder": true + }, + "encoder": { + "rotary": [ + { "pin_a": "GP2", "pin_b": "GP3" } + ] + }, "community_layouts": ["ortho_3x3"], "layouts": { "LAYOUT_ortho_3x3": { diff --git a/keyboards/idyllic/pizzapad/pizzapad.c b/keyboards/idyllic/pizzapad/pizzapad.c new file mode 100644 index 0000000000..11a35193aa --- /dev/null +++ b/keyboards/idyllic/pizzapad/pizzapad.c @@ -0,0 +1,14 @@ +// Copyright 2025 Zykrah +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#define ENCODER_PIN_C GP27 + +void keyboard_pre_init_kb(void) { + // Set encoder pin C low + gpio_set_pin_output_push_pull(ENCODER_PIN_C); + gpio_write_pin_low(ENCODER_PIN_C); + + keyboard_pre_init_user(); +} From 61ecee15850db51ff2ddba862b0337a2ae439e23 Mon Sep 17 00:00:00 2001 From: takashicompany Date: Mon, 6 Oct 2025 08:55:49 +0900 Subject: [PATCH 134/167] Fix keymap for Palmslave (#25675) * fix keymap * fix keymap * Update keyboards/takashicompany/palmslave/keymaps/default/keymap.c Co-authored-by: Joel Challis --------- Co-authored-by: Jack Sangdahl Co-authored-by: Joel Challis --- .../palmslave/keymaps/default/keymap.c | 44 +++++++------------ 1 file changed, 15 insertions(+), 29 deletions(-) diff --git a/keyboards/takashicompany/palmslave/keymaps/default/keymap.c b/keyboards/takashicompany/palmslave/keymaps/default/keymap.c index 02747c0881..294aa9fde0 100644 --- a/keyboards/takashicompany/palmslave/keymaps/default/keymap.c +++ b/keyboards/takashicompany/palmslave/keymaps/default/keymap.c @@ -6,8 +6,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( - LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, + LT(4, KC_Q), KC_W, KC_E, LT(3, KC_R), KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, LT(3, KC_K), KC_L, KC_ENT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_RGUI, KC_RCTL ), @@ -27,44 +27,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [3] = LAYOUT( - LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, - LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, - KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LNG1), KC_RGUI, KC_RCTL - ), - - [4] = LAYOUT( - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_INT3, - LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - - [5] = LAYOUT( - KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS, - KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, - KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - - [6] = LAYOUT( - KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, - KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, + KC_ESC, KC_TAB, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, + KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [7] = LAYOUT( + [4] = LAYOUT( KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9), + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(5), MO(6), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [8] = LAYOUT( - UG_TOGG, UG_NEXT, UG_HUEU, UG_SATU, UG_VALU, KC_NO, KC_NO, KC_NO, DF(0), DF(3), + [5] = LAYOUT( + UG_TOGG, UG_NEXT, UG_HUEU, UG_SATU, UG_VALU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [6] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ) }; From 92ead44cf66e7f7f0f912eb5dd1fae36e15d5ed9 Mon Sep 17 00:00:00 2001 From: Danny Date: Mon, 6 Oct 2025 10:31:02 -0400 Subject: [PATCH 135/167] Add FoldKB Rev. 2 (#25679) --- keyboards/keebio/foldkb/info.json | 8 + keyboards/keebio/foldkb/rev1/keyboard.json | 4 - .../{ => rev1}/keymaps/default/keymap.c | 21 +- keyboards/keebio/foldkb/rev2/config.h | 23 ++ keyboards/keebio/foldkb/rev2/halconf.h | 10 + keyboards/keebio/foldkb/rev2/keyboard.json | 263 ++++++++++++++++++ .../foldkb/rev2/keymaps/default/keymap.c | 21 ++ keyboards/keebio/foldkb/rev2/mcuconf.h | 14 + keyboards/keebio/foldkb/rev2/rev2.c | 29 ++ 9 files changed, 372 insertions(+), 21 deletions(-) create mode 100644 keyboards/keebio/foldkb/info.json rename keyboards/keebio/foldkb/{ => rev1}/keymaps/default/keymap.c (61%) create mode 100644 keyboards/keebio/foldkb/rev2/config.h create mode 100644 keyboards/keebio/foldkb/rev2/halconf.h create mode 100644 keyboards/keebio/foldkb/rev2/keyboard.json create mode 100644 keyboards/keebio/foldkb/rev2/keymaps/default/keymap.c create mode 100644 keyboards/keebio/foldkb/rev2/mcuconf.h create mode 100644 keyboards/keebio/foldkb/rev2/rev2.c diff --git a/keyboards/keebio/foldkb/info.json b/keyboards/keebio/foldkb/info.json new file mode 100644 index 0000000000..669038aff1 --- /dev/null +++ b/keyboards/keebio/foldkb/info.json @@ -0,0 +1,8 @@ +{ + "manufacturer": "Keebio", + "url": "https://keeb.io", + "maintainer": "Keebio", + "usb": { + "vid": "0xCB10" + } +} diff --git a/keyboards/keebio/foldkb/rev1/keyboard.json b/keyboards/keebio/foldkb/rev1/keyboard.json index 70808c2662..28594a783b 100644 --- a/keyboards/keebio/foldkb/rev1/keyboard.json +++ b/keyboards/keebio/foldkb/rev1/keyboard.json @@ -1,10 +1,6 @@ { "keyboard_name": "FoldKB Rev. 1", - "manufacturer": "Keebio", - "url": "https://keeb.io", - "maintainer": "nooges", "usb": { - "vid": "0xCB10", "pid": "0x1358", "device_version": "1.0.0" }, diff --git a/keyboards/keebio/foldkb/keymaps/default/keymap.c b/keyboards/keebio/foldkb/rev1/keymaps/default/keymap.c similarity index 61% rename from keyboards/keebio/foldkb/keymaps/default/keymap.c rename to keyboards/keebio/foldkb/rev1/keymaps/default/keymap.c index 0c099df625..ae21a1267f 100644 --- a/keyboards/keebio/foldkb/keymaps/default/keymap.c +++ b/keyboards/keebio/foldkb/rev1/keymaps/default/keymap.c @@ -1,18 +1,5 @@ -/* Copyright 2021 Danny Nguyen - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H @@ -25,10 +12,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_PGDN, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL ), [1] = LAYOUT( - KC_MUTE, QK_BOOT, _______, UG_HUED, UG_HUEU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, + KC_MUTE, QK_BOOT, KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, KC_DEL, BL_STEP, _______, UG_SATD, UG_SATU, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, UG_NEXT, _______, UG_VALD, UG_VALU, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, - KC_VOLU, _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, _______, + KC_VOLU, _______, UG_HUED, UG_HUEU, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, _______, KC_VOLD, _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______, _______ ), }; diff --git a/keyboards/keebio/foldkb/rev2/config.h b/keyboards/keebio/foldkb/rev2/config.h new file mode 100644 index 0000000000..06498b8b8b --- /dev/null +++ b/keyboards/keebio/foldkb/rev2/config.h @@ -0,0 +1,23 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Defines for the split keyboard setup */ +#define SERIAL_USART_DRIVER SD1 // USART 1 +#define SERIAL_USART_TX_PIN A9 +#define SERIAL_USART_RX_PIN A10 +#define SERIAL_USART_TX_PAL_MODE 7 +#define SERIAL_USART_RX_PAL_MODE 7 +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_PIN_SWAP + +#define USB_VBUS_PIN A7 + +/* Defines for the RGB matrix */ +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 3 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 2 +#define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM3_UP diff --git a/keyboards/keebio/foldkb/rev2/halconf.h b/keyboards/keebio/foldkb/rev2/halconf.h new file mode 100644 index 0000000000..ce1dfd06d7 --- /dev/null +++ b/keyboards/keebio/foldkb/rev2/halconf.h @@ -0,0 +1,10 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SERIAL TRUE + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/keebio/foldkb/rev2/keyboard.json b/keyboards/keebio/foldkb/rev2/keyboard.json new file mode 100644 index 0000000000..19dd601c86 --- /dev/null +++ b/keyboards/keebio/foldkb/rev2/keyboard.json @@ -0,0 +1,263 @@ +{ + "keyboard_name": "FoldKB Rev. 2", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "A4", "pin_b": "A3"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["A6", "A15", "B3", "B4", "B5", "B6", "B7", "F0"], + "rows": ["A5", "A0", "A1", "A2", "F1"] + }, + "processor": "STM32G431", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "flower_blooming": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "riverflow": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "starlight": true, + "starlight_dual_hue": true, + "starlight_dual_sat": true, + "starlight_smooth": true, + "typing_heatmap": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 1], "x": 17, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 31, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 45, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 59, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 72, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 86, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 100, "y": 0, "flags": 4}, + {"matrix": [1, 7], "x": 100, "y": 16, "flags": 4}, + {"matrix": [1, 6], "x": 86, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 72, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 59, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 45, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 28, "y": 16, "flags": 4}, + {"matrix": [2, 2], "x": 26, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 45, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 59, "y": 32, "flags": 4}, + {"matrix": [2, 5], "x": 72, "y": 32, "flags": 4}, + {"matrix": [2, 6], "x": 86, "y": 32, "flags": 4}, + {"matrix": [2, 7], "x": 100, "y": 32, "flags": 4}, + {"matrix": [3, 7], "x": 100, "y": 48, "flags": 4}, + {"matrix": [3, 6], "x": 86, "y": 48, "flags": 4}, + {"matrix": [3, 5], "x": 72, "y": 48, "flags": 4}, + {"matrix": [3, 4], "x": 59, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 45, "y": 48, "flags": 4}, + {"matrix": [3, 2], "x": 22, "y": 48, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 16, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 48, "flags": 4}, + {"matrix": [4, 0], "x": 0, "y": 64, "flags": 4}, + {"matrix": [4, 2], "x": 22, "y": 64, "flags": 4}, + {"matrix": [4, 3], "x": 40, "y": 64, "flags": 4}, + {"matrix": [4, 4], "x": 57, "y": 64, "flags": 4}, + {"matrix": [4, 5], "x": 72, "y": 64, "flags": 4}, + {"matrix": [4, 6], "x": 86, "y": 64, "flags": 4}, + {"matrix": [4, 7], "x": 100, "y": 64, "flags": 4}, + {"matrix": [5, 7], "x": 221, "y": 0, "flags": 4}, + {"matrix": [5, 6], "x": 207, "y": 0, "flags": 4}, + {"matrix": [5, 5], "x": 193, "y": 0, "flags": 4}, + {"matrix": [5, 4], "x": 179, "y": 0, "flags": 4}, + {"matrix": [5, 3], "x": 165, "y": 0, "flags": 4}, + {"matrix": [5, 2], "x": 152, "y": 0, "flags": 4}, + {"matrix": [5, 1], "x": 138, "y": 0, "flags": 4}, + {"matrix": [5, 0], "x": 124, "y": 0, "flags": 4}, + {"matrix": [6, 0], "x": 124, "y": 16, "flags": 4}, + {"matrix": [6, 1], "x": 138, "y": 16, "flags": 4}, + {"matrix": [6, 2], "x": 152, "y": 16, "flags": 4}, + {"matrix": [6, 3], "x": 165, "y": 16, "flags": 4}, + {"matrix": [6, 4], "x": 179, "y": 16, "flags": 4}, + {"matrix": [6, 5], "x": 193, "y": 16, "flags": 4}, + {"matrix": [6, 6], "x": 207, "y": 16, "flags": 4}, + {"matrix": [6, 7], "x": 224, "y": 16, "flags": 4}, + {"matrix": [7, 7], "x": 215, "y": 32, "flags": 4}, + {"matrix": [7, 5], "x": 193, "y": 32, "flags": 4}, + {"matrix": [7, 4], "x": 179, "y": 32, "flags": 4}, + {"matrix": [7, 3], "x": 165, "y": 32, "flags": 4}, + {"matrix": [7, 2], "x": 152, "y": 32, "flags": 4}, + {"matrix": [7, 1], "x": 138, "y": 32, "flags": 4}, + {"matrix": [7, 0], "x": 124, "y": 32, "flags": 4}, + {"matrix": [8, 0], "x": 124, "y": 48, "flags": 4}, + {"matrix": [8, 1], "x": 138, "y": 48, "flags": 4}, + {"matrix": [8, 2], "x": 152, "y": 48, "flags": 4}, + {"matrix": [8, 3], "x": 165, "y": 48, "flags": 4}, + {"matrix": [8, 4], "x": 179, "y": 48, "flags": 4}, + {"matrix": [8, 5], "x": 198, "y": 48, "flags": 4}, + {"matrix": [8, 7], "x": 217, "y": 48, "flags": 4}, + {"matrix": [9, 7], "x": 215, "y": 64, "flags": 4}, + {"matrix": [9, 5], "x": 198, "y": 64, "flags": 4}, + {"matrix": [9, 4], "x": 181, "y": 64, "flags": 4}, + {"matrix": [9, 3], "x": 164, "y": 64, "flags": 4}, + {"matrix": [9, 1], "x": 145, "y": 64, "flags": 4}, + {"matrix": [9, 0], "x": 136, "y": 64, "flags": 4}, + {"matrix": [9, 0], "x": 126, "y": 64, "flags": 4} + ], + "max_brightness": 120, + "sleep": true, + "split_count": [36, 37] + }, + "split": { + "bootmagic": { + "matrix": [5, 8] + }, + "enabled": true, + "handedness": { + "pin": "A8" + }, + "matrix_pins": { + "right": { + "cols": ["A6", "A5", "A4", "A3", "A2", "B5", "B6", "B7"], + "rows": ["A15", "B3", "B4", "A0", "A1"] + } + }, + "serial": { + "driver": "usart" + }, + "transport": { + "sync": { + "matrix_state": true + } + } + }, + "usb": { + "device_version": "2.0.0", + "pid": "0x2358" + }, + "ws2812": { + "driver": "pwm", + "pin": "B0" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.25, "y": 0}, + {"matrix": [0, 6], "x": 6.25, "y": 0}, + {"matrix": [0, 7], "x": 7.25, "y": 0}, + {"matrix": [5, 0], "x": 9, "y": 0}, + {"matrix": [5, 1], "x": 10, "y": 0}, + {"matrix": [5, 2], "x": 11, "y": 0}, + {"matrix": [5, 3], "x": 12, "y": 0}, + {"matrix": [5, 4], "x": 13, "y": 0}, + {"matrix": [5, 5], "x": 14, "y": 0}, + {"matrix": [5, 6], "x": 15, "y": 0}, + {"matrix": [5, 7], "x": 16, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 2], "x": 1.75, "y": 1, "w": 1.5}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [6, 0], "x": 9, "y": 1}, + {"matrix": [6, 1], "x": 10, "y": 1}, + {"matrix": [6, 2], "x": 11, "y": 1}, + {"matrix": [6, 3], "x": 12, "y": 1}, + {"matrix": [6, 4], "x": 13, "y": 1}, + {"matrix": [6, 5], "x": 14, "y": 1}, + {"matrix": [6, 6], "x": 15, "y": 1}, + {"matrix": [6, 7], "x": 16, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 2], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 3], "x": 3.25, "y": 2}, + {"matrix": [2, 4], "x": 4.25, "y": 2}, + {"matrix": [2, 5], "x": 5.25, "y": 2}, + {"matrix": [2, 6], "x": 6.25, "y": 2}, + {"matrix": [2, 7], "x": 7.25, "y": 2}, + {"matrix": [7, 0], "x": 9, "y": 2}, + {"matrix": [7, 1], "x": 10, "y": 2}, + {"matrix": [7, 2], "x": 11, "y": 2}, + {"matrix": [7, 3], "x": 12, "y": 2}, + {"matrix": [7, 4], "x": 13, "y": 2}, + {"matrix": [7, 5], "x": 14, "y": 2}, + {"matrix": [7, 7], "x": 15, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 2], "x": 1, "y": 3, "w": 2.25}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [8, 0], "x": 9, "y": 3}, + {"matrix": [8, 1], "x": 10, "y": 3}, + {"matrix": [8, 2], "x": 11, "y": 3}, + {"matrix": [8, 3], "x": 12, "y": 3}, + {"matrix": [8, 4], "x": 13, "y": 3}, + {"matrix": [8, 5], "x": 14, "y": 3, "w": 1.75}, + {"matrix": [8, 7], "x": 15.75, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 2], "x": 1.5, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.75, "y": 4, "w": 1.25}, + {"matrix": [4, 4], "x": 4, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4}, + {"matrix": [4, 6], "x": 6.25, "y": 4}, + {"matrix": [4, 7], "x": 7.25, "y": 4}, + {"matrix": [9, 0], "x": 9, "y": 4, "w": 1.25}, + {"matrix": [9, 1], "x": 10.25, "y": 4, "w": 1.5}, + {"matrix": [9, 3], "x": 11.75, "y": 4, "w": 1.25}, + {"matrix": [9, 4], "x": 13, "y": 4, "w": 1.25}, + {"matrix": [9, 5], "x": 14.25, "y": 4, "w": 1.25}, + {"matrix": [9, 7], "x": 15.5, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/keebio/foldkb/rev2/keymaps/default/keymap.c b/keyboards/keebio/foldkb/rev2/keymaps/default/keymap.c new file mode 100644 index 0000000000..bf3f325446 --- /dev/null +++ b/keyboards/keebio/foldkb/rev2/keymaps/default/keymap.c @@ -0,0 +1,21 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_MUTE, KC_ESC, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_END, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_PGUP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_PGDN, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL + ), + [1] = LAYOUT( + KC_MUTE, QK_BOOT, KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, KC_DEL, + RM_TOGG, _______, RM_SATD, RM_SATU, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, + RM_NEXT, _______, RM_VALD, RM_VALU, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, + KC_VOLU, _______, RM_HUED, RM_HUEU, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, _______, + KC_VOLD, _______, RM_SPDD, RM_SPDU, _______, _______, _______, _______, KC_0, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/keebio/foldkb/rev2/mcuconf.h b/keyboards/keebio/foldkb/rev2/mcuconf.h new file mode 100644 index 0000000000..77847f5b2c --- /dev/null +++ b/keyboards/keebio/foldkb/rev2/mcuconf.h @@ -0,0 +1,14 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +/* enable USART1, used for split comms */ +#undef STM32_SERIAL_USE_USART1 +#define STM32_SERIAL_USE_USART1 TRUE + +/* enable TIM3, used for RGB LED PWM driver */ +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/keebio/foldkb/rev2/rev2.c b/keyboards/keebio/foldkb/rev2/rev2.c new file mode 100644 index 0000000000..0fc47b1483 --- /dev/null +++ b/keyboards/keebio/foldkb/rev2/rev2.c @@ -0,0 +1,29 @@ +// Copyright 2025 Keebio (@keebio) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +void keyboard_pre_init_kb(void) { + // Disable the PD peripheral in pre-init because its pins are being used in the matrix: + PWR->CR3 |= PWR_CR3_UCPD_DBDIS; + // Call the corresponding _user() function (see https://docs.qmk.fm/#/custom_quantum_functions) + keyboard_pre_init_user(); +} + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + return false; +} From 082b69db912b106d2c55321671d67704ec9f44b7 Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 7 Oct 2025 03:27:31 +1100 Subject: [PATCH 136/167] Fix Slovak and Lithuanian (QWERTY) sendstring LUTs (#25703) --- quantum/keymap_extras/sendstring_lithuanian_qwerty.h | 6 +++--- quantum/keymap_extras/sendstring_slovak.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/quantum/keymap_extras/sendstring_lithuanian_qwerty.h b/quantum/keymap_extras/sendstring_lithuanian_qwerty.h index 676930e9d3..0c0bdc6a98 100644 --- a/quantum/keymap_extras/sendstring_lithuanian_qwerty.h +++ b/quantum/keymap_extras/sendstring_lithuanian_qwerty.h @@ -54,13 +54,13 @@ const uint8_t ascii_to_keycode_lut[128] PROGMEM = { XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, // ! " # $ % & ' - KC_SPC, LT_1, LT_QUOT, LT_3, LT_4, LT_5, LT_7, LT_QUOT, + KC_SPC, LT_AOGO, LT_QUOT, LT_EOGO, LT_EDOT, LT_IOGO, LT_UOGO, LT_QUOT, // ( ) * + , - . / - LT_9, LT_0, LT_8, LT_ZCAR, LT_COMM, LT_MINS, LT_DOT, LT_SLSH, + LT_9, LT_0, LT_UMAC, LT_ZCAR, LT_COMM, LT_MINS, LT_DOT, LT_SLSH, // 0 1 2 3 4 5 6 7 LT_0, LT_AOGO, LT_CCAR, LT_EOGO, LT_EDOT, LT_IOGO, LT_SCAR, LT_UOGO, // 8 9 : ; < = > ? - LT_UMAC, LT_9, LT_SCLN, LT_SCLN, LT_COMM, LT_PLUS, LT_DOT, LT_SLSH, + LT_UMAC, LT_9, LT_SCLN, LT_SCLN, LT_COMM, LT_ZCAR, LT_DOT, LT_SLSH, // @ A B C D E F G LT_CCAR, LT_A, LT_B, LT_C, LT_D, LT_E, LT_F, LT_G, // H I J K L M N O diff --git a/quantum/keymap_extras/sendstring_slovak.h b/quantum/keymap_extras/sendstring_slovak.h index a908773969..a2a545e412 100644 --- a/quantum/keymap_extras/sendstring_slovak.h +++ b/quantum/keymap_extras/sendstring_slovak.h @@ -108,13 +108,13 @@ const uint8_t ascii_to_keycode_lut[128] PROGMEM = { // P Q R S T U V W SK_P, SK_Q, SK_R, SK_S, SK_T, SK_U, SK_V, SK_W, // X Y Z [ \ ] ^ _ - SK_X, SK_Y, SK_Z, SK_F, SK_Q, SK_G, SK_3, SK_MINS, + SK_X, SK_Y, SK_Z, SK_F, SK_Q, SK_G, SK_SCAR, SK_MINS, // ` a b c d e f g - SK_7, SK_A, SK_B, SK_C, SK_D, SK_E, SK_F, SK_G, + SK_YACU, SK_A, SK_B, SK_C, SK_D, SK_E, SK_F, SK_G, // h i j k l m n o SK_H, SK_I, SK_J, SK_K, SK_L, SK_M, SK_N, SK_O, // p q r s t u v w SK_P, SK_Q, SK_R, SK_S, SK_T, SK_U, SK_V, SK_W, // x y z { | } ~ DEL - SK_X, SK_Y, SK_Z, SK_B, SK_W, SK_N, SK_1, KC_DEL + SK_X, SK_Y, SK_Z, SK_B, SK_W, SK_N, SK_PLUS, KC_DEL }; From fd6108371047bc02face67526e92b126715d67de Mon Sep 17 00:00:00 2001 From: TreasureTypes <73436366+TreasureTypes@users.noreply.github.com> Date: Mon, 6 Oct 2025 18:30:08 +0200 Subject: [PATCH 137/167] Add Keyboard Treasure TYPE-30 (#25688) --- .../treasure/type30/hotswap/keyboard.json | 121 ++++++++++++++++++ .../type30/hotswap/keymaps/default/keymap.c | 19 +++ keyboards/treasure/type30/hotswap/readme.md | 23 ++++ 3 files changed, 163 insertions(+) create mode 100644 keyboards/treasure/type30/hotswap/keyboard.json create mode 100644 keyboards/treasure/type30/hotswap/keymaps/default/keymap.c create mode 100644 keyboards/treasure/type30/hotswap/readme.md diff --git a/keyboards/treasure/type30/hotswap/keyboard.json b/keyboards/treasure/type30/hotswap/keyboard.json new file mode 100644 index 0000000000..54b7c6d6a7 --- /dev/null +++ b/keyboards/treasure/type30/hotswap/keyboard.json @@ -0,0 +1,121 @@ +{ + "manufacturer": "TREASURE", + "keyboard_name": "TYPE30", + "maintainer": "TREASURE", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "nkro": true, + "rgb_matrix": true + }, + + "matrix_pins": { + "cols": ["B5", "B6", "B7", "C7", "C6", "C4", "D4", "D5", "D6", "B0", "B1", "B2"], + "rows": ["D2", "C5", "B3"] + }, + "processor": "atmega32u2", + "rgb_matrix": { + "animations": { + "gradient_up_down": true, + "gradient_left_right": true + }, + "driver": "ws2812", + "default": { + "speed": 40, + "animation": "gradient_left_right" + }, + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0, "flags": 4 }, + { "matrix": [0, 1], "x": 20, "y": 0, "flags": 4 }, + { "matrix": [0, 2], "x": 40, "y": 0, "flags": 4 }, + { "matrix": [0, 3], "x": 60, "y": 0, "flags": 4 }, + { "matrix": [0, 4], "x": 80, "y": 0, "flags": 4 }, + { "matrix": [0, 5], "x": 100, "y": 0, "flags": 4 }, + { "matrix": [0, 6], "x": 120, "y": 0, "flags": 4 }, + { "matrix": [0, 7], "x": 140, "y": 0, "flags": 4 }, + { "matrix": [0, 8], "x": 160, "y": 0, "flags": 4 }, + { "matrix": [0, 9], "x": 180, "y": 0, "flags": 4 }, + { "matrix": [0,10], "x": 200, "y": 0, "flags": 4 }, + { "matrix": [0,11], "x": 220, "y": 0, "flags": 4 }, + { "matrix": [1, 0], "x": 0, "y": 32, "flags": 4 }, + { "matrix": [1, 1], "x": 20, "y": 32, "flags": 4 }, + { "matrix": [1, 2], "x": 40, "y": 32, "flags": 4 }, + { "matrix": [1, 3], "x": 60, "y": 32, "flags": 4 }, + { "matrix": [1, 4], "x": 80, "y": 32, "flags": 4 }, + { "matrix": [1, 5], "x": 100, "y": 32, "flags": 4 }, + { "matrix": [1, 6], "x": 120, "y": 32, "flags": 4 }, + { "matrix": [1, 7], "x": 140, "y": 32, "flags": 4 }, + { "matrix": [1, 8], "x": 160, "y": 32, "flags": 4 }, + { "matrix": [1, 9], "x": 180, "y": 32, "flags": 4 }, + { "matrix": [1,10], "x": 200, "y": 32, "flags": 4 }, + { "matrix": [1,11], "x": 220, "y": 32, "flags": 4 }, + { "matrix": [2, 0], "x": 0, "y": 64, "flags": 4 }, + { "matrix": [2, 1], "x": 20, "y": 64, "flags": 4 }, + { "matrix": [2, 2], "x": 40, "y": 64, "flags": 4 }, + { "matrix": [2, 3], "x": 60, "y": 64, "flags": 4 }, + { "matrix": [2, 4], "x": 80, "y": 64, "flags": 4 }, + { "matrix": [2, 5], "x": 100, "y": 64, "flags": 4 }, + { "matrix": [2, 6], "x": 120, "y": 64, "flags": 4 }, + { "matrix": [2, 7], "x": 140, "y": 64, "flags": 4 }, + { "matrix": [2, 8], "x": 160, "y": 64, "flags": 4 }, + { "matrix": [2, 9], "x": 180, "y": 64, "flags": 4 }, + { "matrix": [2,10], "x": 200, "y": 64, "flags": 4 }, + { "matrix": [2,11], "x": 220, "y": 64, "flags": 4 } + ], + "max_brightness": 180, + "sleep": true + }, + "url": "http://treasuretypes.com", + "usb": { + "device_version": "1.0.1", + "pid": "0x3330", + "vid": "0x5452" + }, + "ws2812": { + "pin": "B4" + }, + "layouts": { + "LAYOUT_ortho_3x12": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [2, 11], "x": 11, "y": 2} + ] + } + } +} diff --git a/keyboards/treasure/type30/hotswap/keymaps/default/keymap.c b/keyboards/treasure/type30/hotswap/keymaps/default/keymap.c new file mode 100644 index 0000000000..24ae38af89 --- /dev/null +++ b/keyboards/treasure/type30/hotswap/keymaps/default/keymap.c @@ -0,0 +1,19 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // Base + [0] = LAYOUT_ortho_3x12( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MO(1), KC_SPC, + KC_LCTL, KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_RGUI, KC_UP, KC_DOWN + ), + // Fn + [1] = LAYOUT_ortho_3x12( + KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, S(KC_EQL), KC_MINS, KC_SLSH, KC_PAST, KC_LBRC, KC_RBRC, KC_BSLS, KC_SCLN, KC_QUOT, _______, KC_ENT, + _______, _______, KC_EQL, RM_TOGG, RM_HUEU, RM_NEXT, KC_GRV, KC_COMM, KC_DOT, _______, KC_LEFT, KC_RIGHT + ) +}; diff --git a/keyboards/treasure/type30/hotswap/readme.md b/keyboards/treasure/type30/hotswap/readme.md new file mode 100644 index 0000000000..33b95d5495 --- /dev/null +++ b/keyboards/treasure/type30/hotswap/readme.md @@ -0,0 +1,23 @@ +# Treasure TYPE-30 + +* Keyboard Maintainer: [Treasure](https://www,treasuretypes.com) +* Hardware Supported: Treasure TYPE-30 Hotswap PCB +* Hardware Availability: [Treasure Store](http://treasuretypes.com) + +Make example for this keyboard (after setting up your build environment): + + make treasure/type30/hotswap:default + +Flashing example for this keyboard: + + make treasure/type30/hotswap:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From b9078609b649ff40f725233d628d2854977366f2 Mon Sep 17 00:00:00 2001 From: jacksaxi Date: Mon, 6 Oct 2025 19:44:26 +0300 Subject: [PATCH 138/167] Add Printronics Mectechpad (#25365) --- keyboards/mectechpad/config.h | 11 +++++ keyboards/mectechpad/keyboard.json | 40 +++++++++++++++++++ keyboards/mectechpad/keymaps/default/keymap.c | 37 +++++++++++++++++ keyboards/mectechpad/mectechpad.c | 25 ++++++++++++ keyboards/mectechpad/readme.md | 25 ++++++++++++ 5 files changed, 138 insertions(+) create mode 100644 keyboards/mectechpad/config.h create mode 100644 keyboards/mectechpad/keyboard.json create mode 100644 keyboards/mectechpad/keymaps/default/keymap.c create mode 100644 keyboards/mectechpad/mectechpad.c create mode 100644 keyboards/mectechpad/readme.md diff --git a/keyboards/mectechpad/config.h b/keyboards/mectechpad/config.h new file mode 100644 index 0000000000..283902350e --- /dev/null +++ b/keyboards/mectechpad/config.h @@ -0,0 +1,11 @@ +// Copyright 2025 Jack Sachinidhs (@jacksaxi) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once +/* LED pin definitions */ +#define LED_PIN_LAYER_0 GP12 +#define LED_PIN_LAYER_1 GP11 +#define LED_PIN_LAYER_2 GP10 +#define LED_PIN_LAYER_3 GP9 + +/* matrix mask for direct pin switch */ +#define MATRIX_MASKED diff --git a/keyboards/mectechpad/keyboard.json b/keyboards/mectechpad/keyboard.json new file mode 100644 index 0000000000..93c1fbaefc --- /dev/null +++ b/keyboards/mectechpad/keyboard.json @@ -0,0 +1,40 @@ +{ + "manufacturer": "Printronics", + "keyboard_name": "Mectechpad", + "maintainer": "jacksaxi", + "bootloader": "rp2040", + "debounce": 15, + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "rows": ["GP13", "GP26", "GP15", "GP14"], + "cols": ["GP29", "GP28", "GP27"] + }, + "processor": "RP2040", + "url": "printronics.gr", + "usb": { + "device_version": "1.0.0", + "pid": "0x1A2B", + "vid": "0x3C4D" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3} + ] + } + } +} diff --git a/keyboards/mectechpad/keymaps/default/keymap.c b/keyboards/mectechpad/keymaps/default/keymap.c new file mode 100644 index 0000000000..7e19ec069f --- /dev/null +++ b/keyboards/mectechpad/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +// Copyright 2025 Jack Sachinidhs (@jacksaxi) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_LAYER0] = LAYOUT( + TO(_LAYER1), + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6, + KC_7, KC_8, KC_9 + ), + [_LAYER1] = LAYOUT( + TO(_LAYER2), + KC_Q, KC_W, KC_E, + KC_R, KC_T, KC_Y, + KC_U, KC_I, KC_O + ), + [_LAYER2] = LAYOUT( + TO(_LAYER3), + KC_A, KC_S, KC_D, + KC_F, KC_G, KC_H, + KC_J, KC_K, KC_L + ), + [_LAYER3] = LAYOUT( + TO(_LAYER0), + KC_Z, KC_X, KC_C, + KC_V, KC_B, KC_N, + KC_M, KC_COMM, KC_DOT + ) +}; diff --git a/keyboards/mectechpad/mectechpad.c b/keyboards/mectechpad/mectechpad.c new file mode 100644 index 0000000000..0aa520db1a --- /dev/null +++ b/keyboards/mectechpad/mectechpad.c @@ -0,0 +1,25 @@ +// Copyright 2025 Jack Sachinidhs (@jacksaxi) +// SPDX-License-Identifier: GPL-2.0-or-later +#include "quantum.h" + +void keyboard_post_init_kb(void) { + // Initialize LED pins + gpio_set_pin_output(LED_PIN_LAYER_0); + gpio_write_pin_low(LED_PIN_LAYER_0); + gpio_set_pin_output(LED_PIN_LAYER_1); + gpio_write_pin_low(LED_PIN_LAYER_1); + gpio_set_pin_output(LED_PIN_LAYER_2); + gpio_write_pin_low(LED_PIN_LAYER_2); + gpio_set_pin_output(LED_PIN_LAYER_3); + gpio_write_pin_low(LED_PIN_LAYER_3); + + keyboard_post_init_user(); +} + +// Update LEDs based on the current layer +void housekeeping_task_kb(void) { + gpio_write_pin(LED_PIN_LAYER_0, (get_highest_layer(layer_state) == 0)); + gpio_write_pin(LED_PIN_LAYER_1, (get_highest_layer(layer_state) == 1)); + gpio_write_pin(LED_PIN_LAYER_2, (get_highest_layer(layer_state) == 2)); + gpio_write_pin(LED_PIN_LAYER_3, (get_highest_layer(layer_state) == 3)); +} diff --git a/keyboards/mectechpad/readme.md b/keyboards/mectechpad/readme.md new file mode 100644 index 0000000000..515326baab --- /dev/null +++ b/keyboards/mectechpad/readme.md @@ -0,0 +1,25 @@ +# Mectechpad + +![Mectechpad](https://i.imgur.com/fNnLVLf.jpeg) + +* Keyboard Maintainer: [Jack Sachinidhs](https://github.com/jacksaxi) +* Hardware Supported: rp2040 +* Hardware Availability: [Printronics Website](https://printronics.gr) + +Make example for this keyboard (after setting up your build environment): + + make mectechpad:default + +Flashing example for this keyboard: + + make mectechpad: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 (the top left key) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From 7e8690eae14094b1a2fa1837eb13101bd709f967 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 7 Oct 2025 16:20:39 +1100 Subject: [PATCH 139/167] Add 'xap' branch to CI workflow and options (#25708) --- .github/workflows/ci_build_major_branch.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci_build_major_branch.yml b/.github/workflows/ci_build_major_branch.yml index 48ae71114f..c37e1377b1 100644 --- a/.github/workflows/ci_build_major_branch.yml +++ b/.github/workflows/ci_build_major_branch.yml @@ -6,13 +6,13 @@ permissions: on: push: - branches: [master, develop] + branches: [master, develop, xap] workflow_dispatch: inputs: branch: type: choice description: "Branch to build" - options: [master, develop] + options: [master, develop, xap] env: # https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits @@ -52,7 +52,7 @@ jobs: run: | target_count=$( { qmk find -km default 2>/dev/null - # qmk find -km xap 2>/dev/null + qmk find -km xap 2>/dev/null } | sort | uniq | wc -l) slice_length=$((target_count / ($CONCURRENT_JOBS - 1))) # Err on the side of caution echo "slice_length=$slice_length" >> $GITHUB_OUTPUT @@ -63,8 +63,7 @@ jobs: strategy: fail-fast: false matrix: - keymap: [default] - # keymap: [default, xap] + keymap: [default, xap] uses: ./.github/workflows/ci_build_major_branch_keymap.yml with: branch: ${{ inputs.branch || github.ref_name }} From 4eee8c1023bccd1e4147f523de10767eddc17884 Mon Sep 17 00:00:00 2001 From: ascYAOBT <53766398+ascYAOBT@users.noreply.github.com> Date: Tue, 7 Oct 2025 21:16:01 -0400 Subject: [PATCH 140/167] Add hnk65 (#25366) --- keyboards/hnk/hnk65/keyboard.json | 216 +++++++++++++++++++ keyboards/hnk/hnk65/keymaps/default/keymap.c | 54 +++++ keyboards/hnk/hnk65/readme.md | 25 +++ 3 files changed, 295 insertions(+) create mode 100644 keyboards/hnk/hnk65/keyboard.json create mode 100644 keyboards/hnk/hnk65/keymaps/default/keymap.c create mode 100644 keyboards/hnk/hnk65/readme.md diff --git a/keyboards/hnk/hnk65/keyboard.json b/keyboards/hnk/hnk65/keyboard.json new file mode 100644 index 0000000000..a72ff783ba --- /dev/null +++ b/keyboards/hnk/hnk65/keyboard.json @@ -0,0 +1,216 @@ +{ + "manufacturer": "hnkbd", + "keyboard_name": "hnk65", + "maintainer": "ascYAOBT", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["F4", "F5", "F1", "F0", "B7", "F6", "F7", "D0", "D1", "D2", "D3", "D5", "D4", "D6", "D7"], + "rows": ["C7", "C6", "B6", "B5", "B4"] + }, + "processor": "atmega32u4", + "rgb_matrix": { + "animations": { + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_rain": true, + "pixel_flow": true, + "typing_heatmap":true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_reactive_cross": true, + "splash": true + }, + "brightness_steps": 20, + "default": { + "val": 120, + "animation": "solid_color" + }, + "driver": "ws2812", + "hue_steps": 22, + "layout": [ + {"matrix": [0, 14], "x": 210, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 189, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 168, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 154, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 140, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 126, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 112, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 98, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 84, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 70, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 56, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 42, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 28, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 14, "y": 0, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 21, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 35, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 49, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 63, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 77, "y": 16, "flags": 4}, + {"matrix": [1, 6], "x": 91, "y": 16, "flags": 4}, + {"matrix": [1, 7], "x": 105, "y": 16, "flags": 4}, + {"matrix": [1, 8], "x": 119, "y": 16, "flags": 4}, + {"matrix": [1, 9], "x": 133, "y": 16, "flags": 4}, + {"matrix": [1, 10], "x": 147, "y": 16, "flags": 4}, + {"matrix": [1, 11], "x": 161, "y": 16, "flags": 4}, + {"matrix": [1, 12], "x": 175, "y": 16, "flags": 4}, + {"matrix": [1, 13], "x": 185, "y": 16, "flags": 4}, + {"matrix": [1, 14], "x": 210, "y": 16, "flags": 4}, + {"matrix": [2, 14], "x": 210, "y": 32, "flags": 4}, + {"matrix": [2, 13], "x": 196, "y": 32, "flags": 4}, + {"matrix": [2, 11], "x": 161, "y": 32, "flags": 4}, + {"matrix": [2, 10], "x": 147, "y": 32, "flags": 4}, + {"matrix": [2, 9], "x": 133, "y": 32, "flags": 4}, + {"matrix": [2, 8], "x": 119, "y": 32, "flags": 4}, + {"matrix": [2, 7], "x": 105, "y": 32, "flags": 4}, + {"matrix": [2, 6], "x": 91, "y": 32, "flags": 4}, + {"matrix": [2, 5], "x": 77, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 63, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 49, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 35, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 21, "y": 32, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 48, "flags": 4}, + {"matrix": [3, 1], "x": 32, "y": 48, "flags": 4}, + {"matrix": [3, 2], "x": 46, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 60, "y": 48, "flags": 4}, + {"matrix": [3, 4], "x": 74, "y": 48, "flags": 4}, + {"matrix": [3, 5], "x": 88, "y": 48, "flags": 4}, + {"matrix": [3, 6], "x": 104, "y": 48, "flags": 4}, + {"matrix": [3, 7], "x": 118, "y": 48, "flags": 4}, + {"matrix": [3, 8], "x": 132, "y": 48, "flags": 4}, + {"matrix": [3, 9], "x": 146, "y": 48, "flags": 4}, + {"matrix": [3, 10], "x": 160, "y": 48, "flags": 4}, + {"matrix": [3, 11], "x": 173, "y": 48, "flags": 4}, + {"matrix": [3, 13], "x": 196, "y": 48, "flags": 4}, + {"matrix": [3, 14], "x": 210, "y": 48, "flags": 4}, + {"matrix": [4, 14], "x": 210, "y": 64, "flags": 4}, + {"matrix": [4, 13], "x": 196, "y": 64, "flags": 4}, + {"matrix": [4, 11], "x": 182, "y": 64, "flags": 4}, + {"matrix": [4, 10], "x": 168, "y": 64, "flags": 4}, + {"matrix": [4, 9], "x": 154, "y": 64, "flags": 4}, + {"matrix": [4, 8], "x": 140, "y": 64, "flags": 4}, + {"matrix": [4, 5], "x": 105, "y": 64, "flags": 4}, + {"matrix": [4, 2], "x": 39, "y": 64, "flags": 4}, + {"matrix": [4, 1], "x": 21, "y": 64, "flags": 4}, + {"matrix": [4, 0], "x": 4, "y": 64, "flags": 4} + ], + "max_brightness": 170, + "saturation_steps": 22, + "sleep": true + }, + "url": "https://hnkbd.ca/", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x484E" + }, + "ws2812": { + "pin": "B2" + }, + "community_layouts": ["65_ansi"], + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 15, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 8], "x": 10, "y": 4}, + {"matrix": [4, 9], "x": 11, "y": 4}, + {"matrix": [4, 10], "x": 12, "y": 4}, + {"matrix": [4, 11], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/hnk/hnk65/keymaps/default/keymap.c b/keyboards/hnk/hnk65/keymaps/default/keymap.c new file mode 100644 index 0000000000..efe7cc03fe --- /dev/null +++ b/keyboards/hnk/hnk65/keymaps/default/keymap.c @@ -0,0 +1,54 @@ +// Copyright 2023 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│Home│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgUp│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼────┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgDn│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼────┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼────┤ + * │Ctrl│GUI │Alt │ │Alt│ Fn│Ctl│ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴────┘ + */ + + + [0] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_RCTL, KC_LEFT,KC_DOWN, KC_RGHT + ), + + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────┬───┬──────────┬────┐ + * │Grv│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11 │F12│ Ins │Del │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬─┴─┬─┴─┬────────┼────┤ + * │ │ │Vl+│ │ │ │ │SrL│ │ 7 │ 8 │ 9 │ \ │ SATU │HUEU│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┴┬──┴┬──┴────────┼────┤ + * │ │Mut│Vl-│Pau│ │ │ │ │ │ 4 │ 5 │ 6 │ SATD │HUED│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬─┴─┬─┴──────┬────┼────┤ + * │ │ | │ │ │ │ │ │ │ │ 1 │ 2 │ 3 │VALU│TOGG│ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┬┴──┬┴───┬────┼────┼────┤ + * │ │ │ │ PScr │SPDD│ │SPDU│PREV│VALD│NEXT│ + * └────┴────┴────┴────────────────────────┴────┴───┴────┴────┴────┴────┘ + */ + + + [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_INS, KC_DEL, + _______, _______, KC_VOLU, _______, _______, _______, _______, KC_SCRL, _______, KC_7, KC_8, KC_9, KC_BSLS, RM_SATU, RM_HUEU, + _______, KC_MUTE, KC_VOLD, KC_PAUS, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, RM_SATD, RM_HUED, + _______, KC_PIPE, _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, RM_VALU, RM_TOGG, + _______, _______, _______, KC_PSCR, RM_SPDD, _______, RM_SPDU, RM_PREV, RM_VALD, RM_NEXT + ) +}; diff --git a/keyboards/hnk/hnk65/readme.md b/keyboards/hnk/hnk65/readme.md new file mode 100644 index 0000000000..e77dd86d1f --- /dev/null +++ b/keyboards/hnk/hnk65/readme.md @@ -0,0 +1,25 @@ +# hnk65 + +Our Hide Nothing Keyboard version of the traditional 65%, with or without RGB support. For more information visit https://hnkbd.ca + +* Keyboard Maintainer: [hnkbd](https://github.com/ascYAOBT) +* Hardware Supported: hnk65, either with or without per key RGB LED +* Hardware Availability: https://hnkbd.ca + +Make example for this keyboard (after setting up your build environment): + + make hnk/hnk65:default + +Flashing example for this keyboard: + + make hnk/hnk65: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 while plugged in and with QMK Toolbox opened. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From 911232abfcbceb38866fb4e1654d3ef644a498a1 Mon Sep 17 00:00:00 2001 From: Enoch Date: Tue, 7 Oct 2025 18:16:30 -0700 Subject: [PATCH 141/167] add dropout keyboard (#25645) --- keyboards/enochchau/dropout/dropout.c | 33 ++++++++++ keyboards/enochchau/dropout/keyboard.json | 60 +++++++++++++++++++ .../dropout/keymaps/default/keymap.c | 35 +++++++++++ .../dropout/keymaps/default/rules.mk | 1 + keyboards/enochchau/dropout/readme.md | 27 +++++++++ 5 files changed, 156 insertions(+) create mode 100644 keyboards/enochchau/dropout/dropout.c create mode 100644 keyboards/enochchau/dropout/keyboard.json create mode 100644 keyboards/enochchau/dropout/keymaps/default/keymap.c create mode 100644 keyboards/enochchau/dropout/keymaps/default/rules.mk create mode 100644 keyboards/enochchau/dropout/readme.md diff --git a/keyboards/enochchau/dropout/dropout.c b/keyboards/enochchau/dropout/dropout.c new file mode 100644 index 0000000000..bef939fed1 --- /dev/null +++ b/keyboards/enochchau/dropout/dropout.c @@ -0,0 +1,33 @@ +// Copyright 2025 Enoch Chau +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +// Mimic handle_backlight_caps_lock to use num lock indicator for backlight +void handle_backlight_num_lock(led_t led_state) { + // Use backlight as num_lock indicator + uint8_t bl_toggle_lvl = 0; + bool backlight_enabled = is_backlight_enabled(); + + if (led_state.num_lock && !backlight_enabled) { + // Turning num_lock ON and backlight is disabled in config + // Toggling backlight to the brightest level + bl_toggle_lvl = BACKLIGHT_LEVELS; + } else if (!led_state.num_lock && backlight_enabled) { + // Turning num_lock OFF and backlight is enabled in config + // Toggling backlight and restoring config level + bl_toggle_lvl = get_backlight_level(); + } + + backlight_set(bl_toggle_lvl); +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if (res) { +#ifdef BACKLIGHT_ENABLE + handle_backlight_num_lock(led_state); +#endif + } + return res; +} diff --git a/keyboards/enochchau/dropout/keyboard.json b/keyboards/enochchau/dropout/keyboard.json new file mode 100644 index 0000000000..f928181ef6 --- /dev/null +++ b/keyboards/enochchau/dropout/keyboard.json @@ -0,0 +1,60 @@ +{ + "manufacturer": "enochchau", + "keyboard_name": "dropout", + "maintainer": "enochchau", + "backlight": { + "levels": 6, + "on_state": 0, + "pin": "B6" + }, + "development_board": "promicro", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "D0", "pin_b": "D4"} + ] + }, + "features": { + "backlight": true, + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["B3", "B1", "D7", "C6"], + "rows": ["D1", "B2", "E6", "B4", "B5"] + }, + "tags": ["numpad"], + "url": "https://github.com/enochchau/dropout-numpad", + "usb": { + "device_version": "0.0.1", + "pid": "0x2800", + "vid": "0x9650" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "Num Lock", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "/", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "*", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "Play", "matrix": [0, 3], "x": 3, "y": 0, "encoder": 0}, + {"label": "7", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "8", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "9", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "-", "matrix": [1, 3], "x": 3, "y": 1}, + {"label": "4", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "5", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "6", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "+", "matrix": [2, 3], "x": 3, "y": 2}, + {"label": "1", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "2", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "3", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "Enter", "matrix": [3, 3], "x": 3, "y": 3, "h": 2}, + {"label": "0", "matrix": [4, 0], "x": 0, "y": 4, "w": 2}, + {"label": ".", "matrix": [4, 2], "x": 2, "y": 4} + ] + } + } +} diff --git a/keyboards/enochchau/dropout/keymaps/default/keymap.c b/keyboards/enochchau/dropout/keymaps/default/keymap.c new file mode 100644 index 0000000000..15d954987e --- /dev/null +++ b/keyboards/enochchau/dropout/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +// Copyright 2025 Enoch Chau +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _LIGHT +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT( + LT(1, KC_NUM), KC_PSLS, KC_PAST, KC_MPLY, + KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT + ), + + [_LIGHT] = LAYOUT( + _______, _______, _______, _______, + _______, BL_UP, BL_DOWN, BL_TOGG, + _______, _______, _______, _______, + _______, _______, _______, QK_BOOT, + _______, _______ + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = {ENCODER_CCW_CW(KC_VOLU, KC_VOLD)}, + [_LIGHT] = {ENCODER_CCW_CW(_______, _______)} +}; +#endif diff --git a/keyboards/enochchau/dropout/keymaps/default/rules.mk b/keyboards/enochchau/dropout/keymaps/default/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/enochchau/dropout/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/enochchau/dropout/readme.md b/keyboards/enochchau/dropout/readme.md new file mode 100644 index 0000000000..8d595e8606 --- /dev/null +++ b/keyboards/enochchau/dropout/readme.md @@ -0,0 +1,27 @@ +# dropout + +![dropout](https://i.imgur.com/VTjdJ4e.jpeg) + +A numpad with a rotary encoder. + +* Keyboard Maintainer: [Enoch Chau](https://github.com/enochchau) +* Hardware Supported: PCB w/ Pro Micro compatible development board +* Hardware Availability: [Github](https://github.com/enochchau/dropout-numpad) + +Make example for this keyboard (after setting up your build environment): + + make enochchau/dropout:default + +Flashing example for this keyboard: + + make enochchau/dropout: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 micro-controller +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From 338a7ed6d50465daf93f613da7e783ac00163096 Mon Sep 17 00:00:00 2001 From: Navid <147196417+navidyt@users.noreply.github.com> Date: Wed, 8 Oct 2025 05:42:47 +0330 Subject: [PATCH 142/167] Add stardustn0 (#25681) --- keyboards/stardustn0/keyboard.json | 124 ++++++++++++++++++ keyboards/stardustn0/keymaps/default/keymap.c | 51 +++++++ keyboards/stardustn0/readme.md | 25 ++++ 3 files changed, 200 insertions(+) create mode 100644 keyboards/stardustn0/keyboard.json create mode 100644 keyboards/stardustn0/keymaps/default/keymap.c create mode 100644 keyboards/stardustn0/readme.md diff --git a/keyboards/stardustn0/keyboard.json b/keyboards/stardustn0/keyboard.json new file mode 100644 index 0000000000..a13d0169a6 --- /dev/null +++ b/keyboards/stardustn0/keyboard.json @@ -0,0 +1,124 @@ +{ + "manufacturer": "Stars", + "keyboard_name": "StarDustN0", + "maintainer": "navidyt", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP8","GP11","GP19","GP18","GP17","GP16"], + "rows": ["GP3","GP9","GP13","GP14","GP15"] + }, + "processor": "RP2040", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0x4E54" + }, + + "split": { + "enabled": true, + "matrix_pins": { + "right": { + "cols": ["GP15","GP14","GP13","GP12","GP20","GP26"], + "rows": ["GP28","GP22","GP18","GP17","GP16"] + } + }, + "usb_detect": { + "timeout": 2500 + }, + "serial": { + "driver":"vendor", + "pin":"GP1" + }, + "handedness":{ + "pin":"GP2" + }, + "transport": { + "watchdog": true + } + }, + "indicators":{ + "caps_lock" : "GP25" + }, + "layouts": { + "LAYOUT_split_4x6_4": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.9}, + {"matrix": [0, 1], "x": 1, "y": 0.9}, + {"matrix": [0, 2], "x": 2, "y": 0.2}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0.2}, + {"matrix": [0, 5], "x": 5, "y": 0.4}, + + {"matrix": [5, 0], "x": 11, "y": 0.4}, + {"matrix": [5, 1], "x": 12, "y": 0.2}, + {"matrix": [5, 2], "x": 13, "y": 0}, + {"matrix": [5, 3], "x": 14, "y": 0.2}, + {"matrix": [5, 4], "x": 15, "y": 0.9}, + {"matrix": [5, 5], "x": 16, "y": 0.9}, + + + {"matrix": [1, 0], "x": 0, "y": 1.9}, + {"matrix": [1, 1], "x": 1, "y": 1.9}, + {"matrix": [1, 2], "x": 2, "y": 1.2}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1.2}, + {"matrix": [1, 5], "x": 5, "y": 1.4}, + + {"matrix": [6, 0], "x": 11, "y": 1.4}, + {"matrix": [6, 1], "x": 12, "y": 1.2}, + {"matrix": [6, 2], "x": 13, "y": 1}, + {"matrix": [6, 3], "x": 14, "y": 1.2}, + {"matrix": [6, 4], "x": 15, "y": 1.9}, + {"matrix": [6, 5], "x": 16, "y": 1.9}, + + + {"matrix": [2, 0], "x": 0, "y": 2.9}, + {"matrix": [2, 1], "x": 1, "y": 2.9}, + {"matrix": [2, 2], "x": 2, "y": 2.2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2.2}, + {"matrix": [2, 5], "x": 5, "y": 2.4}, + + {"matrix": [7, 0], "x": 11, "y": 2.4}, + {"matrix": [7, 1], "x": 12, "y": 2.2}, + {"matrix": [7, 2], "x": 13, "y": 2}, + {"matrix": [7, 3], "x": 14, "y": 2.2}, + {"matrix": [7, 4], "x": 15, "y": 2.9}, + {"matrix": [7, 5], "x": 16, "y": 2.9}, + + + {"matrix": [3, 0], "x": 0, "y": 3.9}, + {"matrix": [3, 1], "x": 1, "y": 3.9}, + {"matrix": [3, 2], "x": 2, "y": 3.2}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3.2}, + {"matrix": [3, 5], "x": 5, "y": 3.4}, + + {"matrix": [8, 0], "x": 11, "y": 3.4}, + {"matrix": [8, 1], "x": 12, "y": 3.2}, + {"matrix": [8, 2], "x": 13, "y": 3}, + {"matrix": [8, 3], "x": 14, "y": 3.2}, + {"matrix": [8, 4], "x": 15, "y": 3.9}, + {"matrix": [8, 5], "x": 16, "y": 3.9}, + + + {"matrix": [4, 2], "x": 4, "y": 3.5}, + {"matrix": [4, 3], "x": 5, "y": 3.5}, + {"matrix": [4, 4], "x": 6, "y": 3.5}, + {"matrix": [4, 5], "x": 7, "y": 3.5}, + + {"matrix": [9, 0], "x": 8, "y": 3.5}, + {"matrix": [9, 1], "x": 9, "y": 3.5}, + {"matrix": [9, 2], "x": 10, "y": 3.5}, + {"matrix": [9, 3], "x": 11, "y": 3.5} + ] + } + } +} diff --git a/keyboards/stardustn0/keymaps/default/keymap.c b/keyboards/stardustn0/keymaps/default/keymap.c new file mode 100644 index 0000000000..21547811e8 --- /dev/null +++ b/keyboards/stardustn0/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +// Copyright 2023 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 │ BSPC│ +// ├─────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼─────┤ +// │ TAB │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ BSLS│ +// ├─────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼─────┤ +// │LSFT │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │QUOT│ ENT │ +// ├─────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼─────┤ +// │LCTL │ Z │ X │ C │ V │ B │ │ N │ M │COMM│DOT │SLSH│RSFT │ +// └─────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴─────┘ +// ┌─────┬─────┬─────┬────┐ ┌─────┬─────┬─────┬─────┐ +// │ LGUI│MO(1)│ SPC │LALT│ │LEFT │DOWN │ UP │RIGHT│ +// └─────┴─────┴─────┴────┘ └─────┴─────┴─────┴─────┘ +// +// +// ┌─────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬─────┐ +// │ GRV │ F1 │ F2 │ F3 │ F4 │ F5 │ │ F6 │ F7 │ F8 │ F9 │ F10│ DEL │ +// ├─────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼─────┤ +// │CAPS │NO │NO │NO │NO │NO │ │MINS│ EQL│LBRC│RBRC│ F11│ F12 │ +// ├─────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼─────┤ +// │LSFT │NO │NO │NO │NO │NO │ │ NO │ NO │ NO │ NO │SCLN│ NO │ +// ├─────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼─────┤ +// │LCTL │NO │NO │NO │NO │NO │ │ NO │ NO │ NO │ NO │ NO │RSFT │ +// └─────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴─────┘ +// ┌────┬────┬────┬────┐ ┌────┬────┬────┬────┐ +// │ NO │ NO │ NO │LALT│ │HOME│PGDN│PGUP│ END│ +// └────┴────┴────┴────┘ └────┴────┴────┴────┘ + + + [0] = LAYOUT_split_4x6_4( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LGUI, MO(1), KC_SPC, KC_LALT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT + ), + [1] = LAYOUT_split_4x6_4( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_F11, KC_F12, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SCLN, KC_NO, + KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, + KC_NO, KC_TRNS, KC_NO, KC_LALT, KC_HOME, KC_PGDN, KC_PGUP, KC_END + ) +}; diff --git a/keyboards/stardustn0/readme.md b/keyboards/stardustn0/readme.md new file mode 100644 index 0000000000..5a658e9b48 --- /dev/null +++ b/keyboards/stardustn0/readme.md @@ -0,0 +1,25 @@ +# stardustn0 + +![stardustn0](https://i.imgur.com/9SWMHH4.jpeg) + +This project is a custom-built split ergonomic mechanical keyboard, using two Raspberry Pi Pico microcontrollers. + +* Keyboard Maintainer: [navidyt](https://github.com/navidyt) +* Hardware Supported: Raspberry Pi Pico, MX switches, Gateron hot-swap sockets, 1N4148 diodes, generic USB-C breakout board + +Make example for this keyboard (after setting up your build environment): + + make stardustn0:default + +Flashing example for this keyboard: + + make stardustn0:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the reset button on the pico while connecting USB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From a8711b2b0a59cd052419b2ae9a13355d012e12ac Mon Sep 17 00:00:00 2001 From: Thanh Son Tran <62438883+trnthsn@users.noreply.github.com> Date: Wed, 8 Oct 2025 10:41:48 +0700 Subject: [PATCH 143/167] [Keyboard] Add support Tyson65 (#25697) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Duncan Sutherland Co-authored-by: Joel Challis Co-authored-by: Trần Thanh Sơn --- keyboards/trnthsn/tyson65/config.h | 9 + keyboards/trnthsn/tyson65/halconf.h | 7 + keyboards/trnthsn/tyson65/info.json | 353 ++++++++++++++++++ .../trnthsn/tyson65/keymaps/default/keymap.c | 41 ++ keyboards/trnthsn/tyson65/mcuconf.h | 9 + keyboards/trnthsn/tyson65/readme.md | 28 ++ .../trnthsn/tyson65/stm32f072/keyboard.json | 4 + .../trnthsn/tyson65/stm32f103/keyboard.json | 4 + 8 files changed, 455 insertions(+) create mode 100644 keyboards/trnthsn/tyson65/config.h create mode 100644 keyboards/trnthsn/tyson65/halconf.h create mode 100644 keyboards/trnthsn/tyson65/info.json create mode 100644 keyboards/trnthsn/tyson65/keymaps/default/keymap.c create mode 100644 keyboards/trnthsn/tyson65/mcuconf.h create mode 100644 keyboards/trnthsn/tyson65/readme.md create mode 100644 keyboards/trnthsn/tyson65/stm32f072/keyboard.json create mode 100644 keyboards/trnthsn/tyson65/stm32f103/keyboard.json diff --git a/keyboards/trnthsn/tyson65/config.h b/keyboards/trnthsn/tyson65/config.h new file mode 100644 index 0000000000..8ab8c1a85f --- /dev/null +++ b/keyboards/trnthsn/tyson65/config.h @@ -0,0 +1,9 @@ +// Copyright 2025 Tyson.Keebs +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define WS2812_SPI_DRIVER SPID2 +#define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/trnthsn/tyson65/halconf.h b/keyboards/trnthsn/tyson65/halconf.h new file mode 100644 index 0000000000..7056539285 --- /dev/null +++ b/keyboards/trnthsn/tyson65/halconf.h @@ -0,0 +1,7 @@ +// Copyright 2025 Tyson.Keebs +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SPI TRUE +#include_next diff --git a/keyboards/trnthsn/tyson65/info.json b/keyboards/trnthsn/tyson65/info.json new file mode 100644 index 0000000000..1828c6f832 --- /dev/null +++ b/keyboards/trnthsn/tyson65/info.json @@ -0,0 +1,353 @@ +{ + "manufacturer": "Tyson.Keebs", + "keyboard_name": "Tyson65", + "maintainer": "trnthsn", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["A10", "A9", "A8", "B14", "B12", "B11", "B10", "B1", "A15", "B8", "B7", "B6", "B5", "B4", "B3"], + "rows": ["B0", "A7", "A6", "B9", "A4"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "default": { + "animation": "rainbow_swirl" + }, + "led_count": 30, + "sleep": true + }, + "ws2812": { + "pin": "B15", + "driver": "spi" + }, + "indicators": { + "caps_lock": "A5" + }, + "usb": { + "vid": "0x5453", + "pid": "0x6533", + "device_version": "0.0.1" + }, + "layout_aliases": { + "LAYOUT_all": "LAYOUT_65_ansi_blocker_tsangan_split_bs" + }, + "community_layouts": ["65_ansi_blocker_tsangan", "65_ansi_blocker_tsangan_split_bs", "65_iso_blocker_tsangan", "65_iso_blocker_tsangan_split_bs"], + "layouts": { + "LAYOUT_65_ansi_blocker_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 15, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [2, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 15, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_iso_blocker_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [2, 14], "x": 15, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 15, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_iso_blocker_tsangan_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [2, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [2, 14], "x": 15, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 15, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/trnthsn/tyson65/keymaps/default/keymap.c b/keyboards/trnthsn/tyson65/keymaps/default/keymap.c new file mode 100644 index 0000000000..b84bab6b63 --- /dev/null +++ b/keyboards/trnthsn/tyson65/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +// Copyright 2025 Tyson.Keebs +// 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│Del│ + // ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + // │ 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_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_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, UG_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, + MO(2) , _______, _______, _______, _______, _______, _______, UG_NEXT, UG_VALD, UG_VALU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/trnthsn/tyson65/mcuconf.h b/keyboards/trnthsn/tyson65/mcuconf.h new file mode 100644 index 0000000000..d131af9fdf --- /dev/null +++ b/keyboards/trnthsn/tyson65/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2025 Tyson.Keebs +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/trnthsn/tyson65/readme.md b/keyboards/trnthsn/tyson65/readme.md new file mode 100644 index 0000000000..b22bf95d18 --- /dev/null +++ b/keyboards/trnthsn/tyson65/readme.md @@ -0,0 +1,28 @@ +# Tyson65 + +![trnthsn/tyson65](https://live.staticflickr.com/65535/54831930681_bf79fb1761_c.jpg) + +A 65% keyboard PCB compatible with various keyboard cases. Supports a middle USB Type-C connector, 5 JST SH1.0 and 2 JST ZH1.25 positions for a daughter board. + +* Keyboard Maintainer: [Trnthsn](https://github.com/trnthsn) +* Hardware Supported: STM32, Tyson65 +* Hardware Availability: [ThanhSon.Mech](https://www.facebook.com/ThanhSon.mech) + +Make example for this keyboard (after setting up your build environment): + + make trnthsn/tyson65/stm32f103:default + +Flashing example for this keyboard: + + make trnthsn/tyson65/stm32f103:default:flash + + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/trnthsn/tyson65/stm32f072/keyboard.json b/keyboards/trnthsn/tyson65/stm32f072/keyboard.json new file mode 100644 index 0000000000..8bba6f5d5d --- /dev/null +++ b/keyboards/trnthsn/tyson65/stm32f072/keyboard.json @@ -0,0 +1,4 @@ +{ + "processor": "STM32F072", + "bootloader": "stm32-dfu" +} diff --git a/keyboards/trnthsn/tyson65/stm32f103/keyboard.json b/keyboards/trnthsn/tyson65/stm32f103/keyboard.json new file mode 100644 index 0000000000..4dc77604c4 --- /dev/null +++ b/keyboards/trnthsn/tyson65/stm32f103/keyboard.json @@ -0,0 +1,4 @@ +{ + "processor": "STM32F103", + "bootloader": "uf2boot" +} From 97d622651a9aca22c2af9afb22764fab04609525 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 10 Oct 2025 23:17:27 +0100 Subject: [PATCH 144/167] Align `drivers.txt` to qmk_toolbox (#25713) --- util/drivers.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/util/drivers.txt b/util/drivers.txt index e8ed7bdb0b..0490bfa4ab 100644 --- a/util/drivers.txt +++ b/util/drivers.txt @@ -5,6 +5,8 @@ # Use Windows Powershell and type [guid]::NewGuid() to generate guids winusb,STM32 Bootloader,0483,DF11,6d98a87f-4ecf-464d-89ed-8c684d857a75 winusb,APM32 Bootloader,314B,0106,9ff3cc31-6772-4a3f-a492-a80d91f7a853 +winusb,WB32 Bootloader,342D,DFA0,89b0fdf0-3d22-4408-8393-32147ba508ce +winusb,GD32V Bootloader,28E9,0189,e1421fd6-f799-4b6c-97e6-39e87d37f858 winusb,STM32duino Bootloader,1EAF,0003,746915ec-99d8-4a90-a722-3c85ba31e4fe libusbk,USBaspLoader,16C0,05DC,e69affdc-0ef0-427c-aefb-4e593c9d2724 winusb,Kiibohd DFU Bootloader,1C11,B007,aa5a3f86-b81e-4416-89ad-0c1ea1ed63af From 608bcf08fe5c0355beba644e65f3169c367e84c8 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Tue, 14 Oct 2025 07:35:22 +0100 Subject: [PATCH 145/167] Fix hhkb/jp layout order (#25722) --- keyboards/hhkb/jp/keyboard.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/hhkb/jp/keyboard.json b/keyboards/hhkb/jp/keyboard.json index db96a92a6c..69bb681edf 100644 --- a/keyboards/hhkb/jp/keyboard.json +++ b/keyboards/hhkb/jp/keyboard.json @@ -48,7 +48,6 @@ {"matrix": [14, 3], "x": 10.5, "y": 1}, {"matrix": [15, 3], "x": 11.5, "y": 1}, {"matrix": [13, 3], "x": 12.5, "y": 1}, - {"matrix": [0, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, {"matrix": [6, 6], "x": 0, "y": 2, "w": 1.75}, {"matrix": [2, 6], "x": 1.75, "y": 2}, @@ -63,6 +62,7 @@ {"matrix": [15, 6], "x": 10.75, "y": 2}, {"matrix": [13, 6], "x": 11.75, "y": 2}, {"matrix": [12, 6], "x": 12.75, "y": 2}, + {"matrix": [0, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, {"matrix": [0, 5], "x": 0, "y": 3, "w": 2}, {"matrix": [6, 5], "x": 2, "y": 3}, From 969f324de4b029574e48bfb85c3b030a41bd4d06 Mon Sep 17 00:00:00 2001 From: Rin Jun Kit Liu <30439030+DesyncTheThird@users.noreply.github.com> Date: Sat, 18 Oct 2025 11:17:57 +0100 Subject: [PATCH 146/167] [Docs] Tap-Hold examples (#24391) * Update tap_hold.md Minor grammar/punctuation changes; Added some more tap-hold examples; Added a link about home row mods to the reference near the end; Replaced directional quotation marks with symmetric variant, as this seem to be the only page using them; Standardised formatting of "tap-hold" (hyphenated is slightly more frequent in existing documentation, so I went with that), as well as "Mod-Tap"/"Layer-Tap". * Update docs/tap_hold.md Co-authored-by: Ryan * Update docs/tap_hold.md Co-authored-by: Ryan --------- Co-authored-by: Ryan --- docs/tap_hold.md | 110 +++++++++++++++++++++++++++++++---------------- 1 file changed, 72 insertions(+), 38 deletions(-) diff --git a/docs/tap_hold.md b/docs/tap_hold.md index 164be229f6..bc2c505040 100644 --- a/docs/tap_hold.md +++ b/docs/tap_hold.md @@ -1,15 +1,15 @@ # Tap-Hold Configuration Options -While Tap-Hold options are fantastic, they are not without their issues. We have tried to configure them with reasonable defaults, but that may still cause issues for some people. +While Tap-Hold options are fantastic, they are not without their issues. We have tried to configure them with reasonable defaults, but that may still cause issues for some people. -These options let you modify the behavior of the Tap-Hold keys. +These options let you modify the behavior of the tap-hold keys. ## Tapping Term -The crux of all of the following features is the tapping term setting. This determines what is a tap and what is a hold. The exact timing for this to feel natural can vary from keyboard to keyboard, from switch to switch, and from key to key. +The crux of all of the following features is the tapping term setting. This determines what is a tap and what is a hold. The exact timing for this to feel natural can vary from keyboard to keyboard, from switch to switch, and from key to key. ::: tip -`DYNAMIC_TAPPING_TERM_ENABLE` enables three special keys that can help you quickly find a comfortable tapping term for you. See "Dynamic Tapping Term" for more details. +`DYNAMIC_TAPPING_TERM_ENABLE` enables three special keys that can help you quickly find a comfortable tapping term for you. See [Dynamic Tapping Term](#dynamic-tapping-term) for more details. ::: You can set the global time for this by adding the following setting to your `config.h`: @@ -18,14 +18,14 @@ You can set the global time for this by adding the following setting to your `co #define TAPPING_TERM 200 ``` -This setting is defined in milliseconds and defaults to 200ms. This is a good average for the majority of people. +This setting is defined in milliseconds and defaults to 200ms. This is a good average for the majority of people. For more granular control of this feature, you can add the following to your `config.h`: ```c #define TAPPING_TERM_PER_KEY ``` -You can then add the following function to your keymap: +You can then add the following function to your `keymap.c` to customise the tapping term for each key: ```c uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { @@ -40,9 +40,41 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { } ``` +### Example + +You can compare keycodes to `QK_MOD_TAP`/`QK_MOD_TAP_MAX` and `QK_LAYER_TAP`/`QK_LAYER_TAP_MAX` to filter out Mod-Tap/Layer-Tap keys, rather than checking such keys manually in a switch-case. For instance, this example sets all Mod-Tap keys to have a higher tapping term, while leaving all other tap-hold keys unchanged: + +```c +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QK_MOD_TAP ... QK_MOD_TAP_MAX: + return TAPPING_TERM + 100; + default: + return TAPPING_TERM; + } +} +``` + +You can also use functions like `QK_MOD_TAP_GET_MODS`, `QK_LAYER_MOD_GET_MODS`, and `QK_ONE_SHOT_MOD_GET_MODS` to filter Mod-Tap/Layer-Mod/One Shot keys by their mods. + +For instance, this example sets a higher tapping term for `AltGr` Mod-Taps and lower tapping terms for `Shift` Mod-Taps: + +```c +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + uint8_t mod = mod_config(QK_MOD_TAP_GET_MODS(keycode)); + if (mod & MOD_LSFT != 0 || mod & MOD_RSFT != 0) { + return 100; + } + if (mod & MOD_RALT != 0) { + return TAPPING_TERM + 50; + } + return TAPPING_TERM; +} +``` + ### Dynamic Tapping Term {#dynamic-tapping-term} -`DYNAMIC_TAPPING_TERM_ENABLE` is a feature you can enable in `rules.mk` that lets you use three special keys in your keymap to configure the tapping term on the fly. +`DYNAMIC_TAPPING_TERM_ENABLE` is a feature you can enable in `rules.mk` that lets you use three special keys in your keymap to configure the tapping term on the fly: | Key | Aliases | Description | |-------------------------------|---------|-------------------------------------------------------------------------------------------| @@ -52,13 +84,13 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { Set the tapping term as usual with `#define TAPPING_TERM ` in `config.h` and add `DYNAMIC_TAPPING_TERM_ENABLE = yes` in `rules.mk`. Then, place the above three keys somewhere in your keymap and flash the new firmware onto your board. -Now, you can try using your dual-role keys, such as layer-taps and mod-taps, and use `DT_DOWN` and `DT_UP` to adjust the tapping term immediately. If you find that you frequently trigger the modifier of your mod-tap(s) by accident, for example, that's a sign that your tapping term may be too low so tap `DT_UP` a few times to increase the tapping term until that no longer happens. On the flip side, if you get superfluous characters when you actually intended to momentarily activate a layer, tap `DT_DOWN` to lower the tapping term. Do note that these keys affect the *global* tapping term, you cannot change the tapping term of a specific key on the fly. +Now, you can try using your dual-role keys such as Layer-Taps and Mod-Taps and use `DT_DOWN` and `DT_UP` to adjust the tapping term immediately. If you find that you frequently trigger the modifier of your Mod-Tap(s) by accident, for example, that's a sign that your tapping term may be too low, so tap `DT_UP` a few times to increase the tapping term until that no longer happens. Conversely, if you get superfluous characters when you actually intended to momentarily activate a layer, tap `DT_DOWN` to lower the tapping term. Do note that these keys affect the *global* tapping term, you cannot change the tapping term of a specific key on the fly. -Once you're satisfied with the current tapping term value, open `config.h` and replace whatever value you first wrote for the tapping term by the output of the `DT_PRNT` key. +Once you're satisfied with the current tapping term value, you can tap the `DT_PRNT` key to see your new tapping term, and you can replace the tapping term in `config.h` with this new value. -It's important to update `TAPPING_TERM` with the new value because the adjustments made using `DT_UP` and `DT_DOWN` are not persistent. +It's important to update `TAPPING_TERM` with the new value because the adjustments made using `DT_UP` and `DT_DOWN` are *not* persistent. -The value by which the tapping term increases or decreases when you tap `DT_UP` and `DT_DOWN` can be configured in `config.h` with `#define DYNAMIC_TAPPING_TERM_INCREMENT `. Note that the tapping term is *not* modified when holding down the tap term keys so if you need to, for example, decrease the current tapping term by 50ms, you cannot just press down and hold `DT_DOWN`; you will have to tap it 10 times in a row with the default increment of 5ms. +The value by which the tapping term increases or decreases when you tap `DT_UP` and `DT_DOWN` can be configured in `config.h` with `#define DYNAMIC_TAPPING_TERM_INCREMENT `. Note that the tapping term is *not* modified when *holding* down the tap term keys, so if you need to, for example, decrease the current tapping term by 50ms, you cannot just press down and hold `DT_DOWN`; you will have to tap it 10 times in a row with the default increment of 5ms. If you need more flexibility, nothing prevents you from defining your own custom keys to dynamically change the tapping term. @@ -97,7 +129,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { }; ``` -In order for this feature to be effective if you use per-key tapping terms, you need to make a few changes to the syntax of the `get_tapping_term` function. All you need to do is replace every occurrence of `TAPPING_TERM` in the `get_tapping_term` function by lowercase `g_tapping_term`. If you don't do that, you will still see the value typed by `DT_PRNT` go up and down as you configure the tapping term on the fly but you won't feel those changes as they don't get applied. If you can go as low as 10ms and still easily trigger the tap function of a dual-role key, that's a sign that you forgot to make the necessary changes to your `get_tapping_term` function. +In order for this feature to be effective, if you use per-key tapping terms, then you need to make a few changes to the syntax of the `get_tapping_term` function. All you need to do is replace every occurrence of `TAPPING_TERM` in the `get_tapping_term` function by lowercase `g_tapping_term`. If you don't do this, you will still see the value typed by `DT_PRNT` go up and down as you configure the tapping term on the fly, but you won't feel those changes as they don't get applied. If you can go as low as 10ms and still easily trigger the tap function of a dual-role key, that's a sign that you forgot to make the necessary changes to your `get_tapping_term` function. For instance, here's how the example `get_tapping_term` shown earlier should look after the transformation: @@ -114,23 +146,23 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { } ``` -The reason is that `TAPPING_TERM` is a macro that expands to a constant integer and thus cannot be changed at runtime whereas `g_tapping_term` is a variable whose value can be changed at runtime. If you want, you can temporarily enable `DYNAMIC_TAPPING_TERM_ENABLE` to find a suitable tapping term value and then disable that feature and revert back to using the classic syntax for per-key tapping term settings. In case you need to access the tapping term from elsewhere in your code, you can use the `GET_TAPPING_TERM(keycode, record)` macro. This macro will expand to whatever is the appropriate access pattern given the current configuration. +The reason is that `TAPPING_TERM` is a macro that expands to a constant integer and thus cannot be changed at runtime, whereas `g_tapping_term` is a variable whose value can be changed at runtime. If you want, you can temporarily enable `DYNAMIC_TAPPING_TERM_ENABLE` to find a suitable tapping term value and then disable that feature and revert back to using the classic syntax for per-key tapping term settings. In case you need to access the tapping term from elsewhere in your code, you can use the `GET_TAPPING_TERM(keycode, record)` macro. This macro will expand to whatever is the appropriate access pattern given the current configuration. ## Tap-Or-Hold Decision Modes The code which decides between the tap and hold actions of dual-role keys supports three different modes, in increasing order of preference for the hold action: -1. The default mode selects the hold action only if the dual-role key is held down longer than the tapping term. In this mode pressing other keys while the dual-role key is held down does not influence the tap-or-hold decision. In other words, this mode ignores interrupts. +1. The default mode selects the hold action only if the dual-role key is held down longer than the tapping term. In this mode, pressing other keys while the dual-role key is held down does not influence the tap-or-hold decision. In other words, this mode ignores interrupts. -2. The “permissive hold” mode, in addition to the default behavior, immediately selects the hold action when another key is tapped (pressed and then released) while the dual-role key is held down, even if this happens earlier than the tapping term. If another key is just pressed, but then the dual-role key is released before that other key (and earlier than the tapping term), this mode will still select the tap action. +2. The "permissive hold" mode, in addition to the default behavior, immediately selects the hold action when another key is tapped (pressed and then released) while the dual-role key is held down, even if this happens earlier than the tapping term. If another key is just pressed, but then the dual-role key is released before that other key (and earlier than the tapping term), this mode will still select the tap action. That is, this mode converts "nested" sequences, but not "rolls". -3. The “hold on other key press” mode, in addition to the default behavior, immediately selects the hold action when another key is pressed while the dual-role key is held down, even if this happens earlier than the tapping term. +3. The "hold on other key press" mode, in addition to the default behavior, immediately selects the hold action when another key is pressed while the dual-role key is held down, even if this happens earlier than the tapping term. Note that until the tap-or-hold decision completes (which happens when either the dual-role key is released, or the tapping term has expired, or the extra condition for the selected decision mode is satisfied), key events are delayed and not transmitted to the host immediately. The default mode gives the most delay (if the dual-role key is held down, this mode always waits for the whole tapping term), and the other modes may give less delay when other keys are pressed, because the hold action may be selected earlier. ### Comparison {#comparison} -To better illustrate the tap-or-hold decision modes, let us compare the expected output of each decision mode in a handful of tapping scenarios involving a mod-tap key (`LSFT_T(KC_A)`) and a regular key (`KC_B`) with the `TAPPING_TERM` set to 200ms. +To better illustrate the tap-or-hold decision modes, let us compare the expected output of each decision mode in a handful of tapping scenarios involving a Mod-Tap key (`LSFT_T(KC_A)`) and a regular key (`KC_B`) with the `TAPPING_TERM` set to 200ms. Note: "`kc` held" in the "Physical key event" column means that the key wasn't physically released yet at this point in time. @@ -228,7 +260,7 @@ The above sequence will not send `KC_RGHT` but `KC_A` `KC_L` instead, since `LT( --- -Example sequence 3 (Mod Tap): +Example sequence 3 (Mod-Tap): ``` TAPPING_TERM @@ -246,17 +278,17 @@ followed by any key event that happened after the initial press of `SFT_T(KC_A)` ### Permissive Hold -The “permissive hold” mode can be enabled for all dual-role keys by adding the corresponding option to `config.h`: +The "permissive hold" mode can be enabled for all dual-role keys by adding the corresponding option to `config.h`: ```c #define PERMISSIVE_HOLD ``` -This makes tap and hold keys (like Layer Tap) work better for fast typists, or for high `TAPPING_TERM` settings. +This makes tap and hold keys (like Layer-Tap) work better for fast typists, or for high `TAPPING_TERM` settings. -If you press a dual-role key, tap another key (press and release) and then release the dual-role key, all within the tapping term, by default the dual-role key will perform its tap action. If the `PERMISSIVE_HOLD` option is enabled, the dual-role key will perform its hold action instead. +If you press a dual-role key, tap another key (press and release) and then release the dual-role key, all within the tapping term, by default the dual-role key will perform its tap action. If the `PERMISSIVE_HOLD` option is enabled, the dual-role key will perform its hold action instead. -An example of a sequence that is affected by the “permissive hold” mode: +An example of a sequence that is affected by the "permissive hold" mode: - `LT(2, KC_A)` Down - `KC_L` Down (the `L` key is also mapped to `KC_RGHT` on layer 2) @@ -275,9 +307,9 @@ An example of a sequence that is affected by the “permissive hold” mode: +---------------------------|--------+ ``` -Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `PERMISSIVE_HOLD` option enabled, the Layer Tap key is considered as a layer switch if another key is tapped, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2). We could describe this sequence as a “nested tap” (the modified key's key down and key up events are “nested” between the dual-role key's key down and key up events). +Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `PERMISSIVE_HOLD` option enabled, the Layer-Tap key is considered as a layer switch if another key is tapped, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2). We could describe this sequence as a "nested tap" (the modified key's key down and key up events are "nested" between the dual-role key's key down and key up events). -However, this slightly different sequence will not be affected by the “permissive hold” mode: +However, this slightly different sequence will not be affected by the "permissive hold" mode: - `LT(2, KC_A)` Down - `KC_L` Down (the `L` key is also mapped to `KC_RGHT` on layer 2) @@ -296,10 +328,10 @@ However, this slightly different sequence will not be affected by the “permiss +---------------------------|--------+ ``` -In the sequence above the dual-role key is released before the other key is released, and if that happens within the tapping term, the “permissive hold” mode will still choose the tap action for the dual-role key, and the sequence will be registered as `al` by the host. We could describe this as a “rolling press” (the two keys' key down and key up events behave as if you were rolling a ball across the two keys, first pressing each key down in sequence and then releasing them in the same order). +In the sequence above the dual-role key is released before the other key is released, and if that happens within the tapping term, the "permissive hold" mode will still choose the tap action for the dual-role key, and the sequence will be registered as `al` by the host. We could describe this as a "rolling press" (the two keys' key down and key up events behave as if you were rolling a ball across the two keys, first pressing each key down in sequence and then releasing them in the same order). ::: tip -The `PERMISSIVE_HOLD` option is not noticeable if you also enable `HOLD_ON_OTHER_KEY_PRESS` because the latter option considers both the “nested tap” and “rolling press” sequences like shown above as a hold action, not the tap action. `HOLD_ON_OTHER_KEY_PRESS` makes the Tap-Or-Hold decision earlier in the chain of key events, thus taking a precedence over `PERMISSIVE_HOLD`. +The `PERMISSIVE_HOLD` option is not noticeable if you also enable `HOLD_ON_OTHER_KEY_PRESS` because the latter option considers both the "nested tap" and "rolling press" sequences like shown above as a hold action, not the tap action. `HOLD_ON_OTHER_KEY_PRESS` makes the tap-or-hold decision earlier in the chain of key events, thus taking a precedence over `PERMISSIVE_HOLD`. ::: For more granular control of this feature, you can add the following to your `config.h`: @@ -323,19 +355,21 @@ bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { } ``` +As in the earlier example, you can filter Mod-Tap/Layer-Mod/One Shot keys by their mods rather than checking such keys manually in a switch-case. (Also applicable to the other following `PER_KEY` functions.) + ### Hold On Other Key Press -The “hold on other key press” mode can be enabled for all dual-role keys by adding the corresponding option to `config.h`: +The "hold on other key press" mode can be enabled for all dual-role keys by adding the corresponding option to `config.h`: ```c #define HOLD_ON_OTHER_KEY_PRESS ``` -This mode makes tap and hold keys (like Layer Tap) work better for fast typists, or for high `TAPPING_TERM` settings. Compared to the “permissive hold” mode, this mode selects the hold action in more cases. +This mode makes tap and hold keys (like Layer-Tap) work better for fast typists, or for high `TAPPING_TERM` settings. Compared to the "permissive hold" mode, this mode selects the hold action in more cases. -If you press a dual-role key, press another key, and then release the dual-role key, all within the tapping term, by default the dual-role key will perform its tap action. If the `HOLD_ON_OTHER_KEY_PRESS` option is enabled, the dual-role key will perform its hold action instead. +If you press a dual-role key, press another key, and then release the dual-role key, all within the tapping term, by default the dual-role key will perform its tap action. If the `HOLD_ON_OTHER_KEY_PRESS` option is enabled, the dual-role key will perform its hold action instead. -An example of a sequence that is affected by the “hold on other key press” mode, but not by the “permissive hold” mode: +An example of a sequence that is affected by the "hold on other key press" mode, but not by the "permissive hold" mode: - `LT(2, KC_A)` Down - `KC_L` Down (the `L` key is also mapped to `KC_RGHT` on layer 2) @@ -354,7 +388,7 @@ An example of a sequence that is affected by the “hold on other key press” m +---------------------------|--------+ ``` -Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `HOLD_ON_OTHER_KEY_PRESS` option enabled, the Layer Tap key is considered as a layer switch if another key is pressed, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2). +Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `HOLD_ON_OTHER_KEY_PRESS` option enabled, the Layer-Tap key is considered as a layer switch if another key is pressed, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2). For more granular control of this feature, you can add the following to your `config.h`: @@ -394,9 +428,9 @@ Example: - `SFT_T(KC_A)` Down - (wait until tapping term expires...) -With default settings, `a` will be sent on the first release, then `a` will be sent on the second press allowing the computer to trigger its auto repeat function until the key is released. +With default settings, `a` will be sent on the first release, then `a` will be sent on the second press, allowing the computer to trigger its auto repeat function until the key is released. -With `QUICK_TAP_TERM` configured, the timing between `SFT_T(KC_A)` up and `SFT_T(KC_A)` down must be within `QUICK_TAP_TERM` to trigger auto repeat. Otherwise the second press will be sent as a Shift. If `QUICK_TAP_TERM` is set to `0`, the second press will always be sent as a Shift, effectively disabling auto-repeat. +With `QUICK_TAP_TERM` configured, the timing between `SFT_T(KC_A)` up and `SFT_T(KC_A)` down must be within `QUICK_TAP_TERM` to trigger auto-repeat. Otherwise, the second press will be sent as a Shift. If `QUICK_TAP_TERM` is set to `0`, the second press will always be sent as a Shift, effectively disabling auto-repeat. ::: warning `QUICK_TAP_TERM` timing will also impact anything that uses tapping toggles (Such as the `TT` layer keycode, and the One Shot Tap Toggle). @@ -714,10 +748,10 @@ bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) { } ``` -If the programs you use bind an action to taps of modifier keys (e.g. tapping left GUI to bring up the applications menu or tapping left Alt to focus the menu bar), you may find that using retro-tapping falsely triggers those actions. To counteract this, you can define a `DUMMY_MOD_NEUTRALIZER_KEYCODE` in `config.h` that will get sent in between the register and unregister events of a held mod-tap key. That way, the programs on your computer will no longer interpret the mod suppression induced by retro-tapping as a lone tap of a modifier key and will thus not falsely trigger the undesired action. +If the programs you use bind an action to taps of modifier keys (e.g. tapping left GUI to bring up the applications menu or tapping left Alt to focus the menu bar), you may find that using retro-tapping falsely triggers those actions. To counteract this, you can define a `DUMMY_MOD_NEUTRALIZER_KEYCODE` in `config.h` that will get sent in between the register and unregister events of a held Mod-Tap key. That way, the programs on your computer will no longer interpret the mod suppression induced by retro-tapping as a lone tap of a modifier key and will thus not falsely trigger the undesired action. Naturally, for this technique to be effective, you must choose a `DUMMY_MOD_NEUTRALIZER_KEYCODE` for which no keyboard shortcuts are bound to. Recommended values are: `KC_RIGHT_CTRL` or `KC_F18`. -Please note that `DUMMY_MOD_NEUTRALIZER_KEYCODE` must be a basic, unmodified, HID keycode so values like `KC_NO`, `KC_TRANSPARENT` or `KC_PIPE` aka `S(KC_BACKSLASH)` are not permitted. +Please note that `DUMMY_MOD_NEUTRALIZER_KEYCODE` must be a basic, unmodified, HID keycode, so values like `KC_NO`, `KC_TRANSPARENT`, or `KC_PIPE` (aka `S(KC_BACKSLASH)`) are not permitted. By default, only left Alt and left GUI are neutralized. If you want to change the list of applicable modifier masks, use the following in your `config.h`: @@ -743,14 +777,14 @@ Do not use `MOD_xxx` constants like `MOD_LSFT` or `MOD_RALT`, since they're 5-bi ### Retro Shift -[Auto Shift,](features/auto_shift) has its own version of `retro tapping` called `retro shift`. It is extremely similar to `retro tapping`, but holding the key past `AUTO_SHIFT_TIMEOUT` results in the value it sends being shifted. Other configurations also affect it differently; see [here](features/auto_shift#retro-shift) for more information. +[Auto Shift](features/auto_shift) has its own version of `retro tapping` called `retro shift`. It is extremely similar to `retro tapping`, but holding the key past `AUTO_SHIFT_TIMEOUT` results in the value it sends being shifted. Other configurations also affect it differently; see [here](features/auto_shift#retro-shift) for more information. ## Why do we include the key record for the per key functions? One thing that you may notice is that we include the key record for all of the "per key" functions, and may be wondering why we do that. -Well, it's simple really: customization. But specifically, it depends on how your keyboard is wired up. For instance, if each row is actually using a row in the keyboard's matrix, then it may be simpler to use `if (record->event.key.row == 3)` instead of checking a whole bunch of keycodes. Which is especially good for those people using the Tap Hold type keys on the home row. So you could fine-tune those to not interfere with your normal typing. +Well, it's simple really: customization. But specifically, it depends on how your keyboard is wired up. For instance, if each row is actually using a row in the keyboard's matrix, then it may be simpler to use `if (record->event.key.row == 3)` instead of checking a whole bunch of keycodes, which is especially good for those people using the tap-hold keys on the home row (see about *home row mods* [here](https://precondition.github.io/home-row-mods)). So, you could fine-tune those to not interfere with your normal typing. ## Why are there no `*_kb` or `*_user` functions?! -Unlike many of the other functions here, there isn't a need (or even reason) to have a quantum or keyboard-level function. Only user-level functions are useful here, so no need to mark them as such. +Unlike many of the other functions here, there isn't a need (or even reason) to have a quantum- or keyboard-level function. Only user-level functions are useful here, so there is no need to mark them as such. \ No newline at end of file From 1a32aa12e039ccec0c8e73d7039caf0f0e78e9b9 Mon Sep 17 00:00:00 2001 From: xenogear74 <51131374+xenogear74@users.noreply.github.com> Date: Sun, 19 Oct 2025 21:50:45 -0400 Subject: [PATCH 147/167] Fix `vertex/t75` layout coordinates (#25736) Updated the Y value for row 5. Before they were set to row 4 as well, which caused qmk configurator to overlap rows 4 and 5. --- keyboards/vertex/t75/keyboard.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/keyboards/vertex/t75/keyboard.json b/keyboards/vertex/t75/keyboard.json index f67326afb8..824659e827 100644 --- a/keyboards/vertex/t75/keyboard.json +++ b/keyboards/vertex/t75/keyboard.json @@ -103,15 +103,15 @@ {"matrix": [4, 11], "x": 12.25, "y": 4, "w": 1.75}, {"matrix": [4, 12], "x": 14, "y": 4}, {"matrix": [4, 13], "x": 15, "y": 4}, - {"matrix": [5, 0], "x": 0, "y": 4, "w": 1.25}, - {"matrix": [5, 1], "x": 1.25, "y": 4, "w": 1.25}, - {"matrix": [5, 2], "x": 2.5, "y": 4, "w": 1.25}, - {"matrix": [5, 5], "x": 3.75, "y": 4, "w": 6.25}, - {"matrix": [5, 9], "x": 10, "y": 4, "w": 1.25}, - {"matrix": [5, 10], "x": 11.25, "y": 4, "w": 1.25}, - {"matrix": [5, 11], "x": 13, "y": 4}, - {"matrix": [5, 12], "x": 14, "y": 4}, - {"matrix": [5, 13], "x": 15, "y": 4} + {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 5, "w": 1.25}, + {"matrix": [5, 10], "x": 11.25, "y": 5, "w": 1.25}, + {"matrix": [5, 11], "x": 13, "y": 5}, + {"matrix": [5, 12], "x": 14, "y": 5}, + {"matrix": [5, 13], "x": 15, "y": 5} ] } } From d0db38cbdc9410dd58e6c83d18bca2232b823d24 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Oct 2025 10:57:34 +0100 Subject: [PATCH 148/167] Bump vite from 5.4.20 to 5.4.21 in /builddefs/docsgen (#25740) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.20 to 5.4.21. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v5.4.21/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.4.21/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 5.4.21 dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- builddefs/docsgen/package.json | 2 +- builddefs/docsgen/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/builddefs/docsgen/package.json b/builddefs/docsgen/package.json index 19c80580d6..b6c56f3448 100644 --- a/builddefs/docsgen/package.json +++ b/builddefs/docsgen/package.json @@ -1,7 +1,7 @@ { "license": "GPL-2.0-or-later", "devDependencies": { - "vite": "^5.4.20", + "vite": "^5.4.21", "vitepress": "^1.1.0", "vitepress-plugin-tabs": "^0.5.0", "vue": "^3.4.24" diff --git a/builddefs/docsgen/yarn.lock b/builddefs/docsgen/yarn.lock index bc2edf6024..e5eaaa2c8f 100644 --- a/builddefs/docsgen/yarn.lock +++ b/builddefs/docsgen/yarn.lock @@ -766,10 +766,10 @@ tabbable@^6.2.0: resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== -vite@^5.2.9, vite@^5.4.20: - version "5.4.20" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.20.tgz#3267a5e03f21212f44edfd72758138e8fcecd76a" - integrity sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g== +vite@^5.2.9, vite@^5.4.21: + version "5.4.21" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.21.tgz#84a4f7c5d860b071676d39ba513c0d598fdc7027" + integrity sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw== dependencies: esbuild "^0.21.3" postcss "^8.4.43" From 1c1e8d7f7af36ae668a9a690f22e6535a48fde57 Mon Sep 17 00:00:00 2001 From: kay <106367116+kaybarkbark@users.noreply.github.com> Date: Wed, 22 Oct 2025 08:19:48 -0700 Subject: [PATCH 149/167] Fix Broken Numpad 0 on `yacobo` IBM Model M (#25742) I built three of these and was confused as to why my numpad 0 wasn't working. Eventually, I consulted this website to see the key matrix for the Model M https://sharktastica.co.uk/sims/matrix?kb=enhanced `kp_0` is in the matrix at [0, 12], not [0, 11]. Simple off by one error. I fixed this, flashed to all my keyboards, and it worked. Co-authored-by: Kay Barkbark --- keyboards/ibm/model_m/yacobo/keyboard.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/ibm/model_m/yacobo/keyboard.json b/keyboards/ibm/model_m/yacobo/keyboard.json index 7ea9c6a621..dd88ac5cd4 100644 --- a/keyboards/ibm/model_m/yacobo/keyboard.json +++ b/keyboards/ibm/model_m/yacobo/keyboard.json @@ -153,7 +153,7 @@ {"label": "\u2193", "matrix": [7, 11], "x": 16.5, "y": 5.5}, {"label": "\u2192", "matrix": [7, 12], "x": 17.5, "y": 5.5}, - {"label": "0", "matrix": [0, 11], "x": 19, "y": 5.5, "w": 2}, + {"label": "0", "matrix": [0, 12], "x": 19, "y": 5.5, "w": 2}, {"label": ".", "matrix": [0, 13], "x": 21, "y": 5.5} ] }, @@ -277,7 +277,7 @@ {"label": "\u2193", "matrix": [7, 11], "x": 16.5, "y": 5.5}, {"label": "\u2192", "matrix": [7, 12], "x": 17.5, "y": 5.5}, - {"label": "0", "matrix": [0, 11], "x": 19, "y": 5.5, "w": 2}, + {"label": "0", "matrix": [0, 12], "x": 19, "y": 5.5, "w": 2}, {"label": ".", "matrix": [0, 13], "x": 21, "y": 5.5} ] } From 7d0fc5d486f701c527ed0c3cb1d5d759a0440240 Mon Sep 17 00:00:00 2001 From: Thanh Son Tran <62438883+trnthsn@users.noreply.github.com> Date: Thu, 23 Oct 2025 07:55:33 +0700 Subject: [PATCH 150/167] [Keyboard] Add support Tyson60 (#25702) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Duncan Sutherland Co-authored-by: Joel Challis Co-authored-by: Trần Thanh Sơn --- keyboards/trnthsn/tyson60/config.h | 9 ++ keyboards/trnthsn/tyson60/halconf.h | 7 ++ keyboards/trnthsn/tyson60/info.json | 114 ++++++++++++++++++ .../trnthsn/tyson60/keymaps/default/keymap.c | 40 ++++++ keyboards/trnthsn/tyson60/mcuconf.h | 9 ++ keyboards/trnthsn/tyson60/readme.md | 27 +++++ .../trnthsn/tyson60/stm32f072/keyboard.json | 4 + .../trnthsn/tyson60/stm32f103/keyboard.json | 4 + 8 files changed, 214 insertions(+) create mode 100644 keyboards/trnthsn/tyson60/config.h create mode 100644 keyboards/trnthsn/tyson60/halconf.h create mode 100644 keyboards/trnthsn/tyson60/info.json create mode 100644 keyboards/trnthsn/tyson60/keymaps/default/keymap.c create mode 100644 keyboards/trnthsn/tyson60/mcuconf.h create mode 100644 keyboards/trnthsn/tyson60/readme.md create mode 100644 keyboards/trnthsn/tyson60/stm32f072/keyboard.json create mode 100644 keyboards/trnthsn/tyson60/stm32f103/keyboard.json diff --git a/keyboards/trnthsn/tyson60/config.h b/keyboards/trnthsn/tyson60/config.h new file mode 100644 index 0000000000..8ab8c1a85f --- /dev/null +++ b/keyboards/trnthsn/tyson60/config.h @@ -0,0 +1,9 @@ +// Copyright 2025 Tyson.Keebs +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define WS2812_SPI_DRIVER SPID2 +#define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/trnthsn/tyson60/halconf.h b/keyboards/trnthsn/tyson60/halconf.h new file mode 100644 index 0000000000..7056539285 --- /dev/null +++ b/keyboards/trnthsn/tyson60/halconf.h @@ -0,0 +1,7 @@ +// Copyright 2025 Tyson.Keebs +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SPI TRUE +#include_next diff --git a/keyboards/trnthsn/tyson60/info.json b/keyboards/trnthsn/tyson60/info.json new file mode 100644 index 0000000000..6f4df15d99 --- /dev/null +++ b/keyboards/trnthsn/tyson60/info.json @@ -0,0 +1,114 @@ +{ + "manufacturer": "Tyson.Keebs", + "keyboard_name": "Tyson60", + "maintainer": "trnthsn", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "indicators": { + "caps_lock": "B4" + }, + "matrix_pins": { + "cols": ["A10", "A9", "A8", "B14", "B12", "B10", "B1", "B0", "A15", "B5", "C15", "C14", "C13", "B9"], + "rows": ["B8", "B7", "B6", "B11", "A6"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 30, + "sleep": true + }, + "usb": { + "device_version": "0.0.1", + "pid": "0x5336", + "vid": "0x5453" + }, + "ws2812": { + "driver": "spi", + "pin": "B15" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [2, 12], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.75}, + {"matrix": [3, 12], "x": 13, "y": 3}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 10], "x": 11, "y": 4}, + {"matrix": [4, 11], "x": 12, "y": 4}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4} + ] + } + } +} diff --git a/keyboards/trnthsn/tyson60/keymaps/default/keymap.c b/keyboards/trnthsn/tyson60/keymaps/default/keymap.c new file mode 100644 index 0000000000..30786c4b60 --- /dev/null +++ b/keyboards/trnthsn/tyson60/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +// Copyright 2025 Tyson.Keebs +// 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│ + // ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + // │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ + // ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + // │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + // ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + // │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │Shift │↑ │/ │ + // ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤ + // │Ctrl │GUI│ Alt │ │Fn │← │↓ │→ │ + // └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘ + + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + MO(2) , _______, _______, _______, _______, _______, _______, UG_TOGG, UG_NEXT, UG_VALD, UG_VALU, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/trnthsn/tyson60/mcuconf.h b/keyboards/trnthsn/tyson60/mcuconf.h new file mode 100644 index 0000000000..d131af9fdf --- /dev/null +++ b/keyboards/trnthsn/tyson60/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2025 Tyson.Keebs +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/trnthsn/tyson60/readme.md b/keyboards/trnthsn/tyson60/readme.md new file mode 100644 index 0000000000..d38c012aad --- /dev/null +++ b/keyboards/trnthsn/tyson60/readme.md @@ -0,0 +1,27 @@ +# Tyson60 + +![trnthsn/tyson60](https://live.staticflickr.com/65535/54831948531_6b41780afe_b.jpg) + +Tyson60 PCB, 60% keyboard PCB. + +* Keyboard Maintainer: [Trnthsn](https://github.com/trnthsn) +* Hardware Supported: STM32, Tyson60 +* Hardware Availability: [ThanhSon.Mech](https://www.facebook.com/ThanhSon.mech) + +Make example for this keyboard (after setting up your build environment): + + make trnthsn/tyson60/stm32f103:default + +Flashing example for this keyboard: + + make trnthsn/tyson60/stm32f103:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/trnthsn/tyson60/stm32f072/keyboard.json b/keyboards/trnthsn/tyson60/stm32f072/keyboard.json new file mode 100644 index 0000000000..b5d728b1cd --- /dev/null +++ b/keyboards/trnthsn/tyson60/stm32f072/keyboard.json @@ -0,0 +1,4 @@ +{ + "processor": "STM32F072", + "bootloader": "stm32-dfu", +} diff --git a/keyboards/trnthsn/tyson60/stm32f103/keyboard.json b/keyboards/trnthsn/tyson60/stm32f103/keyboard.json new file mode 100644 index 0000000000..5b2b6bc7d9 --- /dev/null +++ b/keyboards/trnthsn/tyson60/stm32f103/keyboard.json @@ -0,0 +1,4 @@ +{ + "processor": "STM32F103", + "bootloader": "uf2boot", +} From 98e65cf3e1fb4bf61367d469a62d3cce0a9fac20 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Thu, 23 Oct 2025 11:44:29 +0100 Subject: [PATCH 151/167] Fix hhkb/jp - Restore previous matrix locations (#25724) --- keyboards/hhkb/jp/keyboard.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/keyboards/hhkb/jp/keyboard.json b/keyboards/hhkb/jp/keyboard.json index 69bb681edf..b776b416ec 100644 --- a/keyboards/hhkb/jp/keyboard.json +++ b/keyboards/hhkb/jp/keyboard.json @@ -49,20 +49,20 @@ {"matrix": [15, 3], "x": 11.5, "y": 1}, {"matrix": [13, 3], "x": 12.5, "y": 1}, - {"matrix": [6, 6], "x": 0, "y": 2, "w": 1.75}, - {"matrix": [2, 6], "x": 1.75, "y": 2}, - {"matrix": [1, 6], "x": 2.75, "y": 2}, - {"matrix": [5, 6], "x": 3.75, "y": 2}, - {"matrix": [7, 6], "x": 4.75, "y": 2}, - {"matrix": [10, 6], "x": 5.75, "y": 2}, - {"matrix": [9, 6], "x": 6.75, "y": 2}, - {"matrix": [8, 6], "x": 7.75, "y": 2}, - {"matrix": [11, 6], "x": 8.75, "y": 2}, - {"matrix": [14, 6], "x": 9.75, "y": 2}, - {"matrix": [15, 6], "x": 10.75, "y": 2}, - {"matrix": [13, 6], "x": 11.75, "y": 2}, - {"matrix": [12, 6], "x": 12.75, "y": 2}, - {"matrix": [0, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [0, 6], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [6, 6], "x": 1.75, "y": 2}, + {"matrix": [2, 6], "x": 2.75, "y": 2}, + {"matrix": [1, 6], "x": 3.75, "y": 2}, + {"matrix": [5, 6], "x": 4.75, "y": 2}, + {"matrix": [7, 6], "x": 5.75, "y": 2}, + {"matrix": [10, 6], "x": 6.75, "y": 2}, + {"matrix": [9, 6], "x": 7.75, "y": 2}, + {"matrix": [8, 6], "x": 8.75, "y": 2}, + {"matrix": [11, 6], "x": 9.75, "y": 2}, + {"matrix": [14, 6], "x": 10.75, "y": 2}, + {"matrix": [15, 6], "x": 11.75, "y": 2}, + {"matrix": [13, 6], "x": 12.75, "y": 2}, + {"matrix": [12, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, {"matrix": [0, 5], "x": 0, "y": 3, "w": 2}, {"matrix": [6, 5], "x": 2, "y": 3}, From f4123acc725346caadeb49eb873a3ca93c263a25 Mon Sep 17 00:00:00 2001 From: aedanmills <40202903+aedanmills@users.noreply.github.com> Date: Sun, 26 Oct 2025 21:19:06 -0400 Subject: [PATCH 152/167] [Keyboard] Add WhirlwindFX ElementV2 (#25356) Co-authored-by: Joel Challis Co-authored-by: Duncan Sutherland --- keyboards/whirlwind_fx_element/config.h | 7 + keyboards/whirlwind_fx_element/halconf.h | 9 + keyboards/whirlwind_fx_element/keyboard.json | 302 ++++++++++++++++++ .../keymaps/default/keymap.c | 42 +++ keyboards/whirlwind_fx_element/mcuconf.h | 10 + keyboards/whirlwind_fx_element/readme.md | 31 ++ .../whirlwind_fx_element.c | 119 +++++++ 7 files changed, 520 insertions(+) create mode 100644 keyboards/whirlwind_fx_element/config.h create mode 100644 keyboards/whirlwind_fx_element/halconf.h create mode 100644 keyboards/whirlwind_fx_element/keyboard.json create mode 100644 keyboards/whirlwind_fx_element/keymaps/default/keymap.c create mode 100644 keyboards/whirlwind_fx_element/mcuconf.h create mode 100644 keyboards/whirlwind_fx_element/readme.md create mode 100644 keyboards/whirlwind_fx_element/whirlwind_fx_element.c diff --git a/keyboards/whirlwind_fx_element/config.h b/keyboards/whirlwind_fx_element/config.h new file mode 100644 index 0000000000..606163cf10 --- /dev/null +++ b/keyboards/whirlwind_fx_element/config.h @@ -0,0 +1,7 @@ +// Copyright 2023 WhirlwindFX +// Copyright 2023 aedanmills +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND diff --git a/keyboards/whirlwind_fx_element/halconf.h b/keyboards/whirlwind_fx_element/halconf.h new file mode 100644 index 0000000000..75e92dea90 --- /dev/null +++ b/keyboards/whirlwind_fx_element/halconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 WhirlwindFX +// Copyright 2023 aedanmills +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/whirlwind_fx_element/keyboard.json b/keyboards/whirlwind_fx_element/keyboard.json new file mode 100644 index 0000000000..f01c5859da --- /dev/null +++ b/keyboards/whirlwind_fx_element/keyboard.json @@ -0,0 +1,302 @@ +{ + "manufacturer": "WhirlwindFX", + "keyboard_name": "Element", + "maintainer": "aedanmills", + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "rows": [ "B0", "B1", "B2", "B3", "B12", "B13", "B14", "B15" ], + "cols": [ "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A13", "A14" ] + }, + "processor": "STM32F303", + "url": "https://www.whirlwindfx.com/products/element", + "usb": { + "vid": "0x0483", + "pid": "0xA33E", + "device_version": "1.0.6" + }, + "indicators": { + "caps_lock": "B9", + "num_lock": "B8", + "scroll_lock": "B10", + "on_state": 0 + }, + "community_layouts": ["fullsize_ansi"], + "layouts": { + "LAYOUT_fullsize_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [0, 3], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + {"matrix": [0, 5], "x": 6.5, "y": 0}, + {"matrix": [0, 6], "x": 7.5, "y": 0}, + {"matrix": [0, 7], "x": 8.5, "y": 0}, + {"matrix": [0, 8], "x": 9.5, "y": 0}, + {"matrix": [0, 9], "x": 11, "y": 0}, + {"matrix": [0, 10], "x": 12, "y": 0}, + {"matrix": [0, 11], "x": 13, "y": 0}, + {"matrix": [0, 12], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 15.25, "y": 0}, + {"matrix": [1, 1], "x": 16.25, "y": 0}, + {"matrix": [1, 2], "x": 17.25, "y": 0}, + {"matrix": [1, 3], "x": 0, "y": 1.25}, + {"matrix": [1, 4], "x": 1, "y": 1.25}, + {"matrix": [1, 5], "x": 2, "y": 1.25}, + {"matrix": [1, 6], "x": 3, "y": 1.25}, + {"matrix": [1, 7], "x": 4, "y": 1.25}, + {"matrix": [1, 8], "x": 5, "y": 1.25}, + {"matrix": [1, 9], "x": 6, "y": 1.25}, + {"matrix": [1, 10], "x": 7, "y": 1.25}, + {"matrix": [1, 11], "x": 8, "y": 1.25}, + {"matrix": [1, 12], "x": 9, "y": 1.25}, + {"matrix": [2, 0], "x": 10, "y": 1.25}, + {"matrix": [2, 1], "x": 11, "y": 1.25}, + {"matrix": [2, 2], "x": 12, "y": 1.25}, + {"matrix": [2, 3], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [2, 4], "x": 15.25, "y": 1.25}, + {"matrix": [2, 5], "x": 16.25, "y": 1.25}, + {"matrix": [2, 6], "x": 17.25, "y": 1.25}, + {"matrix": [2, 7], "x": 18.5, "y": 1.25}, + {"matrix": [2, 8], "x": 19.5, "y": 1.25}, + {"matrix": [2, 9], "x": 20.5, "y": 1.25}, + {"matrix": [2, 10], "x": 21.5, "y": 1.25}, + {"matrix": [2, 11], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 12], "x": 1.5, "y": 2.25}, + {"matrix": [3, 0], "x": 2.5, "y": 2.25}, + {"matrix": [3, 1], "x": 3.5, "y": 2.25}, + {"matrix": [3, 2], "x": 4.5, "y": 2.25}, + {"matrix": [3, 3], "x": 5.5, "y": 2.25}, + {"matrix": [3, 4], "x": 6.5, "y": 2.25}, + {"matrix": [3, 5], "x": 7.5, "y": 2.25}, + {"matrix": [3, 6], "x": 8.5, "y": 2.25}, + {"matrix": [3, 7], "x": 9.5, "y": 2.25}, + {"matrix": [3, 8], "x": 10.5, "y": 2.25}, + {"matrix": [3, 9], "x": 11.5, "y": 2.25}, + {"matrix": [3, 10], "x": 12.5, "y": 2.25}, + {"matrix": [3, 11], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [3, 12], "x": 15.25, "y": 2.25}, + {"matrix": [4, 0], "x": 16.25, "y": 2.25}, + {"matrix": [4, 1], "x": 17.25, "y": 2.25}, + {"matrix": [4, 2], "x": 18.5, "y": 2.25}, + {"matrix": [4, 3], "x": 19.5, "y": 2.25}, + {"matrix": [4, 4], "x": 20.5, "y": 2.25}, + {"matrix": [5, 8], "x": 21.5, "y": 2.25, "h": 2}, + {"matrix": [4, 5], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [4, 6], "x": 1.75, "y": 3.25}, + {"matrix": [4, 7], "x": 2.75, "y": 3.25}, + {"matrix": [4, 8], "x": 3.75, "y": 3.25}, + {"matrix": [4, 9], "x": 4.75, "y": 3.25}, + {"matrix": [4, 10], "x": 5.75, "y": 3.25}, + {"matrix": [4, 11], "x": 6.75, "y": 3.25}, + {"matrix": [4, 12], "x": 7.75, "y": 3.25}, + {"matrix": [5, 0], "x": 8.75, "y": 3.25}, + {"matrix": [5, 1], "x": 9.75, "y": 3.25}, + {"matrix": [5, 2], "x": 10.75, "y": 3.25}, + {"matrix": [5, 3], "x": 11.75, "y": 3.25}, + {"matrix": [5, 4], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [5, 5], "x": 18.5, "y": 3.25}, + {"matrix": [5, 6], "x": 19.5, "y": 3.25}, + {"matrix": [5, 7], "x": 20.5, "y": 3.25}, + {"matrix": [5, 9], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [5, 10], "x": 2.25, "y": 4.25}, + {"matrix": [5, 11], "x": 3.25, "y": 4.25}, + {"matrix": [5, 12], "x": 4.25, "y": 4.25}, + {"matrix": [6, 0], "x": 5.25, "y": 4.25}, + {"matrix": [6, 1], "x": 6.25, "y": 4.25}, + {"matrix": [6, 2], "x": 7.25, "y": 4.25}, + {"matrix": [6, 3], "x": 8.25, "y": 4.25}, + {"matrix": [6, 4], "x": 9.25, "y": 4.25}, + {"matrix": [6, 5], "x": 10.25, "y": 4.25}, + {"matrix": [6, 6], "x": 11.25, "y": 4.25}, + {"matrix": [6, 7], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [6, 8], "x": 16.25, "y": 4.25}, + {"matrix": [6, 9], "x": 18.5, "y": 4.25}, + {"matrix": [6, 10], "x": 19.5, "y": 4.25}, + {"matrix": [6, 11], "x": 20.5, "y": 4.25}, + {"matrix": [6, 12], "x": 21.5, "y": 4.25, "h": 2}, + {"matrix": [7, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [7, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [7, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [7, 3], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [7, 4], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [7, 5], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [7, 6], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [7, 7], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [7, 8], "x": 15.25, "y": 5.25}, + {"matrix": [7, 9], "x": 16.25, "y": 5.25}, + {"matrix": [7, 10], "x": 17.25, "y": 5.25}, + {"matrix": [7, 11], "x": 18.5, "y": 5.25, "w": 2}, + {"matrix": [7, 12], "x": 20.5, "y": 5.25} + ] + } + }, + "rgb_matrix": { + "driver": "is31fl3741", + "max_brightness": 200, + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 21, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 31, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 42, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 52, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 68, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 78, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 89, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 99, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 115, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 125, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 136, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 146, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 159, "y": 0, "flags": 4}, + {"matrix": [1, 1], "x": 169, "y": 0, "flags": 4}, + {"matrix": [1, 2], "x": 180, "y": 0, "flags": 4}, + + {"matrix": [1, 3], "x": 0, "y": 15, "flags": 4}, + {"matrix": [1, 4], "x": 10, "y": 15, "flags": 4}, + {"matrix": [1, 5], "x": 21, "y": 15, "flags": 4}, + {"matrix": [1, 6], "x": 31, "y": 15, "flags": 4}, + {"matrix": [1, 7], "x": 42, "y": 15, "flags": 4}, + {"matrix": [1, 8], "x": 52, "y": 15, "flags": 4}, + {"matrix": [1, 9], "x": 63, "y": 15, "flags": 4}, + {"matrix": [1, 10], "x": 73, "y": 15, "flags": 4}, + {"matrix": [1, 11], "x": 83, "y": 15, "flags": 4}, + {"matrix": [1, 12], "x": 94, "y": 15, "flags": 4}, + {"matrix": [2, 0], "x": 104, "y": 15, "flags": 4}, + {"matrix": [2, 1], "x": 115, "y": 15, "flags": 4}, + {"matrix": [2, 2], "x": 125, "y": 15, "flags": 4}, + {"matrix": [2, 3], "x": 141, "y": 15, "flags": 4}, + {"matrix": [2, 4], "x": 159, "y": 15, "flags": 4}, + {"matrix": [2, 5], "x": 169, "y": 15, "flags": 4}, + {"matrix": [2, 6], "x": 180, "y": 15, "flags": 4}, + {"matrix": [2, 7], "x": 193, "y": 15, "flags": 4}, + {"matrix": [2, 8], "x": 203, "y": 15, "flags": 4}, + {"matrix": [2, 9], "x": 214, "y": 15, "flags": 4}, + {"matrix": [2, 10], "x": 224, "y": 15, "flags": 4}, + + {"matrix": [2, 11], "x": 3, "y": 27, "flags": 4}, + {"matrix": [2, 12], "x": 16, "y": 27, "flags": 4}, + {"matrix": [3, 0], "x": 26, "y": 27, "flags": 4}, + {"matrix": [3, 1], "x": 36, "y": 27, "flags": 4}, + {"matrix": [3, 2], "x": 47, "y": 27, "flags": 4}, + {"matrix": [3, 3], "x": 57, "y": 27, "flags": 4}, + {"matrix": [3, 4], "x": 68, "y": 27, "flags": 4}, + {"matrix": [3, 5], "x": 78, "y": 27, "flags": 4}, + {"matrix": [3, 6], "x": 89, "y": 27, "flags": 4}, + {"matrix": [3, 7], "x": 99, "y": 27, "flags": 4}, + {"matrix": [3, 8], "x": 109, "y": 27, "flags": 4}, + {"matrix": [3, 9], "x": 120, "y": 27, "flags": 4}, + {"matrix": [3, 10], "x": 130, "y": 27, "flags": 4}, + {"matrix": [3, 11], "x": 143, "y": 27, "flags": 4}, + {"matrix": [3, 12], "x": 159, "y": 27, "flags": 4}, + {"matrix": [4, 0], "x": 169, "y": 27, "flags": 4}, + {"matrix": [4, 1], "x": 180, "y": 27, "flags": 4}, + {"matrix": [4, 2], "x": 193, "y": 27, "flags": 4}, + {"matrix": [4, 3], "x": 203, "y": 27, "flags": 4}, + {"matrix": [4, 4], "x": 214, "y": 27, "flags": 4}, + + {"matrix": [4, 5], "x": 4, "y": 40, "flags": 4}, + {"matrix": [4, 6], "x": 18, "y": 40, "flags": 4}, + {"matrix": [4, 7], "x": 29, "y": 40, "flags": 4}, + {"matrix": [4, 8], "x": 39, "y": 40, "flags": 4}, + {"matrix": [4, 9], "x": 50, "y": 40, "flags": 4}, + {"matrix": [4, 10], "x": 60, "y": 40, "flags": 4}, + {"matrix": [4, 11], "x": 70, "y": 40, "flags": 4}, + {"matrix": [4, 12], "x": 81, "y": 40, "flags": 4}, + {"matrix": [5, 0], "x": 91, "y": 40, "flags": 4}, + {"matrix": [5, 1], "x": 102, "y": 40, "flags": 4}, + {"matrix": [5, 2], "x": 112, "y": 40, "flags": 4}, + {"matrix": [5, 3], "x": 123, "y": 40, "flags": 4}, + {"matrix": [5, 4], "x": 139, "y": 40, "flags": 4}, + {"matrix": [5, 5], "x": 193, "y": 40, "flags": 4}, + {"matrix": [5, 6], "x": 203, "y": 40, "flags": 4}, + {"matrix": [5, 7], "x": 214, "y": 40, "flags": 4}, + {"matrix": [5, 8], "x": 224, "y": 34, "flags": 4}, + + {"matrix": [5, 9], "x": 7, "y": 52, "flags": 4}, + {"matrix": [5, 10], "x": 23, "y": 52, "flags": 4}, + {"matrix": [5, 11], "x": 34, "y": 52, "flags": 4}, + {"matrix": [5, 12], "x": 44, "y": 52, "flags": 4}, + {"matrix": [6, 0], "x": 55, "y": 52, "flags": 4}, + {"matrix": [6, 1], "x": 65, "y": 52, "flags": 4}, + {"matrix": [6, 2], "x": 76, "y": 52, "flags": 4}, + {"matrix": [6, 3], "x": 86, "y": 52, "flags": 4}, + {"matrix": [6, 4], "x": 96, "y": 52, "flags": 4}, + {"matrix": [6, 5], "x": 107, "y": 52, "flags": 4}, + {"matrix": [6, 6], "x": 117, "y": 52, "flags": 4}, + {"matrix": [6, 7], "x": 137, "y": 52, "flags": 4}, + {"matrix": [6, 8], "x": 169, "y": 52, "flags": 4}, + {"matrix": [6, 9], "x": 193, "y": 52, "flags": 4}, + {"matrix": [6, 10], "x": 203, "y": 52, "flags": 4}, + {"matrix": [6, 11], "x": 214, "y": 52, "flags": 4}, + {"matrix": [6, 12], "x": 224, "y": 58, "flags": 4}, + + {"matrix": [7, 0], "x": 1, "y": 64, "flags": 4}, + {"matrix": [7, 1], "x": 14, "y": 64, "flags": 4}, + {"matrix": [7, 2], "x": 27, "y": 64, "flags": 4}, + {"matrix": [7, 3], "x": 66, "y": 64, "flags": 4}, + {"matrix": [7, 4], "x": 105, "y": 64, "flags": 4}, + {"matrix": [7, 5], "x": 118, "y": 64, "flags": 4}, + {"matrix": [7, 6], "x": 131, "y": 64, "flags": 4}, + {"matrix": [7, 7], "x": 145, "y": 64, "flags": 4}, + {"matrix": [7, 8], "x": 159, "y": 64, "flags": 4}, + {"matrix": [7, 9], "x": 169, "y": 64, "flags": 4}, + {"matrix": [7, 10], "x": 180, "y": 64, "flags": 4}, + {"matrix": [7, 11], "x": 198, "y": 64, "flags": 4}, + {"matrix": [7, 12], "x": 214, "y": 64, "flags": 4} + ], + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_cross": true, + "solid_reactive_nexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true + }, + "default": { + "val": 128 + }, + "led_process_limit": 4, + "led_flush_limit": 26, + "sleep": true + } +} diff --git a/keyboards/whirlwind_fx_element/keymaps/default/keymap.c b/keyboards/whirlwind_fx_element/keymaps/default/keymap.c new file mode 100644 index 0000000000..36690aca28 --- /dev/null +++ b/keyboards/whirlwind_fx_element/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +// Copyright 2023 WhirlwindFX +// Copyright 2023 aedanmills +// 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│ │Num│ / │ * │ - │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ + * │Ctrl│GUI │Alt │ │ Alt│ FN │Menu│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [0] = LAYOUT_fullsize_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_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_NUM, KC_PSLS, KC_PAST, KC_PMNS, + 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_P7, KC_P8, KC_P9, KC_PPLS, + 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_P4, KC_P5, KC_P6, + 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_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + [1] = LAYOUT_fullsize_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BRID, KC_BRIU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_CALC, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RM_VALD, RM_VALU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RM_SPDU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RM_PREV, RM_SPDD, RM_NEXT, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/whirlwind_fx_element/mcuconf.h b/keyboards/whirlwind_fx_element/mcuconf.h new file mode 100644 index 0000000000..c89f7275d4 --- /dev/null +++ b/keyboards/whirlwind_fx_element/mcuconf.h @@ -0,0 +1,10 @@ +// Copyright 2023 WhirlwindFX +// Copyright 2023 aedanmills +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/whirlwind_fx_element/readme.md b/keyboards/whirlwind_fx_element/readme.md new file mode 100644 index 0000000000..362b984772 --- /dev/null +++ b/keyboards/whirlwind_fx_element/readme.md @@ -0,0 +1,31 @@ +# WhirlwindFX ElementV2 + +![WhirlwindFX ElementV2](https://i.imgur.com/Etso6Ni.png) + +A full-size (100%) mechanical keyboard with RGB lighting. + +* Keyboard Maintainer: [Aedan Mills](https://github.com/aedanmills) +* Hardware Supported: WhirlwindFX ElementV2 +* Hardware Availability: [WhirlwindFX](https://www.whirlwindfx.com/products/element) + +Make example for this keyboard (after setting up your build environment): + + make whirlwind_fx_element:default + +Flashing example for this keyboard: + + make whirlwind_fx_element:default:flash + +## Bootloader + +Enter the bootloader by pressing and holding the reset button on the back of the PCB while plugging in the keyboard. You will have to remove the key caps to access the screws to disassemble the keyboard and access the button. + +Don't forget to backup the original firmware before proceeding by using the following dfu-util command with the keyboard in bootloader mode: + + dfu-util --list # Check that the keyboard is listed in DFU mode + dfu-util -a 0 -U backup.bin -s 0x08000000 # Save backup as backup.bin + +After flashing with QMK, BootMagic can be used to enter the bootloader by holding ESC while plugging in the keyboard. + + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/whirlwind_fx_element/whirlwind_fx_element.c b/keyboards/whirlwind_fx_element/whirlwind_fx_element.c new file mode 100644 index 0000000000..6f17dbda2f --- /dev/null +++ b/keyboards/whirlwind_fx_element/whirlwind_fx_element.c @@ -0,0 +1,119 @@ +// Copyright 2023 WhirlwindFX +// Copyright 2023 aedanmills +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +#ifdef RGB_MATRIX_ENABLE +const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = { + {0, SW1_CS2, SW1_CS3, SW1_CS1}, + {0, SW1_CS5, SW1_CS6, SW1_CS4}, + {0, SW1_CS8, SW1_CS9, SW1_CS7}, + {0, SW1_CS11, SW1_CS12, SW1_CS10}, + {0, SW1_CS14, SW1_CS15, SW1_CS13}, + {0, SW1_CS17, SW1_CS18, SW1_CS16}, + {0, SW1_CS20, SW1_CS21, SW1_CS19}, + {0, SW1_CS23, SW1_CS24, SW1_CS22}, + {0, SW1_CS26, SW1_CS27, SW1_CS25}, + {0, SW1_CS29, SW1_CS30, SW1_CS28}, + {0, SW1_CS32, SW1_CS33, SW1_CS31}, + {0, SW1_CS35, SW1_CS36, SW1_CS34}, + {0, SW1_CS38, SW1_CS39, SW1_CS37}, + {0, SW2_CS2, SW2_CS3, SW2_CS1}, + {0, SW2_CS5, SW2_CS6, SW2_CS4}, + {0, SW2_CS8, SW2_CS9, SW2_CS7}, + {0, SW2_CS11, SW2_CS12, SW2_CS10}, + {0, SW2_CS14, SW2_CS15, SW2_CS13}, + {0, SW2_CS17, SW2_CS18, SW2_CS16}, + {0, SW2_CS20, SW2_CS21, SW2_CS19}, + {0, SW2_CS23, SW2_CS24, SW2_CS22}, + {0, SW2_CS26, SW2_CS27, SW2_CS25}, + {0, SW2_CS29, SW2_CS30, SW2_CS28}, + {0, SW2_CS32, SW2_CS33, SW2_CS31}, + {0, SW2_CS35, SW2_CS36, SW2_CS34}, + {0, SW2_CS38, SW2_CS39, SW2_CS37}, + {0, SW3_CS2, SW3_CS3, SW3_CS1}, + {0, SW3_CS5, SW3_CS6, SW3_CS4}, + {0, SW3_CS8, SW3_CS9, SW3_CS7}, + {0, SW3_CS11, SW3_CS12, SW3_CS10}, + {0, SW3_CS14, SW3_CS15, SW3_CS13}, + {0, SW3_CS17, SW3_CS18, SW3_CS16}, + {0, SW3_CS20, SW3_CS21, SW3_CS19}, + {0, SW3_CS23, SW3_CS24, SW3_CS22}, + {0, SW3_CS26, SW3_CS27, SW3_CS25}, + {0, SW3_CS29, SW3_CS30, SW3_CS28}, + {0, SW3_CS32, SW3_CS33, SW3_CS31}, + {0, SW3_CS35, SW3_CS36, SW3_CS34}, + {0, SW3_CS38, SW3_CS39, SW3_CS37}, + {0, SW4_CS2, SW4_CS3, SW4_CS1}, + {0, SW4_CS5, SW4_CS6, SW4_CS4}, + {0, SW4_CS8, SW4_CS9, SW4_CS7}, + {0, SW4_CS11, SW4_CS12, SW4_CS10}, + {0, SW4_CS14, SW4_CS15, SW4_CS13}, + {0, SW4_CS17, SW4_CS18, SW4_CS16}, + {0, SW4_CS20, SW4_CS21, SW4_CS19}, + {0, SW4_CS23, SW4_CS24, SW4_CS22}, + {0, SW4_CS26, SW4_CS27, SW4_CS25}, + {0, SW4_CS29, SW4_CS30, SW4_CS28}, + {0, SW4_CS32, SW4_CS33, SW4_CS31}, + {0, SW4_CS35, SW4_CS36, SW4_CS34}, + {0, SW4_CS38, SW4_CS39, SW4_CS37}, + {0, SW5_CS2, SW5_CS3, SW5_CS1}, + {0, SW5_CS5, SW5_CS6, SW5_CS4}, + {0, SW5_CS8, SW5_CS9, SW5_CS7}, + {0, SW5_CS11, SW5_CS12, SW5_CS10}, + {0, SW5_CS14, SW5_CS15, SW5_CS13}, + {0, SW5_CS17, SW5_CS18, SW5_CS16}, + {0, SW5_CS20, SW5_CS21, SW5_CS19}, + {0, SW5_CS23, SW5_CS24, SW5_CS22}, + {0, SW5_CS26, SW5_CS27, SW5_CS25}, + {0, SW5_CS29, SW5_CS30, SW5_CS28}, + {0, SW5_CS32, SW5_CS33, SW5_CS31}, + {0, SW5_CS35, SW5_CS36, SW5_CS34}, + {0, SW5_CS38, SW5_CS39, SW5_CS37}, + {0, SW6_CS2, SW6_CS3, SW6_CS1}, + {0, SW6_CS5, SW6_CS6, SW6_CS4}, + {0, SW6_CS8, SW6_CS9, SW6_CS7}, + {0, SW6_CS11, SW6_CS12, SW6_CS10}, + {0, SW6_CS14, SW6_CS15, SW6_CS13}, + {0, SW6_CS17, SW6_CS18, SW6_CS16}, + {0, SW6_CS20, SW6_CS21, SW6_CS19}, + {0, SW6_CS23, SW6_CS24, SW6_CS22}, + {0, SW6_CS26, SW6_CS27, SW6_CS25}, + {0, SW6_CS29, SW6_CS30, SW6_CS28}, + {0, SW6_CS32, SW6_CS33, SW6_CS31}, + {0, SW6_CS35, SW6_CS36, SW6_CS34}, + {0, SW6_CS38, SW6_CS39, SW6_CS37}, + {0, SW7_CS2, SW7_CS3, SW7_CS1}, + {0, SW7_CS5, SW7_CS6, SW7_CS4}, + {0, SW7_CS8, SW7_CS9, SW7_CS7}, + {0, SW7_CS11, SW7_CS12, SW7_CS10}, + {0, SW7_CS14, SW7_CS15, SW7_CS13}, + {0, SW7_CS17, SW7_CS18, SW7_CS16}, + {0, SW7_CS20, SW7_CS21, SW7_CS19}, + {0, SW7_CS23, SW7_CS24, SW7_CS22}, + {0, SW7_CS26, SW7_CS27, SW7_CS25}, + {0, SW7_CS29, SW7_CS30, SW7_CS28}, + {0, SW7_CS32, SW7_CS33, SW7_CS31}, + {0, SW7_CS35, SW7_CS36, SW7_CS34}, + {0, SW7_CS38, SW7_CS39, SW7_CS37}, + {0, SW8_CS2, SW8_CS3, SW8_CS1}, + {0, SW8_CS5, SW8_CS6, SW8_CS4}, + {0, SW8_CS8, SW8_CS9, SW8_CS7}, + {0, SW8_CS11, SW8_CS12, SW8_CS10}, + {0, SW8_CS14, SW8_CS15, SW8_CS13}, + {0, SW8_CS17, SW8_CS18, SW8_CS16}, + {0, SW8_CS20, SW8_CS21, SW8_CS19}, + {0, SW8_CS23, SW8_CS24, SW8_CS22}, + {0, SW8_CS26, SW8_CS27, SW8_CS25}, + {0, SW8_CS29, SW8_CS30, SW8_CS28}, + {0, SW8_CS32, SW8_CS33, SW8_CS31}, + {0, SW8_CS35, SW8_CS36, SW8_CS34}, + {0, SW8_CS38, SW8_CS39, SW8_CS37} +}; +#endif +void keyboard_pre_init_kb(void) { + gpio_set_pin_output(B11); // Required for indicators to work correctly + + keyboard_pre_init_user(); +} From 8e5550dbb219591eee97f533568ba9a6271f5d84 Mon Sep 17 00:00:00 2001 From: SneakboxKB <67670271+SneakboxKB@users.noreply.github.com> Date: Thu, 30 Oct 2025 15:05:52 -0500 Subject: [PATCH 153/167] Add M4m5 support (#25499) --- keyboards/sneakbox/m4m5/keyboard.json | 203 ++++++++++++++++++ .../sneakbox/m4m5/keymaps/alice/keymap.c | 32 +++ .../sneakbox/m4m5/keymaps/default/keymap.c | 32 +++ keyboards/sneakbox/m4m5/readme.md | 27 +++ 4 files changed, 294 insertions(+) create mode 100644 keyboards/sneakbox/m4m5/keyboard.json create mode 100644 keyboards/sneakbox/m4m5/keymaps/alice/keymap.c create mode 100644 keyboards/sneakbox/m4m5/keymaps/default/keymap.c create mode 100644 keyboards/sneakbox/m4m5/readme.md diff --git a/keyboards/sneakbox/m4m5/keyboard.json b/keyboards/sneakbox/m4m5/keyboard.json new file mode 100644 index 0000000000..ba56a6c85d --- /dev/null +++ b/keyboards/sneakbox/m4m5/keyboard.json @@ -0,0 +1,203 @@ +{ + "manufacturer": "Sneakbox", + "keyboard_name": "M4 & M5", + "maintainer": "mujimanic", + "bootloader": "atmel-dfu", + "bootmagic": { + "matrix": [2, 0] + }, + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "D3", "pin_b": "D2"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "indicators": { + "caps_lock": "D6", + "num_lock": "D4", + "scroll_lock": "D7" + }, + "matrix_pins": { + "cols": ["F0", "D0", "C7", "C6", "B6", "B5", "B4", "D1"], + "rows": ["F1", "E6", "F4", "B1", "F5", "B2", "F6", "B3", "F7", "B7"] + }, + "processor": "atmega32u4", + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 16 + }, + "url": "https://sneakbox.design", + "usb": { + "device_version": "0.0.1", + "pid": "0x0005", + "vid": "0x5342" + }, + "ws2812": { + "pin": "D5" + }, + "layouts": { + "LAYOUT_alice": { + "layout": [ + {"matrix": [2, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1.25, "y": 0}, + {"matrix": [0, 1], "x": 2.25, "y": 0}, + {"matrix": [0, 2], "x": 3.25, "y": 0}, + {"matrix": [0, 3], "x": 4.25, "y": 0}, + {"matrix": [0, 4], "x": 5.25, "y": 0}, + {"matrix": [0, 5], "x": 6.25, "y": 0}, + {"matrix": [0, 6], "x": 7.25, "y": 0}, + {"matrix": [1, 0], "x": 10.25, "y": 0}, + {"matrix": [1, 1], "x": 11.25, "y": 0}, + {"matrix": [1, 2], "x": 12.25, "y": 0}, + {"matrix": [1, 3], "x": 13.25, "y": 0}, + {"matrix": [1, 4], "x": 14.25, "y": 0}, + {"matrix": [1, 5], "x": 15.25, "y": 0}, + {"matrix": [1, 6], "x": 16.25, "y": 0, "w": 2}, + {"matrix": [4, 0], "x": 0, "y": 1}, + {"matrix": [2, 1], "x": 1.25, "y": 1, "w": 1.5}, + {"matrix": [2, 2], "x": 2.75, "y": 1}, + {"matrix": [2, 3], "x": 3.75, "y": 1}, + {"matrix": [2, 4], "x": 4.75, "y": 1}, + {"matrix": [2, 5], "x": 5.75, "y": 1}, + {"matrix": [2, 6], "x": 6.75, "y": 1}, + {"matrix": [3, 0], "x": 9.75, "y": 1}, + {"matrix": [3, 1], "x": 10.75, "y": 1}, + {"matrix": [3, 2], "x": 11.75, "y": 1}, + {"matrix": [3, 3], "x": 12.75, "y": 1}, + {"matrix": [3, 4], "x": 13.75, "y": 1}, + {"matrix": [3, 5], "x": 14.75, "y": 1}, + {"matrix": [3, 6], "x": 15.75, "y": 1}, + {"matrix": [3, 7], "x": 16.75, "y": 1, "w": 1.5}, + {"matrix": [6, 0], "x": 0, "y": 2}, + {"matrix": [4, 1], "x": 1.25, "y": 2, "w": 1.75}, + {"matrix": [4, 2], "x": 3, "y": 2}, + {"matrix": [4, 3], "x": 4, "y": 2}, + {"matrix": [4, 4], "x": 5, "y": 2}, + {"matrix": [4, 5], "x": 6, "y": 2}, + {"matrix": [4, 6], "x": 7, "y": 2}, + {"matrix": [5, 0], "x": 10, "y": 2}, + {"matrix": [5, 1], "x": 11, "y": 2}, + {"matrix": [5, 2], "x": 12, "y": 2}, + {"matrix": [5, 3], "x": 13, "y": 2}, + {"matrix": [5, 4], "x": 14, "y": 2}, + {"matrix": [5, 5], "x": 15, "y": 2}, + {"matrix": [5, 6], "x": 16, "y": 2, "w": 2.25}, + {"matrix": [6, 1], "x": 1.25, "y": 3, "w": 2.25}, + {"matrix": [6, 2], "x": 3.5, "y": 3}, + {"matrix": [6, 3], "x": 4.5, "y": 3}, + {"matrix": [6, 4], "x": 5.5, "y": 3}, + {"matrix": [6, 5], "x": 6.5, "y": 3}, + {"matrix": [6, 6], "x": 7.5, "y": 3}, + {"matrix": [7, 0], "x": 9.5, "y": 3}, + {"matrix": [7, 1], "x": 10.5, "y": 3}, + {"matrix": [7, 2], "x": 11.5, "y": 3}, + {"matrix": [7, 3], "x": 12.5, "y": 3}, + {"matrix": [7, 4], "x": 13.5, "y": 3}, + {"matrix": [7, 5], "x": 14.5, "y": 3}, + {"matrix": [7, 6], "x": 15.5, "y": 3, "w": 1.75}, + {"matrix": [7, 7], "x": 17.25, "y": 3}, + {"matrix": [8, 1], "x": 1.25, "y": 4, "w": 1.5}, + {"matrix": [8, 3], "x": 4, "y": 4, "w": 1.5}, + {"matrix": [8, 5], "x": 5.5, "y": 4, "w": 2.25}, + {"matrix": [8, 6], "x": 7.75, "y": 4}, + {"matrix": [9, 1], "x": 9.75, "y": 4, "w": 1.25}, + {"matrix": [9, 2], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [9, 3], "x": 12.5, "y": 4, "w": 1.5}, + {"matrix": [9, 7], "x": 16.75, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_alice_split_bs": { + "layout": [ + {"matrix": [2, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1.25, "y": 0}, + {"matrix": [0, 1], "x": 2.25, "y": 0}, + {"matrix": [0, 2], "x": 3.25, "y": 0}, + {"matrix": [0, 3], "x": 4.25, "y": 0}, + {"matrix": [0, 4], "x": 5.25, "y": 0}, + {"matrix": [0, 5], "x": 6.25, "y": 0}, + {"matrix": [0, 6], "x": 7.25, "y": 0}, + {"matrix": [1, 0], "x": 10.25, "y": 0}, + {"matrix": [1, 1], "x": 11.25, "y": 0}, + {"matrix": [1, 2], "x": 12.25, "y": 0}, + {"matrix": [1, 3], "x": 13.25, "y": 0}, + {"matrix": [1, 4], "x": 14.25, "y": 0}, + {"matrix": [1, 5], "x": 15.25, "y": 0}, + {"matrix": [1, 6], "x": 16.25, "y": 0}, + {"matrix": [1, 7], "x": 17.25, "y": 0}, + {"matrix": [4, 0], "x": 0, "y": 1}, + {"matrix": [2, 1], "x": 1.25, "y": 1, "w": 1.5}, + {"matrix": [2, 2], "x": 2.75, "y": 1}, + {"matrix": [2, 3], "x": 3.75, "y": 1}, + {"matrix": [2, 4], "x": 4.75, "y": 1}, + {"matrix": [2, 5], "x": 5.75, "y": 1}, + {"matrix": [2, 6], "x": 6.75, "y": 1}, + {"matrix": [3, 0], "x": 9.75, "y": 1}, + {"matrix": [3, 1], "x": 10.75, "y": 1}, + {"matrix": [3, 2], "x": 11.75, "y": 1}, + {"matrix": [3, 3], "x": 12.75, "y": 1}, + {"matrix": [3, 4], "x": 13.75, "y": 1}, + {"matrix": [3, 5], "x": 14.75, "y": 1}, + {"matrix": [3, 6], "x": 15.75, "y": 1}, + {"matrix": [3, 7], "x": 16.75, "y": 1, "w": 1.5}, + {"matrix": [6, 0], "x": 0, "y": 2}, + {"matrix": [4, 1], "x": 1.25, "y": 2, "w": 1.75}, + {"matrix": [4, 2], "x": 3, "y": 2}, + {"matrix": [4, 3], "x": 4, "y": 2}, + {"matrix": [4, 4], "x": 5, "y": 2}, + {"matrix": [4, 5], "x": 6, "y": 2}, + {"matrix": [4, 6], "x": 7, "y": 2}, + {"matrix": [5, 0], "x": 10, "y": 2}, + {"matrix": [5, 1], "x": 11, "y": 2}, + {"matrix": [5, 2], "x": 12, "y": 2}, + {"matrix": [5, 3], "x": 13, "y": 2}, + {"matrix": [5, 4], "x": 14, "y": 2}, + {"matrix": [5, 5], "x": 15, "y": 2}, + {"matrix": [5, 6], "x": 16, "y": 2, "w": 2.25}, + {"matrix": [6, 1], "x": 1.25, "y": 3, "w": 2.25}, + {"matrix": [6, 2], "x": 3.5, "y": 3}, + {"matrix": [6, 3], "x": 4.5, "y": 3}, + {"matrix": [6, 4], "x": 5.5, "y": 3}, + {"matrix": [6, 5], "x": 6.5, "y": 3}, + {"matrix": [6, 6], "x": 7.5, "y": 3}, + {"matrix": [7, 0], "x": 9.5, "y": 3}, + {"matrix": [7, 1], "x": 10.5, "y": 3}, + {"matrix": [7, 2], "x": 11.5, "y": 3}, + {"matrix": [7, 3], "x": 12.5, "y": 3}, + {"matrix": [7, 4], "x": 13.5, "y": 3}, + {"matrix": [7, 5], "x": 14.5, "y": 3}, + {"matrix": [7, 6], "x": 15.5, "y": 3, "w": 1.75}, + {"matrix": [7, 7], "x": 17.25, "y": 3}, + {"matrix": [8, 1], "x": 1.25, "y": 4, "w": 1.5}, + {"matrix": [8, 3], "x": 4, "y": 4, "w": 1.5}, + {"matrix": [8, 5], "x": 5.5, "y": 4, "w": 2.25}, + {"matrix": [8, 6], "x": 7.75, "y": 4}, + {"matrix": [9, 1], "x": 9.75, "y": 4, "w": 1.25}, + {"matrix": [9, 2], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [9, 3], "x": 12.5, "y": 4, "w": 1.5}, + {"matrix": [9, 7], "x": 16.75, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/sneakbox/m4m5/keymaps/alice/keymap.c b/keyboards/sneakbox/m4m5/keymaps/alice/keymap.c new file mode 100644 index 0000000000..113ebfd8b6 --- /dev/null +++ b/keyboards/sneakbox/m4m5/keymaps/alice/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 Bryan Ong +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_alice( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LGUI, + KC_LCTL, KC_LALT, KC_SPC, LT(_FN, KC_SPC), KC_SPC, KC_SPC, KC_RALT, KC_RCTL), + [_FN] = LAYOUT_alice( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, UG_PREV, UG_NEXT, UG_TOGG, + QK_BOOT, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, UG_VALD, UG_VALU, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, UG_SATD, UG_SATU, KC_TRNS, UG_HUEU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [_FN] = { ENCODER_CCW_CW(_______, _______)} +}; +#endif diff --git a/keyboards/sneakbox/m4m5/keymaps/default/keymap.c b/keyboards/sneakbox/m4m5/keymaps/default/keymap.c new file mode 100644 index 0000000000..938f073837 --- /dev/null +++ b/keyboards/sneakbox/m4m5/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 Bryan Ong +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_alice_split_bs( + KC_ESC, 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_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_RSFT, KC_LGUI, + KC_LCTL, KC_LALT, KC_SPC, LT(_FN, KC_SPC), KC_SPC, KC_SPC, KC_RALT, KC_RCTL), + [_FN] = LAYOUT_alice_split_bs( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, UG_PREV, UG_NEXT, UG_TOGG, + QK_BOOT, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, UG_VALD, UG_VALU, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, UG_SATD, UG_SATU, KC_TRNS, UG_HUEU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [_FN] = { ENCODER_CCW_CW(_______, _______)} +}; +#endif diff --git a/keyboards/sneakbox/m4m5/readme.md b/keyboards/sneakbox/m4m5/readme.md new file mode 100644 index 0000000000..4be06dbf98 --- /dev/null +++ b/keyboards/sneakbox/m4m5/readme.md @@ -0,0 +1,27 @@ +# Sneakbox M4 & M5 PCB + +![Sneakbox M4 & M5 PCB](https://i.imgur.com/hVLal1m.jpeg) + +An Alice-compatible PCB with hotswap with pushbutton rotary encoder socket placed at the top left key position. This PCB is the successor to the AliceCloneRGB PCB and features RGB underglow lighting along with revised hardware components such as an additional spacebar key in the right spacebar cluster. M4M5 firmware covers two physical PCBs for the MGA project (M4 PCB and M5 PCB) namely for the MGA V3 keyboard (which uses either PCB). + +* Keyboard Maintainer: [mujimanic](https://github.com/mujimanic) +* Hardware Supported: Any Alice-layout case. +* Hardware Availability: [sneakbox.design](https://sneakbox.com/products/m4-alice-pcbs-for-mga-cases) + +Make example for this keyboard (after setting up your build environment): + + make sneakbox/m4m5:default + +Flashing example for this keyboard: + + make sneakbox/m4m5:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key in the nevigation cluster (Escape key) and plug in the keyboard +* **Physical reset button**: Briefly press the small metal button on the back of the PCB +* **Keycode in layout**: Press and hold the key next to the right split spacebar (to the right of the spacebar) and then press the End key (located on the bottom of the three-key navigation cluster) From 62d87fa4464d601746343ca750de2ffa8cf4650e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix?= <59839401+v3lmx@users.noreply.github.com> Date: Thu, 30 Oct 2025 21:11:40 +0100 Subject: [PATCH 154/167] [Keyboard] Add Cornifi keyboard (#25753) --- keyboards/cornifi/config.h | 14 ++++ keyboards/cornifi/keyboard.json | 96 ++++++++++++++++++++++ keyboards/cornifi/keymaps/default/keymap.c | 27 ++++++ keyboards/cornifi/readme.md | 32 ++++++++ 4 files changed, 169 insertions(+) create mode 100644 keyboards/cornifi/config.h create mode 100644 keyboards/cornifi/keyboard.json create mode 100644 keyboards/cornifi/keymaps/default/keymap.c create mode 100644 keyboards/cornifi/readme.md diff --git a/keyboards/cornifi/config.h b/keyboards/cornifi/config.h new file mode 100644 index 0000000000..36750714de --- /dev/null +++ b/keyboards/cornifi/config.h @@ -0,0 +1,14 @@ +// Copyright 2024-2025 QMK +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP12 +#define SERIAL_USART_RX_PIN GP13 +#define USB_VBUS_PIN GP24 + +/* RP2040- and hardware-specific config */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/keyboards/cornifi/keyboard.json b/keyboards/cornifi/keyboard.json new file mode 100644 index 0000000000..68e062ad33 --- /dev/null +++ b/keyboards/cornifi/keyboard.json @@ -0,0 +1,96 @@ +{ + "manufacturer": "v3lmx", + "keyboard_name": "cornifi", + "maintainer": "v3lmx", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "direct": [ + ["GP21", "GP25", "GP26", "GP28", "GP29", "GP5"], + ["GP20", "GP22", "GP27", "GP2", "GP3", "GP8"], + ["GP19", "GP23", "GP1", "GP0", "GP4", null], + [null, null, "GP16", "GP17", "GP18", null] + ] + }, + "processor": "RP2040", + "split": { + "bootmagic": { + "matrix": [4, 0] + }, + "enabled": true, + "matrix_pins": { + "right": { + "direct": [ + ["GP9", "GP8", "GP4", "GP3", "GP2", "GP25"], + ["GP10", "GP6", "GP1", "GP28", "GP27", "GP21"], + ["GP11", "GP5", "GP0", "GP29", "GP26", null], + [null, null, "GP16", "GP17", "GP18", null] + ] + } + }, + "serial": { + "driver": "vendor" + } + }, + "url": "https://github.com/v3lmx/cornifi", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_split_3x5_3_ex2" + }, + "layouts": { + "LAYOUT_split_3x5_3_ex2": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.9}, + {"matrix": [0, 1], "x": 1, "y": 0.3}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0.35}, + {"matrix": [0, 4], "x": 4, "y": 0.45}, + {"matrix": [0, 5], "x": 5, "y": 0.7}, + {"matrix": [4, 5], "x": 8, "y": 0.7}, + {"matrix": [4, 4], "x": 9, "y": 0.45}, + {"matrix": [4, 3], "x": 10, "y": 0.35}, + {"matrix": [4, 2], "x": 11, "y": 0}, + {"matrix": [4, 1], "x": 12, "y": 0.3}, + {"matrix": [4, 0], "x": 13, "y": 0.9}, + {"matrix": [1, 0], "x": 0, "y": 1.9}, + {"matrix": [1, 1], "x": 1, "y": 1.3}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1.35}, + {"matrix": [1, 4], "x": 4, "y": 1.45}, + {"matrix": [1, 5], "x": 5, "y": 1.7}, + {"matrix": [5, 5], "x": 8, "y": 1.7}, + {"matrix": [5, 4], "x": 9, "y": 1.45}, + {"matrix": [5, 3], "x": 10, "y": 1.35}, + {"matrix": [5, 2], "x": 11, "y": 1}, + {"matrix": [5, 1], "x": 12, "y": 1.3}, + {"matrix": [5, 0], "x": 13, "y": 1.9}, + {"matrix": [2, 0], "x": 0, "y": 2.9}, + {"matrix": [2, 1], "x": 1, "y": 2.3}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2.35}, + {"matrix": [2, 4], "x": 4, "y": 2.45}, + {"matrix": [6, 4], "x": 9, "y": 2.45}, + {"matrix": [6, 3], "x": 10, "y": 2.35}, + {"matrix": [6, 2], "x": 11, "y": 2}, + {"matrix": [6, 1], "x": 12, "y": 2.3}, + {"matrix": [6, 0], "x": 13, "y": 2.9}, + {"matrix": [3, 2], "x": 3, "y": 3.7}, + {"matrix": [3, 3], "x": 4, "y": 3.7}, + {"matrix": [3, 4], "x": 5, "y": 3.2, "h": 1.5}, + {"matrix": [7, 4], "x": 8, "y": 3.2, "h": 1.5}, + {"matrix": [7, 3], "x": 9, "y": 3.7}, + {"matrix": [7, 2], "x": 10, "y": 3.7} + ] + } + } +} diff --git a/keyboards/cornifi/keymaps/default/keymap.c b/keyboards/cornifi/keymaps/default/keymap.c new file mode 100644 index 0000000000..207db11738 --- /dev/null +++ b/keyboards/cornifi/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2025 @v3lmx +// SPDX-License-Identifier: GPL-3.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_split_3x5_3_ex2( + 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_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, + KC_ESC, MO(1), KC_TAB, KC_ENT, MO(2), KC_BSPC + ), + [1] = LAYOUT_split_3x5_3_ex2( + KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, + XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______, _______, KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT,XXXXXXX, + XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, + KC_LGUI,_______,KC_SPC, KC_ENT, XXXXXXX, KC_RALT + ), + [2] = LAYOUT_split_3x5_3_ex2( + KC_EXLM, KC_AT,KC_HASH, KC_DLR, KC_PERC,_______, _______, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN, + XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______, _______, KC_MINS,KC_EQL, KC_LBRC,KC_RBRC,KC_BSLS, + XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_UNDS,KC_PLUS,KC_LCBR,KC_RCBR,KC_PIPE, + KC_LGUI,XXXXXXX, KC_SPC, KC_ENT, _______,KC_RALT + ) + // clang-format on +}; diff --git a/keyboards/cornifi/readme.md b/keyboards/cornifi/readme.md new file mode 100644 index 0000000000..3c4022e5ac --- /dev/null +++ b/keyboards/cornifi/readme.md @@ -0,0 +1,32 @@ +# cornifi + +![cornifi keyboard](https://i.imgur.com/Q7B3VX8.jpeg) + +The cornifi keyboard is a split keyboard based on the [corne](https://github.com/foostan/crkbd) with the physical layout of the [fifi](https://github.com/raychengy/fifi_split_keeb). + +* Keyboard Maintainer: [v3lmx (github)](https://github.com/v3lmx) +* Hardware Availability: [v3lmx/cornifi (github)](https://github.com/v3lmx/cornifi) + +Make example for this keyboard (after setting up your build environment): + + make cornifi:default + +Flashing example for this keyboard: + + make cornifi: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**: Hold down the `boot` button and press the `reset` button +* **Keycode in layout**: Press the key mapped to `TD_BOOT` twice if it is available + +## Keymap + +It is recommended to make your own keymap using the [external userspace feature(https://docs.qmk.fm/newbs_external_userspace). + +You can find an example here: [v3lmx qmk userspace](https://github.com/v3lmx/qmk_userspace) From a5fb7cfbc9f8e2eee6dcd46f3d47ec58fd539336 Mon Sep 17 00:00:00 2001 From: "Nes (Jordan)" Date: Sat, 1 Nov 2025 17:06:47 -0700 Subject: [PATCH 155/167] Sofle pico (#25750) --- keyboards/sofle_pico/config.h | 23 ++ keyboards/sofle_pico/halconf.h | 7 + keyboards/sofle_pico/keyboard.json | 239 ++++++++++++++++++ keyboards/sofle_pico/keymaps/default/keymap.c | 53 ++++ .../sofle_pico/keymaps/default/readme.md | 10 + keyboards/sofle_pico/keymaps/default/rules.mk | 1 + keyboards/sofle_pico/readme.md | 31 +++ keyboards/sofle_pico/sofle_pico.c | 32 +++ 8 files changed, 396 insertions(+) create mode 100644 keyboards/sofle_pico/config.h create mode 100644 keyboards/sofle_pico/halconf.h create mode 100644 keyboards/sofle_pico/keyboard.json create mode 100644 keyboards/sofle_pico/keymaps/default/keymap.c create mode 100644 keyboards/sofle_pico/keymaps/default/readme.md create mode 100644 keyboards/sofle_pico/keymaps/default/rules.mk create mode 100644 keyboards/sofle_pico/readme.md create mode 100644 keyboards/sofle_pico/sofle_pico.c diff --git a/keyboards/sofle_pico/config.h b/keyboards/sofle_pico/config.h new file mode 100644 index 0000000000..f4f34171fa --- /dev/null +++ b/keyboards/sofle_pico/config.h @@ -0,0 +1,23 @@ +// Copyright 2024 Ryan Neff (@JellyTitan) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Use full duplex communication (TRRS) */ +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP16 +#define SERIAL_USART_RX_PIN GP17 +/* Swap TX and RX pins if keyboard is master half. Only available on some MCU's. This _is_ available on the RP2040 */ +#define SERIAL_USART_PIN_SWAP + +/* I2C for OLEDs */ +#define I2C_DRIVER I2CD1 +#define I2C1_SDA_PIN GP6 +#define I2C1_SCL_PIN GP7 + +#define OLED_DISPLAY_128X64 +#define OLED_TIMEOUT 30000 + +#define ENCODER_MAP_KEY_DELAY 10 + +#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50 diff --git a/keyboards/sofle_pico/halconf.h b/keyboards/sofle_pico/halconf.h new file mode 100644 index 0000000000..ed969d9afc --- /dev/null +++ b/keyboards/sofle_pico/halconf.h @@ -0,0 +1,7 @@ +// Copyright 2024 Ryan Neff (@JellyTitan) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_I2C TRUE +#include_next diff --git a/keyboards/sofle_pico/keyboard.json b/keyboards/sofle_pico/keyboard.json new file mode 100644 index 0000000000..c57c4e8f9e --- /dev/null +++ b/keyboards/sofle_pico/keyboard.json @@ -0,0 +1,239 @@ +{ + "manufacturer": "Ryan Neff", + "keyboard_name": "Sofle Pico", + "maintainer": "Ryan Neff ", + "bootloader": "rp2040", + "bootloader_instructions": "Hold the BOOT button while plugging in the usb cable", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "GP14", "pin_b": "GP15"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "oled": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP1", "GP2", "GP3", "GP4", "GP5", "GP8"], + "rows": ["GP9", "GP10", "GP11", "GP12", "GP13"] + }, + "processor": "RP2040", + "rgb_matrix": { + "animations": { + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "default": { + "animation": "cycle_out_in_dual", + "speed": 16 + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 5], "x": 95, "y": 7, "flags": 4}, + {"matrix": [1, 5], "x": 95, "y": 21, "flags": 4}, + {"matrix": [2, 5], "x": 95, "y": 36, "flags": 4}, + {"matrix": [3, 5], "x": 95, "y": 50, "flags": 4}, + {"matrix": [4, 4], "x": 115, "y": 64, "flags": 4}, + {"matrix": [4, 3], "x": 95, "y": 64, "flags": 4}, + {"matrix": [4, 2], "x": 76, "y": 62, "flags": 4}, + {"matrix": [3, 4], "x": 76, "y": 48, "flags": 4}, + {"matrix": [2, 4], "x": 76, "y": 33, "flags": 4}, + {"matrix": [1, 4], "x": 76, "y": 19, "flags": 4}, + {"matrix": [0, 4], "x": 76, "y": 5, "flags": 4}, + {"matrix": [0, 3], "x": 57, "y": 3, "flags": 4}, + {"matrix": [1, 3], "x": 57, "y": 17, "flags": 4}, + {"matrix": [2, 3], "x": 57, "y": 31, "flags": 4}, + {"matrix": [3, 3], "x": 57, "y": 46, "flags": 4}, + {"matrix": [4, 1], "x": 57, "y": 62, "flags": 4}, + {"matrix": [4, 0], "x": 38, "y": 64, "flags": 4}, + {"matrix": [3, 2], "x": 38, "y": 48, "flags": 4}, + {"matrix": [2, 2], "x": 38, "y": 33, "flags": 4}, + {"matrix": [1, 2], "x": 38, "y": 19, "flags": 4}, + {"matrix": [0, 2], "x": 38, "y": 5, "flags": 4}, + {"matrix": [0, 1], "x": 19, "y": 7, "flags": 4}, + {"matrix": [1, 1], "x": 19, "y": 21, "flags": 4}, + {"matrix": [2, 1], "x": 19, "y": 36, "flags": 4}, + {"matrix": [3, 1], "x": 19, "y": 50, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 50, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 36, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 21, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 7, "flags": 4}, + {"matrix": [5, 5], "x": 129, "y": 7, "flags": 4}, + {"matrix": [6, 5], "x": 129, "y": 21, "flags": 4}, + {"matrix": [7, 5], "x": 129, "y": 36, "flags": 4}, + {"matrix": [8, 5], "x": 129, "y": 50, "flags": 4}, + {"matrix": [9, 4], "x": 119, "y": 64, "flags": 4}, + {"matrix": [9, 3], "x": 129, "y": 64, "flags": 4}, + {"matrix": [9, 2], "x": 148, "y": 62, "flags": 4}, + {"matrix": [8, 4], "x": 148, "y": 48, "flags": 4}, + {"matrix": [7, 4], "x": 148, "y": 33, "flags": 4}, + {"matrix": [6, 4], "x": 148, "y": 19, "flags": 4}, + {"matrix": [5, 4], "x": 148, "y": 5, "flags": 4}, + {"matrix": [5, 3], "x": 167, "y": 3, "flags": 4}, + {"matrix": [6, 3], "x": 167, "y": 17, "flags": 4}, + {"matrix": [7, 3], "x": 167, "y": 31, "flags": 4}, + {"matrix": [8, 3], "x": 167, "y": 46, "flags": 4}, + {"matrix": [9, 1], "x": 167, "y": 62, "flags": 4}, + {"matrix": [9, 0], "x": 186, "y": 64, "flags": 4}, + {"matrix": [8, 2], "x": 186, "y": 48, "flags": 4}, + {"matrix": [7, 2], "x": 186, "y": 33, "flags": 4}, + {"matrix": [6, 2], "x": 186, "y": 19, "flags": 4}, + {"matrix": [5, 2], "x": 186, "y": 5, "flags": 4}, + {"matrix": [5, 1], "x": 209, "y": 7, "flags": 4}, + {"matrix": [6, 1], "x": 209, "y": 21, "flags": 4}, + {"matrix": [7, 1], "x": 209, "y": 36, "flags": 4}, + {"matrix": [8, 1], "x": 209, "y": 50, "flags": 4}, + {"matrix": [8, 0], "x": 224, "y": 50, "flags": 4}, + {"matrix": [7, 0], "x": 224, "y": 36, "flags": 4}, + {"matrix": [6, 0], "x": 224, "y": 21, "flags": 4}, + {"matrix": [5, 0], "x": 224, "y": 7, "flags": 4} + ], + "max_brightness": 127, + "sleep": true, + "split_count": [29, 29] + }, + "split": { + "bootmagic": { + "matrix": [5, 0] + }, + "enabled": true, + "encoder": { + "right": { + "rotary": [ + {"pin_a": "GP14", "pin_b": "GP15"} + ] + } + }, + "serial": { + "driver": "vendor" + }, + "transport": { + "sync": { + "layer_state": true, + "matrix_state": true + } + } + }, + "tags": ["ortho", "split", "rgb", "encoder", "OLED", "128x64", "tenting_puck"], + "url": "https://github.com/JellyTitan/Sofle-Pico", + "usb": { + "device_version": "3.5.4", + "pid": "0x5350", + "vid": "0x4A54" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP0" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "`", "matrix": [0, 0], "x": 0, "y": 0.7}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0.7}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0.3}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0.3}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0.45}, + {"label": "6", "matrix": [5, 5], "x": 9, "y": 0.45}, + {"label": "7", "matrix": [5, 4], "x": 10, "y": 0.3}, + {"label": "8", "matrix": [5, 3], "x": 11, "y": 0}, + {"label": "9", "matrix": [5, 2], "x": 12, "y": 0.3}, + {"label": "0", "matrix": [5, 1], "x": 13, "y": 0.7}, + {"label": "`", "matrix": [5, 0], "x": 14, "y": 0.7}, + {"label": "Esc", "matrix": [1, 0], "x": 0, "y": 1.7}, + {"label": "Q", "matrix": [1, 1], "x": 1, "y": 1.7}, + {"label": "W", "matrix": [1, 2], "x": 2, "y": 1.3}, + {"label": "E", "matrix": [1, 3], "x": 3, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4, "y": 1.3}, + {"label": "T", "matrix": [1, 5], "x": 5, "y": 1.45}, + {"label": "Y", "matrix": [6, 5], "x": 9, "y": 1.45}, + {"label": "U", "matrix": [6, 4], "x": 10, "y": 1.3}, + {"label": "I", "matrix": [6, 3], "x": 11, "y": 1}, + {"label": "O", "matrix": [6, 2], "x": 12, "y": 1.3}, + {"label": "P", "matrix": [6, 1], "x": 13, "y": 1.7}, + {"label": "Bspc", "matrix": [6, 0], "x": 14, "y": 1.7}, + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.7}, + {"label": "A", "matrix": [2, 1], "x": 1, "y": 2.7}, + {"label": "S", "matrix": [2, 2], "x": 2, "y": 2.3}, + {"label": "D", "matrix": [2, 3], "x": 3, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4, "y": 2.3}, + {"label": "G", "matrix": [2, 5], "x": 5, "y": 2.45}, + {"label": "H", "matrix": [7, 5], "x": 9, "y": 2.45}, + {"label": "J", "matrix": [7, 4], "x": 10, "y": 2.3}, + {"label": "K", "matrix": [7, 3], "x": 11, "y": 2}, + {"label": "L", "matrix": [7, 2], "x": 12, "y": 2.3}, + {"label": ";", "matrix": [7, 1], "x": 13, "y": 2.7}, + {"label": "'", "matrix": [7, 0], "x": 14, "y": 2.7}, + {"label": "LShift", "matrix": [3, 0], "x": 0, "y": 3.7}, + {"label": "Z", "matrix": [3, 1], "x": 1, "y": 3.7}, + {"label": "X", "matrix": [3, 2], "x": 2, "y": 3.3}, + {"label": "C", "matrix": [3, 3], "x": 3, "y": 3}, + {"label": "V", "matrix": [3, 4], "x": 4, "y": 3.3}, + {"label": "B", "matrix": [3, 5], "x": 5, "y": 3.45}, + {"label": "Mute", "matrix": [4, 5], "x": 6.2, "y": 3.45}, + {"label": "Pause", "matrix": [9, 5], "x": 7.8, "y": 3.45}, + {"label": "N", "matrix": [8, 5], "x": 9, "y": 3.45}, + {"label": "M", "matrix": [8, 4], "x": 10, "y": 3.3}, + {"label": ",", "matrix": [8, 3], "x": 11, "y": 3}, + {"label": ".", "matrix": [8, 2], "x": 12, "y": 3.3}, + {"label": "/", "matrix": [8, 1], "x": 13, "y": 3.7}, + {"label": "RShift", "matrix": [8, 0], "x": 14, "y": 3.7}, + {"label": "LCtrl", "matrix": [4, 0], "x": 2, "y": 4.3}, + {"label": "LGUI", "matrix": [4, 1], "x": 3, "y": 4}, + {"label": "LCmnd", "matrix": [4, 2], "x": 4, "y": 4.3}, + {"label": "LAlt", "matrix": [4, 3], "x": 5.1, "y": 4.5, "h": 1.5}, + {"label": "Enter", "matrix": [4, 4], "x": 6.1, "y": 4.5, "h": 1.5}, + {"label": "Space", "matrix": [9, 4], "x": 7.9, "y": 4.5, "h": 1.5}, + {"label": "RAlt", "matrix": [9, 3], "x": 8.9, "y": 4.5, "h": 1.5}, + {"label": "RCmnd", "matrix": [9, 2], "x": 10, "y": 4.3}, + {"label": "RGui", "matrix": [9, 1], "x": 11, "y": 4}, + {"label": "RCtrl", "matrix": [9, 0], "x": 12, "y": 4.3} + ] + } + } +} diff --git a/keyboards/sofle_pico/keymaps/default/keymap.c b/keyboards/sofle_pico/keymaps/default/keymap.c new file mode 100644 index 0000000000..a09f32fc37 --- /dev/null +++ b/keyboards/sofle_pico/keymaps/default/keymap.c @@ -0,0 +1,53 @@ +// Copyright 2024 Ryan Neff (@JellyTitan) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum sofle_layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [_QWERTY] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LGUI, KC_LALT, KC_LCTL, TL_LOWR, KC_ENT, KC_SPC , TL_UPPR, KC_RCTL, KC_RALT, KC_RGUI + ), + [_LOWER] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, + _______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, KC_BSPC, + _______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL , KC_BSPC, + _______, C(KC_Z), C(KC_X), C(KC_C), C(KC_V), XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_ADJUST] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RM_TOGG, RM_VALU, RM_VALD, XXXXXXX, XXXXXXX, XXXXXXX, + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, CG_TOGG, XXXXXXX, RM_NEXT, RM_PREV, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + // clang-format on +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [1] = {ENCODER_CCW_CW(KC_PGUP, KC_PGDN)}, + [2] = {ENCODER_CCW_CW(_______, _______)}, + [3] = {ENCODER_CCW_CW(_______, _______)}, +}; +#endif diff --git a/keyboards/sofle_pico/keymaps/default/readme.md b/keyboards/sofle_pico/keymaps/default/readme.md new file mode 100644 index 0000000000..a15159d07c --- /dev/null +++ b/keyboards/sofle_pico/keymaps/default/readme.md @@ -0,0 +1,10 @@ +![SofleKeyboard default keymap](https://i.imgur.com/MZxVvm9.png) +![SofleKeyboard adjust layer](https://i.imgur.com/f5sKy0I.png) + + +# Default keymap for Sofle Pico Keyboard + +Adapted from the classic Sofle Keyboard by Josef Adamcik. +Simplified to serve as a starting point for further customizations. +Layout in [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/gists/76efb423a46cbbea75465cb468eef7ff) +Left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN. diff --git a/keyboards/sofle_pico/keymaps/default/rules.mk b/keyboards/sofle_pico/keymaps/default/rules.mk new file mode 100644 index 0000000000..7c9bf212a6 --- /dev/null +++ b/keyboards/sofle_pico/keymaps/default/rules.mk @@ -0,0 +1 @@ +TRI_LAYER_ENABLE = yes diff --git a/keyboards/sofle_pico/readme.md b/keyboards/sofle_pico/readme.md new file mode 100644 index 0000000000..34498d0c1b --- /dev/null +++ b/keyboards/sofle_pico/readme.md @@ -0,0 +1,31 @@ +# Sofle Pico Keyboard + +![Sofle Pico](https://i.imgur.com/9VBj3T5.jpeg) +![Sofle Pico PCB](https://i.imgur.com/8SDTm4h.jpeg) +Sofle Pico is a 60% Raspberry Pi Pico powered split keyboard boasting a 4x6 layout with an aggressive columnar stagger. It has 5 "thumb" keys on either side, support for 2-4 rotary encoders, per-key RGB lighting, 128x64 OLEDs and a tenting puck mount. + +- Keyboard Maintainer: [Ryan Neff](https://github.com/JellyTitan) +- Hardware Supported: Sofle Pico PCB v3.5.x, Raspberry Pi Pico +- Hardware Availability: [PCB, Case, Parts List](https://github.com/JellyTitan/Sofle-Pico) + +Remember you have to flash both halves of the keyboard for it to work! + +Make example for this keyboard (after setting up your build environment): + + make sofle_pico:default + +Flashing example for this keyboard: + + make sofle_pico: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** (works after you have flashed once): Hold down the top far corner key while plugging in the keyboard (`~` left half, `-` right half). This will also clear the EEPROM. +- **Physical reset button**: Hold the `BOOT` button on the Pico and press the `RST` button on the Pico, release the the `RST` button before the `BOOT` button. +- **Keycode in layout**: In the default layout, the `Bootloader` keycode is above home row pinky on the right side's adjust layer. + +Once you enter the bootloader, the keyboard will show up as a USB device on your computer, you could drag and drop a `.uf2` firmware file to flash it. diff --git a/keyboards/sofle_pico/sofle_pico.c b/keyboards/sofle_pico/sofle_pico.c new file mode 100644 index 0000000000..b237dfc599 --- /dev/null +++ b/keyboards/sofle_pico/sofle_pico.c @@ -0,0 +1,32 @@ +// Copyright 2024 Ryan Neff (@JellyTitan) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_90; +} + +static void render_logo(void) { + static const char PROGMEM sofle_pico_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0x70, 0xf0, 0xf0, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0xf8, 0xfc, 0x3c, 0x3c, 0x3c, 0x7c, 0xf8, 0xf8, 0xf0, 0x80, 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, 0x3f, 0x3f, 0x7c, 0x78, 0xf8, 0xf8, 0xf0, 0xe0, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xfc, 0x3c, 0x1c, 0x1e, 0x1e, 0x3c, 0xfc, 0xf8, 0xf0, 0xc0, 0x00, 0x1c, 0x1c, 0xff, 0xff, 0xff, 0xff, 0x1c, 0x1c, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xfc, 0xfc, 0xce, 0xce, 0xce, 0xdc, 0xfc, 0xfc, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1e, 0x1e, 0x1e, 0x3c, 0x3c, 0x3c, 0x3e, 0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x00, 0x01, 0x07, + 0x0f, 0x1f, 0x1e, 0x3c, 0x3c, 0x3c, 0x1e, 0x1f, 0x0f, 0x07, 0x03, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x01, 0x07, 0x0f, 0x1f, 0x1f, 0x3c, 0x38, 0x38, 0x3c, 0x1c, 0x1c, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x0e, 0x9e, 0xfc, 0xf8, 0x00, 0x00, 0x8e, 0x8e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 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, 0xff, 0xff, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x7c, 0xfe, 0xff, 0x83, 0x01, 0x01, 0x01, 0x83, 0x83, 0x00, 0x00, 0x7e, 0xff, 0xc7, 0x83, 0x01, 0x01, 0x01, + 0x83, 0xff, 0xff, 0x7c, 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, 0xc3, 0xe3, 0xe0, 0xe0, 0xe0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x30, 0x33, 0x73, 0xe0, 0x60, 0xe0, 0xe0, 0xc0, 0xc1, 0x83, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x70, 0x30, 0x70, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1f, 0xff, 0xf8, 0xd0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x40, 0xc0, 0x80, 0x00, 0x01, 0x87, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xff, 0xff, 0x03, 0x01, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xf0, 0xf8, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x1c, 0x1c, 0x38, 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x38, 0x39, 0xdf, 0xef, 0xf7, 0x7b, 0x39, 0x1c, 0x1c, 0x0e, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x1e, 0x1c, 0x3c, 0x79, 0xfb, 0xf7, 0xef, 0x9f, 0x38, 0x30, 0x70, 0x60, 0x60, 0x60, 0x60, 0x70, 0x38, 0x3c, 0x1c, 0x0f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xfc, 0x7e, 0x7f, 0xff, 0xff, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xff, 0x7f, 0x7f, 0x3f, 0x7c, 0xf8, 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, 0x7f, 0xff, 0x81, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xff, 0xfe, 0x7c, 0x78, 0x78, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x78, 0x78, 0x7c, 0xfe, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 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, 0x01, 0x03, 0x07, 0x0f, 0x0e, 0x1e, 0x3f, 0x7f, 0xf1, 0xe0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xe1, 0xf3, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x07, 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, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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(sofle_pico_logo, sizeof(sofle_pico_logo)); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + render_logo(); + return false; +} + +#endif From a9739f78681dee290ede955c02b360f5c133f783 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 3 Nov 2025 16:05:39 -0800 Subject: [PATCH 156/167] [docs] Replace Imgur-hosted images (#25690) --- .gitignore | 5 ++++ docs/driver_installation_zadig.md | 12 ++++---- docs/easy_maker.md | 2 +- docs/faq_keymap.md | 2 +- docs/features/autocorrect.md | 4 +-- docs/features/backlight.md | 2 +- docs/features/layer_lock.md | 4 +-- docs/features/rgblight.md | 2 +- docs/features/split_keyboard.md | 6 ++-- docs/getting_started_github.md | 10 +++---- docs/hand_wire.md | 28 +++++++++---------- docs/newbs_building_firmware_configurator.md | 2 +- docs/newbs_external_userspace.md | 8 +++--- docs/other_eclipse.md | 2 +- docs/other_vscode.md | 2 +- docs/platformdev_blackpill_f4x1.md | 2 +- docs/platformdev_proton_c.md | 2 +- docs/platformdev_rp2040.md | 4 +-- docs/public/0GNIYY0.jpg | Bin 0 -> 97616 bytes docs/public/1TPAhrs.jpg | Bin 0 -> 117667 bytes docs/public/2wUZNWk.png | Bin 0 -> 7734 bytes docs/public/3RrSjzW.png | Bin 0 -> 10544 bytes docs/public/4wjJzBU.png | Bin 0 -> 4051 bytes docs/public/5wsh5wM.png | Bin 0 -> 47259 bytes docs/public/8Toomz4.jpg | Bin 0 -> 27480 bytes docs/public/AvXZShD.jpg | Bin 0 -> 94653 bytes docs/public/BPEC5n5.jpg | Bin 0 -> 38514 bytes docs/public/BmAvoUC.png | Bin 0 -> 17960 bytes docs/public/Bu4mk9m.png | Bin 0 -> 3447 bytes docs/public/CWYmsk8.png | Bin 0 -> 31676 bytes docs/public/CnASmPo.jpg | Bin 0 -> 289270 bytes docs/public/DkEhj9x.png | Bin 0 -> 8998 bytes docs/public/DxMHpJ8.jpg | Bin 0 -> 32520 bytes docs/public/EGrPM1L.png | Bin 0 -> 28464 bytes docs/public/EVkxOt1.png | Bin 0 -> 65661 bytes docs/public/FRShcLD.png | Bin 0 -> 41983 bytes docs/public/HL5DP8H.png | Bin 0 -> 11250 bytes docs/public/Hx0E5kC.png | Bin 0 -> 9873 bytes docs/public/JKngtTw.png | Bin 0 -> 5700 bytes docs/public/JcDhZll.png | Bin 0 -> 13471 bytes docs/public/N1NYcSz.jpg | Bin 0 -> 32344 bytes docs/public/Ojydlaj.jpg | Bin 0 -> 40688 bytes docs/public/QeY6kMQ.png | Bin 0 -> 3572 bytes docs/public/QiA3ta6.jpg | Bin 0 -> 164162 bytes docs/public/RFyNMlL.jpg | Bin 0 -> 166582 bytes docs/public/UlJ4ZDP.png | Bin 0 -> 26297 bytes docs/public/aEs2RuA.png | Bin 0 -> 3784 bytes docs/public/aTnG8TV.jpg | Bin 0 -> 46839 bytes docs/public/anw9cOL.png | Bin 0 -> 82094 bytes docs/public/b4b7KDb.jpg | Bin 0 -> 288162 bytes docs/public/b8VgXzx.png | Bin 0 -> 9653 bytes docs/public/eGO0ohO.jpg | Bin 0 -> 11793 bytes docs/public/eHJjmnU.jpg | Bin 0 -> 123338 bytes docs/public/fmDvDzR.png | Bin 0 -> 12205 bytes docs/public/hcegguh.png | Bin 0 -> 19408 bytes docs/public/mBe5vkL.jpg | Bin 0 -> 78381 bytes docs/public/nCgeolTh.png | Bin 0 -> 201338 bytes docs/public/nLaiYDE.jpg | Bin 0 -> 222428 bytes docs/public/o7WLvBl.png | Bin 0 -> 3524 bytes docs/public/oHYR1yW.png | Bin 0 -> 18766 bytes docs/public/oITudbX.jpg | Bin 0 -> 444216 bytes docs/public/vkYVo66.jpg | Bin 0 -> 44280 bytes docs/public/z2QlKfB.jpg | Bin 0 -> 260874 bytes docs/public/zmwOL5P.png | Bin 0 -> 35246 bytes docs/reference_configurator_support.md | 18 +++++++++--- 65 files changed, 66 insertions(+), 51 deletions(-) create mode 100644 docs/public/0GNIYY0.jpg create mode 100644 docs/public/1TPAhrs.jpg create mode 100644 docs/public/2wUZNWk.png create mode 100644 docs/public/3RrSjzW.png create mode 100644 docs/public/4wjJzBU.png create mode 100644 docs/public/5wsh5wM.png create mode 100644 docs/public/8Toomz4.jpg create mode 100644 docs/public/AvXZShD.jpg create mode 100644 docs/public/BPEC5n5.jpg create mode 100644 docs/public/BmAvoUC.png create mode 100644 docs/public/Bu4mk9m.png create mode 100644 docs/public/CWYmsk8.png create mode 100644 docs/public/CnASmPo.jpg create mode 100644 docs/public/DkEhj9x.png create mode 100644 docs/public/DxMHpJ8.jpg create mode 100644 docs/public/EGrPM1L.png create mode 100644 docs/public/EVkxOt1.png create mode 100644 docs/public/FRShcLD.png create mode 100644 docs/public/HL5DP8H.png create mode 100644 docs/public/Hx0E5kC.png create mode 100644 docs/public/JKngtTw.png create mode 100644 docs/public/JcDhZll.png create mode 100644 docs/public/N1NYcSz.jpg create mode 100644 docs/public/Ojydlaj.jpg create mode 100644 docs/public/QeY6kMQ.png create mode 100644 docs/public/QiA3ta6.jpg create mode 100644 docs/public/RFyNMlL.jpg create mode 100644 docs/public/UlJ4ZDP.png create mode 100644 docs/public/aEs2RuA.png create mode 100644 docs/public/aTnG8TV.jpg create mode 100644 docs/public/anw9cOL.png create mode 100644 docs/public/b4b7KDb.jpg create mode 100644 docs/public/b8VgXzx.png create mode 100644 docs/public/eGO0ohO.jpg create mode 100644 docs/public/eHJjmnU.jpg create mode 100644 docs/public/fmDvDzR.png create mode 100644 docs/public/hcegguh.png create mode 100644 docs/public/mBe5vkL.jpg create mode 100644 docs/public/nCgeolTh.png create mode 100644 docs/public/nLaiYDE.jpg create mode 100644 docs/public/o7WLvBl.png create mode 100644 docs/public/oHYR1yW.png create mode 100644 docs/public/oITudbX.jpg create mode 100644 docs/public/vkYVo66.jpg create mode 100644 docs/public/z2QlKfB.jpg create mode 100644 docs/public/zmwOL5P.png diff --git a/.gitignore b/.gitignore index 5886640d68..6ec26d3876 100644 --- a/.gitignore +++ b/.gitignore @@ -95,6 +95,11 @@ tags *.mpeg *.ttf *.otf +# Un-ignore limited image file formats in docs +!docs/public/**.gif +!docs/public/**.jpg +!docs/public/**.jpeg +!docs/public/**.png # Things Travis sees /.vs diff --git a/docs/driver_installation_zadig.md b/docs/driver_installation_zadig.md index 1a5bd1cc34..6fbcfa3bff 100644 --- a/docs/driver_installation_zadig.md +++ b/docs/driver_installation_zadig.md @@ -22,7 +22,7 @@ If Zadig lists one or more devices with the `HidUsb` driver, your keyboard is pr If the arrow appears green, select the driver, and click **Install Driver**. See the [list of known bootloaders](#list-of-known-bootloaders) for the correct driver to install. -![Zadig with a bootloader driver correctly installed](https://i.imgur.com/b8VgXzx.png) +![Zadig with a bootloader driver correctly installed](/b8VgXzx.png) Finally, unplug and replug the keyboard to make sure the new driver has been loaded. If you are using the QMK Toolbox to flash, exit and restart it too, as it can sometimes fail to recognize the driver change. @@ -30,15 +30,15 @@ Finally, unplug and replug the keyboard to make sure the new driver has been loa If you find that you can no longer type with the keyboard, you may have accidentally replaced the driver for the keyboard itself instead of for the bootloader. This can happen when the keyboard is not in the bootloader mode. You can easily confirm this in Zadig - a healthy keyboard has the `HidUsb` driver installed on all of its interfaces: -![A healthy keyboard as seen by Zadig](https://i.imgur.com/Hx0E5kC.png) +![A healthy keyboard as seen by Zadig](/Hx0E5kC.png) Open the Device Manager, select **View → Devices by container**, and look for an entry with your keyboard's name. -![The board with the wrong driver installed, in Device Manager](https://i.imgur.com/o7WLvBl.png) +![The board with the wrong driver installed, in Device Manager](/o7WLvBl.png) Right-click each entry and hit **Uninstall device**. Make sure to tick **Delete the driver software for this device** first if it appears. -![The Device Uninstall dialog, with the "delete driver" checkbox ticked](https://i.imgur.com/aEs2RuA.png) +![The Device Uninstall dialog, with the "delete driver" checkbox ticked](/aEs2RuA.png) Click **Action → Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again! Otherwise, repeat this process until Zadig reports the correct driver. @@ -54,11 +54,11 @@ Open the Device Manager, select **View → Devices by container**, and look for Find the `Inf name` value in the Details tab of the device properties. This should generally be something like `oemXX.inf`: -![Device properties showing the Inf name value](https://i.imgur.com/Bu4mk9m.png) +![Device properties showing the Inf name value](/Bu4mk9m.png) Then, open a new Command Prompt window as an Administrator (type in `cmd` into the Start menu and press Ctrl+Shift+Enter). Run `pnputil /enum-drivers` to verify the `Inf name` matches the `Published Name` field of one of the entries: -![pnputil output with matching driver highlighted](https://i.imgur.com/3RrSjzW.png) +![pnputil output with matching driver highlighted](/3RrSjzW.png) Run `pnputil /delete-driver oemXX.inf /uninstall`. This will delete the driver and remove it from any devices using it. Note that this will not uninstall the device itself. diff --git a/docs/easy_maker.md b/docs/easy_maker.md index e94477322b..4a6aa1cb61 100644 --- a/docs/easy_maker.md +++ b/docs/easy_maker.md @@ -24,7 +24,7 @@ As its name implies Direct Pin works by connecting one switch per pin. The other Here is a schematic showing how we connect a single button to pin A3 on a ProMicro: -![Schematic diagram showing a ProMicro with a wire coming out of A3, connecting to the left side of a switch. Another wire comes out of the right side of the switch to connect to the Ground Plane.](https://i.imgur.com/JcDhZll.png) +![Schematic diagram showing a ProMicro with a wire coming out of A3, connecting to the left side of a switch. Another wire comes out of the right side of the switch to connect to the Ground Plane.](/JcDhZll.png) Once you have wired your switches you can assign keycodes to each pin and build a firmware by selecting the MCU you are using from the Keyboard dropdown. Use this link to show only Easy Maker Direct Pin: diff --git a/docs/faq_keymap.md b/docs/faq_keymap.md index 05bd4fed3e..dbaf7de991 100644 --- a/docs/faq_keymap.md +++ b/docs/faq_keymap.md @@ -13,7 +13,7 @@ Keycodes are actually defined in [quantum/keycode.h](https://github.com/qmk/qmk_ There are 3 standard keyboard layouts in use around the world- ANSI, ISO, and JIS. North America primarily uses ANSI, Europe and Africa primarily use ISO, and Japan uses JIS. Regions not mentioned typically use either ANSI or ISO. The keycodes corresponding to these layouts are shown here: -![Keyboard Layout Image](https://i.imgur.com/5wsh5wM.png) +![Keyboard Layout Image](/5wsh5wM.png) ## How Can I Make Custom Names For Complex Keycodes? diff --git a/docs/features/autocorrect.md b/docs/features/autocorrect.md index df3f2e0fd8..57024f2cd2 100644 --- a/docs/features/autocorrect.md +++ b/docs/features/autocorrect.md @@ -8,7 +8,7 @@ The feature maintains a small buffer of recent key presses. On each key press, i The tricky part is how to efficiently check the buffer for typos. We don’t want to spend too much memory or time on storing or searching the typos. A good solution is to represent the typos with a trie data structure. A trie is a tree data structure where each node is a letter, and words are formed by following a path to one of the leaves. -![An example trie](https://i.imgur.com/HL5DP8H.png) +![An example trie](/HL5DP8H.png) Since we search whether the buffer ends in a typo, we store the trie writing in reverse. The trie is queried starting from the last letter, then second to last letter, and so on, until either a letter doesn’t match or we reach a leaf, meaning a typo was found. @@ -279,7 +279,7 @@ All autocorrection data is stored in a single flat array autocorrect_data. Each * 01 ⇒ branching node: a trie node with multiple children. * 10 ⇒ leaf node: a leaf, corresponding to a typo and storing its correction. -![An example trie](https://i.imgur.com/HL5DP8H.png) +![An example trie](/HL5DP8H.png) **Branching node**. Each branch is encoded with one byte for the keycode (KC_A–KC_Z) followed by a link to the child node. Links between nodes are 16-bit byte offsets relative to the beginning of the array, serialized in little endian order. diff --git a/docs/features/backlight.md b/docs/features/backlight.md index 20f84ac6b5..87d5a36c00 100644 --- a/docs/features/backlight.md +++ b/docs/features/backlight.md @@ -227,7 +227,7 @@ In this typical example, the backlight LEDs are all connected in parallel toward A pulldown resistor is also placed between the gate pin and ground to keep it at a defined state when it is not otherwise being driven by the MCU. The values of these resistors are not critical - see [this Electronics StackExchange question](https://electronics.stackexchange.com/q/68748) for more information. -![Backlight example circuit](https://i.imgur.com/BmAvoUC.png) +![Backlight example circuit](/BmAvoUC.png) ## API {#api} diff --git a/docs/features/layer_lock.md b/docs/features/layer_lock.md index aaf323accc..27856ada26 100644 --- a/docs/features/layer_lock.md +++ b/docs/features/layer_lock.md @@ -35,12 +35,12 @@ layer. Consider a keymap with the following base layer. -![Base layer with a MO(NAV) key.](https://i.imgur.com/DkEhj9x.png) +![Base layer with a MO(NAV) key.](/DkEhj9x.png) The highlighted key is a momentary layer switch `MO(NAV)`. Holding it accesses a navigation layer. -![Nav layer with a Layer Lock key.](https://i.imgur.com/2wUZNWk.png) +![Nav layer with a Layer Lock key.](/2wUZNWk.png) Holding the NAV key is fine for brief use, but awkward to continue holding when diff --git a/docs/features/rgblight.md b/docs/features/rgblight.md index 43e3781f8d..20d32c4f5a 100644 --- a/docs/features/rgblight.md +++ b/docs/features/rgblight.md @@ -55,7 +55,7 @@ Changing the **Hue** cycles around the circle.
Changing the **Saturation** moves between the inner and outer sections of the wheel, affecting the intensity of the color.
Changing the **Value** sets the overall brightness.
-![QMK Color Wheel with HSV Values](https://i.imgur.com/vkYVo66.jpg) +![QMK Color Wheel with HSV Values](/vkYVo66.jpg) ## Keycodes diff --git a/docs/features/split_keyboard.md b/docs/features/split_keyboard.md index 4b299b14f8..a6fbad1c8f 100644 --- a/docs/features/split_keyboard.md +++ b/docs/features/split_keyboard.md @@ -91,11 +91,11 @@ SPLIT_TRANSPORT = custom Configuring your layout in a split keyboard works slightly differently to a non-split keyboard. Take for example the following layout. The top left numbers refer to the matrix row and column, and the bottom right are the order of the keys in the layout: -![Physical layout](https://i.imgur.com/QeY6kMQ.png) +![Physical layout](/QeY6kMQ.png) Since the matrix scanning procedure operates on entire rows, it first populates the left half's rows, then the right half's. Thus, the matrix as QMK views it has double the rows instead of double the columns: -![Matrix](https://i.imgur.com/4wjJzBU.png) +![Matrix](/4wjJzBU.png) ### Setting Handedness @@ -497,7 +497,7 @@ Once you have done that, you will want to solder the diode from the 5V pad to th You may need to use the 5V pad from the regulator block above as the pads were too small and placed too closely together to place the Schottky diode properly. -![Teensy++ 2.0](https://i.imgur.com/BPEC5n5.png) +![Teensy++ 2.0](/BPEC5n5.jpg) ## Additional Resources diff --git a/docs/getting_started_github.md b/docs/getting_started_github.md index b8587dbb13..4cc9978d3d 100644 --- a/docs/getting_started_github.md +++ b/docs/getting_started_github.md @@ -8,15 +8,15 @@ This guide assumes you're somewhat comfortable with running things at the comman Start on the [QMK GitHub page](https://github.com/qmk/qmk_firmware), and you'll see a button in the upper right that says "Fork": -![Fork on GitHub](https://i.imgur.com/8Toomz4.jpg) +![Fork on GitHub](/8Toomz4.jpg) If you're a part of an organization, you'll need to choose which account to fork it to. In most circumstances, you'll want to fork it to your personal account. Once your fork is completed (sometimes this takes a little while), click the "Clone or Download" button: -![Download from GitHub](https://i.imgur.com/N1NYcSz.jpg) +![Download from GitHub](/N1NYcSz.jpg) And be sure to select "HTTPS", and select the link and copy it: -![HTTPS link](https://i.imgur.com/eGO0ohO.jpg) +![HTTPS link](/eGO0ohO.jpg) From here, enter `git clone --recurse-submodules ` into the command line, and then paste your link: @@ -57,10 +57,10 @@ To https://github.com/whoeveryouare/qmk_firmware.git Your changes now exist on your fork on GitHub - if you go back there (`https://github.com//qmk_firmware`), you can create a "New Pull Request" by clicking this button: -![New Pull Request](https://i.imgur.com/DxMHpJ8.jpg) +![New Pull Request](/DxMHpJ8.jpg) Here you'll be able to see exactly what you've committed - if it all looks good, you can finalize it by clicking "Create Pull Request": -![Create Pull Request](https://i.imgur.com/Ojydlaj.jpg) +![Create Pull Request](/Ojydlaj.jpg) After submitting, we may talk to you about your changes, ask that you make changes, and eventually accept it! Thanks for contributing to QMK :) diff --git a/docs/hand_wire.md b/docs/hand_wire.md index 492ca384b1..25be46fdb7 100644 --- a/docs/hand_wire.md +++ b/docs/hand_wire.md @@ -36,12 +36,12 @@ What you want to achieve is one leg from each switch being attached to the corre It is fairly simple to plan for an ortholinear keyboard (like a Planck). -![Example Planck matrix](https://i.imgur.com/FRShcLD.png) +![Example Planck matrix](/FRShcLD.png) Image from [RoastPotatoes' "How to hand wire a Planck"](https://blog.roastpotatoes.co/guide/2015/11/04/how-to-handwire-a-planck/) But the larger and more complicated your keyboard, the more complex the matrix. [Keyboard Firmware Builder](https://kbfirmware.com/) can help you plan your matrix layout (shown here with a basic fullsize ISO keyboard imported from [Keyboard Layout Editor](https://www.keyboard-layout-editor.com). -![Example ISO matrix](https://i.imgur.com/UlJ4ZDP.png) +![Example ISO matrix](/UlJ4ZDP.png) Bear in mind that the number of rows plus the number of columns can not exceed the number of I/O pins on your controller. So the fullsize matrix shown above would be possible on a Proton C or Teensy++, but not on a regular Teensy or Pro Micro. @@ -51,14 +51,14 @@ Bear in mind that the number of rows plus the number of columns can not exceed t | :------------ |:-------------:| ------:| ------ | | Pro Micro* | ATmega32u4 | 20 | [link](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro#Teensy++_2.0) | | Teensy 2.0 | ATmega32u4 | 25 | [link](https://www.pjrc.com/teensy/pinout.html) | -| [QMK Proton C](https://qmk.fm/proton-c/) | STM32F303xC | 36 | [link 1](https://i.imgur.com/RhtrAlc.png), [2](https://deskthority.net/wiki/QMK_Proton_C) | +| [QMK Proton C](https://qmk.fm/proton-c/) | STM32F303xC | 36 | [link 1](https://qmk.fm/proton-c-pinout.jpg), [2](https://deskthority.net/wiki/QMK_Proton_C) | | Teensy++ 2.0 | AT90USB1286 | 46 | [link](https://www.pjrc.com/teensy/pinout.html#Teensy_2.0) | *Elite C is essentially the same as a Pro Micro with a USB-C instead of Micro-USB There are also a number of boards designed specifically for handwiring that mount directly to a small number of switches and offer pinouts for the rest. Though these are generally more expensive and may be more difficult to get hold of. -Postage board mini mounted in place +Postage board mini mounted in place | Board | Controller | # I/O | | :------------ |:-------------:| ------:| @@ -74,13 +74,13 @@ Established materials and techniques include: | Technique | Examples | Pros | Cons | Image | :-----------| :------- | :------ | :--- | :--- -| Lengths of wire with stripped segments | [Sasha Solomon's Dactyl](https://medium.com/@sachee/building-my-first-keyboard-and-you-can-too-512c0f8a4c5f) and [Cribbit's modern hand wire](https://geekhack.org/index.php?topic=87689.0) | Neat and tidy | Some effort in stripping the wire | ![Stripped wire](https://i.imgur.com/0GNIYY0.jpg) -| Short lengths of wire | [u/xicolinguada's ortho build](https://www.reddit.com/r/MechanicalKeyboards/comments/c39k4f/my_first_hand_wired_keyboard_its_not_perfect_but/) | Easier to strip the wire | More difficult to place | ![individual wire lengths](https://i.imgur.com/mBe5vkL.jpg) -| Magnet/Enamelled wire | [fknraiden's custom board](https://geekhack.org/index.php?topic=74223.0) | Can be directly soldered onto (insulation burns off with heat) | Appearance? | ![Magnet wire](https://i.imgur.com/b4b7KDb.jpg) -| Bending the legs of the diodes for the rows | [Matt3o's Brownfox](https://deskthority.net/viewtopic.php?f=7&t=6050) | Fewer solder joints required | Uninsulated | ![Bent diode legs](https://i.imgur.com/aTnG8TV.jpg) -| Using rigid wiring (e.g. brass tube) | [u/d_stilgar's invisible hardline](https://www.reddit.com/r/MechanicalKeyboards/comments/8aw5j2/invisible_hardline_keyboard_progress_update_april/) and [u/jonasfasler's first attempt](https://www.reddit.com/r/MechanicalKeyboards/comments/de1jyv/my_first_attempt_at_handwiring_a_keyboard/) | Very pretty | More difficult. No physical insulation | ![Hardline hand wire](https://i.imgur.com/CnASmPo.jpg) -| Bare wire with insulation added after (e.g. kapton tape) | [Matt3o's 65% on his website](https://matt3o.com/hand-wiring-a-custom-keyboard/) | Easier (no wire stripping required) | Not as attractive | ![Bare wire](https://i.imgur.com/AvXZShD.jpg) -| Copper tape | [ManuForm Dactyl](https://github.com/tshort/dactyl-keyboard) | Very easy | Only really works when your plate/case aligns with the bottom of your switches | ![Copper tape](https://i.imgur.com/RFyNMlL.jpg) +| Lengths of wire with stripped segments | [Sasha Solomon's Dactyl](https://medium.com/@sachee/building-my-first-keyboard-and-you-can-too-512c0f8a4c5f) and [Cribbit's modern hand wire](https://geekhack.org/index.php?topic=87689.0) | Neat and tidy | Some effort in stripping the wire | ![Stripped wire](/0GNIYY0.jpg) +| Short lengths of wire | [u/xicolinguada's ortho build](https://www.reddit.com/r/MechanicalKeyboards/comments/c39k4f/my_first_hand_wired_keyboard_its_not_perfect_but/) | Easier to strip the wire | More difficult to place | ![individual wire lengths](/mBe5vkL.jpg) +| Magnet/Enamelled wire | [fknraiden's custom board](https://geekhack.org/index.php?topic=74223.0) | Can be directly soldered onto (insulation burns off with heat) | Appearance? | ![Magnet wire](/b4b7KDb.jpg) +| Bending the legs of the diodes for the rows | [Matt3o's Brownfox](https://deskthority.net/viewtopic.php?f=7&t=6050) | Fewer solder joints required | Uninsulated | ![Bent diode legs](/aTnG8TV.jpg) +| Using rigid wiring (e.g. brass tube) | [u/d_stilgar's invisible hardline](https://www.reddit.com/r/MechanicalKeyboards/comments/8aw5j2/invisible_hardline_keyboard_progress_update_april/) and [u/jonasfasler's first attempt](https://www.reddit.com/r/MechanicalKeyboards/comments/de1jyv/my_first_attempt_at_handwiring_a_keyboard/) | Very pretty | More difficult. No physical insulation | ![Hardline hand wire](/CnASmPo.jpg) +| Bare wire with insulation added after (e.g. kapton tape) | [Matt3o's 65% on his website](https://matt3o.com/hand-wiring-a-custom-keyboard/) | Easier (no wire stripping required) | Not as attractive | ![Bare wire](/AvXZShD.jpg) +| Copper tape | [ManuForm Dactyl](https://github.com/tshort/dactyl-keyboard) | Very easy | Only really works when your plate/case aligns with the bottom of your switches | ![Copper tape](/RFyNMlL.jpg) Note that these methods can be combined. Prepare your lengths of wire before moving on to soldering. @@ -97,11 +97,11 @@ There are a lot of soldering guides and tips available elsewhere but here are so To ensure a strong solder joint you want a good amount of contact between the solder and the two pieces of metal you are connecting. A good way of doing this (though not required) is looping around pins or twisting wires together before applying solder. -Looped around rod Looped diode leg +Looped around rod If your diodes are on a packaging strip and need a bend in them (either the start of a loop or for connecting to its neighbour) this can easily done by bending it over something straight like the edge of a box, table, or ruler. This also helps keep track of the direction of the diode as all the bends will be on the same side. -Bent diode legs +Bent diode legs If your iron has temperature control, set it to 315ºC (600ºF). @@ -164,7 +164,7 @@ Cut wires to the length of the distance from the a point on each column/row to t Ribbon cable can be used to keep this extra tidy. You may also want to consider routing the wires beneath the existing columns/rows. -Ribbon Cable +Ribbon Cable As you solder the wires to the controller make a note of which row/column is going to which pin on the controller as we'll use this data to setup the matrix when we create the firmware. diff --git a/docs/newbs_building_firmware_configurator.md b/docs/newbs_building_firmware_configurator.md index 85522e405c..6d441311dc 100644 --- a/docs/newbs_building_firmware_configurator.md +++ b/docs/newbs_building_firmware_configurator.md @@ -1,6 +1,6 @@ # QMK Configurator -[![QMK Configurator Screenshot](https://i.imgur.com/anw9cOL.png)](https://config.qmk.fm/) +[![QMK Configurator Screenshot](/anw9cOL.png)](https://config.qmk.fm/) The [QMK Configurator](https://config.qmk.fm) is an online graphical user interface that generates QMK Firmware `.hex` or `.bin` files. diff --git a/docs/newbs_external_userspace.md b/docs/newbs_external_userspace.md index fdc998c37a..9f818f46f9 100644 --- a/docs/newbs_external_userspace.md +++ b/docs/newbs_external_userspace.md @@ -32,11 +32,11 @@ Building locally has a much shorter turnaround time than waiting for GitHub Acti A basic skeleton External Userspace repository can be found [here](https://github.com/qmk/qmk_userspace). If you wish to keep your keymaps on GitHub (strongly recommended!), you can fork the repository and use it as a base: -![Userspace Fork](https://i.imgur.com/hcegguh.png) +![Userspace Fork](/hcegguh.png) Going ahead with your fork will copy it to your account, at which point you can clone it to your local machine and begin adding your keymaps: -![Userspace Clone](https://i.imgur.com/CWYmsk8.png) +![Userspace Clone](/CWYmsk8.png) ```sh cd $HOME @@ -99,8 +99,8 @@ All firmware builds you've added to the External Userspace build targets will be GitHub Actions can be used to automatically build your keymaps whenever you push changes to your External Userspace repository. If you have set up your list of build targets, this is as simple as enabling workflows in the GitHub repository settings: -![Repo Settings](https://i.imgur.com/EVkxOt1.png) +![Repo Settings](/EVkxOt1.png) Any push will result in compilation of all configured builds, and once completed a new release containing the newly-minted firmware files will be created on GitHub, which you can subsequently download and flash to your keyboard: -![Releases](https://i.imgur.com/zmwOL5P.png) +![Releases](/zmwOL5P.png) diff --git a/docs/other_eclipse.md b/docs/other_eclipse.md index 5a0228efce..1745f08932 100644 --- a/docs/other_eclipse.md +++ b/docs/other_eclipse.md @@ -66,7 +66,7 @@ Once both plugins are installed, restart Eclipse as prompted. * Select the _AVR-GCC Toolchain_; * Keep the rest as-is and click Finish - ![Importing QMK in Eclipse](https://i.imgur.com/oHYR1yW.png) + ![Importing QMK in Eclipse](/oHYR1yW.png) 3. The project will now be loaded and indexed. Its files can be browsed easily through the _Project Explorer_ on the left. diff --git a/docs/other_vscode.md b/docs/other_vscode.md index 0b39746a6e..3bd7e3f44f 100644 --- a/docs/other_vscode.md +++ b/docs/other_vscode.md @@ -174,7 +174,7 @@ You'll need to perform some modifications to the file above in order to target y * `"armToolchainPath"`: _[Optional]_ The path to the ARM toolchain installation location on Windows -- under normal circumstances Linux/macOS will auto-detect this correctly and will not need to be specified. ::: warning -Windows builds of QMK Firmware are generally compiled using QMK MSYS, and the path to gdb's location (`C:\\QMK_MSYS\\mingw64\\bin`) needs to be specified under `armToolchainPath` for it to be detected. You may also need to change the GDB path to point at `C:\\QMK_MSYS\\mingw64\\bin\\gdb-multiarch.exe` in the VSCode Cortex-Debug user settings: ![VSCode Settings](https://i.imgur.com/EGrPM1L.png) +Windows builds of QMK Firmware are generally compiled using QMK MSYS, and the path to gdb's location (`C:\\QMK_MSYS\\mingw64\\bin`) needs to be specified under `armToolchainPath` for it to be detected. You may also need to change the GDB path to point at `C:\\QMK_MSYS\\mingw64\\bin\\gdb-multiarch.exe` in the VSCode Cortex-Debug user settings: ![VSCode Settings](/EGrPM1L.png) ::: The following modifications must be made to the keyboard's `rules.mk` file to enable debug information and disable optimisations -- this will ensure breakpoints and variable viewing works correctly: diff --git a/docs/platformdev_blackpill_f4x1.md b/docs/platformdev_blackpill_f4x1.md index a8d21c255c..e9af534e58 100644 --- a/docs/platformdev_blackpill_f4x1.md +++ b/docs/platformdev_blackpill_f4x1.md @@ -7,7 +7,7 @@ The WeAct Blackpill is a popular choice for handwired boards, as it offers a pow * [WeAct GitHub for F4x1 Blackpill](https://github.com/WeActStudio/WeActStudio.MiniSTM32F4x1) * Unfortunately, due to supply issues official WeAct F411 based blackpills may not be available. -![Blackpill F411](https://i.imgur.com/nCgeolTh.png) +![Blackpill F411](/nCgeolTh.png) ## Pin Usage Limitations diff --git a/docs/platformdev_proton_c.md b/docs/platformdev_proton_c.md index 3afec893fa..16eeb7b28a 100644 --- a/docs/platformdev_proton_c.md +++ b/docs/platformdev_proton_c.md @@ -2,7 +2,7 @@ The Proton C is an Arm STM32F303xC based drop-in replacement for the Pro Micro. -Proton C +Proton C #### Features diff --git a/docs/platformdev_rp2040.md b/docs/platformdev_rp2040.md index 1269ffeeb5..346cae58dc 100644 --- a/docs/platformdev_rp2040.md +++ b/docs/platformdev_rp2040.md @@ -17,8 +17,8 @@ The following table shows the current driver status for peripherals on RP2040 MC ## GPIO -Raspberry Pi Pico pinout -Sparkfun RP2040 Pro Micro pinout +Raspberry Pi Pico pinout +Sparkfun RP2040 Pro Micro pinout ::: warning The GPIO pins of the RP2040 are not 5V tolerant! diff --git a/docs/public/0GNIYY0.jpg b/docs/public/0GNIYY0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ccf2f5dcbedf4853d34ed86762c0863342f981ef GIT binary patch literal 97616 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 literal 0 HcmV?d00001 diff --git a/docs/public/1TPAhrs.jpg b/docs/public/1TPAhrs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1629c8f3a5c6f4f635145213bf808d0e33b6a7a6 GIT binary patch literal 117667 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 w$;`8Co75Pr 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%0DW#kDWQXy3cIuT!!%8 zx%(&WvF5U2y9&UYMtM)y?eRr@`WS(O8#leHT+}we}q9-fRTZTk(rT$ ziJ1`u7#J8C1QiV(0}}-b8z(N@_~E0$MTLV89TEZx8vcWBCS+t_v{(Gk@Wo|~!=v0z z??ZQ@PMa6(F+LL}xmqeZqSWKaL7$(#!QKm`zqAIVc1L6gTv>BmwzJss`IdlkpLv`O zUmJg3%eYcI@jt`eKl;MYch0w7qnn}bW+2Sa7`EoQo)EW)yrf63)|N*xy3)Qs5`?#Y zFnYXCa>qS}?|u*KxwHQ>R8?^VGqPM#-@{-2?;j5$y*y!FM3v*N$>!a7Rq=fBa^ z{?G70Mf%8B7Vp51^K0#H)qeT?^84lY%WwMcn4il3W%&(fU(pPOTk8MreOr;E-ILQL zbwr0@X2cP$M~tCbcFGzpxl?18UA%MV&Z^95)*gu_TNG9q3OC*Vcj@WTTiJreyi;FF zK6g87l`nc|%MzX&vWrhgbi2rGx}$$xamk^HvC_W&S+bv=o}T`nVZ+X1|7^*wdy3s5 z1}_Z07;^0FjVSL}ePJf&5xx5^mR2s3T#KGHZ|iuwcYn>7*w)k2^*7XiwKaF~<2Y!$ z@xi(HQ>FWY*M6FLb?vu}!O?ek4P??I%&tbR2sFPpRqe&8H+@>FUp8>uc6v9#BoRYB% z5>|(H#~wPnPWkd0iz$zkCNpl2yU26Lt0OTsx1YoN)wE58HxzY_C`TK6E}HFqswZ;G zF>erw8;EQ^5Ub;(8MMmm!kpJPFYP_{N9w3t=xVX}U!gB29NIhS{k6Nw zLRY!3E&KK8(kast&b(RX)-sK^5`5<-PcJUxxpT>E%C?C)x|YfZvIU(PJGOXrHt!2@ zX4`b?#cqjJwkBTd#7YKpZ$%1$xIR26Bo7yJPA~A>($)L$L?Q2)%mgi+y%)EN zOf8)EgX3A1-?>hmhUbE{&W%T2s4h!#vXXnr9HJw5?_)}~oL!pz-@mof|1%t!x9?!@ z$44{T&amzci&*E*v+8L?#-?58CT$LhJfF{@_*>*sR+(Co*;jQdDA;eH}l4Q7Pjvy?@2k_rC9aUw!ZUR?|DDotfAC!UNaZH?sdp>}#7Edww?>-02U8j_NY` zg_tKX7>#1ieeHMGIp7x(1GXEb>zMf^bWP$GpR60&n_it+?zV0r%hkxk5qG1l{Qfi4TV6V| z?R{@VUg6q;4Axt*zL{35n(7>PF8lUsWns>xxG8Iw8S9rGIkqe3S*)tVRbhi&8w5-@ z9Et9AG=HbpXwth*E%EGrn@OH3lRU1O_AN2AIQdlj!}LE9f2qP8cXdyW}&d<=$$?foj|ew3_)AkJj|pIytrR0Iy*UF;q{fbUkG1L<8XDF zJ3%OPldJ-(gUs3HxZ{t${rh}rL4bm`sHuLi(9F1^v8T*X{3OvzxnY#C#C zUw($PS&P^cPT5UI61mw~%)d0IoP6H@^hN#0SKrlF{q~RTOf`5F6nNiw$Fezef`RLQasb{g*-P|v9t4P7W3Q0L#8uy5ZbE()ex&a}Sa?&


9_Qgo_lU%q;zFzQOS&GfW#qb)FB~8*S;pHJ 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 N_$xpApYi{10sv>IqMQH# literal 0 HcmV?d00001 diff --git a/docs/public/2wUZNWk.png b/docs/public/2wUZNWk.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e5355a4c33fff6f6a6012b814a4901e2f0fa8c GIT binary patch literal 7734 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 literal 0 HcmV?d00001 diff --git a/docs/public/3RrSjzW.png b/docs/public/3RrSjzW.png new file mode 100644 index 0000000000000000000000000000000000000000..af17f0c759103f2318105529d396976867ded790 GIT binary patch literal 10544 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 M)78&qol`;+0I8P>TmS$7 literal 0 HcmV?d00001 diff --git a/docs/public/4wjJzBU.png b/docs/public/4wjJzBU.png new file mode 100644 index 0000000000000000000000000000000000000000..c152bc0a236fbadaa239027cf9cdc94269110ca3 GIT binary patch literal 4051 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≦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

#^{@(=Ur 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

?5^YlKDg|4j*=68P^t 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 B5iS4# literal 0 HcmV?d00001 diff --git a/docs/public/AvXZShD.jpg b/docs/public/AvXZShD.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fc7272e1d6703715d27c765771fb306c29d4ab59 GIT binary patch literal 94653 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

e+6Hn1(oqOJMZ6V9z@~$cI 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 literal 0 HcmV?d00001 diff --git a/docs/public/BmAvoUC.png b/docs/public/BmAvoUC.png new file mode 100644 index 0000000000000000000000000000000000000000..f44fd1ce5c3d903fffcbb5915ac382fff20de249 GIT binary patch literal 17960 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 z z9Wl}E2Y6>QCOnnY)#5vEn7TPcy#0Bl&1^>WL}LV6xGB7?$=ibK2)kpA0J=O5eu@l- od*cs<%yMS|dGx~@8hD=kXKrYJ5UQr4wh5%))78&qol`;+0H9!WPyhe` literal 0 HcmV?d00001 diff --git a/docs/public/Bu4mk9m.png b/docs/public/Bu4mk9m.png new file mode 100644 index 0000000000000000000000000000000000000000..e80e6b751ea1113e0b641c96500dc00745d2a36d GIT binary patch literal 3447 zcmeAS@N?(olHy`uVBq!ia0y~yU^vad!0>>BnSp^}mS55r1_ow^0G|-o4<9}>w@)w- zXJlYtxOwwtK|#UVwQCYIK0pSfAeT-}2%8szw_N3kwV8G!qjOLq-!D>wYE%Q*-9DHEY(I zFqLRhKGj-1qJo>^0runy|lGouXh9o)>O=@x!^U)osqs&J`6E|Ni}RY`pd6?Yr9Ax^?R}Brp4y zv-<3bHY+9u<0xiRE6cR>wzEl=R#Ud!N?dj;clG;w|F=7*ZMCzrOH52`Z*R}d&E2+r zhrcoNrp;SUv?uM_z32M2%*m6d#KoE3y?eJO*1CK3+4C>9=`k>hnDoW4B=A~TB(hko zc=#Y~!GnpXJ8Pm$O^l7eCySuHetzBJR z_4M@o{QUThQ=_A!PpwW8GOpXVZ=a{9=hds%v$C=#Z|h&ae8q-y?{D0^bNKLKyW}o^ zmb5d+x1C&;k!NDXXB@fj-!>hl)G(H)2qu03($4_6(oH=v*wtv&M{p*S4o)vATl-Boi`}R(&^c1W92M-sXKldSJ!F)d^ z=7eQi@7(^MJz+v({egQ27pAqXsxslQZ`@jCVmjkizf=AE;8;tq{;jK4C$=m&5N>P| z-FPe3)GVieYsIqu)HK#j{kE0~Tz4557&r?&B8wRqxP?KOkzv*x2?ho(Sx*YuW_kjfdp$qg`>JqH`(CMxb(zrd z$a8tdv&=FtE%Ur(ayDbuxsvyLzstRR|L)#pF%Or7z0cq4*uN{^_3`if-}}nnzkGKu z_{d3hjYk`Dm^LtQLy^mYN1GDgIH_11*Gk@^l(NurZp73n9XA<2Tgn`Z2yL05TzIF< zx3_chsU)epo>B>udIdx7A6^#K{PMTT@^;tIBN3B?SXW(mI$20PR)5dr^0u2(v`#yS zY&p{1`v0t{(rF7*AI9!N&qbXb&egv^Z=TS)d|TSA)>AxBepCf1ZPb=NnZ2FUB~R?K z-DLA_t;{875@xyfObk;CTjC|9XqL0s)uSn4LtvU=>|x321}8iA-k2zS`}B$pWy@Ec zXsT?_XtZHIq}RW{Lss$Dj8!K(Jr#qM*Y^Ao)GDef@ML;DHDj{?^W)rz9Je3-zr=2K z%-NEAaO2xPmz*tD8)vtcCp9kR5VXBix85}2&87=FdfcluHav?w_hPevqKo04XceZ! z#-kzG3sxy_+Q?x$D=U6MYq7<4;~yI(){2D%I-HgGd~v&>^~56?TYqd6SbQL2gQ4}- zY4X8w2Q6YOWo)M>zu9OQn3j~hl`W|G!}0c3RSq^m(P>xT9c;aJ;`X12j&>z!!*$mu z3-yMDY&4#@)8zay#Yel}h{zmp>ay}sRlc$})Ah`QJNx=`%CfjGChjzUvu2U6i)x6%E8M8ZzJH91Ensbz6(Jf_r}?QOYn%_PCoe~pqNdB0CRz@+nVv&IwQ z2G)p%r>{~Xb(N=8tM6@nDcIJzeM{D-NG0iy_n1$Y3cua=!MR08IDA37>ZN!4E>%r5 zKfOvbIZ#~rNd~t_+}ekWjuidBvN6NrPSV-0%mLY-79HDk>-}o}sY+kg)b(hUMC~oF zi`8`EjXs=OXk4MGJR{CyEyvr=399G5ub$d%w<Z)g@l^H2HC?uckGxaH@5EsKMSn zp*;dcH7Tmij(cACxKAn?)peH|-0iZpK9|1xbMRcU z*y68jY00Z}jN|;iZu)MvdE*h8Bgg){S}c3>O3l0P_WbwbOKvfFtxJA-wBml>WyLQ} z!KG2P!B5{t?L8N3_T$H;pgyfLTG=xbD-BmI)VcF1X^Qlj?|)wjOXcr12@!o)x#sKA zgQjQAIaN!e%J;m_+4m^JVDA>Q_Y1u)YHz!`ReRQ*RCT*|-L?;-h2v_9bu;S z^0i?C<222rnRc;N-={KupIIpUYR`;+xiS%;l*WoeE;*J|KI5pYZ*uPJ7fyWKmWyJx zHMYH7RQU9mi1&4asqH7lW?8gnpESBre?)Sv7=QOJi)9f#_LUEp-}#}VqW+t6&iT^K z65eh}U9NlkPkN*T_xCN>A6v2|(dcig+VSE;JQ8O;)phoKO}c+P-g266|9puL-j8%= zaJfWEoqe)+rvLK&&!TU){Pd`La`XJpl>3toEULO`uvI7C?oO?SrKM%%-#hHrjvqbB ztNvTEFZ9lF=Li#-zfUTc?KhE`%lLSPo53^FIk&(6jIn9e;eNi(|69w_-_LC~)X=# z_~PwSi^6HCv$?prxvTqRdZhQ&-EA%{Ej3PaIdiGCqimhQ=}o@2d;ROzOlVW*xBFU9 z_N_;9%F_dECu93d=ie~8P_NW?LFdg&y9v6RYBDE(iI{iqkIUKMz4tX^ZWtH5Iq}S0 z;J5Fch9^T_?d%UM|_Qba;d3RjZx}HlMi~lQRU3Ku#pKTk2Z)Iz;dX_}KG1EyD zE7WB5+;V%@8KLBl8x0H94Q-95JTDMRR{S^b@XG8H6W^++S?^h!+V(>C`0Pi8_9r|e zzHV~V(pMUF?pw zpOiMU^0{orZ~ZtY=jXygmpuMB9kNZo@QpjOe4b1F&g9>*oSF08=D(T3;r%z3^ZSxB zOR78UBy zrT)CrSHD5z*rp$QO8%%$czX0)i}~HE%D4Rcr*7)qTgi5HXQWZRy6FA(Y>5QMX{#r= zx_$rsVYU#o6##7xbnl5gp`3Z-s+i%fF8v&_@5=Eh2b`XW$DdXx7276r@inh*31`gD zE4K2gv-Z8OOPl;dP2l6n&^ccsSS}tl-%>Fxde+k8Njg6_zn6|W@^o5|O#Bb2PYn*= z+QdH1S@rnPf-b7Iw7*V%5%S@?XCtn>r3%}wSPU4oR(eldv*R&cQ%vXpYoo5Ub#6rPJgAOOT?x%mpglEb z(tL5W@s#s{_r)XY9Neb$o_fB|?fjAL-fsGvgz7GZfd%|e<1?{1B0ilpUXO@geCx+$EUgg literal 0 HcmV?d00001 diff --git a/docs/public/CWYmsk8.png b/docs/public/CWYmsk8.png new file mode 100644 index 0000000000000000000000000000000000000000..2d1f186cef8bd9aff408e1b3dd9cb833c0763fb2 GIT binary patch literal 31676 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 literal 0 HcmV?d00001 diff --git a/docs/public/CnASmPo.jpg b/docs/public/CnASmPo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..128cc806a1821379906c9f165d41fe14d0b25bd5 GIT binary patch literal 289270 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 ZeM>v!7A`H{d$8n&&Ka)oNA>@20s!0Smcjr4 literal 0 HcmV?d00001 diff --git a/docs/public/DkEhj9x.png b/docs/public/DkEhj9x.png new file mode 100644 index 0000000000000000000000000000000000000000..6a31d1f1d20be30848620a97884a827e54d3c504 GIT binary patch literal 8998 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 Jmvv4FO#nAIJBR=P literal 0 HcmV?d00001 diff --git a/docs/public/DxMHpJ8.jpg b/docs/public/DxMHpJ8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..179c2b6b69d68aaa5914b839d7dd0977324aa5b4 GIT binary patch literal 32520 zcmex=qds34#HY%) zZ0=^hotL-gTfd>uuj752{2eU5qB)3BW}@`xlA3ROTj!tNyC%-&*zu*6=aR44^j^&P zT-P`0XrTB+Z=uJzX1?+^;TP`}S$uhK`chNJbYr1t?wnka4dGVnMPJPG^7yK+`6}D! zFkgOD-&Wh|6IH*uE1ocP1w8ND8@A`qOzS(5erGGwgs(j>-ll8fw^I9es(1L#?9*pO zvooVpi^ZyAz8~+qc%HxD`Q;7aj}E4r#GWitMR%yk4y9+WLi6h$&o}O?Dd~&+E|HQu zH_#;F#$}=7G4C4B_f2HEDV-jYb6xGvUBeL0BL!bM)J~k)@JwNP;>^So_azyac%R6; zYn0o}@pVSAx6*>{4HFMui`cBtXV=Jfsi6VQI_z9mz17bBZVzvtvz7SV?`HG(V!!qF z1s6`dKLAqB#zTxDjO%VqayHTSy?y+~gcFyPUOvBe`)=74mbEVrtlT`g<9JH&gx73* zHy&Ln{p3@6Dem&sbHCm)6n-xGEE^LRsunp>^48M4->cp-h??DDn_b-OH!0`v#ptuk zK7bs617BAzSiry>yCJbDwQ(9-gk%B@sXP%Jj=(0&)UF3UVr|3>)keMKEBxexQajQlg-q3 zab7>lf1I6uqrmsslCQ!)=P}><`14=Zx2c;0k6yQ}>wdZ9!Dr967Ju%W?t9#xrLytG zf|uQ$n%2|z&z?T%+-rWt7vZ}XpLRIEVeNwH=9kVt{up;MI@MtT7RR!r3G3@OU)eK% z^^%R=8XQk#<|bfKg# zHaGVr%PpB#eCf4q;pgwCw*I>DCZzPstGNpyC8x&nTPJOL=e9k~`FvV8iPDAvG#7k-OFOHF9F-feB#%ukk9*GpZq1Y=)u>h z)YJMU>1uN~>(<+@DRV!Y5a(0+Uh-vI76XIn?bx>6;nVp0_&4seusinS!Efou&2RDt z2iJdU+1~peHFsWrX+L}XlDxURN6npD#m|L=xF=0M*UVpU=QQ)z=O@aqZ~pALAKicP zzTI@W`<3&jME=9kK|cl7SG<=HMTJ#}}_Z8Z*- zWGQk<+*(zxd{EoNZ`wpz4oh!wJI{yLk3YV8SA6A*^ZCZPBD+3+S339Slfsi|b-kB% ziZ`CD+}kfV-}>UKO5+!AZy))cTY0#y0GvEv1e0y?l&i6qN-P&!2fpxoK4D_uh4R`+1}J<@1niqedx2_xhDh9z7RTW95t=$MP+BLz@oDcwSN3% ziqdynG^aLNWY)dK?USBV_J=My`>*&*z2M=~N3U|Xckh<*%@>nlE4+WG@9paAvBm{L z$2O<9p1wC{Z|UCB{`GI3T#mjgsp5tV6<6#{-#_{I+T@E*=547|Un}RGAExn6CI7sV z*$xj-Sxzf_x%B@L27LhrMiwSUW@ct)7G_8j4b=V;6cS+-78Ou3QcyH>2uLt6b}CR- zF=6|Ei-CiYk%5tw=|4mI`WrWSCt#r7mYD8uX3i-HWM=$wle8inZQQtV-cBa_owHFXX2Vk*1R?Qo$c+t>*e}?Jps3B1`%{icL+a$tyWuykwe3=-pZKKGiOJ#XrgI%EV1(Z%(~qWnc5@ zM&5_RGj`=@{9M24^noK2??f(pyz5xd?x(3sYBrYKns_7SKf|_@AJy-lyZfZ<-Kr%* z=U%-1oSJcal9k1q^Cp+i>U?>1TBSA9s(YQ_pQ_z~8S|g3ANkMla`(sif6mthuh?kT zR~hx{yZX#0^>Pcp=llJ3d4J-3duV6rOT$%5G?%W-J1deu^JA%!{n=@YAFP?U-Xk?u z+o@|`@1Ls0f-+^Z?|OY);@7*bc-4{Tp4=*-t=-%UlNWitxpX<^g^*a8a^u9ER~{7n zx@h~RwMS*W^j&Sy4_gJ-&f5~aMpU3gr)1q~?pZIQcZY@ROX*!!N>+L7dLtrYeQw3A ze=3@BRt0WP+Dw|bHXPUw@?VoS&uXu&p+(BGZX{(_7k2Yx-8&QU#(7GX(l7Uq)luI- z{wfLF=XO+DrN+?XxwG)qjmNGk|Jb{>I_gSt>`%!LQ#+LvlU$B%l``Xq>g(&WQH0s-~guWADK?%GmfxaY0=uB{>^ImKHYFK#`PqLWeI%XQf&PTqDmb+we!Zh5Y8|-jAJrRnrF)~c%&+x9 zRsB`oj_Wp9KYq!iC7`rWq;_MrweI@%vi}Uv+h!-1r@48YI_D%cccIoQ^9`%5C##r> z_PZRaIxqKZ)2a2@TP95}mG+NNUGuzu?Pfj0N7q8PesN{%deyadnl49DNvCS<^bMY^Eh;fA99fUD6=*^Xt@G?%cm83R!zRtS{1! z7W%et#*&w> z8vd!(t$)65orjjQ$T`=@nb8}pH{N{ZpFQ`sd+dLPwd(`^otYDN<)yg%W?}v7eWI(i zLUU*RF5h>WIWc?sYQuF4GuI}nR_wkz<7U*6Y?ZrDCT&tG(=#%QSaBw_%VP0L^XzV( zoX)OkX{~e0zlu3ZU7xvk#nm3KX-nT+PflC)BlzsIP`|+r0 zsc*uw(^svQzS{qvVb=BUX|LpOz1wv3L~8G3)3e7zvSTm5Rnd)Fo7>u^X0&V4^GzF% zOwG{JjlY-j?`D$S^RQXzr(S(J^RnZgz4PX^8M_1jGZ;?(owD`e)VnjbzjbfY@BiF) z+Ybs|eAE}u>CLV7?EBI?ZS%Z!ZI#pPobRai%za+If41$4Z~M$V3Kty-+-4GW@nP1+ zxD9Sk-Wcb9Uw0y>Z3v?I&im!h&HnMF{7cM=D=9sbzy3DQziyUsZ~yA*TSxvH*T()8 zX;s-Z*(ze!6uph%%T`-w%4~gOI_cWH#eqxK*OymLjZF*9em>2lW}DPDl`=6;Y4aEJ zz8$}kVVjaJd%oQ7;_5AHCvLVq_tbNJotw@|{nDJh(kG_JUp#lUM$mAQyYSVps;y66 z*)FqR;rD&xNrJEGu5}&Rb>fOT&9JBbm4Nzs_I1f3b?+yYN-tj_deN?O7?z@!I8N z@>-Fiqd^i&rm3B<+L9-xrtxFO$BSEC+e|Iq-2URfW>TcfA*(%k5ej{5ySDgM9XaZ< zR*J8)PnuiGisP!-Zt*XhTvk0ZmAKN`sjca7QnX{;o6V(7rrEFE9{0tCep_tu9-y^|C^*^bv6Xr_v(QGwXCUR&- zFod~e{abhY@JRVX`!o6%UCor$P&R-m>AEv1aJ{0s%bMllE3RsPZMnIsFaNE6j2c2S z#GKl1aMM5nfyQ&-R+!9ta`#25th^Va5K1qbhhqQ`O!Bw$aQLanT__Xmf)># zi*H@qc0?~^p1Qu-{__0-n~&Uhw2|kumi5YeIfe%XrVGy%U2&Jaw7qbaS;d^mw>|F4 zyp8(%WApv)9g{Zt`PgoYZu4fD`e-Ao?XU8nzsvkPRolN;e@x9eFmdUQuro!QLUKM@ zzMZG8<#AMP&$Wo$Wlz_+tN-lGH~lH7bu`c1@m~L~Z8J~Id!4*dcG;>=ieK`dJvq(7 zX|*+|VygCyoOeyX(@Ml1*C=yy|7S=NE04XIwSBu1*Ga*cuB#DG9HX8TKd6paQzg5T z?a)(`I_sjejA@2R6NS~i|1%tZseYt}FY>p)n=8}Si%vg|9eCm$uq(qNdsEQVxLcRs z+?(^y_{R0)eoIUqPmRBF0_-&WZ)U@g!L90$io?EDDTDrCM zqsJ7rl1$%U&OB>2d8TPy2)@7KtNg8$AANlp&!^44cTZ(kLCV`pjfp~&zxFlX=FRHs zsxFN;I_>4|8D)3H{+ZF16CtgiHcnaArzdmw)z{SIw_!D_ei>=pnq+vm-hAPc@Xg*y zQU1lNj(qdD)$eY++*Y7x!~SpCrzWlmKFoQhS624gmT5I7&-BXjyg2Q{Oa_0HG zleu%J?iBlTV`Em@3A;1>-RfTd84kYqa=P~Tj_-1h?^O5i{B8?jdYpT${!+?%>J_bt zUuT_D-p$gaweq{&^E)7ATCXO>t(R1fTGw8`GD^Fo?9COo`f zwQc>2r|Wr+%$1wn`Xa~qSWM>OR~d!7HXeI*oO|WUM{h0s+NIXiD$V9t(53&x@5e(P z#TJ7$fkP6`9EpRNsc^pY{}BdbK?X)5|s)n+~z z9{rgZHqGN!7f|7yJL>3W;gv5dmko3X?N-w|JEMmMZXQstJIV~nzqVq8DSWD#8UR6B0k0~f7 z(A+k%SS#k#rk8oKy1&*|opZYTdnR}JyA<8~J11CoVxLI>c;jDL32b_uhegy607A^cJ934Iqk4? zhqKX=tCOvm=EU_cxhdPT<4x-E#H4dto&7@jGhL&822b53nHRTB$6~E`>BFP1dbZ0u zD{Al3GtMlqsh;k$EA_J8%*g3JyRv7>+H@X!%X3^lO60+p+9{UTH$HOBI&)m#Nm05= z)hFearf$E)dZ!?-DK_c-i7P#}`Si^TZi!oQvT@ROqp)W_tQ>2_1OFdk@DN~NWMW}r z<6z`u;bZ}2RM3>8ppc=Wqp*^Z@x)0i0?Hqf{v|I84%zf-)};*j#cICORQ|4gXSKTL!?B+$9lB&{>^FV4O}|*(x7_xbZ^lgD zYMxsU4L{eOkFKqn{i2zpEaHdH38e$FbNYLF`p=fHKllB$!i`ljk0SZSetva%@uqsq z)R|V5@qed#c5p6sRj_&gXS)03d)YHe&VKOgc`;Gy=S?T8XGl*?88r%baJd|cR89rlfA1|Z2O#Q&)rAulw%w^1q}B&T@G-T z`6O@PJjc&#)!Cw3^JjHP#@sNp3OZn+*Bg9S-Erk5qq$Qm%`6vOx+TZ5Pji-!yl%>m z`!x?=wD2n5IB;q!&$34POF@~Y=a{A7ClWYIq5j$&Uc z%Qwq8C$_nkl$*Z4R-L}~*)EqyM|cu5d0AavN>xlXd^XWWZvn6I9cAVK_0uYfTi;ze zsHcDIQ>>b9{(>FOsj6-*kA7yXo;*L0bK{ru`W4K=4N=cGD+|1sT08fh)!a|3%J@&d zx;f8#(M!$$3@bBDGp4-!Jn6+Von=Z!>sdt(Et&M9;Ny3<4TsgO?E1D;H2fQBNiT49tE}>^INF-M4%lgoyhKNPOrP)ORA60vU5i4DKi_cPi|P7+*qTccq+ zM_b;}%!rH2rmWXo>C$%KzWVw944xBSUP+vB)b_2^`CTPi)y9P;#|77%*68QG*17fB z7Ll?zj%h|NUHOwP2H!jt6x?!CI<7vwx^I=Tf$hGm0!6m@B2f=GEJdVl{q zT06h1*vCw4$C=Jp#>HuD3s)y~UUZ&$WL91$1Lyto>+h_zVdrNCM_2Z}12K0e75P<5 zFwfoMmSOqf#&d2Vow+e;7P~&@URc`8Qo*;rs5|b$v)N4o*$%v7jON!@?(3T5@tJF) z@jQ)74D-~_T9}C#$ks+L4wg!9objrBeehP7ZfDJDLJlr%*Bi51E~qd?=j*MnpR08{ z`1D4F6W*sXk9aVg+OR9Fcfs^CjoOv5ywkSWm~1zZxz1_2*cE4HT|<`-CH_Tfy` zivHqN*Nh~7RIPvaf$=!=L4jYMbM1tU4rVdNF4cV6mnhN8J8cE?nUl<-TXw%)6IO!{ zR&9*@hzVbx@4^B5&o6zGJ-bq1n|qU~bK=Z-ilK{h)HL(aD@Vzon^vQS!;;vI9byla$(bn6vMR-0QyP(o4@vZmXMBUb@Xb z;+e5w`?FOOZ!dnV$|KxZeVpZ5&~qX6CaHD2W`!GlL~PjK>{ePRQ|+xeZSUGChx;+F(diIf!&;ZD@xfeij|yt{H!ZA@Fdq$b?G1KRvfc8x!y`Yer%?I*8Dcl zr4!;q6W3)#m*}#^Gpgk+Dh-RF}l2YWVzwnoI4ZSZsZ#s*v-j5n=7~Y z-p@D7E*#%6(Xv84cgJ-P?hxB0HYQC1%Y)ym6wl z;?W(;(oP&%#<*NJq_f3Me8h44F@-_Py)aL9L;cIiOSXSWl@4YcLQ+Y3J{L0RBB1lGUaan_zc1me+ ztm@YMJ!@O0R2ankyY}{?^y&AJW}3yNxoX)}{)e9(x;B@gyJEqu+nVRo1^YbqEePCUQ#`Hn4d+-^6cS*o9rfsxaQny$e19%Y59MKJvTo@LgCN8 z@`hQ-PqkWp&3Vsga{P3L|1;yTQVa8E?HkUnJ5p*Svu#$ay=T2CpU%?gbiL&+7MGR^ zN#u$1&9lE@d8LuZVvFRX)b{8E$t&-;I$wJgy{_@}o3m^2C7F`&&tIadH#u~sEi!TF zddQ!7C?e5bL`J9Zb*ETpz|GUERLssTs|o%svCB--@`p!F+CKl@lB-V^94dL$Y3XTJ ze61j>?Xcy(BBvRKKE@d{yg$#n>&mmdU%f)n`OoF zuu~}o#~vSld%UXVeerei?_Q;~@11Y_@_x0_%!G-Xqgrv3pZ(r0)$ffwTmJoLc>Ot+ z|H+kk6I+XJEsMCa$S?k@FnVlHch4`5VOZJ-V3twNmU$fHFPW6NYztAq@MVlm&OXVK? zJXd-9Xvy>|&z%K*3pN$}x%|lSnv%5KdE2E-_V>G2|K2i{_s7YJQjhgn84gq@naR2y zU6!Dc`y%j&N1nw&wvwMeH5%MkY4km^vXgjS7^}2^Z=uDC0B$Q2vtYBA(uObCyIxoo zF8Q~vZ1d68i;pmG5nQ?EUZ_{xB)|U*PZxJb^FQTVv&VPS=O4;{(-&v-csBYhjJoc# zNTTgdsq6abxBb4nI>w{1sl|L|Qq2@2Z)SE69^Uh;7c~pAWtYrO@vGY#_x#zc0=ul> z*_|toANhCF`tqt38y4<8Y;KmdS6ch`l}EF0Zt^vjh+ci?-<{`2)1ff&T1<|JZ>^f> z39Gu3UyY-D85iD&S#h;f;I&^Ri`ud2)2&}8D%1+_w3>UR34|zQB`K)K`*7MQWILv$=pGHCk?{ap5p4*36F0Wsmxnust544R zscz$mH}* zUwO&pTYGI4f8X#mld*DCS~=0=!(I6_!x=mMYYa|B9r!6dRcaOYtW!stI;?fwt|uRK zyLjoaH_y|q?6|0F4|~<4f7bH(7i4R!7oNLc<+;zPLzO?*ztrF?7m@{?J2 zv{xROaOicVnvjO%&NKE4zj*ZKp7!9pRQzpu?~ULYZB1c|HrD_7xx%O2Z{zN!15(Z}r}f@RPdR4vWY4*#_iG;r$EaLCmAXv2|Bu=^pTsH4 zZvTEVdsSvxl#%NDl#-Uv@0m*RPOWP@eyv`V@u*3ILGt-kF7Q-PH5E*Qk>T>$; z6EA-;5_T*&I6qlzL}*arI&p+?wR7=RZy70xcS@*$)*~I=@(5V zc<^mxJ8C53WRi1i;;f~gr%#;J?l2*71;6Q%?9xA;Y92=*)IMpI_tAKCn&GlFV`H{24^kj=4)scTcRU0brJ#zu@w<=`C8P^BUl=bYu8 z$5IwOXEv@)?y9-HeM=w9x!~EIn`(V;9avB}jBE$6phN;oa2j@l~_o|!htM+!&nh@R(g?}apDY+%Nw5|F(OCf zrb-q>ZT_zEm*YtFBA*{3sS>BZ2ef<-Z&}to<8t7c9XtMnvd##NJ$oU=P_3o3z|xPfwlI$Y}XZF2@-{!p6?bEl<@2ORk;h%2jg8;GK{;W8$V&k>`RB)pgC3^sA86 ziq8L{W|*naCKF!Kdu|ky9|pn8r4;`uZQp1)?VGyMy(7<}Z_GJeEj%+nsaW@oU+Uh@ zGn7iXZ|^=6_D|n3`p2H9`HwzN-QRr<#C6^VG5YJD(-r?xH2XyozjqaMioO#`dvEx; z!%VxZvg_`=r0wZ5*4}(JQaNmbf4oyZMyq$-vQw^OsF=rAS&vm*Q=*7f5o?U9s4!4`ObT{b;lRGR9$(&|9#fs zMaK94g_pJe`W|~r{`KAD3%B3?XVBjAg8$pBx4UfIbmF34UA^g&yqEv2+{I|uT+uCI zXq4-_nud>2c8wfI%I|6ay62$?VqBi_%#jmgm z>%Z6fmmM~Ue>{nGS;8~B)3>xU)-KxCg-S7Dh}_b6jp7W+C-bC!IjBVD*D<0Xe}?V* zG0^gc==%-Pmk;Q^d>}0M`s?q$&YJYetC zT(~iD(reG_e!N|WqPMC?I=3lpm@(U^s6Okg@7io##g2pg??aoWXl%Gwf9mCmwR*~n z51c+4%-Ohh#`fS{hB+G!-m~+P@#xF3dL#36+wIFWS4+3`OFr0|WboLJ@2rWL|J>k- zTUstF?P+6YDAa8BI=MeR>Q%3{_V2ApE%PoL8ulL2zwEpqAvTQTVD_yz*6>%^$p#jl zd>yeN95c3`ezU&t%8LTUOm4GfFRPV!+}OFh*0eZF$+DeW&srsk?w1^2G^f10^U zTCnvW=dQ7> zotwLEdDW`JS;kDkQ%^BjB=dCl%ujiww4v>-)S5*Xm9EJyNVgGO)O4%cWfAAYCkytz z%Q1Hq=GA*uzN-88^UpzZ6*wo&i4-g8yvghS_(_9K!Td>+8`;ltZoKhR%iHIV%8Zn( z@~e}M_Q{=2yd(T-c4lrw3oqaFMGPA++j&l&b4OiMb4EV%<(2dPGt7_Q@v6EZO~vzO z%P)`F^Mf*t4z2IXJH6G}e^UGA)!|1?n`X9~%;(|oQ<{_9vG2q#Q$uT`!?$E}+*w)A z7ZlG9u(%;_nKYm0a;ONqM4$1ulVUbZmm9e{cqf<##(UbznI8=0e0V77Zs1)5?Pbjm zoLWQmr&!6{Ri0tT`Am40&WqxcH|q7f431yr<-AyJD70+C&4=ytcg^lrkG|XZkxPa* zYPQQC1HX>a8ILaaxN~}+HoZ9Gm*%Bie&WV_zHQ$P*XD>ju`a(Tyf|-KvaEIgk+sTq zu3zObJ$9pS*)HS51&`Xji!&Sf*((1|eP^}Ej;;4>XTfJp(MyF4M>^yTExms#NUF69 z#hI-8&v5F6(Xz)EzvvlnDlB#=oc_J9{@KDu7d6&bDjzuibCJqj?I>p1C579ctWps> z{W1Ng#+PZY5AzCt^{-H_ju4&pH!?Y-|y!*Y!)(_SCC*!g4mthSHqnHH(5oqFhO;G8&r z&0EE?vSWY!zD619cxRJY6-{;o?U5^ci!-g*Bz?|#Yry=gZ4hM%pg z1?L=0xcnhnHAi$q*uiMl98n|HcVb)IJ~Qn$+xz@tnLvroNBehM<{CaT{$u1|;=!}; z)IqpXs17j2>V@o-p3i~Yk^y>Z#oWa|n(q8l*lypUd;Sr3DKe+{ zN7LOpY%*NZvRmvrZyieB>vXVnUtjEWkB*}&FW>(dQF83}y083S-|W6(e|^*OW&EkP zN`B0jf3`c~W8C)CdrQj#ZrpeL?Vhkkv}r>a*TD#F*1^mac=i7XgN^`bevg%zm4T5J zGQ-Cx$e?KG7?}9sW8uVu0*wndUQ{q}2uOHX0G(4}v{(GkaQOtY*{s-~OYh?(8m|3( zlzP8&dL7dV2gxm$-k;U`gG?OAuK8&6{>bV543k#zEv!m4cS17>u3s(o$IS9asrOqL zyQ?-Yn{|9g?3GPtAHKfkBm7UI-j_pgb~oc6qm(;yLj+i~xej=x1v3a28OT4~KI>Q3 zbgmC4>{rMg{}s(!Tep1Xp6eIe8E$bjHRSStypjES$Aw=tDaMATP2udp3={H&HdqPw zf4rGtKlR=E{Q<2Tl%*ct{GIv2ic$4J=o-!j#x8^W9V@-Fl^%zQ9kTI=EO+a*9;n0v@$IbC_f^R$<}J5wQ1ph2EFE!-`i)L zZ_fG{U3`jFv5MQaYXgfzs+3KjX+e?9i6e6!bZ;-}VbpVHb4ZZnuwJz1tnOvcH{q>b zmd7gGJy?uS@?@%<@oV^6*tJ*NCU|M=gYr2%emk5VGux{DEp2|X?n=I)!~WwrrhWO> zw_U%LJ@G$-Nc`h_;)w=HhhD#V%pa1)cr_fCg$Vr5e27`lhvAnZu~wR$k6&X z{?avxS2v83O5dnu>bEko+7{0e)SYeRZZ37);!Klb^W|5Svw4%-{XG&q%LTqH;N3pA zMeM`Jz}okx54}xV5~#tw+UuBLLh2eW#?{6$ce0J7Hz&2V-(%jO$(y)1DbK{N{gxx+ z61GG8J0iBUF*;tiU=p9OG=Tq_!L}<0Lm7IrS52F`cfH~}yF=Uia<&M)P_u(mNF zfQM1hOhsVfDv{u4RynLb5B?c`*}G}~feE2jzZhm*tLx}mv!bxCrfj#!(p)Yky)`{@ zjTsxOJ8~S9IK|&raC9)Fgayb1wkWH4_ld3*ylU~SV}jL#?uBa|nH7$@C<|@9Y;wWi zBuCH;*~G=~`6v0lxzts|5vHW~T{z4@mZiX4V1kt6$s;X-@01QQuy`EcS)9H_+N8Wk zZrN1>XWJql=Fp$A;-c#MOHOYPTPW5kwkYRnRJiGqjX`(zel5#*$>_r=Y@pG%(!PAE zkj~Zw&6KQckFqyfs&1kG8D#fdzwEI?td;ez%Xg!BW(o;M%#S*-n{uwJwO8ACr=e9W z-Lhe8=M||Vd}kC=v^d+YNh|1Gzh1erm2Gxo^UJR`XP@oslXzjZsY~L8mhrUy*OM>u zGc@q9vd$}5@yA8c`d7ZGvFs87gOH014YPasmmhQ9^+2#dAj0+tr>&FQBhQrY1{0@P zF}*pnDdYje>vQs^A6hmTeA!>xqQIos%aRowMG->L{!zJhfJXUd9v*?aZ-pLT^E z9?TvUq8nR(#7vo_dgHg3nH8hMs>G<@soec0Z7o;-Xl(MDWSq75QR)f@pU|n9pCjb@ z5;fOXyIdJ^G z=S)wL5B~RmE>K!%elCB`ean5tHP3#Y{XF|Qlv}{W{l0U4om%Y=Zo>vwClnvn)8A-ZRNf56~$|I`AZCg*dOkJy$T5n+n(Ot&mftJ+pdyyZx7d+*w;1>}NuNUSL4(McStGpCf-*mgPWQF@v0I zcX06<2z=dU@TKC_+^K9+JFX=B+ppqEG%STW`3j8sglqr5Sa6P%JPdBoK;OsA`gcd-#8ueb4r$Wg58O?4Idp%%Rib- z+3d0+oBdZTBt*iL7^BlviY(tR$?>#3D8b~FT;{Ur!Y5#tG(|mN?JAFV4p_NndV0U z>1@5Cr4>Eq6FMA1{XdBceBG$fq!qW>zOkj@%JjGkX>lAL?qRm+rNM4#D=z7JpNhJ$ zV6}12l6q#&RS#R1C@*zv?@n6ymap(Kd%(;|?_#T+wsLLRP`LA+>P4$Xf(Ef$eolKl z+x^{^6-{?uc}0npA5-41;97iLDE{c?9naX0EYR}F?iBND+cZ|wMZ53+BS|QS?z$X8)jBoM#U-9gJ&z8PRdVT+w+akTaXJV^o?D}p961a2p z`p)k4#o}?#MukZWllgzI9onq^e3tCbh4*L4{@hd`z!Oq+@!ONLK768O$(QDDSIde_ z3RkmldcJz4O?{WTn#%E|SMN@1<}%vse}QiTTbrTcsm!lZ5i+}f*+1>QBHHAm6_Qq) zv0{c+_kvQ5Zw9Hk+jy%UtUEHdR=D4aasAx@_dp?^8yDBGhieK>+so?K&dBpxO6K@F zYuA)3qCzW{ifJ~@d(fXztD+O=S+u6w;lPAz8He?@GwkuVOqQK$GsG9PD{iWLQPs6Du4dbkW3A#gd=vgN%>J4Gbi?)QS*Mbj zFPQz>eDuZQ#EVH2S4CJ}-Qga$d6D{tSGnbv#T%0!A(@N#L)jW;@B=cKXNbLG?rD+7wsdF{>-m)F^;W-FW6T4Wnt!Op*)Iy96Y7)6Vc^dW8!5tnm1&%f-OoK52tj z=hii59YP(2G4g-98WhA59o{pV-{WVP@ySWRXZ;TA8Ro4e0=x;AgftEcbY-=zWk1cq zXi!+D!Ic~9U_QgLhfzzo5vGBCAs{jT%7xOkbBUAQDH7@sehwasSr8V(jI*JK0UzYl{~uq6H3cW7EkjaQ`gTtjV<%Ebx` zLYWLAbn*1uXMg)0yZ;RL zUVfL~AI%>4{jX31W06;rM9h);{g)Q6+JFCL#7X;m>KqqW|E}f_{{A}QmEC`aMUOfX z9lg4Kbg+mrd%7I2h*o%Vf`Q5XNJf|iFGGaIMQ7MsPsX8BEB@LsjX+w#ygVu}eC3}{}9*mZo{-bRspOR6= zz1Q49$}2Xyu511~FXDT{j7H6Af+lxj8&7+<$)>I2v+z1laG0s}l2EQHPLq`kY}22KIWE{D^)hDT6p4aNGp?;1kIsLa zZ+Syd#&v34L&~NZ9zWRbE<8A?bhY!f^%=plRkD3zon~n4b2%^}h~JPgpm>6!sXOas zPhX~29IW3Q4;*RGc1&9qp{>?i5z@WJX6Ngro>u$ca4B{0c)mB4>Z(t9RW9rC_#>wX z<64m_2Nt$te2Yz2u==eGIDF^ejuoYWlAFIxNmM=GAYC05TDoYu>pkTY&*v~6$cp{a z+|-?QyZhSrCF>pdwt2| zOnT|7zXl583~O?9S*2Vx0+Nn2f$~9`Rp|7{rt7O47+BbtJy|0Ez=p6NIe>Ej!*A@$fR27305pxy=isl5d+*`DvDn!(4-uvm_ z)+#I%;I&F$BPVL-x9QUvwnO*R!W}P!aGz+pxno*{*EOM&Or=ac>nsHxsC{KUpvar? zrZ@XN>!D?h*;8yhxA)w8%0G!O!}IE7_1}sbT8DnMXxlOtf0s;PQsV5G=P26d)2n8& zLs1}g5_i&vnp}qV522DX*Zox5JMUXV+Pn* z)xK_NgacEDRvy1`LFMe`Gk4_D9(*=upSi>4?7?S4S}^t9o^^jaPpYfTnN;LS9M!D% z^I!P9%I7T>%hwg%sII;8?1BL^hnN~~zEO{J+rn9Gwa?#Q;oP94XgG0`&Dn|1a{7%^ zDrYO7xha=+;swvgrki~4W^HAt&-l5{v3B{1-ltAZ-&Man6X%t0H2A&X@PCHK8atm0SMj8THGCB8 z%;>*0UHsZd_HQx&8K%ZR_H=v0Kl5P!Ng~h**65T~Ei-+Bx4&vyyX=Xk*kp5u8t;ke z(YqQBI4CdpGe-g)bu40Y;XiTlQz3)xfvGYkGn~`A*KUu{c)_uKBJ+eaj)VUhM7+!s zYR>W0`Qbu3b$&V^Szl+C8z35|LY_J|wwqy+C77<5Bk`xrLu#hO1sMhdZ9&u7TV|cT z<(u|aZFAY=$labh_8{16?k>5OcPZOE(_FlB&D|w;;?y2}6l~rQ)>`$(^oy^{w)Y#e z=ddlv)a2-uWE1MqQ+!?{c;o8HJq+fJEg?)y+xpzPm|d?G-RWfb{i#1YO_0^0%1U{^ zW=l-LPv-*{QaG*M(y|QeuhcGJxYdyT;>ZQ>7cTZKo46Zzp043#S{N#N@|vK9l>U?i z{tEWRYs9|jcuh*M$z*T--tcHyLjQ8hSTBu*w#&l1`4(K-AR=}}#L`0HtpjWGw2yM# z85*9$`k|8TqYqGds;;5;Qa;}>$aD>ZbTtX5Pyu_;|HOMkiTg44ol-VEaI z7MT?XJQ!97@L2{${Y}u@v%sT;!R0~xnFVVcnpW+d;%~t&ESLJg_{;9nmK!@3AK50s zA^df>@7szjrVYkxG^83h!!pwvC0(qUtqwS-C#@1Z>#^!k|4Z>y4-OB0R)H_g)2h5D z^fZWeD|57#HJT;OQxND?+~D+NuC2WJ`>*%1Ux>6z=Wqv~ab*|qN%_$Fd!!7Gc4n zb6}ys(T)>W=2s*cZ!)YuR=XhgJJ;3Y7j^|W?EX64Q*b?RPx!{}B2K}xw&EulI$Xo0 zI#YJ0J$yIa%0NI=$h9f8N7=MPFTwwcY{M^!%d9%34Lgn;lRC6z`5BeY6`my`ZDEZZ z?92}uSMikvTQh$3YS>uUv_ebb3y0cPjk4GOv@6#yl{+xUL5+j;0++*tr~;D(69Y>Z z3M?1A&A{B59Ta_tL90z^s^}$^=STn{JGizdSdPKI4-ob9yUM^6q--%f8 zqV?mv%N#R3c2^$hI=Ag<ZLkSQRZEOW={=}% z>_}n~gBNQCtCj)7%^iXKD?N?Ym?*Uh&EhzcC2B5_%l`EBi=XprPd9UaduB`M#x5`QDCS2oiYM7OH%KxY z)Cbq}-`oY(nFG^#cw<|NT>60m_k&Y-Bqq3KPF}yQN%6`?{~JP$3XF{ZG>(WH)Pd|Q zf!S&Q+x^W=5zKjg2}tHq{B$@65izu7H0^MUBa z!hc7L3Wa;-q&!xav^aUp&!}+n(ByP{jfWkg$N<_ACBS2Fm=HQ{V{n+K_%M&bahna7 z7tCgRlb83RA>vxm%O~i1k54*p^Sieu=Tya3!!PECH@(^Lcu~qDZFc?-&71xR`(ar0 zfsseyK>Y;<7WO?n3I~4w<}ooTnV}Z>V zk&W+!HvDIZsXE1Lx#htI-1^P`d_J#Z^Z7iH$evh*VDorQblUojoAT0bo&GK{tuf%# zUKR6%T#!S<)#Ndz30Oo-pbj{z z@%g+BgZAy$+E6FW-+QRoAL0^emKI}Yu-;GGWB02c%JjGS=mn9&MG8QTJ#X{j{C@@( zZG&L2{?BK(d_HdpmqRd4_E|iJq6UHZKlU=8ZGOM6|KMi+=XK45?-0E(^3&eW_l=To z$9#Qj^Y`TEZVRPT7TzyDJ+{B~yS83hcCUpk!dS4D_>?^+k8~P8{1JM7|IT~Ht*>t_ zeQynxIe1(qxfz!i5aQoIgXWGwdqWx7SXr1EVP~Q;3WDd3FMcSTxNze~fyRRmL6gS? z3E;V7&{krB{|pC~s!iScZ0*yGV=q=rTe5Qdja^Msb<^MS{t-E|nnT9zss5ak9m$uP z!fN-ib-g{kqwHv^eD0O3MJMtCS1g+yCLJ@|f5TN@bIx_e7nVfqcrAOeT5IyR`pYKy zoaXo4e9iY%@*eKJzkKPvO;-73;s=Yj)(v6T&O9yMaO&>fSMKIFr*6+T`oxjc zHBGE!)A?8ZFSoRGB$&)vzu5DZ)6D-2ffhv-6Cb&E%Bh%ZytKcYJY!jXn|}ZK3-9m# zlK4G+_B(5PsrTJK8l&S6x4rnj(;{*G^*>XEGYxOMeNWpWUGn{ zeQ$m!P z)66pCq>yO{Vg!4-sWsEMM8D%yKny)rcRrBU-E}g zH-~Kb6hYQiTxZ_heCHUxXYqr5Uen&UwYn_u(YfL_DJvyzUQB%1k*KIAANtND-OinD zkpt=AoNPs*J2BL zHp+IVF>eZIvR3LpE}a6Fhp56q`Y(rNXC`KLM0N%(1^Hm;7$}ffIC0^@i;Wu}epGM> zFo0%fCPqekPMvaVwAqlLEPE!9Lx10#rGvGmNR7TcQ}=rZwe9>2!B%DwO60=whxqaDcD2pn=hA$J~T4Dc*k*6w(xr>%J3>F0*d1IaK&_ z_AkMMOD!xW-8{WaX490(+y1^j7NoekHEE>8w2kje>g$L+U~RW>2qgOf7cxBe_YF6&Xf?n{LJZm?iFth zjtAa;{?E%rP|#()eKX_)*p_8iyh_mfQQ2zsh2>j|bL;z$JW}`6gaphdeoMck zv!gUF%}=Lgf%W?LmxSD`)~(_?z`5uBJsHi4fYXlH36Wo5Stuj7nET|INry zn^@PDDXwhVJ#kiRAzPy2Kfkx9@?w@fJ;f%(a4(U~duGd7(d!@1)=9k4VBndfuqN%H zqrv7x1-3*M(aqe7E57i$&zP7f==|I3m#cB0^zT7o&(b#3ElX4Y3opV;ZmS1nMgc|!CPro!Mixd^NbSnVAgE}V z_`xyo;KxFN#)%6rf@;=;jRgrPuO@E#7w?ukrr9ElWxLW*1gXZ4s{5?Ar?O3-|qKKHAH={mHNRi{*ho zInj(&T`FpFP5#Q`ed@9w!G`)}KjMszvX9PiGF=cQwwLK`wJ(2JEVtI&)D=nR7lw9T zFMh)}-PdtL(!m4A(=S{y@SAijIr3KIw@zz8?lgxbZN*m$KOA|jwdeGdx!mQvA>ZF> zGzZRH7`)L~C1`=r)ex&)hZY7FvrDdDAaKhn{?}VOiPPO{v$Uf(WbGDkd$o1>y++?x zv1u_oi=LjIu9sDC&fYKY#tn{)2I2|-hJUWH5vk%?M$cY7BP-`$33tGo(KuP)T+ z{j*`qq|ll47^6L>>A=xr+|wh%*%P8( zuj*W^cW}|!fGO9c&wI=?^qF53`=x{5>CuCwvnIaaEmg=)H;Z}OIpwCmuZXj5tE6jd zw5e9#hxyt}p<2mOcTB_m?&|;9uvhJy_b1s|s{f-es>yuZd9pZ~P=dOEsIceRuMvg19c)0go zXLKkpnRTXs@!pqi!|tPRVi#Dw4qCHdhlA*nP&;9!r6#w8mbLqQ$z#vkskL?EvPNwk8?Om+FP*XP$+DSKqZTVO zY8UAXeonih)zq0?>Jyr1G?8&Zs805b%*IkF_Ye_-h{%l{8SYCPxEae=32m0mT`OUB z%5Tb>YZ^DUJvGr;`M!Rdp6QQtlUonO+8mejNB=7R-peQPmm^+u!=^I|C8lS;@0@Um zYt3ejs#$5jLw4W0I*l(TNi8$e*{t-pqZ*5sFPBk{l#X=Z{M zvh0vk#@*7^rOJEc4+L1TmdxMwE2eqLZjTLa;nB`|-Fv4j@3RWH8)aE;HdS!u^VOQ| z-s{$s@B6*u_1=5ynx}4L+qEzzUUjxpug7JNM@Q?~!ufnUwnR=b?X~*atbZ`PqR%i~ zZ2lCvEH5$nG>^}2FMa34#EE-Xot`tj{)-XQ>yXxM7fYh2ZT%%O;aaqJX;e1c5<08=Onfm&egidLK(eIbhVw*oom{_*%ihZ`7inDuXRdq9QHb`>$||R zzdbtRnyf?7_XMt$>`aVZt_EpNWwD?8s{0C=x|@EO960prj>21E!DHN3nLM0nFSt09 zrY?GU>EPN0FM1*!R^OcL|M9pCZM+@bfJ`yTdT?P z{|p&_+GVG$d%JwMuyW4pu7erJv$}4YzM5uUmTq-CW`fa*ZF+OccNjV5EC`$KersL0 zcj~TX@7_GE&66kzdTrLbv;2BR;1a#LGq=v_b4j}HZIbN#w@gMV^;nqc^tE?NWlw0S z&A$9LsqH$eco5@F8G|ztoVOV?%CAMGaP4XLm2EHaSyoqT5~?Fv?S1jmiEXdeM4P3t zoJg&V2n#&1%V=%+jSFJEQB3z5_2MsSO>1RkJ1vt{Yq|TFj8y93z(ohUZf9&sIj6Yd zV!~NpQ}3eZ#``kfu2BD>e{j~ zazZHIoBa#U`DnRpR2F57VlrKjpEkqV@gcKf2Fu}{vOZj^T(uW_B`^N+r20R@%5(Ru z3RZ4AzG2$U8JEmcBaWG- zp>v{>!vZg?iMl;SFYMBSql`-{w(_i6vFh3lUw)>oQB4*KI$ISb_$9oW7sQ6m`)JXS z+q7ZTrPNpAzRJbdBd%WAQFQmY-B#|)8x4-$+7fZH+Od5_{-4O`QmqND7Qz~hruojR z9y&;C1c`>onq}w*&ue=q7AGZ{?p?8mFI zVSqRGIr%8U8I^k284d$&kj|Ie^lC3nIM9qz5?z5X5X zn5g8^DfFM=ho^+i!tEaUgg!OIxmpRwdFFrZ@ zie-zlp2>l*@_B$i|u68 z7=j)4ytv47OSJKlmSBVB`sHuyKfelNTRkx)ZdSjWd6Qzv)b^;~=gwNb?3 zCC@A#`Dlr#n1c&9m#z>v=D<~QEooY6*jLxwmwB=o&9@60Z*G_=n76UZLhFWpxunvgN9Tm3pFA7VfNy)i`Uk+u&5gn+3*;rrZq8x)t@GVcDZ8Pa3_wGEVCIWNLUH zbCgJr`qv!%cf=% zw>EAYfkT1Y*Vfu+|7VyVqm>rv>sZw)`MQ{E=Ct5|xP@+2cMkjsyK&trTjnD3e8x3i z`3^Hqhx{?-{O%JT9`(|st=w3#{6~0X&QepCjh?64)~ozEQ<_y}aYNkcK=d-NgbmJu z(bL)%Slyh|bd%${mx0&TL*F{vwk+L!?p|2a$J=Hf<760S@~nEeB3-hm#HzgG{X4K)lzlxFRo%Cwr-QcZeVn1=79z_$)-FPxm3r4-sYlc7ss z(v}yi*ZbW}X^1(zXvyIfyML>Pu6XtLbosKad#W$JXqdG!#BrlTF2l!Y>)m{x^a~@8 zf4OWG*tX%i=%?L{x8iG^{X4|{nqw7hq8@lg8njz1wR^wMPmtGlYDkL6c5!c47X~lI zb~lFtT;8sl;^SjM{a}8D?UAz9dZpB?0@1-Z~k2m${T;@{bw-yu*LgwW&ZrP zj4T^9)&4V>eXgHfx&Q2*`_Jy>f6h1mxqbGZ+h_mfJ{y&xO&HYwd$mZbVQa$CmU6NG z48dJL=7b-4v`_6k--XjR7u8z(9;l2ETfc1bv)~@K_3JkKU9K?+V_p4n$-V2_8?Ju6 zW~+RSy<>Up(Ooa{cGvs*f4g<8S7Cnr@&l!ntf6VY){E}hzfXAT)rsJViBLqf0P%B_dn zJbtzIKYrQy!^So?*7UPai0Ml9PbSJrb3SooPL;};lT^we82ISH^`vK>8h3X}t>sM& z{M0;6??X~=?u?m}dv&=pJ9Yo1P8Cjai|x-+2u)~q|m zzn-2v#~xihQnMQTP>DcNj%Jx`(rQ1fl{`;boA z-qO_6*E}l(uV@K+W{XGckjqQ?84(q6EIT7r@1kEzZm9QfMavb5%d|E)N^BE*wqt|c z>(-ZTD;M2WZdB}zvU|vKUhdLP7xQ4VzeoF4+HaCSw&th%V+Nm-SzEZ&W-j^p)~|WN z8Y@-r_Gy#7u2^3?bah&IjB0t=b_X%81%bXTri@$tx0Fu|$}U~K@$(A1&x}{})-YvB zXWcgt?a9`1Fi6{Vz|}}V{*c-m;*#PVzs4XTnyVFRdKQ zuGLJaI=!dbF;|x97Q?pn|4w(kIo*)X{2;GIBWh!aPwVo)rH_|q?7Ho;`nt1r*qLWB zrzgk%JtUyx<-TUY0lx$De_PtmE2_77@~`sbpAQ>N7{Bfn`gR~%w)lq8g0vo{TMbd$ zHMT4GNTx<)G^_|%vuTCFsux+0(jwnZ3KA1^;5xH%rh{(YVGXaFzD(Ic7f;HaPUmpA z%X>XyN5BGMZHHdh1$m2?|J|zLs@3r3y2ral?I07m$L^18Lb#)zN{FoJn6TN+Np(u- zg6vBX68;M>a^^;{Z^^Ej(HG4mw{6?g_c9B1PL%TG=E-PXmk`G*Dk;@^U;gjajO{F6 zI9~`~P+#EhFt5>;scLv~1za|(U+a`x`m6qKx3fe4>DNcg>eHQ;8Q8svifqaJQGfoA zyiN7Bt^cZuc5m#uk^kqA<|>Bu*;NNOotgi*F!p|&_U7MuEVmQC?&Ee_U$`gXhUKaT zR-u^}xjJT5?0)PU(JSfK;E==+7#Z+Z`%BQ}h0_>J7`b-*4ao|2D_{)J5iK|V$=W5o zx#c(4v=6TiEZ|sWHAOb@@OPzdjnam=Lt?Kn~s)5|7YM^aJ?jE?Qd-Ln~I#qFJ(9x%Sic^mdvaxHh#Igy8H zB}biQg$^Ao67!RplGs}NiB;;}y1lX{?JVqEtL#=^Z7cff_x!YM=uPI8jO%9Z|8Rq= zBI*SHZQT}=A73NBqy)V(S{Tl7M91%}P;=li zzjn!k8xH*r@P5f9)obO}nOfD+P^y;ode%#Mx2rGZL^ekr)_T*GWpOF;G?UtFUwyGD z0v}wNKJKaQD{IYoxBKDOzs=&6tusDyrHHSHTD!(_#k5OoH84{A9W(&w<-J9}E|*J&S4r!Q4_D!25qd&XDU5WfzlnN?e>Hzd4ZWSC&^ zn0u+Kl=0z!6^X~fe4Z&OZ0a&FJzjAxz4XSdU)e3&)e>`davk7cSge>Mz4?#1-<5UU zKFh?b?kcE=GCDY(GQ1t?=w9VD@%s%`%}*O=^l%9&a7L_!@Zq3z(gpKVJ$oBI^DII+JAgF zHZNbAE%Nf>&Q6a5tJW@FRkeDxc3xBVwkcb}9rQk1tvKbPdSYwTs_Eroo+;bU$!*%D zJ+X$HQA6*{wNwjFO>L*Zu+wX;1*)}f&DrTKvo~t*L;lH}I*gVateO?F9z}i3>&l|H zUXD3FMW|0IQX#t6=s!bC>>Wi`#>UVk4kfD^-YnQ&rMA^8F;45&!nIXiyu}Ypwn(!r zFYRVyx)Hi4JIZm>*UP2RSHrcQrY3gYRJnC`yL+av&`+D`B z*E93a1@$;GPQCa#%DHK}%A{MXu7+LB{dZjS?$<}V?Vn`!9F_ggaC-Nhv%jwV@jvp% z|HzLS(~=GSrWU<9a{PMNyI;$WlrXvY3jcFo?l;$}X=^?Tx2a&RKotXF)%}^L_MCHlR-|t{v2srL z86L)k^)t`eoYtDYev_$_NuqO{-MNoPxK);9P0A8(sTXdm7wGnQ|4&WFZ{o9hp<8cW z{&6x|`knhrZ;-C|{2ArZN0Ulgk5~MYu>UD5HtRnFr*DYk=5#B9C!f&bP4F1P9Rst+IbG93POZg17smzP)X zTiGLimHpA9(|aOK$A1`}_Gn!+(bR`~Q7=-~Xce=W~IKEdi^u?yZwtzic{B>cNbC&mBEG zIn?4#9bLD1PMWr{27{y9r>MH*Q+EaIC%@Hl>kwtkHSA4V{D38Zv2ZH$-ZQ&G%`;?W zvpsxFBO2Gbf17H!?yzW>)!K%v&Py`Wv)0w$|Lwfqmv!&e*tLc0HeLLcXT2z+a{<#X zv-nddFO;XvJ;J*6)T`Y)r(4|=3)2dd(wuhit*(`+gR0otzKKkwYzd;4C)myw962^? zljOQp*X0d9pH@nE#}~Arg=TD_>VYPZhdO*cXo-? z!~YDS%TG%dDjYICy6C9pDh6-wsj8fu4J&qQZ2CR-Y1SRDZ@S(>cCM9Ex1?R`(RQgi z-jmdjrLpst-EuKiKjsRTY88&ZwZU$Dq88T$P9|vPEw-9+b7kN%f%0u%oF3g~@VT>U zlX~8*EhSlZ6(SBiuu{r$KlobQWZ|bjCnGPt+IEls%8A{}*gkZ8^AMGO8DM6b^F>K@ zlE%BK<#S)oRnGfs@R)Vm)!@L7)-8+<2SalgoO-rh=T)>G)5fcp-U&D~TAt&ry{i{f z->RcE{Zn%V2Dut9I?xYX#4i{VFm$J+p{!6%*g9YU6Ly zT4H3coDf@aMXFyhDE7z`-2=D&J&KrSomxEW%!_NY4rdGHyl9(g6tj21(kU96FB*Qd z9DNXRlh@kdvemQbD-sTDlf7A&ZN6B(Da(nAjahg4bg{)^N@8bc>BcSgQmg!K%BvN% zH){K(Un>s2Q&M%lx@})5d+43RW>t-$2d_b?b4qI1%I=fNYc!%~x@59WXW?F~ zlI?q7Qa{^-Y0(0ABBQm+zVF)@#rV{H$pT%`z!_KaShyAzxySAodj3E-V_nj1+2m(S zB}}?AV{3Rc_a;Bl=nm8nEV-P!Y-6Qj(TZbwS&?~ndj97Pj(Kg-i>0=BXE4l)?pyY&ZAR3| zi<{T1TGsKpDnKo;@=s4(G+n!E?J@<6HQ85M6v8Lw?%X$F zlK6oot23&k-}0|=-_XHyV{tA|mbalGYxLx~I~A6!+b;jmBPXptZ;pAAmaW762E$cM zS9d*k6aBKuQ1oC2U+^}?CuXW~+R53bbGJ-My!1&oy)gRs)w8qS9$s&v%YI(0Z zJhksgiyfV7*ksW)d6A$<(#maj^Ay_B9GaeU-^=LE``h$7)~-GK{ww7N4y@Oj<5w1F zH^y*12xrwYuWY(JqTCYA^JDTMfAWr)&lLu_zMbC4@|l1&k1r< z*MEjZ3Qeg++Kn-s8$L0~$JpnoMFB8{;*r=db5jnMvZ5mk$X0i2YeiMx%UQSZA zf1|!;rd`R&$+Zc)He~AOC@%ab={xx<`%#@~S$_L}2D!ePx6t0;l0k;(kDb<$kGET; z{Ql2ic!7WSBP-w1f0DDzbOZh~a45X{P-*DU{OUi$LjEhO*;ZYw3poE*T>p&rNA*?y cA@f$+230Nj>iKH&)#1lgj_tH#=j4^tT|N9%)OB?Y%>08QkDtBd;NscQJ4w&bytS)e zT26Vx)?F2~P5o15`2~i1_yn$8x21c+v@@5kO`1Mu=e{EfDq2%!&I^r$y?DjiZMzQ~I(}9`Nkdja&DGOCB_nUnqUBn;#_C%72alazux!=-BPVMb z+PWu9jZ4ayI&+@2y=z%j{kqLNO)c!^FI_ot+Uyx~7fZ=1Pn*3!Nlp9d>ksBu_R8uy zB^9-YPMpcgD@jVvv2}E-ZETN-P1>?^Urc;zV{7;39edrq0tAG``zFmWHn+8R@(`Dj z*U>jMGPSa>b<)r_3JH(t?3=uL!&Yzq(5(F8c}rHA+cM|%z)%`d4scj@}B14o~|`Pe^YhO?V@d`hOEh{WZa z_bjX(n%jF60S#al6H)#a-xIi!M?@zW zh0fA;uQxKciHb`uD6N)MGO>_%)r1c48n{Iv*t)JFeos1x;TbZ+51fZJxtc%MCW3 z(;sX8Z`fVE>-D-{C84&VXI;vzPE}5HqCN3l*Dc8f|W#Kh9-1$zR}+YMhdb z)qGw3`qQgh1>`@rHhod}W&gkZQiF@q#CZ-I^Xh${{3-u?=fV0D|C4{{u)MLU3_8th zmGJv>{i)NUbL15d2qk!`2z4^NUdA*pPxkN9ydHt`pRYghwEh;&K&rY8P)rlS|OgU5L{ce$F-!JxPcg?x&+#B0ISNhby;@lS!^<$ z=J8Ew5WWB1+(Q4((mV5G&swS)Gfs0+n#i%i@Ym0&%}=A>UJiIHSSs*j_mN}zZM$th zRVL4@wRvmlmBysg>7pcsfAJu( zzv`|HwONd(K_-8hFO179jt%{i3HJJ0w>)&f&bYLh<;J4Bt@Ga0`@LZf(OI*4_3GV5 zi_AoRUp6^6UwIlhA-ufF_~!ZF9YJR&?)V;)6Ms{iMPgd;F&py(Z5>O&?x-qbh(1|) z@L~S*^n!V^-{ z2lINqI&~-)@ArIFzb}#_aC%|HBg@5acSaoOQkE~Y6XxF)ciLxGO!bjj&9y7{uh0Eg z?bNYYa`V&LQptL!2m1{zU;gBbex5o-I02lNzNj#6`?%lqP~ZRh|G~@tW_>Wc_VC_M zeZ}8bY+gky$(zvsc+U6gXx}wlitkoQUek4|IsY@h^~S4*rh2v!iu<1Z*&~qDUG!!h z(;L>xNyl3(j?{kIrqUOuH{tqZuAdsv^e|85K$pqv4gX(1Se@~#W?fx*c!T)9DP=E( z=WQ2dJUv-&Y02N!m16Vn{+TO~Y%xFh*RjukCRZtDRa~on#3jG`s_2GA4coZ`|8vgY zx~YWEz0LpeoOC%WE4N427;kKz6aH^ulH7A>GOk!^m`&culX_2^$5**@vHS z{+}+q!E+C1|9My-9bq){xp6SCM)ZBrI|F08bMB}AJI1xvXO$=~&%P62yu9el_NLDp z|IByl__Z~tzL24ev0iTe^uy<)1s`3uuvf2N`7B$ep?2=)#h1REQh*dOFFTpnM0B;( zzQ6O|W#%Wjr+Yl?&p+Dw>HqCN7EDFc`EGd6VGo!y{lU@7Inx*XyyTeu@pZ9Pg7l9N zMW%`DS%MqlPsFEvwB$PwRz-=EvO2VBgpkvP!z zutulrv(KI#(>@nonzY05WvT3jt2NsMZ2la$v6JIQ)lYA=_XP~!tj~#`p1ctjn2imh zXaE1b|6h2w$kvAC?cqnR^$I?!{5Q)c)7`<1@mux3&TkK@=NFv&&i&o;#?(3Wuis4e zd;F)m^1;LBM-=BwoqAkfu{(A7&-7W%ko+dh8Bw^iB0Fcbt)kCK<>bO+rQ2?uU-?FO z&nm`mDoRs7o7l{b{5Mx1N$7uusd?Hirfqi~%NEE(e-fkh+HWbQ&)=Wc)4yNhBD3;Q&CHl(##xIc-W|O7Prk&GdhD$FFdBgNpbi>bx8NNB*5GU9Zc1bzgF%nEmC3 zujVr+d*3%ayZ^tM%eKsA{CC$2LaG6l8`T$$`jhW{o5}X(`iI5wf42Scn=0_A=lRv% zM|-N(b&ucPh1Pn`p8!P$1!`%jY$Rx4g{V9DhdOWBuRj^?{b^plVj<<-DFb zS^Ms+oBP%#mMQ z_phZInwbpXYK~)rzj(swGgmfire@qv+4pUKz3KjgdT&=b<`y0Ae8=$nt3StS>mTW! zr)(Lot?5&G6Lpyd98H1=^UV(E1+kZw$B8SoubzCqiX~@v=B&x)oB#jaaoHrgn)8PF zjQ_n0GH2PZ(AHhoz#CW#@oO;Sjft^E-+P0f1x~zCDZ_8h_jiN(0ls~iv;IE4D0$gr zx4_z$_A~8!{W=-S^5dSLbqMVi-q5r0>#~{WBzAv!?zegKukvHt{Bpql7?J+Gs z_3-``gM|9f=LaPY=$W6D?y1e<6^~DhUb|S5<3?6x#pW5WM8I|a{1WX)2aV6^806=O zB>jGC@9!(q5grHOX)LBQE8$`SYRHg&Yx^KVP<=z3ivWRZURy;eZ|M>jd#x>RUI5dcSh%KV9-` z_Oq&EH~#O_oO#xlzZ8@H$m9xyXF7PR(eDDQ^q_cNYlY}>Z>txWQp_sf3nP39}} zR8F4l^I3gWFt~A6`-w3+@!pU4zuWoGzOQC^qjP!AS&7}t+RDW@#QSV!Ss&lYP-c+4 z=Cp~m>4AT_<lF7aE|1CK;r(tf-|LFqY zHWwyrb&j=}YBEH^eU`>Fiz{jGg_kC^x`%>5v`Y}%a& zH^0OKdZi5Cp7nmS?b*1~{3+8di35BJpmI-$@!LvCrFXwRPv3oZj%V89A8(hpE%^Dm z|5=w@d&fnu%(Yf~l4l)#<9zwd@yWi42kw1&eD27y%3x`wI^|CleVONO9ll`=&A)a> z-Tdy~eetJN)*!q~|IF3>Z}%5}UT-UHxv?Sh-1tIeYHZ&HY)YOQh7E%v@G^NpwTPEYW^Y&yGtnX{hke)WZ?E;jvI{Go=mbzl23%k~A!@BEu@m2h*J-{n1( zM$Syrri#y4Ryiefq2(qi`(;+HN)tV5d2h6qmX?-=yIpBZs;}ytE&wt)_Uc>q>-+zm zURmt@_VP#9W?B34+?VSv=-geD|9bunr>h+sI*H@ZYftx3Ea73ae>akso-9~d4q(b z*XPU^chU(D-gH_uft%|o=c2Cy-%sA2^uyb!gY{EYkfOY3?Iu^>SNBAnVjjCOKcDl! z3*_7->5|~4-beOx+TEwii}(Bz+O+i#|I|6>`<>Toq^x?JVxs>eilcBM zyGnw;U?e!czpP;{W2}$s$ck$`Ui>qH^G5wcPtE6N7;jv+wC_4D&1-k6QmN@isc4e6 z-;21-^VGrpn3s`kIn495_C4NXCBVUA@jSkJdd0L&^^f)(V!Xk1uK$GaoU+n69SqMI zpE~HCJ17(ZvFQx+wpr)hqWY#j+L!uB)y}NuycB!F{>L>NZ6r^-Tl%wXmwAxK3C)aWR^FUHkG{XUHwJ(Rv7%6Bq0BB%}l2~aT+sUS*&z?t)b}R`cn|rI4?cm zx7s%H?9bm$9osGc$8}^Luk2%4v(d3*f5AO}za!sJT0uLuWEah;IsbE+@*@w?=cl2) zvZ`f_()ZrhFWtgwcdk<5_=GLBo#~;U{Wn?o-_mN?aoX~{Va3)v8H;W-`}br_U_R70 zIdP73<<&X-ixnZQ4Z(!f#eRR*oZEiwhsE=snob@2KTYZqI=A|AyLa>>v?j}@w3x4x z1$X?ue4}~CN?2d-yiP)F$o(Cm_BSQ$?(8VvU0U;^eCOMO6|=-$=bqrab19Q01X@zO zkNyATSo~?Ht?xZfCmrX6bX-|({Jv(?ZX!45b)2cN^`)0^m z-BthU8-8<2czfCO@3XW0?Ju?bI{);^k12~UKApti-B8PLK(FRzn9^%@W~Kc+tTT%L zyRKxg+q<2;#$bZwpL!t^j!9J)*D?9LR{lSy@)DPRN%?1HwX~8A;s;OcW9vK29?5Vg zgp(n<>S4_Jk9R-%W{1V?_rCn}WR1=zb$=cCyuTKVx8mx4KE2rfO5Qi~<-U+3>!&?u z(E7D#U#1i*!}dqdeUkVb4k@n<`@b_Sf%nO`%vRL{cCQYgF4~MT}~w%(ht63=c@J%PTtNb%)j9`<0mnl*XN$z zJ666h^c;7J!>{)4+O{lT-q%-tEb!lSYN>(?^S0SRg8QSs*(U5}u$dhE=(&%o!?R`S zJR6$j`#!VWNax$IT3jz?hrj~)f6>o$Zc3lKds^UQ#);|wHzzj9Je@iJ#|=g^nIr9- zH^M9bsNGmG%4V8DS!enq-X%cSpmQxZq5si!0Z~TE}-y;@OiQgA#kl~!PT7iA{ z@58r09epU`kmk|$KH9Q}=X+$sZ;=hPVY<}|1vg$jB)EgYN96#hSg2*b(RI?Zl{@U@ z!i5h^*JR7yTzRv7tD@Ckr_UY#SmSwl48ugeGz#*pyCv__uqHt|`FV4*#A;r?=qjW2 z3v&DSRNjn!xso@3<4VbGmdCy^{#^MtevTyX4cX_-`zB6LGcq%o(U|+FD}g=k9ml#( z&hs4)IDgjXZE&lfuyNOd9I;c)?Q5+MJ03Zfe{ao`liFXde+ziquw)N+_SKK<%#)(5 zpIqL0Fflr7(r2-@8#9wv9yeR~^6;_;clJ)6^jS^j>Z~)0r!UvOTwL%;FImjNpu*2z zDl~rX!;n?=tM5+V$<2I4e@9Tfug#0^%)9tC*I?^^T~l_;+LE-a*9}~{T%8P$ z&!;cjww7=I+$}E+=Ux+=(?8vxHNMPc+D66Cw`+MzUu3q5US~bXyGEH~g7BONCyM91 zmMYOHeYHYSDq(R_v8Dt={07}6%f+4@Jn(his=UY9&plbLa87%9rn2F!;DJ*UA3rrq zh^#-cLB4CpCUuD^vbWbaEndX5^Gk?<>Ek0wbFT8n9pO$rxJ_)W!kl|^pJ)HRu-?o2 z=CZK(r|fmJ6Af=(3f?Lsm2=43J)5gma(hm+OyvC;|F2!Sa;`O~y8YzC{%^F5K61n0 z#OD*AqjJhWJxNsc(~7iOGVlDYhb%d*yWZS9K12NQfnTQ`b@nrA8a}+4-HhZg3V$IIg~W z<=&4oCQUOgyR_okDM7!bsjOM&^11wqPfBhP)0atkqxC|YO8PQ2cD9o9<4e6I9_c-?ejB2e-+2Lx+l3F#O6pgo=DV6b^PLbAvQ3R!Nlf}y z>%yHEex+ShYY@(udYfJz7+*4Dp+Q>dQ(zf%pBXf?{le4i~ z^%QQaN^dyJIl(yN^sAT?GtXUnToK#N_(AX5-j*95rbsrpX*L%!1l1deZFs1#DXL*& zwzk{qGQX9~502Wl&tkZJLz_W3=-QiUPbAnT>?%5)!*D`J&x>86tJhj(PuMSKBbAtK z46p6k8n=5rXMZ4(JUg6W$x_uv}P#cV^NX zCKP|TrK!K=*TfH;&6oI|CAzgPp1{E%D}C+>b3*qU^95G~F9!&HN!Q_zR=3@>u;#

0}nm~lhL?{xd*%*;C5tp@yDVdCcH!tu6C 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 L)z4*}Q$iB}{|7a! literal 0 HcmV?d00001 diff --git a/docs/public/EVkxOt1.png b/docs/public/EVkxOt1.png new file mode 100644 index 0000000000000000000000000000000000000000..56f862ccb7f578c9db8be3f9a7c085d5aaa0f622 GIT binary patch literal 65661 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

e|oF0 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 VdGBslW?*1o@O1TaS?83{1ORr5U047B literal 0 HcmV?d00001 diff --git a/docs/public/HL5DP8H.png b/docs/public/HL5DP8H.png new file mode 100644 index 0000000000000000000000000000000000000000..523d59f98d436b42465469a3cf0c2133a25fe3b8 GIT binary patch literal 11250 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 P3=9mOu6{1-oD!M_Jz-#Ac=P7{ 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 ZXVavnL&E+Z8Zr-Dxx~}=q#XIUK6FR@ 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 literal 0 HcmV?d00001 diff --git a/docs/public/QeY6kMQ.png b/docs/public/QeY6kMQ.png new file mode 100644 index 0000000000000000000000000000000000000000..b990847c1c50630ba22993cc84782222ed04ef40 GIT binary patch literal 3572 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 literal 0 HcmV?d00001 diff --git a/docs/public/QiA3ta6.jpg b/docs/public/QiA3ta6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a10b4165c4c30c9d550ed8c2e67c34776ef15487 GIT binary patch literal 164162 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

HiG=(tO*F=QAI^ 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´OOT;!`HJm@bz&|Kai@>uuw6X%i04Ayy95of zesQ*gtZMHK_9nMHGt|4e;$LjdanA?m)WR-S@40feeAbm+Kc~+(*30d^mlaxTS(VDx zIs2Ys==mc&{Xz43i#1tRZMd`M*6ll+Eu<@ATvy%NzT;qMq3@Z4hyF7Z^-W!y`k6t$ z|491O-1Ek&PVt734BHD9YHlmeJj2ztk$r{M)ZM?DR5#ySV4E8LFY&|k^k=4CyZ;`K zxnpyB<#y?3jKy5NiJNCANb($7HM#qhOsi)JYu2tiI~N{lxtk#VOjScHzAll$!1@YX zjl|xV6UiNW7K=_@Rem-rty|&==fT%PueQnS7~Bo!J@`~~{yXl2vHL4#>{@Tgmbb-c z0{hNff#ZLResieHJzQ+398i%Y5f*H)Qj#YrxqvlQimt|om7 zvfO({B(|zCB0)lV%Qj<$ZBJK-&B$N*W6E`gZ97}0rv~52TETi;|3>2DJCy~+KDA3P zh(`E&U7Y&(NKwSoufd#p;Zuzc?7XB>a`V)7#v@bn+XMPma7!NCbNU8P##9NVg?bl0 z$qF!R=DBY4>C8sGmeo&t8MYWIW|$Xnr(WGI;I;I4$KnZhUrbXt=0D?Bz{96I3l6v* z{NQGiclh6DeMYX}>vgILT**uSEwv60-M>9hx!T>3DLE(Jtq@mbj_#KSNqvzDnp1{=ieA7w0|YP`a6WC4%2>;SN@>swoX& zUVjg-a`v7vQLJ{wG?qBoRhpaYQ!A!&FE6|xo-zHLbKZqHzJ=#I-ly&>-%%xcMUo*V zy)%`^xpf)a~KQ&}peizI;UfQuOm*K$Agu{Bg?9FE)t7Q)qxEfT?itG5f-f)}S-F+Xd%C_CD z=+HfXBYQ>+~)BL+{MUIXtSBIUM z+uFACdz5)vSCzgCv^e(Wkr1QJp+9mFc8{|kEVx+Fd+Fx>z`4E?1rF{zX#8*2gGWlq z+JY<8cc~r;bSiD1aZx0$yhFe+aP<_XBAK1aHFaqvdP-{AemD3QeJq@o@RGMqSwLJQ zOH@Sf!jwkeuVMcg0`0of`wR5CmG7r_L~tLTpW+;q9~#bVwAu2+KhCwUSW-97bz)4& zzmw7W#r(4v1Dl68hq%+nGaB9EqJK}VWD1Mm(Z9lF@TXko+Um6uy%~+C9t3R@+IXk+ zKf`r%huOh9rn+oX`+ei{I}H;y4Y4hST1~y2=l2&JkTbq1+;$)}%wBNn^x1lKN!_|> zN0&psLS61=?4Au9Ii zC4BK^U4dGkM23t zuyn`k=ri2cKhG0kh%4SdV+rG<6~>HTj@bU3zSl|1>9GXkIctkqF-uRx-`T`xIO~V= z>N6icn3&-!+%83sG4k1Dp*JdSHWgF{04w}jxrxf;j%Y#pjvp+o8J!Pr>PN@*vZKpXleU{8m zY6{iUJW{YVS2S$TAyLlmG+*g=LSinDJI;pg>`+k9)_YtMII}hGnbNzhhL@iSbawBI z5Rdravf@R|-VaM%y*iRu8TJ|OP&kv}2 z-EJ#4F4DMi#+;@9k-~PH#|0l9r-|^}C9*8xzAmVm@^A5?Gp9cL`M8~ouXuI4iMcMF z({WL#m-p#yr}ECaIeU6(F0fklidQOL?osiA%T=`p1zw1M6fJ!ASu}^U;q2Ba*RC1x zvS;QqGY6EtkWC5+VtZdOEyN)HUHaN}KU);dg5wfby|DbKlWDx~={oD*2haX}Jc;8Y zht>*v;kiZoA2HwDBe&<+iZ$Wu9|g4Vgu6K1HV%y7u@?x_i2lsbySZ$KgX7)x@3&p_g3rUuS5&YPU$JMC0eeEs}W!6WT_jQr6}lFb%$++cm0)=;2Qmcbz(D_KkQr3 zb*&*(G1|t}Y3r59b8a1dbUAf@k8AtnttPu;66te4{wpi;HYg;WhZ0omZ(U}%~ z_Sj|vZ^w&keUz2=#&I0%V05!G)svo_5c!{>s?$4q>#DVSzZx5-99-YeqOvIH;FnW> zZFS=f50#uxogKSrm)LLbTkj_UcBRUK+N`h7bY2peM*|!XSWrs`w-9Fahhih z_kMH9i%v3zE27sr+yB-KSoa`XdKQ=cB}3im^M5~zG<1dh<9pA+{?*mQTx9JPWHl+(T%=jpybzO{M-H*=hd-^jj3Vh0nVEVbLBUY}vr?2Vf zRHkdL8C41#ws zy*AL;_lTiHG)}4M$Q0SiPLZuYd(6v@r^&ZY++aR;F;~&nf|pwhJ3RFl^~omw1RM%X(9Lhy{~j#cw!w_oNDg*-J~@oqO`YidimEQOBnbbg>dJ#hzgsC zvc6q+XtUm%Q*Ij~_Z%yDnr6zyI%kc<71i^H^tMVK=vw!>*6+JO(v;n`?n12}LnXLg zx5_2x=w_CuxbZ()xrdIr3m%>j~u}b>o_Yn^=ycmvh(Y0#^q6#$5(jtF!p^E=pREb6Uf+2_Xv>D!p9$V0{Nelx9ZLl+)EK9eYD3 zh547h(+Hb0_efMm(|&h3E-k9m&1?A|PPVC5C=jC;1H54p<)@`}DpV-C3}KI@|f z!=?|r73T-6U3yA8tngZ?XmZ99iw>^q&mDDNE;$)L!N+<>$QJEcFQD3b%b6lyR>43AQJZ4R8-8Y=i8Zf8fXzGb7dpbpQeRvEiwkNfw6?=9ms zja?;^bYEyjmsq=~Wnz7OaLz039-(J5)-Pks7d4!u^!F&E-jmO)hwnXJ?%wmRaCOX4 zt-m39-Nh%l)aBMOG3D-yXtqpZ;jNh2Dt*nqpuyou$<&em~jj+v^rQ>kFHSNQpvOG4FcTvx2nuQ`%7<>MNk$!CuyuoibWEOwlm zny4GG>)isKya&5WOO zaNC|d#vtDtYrYzpE{e##$#~##;imp~iwy3@2OSPg{4A@qXKRDk!NPYDO2?0^&ynon zKKpDPW1z(0>Y1kdH5eC$d^zfWdj1}UC0p{|wmdK}B$&-5z_nMe5{@rh`R2p-z>-J?IKAzoQ#il$CHV(;M>DSt~D2-p|&3}d&SM{1g zR-JZJY$y%uah`X7;lsK{@xc@!7L6kMCPH z#JFlCg?!v^s1sXkWH5EtBBg5^etedjS`}W}F?rXSO6wT`7sVM&uPGO;yk=-FdL-7> zg+V#!Mn{Be!-7-m_TQ1=^qyHG7-hJL>A?D9$(*V8q8fW;q(ATUd195TEW|TC^_dF$ zgoEzu5-(iWn%W<@`_am+EhZwT(;aW~)kZX(7o6Qt=JYvj{Q)nZFs>A)K&M&Z1`J#} z{LdtqqpaH&3tjlnu#QXM)}zdi!^r zYq7er@#wv$s;j;VKW&v;9OTK68$z25QLQ0$)M1obn13lmpZ zem7(c+N#4CvgNcwY+#{LOq}w=uYxJMA4R#1UnMct{G8c+B*9Jec`sAc$0JMj^zLyN zOPtbn<4>u91LNvDCoKOS*xL9}Q>LThXGf3x@js`Z2VIRR7MgG^_URw5?*Z4`o+k5n zxV(;W;Q4f*@AS_ZJIZb37N*XdDsV`CPPOy=CJQZ}{SzOFW-XYoR(w7S!?rnx%Sx~P zOBQ$fTG}D*y898kMsZ*VSL?A9)#jKOttq;_p9AKv(O7HxJu4)1mtu#Qwa~eD<`;P# zw_o|}^zYKa!v6CDw`O0-2u(NKs>K$1-7*rI%=)IV$&e@b7kI?8i@{8!KjWsGE3tuuXv@- zepL44@2Q5&)MXs{Zu*}^ncj0sZs0j15|X*evdxWeu|9J?qtqjz;gC9l1V>kLHEM&gR=YX$4n)Peq%y z$l~uSSTtw6dMnl{_Urf#*TRrTk;R|GSEg`WO?ao)G~?kjYe$_+8#Xir+fL5Z7kXB4 zy4U%@D(kqo{_QcJYm?hKNjQ1DpQ}!urTc?|IW;@H1d+ap_do-SYF4SAWw#+B%MKN#E zf?Zjh{k2|YS%nczGjBdi%bpQ7ldG-mVD;)FMlJ{W7@Q@ZnSI$mMT&WQbn*owxuqVb z{y2GXi4+&OT`-LJ&iGSNZTE2(7SqQ90a3DNe&|>IX9zT%=I`=P@npowwHJk*B6N4G zx%%hW1UZh>>|lvwsek!R0}nsa*_SBre&<~Aa}gq93_SZ1Z~SMNad~0fXMvmkXB;Lf zuk0`h`tr@i@syhRz4HXYJhcK^!p1)pC%?a(u2eB0~DU1Rc{ zp?qcVorsw`FYByTnlZ;QFvM`WapL)p#v18@S+;k!Mz21zLNK4rTxjbW_LU(g&(2I> zoqdFB-=W8HCVAbfD}Ntb5f_>#TF7=p{{JR(L300dD&ALqeGjGo)$+uQhE`;?BqEydBLXb z2mc;8ZDoH)DRWQF;ceAZ@;U=|o&P9S_hOG%>tgOBI@`p&&m~{z&{{pir?BIw`ROi& zm^Je=tF{$IaB#TpdKH{?uuOfCWz(+jXWhfH{~il6K9hCvkz&>JLah}uCoG%MU-g`^ z;4k~c65S3>e#YE5%{-i85wohJqGQS9JKj-?`vde88+~HDSY!L&X_#bw)Qao9 zd1bw0x}D+%w%}W(XBg65w&gSN`k|aTQ?@GoX*7NuMx?c74J0TvFh`}iuK$pj>g?u z^k?ybNn73jo%ZGnYJXlT$tktXEIatD+wR`pNh`JMD;zJDTW-i)b4FmVU+tHsg`HWw zA-jY9dryBB=ohuTZ_1kB-Sy#mzwnAMlN`$!$LvP7-aUKI99v#9VIyyWVQbdwSa)aF zjLnZ%dYvl1!jx_Cj@{BPD`C;+nOm?{#2W|I^W%L$a%E`yKOlQL6FxB;N0k(!X-Z+pOFE zN`Y!q*Zvu2r#m>TeWWIR@)7fv=-fxjzOAQMM7vLu)6IFT-!Cvruj+{Ri`4u1204$X zco(XzzN5i*R={OdYMup0TybNwuAh0S(9|rwSi^O>jS_0U)=445?`u6Smm zby@5`gFyZX{mw#HQRyu!7#)m`3wB6q2ii{aZ1*>;;ND-%F)=^tU&2NgsXd$CZdiC{ z%PQY*s@+bji~Ck-tosznGvo8-Z+#-ZQ5?CG`aQ0Q?ao@!>b-lr(aztodEBMDmY%jx z`@Bj2hPY&oeDw@VrHg;Ot?kWbN{Vd_>@@o8+L^HMN6Sjt{WDA$-|q-c__Kg9VDm+( z7uuJu-{R)xo4u;v-Dmp#fI|$yv1)T{S4^q4(K1+(*SkOCqwB7X=awoj`lNb4P$=%* zqu#Z9k314!U3(zfMeq!tq;+QNgo3dCXAA*lkMBryS)HmmwaYH=#qVQf*S3aAi$@(_ zp{;kj_>uI9jCz6c>aVu<66`adMJ*5v-puG)yS+1g&cElA1McM;TvOaExa-8@N3srU z)>^f8NvPKDZVqs6TlgYq=FD5cg(ZACZJU!GRF~Ms9+L9cjXl)GK1uG|JhjV{S5D!` z?o451cXc+K`szWj&igAX%eFE#Y`OoPrDb_!gNouExlDQQd7fcEJAchwytC`vGs#8U z<+4|H@s;x?f3=YQ2a#BleV;-T*CWg2RGwG{_>u)3{%){`Iv(ZKBL95~dV%SzV_nVpl-Si3ro# z-D!QrEE*r286IbU;0Yfle`*6+C5 z(yzbgV7dX%z0}zcPsA)$J9abBgzNE+z}67al_?kRB{vjrdzv6S=gQuzA*`&2c=O)w z>R;co$KhIkTHZ;~82+53o z_Mm!Ol16^O!Wpwx6&6aeA78;2?Qx^AvHH1>%k>$aESs)fSTwcR|4zc`UG3VAvt2~r zty}wNa#uOG*KxV#M*fUBV*4{r*gR`ec7CxbP;m1kA@+FPnlsxQGx+ZXhDjaF4-Js) z-5l`vw${SK#u`5H_mmb~`#Lk(KQOMHM`8J+2^x%h#Mvi^XBji(7oE57SYdQ@)t`fb zr{2owUGx@gn14=1;`g3Udyj<9e-to3n`O3k(#0;Z*=y|I1u&%xXE?=*7z(j(kAJE4 z>Cj7GC-+mC$;+N5t^3h%BzXRoFS}nTP5g8uvPvRRq#*v8t%I>xA=89g{m~Cr9GG9S z^>c?7d+4r?i{<;j^FB>F&U7v_Uu25!rI_$J$=PqE)cIVC-!WWn%l&gYQs-%&a>p;e zhcvLi?+{8WRQ;i z;~lCUzeBhF#P{_oBM z_o9$>b6mewl|~p9&6} zPi@zExz$rwH!Jtn-Cr|HRs}A9m@ObBpO=;u`?TmRd(mrlJ;k(3BJYc5fEHXBzRe^cqA+DVPKuPiSKSsoI;BJo_Q zfXLd^nJ@SksV-WTE|w4&b+Okqll8#iuw5Fn4Fn3jPKaJvw6=T&@Ac@O0L$lwPOH}( zoL#47a_d*q1j#x@@8z?nJp3&5X(R8WpM4SuCt_ku&Ly0>`fHkw=+Rt6+ku$OBT6kI#uSzs3TxOblNLAzfqCOkGaXDoSZ7j-pCSnc;)#L8WoS!}TM zc*ew*3o9C()=3=U7i#TncJW@!8=Kqsvh`$-VEff=J6FWk8ha;+y!&)8mOJdqq6a5` zP3NB|Xp=d0!!&UQfva=MRicHY7zCXb?d(2j+VUdfQ%KBB@zfeu8L3Y_L0yG*)v0$_ z_li_be{i^JU!Kyb5aqaqMsC-=yiJ>~XjpfAwY>4+ykOd@sy1G;22(zT+ZPRPK2R6j zDte5gVNbnHt^)t|BU!U_;-@{bVD_o#uCh1&sAG7^M)081*?56lET?^zD_t`c>sFV4 z6?1Y?==Rl}#g+diYS*uf_{dYv`(5kSGZD$?sb?a$WOuw;p&qXJG4hcbkHZmm^PPUh zwwtdP@O7t3tZ^4u6K{C>_LbWoS$FwJP0LY>+L2bucs#h*dG-}+N3Gt|YhIbVRO~(V za^~|H@5KX*-Im5Zyq4_ja#Z&G9=;#lQ+6b7GdsOj-bG^Wrkyj&F}R7j}p#Jzo@a)ZKXhs{ob-+4-GSm7Ov#i%l+EJ(C)IFUivMQRHM< z*V)_8xXw_@Qq8%uAnCI~?!2U_O$pBmYuv2*MOWU~)%}R`=mBPZwmj2C>!d<|?nvw_ zpTYgy`k8VSLt~|!sgBX9qlM$2RZ2VhoyBp+dCx+xABwJ07Ml^A zzsK)e0=JwPuSEvOva*dutO@>G(hjd;77b4NQ_iM!o}Tj-?Rfm5An#!W>oR>)ea_fN(q+5$AKA>JcYC_`CGI(vM~XymR`V_P zVW`sYU={l;a7SU?1LY0UAEbV!KFd8Fw@_no=?)LkbJZW*Qy%P%?@Va-yZ%Tqi|OmT zuobG@FZ(T<{@mO3?YrE<(474lEoLTv_NC5=2n^2-*XNtH&B*0yYSeF=)7%?=8r@*I z`CMSncG0RHt;LzoZm*l+63gply4Hx-{*oRgk&E)+haU)rbKSh#A% zjKwPtC+z%YS1K&&IqTYHsXaBP!j~JYK6)vK0b5Rs*f^nb@FWW_{zVSn}q1C;^*07e`g!}z2cQo)27ZW52;I=^Ht8K*0MRc zqtM6ga{LNa%Qo*Bd)+rx?MO?>n406=sc|yi&ws(xnSByYH@+M5_}aLL9qdk!akZWn zz9Mvr+m`&9={gQmKkr{Kchfi5XXlnT7m7|cHMwv)aQ&9_8lPBS?|Q?JN1}~|w|BaI z*7U!}bmLP@-ldPm_x#U99hCXboTplDSmO7(V8NNd0(%zo+S6X#K07QI8y595{AURE zJ=V1?C{W+B-}2lJ1;KD3PIg}JSn(JyhL|%uGFu-^_7&K$#qnIJ!Gg^9Go~)ozjHUK z)AcjEuIpl{#03}L3vf?~j@sQ=6vnH^So)#eza!1pAe!-L)|S=Jc1$@o>yy`#MIS}n zZb=+{YnhhNwW(+0YM*dbDDH#(##LegEbc$z(0N)DraG@Yz#7$#3ljEvcsrreAQj z`O)`L(!KLst=H40h}{;wuXjFTvrFtx5u14V%8~E3egZpqMSnH=dac@j_gvHw?Mct> z6k41=^HFQYH7zz{%YSNBv#$SLIh)V2dx~CXuett?RnKGu{~i!nvdJzYvex}hyjs05 z>&IWyVvCI~t}IE?aOLi8=MVZg_jK{f9W!^d3)r~ZEthT!Gx{kx)9^~b_7x2wCh2Ea zx@OE#+a8(BusWuyiFNt2#c7wrn}TMCHr!ECowKv4V7un7ooQO!>H3fI#4eqlmVIX9 zeB0Ag-38qA#FU;hgG(S;iu(_~)EXIih<+_Nd?G)*JC>q)n@*K8Vs^@sChJNpScxKP(iK`uNN+%t97SnM}f5%QQuY1=ve<&1T=F;-t zQsi{>itpELOb0T=T(?i(nIW|58fW!|=^E=6Hi(MXDJF+LK6UESw%5EHDs#d-d=+Ma z&MA4hIi~(rkHimO_I(e8bl01*9x&26*64cLJT^v6a$n*12CE6bHy+Gko4z7s!On`W znwxl(m!;h>`Yf|Re*aTzlExnp8?r`or(dD8S+SI)k&lRX zxb+&xkYdBbf+f|;lkOLk2fkUiT}osrk4vuc&gq5h`Rk1~-H6|rTHqM^=eTQj;Ro-t zg>35>kEYpf=2=@RyW-Dr%?D?m#BJ3}O}AS%HSd{wZk;OE>YZsuE*u~2kxH9``xihSb3W&@1heqj|;Z-DTgE+54s%6IQyWq&X2C5o3A_c zGs8}$u%vdnhF&=(wSJlbztN(k6vKCke_c=Qyq71vKPmQ#2OBff{f|0f;jH>cxOZ+^ zvoGG5CU@lzuJp#_%Z+Nn5tOx zKsW8#tF<#bqxE708@)fvEch5ULsfs`+bf(7>eWeKS!OBB3iB&DW%;9c?xqbFOUm{o z1UM(0H9g~1;8gT`#@U2@0yAXFFUmDM>3cYhOX9d;ck~JSPm6ejuJL6lb7|D>xU#d* z+qzFlrfEg}jK+#ynaZS`MaR80ZoZakWLvA4UEbjyvok}T^?=*0KF_P~tY;;6`usKh z)@suAICW0l;??@)yk6&bOr2qSe~0#!HE+5U@9+5BCSIo)+9ZAcme`IfYu<(2);YMX zD)HdCWk%BTuPmRIUUT3`jpKv+2HTc*Upd`4wde2_K9Q-jBqJib+s-8vyfevS?~E&C zSB&m_*bo`j%k*=`EB=D=D{`H2<(5CDURgffXwSjDzh|l!b8j}}{cIhU92R&)H@C9u z#Tl+!g@snBdftmz?kSy}-MTulm|17RqU$rAO+_o78+N~2Ws>^atEc{n+3l}VVtPq> z#+ChsB6mZ0<#*_u*`ao@zQD|vz370HZCJuej=hf(8_qZ#bFdD56=5aqoA*k!EwfKm z=333EzThJdHrpC&b)M#)9Qrw@=%+@Cp!xm=hb)cKG=Fi<#5f9c5gYyXTnD3 z#B>us-Fd*Tn#Hd8p^$-jTEC%Tk-X5$grwgc*A|=*a8A48r!2DCYqFB+vxIFwj%?ki zvDZblIW*?T{PsLmw)1>?%G)35{J66sr7v&UhhKNXnARDy%AH;j&dQi@FehSRgos+B z3-i<UIQDc4L%b3SK1coiyRo7w1GS&HaXplbP8c1xUPbvg%w|vg1+lo6wIMe;U&C zlwQU8@A54;QEwB zH0-ov;`SY%k45&$9lKVOCexjs)s$%x_iCTQcF$~?ull#mOP@c|bG;d+z%;+(A``D` zwZXmQ3oKjLvhY1?U%z9*y*P!cZH3Eow5$%KMCYg}%oKQ>bK=yLb8PF3E=tN={kL3C zQ*TkonY)LwM5Eq!R9y(YT%gHz@U4Qx;c2Em7N_PMi)1dF_d04?`?A}0i2~1fE?zx$ z!fMH~)WojaqFJZgO|^dta@+MSJvDo`?VXG`r=S1S*Z!W~^U>hAX{q48rGZcF1#X0e z+D<&leLW!2>EEZuXbHs@D{Wn;sU0HgBewo*mB`%^9Q12zRriu?$-2lG*J#%gA8tFf z2U-6a439BqOko!_5q)H28NcJC$I;`vjDsgUO89e!>w?UWY23`46twr8Gu4ks{oQvi zaZ1RZoeDy054WG$yY$1UygwVIawP-2UOiU0KjVe8*s}Tp)7;$IE0h_3i)!lZ-5TO> zX!SO;rT3zyUDY|jUD2hvWm-k-{)$5$>`losUfXz6j|(hyJaKgOu3yDpv|TFq7E7>( zX_ma6!5a8MVUx&rvBdo|_Jzr3_i27Ba68n`Ai2`Z>}`Z!qvfuqO$FC___27AN5b~S2o;_y8U^}ZlDANE!?xa;rhAU_!)*3R~1&yImxu~jskPo>Xzlt_Ea@F zy}e$p-*coUI_RX z!N9;XUvT}T8EnRdDZ90W-?L}SOmJYHx?ZU3eQwKthQN>aE6)ciZIMiBy|H?Z(haG0 z;e#f}ZdK$@aS~iCaMn99La|Db-FJ2PM}f7cgRZkUUOe^WuFZ^|V?42$%`Cd9E1Y&D z-{H`fJZ^L?zq{~`vd7y8909V?TE{Q9hKp+*jMDgP*gPSX``@!jQ)a3A`;Cq{h6{1T zFt149C<^~B5vAL2$RKLodsHFmSo9NBm20Wtd~O$KEU9WTsQhl;8WyYn%1$ptdh@Jz zx*?HImgiVZZ}OkKY|*_{ucw~9qZ{|{W0LF5;ELbWAYEDZ8Hgt-kD^wc-0!G zfc1?=EM6fTQFjwM&3O+U;f$IgX*hpIe9g3W0dc*D3wX1BHWY8NbkFhHn44rYtwfbc zZ2M;|Wu1FV8NK!?d#mfL@%xj-WAyszbj_VB>-Y4!O0zo|+~3Ebe}87GS8QvZxz*yF8u zQs>TU-J{pPvrm=Eo}_-KJ?QLafvD*9EDX2W-o-r#TE9n2v_sZ>M|POlhhm{q=e5g@ zHn>*4GO%d4du*xF?mdwVOH@M~f3`0A7v4v^0n%pAnbZ&f>Em>V(v1qcDcnO>5+&8%wqw5@E%)v-(k7(w&&D=E{=e?Prt>om1BNbjEc~u-5s^$*^_5Aa84z zjd#N3>jDc7HvU^wy&zkL<@DL^-SGmtJNTsQXYho&x7{d{joKu8{Cd_IUYFTH8m#lu z%{7)jp3$}F`Rb^?_0wdJHve^&$o$VBu;+I7&huSuTH>L)HUFM2PAWAJ+0yV+O0czb z*)qOq$we1>l2$Q%((XOV8E>#MVAY-2D~nl7riVS_F0A$Lke09LWT*_wijw%K8FPj& z)syLtL&c-YJSn|r7E{xbIAgq)O`kPw(f&tFHw?c`E!A1q5#hSU?PzO~!q&L-D%CdG z)3+;3(#*GR{^ryfrM7FSpxXxrE~gDSEnODpN@ci~2~TbP%o}amr~I@}vFq2O^8tR* zRUH944p#PV`?_NugJohlUuNRFP^N~*RnxymS4?i((!gSJX4xX)GiqY5`R$UDj_&@a zwCUNMeN|08<&7Skfd>vSGYfuOY50!QDIx4$GWXWiYN=tDBDa2*(pYgbwEIkW*X~!6 z>>Z}n-OkyD8q41b?~%Bsq`G7OLph5zthra+zW&qKn9U}&UA`l*af;p2*Arhme&)Ta zZz2Bo*ndZ5E#)6S6Ti_LHmd=IK|Q)SK_{Xm4CxupumN_tf|m*Ych= ze>BSLOk3S{$D29jV@KG8XWNb{$hbvm{gf9v!+ek7x?!q&Vdu_v#}oP6jHGg`sua&o z=WE%=e>T4I7}x%fg=?fQ7*;&vk4@SVQe*jQrR%ZK0~UI0-=}_Jzo*PCs<-)(tuNc@ z^)oaUO_8gArp|WPd+F8O>78ZL75W{|3r}1Zh+OUdate#oq0>tn*P8uZtb49&?SXFQ zwIPBA!Mo$K5B&(TMHKW$E5I+mmVrn_~ELgc^1?u_%?joyV~ zGmZ#0e2sZHt8c36rn{xzlET=SzWwf9ShMRZr`Eycnn%`)J}%vJs5dEL%RW=CRgQLV z0<^U6vuMXE+>T!vup%-ra;sGJu=_lr7?;{)=Xb9`7Wz&qT-D|k9Z}#7oHc? z4O-`8o26S|)*HX$!q08pStgv9GHk?WX7Qf%4_v!peSJpCk)@2ar&_(X%hem4X^9Q{ z&u~*FCu`BhKL;mp@Z3%Ba7@}^Dw5c1^h0(@@1(2o0jyJ-SX_4)mW%TJF=`Hb`zlaF zwEI899*2IWQ{5|PbH-`YfyGtA%l? zA0(gIoPK0kd}p!N_Wk8zD=d4%gkr9pxfb-MXThASaS1nNr^fH`V>_Ju&5JD{@cev( zwM(}gjdjoP3NBQN-o5-;@YS%laf(7uvriK{Ya@_)^TtNeAVaAl>{Z}JZmrzU|CUX7*e4kvRkU@Dqsz%mvBxXgUdc`uF42`OH`-$$|6A5WbB=dQ zrNFbs%l6u`6E^?QGG{z@_rBcYDlP6~g3Sh7uE;)$ZJsn`#l%?`4~kkjlup$2V9+^| z%E7hp&MuaN<;INH-Q`kqRc^bxM7?upDY(-o6A1WCe5lh#7@=VCRgc9hv^>Id*11> z>uPtWDLSv<;W)i&U+S5yna6)kIqI^gdxxe3n_Zg7wWKvtX3rR>nJ^Y|h3BnkjhL^!@+Jr(3$%A2PUHL*CS zYRm23l&LDsZKkbDcp`SSdMe*TwONloU=LUsJl*P}ey8h4p)3002YFv*C;FUry!JG>qvx@qbexY1pG57m z(qNG_3ajt934UjKdF95fWVOb`mT59sX+={WvD&PiFC(nIWz`gh^(9MO#H^=8{gYOV z43zrOCw4ngxKBFo;i}N7g~VqsJq@zY{1*lATzaCfe9j z-Bq}Ira_gO(#=S=dlqe8CJ}i;QUZ|-M~j6V*^Y}A-q}ARNN;Q0Q@zOD>(Z1;j?PTz z$mR&_KT_6brx<+`zpB<^X47;XEc2y(+Ul;Xr?wZCTke{{cJJmihb>oa_IR6CZ(XFJ zZQOd1z}O3c$(@omtl47hO?U;8;ZmA zIJa_Lw4FRjvhaE*Y;LS)7sk9;j}riRK$V%t|P8X@*v>kb$~)yk*V$P%1{#5_rx?1P8+~0`c*R7z_Gw&* zw>HyRm(`--$L#MY&Q5yW)wk9w&bn={mG7aqhQ1RSM09PA8SMI6!0WwvR?*wwTmDjNG?QL@D$$i<0U0UhVw>Tj$RDtjBOBR#aPZQQ(K$ zr_VUCaG#&i;#{u1#+PH+&aDM2XBM23{w~XP&Bh@lys6hk+gtPa8OL%42N7}JV`n{2 zH_NBo3(Y^WfysJB_Y>u#&eDCoUit=igW6tw*No@AvN8H@$et}%mNahZQr5`0d+-Nu z>>;jAN!&M{U-A6YwJcaOM$Fz&;CksJgD&6QQ-hX?nQpum9rT7H_LX7yhRP{#({!|$ zR{5;XF-llH<5^XIVMuBDe+EV0Ne@Ih9lTQyN{Ae63%|p&OQ>3F{fa+d7>?#KIL1WH zujp`CCoVX3(&;|CG`SbD(V=xQ9O7nC}kx8{C8U}E+Cj_3#T{I?`(T{xiO7t*}0Mdm=y+|cH!?~jyw zGbda(<=@=!ydY^(@9*ZONM?=AZMsE=t{-{Sk=qt_>PVo2)rwcL)qR~iC-J_^Vx98C z#`m=U1L44++3SBzQ|PO%IkGNu)js7*6I~wP*?%ti?4#(Sm;3HKnc{!A>H1Bv)|(pf zY!9~jh`G-E;C}d+j{S?K?alGO9|fMxUco4}GtqU|*`xE*WRsqCzY2d=+k37c?9UO6 zwQpw%+}z=DJ94UK)$x_pOCQY_Jc=4XZJ2VqP-|KTv1o!OX|44~DbCY(cDniqWNV!lWsrDLym;0XA4ap15Qg`h zfhRVcPE%|VyY`>Ks8?!I?|+6Jjeo-KTK{M0==NUy#^t@{)>-#=9NH*p%6Dzu*BK2` zsz&}(c1N#z{4!>vajD*}8C=I0H?u~r-@{-Xx7cgBfcWaehKgqn7Bx&{Zl4#yyqnkk z>O20639gUt7P{ERlD^cf{P7&K=bmsjIqU3FE4s z!ZxWtj!ayZXQDc``@5yg;r!9K!AeoGgt6z5@f>dJ^p=%^dq16)pS~9v*dLI&ivr zXA)Q4GbYit)p5xRg=}>n9Strut)AUcnHj5eXW!d@3Ku?|3^{9az2o|s)jAI!JbK!o zlgs&;f6sZAlMBTQe>Ct^&ulF6yXW4a`@EbrCF)MnTDBLDI8x&lu8wg#nB&7)ymh*5 z+bap4R7<~xvq!JCrrKxgUe14VYSwg-GzEr?Rm+P1xN^Td7l%@tfeU{#rX8o%^@WsqVZZ`h!yaLB0!a3pvCLI-A!5XG#c)<3f z?(9mZA9e~NqA^?ERz5P?7S+uqP?u%sSePYO_vzG(HlBZKDcgcS^EAxgv*xwlFQ412 z%s%N%U;VhJ32a}{7&dQ_^>g)0zwYcwGr6XIQ=nDi*h2<(v!gebdhMLU&DPOi@SkA^ zhqu#?u9l*{^REmx<|zofaNMhyx#((Y!7158*9$#@pU7{~X>%40*|xR&e9)GdW2}Fi ztYeo*d=={p(+*s@I$v<3{v69knU-p7y{->l7u@4}V6*Aa)Y2v1Pvx(yafsb2z)*hY zY}p5&41VT64w`=L`_j&>n=*OVqZ28@j&21~)0dy#S>cjgmS1;nsWlNh^>+F?bhT_#7%%W*=>@&-^Gj02P{Sk+VZEklX=acD@6M7;Z-`QCn zDfKFLWt8rI!J}s!_wMcu@n(pYe0ywZTiaQg5Z7ii9s747wU4EzcqE>lA#Jsr@5Yf8 zKOP@(Zgfk~I%2)}yF~8VZ`#e6)VtnaTz-TU&%YwBzc6NN&yg9C zd?6W%9Vy#nt|YAadqg1YuRuX|`oBlI9Je%Ldqg=b^0g%ys*bGN{e4Bm>O$iwkKgzP zKF=~X4g51<_R@XpIE-)dCQN5}tjBOBEw`-Zbcbo#jv23_`0SK@RV=mM?>zhDY5g6S ztA&T2rO57eX8&wU*jq@?Fv?Lm}`PgEs${TfbK< zoA4sUwW)bJ^Qz8OkHqd8XS^2J^z_T4%Z84Blg_Tp7tXysBSAO+N)!XzpEEkT6Lr@M zFzsTmJ;fTluq8K)F|5N&R^`sh`c{{S1-8dJABx|w%ZgOi?2dl;nbSk=R>x_jAL1IT zHm>^jQ6jnBK#}c3^^{E;_$*Re+@?-8ijd$w|Bh?<4#z_q&w5|nTHvnSd%dGobX5{# z)FT6q<HM)8};d-qO(N+6C3MQ`kG3WVpiC~{_`J2#Ig$AV?;0gu*oJd@zM+w8JW6~~#tTJcmwyz6QAKEaLI#*x#qWmG@Z3m(~0cjG_94WU4(^E$y- zLt{@lNb9@L_|3*W%Xs>G*-OpwJA*h~eIoBfvgRC|=nz`^EbjK|J?EY?{%kI(Y>kPy zYrv~nxUMwgT7O`Vv$Loa4=Z#3cixjrAI~t!;q3OF;rY9_cWN&4QHRL^Vr$nMT0U$$ zVXC_CT+(Nao%dJh=OjKjYt4FmPi#!e{wpS)dkfP8Hs$p&f7B4&9?Z!T7iP-Opw{A~ zFJsQ;_Vpd>x{acjosACP-QaELI`K(&ZZcEAlj|#MrIx?z3}hDnEXX0ly+TY+`QoFv z+%+{u%h+zFtbP|9J!#di7H#pvCXwsUT=ihAGdxq|w0&ad{ArAv^%k$GRow9N=pV05 z5+a}FBQ*KN&p1rVPrLR^%Zk51Y2wtw+|zojZhP~w<-A#4wCU-Z^D~nLHmuDydY7iv z_lj}DqAwov4 zx5;Kte8-p9>+VHN4|H7;?7eC4rloAR{xj_Ld0{Qb-XXL2*uAKJ-kYH_R64Bc1V6Dh zyH-!v{UPGc?YK=zLc#F}Ta+&I;tlTH-loU_!`RZjKUvb5(*c^<2{>D*JiB3{uI zTySdEGRs%Crz1h3dJRX<>W5b6j;w(44w?3G<}L zus7$AJw3qauzQ_ixb^(bRCOKB+p@_iIrTF>iEO#IDC*OhnVLUaXFY$**4wixpnKLMXJ6F zEhJ02H$B>994cm-Cr}W4#^j1CW24w^W5L@M9(e(e-)or6P!?NhFW7BWTysQQ$4+6| z*(*s?E-^CZ#~x8$dQEj1W0q)Wjex6?jD7ah7VrEO8b?>x%6h$EyB?>w#i7hxAS&wa zo~r3iZF^>vxRn&L2VLv#^H}v$@YT#o{en}EKa+Ln^c3JQEj+tBaABHLqpm|L)9Oj< zS1529IWVwrzflSl-BPxOcfyw5xrc49=N9X-3SNAsGi9NiUaF?@X`NK3hH8&IjrPes z8K6p0j{ z-8prsrtN{5AKGsjF*W@>vqW{ymPd=GB}i;-lDL1wB#qzjv0;~nG1COAE3u(lzjZc= zg}ze|kq({HvC?A=lkT0_ely*2F8p|BaHIF(3Xuj8r!~6GXQlp}?aGK0y*cf7OTer% zA-dV2d&>2AlV*BGINjSgdgLAvCe`fB^gO-ny+jS(oZB9K|yuPEibn;ih#;27} z+CFj_&PxcCGF;&HyQi-(a+-tw%o90PV=x%f0`;eUqAsjY4AQP<6Vag}%bl>^+<9>h;SVmJTW z17?4LmAZRAit$X_ml$E*zh~)T@$D;T2>oX$TKLwP+a*NH=*n;34LTZELe!4%x@a!F zZ`ik6^GUyW`-=04_rGdwVJN9NV`cVCvsS$$O7i>>#@4Abof~Ar7Kg?hz9MsMy^iJT zh#r-K=YkH=NlcwGFTgG$^;s{w+>T>5 z(_ME7lc_yd>cs>@R%C7crKul!XxI%U_2Syu&T zeZ6DA^`D`mNw7O})oJ0(N4uxJIyNz=%(h0>-p0HZz+7()S(t#bFl5hscQGm#>4p3#*`lXVHLb{{vEgudfx}zX84dgMIJRud zczsc-(O~_oXQHL+n^h`4o5A!XikT%g{qM%2sm`0O#wD@#^iL99;gl%a zaYrgO^yX>V6?d}k%$$1N>>^W_S#i+fXb(}Fi3JzJs`iw5m2GpI&UDr;W_ikj)~kKB zr?rF*ze+QUvi{B--M*4dz4tU zW3K_5PTu?$2i@gDkDFAPuLOoT9!nOQ=sZo&_2G;K`YoZsVO0{As`hD?H|A)t<`Avz`t3W8_8m>Sanb!l zBZI8V4iS0bJb{gK96m6-eI2Z=vsk(*xU2BrtDZBGE4F;RFF5Vp>+t@-!p3J|3u8AQ zER_DwP_Q)Yw1G$L(w*;Y7KDlgcdX97Ib)5io|@6^cgucR7BWtBou(;P-FjMb&8g;X z_Lp=-o<=lHSMNMubE;$A`f!1ezmI(vx<40MxmIzGWK*l#tzFXuGPc*=FOb&zGAr;^ zSjfKG^LGR^9$8+k)pHKi;mZqk&NW@(F2%IRamJ0`nA>4WQ z^b`cl@31Fr+N;XAdcn?uov#+{b~G$ICcW?7X30BEFTXMfG8Y^uYV0t5Z?s_k{?%Ig zEM8B=xK{68dnapd$a7)4WgSWLRdmAERyPS9jS6hF`O10W?BgSwzVfa)wKkZ0hDV~v zM+2>`d!2bMyWi7cWxHATY2I=9j)RPTv!5As@ZKpq%bI2FuleWLyi1>03?jbH_?YXS z_C>~R)zk#96^o}WkZAGqTE?0owZql5`br4*)Q`GsIw!;G3nxwxnP%(N+Pv@2;aK*A zKf1$S>N4IooFc(qxZu*PC0EK9`o9VY^o>i1SlGaOY{9+!J6=nwodVV@SZ@_>${TBt zY`FWlz`n|<39>up91Qxpa^kl20Ug_-SG90OM_zk6qiNLvMXC57{T6Avts2(OWE0=m z5pQNz+nG@IGedp$)J*2EyzMuo|5|J z+MJk$+Jc4!-8T~U|5~JTIr&$o+qDQki&-9OHTBooS{E(O6=OW(^gynVX{*yh2HE75 z8R~2)c@^dI2>};Z&rIw(y|Qx4`QOLC9M^rCx_++U^h)(-v8OEU7P2ID-*vm$oM--w zRY;!WR=L2w4CeM73U@wUIb2z*wC`~Qg*5h+E`vrRj+&peBL-XU{={h!Y&k=>1gVWwxI zu4b({_j3y8Tp`PrHw(XO@Fj-|OGl+?`SW&m3%QPhUD4vWEGIA=gE(5HVN%Gm9=As$DRP>Bm$7Ev3sc`GcGzC2 z-~7y+k!MT#0k0SS{71r?Hm^Opcuw*1g4l4WGaU7KMQF7>22m$>vb(}dr?F9zoX6W{xd@-o;pyf zCFb_`;OG59@7s?gvYxv!o5B73ucnq<`5ALPxUOWr*mY$WOSa5uDaD0X1P-MJf7afn znBAdNtsTE3dhJhR$(YK_>qj2w+>I|hwC2}=Q=L*vb}oqJd#ZWhxMk~YKJM=n#(jSeyB)9mQhnu2@q@$DWHY9- z+|57hn9H+Y;Lz!>6`c!jaLuS($9I40mBQK$+GmzW?9;B#oS>N*^R@79jOf|(ZRX)e zO1r0=t-4+)qZah{S>CUG;=V){sYQ{DD^4!Bk`r<1aoeoqhyx$auyL5)(%Y~$zUY8Jg&wD_ zXR)K6BKz#NgoD>^a5y@tR!i^DbPrt-E&T3yc*oT4tg0)qWzKgPUPd<9NvNF@;G4qA zz&-zwP;2_mY7gOU@hpc+#6KIIlvNJ2h}C^Mt0}s&c!uZp+5c2C6;~YEDSb!HEM|Mb zN;lpgQ_RBDXSDDneAZf}w{}q!_nDg|R-R3KXCF-}B zb}p`5aW*^arjOQ#yj8rS&1WuiT)5-I_Stp6f$!Qno}(`d1$6R+M3Y!VBK;CGde%l9 z`_B;A#GJ=(msZ>T=j;zyF% zlRKDh2X9@$v?9mGF)F@g=fUYSt_0N9DPCu8Idg0N>LaT|=R{={O%lmI;N!@A{Jj`U z%#+$@n`d5Iv_YcauLHO6L7kZk&uPUK>gHTwIibrM;9bzzv$gz)s3O<$qW=u3?CLi|{O@VgZ?iK?f6kQ8KXdCl zhq(8=$G48`C|}dIkYU=hry9DZm0jI+pM}H(C79wax?Z#HifU8k)>~6(@L)63tBmwB z`@SsEbv$#oPJuD_uQ$V5*3e(gjNUV&7bS}atU6O1UZKPX&!`G~Z8$y?_ zm>7H{@tp1H?e3>Llx{v;abN3MfNtWE>M5T^yW_X)bFa7}d*)Wk{#%RLZf}&3tlATE zQ)5}8oZI)?;++Q+7cs57op?nxS#xI5&V#XDddvNigcvxIIJ?g9np(E3dfdUZNPsCa zYghBrpiPHX@m!NXvQO>i9Y&#vlMcq7;?nreo_Xo>j0SNnFNPZxALT#AM6C~WoNZS0 z#pl*VnRRazOP{e-&3tj>*rC|JCmn5O^fUxCCtdroO+0HyXI9+qmX*4X4Mmyr3&rF% z@7(FlzhySG8#g50~dU_A~I4XX`Gg z31H8Q-OL*7@=PRdVKjTNfaO2?I~faKu64=S`%Gt=j?O+l+oPG4b`N+R*F00X5iYsQ z#`lO|c72|rLfF+i3p1oYi@5cwu`IQ!Y<$1>nxSm!dE*1UXTAq8-Z{$jo_(*M^c4Qb z$C9PjM?B?^J)ooAUGy`u%cd#Lvq0u-(e?a~QU{%)7Jby2zJg(Q7r){kH^Gz*pIs%+ za42V;o#WENBK&7zNX6SOU3Q;8-b`y8M0K8)#1}m}qUoeyHnq$D;1RVOB~guBTO;^p z2t4Dw8+zRJ?w09w4-G6n8SZ$q_CUaug3tA@1d_s26*%6e&G{(0akiD};gxcsua6w6 zxc*A%ys0G5Jv+|mREGUqQaH?R7K*HW^GYG=!2ywI<}+Dg_q?y{IX>}u(dS3zlV`9` z?2S3pm=ibqz<-9$pF7)T?JXC2?4afS^x=^O@^|urL&fH}`dqEOkux{^p0dD|=Xb(I zO;*c%W>C<7#ACVRyTR&8hi&szCq$nQYFM%8XS;{d<$$vcHaA686M`GfO=llEpR(I) zmf@Y%b1t09Iu!pdxiH35P;05fZZ(AspU)f=Omz{HP1(V+@f2s>M%602i>zD)X}TS< z*B&gJ)1930JuhoPW+J~Ld1AA1fZk864YhxJGw#(X=}kd;R1d9h58m$hvsS zvDC8CqFrl!j)ZQrT-^0tBr5+}=L*&x4Xvj$G(NtwdSvjsV`-ZbbLip~4H+EE-l;!s zWO|r%g>|=WIgbFBmeTx#tWme*jMA27Y}g{8b+~lC!LFLqafwSmO1F#7c){P9$s3^i z>8oa-lw#=I>%oeG-qPCUSBygYj|gk?3)`G&{j)AXhb`f(_lwe?H5mu=pQ*2HwK)3D zY+GW{9G5-z0Y)z7!Kn}WBba3_@_b8cd@Rt_s<}7mvE}Tn^lcU^p7v~5t=gP;v)FNg z_^SW~&FvC9q?jius%U$fCmOmXRNU6+&O5p1?_&d=tHlzsxgAYvS;t~Ce>Qpt-b_8q zT(#Y>p`$x0=k*LJw!^kZMOIHJu2T*cKd~a^_MPH08LSH7;hK4OyxHsxw^*$D(QC0G z%Wzqktm90-2a$`lu4IedoZ1~Hc;ncaqq&S-45vkQ@e9{B`d9P@_^md5CB5M0ykrl9 zDcGG zB!(%=_V2vC-94D8Pf_4`)ReyGHSZU)2Jq=f-`$!ECP!Xk=m{;6J# zIheM{b8(vi>yr;X`vvx-uRAf(yEh?WlcafR;jgW=UweHeH;O!1uDhgS_89}M{|qZa zkMOKFoRk**^o)u2ijw_8*UjZ+jvfe>+V%E9M|Ot{rw=b@)_3OoSJI0szlvstx^CCg zY@4rcbm+zT&Z&G!i+Zo~#LQhE8hOOQ-D*-o7;7Co?_c#q9l+3k-^17?}deHt%>DUj8|LM0;h{IjyiGA687gx|NYL;>?Mr`JK~> z-)YZN+`^gWS^eV8$3A5Z%`zUJ)2nO_G`$Od&ywI)ebgam-b01A-&(|Mx$6>J_>PzU zaS3&v{`?Nx`8=NefiJihB>bqHro8>raW;il51Pf+KT=&?tgz?FXLHt5g5ITa3&I2v z{n_F~Lsos(x)6CxK}mbDh|-r=j~3jht39@yaamW7G}G5BCw56S&k=D=R@Ms9@Q8>G zmvj{D-Mzx)SyXPm(C2ArV51CZ5)^WPO zy5gX+Yg*RN6-`IhEbJFtSf{gLLCM;fjSqbGEqyrqd(fGMzKJcq)3#Tiak_M7Z|dhv zL1)+aizW(d(+dqUed-0SG%TwZys#!*aYpv6?rCD-i;lgxxAdIw+Vo(n+dICpY~{5% zn2>Nsz;frb2_?$Ym)WKr;Cb86!d~`FD#YALYK73Tt0|k~)R{la9O-j?CN624#K2kd zOF_ix)zc3ws*>zFSA|X=>~S{=ylYxGYkU9ig6pTU;yW1fW4*g7x5ljs+nTcLsF%f* zi+7HO3a;;4<|i88?kFiOx^>PzH7>1C{lX^6fG2kiC%k?1I<#Y}_okY&%eM0E``N5! zq5J8$u+YvjuXEFCmAJ~w=D4%hh~^k=I=5ryRj+4H#ck|9Gc8oDzbw$OcK#JPs~Nm^ z4NirwKK<{=g1n6@lpU^~UKFLfyy!#sb3?%`Zd+v!`Wxt|e%DB!*t|qEb6tXzUgV-l zXS@ywC|ucNcC4N8xkam#$Po^Mg5K@U*Ooe6j_b15Dbw7)N9V-v=Dwwd1>5!)HF9hV z+IDcqn#vu28pU>VoDJ&VHT}}#$l3#U)+SEP^sDhY<513bCG-(*LfEG{$AvDbz15Rg zzsOQ)n(h^sa|Wpgb&KxwdPi$bd;PJX#JI<=*q}YQvpM$M+$(E>B6oKrm_9Fbp6qyM zso}*VF0O1RHirwc8hvnAaw>B_c0cHoki^#T71MPUH|jdNhVz_PxHdiT(=i#-xTW9b z1!_1Y3o?cLp1!i-ZqkCJkBn7!T^K%GdD64>UczF5uAFBt)(-TO^(>Q{Sj~J`DYoI zbQ60|H*;l9FSF?PmO7X4;J}|#noAcPNm*ZPr4V|i`FSeL3Eo%OY{8Jr!=!Kz`dwRuRxH4`}~oB z%fZ~ayhmE6mNG8Y|0p*hCNR0yTWPA{6gHKM2`#I{HtZEzaGgQ)2uIED#=8f@>jkH? znVYxoQ!sg!%qF@`>qW%jpWPwOTh2)P*zWFg?JxTIDk!BdMtnxYt?MmXy6?i;p9y`f zNUg}fd*J7pJFXc~tP@_TZCmqBDePLoGj82|p&eUI3#Vv3ndkE+Z281VRyz-}&Gq5$ zIlx@Fxx=ovu(j@SYemPU_7|HbZ{kT<8xTB$xy1PP8Sk=N%YXEkSSg)a9et4LSg8E1 z2nN1#&3^}yv}Q(axlx=qMaYr;U00;$!EZU&J8p`usH~ppwOCj_$HBPVe&&&-p-#!H zVK)TU7Pd*Mn3v2D{;AL?H+2*1gY9!Z>N-b!kXsyh?TYy;qvEbh|5T5re?FxZWU_XD zXRGf^jXxR5b5<{i&*UVo#VXEJk6r5l&! zq?QV^U;CxRaP7nSyMlktbS+#pSMx)>pybn&&aA9n{~22L2mJ6o5_#I@-y?YcFjAV{vND(dm?1Z78}kM^^iXYbetbDzWNkf`%Ja+bw@^fjFMn+jcTT`Pj?oq zVt-~J>z=w>uOJ_9@*Dk_b5>D)|~={DJ9mu4bj`SIjYF64gP4jY`u9=a_}`Vck0c7F zzLT95qsjG5Htk4b{cYUwI z^ITng{Pdd!`*pl{qaTVKps-`-{(lmg6Cn9aF@)G;dq=&hg?? zZ~QTTd*=hyFG(rSV|;E0-HBUnDzHk@|Z_XDKuZFxXZ&*$;|dZpxWe3MahP{KGvS|IwRRQ z!=Gj847&@m?YEd>-ENC6V_uRRaOlEsZ&qfrt#0M=8gn@=ttizx7-&Cp^5h2YsZ2g6 z()Rr5T(y9QHDvF?y+^BDG`OzDgzc@G7XK)?{K&yR%N{WqVMfvDmD7we-rtGrTz0^6 z+MaEEsmm9MO?+N3MWW>~bFlzhOj1mUP^c8!QXP4IbF&7G$RJ~ll5*DalFAOHoL=qh zqo=i|Zm&5#bHh6+*?vPdi;C0C%BG7QRMl|7&+yeF?xKg4UF)uGuV~(I$a#ipKyrs~@V_i|gTF`37Ky#s z+QYH=SJ&bL&kbiBblvjnotmd)^a5q0^7;0L+s;dGQ>`c$ecB<$8*t3*O2rX}77l6u zq7Jd{*vby}{yXQnx;W<^xF$Nh+9o6WNIE1Eu+{p`%n`ll|+bpI7+&EbV+PbB+= z8n!N-c!07YxWx|Hy>s6p@l18f8~BP-qE`) zd-_G|Bk7sv9$S8XCAG5c-NW*C_LsQlDX)ISr{=M=a(0};w)sZQ6My@uxUZV(pm^YI z_i6F>{~ou?oSrkGw75o8E=#=f$fnJ*TXkOvcZN#UEDI8U6+L~2zF=uV0sEN^7Wb6$ z7HyxAm$m08^UBlyMrW9A@36ST`^eJg*qjifgA+PLi!H=uvSxapsXX9lHSH01{&(SR z%TulkoosF5syq{T>VW6^SL#))*Jmsb?_1`~aEDPhiu=ei+u1goE{G;pJ>%V}$XZ+C z9<$luRlerIS79%vZH=i@{g5RZ_I^d{satVPZ550&1J+nXb8EY9+tkUp{LG1|9Z!01 z84G58*V_{FUb>&*xWSDndt5TsCB5jo&Nz+VVA1KkMccIJMxH${!Rr#bGSEZsp7O!? zjvGPyPF&&MyT+q$cbZ3x&y@C)f-#Kqjg6*wX;tXoSsLJYx;R|O(QjEn%js#mr*Le0 z^vZ1Yv5M)x`Z&HME-mMF{aqR$5c$HvAy~93O=?#09w!dv&t_c55|(J!*}81hvSvRX z%*1MVr1V|nj-2++P3jWacNou!ggiZ{liKv_`j76amc=>72P=Md7TB;GGKFO>+IaO0 z=f2Np64<6^9^u@bG3W4!)A{b7#U+*A_!%0?UXGv9#2xu-?)He*JLe-3g#{Nr8puy0*w*V#bPYtsUj_dUxKZIH6{W|(+o~i5q)*+rEKhf2B9|Q_!q9qCnxboLtgL+2A^VwW>*s=9ztRHFly)AE-0{2l%*8gJ2k)#_U+yT|-52mq|Ep!B*p4}? zt{102GGXoR5sWshco#ZNfV=eT{m<-=B%iByyyJNubUsjXalk9di_(|=y6#(6$hCj= zoCCM3o{6lh|5V!grSdCRPMWwN+jW6enrlw`$eyomSQ^Mymc*?j@w1y}<`nVg1q~*P zH=MH%yu$nZOy&AL+uK+-N}qXj$kt+x&!;O)8>O-|{}t-5vpFDj^|)_%b$9)WHo=On zjtuvHgInINA1c(m7M71vaM7@%3O~ zi)MTllCy5RkyunV%Nenb)`DvfR^$gAiMfAfcg_ZBRlz7x7pC=so?e#=HR3v(!tNU_ z%2^^k*T%8!)W2k={1vU0)om^t-i5Dpm=e4qnDKjW`IVg$6#D)%a5VUslrzXH*|h05 z@$u)x2d$W*-EMRuDDaWeQS(6dIoqPr)BZCoQ9S?T?RS>7TmB`?@?u>6*TtLbl|uQg zAFl$$o<2Rlvvk4i{2eSyivKQ+kX&`~3cqO9_xE@1n4Es6!|dtU-LZXgoa%&tgV_c% z=B`?*uuc4q)ZVpg-*!1XSXlX)ZFZid(RTLZzq&gY#mO74IQvqf{N$gBk1b|o@u%$5 zmiJTrbZEyjsYMSDy}uI2dpsg>`|n?z5m(M+zt}6)kacLi&7((_KikcI)*f)(9Z*s)mud!eS|tG4x@#nYmwdRjO^7aO_!SbJx{_Ywmv(yHRtT z?J=+G9kwr5{+?<#xBASpC69&KTp)RmSLu%I>PL!axK};mtqNMzb;U>C*zNJ6i3w@9 z8a!e?WaYivb3EeAWdkdTsr4%tTDPj|$XT>a7G8K{>+_&nkBV$wu^3%h!1plv!AzNn ztMnL4PI1UwtGm!4b1nAvBNZNwtiJ~sr@C(Hci)k;p7pfG^&`7p7f9%Cv&z}gv5M_; z#1+AY#Vb;HkBEqW7SR3U{k?AKv}coxlfFLU_DN&i_|eEguzl&@XEvs%g*Fw=cz1Gn zfE2s>kxh55KEASRwN$FHP^Q+uOGjG-0+>WZvwuy?G*^hUyLG)YcE`+3@v)WDj%>Me zV%;Obu)l84ejA>7sl6g(+xo8zIoWq|GYlVPb!jwaTHL&IQ0>(+B|hKY^#MUnE4SzG z3=q@a@XpBcg^19;#D&jdwmzJDN};NgE%JpNZvdlbH$?SEG`dH?py{mWHeNzeMd{IA^dXKMYPzxwZAGPCtRJHPv%gq6C%mB)`? zZZc@O(DGdNFO${JcHQn#Pk8zd{*RJJO58mT2e-d?C6HCnqr897o3jVI-(}T){%5fJ{LS9)udn*+*~=xj+;!Q@87eE zQj?2{zkgjeKmN?$kL~GKWS6a9x%>T#`|nM@{EGQ|{@na_d!c&yce%6wxX%x~{VwZQ zwC!XkYyT&0GqUPb{y5c%lzp{-|4hDf)^GnqvunbU+y3L#XI36@BVjc=jY$Q^ym1O^T+LjL;l|c0E!lk4FCWD literal 0 HcmV?d00001 diff --git a/docs/public/RFyNMlL.jpg b/docs/public/RFyNMlL.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1cfd86f6ef2e39eda9f2a2759e8a54860c0007b6 GIT binary patch literal 166582 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�%e^Cb$tn9T9kTlhKC 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

8M_sqRbO>JlE?H-SvVGx89|O*` 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 literal 0 HcmV?d00001 diff --git a/docs/public/UlJ4ZDP.png b/docs/public/UlJ4ZDP.png new file mode 100644 index 0000000000000000000000000000000000000000..d38f40deedb0fb54876b06769673e3a51b0defba GIT binary patch literal 26297 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 N22WQ%mvv4FO#o~JmvR6A literal 0 HcmV?d00001 diff --git a/docs/public/aEs2RuA.png b/docs/public/aEs2RuA.png new file mode 100644 index 0000000000000000000000000000000000000000..af3ad1905370c2acc879409aa8d1eb4e809c8771 GIT binary patch literal 3784 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 literal 0 HcmV?d00001 diff --git a/docs/public/aTnG8TV.jpg b/docs/public/aTnG8TV.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6337adf10e8096d57eee2d7513f0cae6e904e9f6 GIT binary patch literal 46839 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 literal 0 HcmV?d00001 diff --git a/docs/public/anw9cOL.png b/docs/public/anw9cOL.png new file mode 100644 index 0000000000000000000000000000000000000000..09740d1da57157a5e1f15571ec8daf5d47aeae0c GIT binary patch literal 82094 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 Zu0P&5&sF*Kj)8%J!PC{xWt~$(69CZ|B2)kX literal 0 HcmV?d00001 diff --git a/docs/public/b4b7KDb.jpg b/docs/public/b4b7KDb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..76acd2cf5ce52929cd972878115bfa6c07c74af0 GIT binary patch literal 288162 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

    ) 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%0D#-Ae8#CCYUI-JM;E>h!=irtT+kdnv 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 z63%0DC(LV{8eOA3bIohf(pmgY8Yvjb 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ʦlU^;zv9ol%qYKSvzc(0W$&Zb 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�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 C;%B@7 literal 0 HcmV?d00001 diff --git a/docs/public/eGO0ohO.jpg b/docs/public/eGO0ohO.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d1c9b730a0976f32b576eb29e2dcf148b6d2b4cd GIT binary patch literal 11793 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 literal 0 HcmV?d00001 diff --git a/docs/public/eHJjmnU.jpg b/docs/public/eHJjmnU.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aebbc9d20085a73fa71a3fd6024f858a3239af96 GIT binary patch literal 123338 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 z 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 W_N{!%KYs=W1_n=8KbLh*2~7a3!=P^f literal 0 HcmV?d00001 diff --git a/docs/public/hcegguh.png b/docs/public/hcegguh.png new file mode 100644 index 0000000000000000000000000000000000000000..98ad8ff19ca76c493a0d3bba5b08c89849f4612c GIT binary patch literal 19408 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 literal 0 HcmV?d00001 diff --git a/docs/public/nLaiYDE.jpg b/docs/public/nLaiYDE.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b31413693c333e3baae8d83b6cd8c42d95d3f92a GIT binary patch literal 222428 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

    obAo9c{YD;}jo6NP$X4)m@x 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�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 literal 0 HcmV?d00001 diff --git a/docs/public/o7WLvBl.png b/docs/public/o7WLvBl.png new file mode 100644 index 0000000000000000000000000000000000000000..abd42d8c055cace1302cb42cd9e69e1d39d195fa GIT binary patch literal 3524 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 I&MBb@0Gl8M@Bjb+ literal 0 HcmV?d00001 diff --git a/docs/public/oHYR1yW.png b/docs/public/oHYR1yW.png new file mode 100644 index 0000000000000000000000000000000000000000..77bc73238dc07ffd1051e9cff4fc6e72cf5474ce GIT binary patch literal 18766 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 GGywoLpBIz> literal 0 HcmV?d00001 diff --git a/docs/public/oITudbX.jpg b/docs/public/oITudbX.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edcb5781a4e595e0c55bbe724b98b73f5ea1734 GIT binary patch literal 444216 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

    8FWfX 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

    hC)9GK2pNn?LM*&(OtX+aovG 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 z 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�Qs_!_Ovf}Q428p(s_qC^c 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%0AM;;CnR5Ja_O`k#oSi7C8wOge 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

    $d^_lVkA$Z@KRF7JhKCljE2@D@axFgXhVe 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

    Z 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 literal 0 HcmV?d00001 diff --git a/docs/reference_configurator_support.md b/docs/reference_configurator_support.md index d0824c7705..4f2ddfffe8 100644 --- a/docs/reference_configurator_support.md +++ b/docs/reference_configurator_support.md @@ -189,15 +189,25 @@ Currently, the Configurator does not support key rotation or non-rectangular key For ISO Enter keys, QMK custom is to display it as a rectangular key, 1.25u wide and 2u high, aligned so its right edge is aligned with the right edge of the alphanumeric key block. -![](https://i.imgur.com/JKngtTw.png) +![](/JKngtTw.png) *A 60% keyboard in standard ISO layout, as rendered by QMK Configurator.* #### Vertically-offset keys For vertically-offset keys, place them in KLE as if they were not offset, then edit the Y-values as needed in the converted JSON file -![](https://i.imgur.com/fmDvDzR.png) +![](/fmDvDzR.png) *An 1800-layout keyboard as rendered in Keyboard Layout Editor, without the vertical offset applied to the arrow keys.* -![](https://i.imgur.com/8beYMBR.png) -*A Unix diff file, showing the changes needed to vertically-offset the arrow keys in our keyboard's JSON file.* +```diff +-{"label": "\u2191", "x", 14.25, "y": 5}, ++{"label": "\u2191", "x", 14.25, "y": 5.25}, +... +-{"label": "\u2190", "x", 13.25, "y": 6}, +-{"label": "\u2193", "x", 14.25, "y": 6}, +-{"label": "\u2192", "x", 15.25, "y": 6}, ++{"label": "\u2190", "x", 13.25, "y": 6.25}, ++{"label": "\u2193", "x", 14.25, "y": 6.25}, ++{"label": "\u2192", "x", 15.25, "y": 6.25}, +``` +*A diff showing the changes needed to vertically-offset the arrow keys in our keyboard's JSON file.* From a1096e1dec7abae4c3cb957c992b7ac47877fe83 Mon Sep 17 00:00:00 2001 From: Andrew C <47721334+polarbearhoodie@users.noreply.github.com> Date: Mon, 3 Nov 2025 23:06:56 -0800 Subject: [PATCH 157/167] Deprecate LAYOUT() macro in favor of JSON matrix definitions * Indicate .h LAYOUT() deprecation in understanding_qmk.md Initial documentation uses .json to define matrix pin definitions, rather than having users #define the LAYOUT() macro in .h - This change brings this docs inline with the [porting_guidelines](https://docs.qmk.fm/porting_your_keyboard_to_qmk), QMK MSYS will also throw an error if this is attempted. * Update understanding_qmk.md enclosed '<' using backtick * style guideline, now builds correctly prior version indicates directory, new indicates config. still the same idea. --- docs/understanding_qmk.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/understanding_qmk.md b/docs/understanding_qmk.md index ad5afdc56a..a47617c418 100644 --- a/docs/understanding_qmk.md +++ b/docs/understanding_qmk.md @@ -51,7 +51,7 @@ Matrix Scanning runs many times per second. The exact rate varies but typically Once we know the state of every switch on our keyboard we have to map that to a keycode. In QMK this is done by making use of C macros to allow us to separate the definition of the physical layout from the definition of keycodes. -At the keyboard level we define a C macro (typically named `LAYOUT()`) which maps our keyboard's matrix to physical keys. Sometimes the matrix does not have a switch in every location, and we can use this macro to pre-populate those with KC_NO, making the keymap definition easier to work with. Here's an example `LAYOUT()` macro for a numpad: +At the keyboard level, QMK will generate a macro (typically named `LAYOUT()`) from our configuration file `info.json`, which then maps our keyboard's matrix to physical keys. Sometimes the matrix does not have a switch in every location, and QMK will use this macro to pre-populate those with KC_NO, making the keymap definition easier to work with. Here's an example `LAYOUT()` macro for a numpad: ```c #define LAYOUT( \ @@ -71,7 +71,7 @@ At the keyboard level we define a C macro (typically named `LAYOUT()`) which map Notice how the second block of our `LAYOUT()` macro matches the Matrix Scanning array above? This macro is what will map the matrix scanning array to keycodes. However, if you look at a 17 key numpad you'll notice that it has 3 places where the matrix could have a switch but doesn't, due to larger keys. We have populated those spaces with `KC_NO` so that our keymap definition doesn't have to. -You can also use this macro to handle unusual matrix layouts, for example the [Alice](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/keyboards/sneakbox/aliceclone/aliceclone.h#L24). Explaining that is outside the scope of this document. +This macro can handle unusual matrix layouts, for example the [Alice](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/keyboards/sneakbox/aliceclone/aliceclone.h#L24). Explaining that is outside the scope of this document. ##### Keycode Assignment From aa5a6d38de72e9aa2547302c64769f0536de1de6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Nov 2025 23:05:36 +0000 Subject: [PATCH 158/167] Bump JamesIves/github-pages-deploy-action from 4.7.3 to 4.7.4 (#25771) Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.7.3 to 4.7.4. - [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases) - [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.7.3...v4.7.4) --- updated-dependencies: - dependency-name: JamesIves/github-pages-deploy-action dependency-version: 4.7.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 275e2b2483..fe5d6027e2 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -56,7 +56,7 @@ jobs: - name: Deploy if: ${{ github.event_name == 'push' && github.repository == 'qmk/qmk_firmware' }} - uses: JamesIves/github-pages-deploy-action@v4.7.3 + uses: JamesIves/github-pages-deploy-action@v4.7.4 with: token: ${{ secrets.GITHUB_TOKEN }} branch: gh-pages From cbeab2ac4f69292283ed94049675aaa89128ec34 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 23:38:23 +0000 Subject: [PATCH 159/167] Bump actions/upload-artifact from 4 to 5 (#25745) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci_build_major_branch_keymap.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci_build_major_branch_keymap.yml b/.github/workflows/ci_build_major_branch_keymap.yml index 1a0b44b908..228dd0025d 100644 --- a/.github/workflows/ci_build_major_branch_keymap.yml +++ b/.github/workflows/ci_build_major_branch_keymap.yml @@ -62,7 +62,7 @@ jobs: echo "targets=$(jq -c 'keys' targets.json)" >> $GITHUB_OUTPUT - name: Upload targets json - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: targets-${{ inputs.keymap }} path: targets.json @@ -112,7 +112,7 @@ jobs: qmk mass-compile -t -j $NCPUS -e DUMP_CI_METADATA=yes $(jq -r '.["${{ matrix.target }}"].targets' targets.json) || touch .failed - name: Upload binaries - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: firmware-${{ inputs.keymap }}-${{ matrix.target }} if-no-files-found: ignore @@ -146,7 +146,7 @@ jobs: merge-multiple: true - name: Upload all firmwares - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: firmware-${{ inputs.keymap }} if-no-files-found: ignore From 8522449ccfa36d19c82317e8a49e58862e366c66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 23:38:36 +0000 Subject: [PATCH 160/167] Bump actions/download-artifact from 5 to 6 (#25746) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5 to 6. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci_build_major_branch.yml | 2 +- .github/workflows/ci_build_major_branch_keymap.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci_build_major_branch.yml b/.github/workflows/ci_build_major_branch.yml index c37e1377b1..6cefd58901 100644 --- a/.github/workflows/ci_build_major_branch.yml +++ b/.github/workflows/ci_build_major_branch.yml @@ -87,7 +87,7 @@ jobs: fetch-depth: 0 - name: Download firmwares - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 with: pattern: firmware-* path: . diff --git a/.github/workflows/ci_build_major_branch_keymap.yml b/.github/workflows/ci_build_major_branch_keymap.yml index 228dd0025d..f5533cf07a 100644 --- a/.github/workflows/ci_build_major_branch_keymap.yml +++ b/.github/workflows/ci_build_major_branch_keymap.yml @@ -92,7 +92,7 @@ jobs: uses: actions/checkout@v5 - name: Get target definitions - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 with: name: targets-${{ inputs.keymap }} path: . @@ -139,7 +139,7 @@ jobs: uses: actions/checkout@v5 - name: Download firmwares - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 with: pattern: firmware-${{ inputs.keymap }}-* path: . From 22b213e1915a49cc8419fe0d449ca26fb372b43c Mon Sep 17 00:00:00 2001 From: Carlos Eduardo Date: Sat, 8 Nov 2025 15:43:34 -0300 Subject: [PATCH 161/167] Add LED index map to `qmk info` cli command (#25743) --- lib/python/qmk/cli/info.py | 46 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/lib/python/qmk/cli/info.py b/lib/python/qmk/cli/info.py index 5925b57258..26f7f0269d 100755 --- a/lib/python/qmk/cli/info.py +++ b/lib/python/qmk/cli/info.py @@ -102,6 +102,48 @@ def show_matrix(kb_info_json, title_caps=True): print(render_layout(kb_info_json['layouts'][layout_name]['layout'], cli.config.info.ascii, labels)) +def show_leds(kb_info_json, title_caps=True): + """Render LED indices per key, using the keyboard's key layout geometry. + + We build a map from (row, col) -> LED index using rgb_matrix/led_matrix layout, + then label each key with its LED index. Keys without an associated LED are left blank. + """ + # Prefer rgb_matrix, fall back to led_matrix + led_feature = None + for feature in ['rgb_matrix', 'led_matrix']: + if 'layout' in kb_info_json.get(feature, {}): + led_feature = feature + break + + if not led_feature: + cli.echo('{fg_yellow}No rgb_matrix/led_matrix layout found to derive LED indices.{fg_reset}') + return + + # Build mapping from matrix position -> LED indices for faster lookup later + by_matrix = {} + for idx, led in enumerate(kb_info_json[led_feature]['layout']): + if 'matrix' in led: + led_key = tuple(led.get('matrix')) + by_matrix[led_key] = idx + + # For each keyboard layout (e.g., LAYOUT), render keys labeled with LED index (or blank) + for layout_name, layout in kb_info_json['layouts'].items(): + labels = [] + for key in layout['layout']: + led_key = tuple(key.get('matrix')) + label = str(by_matrix[led_key]) if led_key in by_matrix else '' + + labels.append(label) + + # Header + if title_caps: + cli.echo('{fg_blue}LED indices for "%s"{fg_reset}:', layout_name) + else: + cli.echo('{fg_blue}leds_%s{fg_reset}:', layout_name) + + print(render_layout(kb_info_json['layouts'][layout_name]['layout'], cli.config.info.ascii, labels)) + + def print_friendly_output(kb_info_json): """Print the info.json in a friendly text format. """ @@ -169,6 +211,7 @@ def print_parsed_rules_mk(keyboard_name): @cli.argument('-km', '--keymap', help='Keymap to show info for (Optional).') @cli.argument('-l', '--layouts', action='store_true', help='Render the layouts.') @cli.argument('-m', '--matrix', action='store_true', help='Render the layouts with matrix information.') +@cli.argument('-L', '--leds', action='store_true', help='Render the LED layout with LED indices (rgb_matrix/led_matrix).') @cli.argument('-f', '--format', default='friendly', arg_only=True, help='Format to display the data in (friendly, text, json) (Default: friendly).') @cli.argument('--ascii', action='store_true', default=not UNICODE_SUPPORT, help='Render layout box drawings in ASCII only.') @cli.argument('-r', '--rules-mk', action='store_true', help='Render the parsed values of the keyboard\'s rules.mk file.') @@ -227,5 +270,8 @@ def info(cli): if cli.config.info.matrix: show_matrix(kb_info_json, title_caps) + if cli.config.info.leds: + show_leds(kb_info_json, title_caps) + if cli.config.info.keymap: show_keymap(kb_info_json, title_caps) From 00eebfb575d6ea0660755cee2c6ccf3b21110312 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 8 Nov 2025 20:49:15 +0000 Subject: [PATCH 162/167] Fix pmw33xx sensor initialisation (#25777) --- drivers/sensors/pmw33xx_common.c | 2 +- platforms/progmem.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/sensors/pmw33xx_common.c b/drivers/sensors/pmw33xx_common.c index 61e309ea27..95d0fe6b4b 100644 --- a/drivers/sensors/pmw33xx_common.c +++ b/drivers/sensors/pmw33xx_common.c @@ -108,7 +108,7 @@ __attribute__((weak)) bool pmw33xx_check_signature(uint8_t sensor) { pmw33xx_read(sensor, REG_Inverse_Product_ID), }; - return memcmp(pmw33xx_firmware_signature, signature_dump, sizeof(signature_dump)) == 0; + return memcmp_P(signature_dump, pmw33xx_firmware_signature, sizeof(signature_dump)) == 0; } bool pmw33xx_upload_firmware(uint8_t sensor) { diff --git a/platforms/progmem.h b/platforms/progmem.h index 3a7a169682..6c4ebcaa01 100644 --- a/platforms/progmem.h +++ b/platforms/progmem.h @@ -7,6 +7,7 @@ # define PROGMEM # define PSTR(x) x # define PGM_P const char* +# define memcmp_P(s1, s2, n) memcmp(s1, s2, n) # define memcpy_P(dest, src, n) memcpy(dest, src, n) # define pgm_read_byte(address_short) *((uint8_t*)(address_short)) # define pgm_read_word(address_short) *((uint16_t*)(address_short)) From 024c4ef85395f3230ab1599a4f1c87ffeab7e553 Mon Sep 17 00:00:00 2001 From: leyew <102467346+itsme-zeix@users.noreply.github.com> Date: Sun, 9 Nov 2025 05:01:36 +0800 Subject: [PATCH 163/167] [Keyboard] Add Rubrehaku (#24907) --- keyboards/zeix/singa/rubrehaku/config.h | 20 + keyboards/zeix/singa/rubrehaku/keyboard.json | 694 ++++++++++++++++++ .../singa/rubrehaku/keymaps/default/keymap.c | 35 + .../zeix/singa/rubrehaku/matrix_diagram.md | 30 + keyboards/zeix/singa/rubrehaku/readme.md | 27 + 5 files changed, 806 insertions(+) create mode 100644 keyboards/zeix/singa/rubrehaku/config.h create mode 100644 keyboards/zeix/singa/rubrehaku/keyboard.json create mode 100644 keyboards/zeix/singa/rubrehaku/keymaps/default/keymap.c create mode 100644 keyboards/zeix/singa/rubrehaku/matrix_diagram.md create mode 100644 keyboards/zeix/singa/rubrehaku/readme.md diff --git a/keyboards/zeix/singa/rubrehaku/config.h b/keyboards/zeix/singa/rubrehaku/config.h new file mode 100644 index 0000000000..e47dae35e6 --- /dev/null +++ b/keyboards/zeix/singa/rubrehaku/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2024 zeix (@itsme-zeix) + +This 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 RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U diff --git a/keyboards/zeix/singa/rubrehaku/keyboard.json b/keyboards/zeix/singa/rubrehaku/keyboard.json new file mode 100644 index 0000000000..3dbed82aab --- /dev/null +++ b/keyboards/zeix/singa/rubrehaku/keyboard.json @@ -0,0 +1,694 @@ +{ + "manufacturer": "KLC", + "keyboard_name": "Rubrehaku", + "maintainer": "itsme-zeix", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "indicators": { + "caps_lock": "GP29" + }, + "matrix_pins": { + "cols": ["GP7", "GP6", "GP5", "GP4", "GP3", "GP2", "GP1", "GP0"], + "rows": ["GP27", "GP28", "GP10", "GP11", "GP18", "GP19", "GP23", "GP24", "GP25", "GP26"] + }, + "processor": "RP2040", + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "default": { + "hue": 210, + "sat": 100, + "val": 8 + }, + "driver": "ws2812", + "led_count": 16, + "sleep": true + }, + "url": "https://klc-playground.com", + "usb": { + "device_version": "0.0.1", + "pid": "0x8889", + "vid": "0x4C27" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP20" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [1, 0], "x": 1, "y": 0}, + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [1, 1], "x": 3, "y": 0}, + {"matrix": [0, 2], "x": 4, "y": 0}, + {"matrix": [1, 2], "x": 5, "y": 0}, + {"matrix": [0, 3], "x": 6, "y": 0}, + {"matrix": [1, 3], "x": 7, "y": 0}, + {"matrix": [0, 4], "x": 8, "y": 0}, + {"matrix": [1, 4], "x": 9, "y": 0}, + {"matrix": [0, 5], "x": 10, "y": 0}, + {"matrix": [1, 5], "x": 11, "y": 0}, + {"matrix": [0, 6], "x": 12, "y": 0}, + {"matrix": [1, 6], "x": 13, "y": 0}, + {"matrix": [0, 7], "x": 14, "y": 0}, + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [3, 7], "x": 15, "y": 1}, + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [4, 6], "x": 12.75, "y": 2}, + {"matrix": [5, 6], "x": 13.75, "y": 2, "w": 1.25}, + {"matrix": [5, 7], "x": 15, "y": 2}, + {"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [7, 0], "x": 1.25, "y": 3}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 6], "x": 14, "y": 3}, + {"matrix": [7, 7], "x": 15, "y": 3}, + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [9, 2], "x": 3.75, "y": 4, "w": 2.75}, + {"matrix": [8, 3], "x": 6.5, "y": 4, "w": 1.25}, + {"matrix": [9, 4], "x": 7.75, "y": 4, "w": 2.25}, + {"matrix": [8, 5], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [9, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [8, 6], "x": 13, "y": 4}, + {"matrix": [9, 6], "x": 14, "y": 4}, + {"matrix": [9, 7], "x": 15, "y": 4} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [1, 0], "x": 1, "y": 0}, + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [1, 1], "x": 3, "y": 0}, + {"matrix": [0, 2], "x": 4, "y": 0}, + {"matrix": [1, 2], "x": 5, "y": 0}, + {"matrix": [0, 3], "x": 6, "y": 0}, + {"matrix": [1, 3], "x": 7, "y": 0}, + {"matrix": [0, 4], "x": 8, "y": 0}, + {"matrix": [1, 4], "x": 9, "y": 0}, + {"matrix": [0, 5], "x": 10, "y": 0}, + {"matrix": [1, 5], "x": 11, "y": 0}, + {"matrix": [0, 6], "x": 12, "y": 0}, + {"matrix": [0, 7], "x": 13, "y": 0, "w": 2}, + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [3, 7], "x": 15, "y": 1}, + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [5, 6], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [5, 7], "x": 15, "y": 2}, + {"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 6], "x": 14, "y": 3}, + {"matrix": [7, 7], "x": 15, "y": 3}, + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [8, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [8, 5], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [9, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [8, 6], "x": 13, "y": 4}, + {"matrix": [9, 6], "x": 14, "y": 4}, + {"matrix": [9, 7], "x": 15, "y": 4} + ] + }, + "LAYOUT_ansi_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [1, 0], "x": 1, "y": 0}, + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [1, 1], "x": 3, "y": 0}, + {"matrix": [0, 2], "x": 4, "y": 0}, + {"matrix": [1, 2], "x": 5, "y": 0}, + {"matrix": [0, 3], "x": 6, "y": 0}, + {"matrix": [1, 3], "x": 7, "y": 0}, + {"matrix": [0, 4], "x": 8, "y": 0}, + {"matrix": [1, 4], "x": 9, "y": 0}, + {"matrix": [0, 5], "x": 10, "y": 0}, + {"matrix": [1, 5], "x": 11, "y": 0}, + {"matrix": [0, 6], "x": 12, "y": 0}, + {"matrix": [1, 6], "x": 13, "y": 0}, + {"matrix": [0, 7], "x": 14, "y": 0}, + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [3, 7], "x": 15, "y": 1}, + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [5, 6], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [5, 7], "x": 15, "y": 2}, + {"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 6], "x": 14, "y": 3}, + {"matrix": [7, 7], "x": 15, "y": 3}, + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [8, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [8, 5], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [9, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [8, 6], "x": 13, "y": 4}, + {"matrix": [9, 6], "x": 14, "y": 4}, + {"matrix": [9, 7], "x": 15, "y": 4} + ] + }, + "LAYOUT_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [1, 0], "x": 1, "y": 0}, + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [1, 1], "x": 3, "y": 0}, + {"matrix": [0, 2], "x": 4, "y": 0}, + {"matrix": [1, 2], "x": 5, "y": 0}, + {"matrix": [0, 3], "x": 6, "y": 0}, + {"matrix": [1, 3], "x": 7, "y": 0}, + {"matrix": [0, 4], "x": 8, "y": 0}, + {"matrix": [1, 4], "x": 9, "y": 0}, + {"matrix": [0, 5], "x": 10, "y": 0}, + {"matrix": [1, 5], "x": 11, "y": 0}, + {"matrix": [0, 6], "x": 12, "y": 0}, + {"matrix": [0, 7], "x": 13, "y": 0, "w": 2}, + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [3, 7], "x": 15, "y": 1}, + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [5, 6], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [5, 7], "x": 15, "y": 2}, + {"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 6], "x": 14, "y": 3}, + {"matrix": [7, 7], "x": 15, "y": 3}, + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [9, 0], "x": 1.5, "y": 4}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [8, 3], "x": 4, "y": 4, "w": 7}, + {"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [8, 6], "x": 13, "y": 4}, + {"matrix": [9, 6], "x": 14, "y": 4}, + {"matrix": [9, 7], "x": 15, "y": 4} + ] + }, + "LAYOUT_ansi_tsangan_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [1, 0], "x": 1, "y": 0}, + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [1, 1], "x": 3, "y": 0}, + {"matrix": [0, 2], "x": 4, "y": 0}, + {"matrix": [1, 2], "x": 5, "y": 0}, + {"matrix": [0, 3], "x": 6, "y": 0}, + {"matrix": [1, 3], "x": 7, "y": 0}, + {"matrix": [0, 4], "x": 8, "y": 0}, + {"matrix": [1, 4], "x": 9, "y": 0}, + {"matrix": [0, 5], "x": 10, "y": 0}, + {"matrix": [1, 5], "x": 11, "y": 0}, + {"matrix": [0, 6], "x": 12, "y": 0}, + {"matrix": [1, 6], "x": 13, "y": 0}, + {"matrix": [0, 7], "x": 14, "y": 0}, + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [3, 7], "x": 15, "y": 1}, + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [5, 6], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [5, 7], "x": 15, "y": 2}, + {"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 6], "x": 14, "y": 3}, + {"matrix": [7, 7], "x": 15, "y": 3}, + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [9, 0], "x": 1.5, "y": 4}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [8, 3], "x": 4, "y": 4, "w": 7}, + {"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [8, 6], "x": 13, "y": 4}, + {"matrix": [9, 6], "x": 14, "y": 4}, + {"matrix": [9, 7], "x": 15, "y": 4} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [1, 0], "x": 1, "y": 0}, + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [1, 1], "x": 3, "y": 0}, + {"matrix": [0, 2], "x": 4, "y": 0}, + {"matrix": [1, 2], "x": 5, "y": 0}, + {"matrix": [0, 3], "x": 6, "y": 0}, + {"matrix": [1, 3], "x": 7, "y": 0}, + {"matrix": [0, 4], "x": 8, "y": 0}, + {"matrix": [1, 4], "x": 9, "y": 0}, + {"matrix": [0, 5], "x": 10, "y": 0}, + {"matrix": [1, 5], "x": 11, "y": 0}, + {"matrix": [0, 6], "x": 12, "y": 0}, + {"matrix": [0, 7], "x": 13, "y": 0, "w": 2}, + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 7], "x": 15, "y": 1}, + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [4, 6], "x": 12.75, "y": 2}, + {"matrix": [5, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [5, 7], "x": 15, "y": 2}, + {"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [7, 0], "x": 1.25, "y": 3}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 6], "x": 14, "y": 3}, + {"matrix": [7, 7], "x": 15, "y": 3}, + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [8, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [8, 5], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [9, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [8, 6], "x": 13, "y": 4}, + {"matrix": [9, 6], "x": 14, "y": 4}, + {"matrix": [9, 7], "x": 15, "y": 4} + ] + }, + "LAYOUT_iso_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [1, 0], "x": 1, "y": 0}, + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [1, 1], "x": 3, "y": 0}, + {"matrix": [0, 2], "x": 4, "y": 0}, + {"matrix": [1, 2], "x": 5, "y": 0}, + {"matrix": [0, 3], "x": 6, "y": 0}, + {"matrix": [1, 3], "x": 7, "y": 0}, + {"matrix": [0, 4], "x": 8, "y": 0}, + {"matrix": [1, 4], "x": 9, "y": 0}, + {"matrix": [0, 5], "x": 10, "y": 0}, + {"matrix": [1, 5], "x": 11, "y": 0}, + {"matrix": [0, 6], "x": 12, "y": 0}, + {"matrix": [1, 6], "x": 13, "y": 0}, + {"matrix": [0, 7], "x": 14, "y": 0}, + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 7], "x": 15, "y": 1}, + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [4, 6], "x": 12.75, "y": 2}, + {"matrix": [5, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [5, 7], "x": 15, "y": 2}, + {"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [7, 0], "x": 1.25, "y": 3}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 6], "x": 14, "y": 3}, + {"matrix": [7, 7], "x": 15, "y": 3}, + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [8, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [8, 5], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [9, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [8, 6], "x": 13, "y": 4}, + {"matrix": [9, 6], "x": 14, "y": 4}, + {"matrix": [9, 7], "x": 15, "y": 4} + ] + }, + "LAYOUT_iso_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [1, 0], "x": 1, "y": 0}, + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [1, 1], "x": 3, "y": 0}, + {"matrix": [0, 2], "x": 4, "y": 0}, + {"matrix": [1, 2], "x": 5, "y": 0}, + {"matrix": [0, 3], "x": 6, "y": 0}, + {"matrix": [1, 3], "x": 7, "y": 0}, + {"matrix": [0, 4], "x": 8, "y": 0}, + {"matrix": [1, 4], "x": 9, "y": 0}, + {"matrix": [0, 5], "x": 10, "y": 0}, + {"matrix": [1, 5], "x": 11, "y": 0}, + {"matrix": [0, 6], "x": 12, "y": 0}, + {"matrix": [0, 7], "x": 13, "y": 0, "w": 2}, + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 7], "x": 15, "y": 1}, + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [4, 6], "x": 12.75, "y": 2}, + {"matrix": [5, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [5, 7], "x": 15, "y": 2}, + {"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [7, 0], "x": 1.25, "y": 3}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 6], "x": 14, "y": 3}, + {"matrix": [7, 7], "x": 15, "y": 3}, + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [9, 0], "x": 1.5, "y": 4}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [8, 3], "x": 4, "y": 4, "w": 7}, + {"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [8, 6], "x": 13, "y": 4}, + {"matrix": [9, 6], "x": 14, "y": 4}, + {"matrix": [9, 7], "x": 15, "y": 4} + ] + }, + "LAYOUT_iso_tsangan_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [1, 0], "x": 1, "y": 0}, + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [1, 1], "x": 3, "y": 0}, + {"matrix": [0, 2], "x": 4, "y": 0}, + {"matrix": [1, 2], "x": 5, "y": 0}, + {"matrix": [0, 3], "x": 6, "y": 0}, + {"matrix": [1, 3], "x": 7, "y": 0}, + {"matrix": [0, 4], "x": 8, "y": 0}, + {"matrix": [1, 4], "x": 9, "y": 0}, + {"matrix": [0, 5], "x": 10, "y": 0}, + {"matrix": [1, 5], "x": 11, "y": 0}, + {"matrix": [0, 6], "x": 12, "y": 0}, + {"matrix": [1, 6], "x": 13, "y": 0}, + {"matrix": [0, 7], "x": 14, "y": 0}, + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 7], "x": 15, "y": 1}, + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [4, 6], "x": 12.75, "y": 2}, + {"matrix": [5, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [5, 7], "x": 15, "y": 2}, + {"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [7, 0], "x": 1.25, "y": 3}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 6], "x": 14, "y": 3}, + {"matrix": [7, 7], "x": 15, "y": 3}, + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [9, 0], "x": 1.5, "y": 4}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [8, 3], "x": 4, "y": 4, "w": 7}, + {"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [8, 6], "x": 13, "y": 4}, + {"matrix": [9, 6], "x": 14, "y": 4}, + {"matrix": [9, 7], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/zeix/singa/rubrehaku/keymaps/default/keymap.c b/keyboards/zeix/singa/rubrehaku/keymaps/default/keymap.c new file mode 100644 index 0000000000..17e226b98c --- /dev/null +++ b/keyboards/zeix/singa/rubrehaku/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* +Copyright 2024 zeix (@itsme-zeix) + +This 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_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_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, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + +[1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/zeix/singa/rubrehaku/matrix_diagram.md b/keyboards/zeix/singa/rubrehaku/matrix_diagram.md new file mode 100644 index 0000000000..cd11c0070a --- /dev/null +++ b/keyboards/zeix/singa/rubrehaku/matrix_diagram.md @@ -0,0 +1,30 @@ +# Matrix Diagram for Rubrehaku + +``` + ┌───┬───┐ + Split Backspace │16 │07 │ + └───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ +│00 │10 │01 │11 │02 │12 │03 │13 │04 │14 │05 │15 │06 │07 │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐ ┌─────┐ +│20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │36 │37 │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐56 │ ISO Enter +│40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │56 │57 │ │46 │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘ +│60 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │76 │77 │ +├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ +│80 │90 │81 │83 │95 │ │86 │96 │97 │ +└─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ +┌────┬───┐ +│60 │70 │ Split Left Shift +└────┴───┘ +┌────┬────┬────┬────────────────────────┬────┬────┐ +│80 │90 │81 │83 │85 │95 │ 6.25u +└────┴────┴────┴────────────────────────┴────┴────┘ +┌────┬────┬────┬───────────┬────┬───────┬────┬────┐ +│80 │90 │81 │92 │83 │94 │85 │95 │ Split Space (Left 2.75u) +└────┴────┴────┴───────────┴────┴───────┴────┴────┘ +┌────┬────┬────┬───────┬────┬───────────┬────┬────┐ +│80 │90 │81 │92 │83 │94 │85 │95 │ Split Space (Left 2.25u) +└────┴────┴────┴───────┴────┴───────────┴────┴────┘ +``` diff --git a/keyboards/zeix/singa/rubrehaku/readme.md b/keyboards/zeix/singa/rubrehaku/readme.md new file mode 100644 index 0000000000..f7fcc1f871 --- /dev/null +++ b/keyboards/zeix/singa/rubrehaku/readme.md @@ -0,0 +1,27 @@ +# SINGA Rubrehaku (PCB designed by Zeix) + +![Layout Compatibility](https://i.imgur.com/jTkWkJd.png) + +65% PCB designed to support Rubrehaku + +* Keyboard Maintainer: [Zeix](https://github.com/itsme-zeix) +* Hardware Supported: KLC x SINGA x Rubrehose Rubrehaku +* Hardware Availability: https://klc-playground.com/ + +Make example for this keyboard (after setting up your build environment): + + make zeix/singa/rubrehaku:default + +Flashing example for this keyboard: + + make zeix/singa/rubrehaku:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. +* **Physical reset button**: Briefly press the `RESET` button twice or short the 'USB_BOOT' and `GND` pads and plug in the keyboard. +* **Keycode in layout**: Press the key mapped to `QK_BOOT`. From e7ad19bb953c6f430fb3501386b96962dbe9912c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Mart=C3=ADnez?= <58857054+elpekenin@users.noreply.github.com> Date: Tue, 11 Nov 2025 13:20:48 +0100 Subject: [PATCH 164/167] [Bugfix] QP error handling (#25591) * change QP so that any func can return error (`void` -> `bool` returns) --- drivers/painter/comms/qp_comms_dummy.c | 3 ++- drivers/painter/comms/qp_comms_i2c.c | 17 +++++++++++----- drivers/painter/comms/qp_comms_i2c.h | 2 +- drivers/painter/comms/qp_comms_spi.c | 10 ++++++--- drivers/painter/comms/qp_comms_spi.h | 6 +++--- drivers/painter/gc9xxx/qp_gc9107.c | 8 ++++---- drivers/painter/gc9xxx/qp_gc9a01.c | 8 ++++---- drivers/painter/ili9xxx/qp_ili9163.c | 8 ++++---- drivers/painter/ili9xxx/qp_ili9341.c | 8 ++++---- drivers/painter/ili9xxx/qp_ili9486.c | 16 +++++++++------ drivers/painter/ili9xxx/qp_ili9488.c | 8 ++++---- drivers/painter/ld7032/qp_ld7032.c | 28 ++++++++++++++++++-------- drivers/painter/sh1106/qp_sh1106.c | 3 +-- drivers/painter/sh1107/qp_sh1107.c | 3 +-- drivers/painter/ssd1351/qp_ssd1351.c | 12 ++++++----- drivers/painter/st77xx/qp_st7735.c | 8 ++++++-- drivers/painter/st77xx/qp_st7789.c | 8 ++++++-- quantum/painter/qp_comms.c | 12 +++++------ quantum/painter/qp_comms.h | 6 +++--- quantum/painter/qp_internal_driver.h | 6 +++--- 20 files changed, 108 insertions(+), 72 deletions(-) diff --git a/drivers/painter/comms/qp_comms_dummy.c b/drivers/painter/comms/qp_comms_dummy.c index 2ed49d2232..7a2aef5d37 100644 --- a/drivers/painter/comms/qp_comms_dummy.c +++ b/drivers/painter/comms/qp_comms_dummy.c @@ -15,8 +15,9 @@ static bool dummy_comms_start(painter_device_t device) { return true; } -static void dummy_comms_stop(painter_device_t device) { +static bool dummy_comms_stop(painter_device_t device) { // No-op. + return true; } uint32_t dummy_comms_send(painter_device_t device, const void *data, uint32_t byte_count) { diff --git a/drivers/painter/comms/qp_comms_i2c.c b/drivers/painter/comms/qp_comms_i2c.c index 93f503f3dd..f093c87ee4 100644 --- a/drivers/painter/comms/qp_comms_i2c.c +++ b/drivers/painter/comms/qp_comms_i2c.c @@ -35,7 +35,9 @@ uint32_t qp_comms_i2c_send_data(painter_device_t device, const void *data, uint3 return qp_comms_i2c_send_raw(device, data, byte_count); } -void qp_comms_i2c_stop(painter_device_t device) {} +bool qp_comms_i2c_stop(painter_device_t device) { + return true; +} //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Command+Data I2C support @@ -43,9 +45,9 @@ void qp_comms_i2c_stop(painter_device_t device) {} static const uint8_t cmd_byte = 0x00; static const uint8_t data_byte = 0x40; -void qp_comms_i2c_cmddata_send_command(painter_device_t device, uint8_t cmd) { +bool qp_comms_i2c_cmddata_send_command(painter_device_t device, uint8_t cmd) { uint8_t buf[2] = {cmd_byte, cmd}; - qp_comms_i2c_send_raw(device, &buf, 2); + return qp_comms_i2c_send_raw(device, &buf, 2); } uint32_t qp_comms_i2c_cmddata_send_data(painter_device_t device, const void *data, uint32_t byte_count) { @@ -58,7 +60,7 @@ uint32_t qp_comms_i2c_cmddata_send_data(painter_device_t device, const void *dat return byte_count; } -void qp_comms_i2c_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) { +bool qp_comms_i2c_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) { uint8_t buf[32]; for (size_t i = 0; i < sequence_len;) { uint8_t command = sequence[i]; @@ -67,12 +69,17 @@ void qp_comms_i2c_bulk_command_sequence(painter_device_t device, const uint8_t * buf[0] = cmd_byte; buf[1] = command; memcpy(&buf[2], &sequence[i + 3], num_bytes); - qp_comms_i2c_send_raw(device, buf, num_bytes + 2); + if (!qp_comms_i2c_send_raw(device, buf, num_bytes + 2)) { + return false; + } + if (delay > 0) { wait_ms(delay); } i += (3 + num_bytes); } + + return true; } const painter_comms_with_command_vtable_t i2c_comms_cmddata_vtable = { diff --git a/drivers/painter/comms/qp_comms_i2c.h b/drivers/painter/comms/qp_comms_i2c.h index 70083d6526..06a284dc15 100644 --- a/drivers/painter/comms/qp_comms_i2c.h +++ b/drivers/painter/comms/qp_comms_i2c.h @@ -19,7 +19,7 @@ typedef struct qp_comms_i2c_config_t { bool qp_comms_i2c_init(painter_device_t device); bool qp_comms_i2c_start(painter_device_t device); uint32_t qp_comms_i2c_send_data(painter_device_t device, const void* data, uint32_t byte_count); -void qp_comms_i2c_stop(painter_device_t device); +bool qp_comms_i2c_stop(painter_device_t device); extern const painter_comms_with_command_vtable_t i2c_comms_cmddata_vtable; diff --git a/drivers/painter/comms/qp_comms_spi.c b/drivers/painter/comms/qp_comms_spi.c index 4e6067394b..31b68dfdf6 100644 --- a/drivers/painter/comms/qp_comms_spi.c +++ b/drivers/painter/comms/qp_comms_spi.c @@ -45,11 +45,12 @@ uint32_t qp_comms_spi_send_data(painter_device_t device, const void *data, uint3 return byte_count - bytes_remaining; } -void qp_comms_spi_stop(painter_device_t device) { +bool qp_comms_spi_stop(painter_device_t device) { painter_driver_t * driver = (painter_driver_t *)device; qp_comms_spi_config_t *comms_config = (qp_comms_spi_config_t *)driver->comms_config; spi_stop(); gpio_write_pin_high(comms_config->chip_select_pin); + return true; } const painter_comms_vtable_t spi_comms_vtable = { @@ -97,14 +98,15 @@ uint32_t qp_comms_spi_dc_reset_send_data(painter_device_t device, const void *da return qp_comms_spi_send_data(device, data, byte_count); } -void qp_comms_spi_dc_reset_send_command(painter_device_t device, uint8_t cmd) { +bool qp_comms_spi_dc_reset_send_command(painter_device_t device, uint8_t cmd) { painter_driver_t * driver = (painter_driver_t *)device; qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config; gpio_write_pin_low(comms_config->dc_pin); spi_write(cmd); + return true; } -void qp_comms_spi_dc_reset_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) { +bool qp_comms_spi_dc_reset_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) { painter_driver_t * driver = (painter_driver_t *)device; qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config; for (size_t i = 0; i < sequence_len;) { @@ -126,6 +128,8 @@ void qp_comms_spi_dc_reset_bulk_command_sequence(painter_device_t device, const } i += (3 + num_bytes); } + + return true; } const painter_comms_with_command_vtable_t spi_comms_with_dc_vtable = { diff --git a/drivers/painter/comms/qp_comms_spi.h b/drivers/painter/comms/qp_comms_spi.h index c39ea95f72..bb1a841519 100644 --- a/drivers/painter/comms/qp_comms_spi.h +++ b/drivers/painter/comms/qp_comms_spi.h @@ -22,7 +22,7 @@ typedef struct qp_comms_spi_config_t { bool qp_comms_spi_init(painter_device_t device); bool qp_comms_spi_start(painter_device_t device); uint32_t qp_comms_spi_send_data(painter_device_t device, const void* data, uint32_t byte_count); -void qp_comms_spi_stop(painter_device_t device); +bool qp_comms_spi_stop(painter_device_t device); extern const painter_comms_vtable_t spi_comms_vtable; @@ -39,9 +39,9 @@ typedef struct qp_comms_spi_dc_reset_config_t { } qp_comms_spi_dc_reset_config_t; bool qp_comms_spi_dc_reset_init(painter_device_t device); -void qp_comms_spi_dc_reset_send_command(painter_device_t device, uint8_t cmd); +bool qp_comms_spi_dc_reset_send_command(painter_device_t device, uint8_t cmd); uint32_t qp_comms_spi_dc_reset_send_data(painter_device_t device, const void* data, uint32_t byte_count); -void qp_comms_spi_dc_reset_bulk_command_sequence(painter_device_t device, const uint8_t* sequence, size_t sequence_len); +bool qp_comms_spi_dc_reset_bulk_command_sequence(painter_device_t device, const uint8_t* sequence, size_t sequence_len); extern const painter_comms_with_command_vtable_t spi_comms_with_dc_vtable; diff --git a/drivers/painter/gc9xxx/qp_gc9107.c b/drivers/painter/gc9xxx/qp_gc9107.c index 108344da4f..f0eb24d0cd 100644 --- a/drivers/painter/gc9xxx/qp_gc9107.c +++ b/drivers/painter/gc9xxx/qp_gc9107.c @@ -32,7 +32,9 @@ __attribute__((weak)) bool qp_gc9107_init(painter_device_t device, painter_rotat }; // clang-format on - qp_comms_bulk_command_sequence(device, gc9107_init_sequence, sizeof(gc9107_init_sequence)); + if (!qp_comms_bulk_command_sequence(device, gc9107_init_sequence, sizeof(gc9107_init_sequence))) { + return false; + } // Configure the rotation (i.e. the ordering and direction of memory writes in GRAM) const uint8_t madctl[] = { @@ -41,9 +43,7 @@ __attribute__((weak)) bool qp_gc9107_init(painter_device_t device, painter_rotat [QP_ROTATION_180] = GC9XXX_MADCTL_BGR | GC9XXX_MADCTL_MX | GC9XXX_MADCTL_MY, [QP_ROTATION_270] = GC9XXX_MADCTL_BGR | GC9XXX_MADCTL_MV | GC9XXX_MADCTL_MY, }; - qp_comms_command_databyte(device, GC9XXX_SET_MEM_ACS_CTL, madctl[rotation]); - - return true; + return qp_comms_command_databyte(device, GC9XXX_SET_MEM_ACS_CTL, madctl[rotation]); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/drivers/painter/gc9xxx/qp_gc9a01.c b/drivers/painter/gc9xxx/qp_gc9a01.c index f037a4cc87..a9b5e4b057 100644 --- a/drivers/painter/gc9xxx/qp_gc9a01.c +++ b/drivers/painter/gc9xxx/qp_gc9a01.c @@ -45,7 +45,9 @@ __attribute__((weak)) bool qp_gc9a01_init(painter_device_t device, painter_rotat }; // clang-format on - qp_comms_bulk_command_sequence(device, gc9a01_init_sequence, sizeof(gc9a01_init_sequence)); + if (!qp_comms_bulk_command_sequence(device, gc9a01_init_sequence, sizeof(gc9a01_init_sequence))) { + return false; + } // Configure the rotation (i.e. the ordering and direction of memory writes in GRAM) const uint8_t madctl[] = { @@ -54,9 +56,7 @@ __attribute__((weak)) bool qp_gc9a01_init(painter_device_t device, painter_rotat [QP_ROTATION_180] = GC9XXX_MADCTL_BGR | GC9XXX_MADCTL_MX | GC9XXX_MADCTL_MY, [QP_ROTATION_270] = GC9XXX_MADCTL_BGR | GC9XXX_MADCTL_MV | GC9XXX_MADCTL_MY, }; - qp_comms_command_databyte(device, GC9XXX_SET_MEM_ACS_CTL, madctl[rotation]); - - return true; + return qp_comms_command_databyte(device, GC9XXX_SET_MEM_ACS_CTL, madctl[rotation]); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/drivers/painter/ili9xxx/qp_ili9163.c b/drivers/painter/ili9xxx/qp_ili9163.c index 7f439dc317..74c5cb28ee 100644 --- a/drivers/painter/ili9xxx/qp_ili9163.c +++ b/drivers/painter/ili9xxx/qp_ili9163.c @@ -41,7 +41,9 @@ __attribute__((weak)) bool qp_ili9163_init(painter_device_t device, painter_rota ILI9XXX_CMD_DISPLAY_ON, 20, 0 }; // clang-format on - qp_comms_bulk_command_sequence(device, ili9163_init_sequence, sizeof(ili9163_init_sequence)); + if (!qp_comms_bulk_command_sequence(device, ili9163_init_sequence, sizeof(ili9163_init_sequence))) { + return false; + } // Configure the rotation (i.e. the ordering and direction of memory writes in GRAM) const uint8_t madctl[] = { @@ -50,9 +52,7 @@ __attribute__((weak)) bool qp_ili9163_init(painter_device_t device, painter_rota [QP_ROTATION_180] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MX | ILI9XXX_MADCTL_MY, [QP_ROTATION_270] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MV | ILI9XXX_MADCTL_MY, }; - qp_comms_command_databyte(device, ILI9XXX_SET_MEM_ACS_CTL, madctl[rotation]); - - return true; + return qp_comms_command_databyte(device, ILI9XXX_SET_MEM_ACS_CTL, madctl[rotation]); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/drivers/painter/ili9xxx/qp_ili9341.c b/drivers/painter/ili9xxx/qp_ili9341.c index a101b292aa..4ca22d8a73 100644 --- a/drivers/painter/ili9xxx/qp_ili9341.c +++ b/drivers/painter/ili9xxx/qp_ili9341.c @@ -48,7 +48,9 @@ __attribute__((weak)) bool qp_ili9341_init(painter_device_t device, painter_rota ILI9XXX_CMD_DISPLAY_ON, 20, 0 }; // clang-format on - qp_comms_bulk_command_sequence(device, ili9341_init_sequence, sizeof(ili9341_init_sequence)); + if (!qp_comms_bulk_command_sequence(device, ili9341_init_sequence, sizeof(ili9341_init_sequence))) { + return false; + } // Configure the rotation (i.e. the ordering and direction of memory writes in GRAM) const uint8_t madctl[] = { @@ -57,9 +59,7 @@ __attribute__((weak)) bool qp_ili9341_init(painter_device_t device, painter_rota [QP_ROTATION_180] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MX | ILI9XXX_MADCTL_MY, [QP_ROTATION_270] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MV | ILI9XXX_MADCTL_MY, }; - qp_comms_command_databyte(device, ILI9XXX_SET_MEM_ACS_CTL, madctl[rotation]); - - return true; + return qp_comms_command_databyte(device, ILI9XXX_SET_MEM_ACS_CTL, madctl[rotation]); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/drivers/painter/ili9xxx/qp_ili9486.c b/drivers/painter/ili9xxx/qp_ili9486.c index 48db779c04..df2d084aa3 100644 --- a/drivers/painter/ili9xxx/qp_ili9486.c +++ b/drivers/painter/ili9xxx/qp_ili9486.c @@ -37,7 +37,9 @@ bool qp_ili9486_init(painter_device_t device, painter_rotation_t rotation) { ILI9XXX_SET_INVERSION_CTL, 0, 1, 0x02, }; // clang-format on - qp_comms_bulk_command_sequence(device, ili9486_init_sequence, sizeof(ili9486_init_sequence)); + if (!qp_comms_bulk_command_sequence(device, ili9486_init_sequence, sizeof(ili9486_init_sequence))) { + return false; + } // Configure the rotation (i.e. the ordering and direction of memory writes in GRAM) const uint8_t madctl[] = { @@ -62,22 +64,22 @@ bool qp_ili9486_init(painter_device_t device, painter_rotation_t rotation) { ILI9XXX_CMD_DISPLAY_ON, 5, 0, }; // clang-format on - qp_comms_bulk_command_sequence(device, rotation_sequence, sizeof(rotation_sequence)); - - return true; + return qp_comms_bulk_command_sequence(device, rotation_sequence, sizeof(rotation_sequence)); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Driver vtable // waveshare variant needs some tweaks due to shift registers -static void qp_comms_spi_dc_reset_send_command_odd_cs_pulse(painter_device_t device, uint8_t cmd) { +static bool qp_comms_spi_dc_reset_send_command_odd_cs_pulse(painter_device_t device, uint8_t cmd) { painter_driver_t * driver = (painter_driver_t *)device; qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config; gpio_write_pin_low(comms_config->spi_config.chip_select_pin); qp_comms_spi_dc_reset_send_command(device, cmd); gpio_write_pin_high(comms_config->spi_config.chip_select_pin); + + return true; } static uint32_t qp_comms_spi_send_data_odd_cs_pulse(painter_device_t device, const void *data, uint32_t byte_count) { @@ -124,7 +126,7 @@ static uint32_t qp_ili9486_send_data_toggling(painter_device_t device, const uin return ret; } -static void qp_comms_spi_send_command_sequence_odd_cs_pulse(painter_device_t device, const uint8_t *sequence, size_t sequence_len) { +static bool qp_comms_spi_send_command_sequence_odd_cs_pulse(painter_device_t device, const uint8_t *sequence, size_t sequence_len) { for (size_t i = 0; i < sequence_len;) { uint8_t command = sequence[i]; uint8_t delay = sequence[i + 1]; @@ -140,6 +142,8 @@ static void qp_comms_spi_send_command_sequence_odd_cs_pulse(painter_device_t dev } i += (3 + num_bytes); } + + return true; } static bool qp_ili9486_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom) { diff --git a/drivers/painter/ili9xxx/qp_ili9488.c b/drivers/painter/ili9xxx/qp_ili9488.c index 63deaf5f2e..fd05db8751 100644 --- a/drivers/painter/ili9xxx/qp_ili9488.c +++ b/drivers/painter/ili9xxx/qp_ili9488.c @@ -41,7 +41,9 @@ __attribute__((weak)) bool qp_ili9488_init(painter_device_t device, painter_rota ILI9XXX_CMD_DISPLAY_ON, 20, 0 }; // clang-format on - qp_comms_bulk_command_sequence(device, ili9488_init_sequence, sizeof(ili9488_init_sequence)); + if (!qp_comms_bulk_command_sequence(device, ili9488_init_sequence, sizeof(ili9488_init_sequence))) { + return false; + } // Configure the rotation (i.e. the ordering and direction of memory writes in GRAM) const uint8_t madctl[] = { @@ -50,9 +52,7 @@ __attribute__((weak)) bool qp_ili9488_init(painter_device_t device, painter_rota [QP_ROTATION_180] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MX, [QP_ROTATION_270] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MV, }; - qp_comms_command_databyte(device, ILI9XXX_SET_MEM_ACS_CTL, madctl[rotation]); - - return true; + return qp_comms_command_databyte(device, ILI9XXX_SET_MEM_ACS_CTL, madctl[rotation]); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/drivers/painter/ld7032/qp_ld7032.c b/drivers/painter/ld7032/qp_ld7032.c index f43ae8e60d..d73430cc75 100644 --- a/drivers/painter/ld7032/qp_ld7032.c +++ b/drivers/painter/ld7032/qp_ld7032.c @@ -10,7 +10,7 @@ #include "qp_surface.h" #include "qp_surface_internal.h" -typedef void (*ld7032_driver_comms_send_command_and_data_func)(painter_device_t device, uint8_t cmd, uint8_t data); +typedef bool (*ld7032_driver_comms_send_command_and_data_func)(painter_device_t device, uint8_t cmd, uint8_t data); typedef uint32_t (*ld7032_driver_comms_send_command_and_databuf_func)(painter_device_t device, uint8_t cmd, const void *data, uint32_t byte_count); typedef struct ld7032_comms_with_command_vtable_t { @@ -25,12 +25,13 @@ typedef struct ld7032_comms_with_command_vtable_t { // LD7032 Internal API //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -void ld7032_comms_i2c_send_command_and_data(painter_device_t device, uint8_t cmd, uint8_t data) { +#ifdef QUANTUM_PAINTER_LD7032_I2C_ENABLE +bool ld7032_comms_i2c_send_command_and_data(painter_device_t device, uint8_t cmd, uint8_t data) { uint8_t buf[2] = {cmd, data}; - qp_comms_i2c_send_data(device, buf, 2); + return qp_comms_i2c_send_data(device, buf, 2); } -void ld7032_comms_i2c_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) { +bool ld7032_comms_i2c_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) { uint8_t buf[32]; for (size_t i = 0; i < sequence_len;) { uint8_t command = sequence[i]; @@ -38,12 +39,16 @@ void ld7032_comms_i2c_bulk_command_sequence(painter_device_t device, const uint8 uint8_t num_bytes = sequence[i + 2]; buf[0] = command; memcpy(&buf[1], &sequence[i + 3], num_bytes); - qp_comms_i2c_send_data(device, buf, num_bytes + 1); + if (!qp_comms_i2c_send_data(device, buf, num_bytes + 1)) { + return false; + } if (delay > 0) { wait_ms(delay); } i += (3 + num_bytes); } + + return true; } uint32_t ld7032_comms_i2c_send_command_and_databuf(painter_device_t device, uint8_t cmd, const void *data, uint32_t byte_count) { @@ -53,6 +58,7 @@ uint32_t ld7032_comms_i2c_send_command_and_databuf(painter_device_t device, uint memcpy(&buf[1], data, byte_count); return qp_comms_send(device, buf, byte_count + 1); } +#endif // QUANTUM_PAINTER_LD7032_I2C_ENABLE // Power control bool qp_ld7032_power(painter_device_t device, bool power_on) { @@ -201,7 +207,9 @@ __attribute__((weak)) bool qp_ld7032_init(painter_device_t device, painter_rotat }; // clang-format on - qp_comms_bulk_command_sequence(device, ld7032_init_sequence, sizeof(ld7032_init_sequence)); + if (!qp_comms_bulk_command_sequence(device, ld7032_init_sequence, sizeof(ld7032_init_sequence))) { + return false; + } uint8_t display_y_start = 40 - driver->oled.base.panel_height; uint8_t display_x_start = (128 - driver->oled.base.panel_width) / 2; @@ -223,7 +231,9 @@ __attribute__((weak)) bool qp_ld7032_init(painter_device_t device, painter_rotat ld7032_memory_setup[13] = ld7032_memory_setup[4] + 1; ld7032_memory_setup[17] = driver->oled.base.panel_height; - qp_comms_bulk_command_sequence(device, ld7032_memory_setup, sizeof(ld7032_memory_setup)); + if (!qp_comms_bulk_command_sequence(device, ld7032_memory_setup, sizeof(ld7032_memory_setup))) { + return false; + } uint8_t write_direction = 0; switch (rotation) { @@ -245,7 +255,9 @@ __attribute__((weak)) bool qp_ld7032_init(painter_device_t device, painter_rotat painter_driver_t * pdriver = (painter_driver_t *)device; ld7032_comms_with_command_vtable_t *comms_vtable = (ld7032_comms_with_command_vtable_t *)pdriver->comms_vtable; - comms_vtable->send_command_data(device, LD7032_WRITE_DIRECTION, write_direction); + if (!comms_vtable->send_command_data(device, LD7032_WRITE_DIRECTION, write_direction)) { + return false; + } qp_ld7032_power(device, true); diff --git a/drivers/painter/sh1106/qp_sh1106.c b/drivers/painter/sh1106/qp_sh1106.c index 4117115aec..85da4a973a 100644 --- a/drivers/painter/sh1106/qp_sh1106.c +++ b/drivers/painter/sh1106/qp_sh1106.c @@ -71,8 +71,7 @@ __attribute__((weak)) bool qp_sh1106_init(painter_device_t device, painter_rotat sh1106_init_sequence[20] = 0x02; } - qp_comms_bulk_command_sequence(device, sh1106_init_sequence, sizeof(sh1106_init_sequence)); - return true; + return qp_comms_bulk_command_sequence(device, sh1106_init_sequence, sizeof(sh1106_init_sequence)); } // Screen flush diff --git a/drivers/painter/sh1107/qp_sh1107.c b/drivers/painter/sh1107/qp_sh1107.c index f4cbd49e40..0b48690803 100644 --- a/drivers/painter/sh1107/qp_sh1107.c +++ b/drivers/painter/sh1107/qp_sh1107.c @@ -73,8 +73,7 @@ __attribute__((weak)) bool qp_sh1107_init(painter_device_t device, painter_rotat sh1107_init_sequence[20] = 0x02; } - qp_comms_bulk_command_sequence(device, sh1107_init_sequence, sizeof(sh1107_init_sequence)); - return true; + return qp_comms_bulk_command_sequence(device, sh1107_init_sequence, sizeof(sh1107_init_sequence)); } // Screen flush diff --git a/drivers/painter/ssd1351/qp_ssd1351.c b/drivers/painter/ssd1351/qp_ssd1351.c index 3270a362c2..3f652e674e 100644 --- a/drivers/painter/ssd1351/qp_ssd1351.c +++ b/drivers/painter/ssd1351/qp_ssd1351.c @@ -44,7 +44,9 @@ __attribute__((weak)) bool qp_ssd1351_init(painter_device_t device, painter_rota SSD1351_DISPLAYON, 5, 0, }; // clang-format on - qp_comms_bulk_command_sequence(device, ssd1351_init_sequence, sizeof(ssd1351_init_sequence)); + if (!qp_comms_bulk_command_sequence(device, ssd1351_init_sequence, sizeof(ssd1351_init_sequence))) { + return false; + } // Configure the rotation (i.e. the ordering and direction of memory writes in GRAM) const uint8_t madctl[] = { @@ -53,10 +55,10 @@ __attribute__((weak)) bool qp_ssd1351_init(painter_device_t device, painter_rota [QP_ROTATION_180] = SSD1351_MADCTL_BGR | SSD1351_MADCTL_MX, [QP_ROTATION_270] = SSD1351_MADCTL_BGR | SSD1351_MADCTL_MV, }; - qp_comms_command_databyte(device, SSD1351_SETREMAP, madctl[rotation]); - qp_comms_command_databyte(device, SSD1351_STARTLINE, (rotation == QP_ROTATION_0 || rotation == QP_ROTATION_90) ? driver->base.panel_height : 0); - - return true; + if (!qp_comms_command_databyte(device, SSD1351_SETREMAP, madctl[rotation])) { + return false; + } + return qp_comms_command_databyte(device, SSD1351_STARTLINE, (rotation == QP_ROTATION_0 || rotation == QP_ROTATION_90) ? driver->base.panel_height : 0); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/drivers/painter/st77xx/qp_st7735.c b/drivers/painter/st77xx/qp_st7735.c index 1db0d01dcb..9e3df477c8 100644 --- a/drivers/painter/st77xx/qp_st7735.c +++ b/drivers/painter/st77xx/qp_st7735.c @@ -63,7 +63,9 @@ __attribute__((weak)) bool qp_st7735_init(painter_device_t device, painter_rotat ST77XX_CMD_DISPLAY_ON, 20, 0 }; // clang-format on - qp_comms_bulk_command_sequence(device, st7735_init_sequence, sizeof(st7735_init_sequence)); + if (!qp_comms_bulk_command_sequence(device, st7735_init_sequence, sizeof(st7735_init_sequence))) { + return false; + } // Configure the rotation (i.e. the ordering and direction of memory writes in GRAM) const uint8_t madctl[] = { @@ -72,7 +74,9 @@ __attribute__((weak)) bool qp_st7735_init(painter_device_t device, painter_rotat [QP_ROTATION_180] = ST77XX_MADCTL_BGR | ST77XX_MADCTL_MX | ST77XX_MADCTL_MY, [QP_ROTATION_270] = ST77XX_MADCTL_BGR | ST77XX_MADCTL_MV | ST77XX_MADCTL_MY, }; - qp_comms_command_databyte(device, ST77XX_SET_MADCTL, madctl[rotation]); + if (!qp_comms_command_databyte(device, ST77XX_SET_MADCTL, madctl[rotation])) { + return false; + } #ifndef ST7735_NO_AUTOMATIC_VIEWPORT_OFFSETS st7735_automatic_viewport_offsets(device, rotation); diff --git a/drivers/painter/st77xx/qp_st7789.c b/drivers/painter/st77xx/qp_st7789.c index 855a9cc0c8..b4e24886da 100644 --- a/drivers/painter/st77xx/qp_st7789.c +++ b/drivers/painter/st77xx/qp_st7789.c @@ -60,7 +60,9 @@ __attribute__((weak)) bool qp_st7789_init(painter_device_t device, painter_rotat ST77XX_CMD_DISPLAY_ON, 20, 0 }; // clang-format on - qp_comms_bulk_command_sequence(device, st7789_init_sequence, sizeof(st7789_init_sequence)); + if (!qp_comms_bulk_command_sequence(device, st7789_init_sequence, sizeof(st7789_init_sequence))) { + return false; + } // Configure the rotation (i.e. the ordering and direction of memory writes in GRAM) const uint8_t madctl[] = { @@ -69,7 +71,9 @@ __attribute__((weak)) bool qp_st7789_init(painter_device_t device, painter_rotat [QP_ROTATION_180] = ST77XX_MADCTL_RGB | ST77XX_MADCTL_MX | ST77XX_MADCTL_MY, [QP_ROTATION_270] = ST77XX_MADCTL_RGB | ST77XX_MADCTL_MV | ST77XX_MADCTL_MY, }; - qp_comms_command_databyte(device, ST77XX_SET_MADCTL, madctl[rotation]); + if (!qp_comms_command_databyte(device, ST77XX_SET_MADCTL, madctl[rotation])) { + return false; + } #ifndef ST7789_NO_AUTOMATIC_VIEWPORT_OFFSETS st7789_automatic_viewport_offsets(device, rotation); diff --git a/quantum/painter/qp_comms.c b/quantum/painter/qp_comms.c index 63667783e1..402165b119 100644 --- a/quantum/painter/qp_comms.c +++ b/quantum/painter/qp_comms.c @@ -49,15 +49,15 @@ uint32_t qp_comms_send(painter_device_t device, const void *data, uint32_t byte_ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Comms APIs that use a D/C pin -void qp_comms_command(painter_device_t device, uint8_t cmd) { +bool qp_comms_command(painter_device_t device, uint8_t cmd) { painter_driver_t * driver = (painter_driver_t *)device; painter_comms_with_command_vtable_t *comms_vtable = (painter_comms_with_command_vtable_t *)driver->comms_vtable; - comms_vtable->send_command(device, cmd); + return comms_vtable->send_command(device, cmd); } -void qp_comms_command_databyte(painter_device_t device, uint8_t cmd, uint8_t data) { +bool qp_comms_command_databyte(painter_device_t device, uint8_t cmd, uint8_t data) { qp_comms_command(device, cmd); - qp_comms_send(device, &data, sizeof(data)); + return qp_comms_send(device, &data, sizeof(data)); } uint32_t qp_comms_command_databuf(painter_device_t device, uint8_t cmd, const void *data, uint32_t byte_count) { @@ -65,8 +65,8 @@ uint32_t qp_comms_command_databuf(painter_device_t device, uint8_t cmd, const vo return qp_comms_send(device, data, byte_count); } -void qp_comms_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) { +bool qp_comms_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) { painter_driver_t * driver = (painter_driver_t *)device; painter_comms_with_command_vtable_t *comms_vtable = (painter_comms_with_command_vtable_t *)driver->comms_vtable; - comms_vtable->bulk_command_sequence(device, sequence, sequence_len); + return comms_vtable->bulk_command_sequence(device, sequence, sequence_len); } diff --git a/quantum/painter/qp_comms.h b/quantum/painter/qp_comms.h index 8fbf25c201..dc5892b1bb 100644 --- a/quantum/painter/qp_comms.h +++ b/quantum/painter/qp_comms.h @@ -19,7 +19,7 @@ uint32_t qp_comms_send(painter_device_t device, const void* data, uint32_t byte_ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Comms APIs that use a D/C pin -void qp_comms_command(painter_device_t device, uint8_t cmd); -void qp_comms_command_databyte(painter_device_t device, uint8_t cmd, uint8_t data); +bool qp_comms_command(painter_device_t device, uint8_t cmd); +bool qp_comms_command_databyte(painter_device_t device, uint8_t cmd, uint8_t data); uint32_t qp_comms_command_databuf(painter_device_t device, uint8_t cmd, const void* data, uint32_t byte_count); -void qp_comms_bulk_command_sequence(painter_device_t device, const uint8_t* sequence, size_t sequence_len); +bool qp_comms_bulk_command_sequence(painter_device_t device, const uint8_t* sequence, size_t sequence_len); diff --git a/quantum/painter/qp_internal_driver.h b/quantum/painter/qp_internal_driver.h index 69da966f8c..5b6efe2c83 100644 --- a/quantum/painter/qp_internal_driver.h +++ b/quantum/painter/qp_internal_driver.h @@ -36,7 +36,7 @@ typedef struct painter_driver_vtable_t { typedef bool (*painter_driver_comms_init_func)(painter_device_t device); typedef bool (*painter_driver_comms_start_func)(painter_device_t device); -typedef void (*painter_driver_comms_stop_func)(painter_device_t device); +typedef bool (*painter_driver_comms_stop_func)(painter_device_t device); typedef uint32_t (*painter_driver_comms_send_func)(painter_device_t device, const void *data, uint32_t byte_count); typedef struct painter_comms_vtable_t { @@ -46,8 +46,8 @@ typedef struct painter_comms_vtable_t { painter_driver_comms_send_func comms_send; } painter_comms_vtable_t; -typedef void (*painter_driver_comms_send_command_func)(painter_device_t device, uint8_t cmd); -typedef void (*painter_driver_comms_bulk_command_sequence)(painter_device_t device, const uint8_t *sequence, size_t sequence_len); +typedef bool (*painter_driver_comms_send_command_func)(painter_device_t device, uint8_t cmd); +typedef bool (*painter_driver_comms_bulk_command_sequence)(painter_device_t device, const uint8_t *sequence, size_t sequence_len); typedef struct painter_comms_with_command_vtable_t { painter_comms_vtable_t base; // must be first, so this object can be cast from the painter_comms_vtable_t* type From ed343ddad4832a0a48c8ad794e949a595dcf3cfb Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Tue, 11 Nov 2025 21:21:50 +0900 Subject: [PATCH 165/167] VIA Keylog Change (#25504) * WIP * Update via.c temptive fix in formatting for lint errors. * Update via.c let's try this one, thanks mobile GitHub app to not showing spaces right. * Update quantum/via.c Co-authored-by: Joel Challis * Update quantum/via.c Co-authored-by: Joel Challis * Merge branch 'qmk:master' into via_keylog_change --- quantum/via.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/quantum/via.c b/quantum/via.c index 9446811af6..130ff74794 100644 --- a/quantum/via.c +++ b/quantum/via.c @@ -37,6 +37,10 @@ #include "version.h" // for QMK_BUILDDATE used in EEPROM magic #include "nvm_via.h" +#if defined(SECURE_ENABLE) +# include "secure.h" +#endif + #if defined(AUDIO_ENABLE) # include "audio.h" #endif @@ -322,8 +326,13 @@ void raw_hid_receive(uint8_t *data, uint8_t length) { uint8_t rows = 28 / ((MATRIX_COLS + 7) / 8); uint8_t i = 2; for (uint8_t row = 0; row < rows && row + offset < MATRIX_ROWS; row++) { -#ifdef VIA_INSECURE +#if defined(VIA_INSECURE) matrix_row_t value = matrix_get_row(row + offset); +#elif defined(SECURE_ENABLE) + matrix_row_t value = 0; + if (secure_is_unlocked()) { + value = matrix_get_row(row + offset); + } #else matrix_row_t value = 0; #endif From a58d2dd7c9d0fcd5d86a1d63c7429af934c18f4c Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Sat, 15 Nov 2025 18:39:35 +0100 Subject: [PATCH 166/167] wip --- keyboards/mkbd65/config.h | 19 +- keyboards/mkbd65/info.json | 16 -- keyboards/mkbd65/keyboard.json | 167 ++++++++++++++++++ keyboards/mkbd65/keymaps/ansi/README.md | 5 +- keyboards/mkbd65/keymaps/ansi/keymap.c | 1 + keyboards/mkbd65/keymaps/de/README.md | 5 +- keyboards/mkbd65/keymaps/en_us_intl/README.md | 5 +- keyboards/mkbd65/keymaps/iso/README.md | 1 + keyboards/mkbd65/rev0/mkbd65.c | 2 + keyboards/mkbd65/rev0/mkbd65.h | 2 - keyboards/mkbd65/rules.mk | 31 +++- 11 files changed, 219 insertions(+), 35 deletions(-) delete mode 100644 keyboards/mkbd65/info.json create mode 100644 keyboards/mkbd65/keyboard.json diff --git a/keyboards/mkbd65/config.h b/keyboards/mkbd65/config.h index 4ac3a7eaf5..4b3907c132 100644 --- a/keyboards/mkbd65/config.h +++ b/keyboards/mkbd65/config.h @@ -1,13 +1,12 @@ -// Copyright 2023 XenGi (@XenGi) +// Copyright 2023 XenGi // SPDX-License-Identifier: GPL-2.0-or-later -#pragma once +// optimize firmware +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE +#define LAYER_STATE_8BIT + +// disable features to save on code size +#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT -// disable debugging -//#define NO_DEBUG -// disable printing/debugging using hid_listen -//#define NO_PRINT -// disable tap dance and other tapping features -//#define NO_ACTION_TAPPING -// disable one-shot modifiers -//#define NO_ACTION_ONESHOT diff --git a/keyboards/mkbd65/info.json b/keyboards/mkbd65/info.json deleted file mode 100644 index 7a2cd0c8f7..0000000000 --- a/keyboards/mkbd65/info.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "keyboard_name": "mkbd65", - "manufacturer": "XenGi", - "url": "https://mkbd65.xengi.de", - "maintainer": "XenGi", - "author": ["XenGi"], - "debounce": 5, - "diode_direction": "ROW2COL", - "bootmagic": { - "enabled": true, - "matrix": [0, 0] - }, - "tags": ["mobile", "65%"], - "description": "A mobile keyboard addon for modern smartphones. Fits any smartphones within some minimal size requirements. Supports any keyboard layout you want, as long as it doesn't need more keys.", - "short": "A mobile keyboard addon for modern smartphones." -} diff --git a/keyboards/mkbd65/keyboard.json b/keyboards/mkbd65/keyboard.json new file mode 100644 index 0000000000..3d1fe2ec2a --- /dev/null +++ b/keyboards/mkbd65/keyboard.json @@ -0,0 +1,167 @@ +{ + "manufacturer": "XenGi", + "keyboard_name": "mkbd65", + "maintainer": "XenGi", + "bootloader": "atmel-dfu", + "diode_direction": "ROW2COL", + "debounce": 5, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": false, + "rgblight": false + }, + "bootmagic": { + "enabled": true, + "matrix": [0, 0] + }, + "matrix_pins": { + "cols": ["D4", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"], + "rows": ["D5", "D3", "D2", "D1", "D0"] + }, + "processor": "atmega32u4", + "url": "https://mkbd65.xengi.de", + "bootloader_instructions": "Press the button marked RESET on the back of the PCB", + "tags": ["mobile", "65%"], + "usb": { + "device_version": "0.0.1", + "pid": "0x4803", + "vid": "0x1209" + }, + "build": { + "lto": true + }, + "layouts": { + "LAYOUT": { + "layout_ansi": [ + { "matrix": [0, 0], "x": 0, "y": 0, "label": "Esc" }, + { "matrix": [0, 1], "x": 1, "y": 0, "label": "1" }, + { "matrix": [0, 2], "x": 2, "y": 0, "label": "2" }, + { "matrix": [0, 3], "x": 3, "y": 0, "label": "3" }, + { "matrix": [0, 4], "x": 4, "y": 0, "label": "4" }, + { "matrix": [0, 5], "x": 5, "y": 0, "label": "5" }, + { "matrix": [0, 6], "x": 6, "y": 0, "label": "6" }, + { "matrix": [0, 7], "x": 7, "y": 0, "label": "7" }, + { "matrix": [0, 8], "x": 8, "y": 0, "label": "8" }, + { "matrix": [0, 9], "x": 9, "y": 0, "label": "9" }, + { "matrix": [0, 10], "x": 10, "y": 0, "label": "0" }, + { "matrix": [0, 11], "x": 11, "y": 0, "w": 2, "label": "Backspace" }, + { "matrix": [1, 0], "x": 1, "y": 0, "label": "Q" }, + { "matrix": [1, 1], "x": 1, "y": 1, "label": "W" }, + { "matrix": [1, 2], "x": 1, "y": 2, "label": "E" }, + { "matrix": [1, 3], "x": 1, "y": 3, "label": "R" }, + { "matrix": [1, 4], "x": 1, "y": 4, "label": "T" }, + { "matrix": [1, 5], "x": 1, "y": 5, "label": "Y" }, + { "matrix": [1, 6], "x": 1, "y": 6, "label": "U" }, + { "matrix": [1, 7], "x": 1, "y": 7, "label": "I" }, + { "matrix": [1, 8], "x": 1, "y": 8, "label": "O" }, + { "matrix": [1, 9], "x": 1, "y": 9, "label": "P" }, + { "matrix": [1, 10], "x": 1, "y": 10, "label": "[" }, + { "matrix": [1, 11], "x": 1, "y": 11, "label": "]" }, + { "matrix": [1, 11], "x": 1, "y": 12, "label": "\\" }, + { "matrix": [2, 0], "x": 2, "y": 0, "label": "A" }, + { "matrix": [2, 1], "x": 2, "y": 1, "label": "S" }, + { "matrix": [2, 2], "x": 2, "y": 2, "label": "D" }, + { "matrix": [2, 3], "x": 2, "y": 3, "label": "F" }, + { "matrix": [2, 4], "x": 2, "y": 4, "label": "G" }, + { "matrix": [2, 5], "x": 2, "y": 5, "label": "H" }, + { "matrix": [2, 6], "x": 2, "y": 6, "label": "J" }, + { "matrix": [2, 7], "x": 2, "y": 7, "label": "K" }, + { "matrix": [2, 8], "x": 2, "y": 8, "label": "L" }, + { "matrix": [2, 9], "x": 2, "y": 9, "label": ";" }, + { "matrix": [2, 10], "x": 2, "y": 10, "label": "'" }, + { "matrix": [2, 11], "x": 2, "y": 11, "w": 2, "label": "Enter" }, + { "matrix": [3, 0], "x": 3, "y": 0, "label": "Z" }, + { "matrix": [3, 1], "x": 3, "y": 1, "label": "X" }, + { "matrix": [3, 2], "x": 3, "y": 2, "label": "C" }, + { "matrix": [3, 3], "x": 3, "y": 3, "label": "V" }, + { "matrix": [3, 4], "x": 3, "y": 4, "label": "B" }, + { "matrix": [3, 5], "x": 3, "y": 5, "label": "N" }, + { "matrix": [3, 6], "x": 3, "y": 6, "label": "M" }, + { "matrix": [3, 7], "x": 3, "y": 7, "label": "," }, + { "matrix": [3, 8], "x": 3, "y": 8, "label": "." }, + { "matrix": [3, 9], "x": 3, "y": 9, "label": "/" }, + { "matrix": [3, 10], "x": 3, "y": 10, "label": "Up" }, + { "matrix": [3, 11], "x": 3, "y": 11, "w": 2, "label": "ShiftR" }, + { "matrix": [4, 0], "x": 4, "y": 0, "label": "CtrlL" }, + { "matrix": [4, 1], "x": 4, "y": 1, "label": "Fn" }, + { "matrix": [4, 2], "x": 4, "y": 2, "label": "ShiftL" }, + { "matrix": [4, 3], "x": 4, "y": 3, "label": "Alt" }, + { "matrix": [4, 4], "x": 4, "y": 4, "w": 3, "label": "Space" }, + { "matrix": [4, 7], "x": 4, "y": 7, "label": "-" }, + { "matrix": [4, 8], "x": 4, "y": 8, "label": "=" }, + { "matrix": [4, 9], "x": 4, "y": 9, "label": "Left" }, + { "matrix": [4, 10], "x": 4, "y": 10, "label": "Down" }, + { "matrix": [4, 11], "x": 4, "y": 11, "label": "Right" }, + { "matrix": [4, 12], "x": 4, "y": 12, "label": "CtrlR" } + ], + "layout_iso": [ + { "matrix": [0, 0], "x": 0, "y": 0, "label": "Esc" }, + { "matrix": [0, 1], "x": 1, "y": 0, "label": "1" }, + { "matrix": [0, 2], "x": 2, "y": 0, "label": "2" }, + { "matrix": [0, 3], "x": 3, "y": 0, "label": "3" }, + { "matrix": [0, 4], "x": 4, "y": 0, "label": "4" }, + { "matrix": [0, 5], "x": 5, "y": 0, "label": "5" }, + { "matrix": [0, 6], "x": 6, "y": 0, "label": "6" }, + { "matrix": [0, 7], "x": 7, "y": 0, "label": "7" }, + { "matrix": [0, 8], "x": 8, "y": 0, "label": "8" }, + { "matrix": [0, 9], "x": 9, "y": 0, "label": "9" }, + { "matrix": [0, 10], "x": 10, "y": 0, "label": "0" }, + { "matrix": [0, 11], "x": 11, "y": 0, "w": 2, "label": "Backspace" }, + { "matrix": [1, 0], "x": 1, "y": 0, "label": "Q" }, + { "matrix": [1, 1], "x": 1, "y": 1, "label": "W" }, + { "matrix": [1, 2], "x": 1, "y": 2, "label": "E" }, + { "matrix": [1, 3], "x": 1, "y": 3, "label": "R" }, + { "matrix": [1, 4], "x": 1, "y": 4, "label": "T" }, + { "matrix": [1, 5], "x": 1, "y": 5, "label": "Y" }, + { "matrix": [1, 6], "x": 1, "y": 6, "label": "U" }, + { "matrix": [1, 7], "x": 1, "y": 7, "label": "I" }, + { "matrix": [1, 8], "x": 1, "y": 8, "label": "O" }, + { "matrix": [1, 9], "x": 1, "y": 9, "label": "P" }, + { "matrix": [1, 10], "x": 1, "y": 10, "label": "[" }, + { "matrix": [1, 11], "x": 1, "y": 11, "label": "]" }, + { "matrix": [2, 0], "x": 2, "y": 0, "label": "A" }, + { "matrix": [2, 1], "x": 2, "y": 1, "label": "S" }, + { "matrix": [2, 2], "x": 2, "y": 2, "label": "D" }, + { "matrix": [2, 3], "x": 2, "y": 3, "label": "F" }, + { "matrix": [2, 4], "x": 2, "y": 4, "label": "G" }, + { "matrix": [2, 5], "x": 2, "y": 5, "label": "H" }, + { "matrix": [2, 6], "x": 2, "y": 6, "label": "J" }, + { "matrix": [2, 7], "x": 2, "y": 7, "label": "K" }, + { "matrix": [2, 8], "x": 2, "y": 8, "label": "L" }, + { "matrix": [2, 9], "x": 2, "y": 9, "label": ";" }, + { "matrix": [2, 10], "x": 2, "y": 10, "label": "'" }, + { "matrix": [2, 11], "x": 2, "y": 11, "label": "\\" }, + { "matrix": [1, 12], "x": 1, "y": 12, "h": 2, "label": "Enter" }, + { "matrix": [3, 0], "x": 3, "y": 0, "label": "Z" }, + { "matrix": [3, 1], "x": 3, "y": 1, "label": "X" }, + { "matrix": [3, 2], "x": 3, "y": 2, "label": "C" }, + { "matrix": [3, 3], "x": 3, "y": 3, "label": "V" }, + { "matrix": [3, 4], "x": 3, "y": 4, "label": "B" }, + { "matrix": [3, 5], "x": 3, "y": 5, "label": "N" }, + { "matrix": [3, 6], "x": 3, "y": 6, "label": "M" }, + { "matrix": [3, 7], "x": 3, "y": 7, "label": "," }, + { "matrix": [3, 8], "x": 3, "y": 8, "label": "." }, + { "matrix": [3, 9], "x": 3, "y": 9, "label": "/" }, + { "matrix": [3, 10], "x": 3, "y": 10, "label": "Up" }, + { "matrix": [3, 11], "x": 3, "y": 11, "w": 2, "label": "ShiftR" }, + { "matrix": [4, 0], "x": 4, "y": 0, "label": "CtrlL" }, + { "matrix": [4, 1], "x": 4, "y": 1, "label": "Fn" }, + { "matrix": [4, 2], "x": 4, "y": 2, "label": "ShiftL" }, + { "matrix": [4, 3], "x": 4, "y": 3, "label": "Alt" }, + { "matrix": [4, 4], "x": 4, "y": 4, "w": 3, "label": "Space" }, + { "matrix": [4, 7], "x": 4, "y": 7, "label": "-" }, + { "matrix": [4, 8], "x": 4, "y": 8, "label": "=" }, + { "matrix": [4, 9], "x": 4, "y": 9, "label": "Left" }, + { "matrix": [4, 10], "x": 4, "y": 10, "label": "Down" }, + { "matrix": [4, 11], "x": 4, "y": 11, "label": "Right" }, + { "matrix": [4, 12], "x": 4, "y": 12, "label": "CtrlR" } + ] + } + } +} + diff --git a/keyboards/mkbd65/keymaps/ansi/README.md b/keyboards/mkbd65/keymaps/ansi/README.md index 96e8f7bb14..f68aaf41fc 100644 --- a/keyboards/mkbd65/keymaps/ansi/README.md +++ b/keyboards/mkbd65/keymaps/ansi/README.md @@ -39,7 +39,7 @@ This is the key matrix (no label means the key from layer 0 will be used): ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ ║ ║ ß ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ -║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ║ ║ +║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ║ ║ ╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ ║ ║ ║ ║░░░░║ ║ ║ ║ ║ ║ ║ ║ ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ @@ -49,10 +49,11 @@ This is the key matrix (no label means the key from layer 0 will be used): ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ F11║ F12║ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ -║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ` ║ Super ║ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ` ║ Super ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║PgUp║ ║ ╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ ║ ║░░░░║ ║ ║ Tab ║ ║ ║Pos1║PgDn║ End║ ║ ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ ``` + diff --git a/keyboards/mkbd65/keymaps/ansi/keymap.c b/keyboards/mkbd65/keymaps/ansi/keymap.c index fb5f196098..b023feab91 100644 --- a/keyboards/mkbd65/keymaps/ansi/keymap.c +++ b/keyboards/mkbd65/keymaps/ansi/keymap.c @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H +#include "quantum.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_ansi( /* Base layer */ diff --git a/keyboards/mkbd65/keymaps/de/README.md b/keyboards/mkbd65/keymaps/de/README.md index f5c29d8e85..c37325f914 100644 --- a/keyboards/mkbd65/keymaps/de/README.md +++ b/keyboards/mkbd65/keymaps/de/README.md @@ -37,7 +37,7 @@ This is the key matrix (no label means the key from layer 0 will be used): ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ -║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ║ ║ | ║ ║ +║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ║ ║ | ║ ║ ╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╬════╣ ║ ║ ║ ║░░░░║ ║ \ ║ ║ ║ ║ ║ ║ ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ @@ -47,10 +47,11 @@ This is the key matrix (no label means the key from layer 0 will be used): ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ F11║ F12║ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣Supr║ -║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ^ ║ ║ ║ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ^ ║ ║ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║PgUp║ ║ ║ ╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╬════╣ ║ ║░░░░║ ║ ║ Tab ║ ║ ║Pos1║PgDn║ End║ ║ ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ ``` + diff --git a/keyboards/mkbd65/keymaps/en_us_intl/README.md b/keyboards/mkbd65/keymaps/en_us_intl/README.md index 96e8f7bb14..f68aaf41fc 100644 --- a/keyboards/mkbd65/keymaps/en_us_intl/README.md +++ b/keyboards/mkbd65/keymaps/en_us_intl/README.md @@ -39,7 +39,7 @@ This is the key matrix (no label means the key from layer 0 will be used): ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ ║ ║ ß ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ -║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ║ ║ +║ ║ ║ ║ ║ ║ ║ µ ║ ║ ║ ¿ ║ ║ ║ ╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ ║ ║ ║ ║░░░░║ ║ ║ ║ ║ ║ ║ ║ ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ @@ -49,10 +49,11 @@ This is the key matrix (no label means the key from layer 0 will be used): ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╦════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ F11║ F12║ ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╩════╣ -║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ` ║ Super ║ +║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ` ║ Super ║ ╠════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬════╬═════════╣ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║PgUp║ ║ ╠════╬════╬════╬════╬════╩════╩════╬════╬════╬════╬════╬════╦════╣ ║ ║░░░░║ ║ ║ Tab ║ ║ ║Pos1║PgDn║ End║ ║ ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ ``` + diff --git a/keyboards/mkbd65/keymaps/iso/README.md b/keyboards/mkbd65/keymaps/iso/README.md index beb5cc2783..9a5f9b176f 100644 --- a/keyboards/mkbd65/keymaps/iso/README.md +++ b/keyboards/mkbd65/keymaps/iso/README.md @@ -52,3 +52,4 @@ It's actually just ANSI but with an upright `Enter` key. ║Ctrl║░░░░║Shft║AltG║ Tab ║ ║ ` ║Pos1║PgDn║ End║Ctrl║ ╚════╩════╩════╩════╩══════════════╩════╩════╩════╩════╩════╩════╝ ``` + diff --git a/keyboards/mkbd65/rev0/mkbd65.c b/keyboards/mkbd65/rev0/mkbd65.c index baca6508d4..2cde260fa0 100644 --- a/keyboards/mkbd65/rev0/mkbd65.c +++ b/keyboards/mkbd65/rev0/mkbd65.c @@ -2,3 +2,5 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "mkbd65.h" +#include "quantum.h" + diff --git a/keyboards/mkbd65/rev0/mkbd65.h b/keyboards/mkbd65/rev0/mkbd65.h index aae0d388fa..798a87ce44 100644 --- a/keyboards/mkbd65/rev0/mkbd65.h +++ b/keyboards/mkbd65/rev0/mkbd65.h @@ -4,8 +4,6 @@ #ifndef MKBD65_H #define MKBD65_H -#include "quantum.h" - /* LAYOUT_ansi * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ * │ │ │ │ │ │ │ │ │ │ │ │ 2.0U │ diff --git a/keyboards/mkbd65/rules.mk b/keyboards/mkbd65/rules.mk index cc4a04ee68..da0535c8f2 100644 --- a/keyboards/mkbd65/rules.mk +++ b/keyboards/mkbd65/rules.mk @@ -1,6 +1,35 @@ +# build options +#LAYOUTS = [] + +# AVR MCU Options +MCU = atmega32u4 +F_CPU = 16000000 +ARCH = AVR8 +F_USB = $(F_CPU) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT +BOOTLOADER = atmel-dfu + +# Feature Options +MAGIC_ENABLE = no +COMBO_ENABLE = no +AUDIO_ENABLE = no +KEY_OVERRIDE_ENABLE = no +LEADER_ENABLE = no +MIDI_ENABLE = no +UNICODE_ENABLE = no +BLUETOOTH_ENABLE = no +SPLIT_KEYBOARD = no +MUSIC_ENABLE = no +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = yes +AVR_USE_MINIMAL_PRINTF = yes +ENCODER_ENABLE = no + DEFAULT_FOLDER = rev1 # Enables Link Time Optimization (LTO) when compiling the keyboard. This makes the process take longer, but it can # significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable). LTO_ENABLE = yes -EXTRAKEY_ENABLE = yes # Audio control and System control +# Audio control and System control +EXTRAKEY_ENABLE = yes + From f91cd00de8ff373d616bcbc7e5935a3cc66333ad Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Sat, 15 Nov 2025 21:21:55 +0100 Subject: [PATCH 167/167] fix rev0 --- keyboards/mkbd65/rev0/info.json | 149 ------------------ keyboards/mkbd65/rev0/keyboard.json | 174 ++++++++++++++++++++++ keyboards/mkbd65/rev0/rules.mk | 2 - keyboards/mkbd65/rev1/info.json | 159 -------------------- keyboards/mkbd65/{ => rev1}/keyboard.json | 64 +++++--- keyboards/mkbd65/rules.mk | 16 -- 6 files changed, 216 insertions(+), 348 deletions(-) delete mode 100644 keyboards/mkbd65/rev0/info.json create mode 100644 keyboards/mkbd65/rev0/keyboard.json delete mode 100644 keyboards/mkbd65/rev1/info.json rename keyboards/mkbd65/{ => rev1}/keyboard.json (79%) diff --git a/keyboards/mkbd65/rev0/info.json b/keyboards/mkbd65/rev0/info.json deleted file mode 100644 index 5d2c940129..0000000000 --- a/keyboards/mkbd65/rev0/info.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "usb": { - "vid": "0x1209", - "pid": "0x4803", - "device_version": "0.0.0" - }, - "layouts": { - "LAYOUT_ansi": { - "layout": [ - {"x": 0, "y": 0, "label": "Esc", "matrix": [0, 0]}, - {"x": 1, "y": 0, "label": "1", "matrix": [0, 1]}, - {"x": 2, "y": 0, "label": "2", "matrix": [0, 2]}, - {"x": 3, "y": 0, "label": "3", "matrix": [0, 3]}, - {"x": 4, "y": 0, "label": "4", "matrix": [0, 4]}, - {"x": 5, "y": 0, "label": "5", "matrix": [0, 5]}, - {"x": 6, "y": 0, "label": "6", "matrix": [0, 6]}, - {"x": 7, "y": 0, "label": "7", "matrix": [0, 7]}, - {"x": 8, "y": 0, "label": "8", "matrix": [0, 8]}, - {"x": 9, "y": 0, "label": "9", "matrix": [0, 9]}, - {"x": 10, "y": 0, "label": "0", "matrix": [0, 10]}, - {"x": 11, "y": 0, "w": 2, "label": "Backspace", "matrix": [0, 11]}, - - {"x": 0, "y": 1, "label": "Q", "matrix": [1, 0]}, - {"x": 1, "y": 1, "label": "W", "matrix": [1, 1]}, - {"x": 2, "y": 1, "label": "E", "matrix": [1, 2]}, - {"x": 3, "y": 1, "label": "R", "matrix": [1, 3]}, - {"x": 4, "y": 1, "label": "T", "matrix": [1, 4]}, - {"x": 5, "y": 1, "label": "Y", "matrix": [1, 5]}, - {"x": 6, "y": 1, "label": "U", "matrix": [1, 6]}, - {"x": 7, "y": 1, "label": "I", "matrix": [1, 7]}, - {"x": 8, "y": 1, "label": "O", "matrix": [1, 8]}, - {"x": 9, "y": 1, "label": "P", "matrix": [1, 9]}, - {"x": 10, "y": 1, "label": "[", "matrix": [1, 10]}, - {"x": 11, "y": 1, "label": "]", "matrix": [1, 11]}, - {"x": 12, "y": 1, "label": "\\", "matrix": [1, 12]}, - - {"x": 0, "y": 2, "label": "A", "matrix": [2, 0]}, - {"x": 1, "y": 2, "label": "S", "matrix": [2, 1]}, - {"x": 2, "y": 2, "label": "D", "matrix": [2, 2]}, - {"x": 3, "y": 2, "label": "F", "matrix": [2, 3]}, - {"x": 4, "y": 2, "label": "G", "matrix": [2, 4]}, - {"x": 5, "y": 2, "label": "H", "matrix": [2, 5]}, - {"x": 6, "y": 2, "label": "J", "matrix": [2, 6]}, - {"x": 7, "y": 2, "label": "K", "matrix": [2, 7]}, - {"x": 8, "y": 2, "label": "L", "matrix": [2, 8]}, - {"x": 9, "y": 2, "label": ";", "matrix": [2, 9]}, - {"x": 10, "y": 2, "label": "'", "matrix": [2, 10]}, - {"x": 11, "y": 2, "w": 2, "label": "Enter", "matrix": [2, 11]}, - - {"x": 0, "y": 3, "label": "Z", "matrix": [3, 0]}, - {"x": 1, "y": 3, "label": "X", "matrix": [3, 1]}, - {"x": 2, "y": 3, "label": "C", "matrix": [3, 2]}, - {"x": 3, "y": 3, "label": "V", "matrix": [3, 3]}, - {"x": 4, "y": 3, "label": "B", "matrix": [3, 4]}, - {"x": 5, "y": 3, "label": "N", "matrix": [3, 5]}, - {"x": 6, "y": 3, "label": "M", "matrix": [3, 6]}, - {"x": 7, "y": 3, "label": ",", "matrix": [3, 7]}, - {"x": 8, "y": 3, "label": ".", "matrix": [3, 8]}, - {"x": 9, "y": 3, "label": "/", "matrix": [3, 9]}, - {"x": 10, "y": 3, "label": "Up", "matrix": [3, 10]}, - {"x": 11, "y": 3, "w": 2, "label": "RShift", "matrix": [3, 11]}, - - {"x": 0, "y": 4, "label": "LCtrl", "matrix": [4, 0]}, - {"x": 1, "y": 4, "label": "LShift", "matrix": [4, 1]}, - {"x": 2, "y": 4, "label": "Fn", "matrix": [4, 2]}, - {"x": 3, "y": 4, "label": "AltGr", "matrix": [4, 3]}, - {"x": 4, "y": 4, "w": 3, "label": "Space", "matrix": [4, 4]}, - {"x": 7, "y": 4, "label": "-", "matrix": [4, 7]}, - {"x": 8, "y": 4, "label": "=", "matrix": [4, 8]}, - {"x": 9, "y": 4, "label": "Left", "matrix": [4, 9]}, - {"x": 10, "y": 4, "label": "Down", "matrix": [4, 10]}, - {"x": 11, "y": 4, "label": "Right", "matrix": [4, 11]}, - {"x": 12, "y": 4, "label": "RCtrl", "matrix": [4, 12]} - ] - }, - "LAYOUT_iso": { - "layout": [ - {"x": 0, "y": 0, "label": "Esc", "matrix": [0, 0]}, - {"x": 1, "y": 0, "label": "1", "matrix": [0, 1]}, - {"x": 2, "y": 0, "label": "2", "matrix": [0, 2]}, - {"x": 3, "y": 0, "label": "3", "matrix": [0, 3]}, - {"x": 4, "y": 0, "label": "4", "matrix": [0, 4]}, - {"x": 5, "y": 0, "label": "5", "matrix": [0, 5]}, - {"x": 6, "y": 0, "label": "6", "matrix": [0, 6]}, - {"x": 7, "y": 0, "label": "7", "matrix": [0, 7]}, - {"x": 8, "y": 0, "label": "8", "matrix": [0, 8]}, - {"x": 9, "y": 0, "label": "9", "matrix": [0, 9]}, - {"x": 10, "y": 0, "label": "0", "matrix": [0, 10]}, - {"x": 11, "y": 0, "w": 2, "label": "Backspace", "matrix": [0, 11]}, - - {"x": 0, "y": 1, "label": "Q", "matrix": [1, 0]}, - {"x": 1, "y": 1, "label": "W", "matrix": [1, 1]}, - {"x": 2, "y": 1, "label": "E", "matrix": [1, 2]}, - {"x": 3, "y": 1, "label": "R", "matrix": [1, 3]}, - {"x": 4, "y": 1, "label": "T", "matrix": [1, 4]}, - {"x": 5, "y": 1, "label": "Y", "matrix": [1, 5]}, - {"x": 6, "y": 1, "label": "U", "matrix": [1, 6]}, - {"x": 7, "y": 1, "label": "I", "matrix": [1, 7]}, - {"x": 8, "y": 1, "label": "O", "matrix": [1, 8]}, - {"x": 9, "y": 1, "label": "P", "matrix": [1, 9]}, - {"x": 10, "y": 1, "label": "[", "matrix": [1, 10]}, - {"x": 11, "y": 1, "label": "]", "matrix": [1, 11]}, - - {"x": 0, "y": 2, "label": "A", "matrix": [2, 0]}, - {"x": 1, "y": 2, "label": "S", "matrix": [2, 1]}, - {"x": 2, "y": 2, "label": "D", "matrix": [2, 2]}, - {"x": 3, "y": 2, "label": "F", "matrix": [2, 3]}, - {"x": 4, "y": 2, "label": "G", "matrix": [2, 4]}, - {"x": 5, "y": 2, "label": "H", "matrix": [2, 5]}, - {"x": 6, "y": 2, "label": "J", "matrix": [2, 6]}, - {"x": 7, "y": 2, "label": "K", "matrix": [2, 7]}, - {"x": 8, "y": 2, "label": "L", "matrix": [2, 8]}, - {"x": 9, "y": 2, "label": ";", "matrix": [2, 9]}, - {"x": 10, "y": 2, "label": "'", "matrix": [2, 10]}, - {"x": 11, "y": 2, "label": "\\", "matrix": [2, 11]}, - {"x": 12, "y": 2, "h": 2, "label": "Enter", "matrix": [2, 12]}, - - {"x": 0, "y": 3, "label": "Z", "matrix": [3, 0]}, - {"x": 1, "y": 3, "label": "X", "matrix": [3, 1]}, - {"x": 2, "y": 3, "label": "C", "matrix": [3, 2]}, - {"x": 3, "y": 3, "label": "V", "matrix": [3, 3]}, - {"x": 4, "y": 3, "label": "B", "matrix": [3, 4]}, - {"x": 5, "y": 3, "label": "N", "matrix": [3, 5]}, - {"x": 6, "y": 3, "label": "M", "matrix": [3, 6]}, - {"x": 7, "y": 3, "label": ",", "matrix": [3, 7]}, - {"x": 8, "y": 3, "label": ".", "matrix": [3, 8]}, - {"x": 9, "y": 3, "label": "/", "matrix": [3, 9]}, - {"x": 10, "y": 3, "label": "Up", "matrix": [3, 10]}, - {"x": 11, "y": 3, "w": 2, "label": "RShift", "matrix": [3, 11]}, - - {"x": 0, "y": 4, "label": "LCtrl", "matrix": [4, 0]}, - {"x": 1, "y": 4, "label": "LShift", "matrix": [4, 1]}, - {"x": 2, "y": 4, "label": "Fn", "matrix": [4, 2]}, - {"x": 3, "y": 4, "label": "AltGr", "matrix": [4, 3]}, - {"x": 4, "y": 4, "w": 3, "label": "Space", "matrix": [4, 4]}, - {"x": 7, "y": 4, "label": "-", "matrix": [4, 7]}, - {"x": 8, "y": 4, "label": "=", "matrix": [4, 8]}, - {"x": 9, "y": 4, "label": "Left", "matrix": [4, 9]}, - {"x": 10, "y": 4, "label": "Down", "matrix": [4, 10]}, - {"x": 11, "y": 4, "label": "Right", "matrix": [4, 11]}, - {"x": 12, "y": 4, "label": "RCtrl", "matrix": [4, 12]} - ] - } - }, - "matrix_pins": { - "cols": ["D4", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"], - "rows": ["D5", "D3", "D2", "D1", "D0"] - } -} diff --git a/keyboards/mkbd65/rev0/keyboard.json b/keyboards/mkbd65/rev0/keyboard.json new file mode 100644 index 0000000000..35269aaa5c --- /dev/null +++ b/keyboards/mkbd65/rev0/keyboard.json @@ -0,0 +1,174 @@ +{ + "manufacturer": "XenGi", + "keyboard_name": "mkbd65", + "maintainer": "XenGi", + "bootloader": "atmel-dfu", + "bootloader_instructions": "Press the button marked RESET on the back of the PCB", + "bootmagic": { + "enabled": true, + "matrix": [0, 0] + }, + "build": { + "lto": true + }, + "debounce": 5, + "diode_direction": "ROW2COL", + "encoder": { + "enabled": false + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": false, + "rgblight": false + }, + "matrix_pins": { + "cols": ["D4", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"], + "rows": ["D5", "D3", "D2", "D1", "D0"] + }, + "processor": "atmega32u4", + "split": { + "enabled": false + }, + "tags": ["mobile", "65%"], + "url": "https://mkbd65.xengi.de", + "usb": { + "device_version": "0.0.1", + "pid": "0x4803", + "vid": "0x1209" + }, + "layouts": { + "LAYOUT_ansi": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "Backspace", "matrix": [0, 11], "x": 11, "y": 0, "w": 2}, + {"label": "Q", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "W", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "E", "matrix": [1, 2], "x": 1, "y": 2}, + {"label": "R", "matrix": [1, 3], "x": 1, "y": 3}, + {"label": "T", "matrix": [1, 4], "x": 1, "y": 4}, + {"label": "Y", "matrix": [1, 5], "x": 1, "y": 5}, + {"label": "U", "matrix": [1, 6], "x": 1, "y": 6}, + {"label": "I", "matrix": [1, 7], "x": 1, "y": 7}, + {"label": "O", "matrix": [1, 8], "x": 1, "y": 8}, + {"label": "P", "matrix": [1, 9], "x": 1, "y": 9}, + {"label": "[", "matrix": [1, 10], "x": 1, "y": 10}, + {"label": "]", "matrix": [1, 11], "x": 1, "y": 11}, + {"label": "\\", "matrix": [1, 12], "x": 1, "y": 12}, + {"label": "A", "matrix": [2, 0], "x": 2, "y": 0}, + {"label": "S", "matrix": [2, 1], "x": 2, "y": 1}, + {"label": "D", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "F", "matrix": [2, 3], "x": 2, "y": 3}, + {"label": "G", "matrix": [2, 4], "x": 2, "y": 4}, + {"label": "H", "matrix": [2, 5], "x": 2, "y": 5}, + {"label": "J", "matrix": [2, 6], "x": 2, "y": 6}, + {"label": "K", "matrix": [2, 7], "x": 2, "y": 7}, + {"label": "L", "matrix": [2, 8], "x": 2, "y": 8}, + {"label": ";", "matrix": [2, 9], "x": 2, "y": 9}, + {"label": "'", "matrix": [2, 10], "x": 2, "y": 10}, + {"label": "Enter", "matrix": [2, 11], "x": 2, "y": 11, "w": 2}, + {"label": "Z", "matrix": [3, 0], "x": 3, "y": 0}, + {"label": "X", "matrix": [3, 1], "x": 3, "y": 1}, + {"label": "C", "matrix": [3, 2], "x": 3, "y": 2}, + {"label": "V", "matrix": [3, 3], "x": 3, "y": 3}, + {"label": "B", "matrix": [3, 4], "x": 3, "y": 4}, + {"label": "N", "matrix": [3, 5], "x": 3, "y": 5}, + {"label": "M", "matrix": [3, 6], "x": 3, "y": 6}, + {"label": ",", "matrix": [3, 7], "x": 3, "y": 7}, + {"label": ".", "matrix": [3, 8], "x": 3, "y": 8}, + {"label": "/", "matrix": [3, 9], "x": 3, "y": 9}, + {"label": "Up", "matrix": [3, 10], "x": 3, "y": 10}, + {"label": "ShiftR", "matrix": [3, 11], "x": 3, "y": 11, "w": 2}, + {"label": "CtrlL", "matrix": [4, 0], "x": 4, "y": 0}, + {"label": "Fn", "matrix": [4, 1], "x": 4, "y": 1}, + {"label": "ShiftL", "matrix": [4, 2], "x": 4, "y": 2}, + {"label": "Alt", "matrix": [4, 3], "x": 4, "y": 3}, + {"label": "Space", "matrix": [4, 4], "x": 4, "y": 4, "w": 3}, + {"label": "-", "matrix": [4, 7], "x": 4, "y": 7}, + {"label": "=", "matrix": [4, 8], "x": 4, "y": 8}, + {"label": "Left", "matrix": [4, 9], "x": 4, "y": 9}, + {"label": "Down", "matrix": [4, 10], "x": 4, "y": 10}, + {"label": "Right", "matrix": [4, 11], "x": 4, "y": 11}, + {"label": "CtrlR", "matrix": [4, 12], "x": 4, "y": 12} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "Backspace", "matrix": [0, 11], "x": 11, "y": 0, "w": 2}, + {"label": "Q", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "W", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "E", "matrix": [1, 2], "x": 1, "y": 2}, + {"label": "R", "matrix": [1, 3], "x": 1, "y": 3}, + {"label": "T", "matrix": [1, 4], "x": 1, "y": 4}, + {"label": "Y", "matrix": [1, 5], "x": 1, "y": 5}, + {"label": "U", "matrix": [1, 6], "x": 1, "y": 6}, + {"label": "I", "matrix": [1, 7], "x": 1, "y": 7}, + {"label": "O", "matrix": [1, 8], "x": 1, "y": 8}, + {"label": "P", "matrix": [1, 9], "x": 1, "y": 9}, + {"label": "[", "matrix": [1, 10], "x": 1, "y": 10}, + {"label": "]", "matrix": [1, 11], "x": 1, "y": 11}, + {"label": "A", "matrix": [2, 0], "x": 2, "y": 0}, + {"label": "S", "matrix": [2, 1], "x": 2, "y": 1}, + {"label": "D", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "F", "matrix": [2, 3], "x": 2, "y": 3}, + {"label": "G", "matrix": [2, 4], "x": 2, "y": 4}, + {"label": "H", "matrix": [2, 5], "x": 2, "y": 5}, + {"label": "J", "matrix": [2, 6], "x": 2, "y": 6}, + {"label": "K", "matrix": [2, 7], "x": 2, "y": 7}, + {"label": "L", "matrix": [2, 8], "x": 2, "y": 8}, + {"label": ";", "matrix": [2, 9], "x": 2, "y": 9}, + {"label": "'", "matrix": [2, 10], "x": 2, "y": 10}, + {"label": "\\", "matrix": [2, 11], "x": 2, "y": 11}, + {"label": "Enter", "matrix": [1, 12], "x": 1, "y": 12, "h": 2}, + {"label": "Z", "matrix": [3, 0], "x": 3, "y": 0}, + {"label": "X", "matrix": [3, 1], "x": 3, "y": 1}, + {"label": "C", "matrix": [3, 2], "x": 3, "y": 2}, + {"label": "V", "matrix": [3, 3], "x": 3, "y": 3}, + {"label": "B", "matrix": [3, 4], "x": 3, "y": 4}, + {"label": "N", "matrix": [3, 5], "x": 3, "y": 5}, + {"label": "M", "matrix": [3, 6], "x": 3, "y": 6}, + {"label": ",", "matrix": [3, 7], "x": 3, "y": 7}, + {"label": ".", "matrix": [3, 8], "x": 3, "y": 8}, + {"label": "/", "matrix": [3, 9], "x": 3, "y": 9}, + {"label": "Up", "matrix": [3, 10], "x": 3, "y": 10}, + {"label": "ShiftR", "matrix": [3, 11], "x": 3, "y": 11, "w": 2}, + {"label": "CtrlL", "matrix": [4, 0], "x": 4, "y": 0}, + {"label": "Fn", "matrix": [4, 1], "x": 4, "y": 1}, + {"label": "ShiftL", "matrix": [4, 2], "x": 4, "y": 2}, + {"label": "Alt", "matrix": [4, 3], "x": 4, "y": 3}, + {"label": "Space", "matrix": [4, 4], "x": 4, "y": 4, "w": 3}, + {"label": "-", "matrix": [4, 7], "x": 4, "y": 7}, + {"label": "=", "matrix": [4, 8], "x": 4, "y": 8}, + {"label": "Left", "matrix": [4, 9], "x": 4, "y": 9}, + {"label": "Down", "matrix": [4, 10], "x": 4, "y": 10}, + {"label": "Right", "matrix": [4, 11], "x": 4, "y": 11}, + {"label": "CtrlR", "matrix": [4, 12], "x": 4, "y": 12} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/mkbd65/rev0/rules.mk b/keyboards/mkbd65/rev0/rules.mk index 2d23977af0..de2da8afe1 100644 --- a/keyboards/mkbd65/rev0/rules.mk +++ b/keyboards/mkbd65/rev0/rules.mk @@ -1,6 +1,4 @@ -MCU = atmega32u4 F_CPU = 16000000 ARCH = AVR8 F_USB = $(F_CPU) OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT -BOOTLOADER = atmel-dfu diff --git a/keyboards/mkbd65/rev1/info.json b/keyboards/mkbd65/rev1/info.json deleted file mode 100644 index 42ed48f137..0000000000 --- a/keyboards/mkbd65/rev1/info.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "usb": { - "vid": "0x1209", - "pid": "0x4803", - "device_version": "1.0.0" - }, - "layouts": { - "LAYOUT_en_us_intl": { - "layout": [ - {"x": 0, "y": 0, "label": "Esc", "matrix": [0, 0]}, - {"x": 1, "y": 0, "label": "1", "matrix": [0, 1]}, - {"x": 2, "y": 0, "label": "2", "matrix": [0, 2]}, - {"x": 3, "y": 0, "label": "3", "matrix": [0, 3]}, - {"x": 4, "y": 0, "label": "4", "matrix": [0, 4]}, - {"x": 5, "y": 0, "label": "5", "matrix": [0, 5]}, - {"x": 6, "y": 0, "label": "6", "matrix": [0, 6]}, - {"x": 7, "y": 0, "label": "7", "matrix": [0, 7]}, - {"x": 8, "y": 0, "label": "8", "matrix": [0, 8]}, - {"x": 9, "y": 0, "label": "9", "matrix": [0, 9]}, - {"x": 10, "y": 0, "label": "0", "matrix": [0, 10]}, - {"x": 11, "y": 0, "label": "Backspace", "matrix": [0, 11]}, - {"x": 12, "y": 0, "label": "Backspace", "matrix": [0, 12]}, - - {"x": 0, "y": 1, "label": "Q", "matrix": [1, 0]}, - {"x": 1, "y": 1, "label": "W", "matrix": [1, 1]}, - {"x": 2, "y": 1, "label": "E", "matrix": [1, 2]}, - {"x": 3, "y": 1, "label": "R", "matrix": [1, 3]}, - {"x": 4, "y": 1, "label": "T", "matrix": [1, 4]}, - {"x": 5, "y": 1, "label": "Y", "matrix": [1, 5]}, - {"x": 6, "y": 1, "label": "U", "matrix": [1, 6]}, - {"x": 7, "y": 1, "label": "I", "matrix": [1, 7]}, - {"x": 8, "y": 1, "label": "O", "matrix": [1, 8]}, - {"x": 9, "y": 1, "label": "P", "matrix": [1, 9]}, - {"x": 10, "y": 1, "label": "[", "matrix": [1, 10]}, - {"x": 11, "y": 1, "label": "]", "matrix": [1, 11]}, - {"x": 12, "y": 1, "label": "\\", "matrix": [1, 12]}, - - {"x": 0, "y": 2, "label": "A", "matrix": [2, 0]}, - {"x": 1, "y": 2, "label": "S", "matrix": [2, 1]}, - {"x": 2, "y": 2, "label": "D", "matrix": [2, 2]}, - {"x": 3, "y": 2, "label": "F", "matrix": [2, 3]}, - {"x": 4, "y": 2, "label": "G", "matrix": [2, 4]}, - {"x": 5, "y": 2, "label": "H", "matrix": [2, 5]}, - {"x": 6, "y": 2, "label": "J", "matrix": [2, 6]}, - {"x": 7, "y": 2, "label": "K", "matrix": [2, 7]}, - {"x": 8, "y": 2, "label": "L", "matrix": [2, 8]}, - {"x": 9, "y": 2, "label": ";", "matrix": [2, 9]}, - {"x": 10, "y": 2, "label": "'", "matrix": [2, 10]}, - {"x": 11, "y": 2, "label": "Enter", "matrix": [2, 11]}, - {"x": 12, "y": 2, "label": "Enter", "matrix": [2, 12]}, - - {"x": 0, "y": 3, "label": "Z", "matrix": [3, 0]}, - {"x": 1, "y": 3, "label": "X", "matrix": [3, 1]}, - {"x": 2, "y": 3, "label": "C", "matrix": [3, 2]}, - {"x": 3, "y": 3, "label": "V", "matrix": [3, 3]}, - {"x": 4, "y": 3, "label": "B", "matrix": [3, 4]}, - {"x": 5, "y": 3, "label": "N", "matrix": [3, 5]}, - {"x": 6, "y": 3, "label": "M", "matrix": [3, 6]}, - {"x": 7, "y": 3, "label": ",", "matrix": [3, 7]}, - {"x": 8, "y": 3, "label": ".", "matrix": [3, 8]}, - {"x": 9, "y": 3, "label": "/", "matrix": [3, 9]}, - {"x": 10, "y": 3, "label": "Up", "matrix": [3, 10]}, - {"x": 11, "y": 3, "label": "RShift", "matrix": [3, 11]}, - {"x": 12, "y": 3, "label": "RShift", "matrix": [3, 12]}, - - {"x": 0, "y": 4, "label": "LCtrl", "matrix": [4, 0]}, - {"x": 1, "y": 4, "label": "LShift", "matrix": [4, 1]}, - {"x": 2, "y": 4, "label": "Fn", "matrix": [4, 2]}, - {"x": 3, "y": 4, "label": "AltGr", "matrix": [4, 3]}, - {"x": 4, "y": 4, "label": "Space", "matrix": [4, 4]}, - {"x": 5, "y": 4, "label": "Space", "matrix": [4, 5]}, - {"x": 6, "y": 4, "label": "Space", "matrix": [4, 6]}, - {"x": 7, "y": 4, "label": "-", "matrix": [4, 7]}, - {"x": 8, "y": 4, "label": "=", "matrix": [4, 8]}, - {"x": 9, "y": 4, "label": "Left", "matrix": [4, 9]}, - {"x": 10, "y": 4, "label": "Down", "matrix": [4, 10]}, - {"x": 11, "y": 4, "label": "Right", "matrix": [4, 11]}, - {"x": 12, "y": 4, "label": "RCtrl", "matrix": [4, 12]} - ] - }, - "LAYOUT_de": { - "layout": [ - {"x": 0, "y": 0, "label": "Esc", "matrix": [0, 0]}, - {"x": 1, "y": 0, "label": "1", "matrix": [0, 1]}, - {"x": 2, "y": 0, "label": "2", "matrix": [0, 2]}, - {"x": 3, "y": 0, "label": "3", "matrix": [0, 3]}, - {"x": 4, "y": 0, "label": "4", "matrix": [0, 4]}, - {"x": 5, "y": 0, "label": "5", "matrix": [0, 5]}, - {"x": 6, "y": 0, "label": "6", "matrix": [0, 6]}, - {"x": 7, "y": 0, "label": "7", "matrix": [0, 7]}, - {"x": 8, "y": 0, "label": "8", "matrix": [0, 8]}, - {"x": 9, "y": 0, "label": "9", "matrix": [0, 9]}, - {"x": 10, "y": 0, "label": "0", "matrix": [0, 10]}, - {"x": 11, "y": 0, "label": "Backspace", "matrix": [0, 11]}, - {"x": 12, "y": 0, "label": "Backspace", "matrix": [0, 12]}, - - {"x": 0, "y": 1, "label": "Q", "matrix": [1, 0]}, - {"x": 1, "y": 1, "label": "W", "matrix": [1, 1]}, - {"x": 2, "y": 1, "label": "E", "matrix": [1, 2]}, - {"x": 3, "y": 1, "label": "R", "matrix": [1, 3]}, - {"x": 4, "y": 1, "label": "T", "matrix": [1, 4]}, - {"x": 5, "y": 1, "label": "Z", "matrix": [1, 5]}, - {"x": 6, "y": 1, "label": "U", "matrix": [1, 6]}, - {"x": 7, "y": 1, "label": "I", "matrix": [1, 7]}, - {"x": 8, "y": 1, "label": "O", "matrix": [1, 8]}, - {"x": 9, "y": 1, "label": "P", "matrix": [1, 9]}, - {"x": 10, "y": 1, "label": "Ü", "matrix": [1, 10]}, - {"x": 11, "y": 1, "label": "+", "matrix": [1, 11]}, - {"x": 12, "y": 1, "label": "Enter", "matrix": [1, 12]}, - - {"x": 0, "y": 2, "label": "A", "matrix": [2, 0]}, - {"x": 1, "y": 2, "label": "S", "matrix": [2, 1]}, - {"x": 2, "y": 2, "label": "D", "matrix": [2, 2]}, - {"x": 3, "y": 2, "label": "F", "matrix": [2, 3]}, - {"x": 4, "y": 2, "label": "G", "matrix": [2, 4]}, - {"x": 5, "y": 2, "label": "H", "matrix": [2, 5]}, - {"x": 6, "y": 2, "label": "J", "matrix": [2, 6]}, - {"x": 7, "y": 2, "label": "K", "matrix": [2, 7]}, - {"x": 8, "y": 2, "label": "L", "matrix": [2, 8]}, - {"x": 9, "y": 2, "label": "Ö", "matrix": [2, 9]}, - {"x": 10, "y": 2, "label": "Ä", "matrix": [2, 10]}, - {"x": 11, "y": 2, "label": "#", "matrix": [2, 11]}, - {"x": 12, "y": 2, "label": "Enter", "matrix": [2, 12]}, - - {"x": 0, "y": 3, "label": "Y", "matrix": [3, 0]}, - {"x": 1, "y": 3, "label": "X", "matrix": [3, 1]}, - {"x": 2, "y": 3, "label": "C", "matrix": [3, 2]}, - {"x": 3, "y": 3, "label": "V", "matrix": [3, 3]}, - {"x": 4, "y": 3, "label": "B", "matrix": [3, 4]}, - {"x": 5, "y": 3, "label": "N", "matrix": [3, 5]}, - {"x": 6, "y": 3, "label": "M", "matrix": [3, 6]}, - {"x": 7, "y": 3, "label": ",", "matrix": [3, 7]}, - {"x": 8, "y": 3, "label": ".", "matrix": [3, 8]}, - {"x": 9, "y": 3, "label": "-", "matrix": [3, 9]}, - {"x": 10, "y": 3, "label": "Up", "matrix": [3, 10]}, - {"x": 11, "y": 3, "label": "<", "matrix": [3, 11]}, - {"x": 12, "y": 3, "label": "RShift", "matrix": [3, 12]}, - - {"x": 0, "y": 4, "label": "LCtrl", "matrix": [4, 0]}, - {"x": 1, "y": 4, "label": "LShift", "matrix": [4, 1]}, - {"x": 2, "y": 4, "label": "Fn", "matrix": [4, 2]}, - {"x": 3, "y": 4, "label": "AltGr", "matrix": [4, 3]}, - {"x": 4, "y": 4, "label": "Space", "matrix": [4, 4]}, - {"x": 5, "y": 4, "label": "Space", "matrix": [4, 5]}, - {"x": 6, "y": 4, "label": "Space", "matrix": [4, 6]}, - {"x": 7, "y": 4, "label": "ß", "matrix": [4, 7]}, - {"x": 8, "y": 4, "label": "´", "matrix": [4, 8]}, - {"x": 9, "y": 4, "label": "Left", "matrix": [4, 9]}, - {"x": 10, "y": 4, "label": "Down", "matrix": [4, 10]}, - {"x": 11, "y": 4, "label": "Right", "matrix": [4, 11]}, - {"x": 12, "y": 4, "label": "RCtrl", "matrix": [4, 12]} - ] - } - }, - "matrix_pins": { - "cols": ["A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "B2", "B10", "B11"], - "rows": ["B12", "B13", "B14", "B15", "A8"] - } -} diff --git a/keyboards/mkbd65/keyboard.json b/keyboards/mkbd65/rev1/keyboard.json similarity index 79% rename from keyboards/mkbd65/keyboard.json rename to keyboards/mkbd65/rev1/keyboard.json index 3d1fe2ec2a..2329e8bc52 100644 --- a/keyboards/mkbd65/keyboard.json +++ b/keyboards/mkbd65/rev1/keyboard.json @@ -20,15 +20,15 @@ "matrix": [0, 0] }, "matrix_pins": { - "cols": ["D4", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"], - "rows": ["D5", "D3", "D2", "D1", "D0"] + "cols": ["A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "B2", "B10", "B11"], + "rows": ["B12", "B13", "B14", "B15", "A8"] }, "processor": "atmega32u4", "url": "https://mkbd65.xengi.de", "bootloader_instructions": "Press the button marked RESET on the back of the PCB", "tags": ["mobile", "65%"], "usb": { - "device_version": "0.0.1", + "device_version": "1.0.0", "pid": "0x4803", "vid": "0x1209" }, @@ -36,8 +36,8 @@ "lto": true }, "layouts": { - "LAYOUT": { - "layout_ansi": [ + "LAYOUT_ansi": { + "layout": [ { "matrix": [0, 0], "x": 0, "y": 0, "label": "Esc" }, { "matrix": [0, 1], "x": 1, "y": 0, "label": "1" }, { "matrix": [0, 2], "x": 2, "y": 0, "label": "2" }, @@ -49,7 +49,9 @@ { "matrix": [0, 8], "x": 8, "y": 0, "label": "8" }, { "matrix": [0, 9], "x": 9, "y": 0, "label": "9" }, { "matrix": [0, 10], "x": 10, "y": 0, "label": "0" }, - { "matrix": [0, 11], "x": 11, "y": 0, "w": 2, "label": "Backspace" }, + { "matrix": [0, 11], "x": 11, "y": 0, "label": "Backspace" }, + { "matrix": [0, 12], "x": 12, "y": 0, "label": "Backspace" }, + { "matrix": [1, 0], "x": 1, "y": 0, "label": "Q" }, { "matrix": [1, 1], "x": 1, "y": 1, "label": "W" }, { "matrix": [1, 2], "x": 1, "y": 2, "label": "E" }, @@ -62,7 +64,8 @@ { "matrix": [1, 9], "x": 1, "y": 9, "label": "P" }, { "matrix": [1, 10], "x": 1, "y": 10, "label": "[" }, { "matrix": [1, 11], "x": 1, "y": 11, "label": "]" }, - { "matrix": [1, 11], "x": 1, "y": 12, "label": "\\" }, + { "matrix": [1, 12], "x": 1, "y": 12, "label": "\\" }, + { "matrix": [2, 0], "x": 2, "y": 0, "label": "A" }, { "matrix": [2, 1], "x": 2, "y": 1, "label": "S" }, { "matrix": [2, 2], "x": 2, "y": 2, "label": "D" }, @@ -74,7 +77,9 @@ { "matrix": [2, 8], "x": 2, "y": 8, "label": "L" }, { "matrix": [2, 9], "x": 2, "y": 9, "label": ";" }, { "matrix": [2, 10], "x": 2, "y": 10, "label": "'" }, - { "matrix": [2, 11], "x": 2, "y": 11, "w": 2, "label": "Enter" }, + { "matrix": [2, 11], "x": 2, "y": 11, "label": "Enter" }, + { "matrix": [2, 12], "x": 2, "y": 12, "label": "Enter" }, + { "matrix": [3, 0], "x": 3, "y": 0, "label": "Z" }, { "matrix": [3, 1], "x": 3, "y": 1, "label": "X" }, { "matrix": [3, 2], "x": 3, "y": 2, "label": "C" }, @@ -86,20 +91,26 @@ { "matrix": [3, 8], "x": 3, "y": 8, "label": "." }, { "matrix": [3, 9], "x": 3, "y": 9, "label": "/" }, { "matrix": [3, 10], "x": 3, "y": 10, "label": "Up" }, - { "matrix": [3, 11], "x": 3, "y": 11, "w": 2, "label": "ShiftR" }, - { "matrix": [4, 0], "x": 4, "y": 0, "label": "CtrlL" }, + { "matrix": [3, 11], "x": 3, "y": 11, "w": 2, "label": "RShift" }, + { "matrix": [3, 12], "x": 3, "y": 11, "w": 2, "label": "RShift" }, + + { "matrix": [4, 0], "x": 4, "y": 0, "label": "LCtrl" }, { "matrix": [4, 1], "x": 4, "y": 1, "label": "Fn" }, - { "matrix": [4, 2], "x": 4, "y": 2, "label": "ShiftL" }, + { "matrix": [4, 2], "x": 4, "y": 2, "label": "LShift" }, { "matrix": [4, 3], "x": 4, "y": 3, "label": "Alt" }, - { "matrix": [4, 4], "x": 4, "y": 4, "w": 3, "label": "Space" }, + { "matrix": [4, 4], "x": 4, "y": 4, "label": "Space" }, + { "matrix": [4, 5], "x": 4, "y": 5, "label": "Space" }, + { "matrix": [4, 6], "x": 4, "y": 6, "label": "Space" }, { "matrix": [4, 7], "x": 4, "y": 7, "label": "-" }, { "matrix": [4, 8], "x": 4, "y": 8, "label": "=" }, { "matrix": [4, 9], "x": 4, "y": 9, "label": "Left" }, { "matrix": [4, 10], "x": 4, "y": 10, "label": "Down" }, { "matrix": [4, 11], "x": 4, "y": 11, "label": "Right" }, - { "matrix": [4, 12], "x": 4, "y": 12, "label": "CtrlR" } - ], - "layout_iso": [ + { "matrix": [4, 12], "x": 4, "y": 12, "label": "RCtrl" } + ] + }, + "LAYOUT_iso": { + "layout": [ { "matrix": [0, 0], "x": 0, "y": 0, "label": "Esc" }, { "matrix": [0, 1], "x": 1, "y": 0, "label": "1" }, { "matrix": [0, 2], "x": 2, "y": 0, "label": "2" }, @@ -111,7 +122,9 @@ { "matrix": [0, 8], "x": 8, "y": 0, "label": "8" }, { "matrix": [0, 9], "x": 9, "y": 0, "label": "9" }, { "matrix": [0, 10], "x": 10, "y": 0, "label": "0" }, - { "matrix": [0, 11], "x": 11, "y": 0, "w": 2, "label": "Backspace" }, + { "matrix": [0, 11], "x": 11, "y": 0, "label": "Backspace" }, + { "matrix": [0, 12], "x": 12, "y": 0, "label": "Backspace" }, + { "matrix": [1, 0], "x": 1, "y": 0, "label": "Q" }, { "matrix": [1, 1], "x": 1, "y": 1, "label": "W" }, { "matrix": [1, 2], "x": 1, "y": 2, "label": "E" }, @@ -124,6 +137,8 @@ { "matrix": [1, 9], "x": 1, "y": 9, "label": "P" }, { "matrix": [1, 10], "x": 1, "y": 10, "label": "[" }, { "matrix": [1, 11], "x": 1, "y": 11, "label": "]" }, + { "matrix": [1, 12], "x": 1, "y": 12, "label": "Enter" }, + { "matrix": [2, 0], "x": 2, "y": 0, "label": "A" }, { "matrix": [2, 1], "x": 2, "y": 1, "label": "S" }, { "matrix": [2, 2], "x": 2, "y": 2, "label": "D" }, @@ -136,7 +151,8 @@ { "matrix": [2, 9], "x": 2, "y": 9, "label": ";" }, { "matrix": [2, 10], "x": 2, "y": 10, "label": "'" }, { "matrix": [2, 11], "x": 2, "y": 11, "label": "\\" }, - { "matrix": [1, 12], "x": 1, "y": 12, "h": 2, "label": "Enter" }, + { "matrix": [2, 12], "x": 2, "y": 12, "label": "Enter" }, + { "matrix": [3, 0], "x": 3, "y": 0, "label": "Z" }, { "matrix": [3, 1], "x": 3, "y": 1, "label": "X" }, { "matrix": [3, 2], "x": 3, "y": 2, "label": "C" }, @@ -148,18 +164,22 @@ { "matrix": [3, 8], "x": 3, "y": 8, "label": "." }, { "matrix": [3, 9], "x": 3, "y": 9, "label": "/" }, { "matrix": [3, 10], "x": 3, "y": 10, "label": "Up" }, - { "matrix": [3, 11], "x": 3, "y": 11, "w": 2, "label": "ShiftR" }, - { "matrix": [4, 0], "x": 4, "y": 0, "label": "CtrlL" }, + { "matrix": [3, 11], "x": 3, "y": 11, "label": "RShift" }, + { "matrix": [3, 12], "x": 3, "y": 12, "label": "RShift" }, + + { "matrix": [4, 0], "x": 4, "y": 0, "label": "LCtrl" }, { "matrix": [4, 1], "x": 4, "y": 1, "label": "Fn" }, - { "matrix": [4, 2], "x": 4, "y": 2, "label": "ShiftL" }, + { "matrix": [4, 2], "x": 4, "y": 2, "label": "LShift" }, { "matrix": [4, 3], "x": 4, "y": 3, "label": "Alt" }, - { "matrix": [4, 4], "x": 4, "y": 4, "w": 3, "label": "Space" }, + { "matrix": [4, 4], "x": 4, "y": 4, "label": "Space" }, + { "matrix": [4, 5], "x": 4, "y": 5, "label": "Space" }, + { "matrix": [4, 6], "x": 4, "y": 6, "label": "Space" }, { "matrix": [4, 7], "x": 4, "y": 7, "label": "-" }, { "matrix": [4, 8], "x": 4, "y": 8, "label": "=" }, { "matrix": [4, 9], "x": 4, "y": 9, "label": "Left" }, { "matrix": [4, 10], "x": 4, "y": 10, "label": "Down" }, { "matrix": [4, 11], "x": 4, "y": 11, "label": "Right" }, - { "matrix": [4, 12], "x": 4, "y": 12, "label": "CtrlR" } + { "matrix": [4, 12], "x": 4, "y": 12, "label": "RCtrl" } ] } } diff --git a/keyboards/mkbd65/rules.mk b/keyboards/mkbd65/rules.mk index da0535c8f2..3287da9fbd 100644 --- a/keyboards/mkbd65/rules.mk +++ b/keyboards/mkbd65/rules.mk @@ -1,35 +1,19 @@ -# build options -#LAYOUTS = [] - # AVR MCU Options -MCU = atmega32u4 F_CPU = 16000000 ARCH = AVR8 F_USB = $(F_CPU) OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT -BOOTLOADER = atmel-dfu # Feature Options MAGIC_ENABLE = no -COMBO_ENABLE = no AUDIO_ENABLE = no KEY_OVERRIDE_ENABLE = no LEADER_ENABLE = no MIDI_ENABLE = no UNICODE_ENABLE = no BLUETOOTH_ENABLE = no -SPLIT_KEYBOARD = no MUSIC_ENABLE = no SPACE_CADET_ENABLE = no GRAVE_ESC_ENABLE = yes AVR_USE_MINIMAL_PRINTF = yes -ENCODER_ENABLE = no - -DEFAULT_FOLDER = rev1 -# Enables Link Time Optimization (LTO) when compiling the keyboard. This makes the process take longer, but it can -# significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable). -LTO_ENABLE = yes - -# Audio control and System control -EXTRAKEY_ENABLE = yes