aboutsummaryrefslogtreecommitdiff
path: root/tmk_core/common/keyboard.c
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/common/keyboard.c')
-rw-r--r--tmk_core/common/keyboard.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c
index aea09169f..0ca454612 100644
--- a/tmk_core/common/keyboard.c
+++ b/tmk_core/common/keyboard.c
@@ -97,9 +97,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
97# include "dip_switch.h" 97# include "dip_switch.h"
98#endif 98#endif
99 99
100static uint32_t last_input_modification_time = 0;
101uint32_t last_input_activity_time(void) { return last_input_modification_time; }
102uint32_t last_input_activity_elapsed(void) { return timer_elapsed32(last_input_modification_time); }
103
100static uint32_t last_matrix_modification_time = 0; 104static uint32_t last_matrix_modification_time = 0;
101uint32_t last_matrix_activity_time(void) { return last_matrix_modification_time; } 105uint32_t last_matrix_activity_time(void) { return last_matrix_modification_time; }
102uint32_t last_matrix_activity_elapsed(void) { return timer_elapsed32(last_matrix_modification_time); } 106uint32_t last_matrix_activity_elapsed(void) { return timer_elapsed32(last_matrix_modification_time); }
107void last_matrix_activity_trigger(void) { last_matrix_modification_time = last_input_modification_time = timer_read32(); }
108
109static uint32_t last_encoder_modification_time = 0;
110uint32_t last_encoder_activity_time(void) { return last_encoder_modification_time; }
111uint32_t last_encoder_activity_elapsed(void) { return timer_elapsed32(last_encoder_modification_time); }
112void last_encoder_activity_trigger(void) { last_encoder_modification_time = last_input_modification_time = timer_read32(); }
103 113
104// Only enable this if console is enabled to print to 114// Only enable this if console is enabled to print to
105#if defined(DEBUG_MATRIX_SCAN_RATE) && defined(CONSOLE_ENABLE) 115#if defined(DEBUG_MATRIX_SCAN_RATE) && defined(CONSOLE_ENABLE)
@@ -338,12 +348,15 @@ void keyboard_task(void) {
338#ifdef QMK_KEYS_PER_SCAN 348#ifdef QMK_KEYS_PER_SCAN
339 uint8_t keys_processed = 0; 349 uint8_t keys_processed = 0;
340#endif 350#endif
351#ifdef ENCODER_ENABLE
352 bool encoders_changed = false;
353#endif
341 354
342 housekeeping_task_kb(); 355 housekeeping_task_kb();
343 housekeeping_task_user(); 356 housekeeping_task_user();
344 357
345 uint8_t matrix_changed = matrix_scan(); 358 uint8_t matrix_changed = matrix_scan();
346 if (matrix_changed) last_matrix_modification_time = timer_read32(); 359 if (matrix_changed) last_matrix_activity_trigger();
347 360
348 if (should_process_keypress()) { 361 if (should_process_keypress()) {
349 for (uint8_t r = 0; r < MATRIX_ROWS; r++) { 362 for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
@@ -399,7 +412,8 @@ MATRIX_LOOP_END:
399#endif 412#endif
400 413
401#ifdef ENCODER_ENABLE 414#ifdef ENCODER_ENABLE
402 encoder_read(); 415 encoders_changed = encoder_read();
416 if (encoders_changed) last_encoder_activity_trigger();
403#endif 417#endif
404 418
405#ifdef QWIIC_ENABLE 419#ifdef QWIIC_ENABLE
@@ -409,8 +423,12 @@ MATRIX_LOOP_END:
409#ifdef OLED_DRIVER_ENABLE 423#ifdef OLED_DRIVER_ENABLE
410 oled_task(); 424 oled_task();
411# ifndef OLED_DISABLE_TIMEOUT 425# ifndef OLED_DISABLE_TIMEOUT
412 // Wake up oled if user is using those fabulous keys! 426 // Wake up oled if user is using those fabulous keys or spinning those encoders!
427# ifdef ENCODER_ENABLE
428 if (matrix_changed || encoders_changed) oled_on();
429# else
413 if (matrix_changed) oled_on(); 430 if (matrix_changed) oled_on();
431# endif
414# endif 432# endif
415#endif 433#endif
416 434