From d369bfb83a74d94ed0fbb13f8ee3a8a1146da770 Mon Sep 17 00:00:00 2001
From: Priyadi Iman Nurcahyo <priyadi@priyadi.net>
Date: Wed, 15 Feb 2017 05:02:15 +0700
Subject: [PATCH 1/3] Add layer_state_set_kb hook

---
 tmk_core/common/action_layer.c | 6 ++++++
 tmk_core/common/action_layer.h | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c
index a3c757964..3363a2e53 100644
--- a/tmk_core/common/action_layer.c
+++ b/tmk_core/common/action_layer.c
@@ -57,8 +57,14 @@ void default_layer_xor(uint32_t state)
  */
 uint32_t layer_state = 0;
 
+__attribute__((weak))
+uint32_t layer_state_set_kb(uint32_t state) {
+    return state;
+}
+
 static void layer_state_set(uint32_t state)
 {
+    state = layer_state_set_kb(state);
     dprint("layer_state: ");
     layer_debug(); dprint(" to ");
     layer_state = state;
diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h
index 025cf5420..fc714700d 100644
--- a/tmk_core/common/action_layer.h
+++ b/tmk_core/common/action_layer.h
@@ -69,6 +69,8 @@ void layer_xor(uint32_t state);
 #define layer_xor(state)
 #define layer_debug()
 
+__attribute__((weak))
+void layer_state_set_kb(uint32_t oldstate, uint32_t newstate);
 #endif
 
 /* pressed actions cache */

From d96175937bfa9f700d9ee54c20e5d963c12d02df Mon Sep 17 00:00:00 2001
From: Priyadi Iman Nurcahyo <priyadi@priyadi.net>
Date: Wed, 15 Feb 2017 05:19:31 +0700
Subject: [PATCH 2/3] Bug fix & added default_layer_state_set_kb

---
 tmk_core/common/action_layer.c | 6 ++++++
 tmk_core/common/action_layer.h | 7 +++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c
index 3363a2e53..58d919a04 100644
--- a/tmk_core/common/action_layer.c
+++ b/tmk_core/common/action_layer.c
@@ -16,8 +16,14 @@
  */
 uint32_t default_layer_state = 0;
 
+__attribute__((weak))
+uint32_t default_layer_state_set_kb(uint32_t state) {
+    return state;
+}
+
 static void default_layer_state_set(uint32_t state)
 {
+    state = default_layer_state_set_kb(state);
     debug("default_layer_state: ");
     default_layer_debug(); debug(" to ");
     default_layer_state = state;
diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h
index fc714700d..785bb5be4 100644
--- a/tmk_core/common/action_layer.h
+++ b/tmk_core/common/action_layer.h
@@ -27,7 +27,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 extern uint32_t default_layer_state;
 void default_layer_debug(void);
-void default_layer_set(uint32_t state);
+uint32_t default_layer_set(uint32_t state);
+
+__attribute__((weak))
+void default_layer_state_set_kb(uint32_t state);
 
 #ifndef NO_ACTION_LAYER
 /* bitwise operation */
@@ -70,7 +73,7 @@ void layer_xor(uint32_t state);
 #define layer_debug()
 
 __attribute__((weak))
-void layer_state_set_kb(uint32_t oldstate, uint32_t newstate);
+uint32_t layer_state_set_kb(uint32_t state);
 #endif
 
 /* pressed actions cache */

From bd8d717f1ff2eef42dfef490374a8cee61be5d87 Mon Sep 17 00:00:00 2001
From: Priyadi Iman Nurcahyo <priyadi@priyadi.net>
Date: Wed, 15 Feb 2017 05:25:08 +0700
Subject: [PATCH 3/3] Fix bug fix attempt

---
 tmk_core/common/action_layer.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h
index 785bb5be4..d89ed6e5c 100644
--- a/tmk_core/common/action_layer.h
+++ b/tmk_core/common/action_layer.h
@@ -27,10 +27,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 extern uint32_t default_layer_state;
 void default_layer_debug(void);
-uint32_t default_layer_set(uint32_t state);
+void default_layer_set(uint32_t state);
 
 __attribute__((weak))
-void default_layer_state_set_kb(uint32_t state);
+uint32_t default_layer_state_set_kb(uint32_t state);
 
 #ifndef NO_ACTION_LAYER
 /* bitwise operation */