diff options
Diffstat (limited to 'quantum')
| -rw-r--r-- | quantum/keyboard.c | 14 | ||||
| -rw-r--r-- | quantum/matrix.h | 2 | 
2 files changed, 15 insertions, 1 deletions
| diff --git a/quantum/keyboard.c b/quantum/keyboard.c index e8e3292dbc..ec2f2e4496 100644 --- a/quantum/keyboard.c +++ b/quantum/keyboard.c @@ -252,6 +252,14 @@ __attribute__((weak)) void keyboard_post_init_kb(void) {      keyboard_post_init_user();  } +/** \brief matrix_can_read + * + * Allows overriding when matrix scanning operations should be executed. + */ +__attribute__((weak)) bool matrix_can_read(void) { +    return true; +} +  /** \brief keyboard_setup   *   * FIXME: needs doc @@ -449,10 +457,14 @@ static inline void generate_tick_event(void) {   * @return false Matrix didn't change   */  static bool matrix_task(void) { +    if (!matrix_can_read()) { +        generate_tick_event(); +        return false; +    } +      static matrix_row_t matrix_previous[MATRIX_ROWS];      matrix_scan(); -      bool matrix_changed = false;      for (uint8_t row = 0; row < MATRIX_ROWS && !matrix_changed; row++) {          matrix_changed |= matrix_previous[row] ^ matrix_get_row(row); diff --git a/quantum/matrix.h b/quantum/matrix.h index 760d21e0c1..a5b628fc59 100644 --- a/quantum/matrix.h +++ b/quantum/matrix.h @@ -51,6 +51,8 @@ void matrix_setup(void);  void matrix_init(void);  /* scan all key states on matrix */  uint8_t matrix_scan(void); +/* whether matrix scanning operations should be executed */ +bool matrix_can_read(void);  /* whether a switch is on */  bool matrix_is_on(uint8_t row, uint8_t col);  /* matrix state on row */ | 
