From 365eb5c4c2b972d2a1de02eb9cc11edf24793e64 Mon Sep 17 00:00:00 2001 From: Darkhan Date: Wed, 3 Feb 2021 00:14:06 +0000 Subject: [PATCH] Add new message type for resetting foreground color (#31) --- keyboards/annepro2/annepro2.c | 2 +- keyboards/annepro2/qmk_ap2_led.c | 12 +++++++++--- keyboards/annepro2/qmk_ap2_led.h | 4 +++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/keyboards/annepro2/annepro2.c b/keyboards/annepro2/annepro2.c index 5c2ebfc934f..f9f90ac58ec 100644 --- a/keyboards/annepro2/annepro2.c +++ b/keyboards/annepro2/annepro2.c @@ -109,7 +109,7 @@ void matrix_scan_kb() { */ bool OVERRIDE process_record_kb(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { - if (AP2_LED_ENABLED && AP2_LED_DYNAMIC_PROFILE) { + if (AP2_LED_ENABLED && AP2_LED_DYNAMIC_PROFILE && !AP2_FOREGROUND_COLOR_SET) { annepro2LedForwardKeypress(record->event.key.row, record->event.key.col); } diff --git a/keyboards/annepro2/qmk_ap2_led.c b/keyboards/annepro2/qmk_ap2_led.c index 08a59adf6e8..5f7e9fcf83d 100644 --- a/keyboards/annepro2/qmk_ap2_led.c +++ b/keyboards/annepro2/qmk_ap2_led.c @@ -4,6 +4,7 @@ bool AP2_LED_ENABLED = false; bool AP2_LED_DYNAMIC_PROFILE = false; +bool AP2_FOREGROUND_COLOR_SET = false; void annepro2LedDisable(void) { @@ -76,6 +77,8 @@ void annepro2LedNextAnimationSpeed() void annepro2LedPrevProfile() { sdPut(&SD0, CMD_LED_PREV_PROFILE); + uint8_t buf = sdGet(&SD0); + AP2_LED_DYNAMIC_PROFILE = buf; } void annepro2LedSetMask(uint8_t key) @@ -94,13 +97,16 @@ void annepro2LedSetForegroundColor(uint8_t red, uint8_t green, uint8_t blue) { sdPut(&SD0, CMD_LED_SET_FOREGROUND_COLOR); uint8_t colors[3]={red,green,blue}; - sdWrite(&SD0, (uint8_t *)&colors, sizeof(uint8_t)*3); + sdWrite(&SD0, (uint8_t *)&colors, sizeof(colors)); + AP2_FOREGROUND_COLOR_SET = true; } void annepro2LedResetForegroundColor() { - uint8_t currentProfile = annepro2LedGetProfile(); - annepro2LedSetProfile(currentProfile); + sdPut(&SD0, CMD_LED_CLEAR_FOREGROUND_COLOR); + uint8_t buf = sdGet(&SD0); + AP2_LED_DYNAMIC_PROFILE = buf; + AP2_FOREGROUND_COLOR_SET = false; } /* diff --git a/keyboards/annepro2/qmk_ap2_led.h b/keyboards/annepro2/qmk_ap2_led.h index cbb08ffa7d9..d4658119afd 100644 --- a/keyboards/annepro2/qmk_ap2_led.h +++ b/keyboards/annepro2/qmk_ap2_led.h @@ -14,8 +14,9 @@ #define CMD_LED_NEXT_INTENSITY 0xC #define CMD_LED_NEXT_ANIMATION_SPEED 0xD #define CMD_LED_SET_FOREGROUND_COLOR 0xE -#define CMD_LED_KEYPRESS 0xF +#define CMD_LED_CLEAR_FOREGROUND_COLOR 0xF #define CMD_LED_IAP 0x10 +#define CMD_LED_KEYPRESS 0x11 void annepro2SetIAP(void); void annepro2LedDisable(void); @@ -38,3 +39,4 @@ void annepro2LedForwardKeypress(uint8_t row, uint8_t col); extern bool AP2_LED_ENABLED; extern bool AP2_LED_DYNAMIC_PROFILE; +extern bool AP2_FOREGROUND_COLOR_SET;