Просмотр исходного кода

Merge remote-tracking branch 'origin/develop' into xap

QMK Bot 3 лет назад
Родитель
Сommit
227bfbc168
2 измененных файлов с 15 добавлено и 1 удалено
  1. 13 1
      quantum/keyboard.c
  2. 2 0
      quantum/matrix.h

+ 13 - 1
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);

+ 2 - 0
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 */