From 8f80f35186353801b960d536339b70f43f484c46 Mon Sep 17 00:00:00 2001
From: Ante Laurijssen <antelaurijssen@gmail.com>
Date: Wed, 7 Jun 2017 22:01:28 -0400
Subject: Working on Morse Code Macros

---
 keyboards/s60_x/keymaps/bluebear/keymap.c | 33 ++++++++++++++++++++++---------
 1 file changed, 24 insertions(+), 9 deletions(-)

(limited to 'keyboards')

diff --git a/keyboards/s60_x/keymaps/bluebear/keymap.c b/keyboards/s60_x/keymaps/bluebear/keymap.c
index 22356db2b3..1ecddb8d5b 100644
--- a/keyboards/s60_x/keymaps/bluebear/keymap.c
+++ b/keyboards/s60_x/keymaps/bluebear/keymap.c
@@ -407,21 +407,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 };
 
-// Macros
+// Custom Function - Check if shift is pressed
+
+bool check_shift(void);
+
+bool check_shift() {
+  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT))) {
+	return KC_LSHIFT;
+  }
+  if (keyboard_report->mods & (MOD_BIT(KC_RSHIFT))) {
+	return KC_RSHIFT;
+  }
+  else {
+	return false;
+  }
+}
+
+// Morse Code Macros
 
 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  uint16_t is_shift = check_shift();
   switch(id) {
-	
-	// Morse Code Macros
-	
   case 0: //Number 0-)
 	if (record->event.pressed) {
-	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
-		clear_mods();
-		return MACRO(T(MINS), T(DOT), T(MINS), T(MINS), T(DOT), T(MINS), T(SPACE), END); //-.--.-
-	  }
+	  if (is_shift == false) {
+		  return MACRO(T(MINS), T(MINS), T(MINS), T(MINS), T(MINS), T(SPACE), END); //-----
+		}
 	  else {
-		return MACRO(T(MINS), T(MINS), T(MINS), T(MINS), T(MINS), T(SPACE), END); //-----
+		unregister_mods(MOD_BIT(is_shift));
+		return MACRO(T(MINS), T(DOT), T(MINS), T(MINS), T(DOT), T(MINS), T(SPACE), END); //-.--.-
+		register_code(is_shift);
 	  }
 	}
 	break;
-- 
cgit v1.2.3