diff options
author | Ryan <fauxpark@gmail.com> | 2024-10-13 03:43:50 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-12 18:43:50 +0200 |
commit | 6fa11bf21913b5ccb531acc3c2baec963f4d384a (patch) | |
tree | aaf6188a4579949cc1fbac61d0fee5234b97996a /quantum/process_keycode | |
parent | 5c97a78ce6ab45643dcb420ba2ad20c30dcd5b8a (diff) | |
download | qmk_firmware-6fa11bf21913b5ccb531acc3c2baec963f4d384a.tar.gz qmk_firmware-6fa11bf21913b5ccb531acc3c2baec963f4d384a.zip |
Separate RGBLight/RGB Matrix keycode handling (#23679)
* Separate RGBLight/RGB Matrix keycode handling
* Remove `_DISABLE_KEYCODES` handling
* Update RGB Matrix keycode docs
* Update underglow keycodes for previously migrated boards
* Update keycodes for boards with custom handling
* Fix typos
* Fix bad merge
Diffstat (limited to 'quantum/process_keycode')
-rw-r--r-- | quantum/process_keycode/process_rgb.c | 226 | ||||
-rw-r--r-- | quantum/process_keycode/process_rgb.h | 22 |
2 files changed, 0 insertions, 248 deletions
diff --git a/quantum/process_keycode/process_rgb.c b/quantum/process_keycode/process_rgb.c deleted file mode 100644 index b113d1c1e7..0000000000 --- a/quantum/process_keycode/process_rgb.c +++ /dev/null @@ -1,226 +0,0 @@ -/* Copyright 2019 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#include "process_rgb.h" -#include "action_util.h" - -#ifdef RGB_MATRIX_ENABLE -# include "rgb_matrix.h" -#endif -#ifdef RGBLIGHT_ENABLE -# include "rgblight.h" -#endif - -typedef void (*rgb_func_pointer)(void); - -/** - * Wrapper for inc/dec rgb keycode - * - * noinline to optimise for firmware size not speed (not in hot path) - */ -#if (defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)) || (defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)) -static void __attribute__((noinline)) handleKeycodeRGB(const uint8_t is_shifted, const rgb_func_pointer inc_func, const rgb_func_pointer dec_func) { - if (is_shifted) { - dec_func(); - } else { - inc_func(); - } -} -#endif - -/** - * Wrapper for animation mode - * - if not in animation family -> jump to that animation - * - otherwise -> wrap round animation speed - * - * noinline to optimise for firmware size not speed (not in hot path) - */ -static void __attribute__((noinline, unused)) handleKeycodeRGBMode(const uint8_t start, const uint8_t end) { - if ((start <= rgblight_get_mode()) && (rgblight_get_mode() < end)) { - rgblight_step(); - } else { - rgblight_mode(start); - } -} - -/** - * Handle keycodes for both rgblight and rgbmatrix - */ -bool process_rgb(const uint16_t keycode, const keyrecord_t *record) { - // need to trigger on key-up for edge-case issue -#ifndef RGB_TRIGGER_ON_KEYDOWN - if (!record->event.pressed) { -#else - if (record->event.pressed) { -#endif -#if (defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)) || (defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)) - uint8_t shifted = get_mods() & MOD_MASK_SHIFT; -#endif - switch (keycode) { - case QK_UNDERGLOW_TOGGLE: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) - rgblight_toggle(); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - rgb_matrix_toggle(); -#endif - return false; - case QK_UNDERGLOW_MODE_NEXT: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgblight_step, rgblight_step_reverse); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgb_matrix_step, rgb_matrix_step_reverse); -#endif - return false; - case QK_UNDERGLOW_MODE_PREVIOUS: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgblight_step_reverse, rgblight_step); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgb_matrix_step_reverse, rgb_matrix_step); -#endif - return false; - case QK_UNDERGLOW_HUE_UP: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgblight_increase_hue, rgblight_decrease_hue); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgb_matrix_increase_hue, rgb_matrix_decrease_hue); -#endif - return false; - case QK_UNDERGLOW_HUE_DOWN: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgblight_decrease_hue, rgblight_increase_hue); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgb_matrix_decrease_hue, rgb_matrix_increase_hue); -#endif - return false; - case QK_UNDERGLOW_SATURATION_UP: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgblight_increase_sat, rgblight_decrease_sat); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgb_matrix_increase_sat, rgb_matrix_decrease_sat); -#endif - return false; - case QK_UNDERGLOW_SATURATION_DOWN: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgblight_decrease_sat, rgblight_increase_sat); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgb_matrix_decrease_sat, rgb_matrix_increase_sat); -#endif - return false; - case QK_UNDERGLOW_VALUE_UP: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgblight_increase_val, rgblight_decrease_val); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgb_matrix_increase_val, rgb_matrix_decrease_val); -#endif - return false; - case QK_UNDERGLOW_VALUE_DOWN: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgblight_decrease_val, rgblight_increase_val); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgb_matrix_decrease_val, rgb_matrix_increase_val); -#endif - return false; - case QK_UNDERGLOW_SPEED_UP: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgblight_increase_speed, rgblight_decrease_speed); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgb_matrix_increase_speed, rgb_matrix_decrease_speed); -#endif - return false; - case QK_UNDERGLOW_SPEED_DOWN: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgblight_decrease_speed, rgblight_increase_speed); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - handleKeycodeRGB(shifted, rgb_matrix_decrease_speed, rgb_matrix_increase_speed); -#endif - return false; - case RGB_MODE_PLAIN: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) - rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR); -#endif - return false; - case RGB_MODE_BREATHE: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) && defined(RGBLIGHT_EFFECT_BREATHING) - handleKeycodeRGBMode(RGBLIGHT_MODE_BREATHING, RGBLIGHT_MODE_BREATHING_end); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) && defined(ENABLE_RGB_MATRIX_BREATHING) - rgb_matrix_mode(RGB_MATRIX_BREATHING); -#endif - return false; - case RGB_MODE_RAINBOW: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) && defined(RGBLIGHT_EFFECT_RAINBOW_MOOD) - handleKeycodeRGBMode(RGBLIGHT_MODE_RAINBOW_MOOD, RGBLIGHT_MODE_RAINBOW_MOOD_end); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) && defined(ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT) - rgb_matrix_mode(RGB_MATRIX_CYCLE_LEFT_RIGHT); -#endif - return false; - case RGB_MODE_SWIRL: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) && defined(RGBLIGHT_EFFECT_RAINBOW_SWIRL) - handleKeycodeRGBMode(RGBLIGHT_MODE_RAINBOW_SWIRL, RGBLIGHT_MODE_RAINBOW_SWIRL_end); -#endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) && defined(ENABLE_RGB_MATRIX_CYCLE_PINWHEEL) - rgb_matrix_mode(RGB_MATRIX_CYCLE_PINWHEEL); -#endif - return false; - case RGB_MODE_SNAKE: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) && defined(RGBLIGHT_EFFECT_SNAKE) - handleKeycodeRGBMode(RGBLIGHT_MODE_SNAKE, RGBLIGHT_MODE_SNAKE_end); -#endif - return false; - case RGB_MODE_KNIGHT: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) && defined(RGBLIGHT_EFFECT_KNIGHT) - handleKeycodeRGBMode(RGBLIGHT_MODE_KNIGHT, RGBLIGHT_MODE_KNIGHT_end); -#endif - return false; - case RGB_MODE_XMAS: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) && defined(RGBLIGHT_EFFECT_CHRISTMAS) - rgblight_mode(RGBLIGHT_MODE_CHRISTMAS); -#endif - return false; - case RGB_MODE_GRADIENT: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) && defined(RGBLIGHT_EFFECT_STATIC_GRADIENT) - handleKeycodeRGBMode(RGBLIGHT_MODE_STATIC_GRADIENT, RGBLIGHT_MODE_STATIC_GRADIENT_end); -#endif - return false; - case RGB_MODE_RGBTEST: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) && defined(RGBLIGHT_EFFECT_RGB_TEST) - rgblight_mode(RGBLIGHT_MODE_RGB_TEST); -#endif - return false; - case RGB_MODE_TWINKLE: -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) && defined(RGBLIGHT_EFFECT_TWINKLE) - handleKeycodeRGBMode(RGBLIGHT_MODE_TWINKLE, RGBLIGHT_MODE_TWINKLE_end); -#endif - return false; - } - } - - return true; -} diff --git a/quantum/process_keycode/process_rgb.h b/quantum/process_keycode/process_rgb.h deleted file mode 100644 index b1069d4bb6..0000000000 --- a/quantum/process_keycode/process_rgb.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2019 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#pragma once - -#include <stdint.h> -#include <stdbool.h> -#include "action.h" - -bool process_rgb(const uint16_t keycode, const keyrecord_t *record); |