Răsfoiți Sursa

Make modifiers 'weak' in macro

tmk 11 ani în urmă
părinte
comite
cb3a547ebf
1 a modificat fișierele cu 11 adăugiri și 2 ștergeri
  1. 11 2
      common/action_macro.c

+ 11 - 2
common/action_macro.c

@@ -16,6 +16,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include <util/delay.h>
 #include "action.h"
+#include "action_util.h"
 #include "action_macro.h"
 
 #ifdef DEBUG_ACTION
@@ -39,12 +40,20 @@ void action_macro_play(const macro_t *macro_p)
             case KEY_DOWN:
                 MACRO_READ();
                 dprintf("KEY_DOWN(%02X)\n", macro);
-                register_code(macro);
+                if (IS_MOD(macro)) {
+                    add_weak_mods(MOD_BIT(macro));
+                } else {
+                    register_code(macro);
+                }
                 break;
             case KEY_UP:
                 MACRO_READ();
                 dprintf("KEY_UP(%02X)\n", macro);
-                unregister_code(macro);
+                if (IS_MOD(macro)) {
+                    del_weak_mods(MOD_BIT(macro));
+                } else {
+                    unregister_code(macro);
+                }
                 break;
             case WAIT:
                 MACRO_READ();