diff options
author | stanrc85 <47038504+stanrc85@users.noreply.github.com> | 2021-07-01 04:06:06 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-01 01:06:06 -0700 |
commit | fb405c27ad07313f5d564c02bf03130d9aaf59c7 (patch) | |
tree | 92391e41350145e51f88735d0afbd1e62db63e60 /users | |
parent | 13533508e236666b8827b62f2b2d6819d473ef2b (diff) | |
download | qmk_firmware-fb405c27ad07313f5d564c02bf03130d9aaf59c7.tar.gz qmk_firmware-fb405c27ad07313f5d564c02bf03130d9aaf59c7.zip |
[Keymap] RGB Timeout added to userspace (#13339)
Diffstat (limited to 'users')
-rw-r--r-- | users/stanrc85/rgb_timeout.c | 62 | ||||
-rw-r--r-- | users/stanrc85/rules.mk | 6 |
2 files changed, 68 insertions, 0 deletions
diff --git a/users/stanrc85/rgb_timeout.c b/users/stanrc85/rgb_timeout.c new file mode 100644 index 000000000..4aa242781 --- /dev/null +++ b/users/stanrc85/rgb_timeout.c | |||
@@ -0,0 +1,62 @@ | |||
1 | /* | ||
2 | Copyright 2021 Stanrc85 | ||
3 | |||
4 | This program is free software: you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation, either version 2 of the License, or | ||
7 | (at your option) any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | #include "stanrc85.h" | ||
18 | |||
19 | // Backlight timeout feature | ||
20 | // Modified from https://www.reddit.com/r/MechanicalKeyboards/comments/ix65z0/looking_for_qmk_led_idle_timeout_info/g64yov7/ | ||
21 | #define BACKLIGHT_TIMEOUT 10 // in minutes | ||
22 | static uint16_t idle_timer = 0; | ||
23 | static uint8_t halfmin_counter = 0; | ||
24 | static bool led_on = true; | ||
25 | static bool rgb_on = true; | ||
26 | static bool rgb_was_on = false; | ||
27 | |||
28 | void matrix_scan_user(void) { | ||
29 | // idle_timer needs to be set one time | ||
30 | if (idle_timer == 0) idle_timer = timer_read(); | ||
31 | if ( (led_on && timer_elapsed(idle_timer) > 30000) || (rgb_on && timer_elapsed(idle_timer) > 30000)) { | ||
32 | halfmin_counter++; | ||
33 | idle_timer = timer_read(); | ||
34 | } | ||
35 | |||
36 | if ( (led_on && halfmin_counter >= BACKLIGHT_TIMEOUT * 2) || (rgb_on && halfmin_counter >= BACKLIGHT_TIMEOUT * 2)) { | ||
37 | if(rgblight_is_enabled()) { | ||
38 | rgb_was_on = true; | ||
39 | rgblight_disable_noeeprom(); | ||
40 | led_on = false; | ||
41 | rgb_on = false; | ||
42 | } else { | ||
43 | rgb_was_on = false; | ||
44 | } | ||
45 | halfmin_counter = 0; | ||
46 | } | ||
47 | }; | ||
48 | |||
49 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | ||
50 | if (record->event.pressed) { | ||
51 | if (led_on == false || rgb_on == false ) { | ||
52 | if (rgb_was_on) { | ||
53 | rgblight_enable_noeeprom(); | ||
54 | led_on = true; | ||
55 | rgb_on = true; | ||
56 | } | ||
57 | } | ||
58 | idle_timer = timer_read(); | ||
59 | halfmin_counter = 0; | ||
60 | } | ||
61 | return true; | ||
62 | } | ||
diff --git a/users/stanrc85/rules.mk b/users/stanrc85/rules.mk index 805a2929f..45929575c 100644 --- a/users/stanrc85/rules.mk +++ b/users/stanrc85/rules.mk | |||
@@ -36,3 +36,9 @@ ifeq ($(strip $(KEYBOARD)), jacky_studio/bear_65) | |||
36 | RGB_MATRIX_ENABLE = yes | 36 | RGB_MATRIX_ENABLE = yes |
37 | RGBLIGHT_ENABLE = no | 37 | RGBLIGHT_ENABLE = no |
38 | endif | 38 | endif |
39 | ifeq ($(strip $(KEYBOARD)), tkc/portico) | ||
40 | SRC += rgb_timeout.c | ||
41 | endif | ||
42 | ifeq ($(strip $(KEYBOARD)), kiwikey/wanderland) | ||
43 | SRC += rgb_timeout.c | ||
44 | endif | ||