Make modifiers 'weak' in macro
authortmk <nobody@nowhere>
Tue, 28 Jan 2014 01:55:51 +0000 (10:55 +0900)
committertmk <nobody@nowhere>
Tue, 28 Jan 2014 01:55:51 +0000 (10:55 +0900)
common/action_macro.c

index cc7ac18a099215defdf2772dfea49a37fef263c0..d85aee3796e58a85196fae6765f3025be53d84c7 100644 (file)
@@ -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();
Imprint / Impressum