]> git.donarmstrong.com Git - qmk_firmware.git/blob - quantum/debounce.c
Force backlight on when led matrix is enabled
[qmk_firmware.git] / quantum / debounce.c
1
2 #include "matrix.h"
3 #include "timer.h"
4 #include "quantum.h"
5
6 #ifndef DEBOUNCING_DELAY
7 #  define DEBOUNCING_DELAY 5
8 #endif
9
10 void debounce_init(uint8_t num_rows) {
11 }
12
13 #if DEBOUNCING_DELAY > 0
14
15 static bool debouncing = false;
16
17 void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
18   static uint16_t debouncing_time;
19
20   if (changed) {
21     debouncing = true;
22     debouncing_time = timer_read();
23   }
24
25   if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCING_DELAY)) {
26     for (uint8_t i = 0; i < num_rows; i++) {
27       cooked[i] = raw[i];
28     }
29     debouncing = false;
30   }
31 }
32
33 bool debounce_active(void) {
34   return debouncing;
35 }
36
37 #else
38
39 // no debounce
40 void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
41   if (changed)
42   {
43   for (uint8_t i = 0; i < num_rows; i++) {
44       cooked[i] = raw[i];
45     }
46   }
47 }
48
49 bool debounce_active(void) {
50   return false;
51 }
52 #endif