]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - tmk_core/common/action.c
[Keyboard] Added WT69-A PCB (#5721)
[qmk_firmware.git] / tmk_core / common / action.c
index 76d02bc9dff8639a37cfdf15cf3f08a6d74b6d73..d4d4ac28da79b8db3ebc4b17a4249d179dfd15ab 100644 (file)
@@ -537,7 +537,7 @@ void process_action(keyrecord_t *record, action_t action)
             action_macro_play(action_get_macro(record, action.func.id, action.func.opt));
             break;
 #endif
-#ifdef BACKLIGHT_ENABLE
+#if defined(BACKLIGHT_ENABLE) | defined(LED_MATRIX_ENABLE)
         case ACT_BACKLIGHT:
             if (!event.pressed) {
                 switch (action.backlight.opt) {
@@ -653,7 +653,7 @@ void process_action(keyrecord_t *record, action_t action)
 
 #ifndef NO_ACTION_TAPPING
   #ifdef RETRO_TAPPING
-  if (!is_tap_key(record->event.key)) {
+  if (!is_tap_action(action)) {
     retro_tapping_counter = 0;
   } else {
     if (event.pressed) {
@@ -777,6 +777,7 @@ void register_code(uint8_t code)
     #ifdef MOUSEKEY_ENABLE
       else if IS_MOUSEKEY(code) {
         mousekey_on(code);
+        mousekey_send();
       }
     #endif
 }
@@ -841,10 +842,23 @@ void unregister_code(uint8_t code)
     #ifdef MOUSEKEY_ENABLE
       else if IS_MOUSEKEY(code) {
         mousekey_off(code);
+        mousekey_send();
       }
     #endif
 }
 
+/** \brief Utilities for actions. (FIXME: Needs better description)
+ *
+ * FIXME: Needs documentation.
+ */
+void tap_code(uint8_t code) {
+  register_code(code);
+  #if TAP_CODE_DELAY > 0
+    wait_ms(TAP_CODE_DELAY);
+  #endif
+  unregister_code(code);
+}
+
 /** \brief Utilities for actions. (FIXME: Needs better description)
  *
  * FIXME: Needs documentation.
@@ -884,10 +898,19 @@ void clear_keyboard(void)
  * FIXME: Needs documentation.
  */
 void clear_keyboard_but_mods(void)
+{
+    clear_keys();
+    clear_keyboard_but_mods_and_keys();
+}
+
+/** \brief Utilities for actions. (FIXME: Needs better description)
+ *
+ * FIXME: Needs documentation.
+ */
+void clear_keyboard_but_mods_and_keys()
 {
     clear_weak_mods();
     clear_macro_mods();
-    clear_keys();
     send_keyboard_report();
 #ifdef MOUSEKEY_ENABLE
     mousekey_clear();
@@ -906,7 +929,15 @@ void clear_keyboard_but_mods(void)
 bool is_tap_key(keypos_t key)
 {
     action_t action = layer_switch_get_action(key);
+    return is_tap_action(action);
+}
 
+/** \brief Utilities for actions. (FIXME: Needs better description)
+ *
+ * FIXME: Needs documentation.
+ */
+bool is_tap_action(action_t action)
+{
     switch (action.kind.id) {
         case ACT_LMODS_TAP:
         case ACT_RMODS_TAP: