diff options
Diffstat (limited to 'tmk_core/common/keyboard.c')
| -rw-r--r-- | tmk_core/common/keyboard.c | 24 |
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 | ||
| 100 | static uint32_t last_input_modification_time = 0; | ||
| 101 | uint32_t last_input_activity_time(void) { return last_input_modification_time; } | ||
| 102 | uint32_t last_input_activity_elapsed(void) { return timer_elapsed32(last_input_modification_time); } | ||
| 103 | |||
| 100 | static uint32_t last_matrix_modification_time = 0; | 104 | static uint32_t last_matrix_modification_time = 0; |
| 101 | uint32_t last_matrix_activity_time(void) { return last_matrix_modification_time; } | 105 | uint32_t last_matrix_activity_time(void) { return last_matrix_modification_time; } |
| 102 | uint32_t last_matrix_activity_elapsed(void) { return timer_elapsed32(last_matrix_modification_time); } | 106 | uint32_t last_matrix_activity_elapsed(void) { return timer_elapsed32(last_matrix_modification_time); } |
| 107 | void last_matrix_activity_trigger(void) { last_matrix_modification_time = last_input_modification_time = timer_read32(); } | ||
| 108 | |||
| 109 | static uint32_t last_encoder_modification_time = 0; | ||
| 110 | uint32_t last_encoder_activity_time(void) { return last_encoder_modification_time; } | ||
| 111 | uint32_t last_encoder_activity_elapsed(void) { return timer_elapsed32(last_encoder_modification_time); } | ||
| 112 | void 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 | ||
