Working on Morse Code Macros

This commit is contained in:
Ante Laurijssen 2017-06-07 22:01:28 -04:00
parent 1b8ed53f21
commit 8f80f35186

View 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;