From cfc4149712217625fcb75e50348094fd9df432f5 Mon Sep 17 00:00:00 2001
From: Luke Silva <lukemasilva@gmail.com>
Date: Fri, 27 Jan 2017 10:28:42 +1100
Subject: [PATCH] Add ability to use tap macros without using functions

---
 quantum/keymap_common.c    | 5 ++++-
 quantum/quantum_keycodes.h | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c
index eced3d2bba..5190f24e87 100644
--- a/quantum/keymap_common.c
+++ b/quantum/keymap_common.c
@@ -80,7 +80,10 @@ action_t action_for_key(uint8_t layer, keypos_t key)
             action.code = keymap_function_id_to_action( (int)keycode & 0xFFF );
             break;
         case QK_MACRO ... QK_MACRO_MAX:
-            action.code = ACTION_MACRO(keycode & 0xFF);
+            if (keycode & 0x800) // tap macros have upper bit set
+                action.code = ACTION_MACRO_TAP(keycode & 0xFF);
+            else
+                action.code = ACTION_MACRO(keycode & 0xFF);
             break;
         case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
             action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF);
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 4853655f95..4566395fd8 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -246,6 +246,7 @@ enum quantum_keycodes {
 
 #define M(kc) (kc | QK_MACRO)
 
+#define MACROTAP(kc) (kc | QK_MACRO | FUNC_TAP<<8)
 #define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)
 
 // L-ayer, T-ap - 256 keycode max, 16 layer max