diff --git a/keyboards/planck/keymaps/zach/Makefile b/keyboards/planck/keymaps/zach/Makefile
index 977f1a9013..9d86fc81fc 100644
--- a/keyboards/planck/keymaps/zach/Makefile
+++ b/keyboards/planck/keymaps/zach/Makefile
@@ -17,7 +17,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
#VARIABLE_TRACE = no # Debug changes to variable values
-UNICODE_ENABLE = yes # Unicode
+UNICODE_ENABLE = no # Unicode (can't be used with unicodemap)
UNICODEMAP_ENABLE = yes # Enable extended unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
diff --git a/keyboards/planck/keymaps/zach/config.h b/keyboards/planck/keymaps/zach/config.h
index 7deb9ebfe8..d309c94935 100644
--- a/keyboards/planck/keymaps/zach/config.h
+++ b/keyboards/planck/keymaps/zach/config.h
@@ -77,7 +77,7 @@ along with this program. If not, see .
/* disable action features */
//#define NO_ACTION_LAYER
#define NO_ACTION_TAPPING
-#define NO_ACTION_ONESHOT
+//#define NO_ACTION_ONESHOT
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
#define PREVENT_STUCK_MODIFIERS
diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c
index b77f2b2418..2c47b22896 100644
--- a/keyboards/planck/keymaps/zach/zach_common_functions.c
+++ b/keyboards/planck/keymaps/zach/zach_common_functions.c
@@ -141,31 +141,31 @@ qk_tap_dance_action_t tap_dance_actions[] = {
};
#endif
-#ifdef UNICODE_ENABLE
+//#ifdef UNICODE_ENABLE
// Unicode shortcuts
-#define IBANG UC(0x203D)
-#define RAROW UC(0x2192)
-#define LAROW UC(0x2190)
-#define DEGREE UC(0x00B0)
-#define OMEGA UC(0x03A9)
-#define WOMEGA UC(0x03C9)
-#define MICRO UC(0x00B5)
-#define PLUMIN UC(0x00B1)
-#define SUPA2 UC(0x00B2)
-#define ROMAN1 UC(0x2160)
-#define ROMAN2 UC(0x2161)
-#define ROMAN3 UC(0x2162)
-#define ROMAN4 UC(0x2163)
-#define ROMAN5 UC(0x2164)
-#define ROMAN6 UC(0x2165)
-#define ROMAN7 UC(0x2166)
-#define roman1 UC(0x2170)
-#define roman2 UC(0x2171)
-#define roman3 UC(0x2172)
-#define roman4 UC(0x2173)
-#define roman5 UC(0x2174)
-#define roman6 UC(0x2175)
-#define roman7 UC(0x2176)
+#define IBANG X(0x203D)
+#define RAROW X(0x2192)
+#define LAROW X(0x2190)
+#define DEGREE X(0x00B0)
+#define OMEGA X(0x03A9)
+#define WOMEGA X(0x03C9)
+#define MICRO X(0x00B5)
+#define PLUMIN X(0x00B1)
+#define SUPA2 X(0x00B2)
+#define ROMAN1 X(0x2160)
+#define ROMAN2 X(0x2161)
+#define ROMAN3 X(0x2162)
+#define ROMAN4 X(0x2163)
+#define ROMAN5 X(0x2164)
+#define ROMAN6 X(0x2165)
+#define ROMAN7 X(0x2166)
+#define roman1 X(0x2170)
+#define roman2 X(0x2171)
+#define roman3 X(0x2172)
+#define roman4 X(0x2173)
+#define roman5 X(0x2174)
+#define roman6 X(0x2175)
+#define roman7 X(0x2176)
#ifdef UNICODEMAP_ENABLE // For Unicode characters larger than 0x8000. Send with X()
enum Ext_Unicode{
@@ -192,7 +192,7 @@ const uint32_t PROGMEM unicode_map[] = {
#define TMBL X(TUMBLER)
#endif
-#endif
+//#endif
static uint16_t key_timer;
static uint8_t caps_status = 0;
diff --git a/keyboards/preonic/keymaps/zach/Makefile b/keyboards/preonic/keymaps/zach/Makefile
index f0a84abac4..eebf413495 100644
--- a/keyboards/preonic/keymaps/zach/Makefile
+++ b/keyboards/preonic/keymaps/zach/Makefile
@@ -17,8 +17,8 @@ BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = yes # Audio output on port C6
#VARIABLE_TRACE = no # Debug changes to variable values
-UNICODE_ENABLE = yes # Unicode
-UNICODEMAP_ENABLE = no # Enable extended unicode
+UNICODE_ENABLE = no # Unicode
+UNICODEMAP_ENABLE = yes # Enable extended unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
diff --git a/keyboards/preonic/keymaps/zach/config.h b/keyboards/preonic/keymaps/zach/config.h
index 59959524fa..bb8913c7af 100644
--- a/keyboards/preonic/keymaps/zach/config.h
+++ b/keyboards/preonic/keymaps/zach/config.h
@@ -84,7 +84,7 @@ along with this program. If not, see .
/* disable action features */
//#define NO_ACTION_LAYER
#define NO_ACTION_TAPPING
-#define NO_ACTION_ONESHOT
+//#define NO_ACTION_ONESHOT
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
#define PREVENT_STUCK_MODIFIERS
diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c
index b77f2b2418..2c47b22896 100644
--- a/keyboards/preonic/keymaps/zach/zach_common_functions.c
+++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c
@@ -141,31 +141,31 @@ qk_tap_dance_action_t tap_dance_actions[] = {
};
#endif
-#ifdef UNICODE_ENABLE
+//#ifdef UNICODE_ENABLE
// Unicode shortcuts
-#define IBANG UC(0x203D)
-#define RAROW UC(0x2192)
-#define LAROW UC(0x2190)
-#define DEGREE UC(0x00B0)
-#define OMEGA UC(0x03A9)
-#define WOMEGA UC(0x03C9)
-#define MICRO UC(0x00B5)
-#define PLUMIN UC(0x00B1)
-#define SUPA2 UC(0x00B2)
-#define ROMAN1 UC(0x2160)
-#define ROMAN2 UC(0x2161)
-#define ROMAN3 UC(0x2162)
-#define ROMAN4 UC(0x2163)
-#define ROMAN5 UC(0x2164)
-#define ROMAN6 UC(0x2165)
-#define ROMAN7 UC(0x2166)
-#define roman1 UC(0x2170)
-#define roman2 UC(0x2171)
-#define roman3 UC(0x2172)
-#define roman4 UC(0x2173)
-#define roman5 UC(0x2174)
-#define roman6 UC(0x2175)
-#define roman7 UC(0x2176)
+#define IBANG X(0x203D)
+#define RAROW X(0x2192)
+#define LAROW X(0x2190)
+#define DEGREE X(0x00B0)
+#define OMEGA X(0x03A9)
+#define WOMEGA X(0x03C9)
+#define MICRO X(0x00B5)
+#define PLUMIN X(0x00B1)
+#define SUPA2 X(0x00B2)
+#define ROMAN1 X(0x2160)
+#define ROMAN2 X(0x2161)
+#define ROMAN3 X(0x2162)
+#define ROMAN4 X(0x2163)
+#define ROMAN5 X(0x2164)
+#define ROMAN6 X(0x2165)
+#define ROMAN7 X(0x2166)
+#define roman1 X(0x2170)
+#define roman2 X(0x2171)
+#define roman3 X(0x2172)
+#define roman4 X(0x2173)
+#define roman5 X(0x2174)
+#define roman6 X(0x2175)
+#define roman7 X(0x2176)
#ifdef UNICODEMAP_ENABLE // For Unicode characters larger than 0x8000. Send with X()
enum Ext_Unicode{
@@ -192,7 +192,7 @@ const uint32_t PROGMEM unicode_map[] = {
#define TMBL X(TUMBLER)
#endif
-#endif
+//#endif
static uint16_t key_timer;
static uint8_t caps_status = 0;
diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c
index 68c8425bb4..b807ec3c30 100644
--- a/quantum/process_keycode/process_tap_dance.c
+++ b/quantum/process_keycode/process_tap_dance.c
@@ -16,6 +16,8 @@
#include "quantum.h"
#include "action_tapping.h"
+uint8_t get_oneshot_mods(void);
+
static uint16_t last_td;
static int8_t highest_td = -1;
diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c
index 1f16b9bdb2..678a15234d 100644
--- a/quantum/process_keycode/process_unicode.c
+++ b/quantum/process_keycode/process_unicode.c
@@ -16,6 +16,7 @@
#include "process_unicode.h"
#include "action_util.h"
+static uint8_t first_flag = 0;
bool process_unicode(uint16_t keycode, keyrecord_t *record) {
if (keycode > QK_UNICODE && record->event.pressed) {
diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c
index b4d4231dbd..1dbdec3e71 100644
--- a/quantum/process_keycode/process_unicode_common.c
+++ b/quantum/process_keycode/process_unicode_common.c
@@ -17,7 +17,6 @@
#include "process_unicode_common.h"
static uint8_t input_mode;
-static uint8_t first_flag = 0;
uint8_t mods;
void set_unicode_input_mode(uint8_t os_target)