summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/s60_x/keymaps/bluebear/keymap.c33
1 files changed, 24 insertions, 9 deletions
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;