]> git.friedersdorff.com Git - max/tmk_keyboard.git/blobdiff - common/keyboard.c
Refactor struct keyevent_t.
[max/tmk_keyboard.git] / common / keyboard.c
index 1e0b8c3edbf65577beb2b30aec170952d52f3683..ea4d0ee7e6128457479a286250113a690fe091b4 100644 (file)
@@ -66,9 +66,9 @@ void keyboard_task(void)
             for (int c = 0; c < MATRIX_COLS; c++) {
                 if (matrix_change & (1<<c)) {
                     action_exec((keyevent_t){
-                        .key = (keypos_t){ .row = r, .col = c },
+                        .key.pos  = (keypos_t){ .row = r, .col = c },
                         .pressed = (matrix_row & (1<<c)),
-                        .time = timer_read()
+                        .time = (timer_read() | 1) /* NOTE: 0 means no event */
                     });
                     // record a processed key
                     matrix_prev[r] ^= (1<<c);
@@ -78,7 +78,14 @@ void keyboard_task(void)
             }
         }
     }
-    MATRIX_LOOP_END:
+    // call to update delaying layer when no real event
+    action_exec((keyevent_t) {
+        .key.pos = (keypos_t){ .row = 255, .col = 255 }, // assume this key doesn't exist
+        .pressed = false,
+        .time = 0,
+    });
+
+MATRIX_LOOP_END:
 
 #ifdef MOUSEKEY_ENABLE
     // mousekey repeat & acceleration