]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Working on Morse Code Macros
authorAnte Laurijssen <antelaurijssen@gmail.com>
Thu, 8 Jun 2017 02:01:28 +0000 (22:01 -0400)
committerAnte Laurijssen <antelaurijssen@gmail.com>
Thu, 8 Jun 2017 02:01:28 +0000 (22:01 -0400)
keyboards/s60_x/keymaps/bluebear/keymap.c

index 22356db2b335d4fc2354b9c34060bd2f67201aef..1ecddb8d5bb3ef393b6cf13478d8a7eeb9af56b2 100644 (file)
@@ -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;