diff --git a/docs/understanding_qmk.md b/docs/understanding_qmk.md index ab7834e24ab..7b436a45bea 100644 --- a/docs/understanding_qmk.md +++ b/docs/understanding_qmk.md @@ -43,7 +43,7 @@ While there are different strategies for doing the actual matrix detection, they } ``` -That datastructure is a direct representation of the matrix for a 4 row by 5 column numpad. When a key is pressed that key's position within the matrix will be returned as `1` instead of `0`. +That datastructure is a direct representation of the matrix for a 5 row by 4 column numpad. When a key is pressed that key's position within the matrix will be returned as `1` instead of `0`. Matrix Scanning runs many times per second. The exact rate varies but typically it runs at least 10 times per second to avoid perceptible lag. diff --git a/keyboards/annepro2/config_led.h b/keyboards/annepro2/config_led.h index e6d4dc35fba..12ccd995ad8 100644 --- a/keyboards/annepro2/config_led.h +++ b/keyboards/annepro2/config_led.h @@ -20,8 +20,8 @@ #define RGB_MATRIX_LED_COUNT 61 -/* Limit animations to 62.5 FPS to avoid tearing. (1/.016 = 62.5 FPS). */ -#define RGB_MATRIX_LED_FLUSH_LIMIT 16 +/* Limit animations to 25 FPS to avoid tearing. (1/.040 = 25 FPS). */ +#define RGB_MATRIX_LED_FLUSH_LIMIT 40 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/black_hellebore/config.h b/keyboards/black_hellebore/config.h new file mode 100644 index 00000000000..398055460fd --- /dev/null +++ b/keyboards/black_hellebore/config.h @@ -0,0 +1,84 @@ +/* Copyright 2023 MATTMCCA (@MATTMCCA) + * SPDX-License-Identifier: GPL-2.0-only + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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" + +#ifdef RGB_MATRIX_ENABLE + + #define WS2812_PWM_DRIVER PWMD1 + #define WS2812_PWM_CHANNEL 1 + #define WS2812_PWM_PAL_MODE 1 //TIM1_CH1N (AF1) + #define WS2812_PWM_COMPLEMENTARY_OUTPUT + #define WS2812_DMA_STREAM STM32_DMA1_STREAM6 + #define WS2812_DMA_CHANNEL 7 //7 works, CxS[3:0] 0111 = TIM1_UP on Channel 6? (RM0394.pdf pg.298) + + #define RGB_DI_PIN A7 // The pin connected to the data pin of the LEDs + #define RGB_MATRIX_LED_COUNT 61 // The number of LEDs connected + + #define RGB_MATRIX_KEYPRESSES // reacts to keypresses + #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) + #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects + + #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color + #define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue + #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes + #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes + #define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation + #define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right + #define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right + #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation + #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness + #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation + #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness + #define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient + #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right + #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom + #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in + #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in + #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient Chevron shaped scrolling left to right + #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard + #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard + #define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard + #define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard + #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard + #define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue + #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation + #define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back + #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left + #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right + + /* RGB_MATRIX_FRAMEBUFFER_EFFECTS) */ + #define ENABLE_RGB_MATRIX_TYPING_HEATMAP + #define ENABLE_RGB_MATRIX_DIGITAL_RAIN + + /* RGB_MATRIX_KEYPRESSES) | defined(RGB_MATRIX_KEYRELEASES) */ + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out + #define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out + #define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out + #define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out + #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out + +#endif + diff --git a/keyboards/black_hellebore/halconf.h b/keyboards/black_hellebore/halconf.h new file mode 100644 index 00000000000..d1b259e342a --- /dev/null +++ b/keyboards/black_hellebore/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 MATTMCCA (@MATTMCCA) + * SPDX-License-Identifier: GPL-2.0-only + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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/black_hellebore/info.json b/keyboards/black_hellebore/info.json new file mode 100644 index 00000000000..1e02544157e --- /dev/null +++ b/keyboards/black_hellebore/info.json @@ -0,0 +1,160 @@ +{ + "manufacturer": "MATTMCCA", + "keyboard_name": "black_hellebore", + "maintainer": "MATTMCCA", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["B15", "B14", "B13", "A9", "A2", "B1", "B9", "B7", "B5", "B4", "B0", "A8", "B6", "B3"], + "rows": ["A15", "B8", "A4", "A3", "B2"] + }, + "processor": "STM32L412", + "url": "https://github.com/MATTMCCA/The-Black-Hellebore", + "usb": { + "device_version": "1.0.0", + "pid": "0x4467", + "vid": "0x3141" + }, + "rgb_matrix": { + "layout": [ + { "flags": 4, "matrix": [0, 0] , "x": 7 , "y": 5 } , + { "flags": 4, "matrix": [0, 1] , "x": 22 , "y": 5 } , + { "flags": 4, "matrix": [0, 2] , "x": 37 , "y": 5 } , + { "flags": 4, "matrix": [0, 3] , "x": 52 , "y": 5 } , + { "flags": 4, "matrix": [0, 4] , "x": 67 , "y": 5 } , + { "flags": 4, "matrix": [0, 5] , "x": 82 , "y": 5 } , + { "flags": 4, "matrix": [0, 6] , "x": 97 , "y": 5 } , + { "flags": 4, "matrix": [0, 7] , "x": 112, "y": 5 } , + { "flags": 4, "matrix": [0, 8] , "x": 127, "y": 5 } , + { "flags": 4, "matrix": [0, 9] , "x": 142, "y": 5 } , + { "flags": 4, "matrix": [0, 10], "x": 157, "y": 5 } , + { "flags": 4, "matrix": [0, 11], "x": 172, "y": 5 } , + { "flags": 4, "matrix": [0, 12], "x": 187, "y": 5 } , + { "flags": 4, "matrix": [0, 13], "x": 209, "y": 5 } , + { "flags": 4, "matrix": [1, 13], "x": 213, "y": 17 }, + { "flags": 4, "matrix": [1, 12], "x": 194, "y": 17 }, + { "flags": 4, "matrix": [1, 11], "x": 179, "y": 17 }, + { "flags": 4, "matrix": [1, 10], "x": 164, "y": 17 }, + { "flags": 4, "matrix": [1, 9] , "x": 149, "y": 17 }, + { "flags": 4, "matrix": [1, 8] , "x": 134, "y": 17 }, + { "flags": 4, "matrix": [1, 7] , "x": 119, "y": 17 }, + { "flags": 4, "matrix": [1, 6] , "x": 104, "y": 17 }, + { "flags": 4, "matrix": [1, 5] , "x": 90 , "y": 17 }, + { "flags": 4, "matrix": [1, 4] , "x": 75 , "y": 17 }, + { "flags": 4, "matrix": [1, 3] , "x": 60 , "y": 17 }, + { "flags": 4, "matrix": [1, 2] , "x": 45 , "y": 17 }, + { "flags": 4, "matrix": [1, 1] , "x": 30 , "y": 17 }, + { "flags": 4, "matrix": [1, 0] , "x": 11 , "y": 17 }, + { "flags": 4, "matrix": [2, 0] , "x": 13 , "y": 29 }, + { "flags": 4, "matrix": [2, 1] , "x": 34 , "y": 29 }, + { "flags": 4, "matrix": [2, 2] , "x": 49 , "y": 29 }, + { "flags": 4, "matrix": [2, 3] , "x": 63 , "y": 29 }, + { "flags": 4, "matrix": [2, 4] , "x": 78 , "y": 29 }, + { "flags": 4, "matrix": [2, 5] , "x": 93 , "y": 29 }, + { "flags": 4, "matrix": [2, 6] , "x": 108, "y": 29 }, + { "flags": 4, "matrix": [2, 7] , "x": 123, "y": 29 }, + { "flags": 4, "matrix": [2, 8] , "x": 138, "y": 29 }, + { "flags": 4, "matrix": [2, 9] , "x": 153, "y": 29 }, + { "flags": 4, "matrix": [2, 10], "x": 168, "y": 29 }, + { "flags": 4, "matrix": [2, 11], "x": 183, "y": 29 }, + { "flags": 4, "matrix": [2, 13], "x": 207, "y": 29 }, + { "flags": 4, "matrix": [3, 13], "x": 203, "y": 41 }, + { "flags": 4, "matrix": [3, 10], "x": 175, "y": 41 }, + { "flags": 4, "matrix": [3, 9] , "x": 161, "y": 41 }, + { "flags": 4, "matrix": [3, 8] , "x": 146, "y": 41 }, + { "flags": 4, "matrix": [3, 7] , "x": 131, "y": 41 }, + { "flags": 4, "matrix": [3, 6] , "x": 116, "y": 41 }, + { "flags": 4, "matrix": [3, 5] , "x": 101, "y": 41 }, + { "flags": 4, "matrix": [3, 4] , "x": 86 , "y": 41 }, + { "flags": 4, "matrix": [3, 3] , "x": 71 , "y": 41 }, + { "flags": 4, "matrix": [3, 2] , "x": 56 , "y": 41 }, + { "flags": 4, "matrix": [3, 1] , "x": 41 , "y": 41 }, + { "flags": 4, "matrix": [3, 0] , "x": 17 , "y": 41 }, + { "flags": 4, "matrix": [4, 0] , "x": 9 , "y": 54 }, + { "flags": 4, "matrix": [4, 1] , "x": 28 , "y": 54 }, + { "flags": 4, "matrix": [4, 2] , "x": 47 , "y": 54 }, + { "flags": 4, "matrix": [4, 5] , "x": 103, "y": 54 }, + { "flags": 4, "matrix": [4, 9] , "x": 159, "y": 54 }, + { "flags": 4, "matrix": [4, 10], "x": 177, "y": 54 }, + { "flags": 4, "matrix": [4, 11], "x": 196, "y": 54 }, + { "flags": 4, "matrix": [4, 13], "x": 215, "y": 54 } + ] + }, + "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], "w": 2 , "x": 13 , "y": 0 }, + { "matrix": [1, 0] , "w": 1.5 , "x": 0 , "y": 1 }, + { "matrix": [1, 1] , "x": 1.5 , "y": 1 }, + { "matrix": [1, 2] , "x": 2.5 , "y": 1 }, + { "matrix": [1, 3] , "x": 3.5 , "y": 1 }, + { "matrix": [1, 4] , "x": 4.5 , "y": 1 }, + { "matrix": [1, 5] , "x": 5.5 , "y": 1 }, + { "matrix": [1, 6] , "x": 6.5 , "y": 1 }, + { "matrix": [1, 7] , "x": 7.5 , "y": 1 }, + { "matrix": [1, 8] , "x": 8.5 , "y": 1 }, + { "matrix": [1, 9] , "x": 9.5 , "y": 1 }, + { "matrix": [1, 10] , "x": 10.5 , "y": 1 }, + { "matrix": [1, 11] , "x": 11.5 , "y": 1 }, + { "matrix": [1, 12] , "x": 12.5 , "y": 1 }, + { "matrix": [1, 13], "w": 1.5 , "x": 13.5 , "y": 1 }, + { "matrix": [2, 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": [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, 13], "w": 2.75 , "x": 12.25, "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] , "w": 1.25 , "x": 10 , "y": 4 }, + { "matrix": [4, 10], "w": 1.25 , "x": 11.25, "y": 4 }, + { "matrix": [4, 11], "w": 1.25 , "x": 12.5 , "y": 4 }, + { "matrix": [4, 13], "w": 1.25 , "x": 13.75, "y": 4 } + ] + } + } +} + diff --git a/keyboards/black_hellebore/keymaps/default/keymap.c b/keyboards/black_hellebore/keymaps/default/keymap.c new file mode 100644 index 00000000000..28e244b59ee --- /dev/null +++ b/keyboards/black_hellebore/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2023 MATTMCCA (@MATTMCCA) + * SPDX-License-Identifier: GPL-2.0-only + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_60_ansi( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ) +}; diff --git a/keyboards/black_hellebore/keymaps/via/keymap.c b/keyboards/black_hellebore/keymaps/via/keymap.c new file mode 100644 index 00000000000..cba8bd9be9d --- /dev/null +++ b/keyboards/black_hellebore/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2023 MATTMCCA (@MATTMCCA) + * SPDX-License-Identifier: GPL-2.0-only + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_60_ansi( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + + [1] = LAYOUT_60_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_60_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_60_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/black_hellebore/keymaps/via/rules.mk b/keyboards/black_hellebore/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/black_hellebore/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/black_hellebore/mcuconf.h b/keyboards/black_hellebore/mcuconf.h new file mode 100644 index 00000000000..ccb216946c9 --- /dev/null +++ b/keyboards/black_hellebore/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright 2023 MATTMCCA (@MATTMCCA) + * SPDX-License-Identifier: GPL-2.0-only + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_ADVANCED +#define STM32_PWM_USE_ADVANCED TRUE + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/keyboards/black_hellebore/readme.md b/keyboards/black_hellebore/readme.md new file mode 100644 index 00000000000..bd4bc3e4bab --- /dev/null +++ b/keyboards/black_hellebore/readme.md @@ -0,0 +1,24 @@ +# The Black Hellebore + +* Keyboard Maintainer: [MATTMCCA](https://github.com/MATTMCCA) +* Hardware Supported: *https://github.com/MATTMCCA/The-Black-Hellebore* +* Hardware Availability: *https://github.com/MATTMCCA/The-Black-Hellebore* + +Make example for this keyboard (after setting up your build environment): + + make black_hellebore:default + +Flashing example for this keyboard: + + make black_hellebore: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/black_hellebore/rules.mk b/keyboards/black_hellebore/rules.mk new file mode 100644 index 00000000000..5c0a6c7c044 --- /dev/null +++ b/keyboards/black_hellebore/rules.mk @@ -0,0 +1,2 @@ +RGB_MATRIX_DRIVER = WS2812 +WS2812_DRIVER = pwm diff --git a/keyboards/boardsource/lulu/avr/info.json b/keyboards/boardsource/lulu/avr/info.json index ad7eefa77f7..2c9155f6ad3 100644 --- a/keyboards/boardsource/lulu/avr/info.json +++ b/keyboards/boardsource/lulu/avr/info.json @@ -15,7 +15,7 @@ }, "encoder": { "rotary": [ - { "pin_a": "F0", "pin_b": "F1" } + { "pin_a": "F4", "pin_b": "F5" } ] } } diff --git a/keyboards/handwired/jscotto/scotto40/keymaps/default/keymap.c b/keyboards/handwired/jscotto/scotto40/keymaps/default/keymap.c index adfcdc559c7..ba5f7bc7a8c 100644 --- a/keyboards/handwired/jscotto/scotto40/keymaps/default/keymap.c +++ b/keyboards/handwired/jscotto/scotto40/keymaps/default/keymap.c @@ -23,7 +23,7 @@ enum { TD_ESC_WINDOWS_EMOJI }; -void td_esc_spotlight_emoji (qk_tap_dance_state_t *state, void *user_data) { +void td_esc_spotlight_emoji (tap_dance_state_t *state, void *user_data) { if (state->count == 1) { tap_code(KC_ESC); } else if (state->count == 2) { @@ -33,7 +33,7 @@ void td_esc_spotlight_emoji (qk_tap_dance_state_t *state, void *user_data) { } } -void td_esc_windows_emoji (qk_tap_dance_state_t *state, void *user_data) { +void td_esc_windows_emoji (tap_dance_state_t *state, void *user_data) { if (state->count == 1) { tap_code(KC_ESC); } else if (state->count == 2) { @@ -44,7 +44,7 @@ void td_esc_windows_emoji (qk_tap_dance_state_t *state, void *user_data) { }; // Tap Dance definitions -qk_tap_dance_action_t tap_dance_actions[] = { +tap_dance_action_t tap_dance_actions[] = { [TD_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_spotlight_emoji), [TD_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_windows_emoji) }; diff --git a/keyboards/keychron/v2/v2.c b/keyboards/keychron/v2/v2.c index 852a9637c4c..7703c280df0 100644 --- a/keyboards/keychron/v2/v2.c +++ b/keyboards/keychron/v2/v2.c @@ -26,6 +26,17 @@ const matrix_row_t matrix_mask[] = { #ifdef DIP_SWITCH_ENABLE +bool dip_switch_update_kb(uint8_t index, bool active) { + if (!dip_switch_update_user(index, active)) { return false;} + if (index == 0) { + default_layer_set(1UL << (active ? 1 : 0)); + } + return true; +} + +#endif // DIP_SWITCH_ENABLE + +#if defined(RGB_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) bool process_record_kb(uint16_t keycode, keyrecord_t *record) { if (!process_record_user(keycode, record)) { return false; } switch (keycode) { diff --git a/keyboards/preonic/keymaps/brauner/keymap.c b/keyboards/preonic/keymaps/brauner/keymap.c index 13b3b7b9714..85317852df7 100644 --- a/keyboards/preonic/keymaps/brauner/keymap.c +++ b/keyboards/preonic/keymaps/brauner/keymap.c @@ -48,7 +48,6 @@ enum preonic_keycodes { #define LT_LOWER_SPC LT(_LOWER, KC_SPC) #define LM_COMP_LALT LM(_COMPOSITOR, MOD_LALT) -#define LM_COMP_LALT_LSFT LM(_COMPOSITOR, MOD_LALT | MOD_LSFT) #define KO_LAYER_MASK_EXCEPT(layer) ((~0) & ~(1 << layer)) @@ -142,24 +141,24 @@ const key_override_t **key_overrides = (const key_override_t *[]){ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty - * ,------------------------------------------------------------------------------------------------------------------------------------. - * | Caps Lock | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Leader | - * |--------------+--------------------+------+------+------+------+-----------+------+------+------+--------------------+--------------| - * | Ctrl | Q | W | E | R | T | Y/Copy | U/Ü | I | O/Ö | P/Paste | Ctrl | - * |--------------+--------------------+------+------+------+------+-----------+------+------+------+--------------------+--------------| - * | Shift/Esc | A/Ä | S/ß | D | F | G | H | J | K | L | ' | Shift/Enter | - * |--------------+--------------------+------+------+------+------+-----------+------+------+------+--------------------+--------------| - * |Compositor+Alt| Z |X/Cut | C | V | B | N | M | , | . | / |Compositor+Alt| - * |--------------+--------------------+------+------+------+------+-----------+------+------+------+--------------------+--------------| - * | |Compositor+Alt+Shift| | |Raise |Lower |Lower/Space|Raise | | |Compositor+Alt+Shift| Manage | - * `------------------------------------------------------------------------------------------------------------------------------------' + * ,----------------------------------------------------------------------------------------------------------. + * | Caps Lock | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Leader | + * |--------------+-------+------+------+------+------+-----------+------+------+------+-------+--------------| + * | Ctrl | Q | W | E | R | T | Y/Copy | U/Ü | I | O/Ö |P/Paste| Ctrl | + * |--------------+-------+------+------+------+------+-----------+------+------+------+-------+--------------| + * | Shift/Esc | A/Ä | S/ß | D | F | G | H | J | K | L | ' | Shift/Enter | + * |--------------+-------+------+------+------+------+-----------+------+------+------+-------+--------------| + * | Alt | Z |X/Cut | C | V | B | N | M | , | . | / | Alt | + * |--------------+-------+------+------+------+------+-----------+------+------+------+-------+--------------| + * | Mouse | | | |Raise |Lower |Lower/Space|Raise | | | | Manage | + * `----------------------------------------------------------------------------------------------------------' */ [_QWERTY] = LAYOUT_preonic_grid( - KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LEAD, - KC_LCTL, KC_Q, KC_W, KC_E, KC_R, KC_T, LT_COPY_Y, LT_UE_U, KC_I, LT_OE_O, LT_PASTE_P, KC_RCTL, - MOD_TAP_LSFT_ESC, LT_AE_A, LT_SZ_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, MOD_TAP_LSFT_ENT, - LM_COMP_LALT, KC_Z, LT_CUT_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, LM_COMP_LALT, - _______, LM_COMP_LALT_LSFT, _______, _______, RAISE, LOWER, LT_LOWER_SPC, RAISE, _______, _______, _______, MANAGE + KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LEAD, + KC_LCTL, KC_Q, KC_W, KC_E, KC_R, KC_T, LT_COPY_Y, LT_UE_U, KC_I, LT_OE_O, LT_PASTE_P, KC_RCTL, + MOD_TAP_LSFT_ESC, LT_AE_A, LT_SZ_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, MOD_TAP_LSFT_ENT, + LM_COMP_LALT, KC_Z, LT_CUT_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, LM_COMP_LALT, + TG(_MOUSE), _______, _______, _______, RAISE, LOWER, LT_LOWER_SPC, RAISE, _______, _______, _______, MANAGE ), /* Lower * ,-----------------------------------------------------------------------------------. @@ -203,7 +202,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Mouse * ,-------------------------------------------------------------------------------------------------------------------------------------------------------. - * | Caps Lock | | | | | | | | | | | Leader | + * | | | | | | | | | | | | | * |--------------+-------+--------------+--------------+--------------+--------------+-----------+-----------+---------+------------+------+--------------| * | | | | | | |Wheel Left |Wheel Down |Wheel Up |Wheel Right | | Ctrl | * |--------------+-------+--------------+--------------+--------------+--------------+-----------+-----------+---------+------------+------+--------------| @@ -211,15 +210,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------------+-------+--------------+--------------+--------------+--------------+-----------+-----------+---------+------------+------+--------------| * |Compositor+Alt| | | | | | | | | | |Compositor+Alt| * |--------------+-------+--------------+--------------+--------------+--------------+-----------+-----------+---------+------------+------+--------------| - * | | | |Accelaration 2|Accelaration 1|Accelaration 0| | | | | | | + * |Mouse | | |Accelaration 2|Accelaration 1|Accelaration 0| | | | | | | * `-------------------------------------------------------------------------------------------------------------------------------------------------------' */ [_MOUSE] = LAYOUT_preonic_grid( - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_UP, KC_MS_WH_RIGHT, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1, XXXXXXX, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, - XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + _______, XXXXXXX, XXXXXXX, KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ), /* Manage * ,---------------------------------------------------------------------------------------. @@ -247,7 +246,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------+------+------+------+------+------+------| * | | Q | W | E | R | T | Y | U | I | O | P | | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | A | S | D | F | G | H | J | K | L | ' |Enter | + * |Shift | A | S | D | F | G | H | J | K | L | ' |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | Z | X | C | V | B | N | M | , | . | / | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -255,11 +254,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_COMPOSITOR] = LAYOUT_preonic_grid( - XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, - XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, XXXXXXX, - XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, - XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, + XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, XXXXXXX, + _______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, _______, + XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ) }; @@ -396,11 +395,6 @@ static inline void leader_bindings(void) { SEQ_ONE_KEY(KC_P) { tap_code16(C(S(KC_V))); } - - /* Toggle mouse layer. */ - SEQ_ONE_KEY(KC_CAPS) { - layer_invert(_MOUSE); - } } } diff --git a/keyboards/splitkb/kyria/keymaps/via/keymap.c b/keyboards/splitkb/kyria/keymaps/via/keymap.c index 9bbf127790e..0849e8a7669 100644 --- a/keyboards/splitkb/kyria/keymaps/via/keymap.c +++ b/keyboards/splitkb/kyria/keymaps/via/keymap.c @@ -34,23 +34,6 @@ enum layers { _BASE = 0, _NAV, _SYM, _FUNCTION, _ADJUST }; // produces the key `tap` when tapped (i.e. pressed and released). // clang-format off -#define LAYOUT_via( \ - L00, L01, L02, L03, L04, L05, LE0, LE1, RE0, RE1, R06, R07, R08, R09, R10, R11, \ - L12, L13, L14, L15, L16, L17, R18, R19, R20, R21, R22, R23, \ - L24, L25, L26, L27, L28, L29, L30, L31, R32, R33, R34, R35, R36, R37, R38, R39, \ - L40, L41, L42, L43, L44, R45, R46, R47, R48, R49 \ -) \ -{ \ - { LE0, LE1, L05, L04, L03, L02, L01, L00 }, \ - { RE0, RE1, L17, L16, L15, L14, L13, L12 }, \ - { L31, L30, L29, L28, L27, L26, L25, L24 }, \ - { L44, L43, L42, L41, L40, KC_NO, KC_NO, KC_NO }, \ - { KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \ - { KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \ - { R32, R33, R34, R35, R36, R37, R38, R39 }, \ - { R45, R46, R47, R48, R49, KC_NO, KC_NO, KC_NO }, \ -} - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Base Layer: QWERTY @@ -66,8 +49,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | Enter| | | | | | | | | * `----------------------------------' `----------------------------------' */ - [_BASE] = LAYOUT_via( - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_VOLD, KC_VOLU, KC_PGDN, KC_PGUP, KC_Y, KC_U , KC_I , KC_O , KC_P , KC_BSPC, + [_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, CTL_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L ,KC_SCLN,CTL_QUOT, KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_LBRC,KC_CAPS, FKEYS , KC_RBRC, KC_N, KC_M ,KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT, ADJUST , KC_LGUI, ALT_ENT, KC_SPC , NAV , SYM , KC_SPC ,KC_RALT, KC_RGUI, KC_APP @@ -87,10 +70,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' */ - [_NAV] = LAYOUT_via( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL, + [_NAV] = LAYOUT( + _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL, _______, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS, - _______, _______, _______, _______, _______, _______, _______, KC_SCRL, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR, + _______, _______, _______, _______, _______, _______, _______, KC_SCRL, _______, _______, KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), @@ -108,8 +91,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' */ - [_SYM] = LAYOUT_via( - KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , _______, _______, _______, _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL , + [_SYM] = LAYOUT( + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL , KC_TILD , KC_EXLM, KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS, KC_PIPE , KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_NUBS, KC_LBRC, _______, _______, KC_RBRC, KC_NUHS, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_QUES, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -129,8 +112,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' */ - [_FUNCTION] = LAYOUT_via( - _______, KC_F9 , KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + [_FUNCTION] = LAYOUT( + _______, KC_F9 , KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, _______, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI, _______, _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -150,100 +133,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' */ - [_ADJUST] = LAYOUT_via( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + [_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - + ) }; // clang-format on -#ifdef ENCODER_ENABLE -static uint8_t encoder_state[2] = {0}; -static keypos_t encoder_ccw[2] = {{0, 0}, {0, 1}}; -static keypos_t encoder_cw[2] = {{1, 0}, {1, 1}}; - -void encoder_action_unregister(void) { - for (int index = 0; index < 2; ++index) { - if (encoder_state[index]) { - keyevent_t encoder_event = (keyevent_t){.key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], .pressed = false, .time = (timer_read() | 1)}; - encoder_state[index] = 0; - action_exec(encoder_event); - } - } -} - -void encoder_action_register(uint8_t index, bool clockwise) { - keyevent_t encoder_event = (keyevent_t){.key = clockwise ? encoder_cw[index] : encoder_ccw[index], .pressed = true, .time = (timer_read() | 1)}; - encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); - action_exec(encoder_event); -} - -void matrix_scan_user(void) { encoder_action_unregister(); } - -bool encoder_update_user(uint8_t index, bool clockwise) { - encoder_action_register(index, clockwise); - return false; +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_PGUP, KC_PGDN) }, + [1] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + [2] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + [3] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + [4] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, }; #endif - -#ifdef OLED_ENABLE -bool oled_task_user(void) { - if (is_keyboard_master()) { - // QMK Logo and version information - // clang-format off - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - // clang-format on - - oled_write_P(qmk_logo, false); - oled_write_P(PSTR("Kyria rev1.0 w/ VIA\n\n"), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state | default_layer_state)) { - case 0: - oled_write_P(PSTR("Base\n"), false); - break; - case 1: - oled_write_P(PSTR("Nav\n"), false); - break; - case 2: - oled_write_P(PSTR("Sym\n"), false); - break; - case 3: - oled_write_P(PSTR("Function\n"), false); - break; - case 4: - oled_write_P(PSTR("Adjust\n"), false); - break; - } - - // Host Keyboard LED Status - led_t led_usb_state = host_keyboard_led_state(); - oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); - oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); - oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); - } else { - // clang-format off - static const char PROGMEM kyria_logo[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - // clang-format on - oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); - } - return false; -} -#endif diff --git a/keyboards/splitkb/kyria/keymaps/via/rules.mk b/keyboards/splitkb/kyria/keymaps/via/rules.mk index 9f383dfa2d7..0f12ae88e1c 100644 --- a/keyboards/splitkb/kyria/keymaps/via/rules.mk +++ b/keyboards/splitkb/kyria/keymaps/via/rules.mk @@ -1,10 +1,10 @@ OLED_ENABLE = yes OLED_DRIVER = SSD1306 # Enables the use of OLED displays ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow VIA_ENABLE = yes NKRO_ENABLE = yes KEY_LOCK_ENABLE = no SPACE_CADET_ENABLE = no MAGIC_ENABLE = no GRAVE_ESCAPE_ENABLE = no +ENCODER_MAP_ENABLE = yes diff --git a/lib/python/qmk/cli/bux.py b/lib/python/qmk/cli/bux.py index 504ee35d6e2..8c7f1727796 100755 --- a/lib/python/qmk/cli/bux.py +++ b/lib/python/qmk/cli/bux.py @@ -34,7 +34,7 @@ def bux(cli): @B _y ]# ,c vUWNWWPsfsssN9WyccnckAfUfWb0DR0&R5RRRddq2_ `@D`jr@2U@#c3@1@Qc- B@ @B !7! .r]` }AE0RdRqNd9dNR9fUIzzosPqqAddNNdER9EE9dPy! BQ!zy@iU@.Q@@y@8x- B@ @B :****>. '7adddDdR&gRNdRbd&dNNbbRdNdd5NdRRD0RSf}- .k0&EW`xR .8Q=NRRx B@ -@B =**-rx*r}r~}" ;n2jkzsf3N3zsKsP5dddRddddRddNNqPzy\" '~****" B@ +@B =**-rx*r}r~}" ;n2jkzsf3N3zsKsP5dddRddddRddNNqPzy\\" '~****" B@ @B :!!~!;=~r>:*_ `:^vxikylulKfHkyjzzozoIoklix|^!-` B@ @B ```'-_""::::!:_-.`` B@ @B `- .` B@ diff --git a/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c b/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c index bc03213f3be..a46b0991954 100644 --- a/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c +++ b/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c @@ -1,10 +1,13 @@ // Copyright 2022 Stefan Kerkmann (@KarlK90) // SPDX-License-Identifier: GPL-2.0-or-later -#include "quantum.h" #include "ws2812.h" -#include "hardware/pio.h" +#include "hardware/timer.h" #include "hardware/clocks.h" +// Keep this exact include order otherwise we run into naming conflicts between +// pico-sdk and rp2040.h which we don't control. +#include "quantum.h" +#include "hardware/pio.h" #if !defined(MCU_RP) # error PIO Driver is only available for Raspberry Pi 2040 MCUs! @@ -132,7 +135,7 @@ static uint32_t RP_DMA_MODE_WS2812; static int STATE_MACHINE = -1; static SEMAPHORE_DECL(TRANSFER_COUNTER, 1); -static rtcnt_t LAST_TRANSFER; +static absolute_time_t LAST_TRANSFER; /** * @brief Convert RGBW value into WS2812 compatible 32-bit data word. @@ -161,7 +164,7 @@ static void ws2812_dma_callback(void* p, uint32_t ct) { // Convert from ns to us time_to_completion /= 1000; - LAST_TRANSFER = chSysGetRealtimeCounterX() + time_to_completion + WS2812_TRST_US; + update_us_since_boot(&LAST_TRANSFER, time_us_64() + time_to_completion + WS2812_TRST_US); osalSysLockFromISR(); chSemSignalI(&TRANSFER_COUNTER); @@ -256,8 +259,7 @@ static inline void sync_ws2812_transfer(void) { } // Busy wait until last transfer has finished - while (unlikely(!timer_expired32(chSysGetRealtimeCounterX(), LAST_TRANSFER))) { - } + busy_wait_until(LAST_TRANSFER); } void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) { diff --git a/platforms/chibios/vendors/RP/RP2040.mk b/platforms/chibios/vendors/RP/RP2040.mk index 4360512c050..94f023d72b7 100644 --- a/platforms/chibios/vendors/RP/RP2040.mk +++ b/platforms/chibios/vendors/RP/RP2040.mk @@ -25,6 +25,7 @@ PICOSDKROOT := $(TOP_DIR)/lib/pico-sdk PICOSDKSRC = $(PICOSDKROOT)/src/rp2_common/hardware_clocks/clocks.c \ $(PICOSDKROOT)/src/rp2_common/hardware_pll/pll.c \ $(PICOSDKROOT)/src/rp2_common/hardware_pio/pio.c \ + $(PICOSDKROOT)/src/rp2_common/hardware_timer/timer.c \ $(PICOSDKROOT)/src/rp2_common/hardware_flash/flash.c \ $(PICOSDKROOT)/src/rp2_common/hardware_gpio/gpio.c \ $(PICOSDKROOT)/src/rp2_common/hardware_claim/claim.c \ @@ -44,6 +45,7 @@ PICOSDKINC = $(CHIBIOS)//os/various/pico_bindings/dumb/include \ $(PICOSDKROOT)/src/rp2_common/hardware_pll/include \ $(PICOSDKROOT)/src/rp2_common/hardware_pio/include \ $(PICOSDKROOT)/src/rp2_common/hardware_sync/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_timer/include \ $(PICOSDKROOT)/src/rp2_common/hardware_resets/include \ $(PICOSDKROOT)/src/rp2_common/hardware_watchdog/include \ $(PICOSDKROOT)/src/rp2_common/hardware_xosc/include \ diff --git a/quantum/keymap_introspection.c b/quantum/keymap_introspection.c index 1f4da2d975c..2459ad0df53 100644 --- a/quantum/keymap_introspection.c +++ b/quantum/keymap_introspection.c @@ -11,44 +11,58 @@ #include "keymap_introspection.h" -#define NUM_KEYMAP_LAYERS ((uint8_t)(sizeof(keymaps) / ((MATRIX_ROWS) * (MATRIX_COLS) * sizeof(uint16_t)))) +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Key mapping -uint8_t keymap_layer_count(void) { - return NUM_KEYMAP_LAYERS; +#define NUM_KEYMAP_LAYERS_RAW ((uint8_t)(sizeof(keymaps) / ((MATRIX_ROWS) * (MATRIX_COLS) * sizeof(uint16_t)))) + +uint8_t keymap_layer_count_raw(void) { + return NUM_KEYMAP_LAYERS_RAW; +} + +__attribute__((weak)) uint8_t keymap_layer_count(void) { + return keymap_layer_count_raw(); } #ifdef DYNAMIC_KEYMAP_ENABLE -_Static_assert(NUM_KEYMAP_LAYERS <= MAX_LAYER, "Number of keymap layers exceeds maximum set by DYNAMIC_KEYMAP_LAYER_COUNT"); +_Static_assert(NUM_KEYMAP_LAYERS_RAW <= MAX_LAYER, "Number of keymap layers exceeds maximum set by DYNAMIC_KEYMAP_LAYER_COUNT"); #else -_Static_assert(NUM_KEYMAP_LAYERS <= MAX_LAYER, "Number of keymap layers exceeds maximum set by LAYER_STATE_(8|16|32)BIT"); +_Static_assert(NUM_KEYMAP_LAYERS_RAW <= MAX_LAYER, "Number of keymap layers exceeds maximum set by LAYER_STATE_(8|16|32)BIT"); #endif uint16_t keycode_at_keymap_location_raw(uint8_t layer_num, uint8_t row, uint8_t column) { - if (layer_num < NUM_KEYMAP_LAYERS && row < MATRIX_ROWS && column < MATRIX_COLS) { + if (layer_num < NUM_KEYMAP_LAYERS_RAW && row < MATRIX_ROWS && column < MATRIX_COLS) { return pgm_read_word(&keymaps[layer_num][row][column]); } - return KC_TRANSPARENT; + return KC_TRNS; } __attribute__((weak)) uint16_t keycode_at_keymap_location(uint8_t layer_num, uint8_t row, uint8_t column) { return keycode_at_keymap_location_raw(layer_num, row, column); } +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Encoder mapping + #if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE) -# define NUM_ENCODERMAP_LAYERS ((uint8_t)(sizeof(encoder_map) / ((NUM_ENCODERS) * (2) * sizeof(uint16_t)))) +# define NUM_ENCODERMAP_LAYERS_RAW ((uint8_t)(sizeof(encoder_map) / ((NUM_ENCODERS) * (2) * sizeof(uint16_t)))) -uint8_t encodermap_layer_count(void) { - return NUM_ENCODERMAP_LAYERS; +uint8_t encodermap_layer_count_raw(void) { + return NUM_ENCODERMAP_LAYERS_RAW; } -_Static_assert(NUM_KEYMAP_LAYERS == NUM_ENCODERMAP_LAYERS, "Number of encoder_map layers doesn't match the number of keymap layers"); +__attribute__((weak)) uint8_t encodermap_layer_count(void) { + return encodermap_layer_count_raw(); +} + +_Static_assert(NUM_KEYMAP_LAYERS_RAW == NUM_ENCODERMAP_LAYERS_RAW, "Number of encoder_map layers doesn't match the number of keymap layers"); uint16_t keycode_at_encodermap_location_raw(uint8_t layer_num, uint8_t encoder_idx, bool clockwise) { - if (layer_num < NUM_ENCODERMAP_LAYERS && encoder_idx < NUM_ENCODERS) { + if (layer_num < NUM_ENCODERMAP_LAYERS_RAW && encoder_idx < NUM_ENCODERS) { return pgm_read_word(&encoder_map[layer_num][encoder_idx][clockwise ? 0 : 1]); } - return KC_TRANSPARENT; + return KC_TRNS; } __attribute__((weak)) uint16_t keycode_at_encodermap_location(uint8_t layer_num, uint8_t encoder_idx, bool clockwise) { diff --git a/quantum/keymap_introspection.h b/quantum/keymap_introspection.h index 9de706a0219..a8df3928a61 100644 --- a/quantum/keymap_introspection.h +++ b/quantum/keymap_introspection.h @@ -4,7 +4,12 @@ #include -// Get the number of layers defined in the keymap +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Key mapping + +// Get the number of layers defined in the keymap, stored in firmware rather than any other persistent storage +uint8_t keymap_layer_count_raw(void); +// Get the number of layers defined in the keymap, potentially stored dynamically uint8_t keymap_layer_count(void); // Get the keycode for the keymap location, stored in firmware rather than any other persistent storage @@ -12,9 +17,14 @@ uint16_t keycode_at_keymap_location_raw(uint8_t layer_num, uint8_t row, uint8_t // Get the keycode for the keymap location, potentially stored dynamically uint16_t keycode_at_keymap_location(uint8_t layer_num, uint8_t row, uint8_t column); +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Encoder mapping + #if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE) -// Get the number of layers defined in the encoder map +// Get the number of layers defined in the encoder map, stored in firmware rather than any other persistent storage +uint8_t encodermap_layer_count_raw(void); +// Get the number of layers defined in the encoder map, potentially stored dynamically uint8_t encodermap_layer_count(void); // Get the keycode for the encoder mapping location, stored in firmware rather than any other persistent storage