Created special shift keys for Morse layer that change variable value, enabling to send “shifted” special morse code characters.
This commit is contained in:
		
							parent
							
								
									8f80f35186
								
							
						
					
					
						commit
						7146dfea6e
					
				
					 1 changed files with 29 additions and 143 deletions
				
			
		| 
						 | 
				
			
			@ -258,7 +258,9 @@ enum morse_macros {
 | 
			
		|||
// Custom Keys
 | 
			
		||||
 | 
			
		||||
enum custom_keys {
 | 
			
		||||
  MAGSYS, // Magic SysRq key - Sends Alt-PSCR
 | 
			
		||||
  MAGSYS = SAFE_RANGE, // Magic SysRq key - Sends Alt-PSCR
 | 
			
		||||
  MC_LSFT,
 | 
			
		||||
  MC_RSFT,
 | 
			
		||||
  TFS = LCTL(LALT(KC_DEL)), // Three Finger Salute - Sends Ctl-Alt-Del
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -401,49 +403,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
				   TO(0),  MC_1,  MC_2,  MC_3,  MC_4,  MC_5,  MC_6,  MC_7,  MC_8,  MC_9,  MC_0,  KC_NO,  KC_NO,  KC_NO,  KC_NO, \
 | 
			
		||||
				   KC_TAB,  MC_APOS,  MC_COMM, MC_DOT,  MC_P,  MC_Y,  MC_F,  MC_G,  MC_C,  MC_R,  MC_L,  MC_SLSH,  MC_EQL,  KC_BSPC, \
 | 
			
		||||
				   KC_NO,  MC_A,  MC_O,  MC_E,  MC_U,  MC_I,  MC_D,  MC_H,  MC_T,  MC_N,  MC_S,  MC_MINS,  KC_NO,  KC_ENT, \
 | 
			
		||||
				   KC_LSFT,  KC_NO,  MC_SCLN,  MC_Q,  MC_J,  MC_K,  MC_X,  MC_B,  MC_M,  MC_W,  MC_V,  MC_Z,  KC_NO,  KC_RSFT,  KC_NO, \
 | 
			
		||||
				   MC_LSFT,  KC_NO,  MC_SCLN,  MC_Q,  MC_J,  MC_K,  MC_X,  MC_B,  MC_M,  MC_W,  MC_V,  MC_Z,  KC_NO,  MC_RSFT,  KC_NO, \
 | 
			
		||||
				   KC_NO, KC_NO, KC_NO,   MC_SPACE,  KC_NO,  KC_NO,  KC_NO, KC_NO
 | 
			
		||||
				   ),
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// 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
 | 
			
		||||
 | 
			
		||||
int mc_shift_on = false;
 | 
			
		||||
 | 
			
		||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		||||
  uint16_t is_shift = check_shift();
 | 
			
		||||
  switch(id) {
 | 
			
		||||
  case 0: //Number 0-)
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (is_shift == false) {
 | 
			
		||||
		  return MACRO(T(MINS), T(MINS), T(MINS), T(MINS), T(MINS), T(SPACE), END); //-----
 | 
			
		||||
		}
 | 
			
		||||
	  else {
 | 
			
		||||
		unregister_mods(MOD_BIT(is_shift));
 | 
			
		||||
	  if (mc_shift_on == true) {
 | 
			
		||||
		return MACRO(T(MINS), T(DOT), T(MINS), T(MINS), T(DOT), T(MINS), T(SPACE), END); //-.--.-
 | 
			
		||||
		register_code(is_shift);
 | 
			
		||||
	  }
 | 
			
		||||
	  else {
 | 
			
		||||
		return MACRO(T(MINS), T(MINS), T(MINS), T(MINS), T(MINS), T(SPACE), END); //-----
 | 
			
		||||
	  }
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 1: //Number 1-!
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  if (mc_shift_on == true) {
 | 
			
		||||
		return MACRO(T(MINS), T(DOT), T(MINS), T(DOT), T(MINS), T(MINS), T(SPACE), END); //-.-.--
 | 
			
		||||
	  }
 | 
			
		||||
	  else {
 | 
			
		||||
| 
						 | 
				
			
			@ -453,8 +437,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		|||
	break;
 | 
			
		||||
  case 2: //Number 2-@
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  if (mc_shift_on == true) {
 | 
			
		||||
		return MACRO(T(DOT), T(MINS), T(MINS), T(DOT), T(MINS), T(DOT), T(SPACE), END); //.--.-.
 | 
			
		||||
	  }
 | 
			
		||||
	  else {
 | 
			
		||||
| 
						 | 
				
			
			@ -464,16 +447,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		|||
	break;
 | 
			
		||||
  case 3: // Number 3
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(DOT), T(DOT), T(MINS), T(MINS), T(SPACE), END); //...--
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 4: //Number 4-$
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  if (mc_shift_on == true) {		
 | 
			
		||||
		return MACRO(T(DOT), T(DOT), T(DOT), T(MINS), T(DOT), T(DOT), T(MINS), T(SPACE), END); //...-..-
 | 
			
		||||
	  }
 | 
			
		||||
	  else {
 | 
			
		||||
| 
						 | 
				
			
			@ -483,24 +462,17 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		|||
	break;
 | 
			
		||||
  case 5: //Number 5
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(DOT), T(DOT), T(DOT), T(DOT), T(SPACE), END); //.....
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 6: //Number 6
 | 
			
		||||
	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(DOT), T(DOT), T(DOT), T(SPACE), END); //-....
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 7: //Number 7-&
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  if (mc_shift_on == true) {		
 | 
			
		||||
		return MACRO(T(DOT), T(MINS), T(DOT), T(DOT), T(DOT), T(SPACE), END); //.-...
 | 
			
		||||
	  }
 | 
			
		||||
	  else {
 | 
			
		||||
| 
						 | 
				
			
			@ -510,16 +482,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		|||
	break;
 | 
			
		||||
  case 8: //Number 8
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(MINS), T(MINS), T(MINS), T(DOT), T(DOT), T(SPACE), END); //---..
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 9: //Number 9-(
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  if (mc_shift_on == true) {		
 | 
			
		||||
		return MACRO(T(MINS), T(DOT), T(MINS), T(MINS), T(DOT), T(SPACE), END); //-.--.
 | 
			
		||||
	  }
 | 
			
		||||
	  else {
 | 
			
		||||
| 
						 | 
				
			
			@ -529,232 +497,149 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		|||
	break;
 | 
			
		||||
  case 10: //Letter A
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(MINS), T(SPACE), END); //.-
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 11: //Letter B
 | 
			
		||||
	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(DOT), T(DOT), T(SPACE), END); //-...
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 12: //Letter C
 | 
			
		||||
	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(DOT), T(SPACE), END); //-.-.
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 13: //Letter D
 | 
			
		||||
	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(DOT), T(SPACE), END); //-..
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 14: //Letter E
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(SPACE), END); //.
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 15: //Letter F
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(DOT), T(MINS), T(DOT), T(SPACE), END); //..-.
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 16: //Letter G
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(MINS), T(MINS), T(DOT), T(SPACE), END); //--.
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 17: //Letter H
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(DOT), T(DOT), T(DOT), T(SPACE), END); //....
 | 
			
		||||
	}
 | 
			
		||||
	break; 
 | 
			
		||||
  case 18: //Letter I
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(DOT), T(SPACE), END); //..
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 19: //Letter J
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(MINS), T(MINS), T(MINS), T(SPACE), END); //.---
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 20: //Letter K
 | 
			
		||||
	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(SPACE), END); //-.-
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 21: //Letter L
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(MINS), T(DOT), T(DOT), T(SPACE), END); //.-..
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 22: //Letter M
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(MINS), T(MINS), T(SPACE), END); //--
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 23: //Letter N
 | 
			
		||||
	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(SPACE), END); //-.
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 24: //Letter O
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(MINS), T(MINS), T(MINS), T(SPACE), END); //---
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 25: //Letter P
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(MINS), T(MINS), T(DOT), T(SPACE), END); //.--.
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 26: //Letter Q
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(MINS), T(MINS), T(DOT), T(MINS), T(SPACE), END); //--.-
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 27: //Letter R
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(MINS), T(DOT), T(SPACE), END); //.-.
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 28: //Letter S
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(DOT), T(DOT), T(SPACE), END); //...
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 29: //Letter T
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(MINS), T(SPACE), END); //-
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 30: //Letter U
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(DOT), T(MINS), T(SPACE), END); //..-
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 31: //Letter V
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(DOT), T(DOT), T(MINS), T(SPACE), END); //...-
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 32: //Letter W
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(MINS), T(MINS), T(SPACE), END); //.--
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 33: //Letter X
 | 
			
		||||
	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(DOT), T(MINS), T(SPACE), END); //-..-
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 34: //Letter Y
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  if (mc_shift_on == true) {		
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(MINS), T(DOT), T(MINS), T(MINS), T(SPACE), END); //-.--
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 35: //Letter Z
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(MINS), T(MINS), T(DOT), T(DOT), T(SPACE), END); //--..
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 36: //Punctuation .
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(DOT), T(MINS), T(DOT), T(MINS), T(DOT), T(MINS), T(SPACE), END); //.-.-.-
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 37: //Punctuation ,
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(MINS), T(MINS), T(DOT), T(DOT), T(MINS), T(MINS), T(SPACE), END); //--..--
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case 38: //Punctuation '-"
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  if (mc_shift_on == true) {		
 | 
			
		||||
		return MACRO(T(DOT), T(MINS), T(DOT), T(DOT), T(MINS), T(DOT), T(SPACE), END); //.-..-.
 | 
			
		||||
	  }
 | 
			
		||||
	  else {
 | 
			
		||||
| 
						 | 
				
			
			@ -764,8 +649,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		|||
	break;
 | 
			
		||||
  case 39: //Punctuation /-?
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  if (mc_shift_on == true) {		
 | 
			
		||||
		return MACRO(T(DOT), T(DOT), T(MINS), T(MINS), T(DOT), T(DOT), T(SPACE), END); //..--..
 | 
			
		||||
	  }
 | 
			
		||||
	  else {
 | 
			
		||||
| 
						 | 
				
			
			@ -775,8 +659,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		|||
	break;
 | 
			
		||||
  case 40: //Punctuation ;-:
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  if (mc_shift_on == true) {		
 | 
			
		||||
		return MACRO(T(MINS), T(MINS), T(MINS), T(DOT), T(DOT), T(DOT), T(SPACE), END); //---...
 | 
			
		||||
	  }
 | 
			
		||||
	  else {
 | 
			
		||||
| 
						 | 
				
			
			@ -786,8 +669,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		|||
	break;
 | 
			
		||||
  case 41: //Punctuation =-+
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  if (mc_shift_on == true) {		
 | 
			
		||||
		return MACRO(T(DOT), T(MINS), T(DOT), T(MINS), T(DOT), T(SPACE), END); //.-.-.
 | 
			
		||||
	  }
 | 
			
		||||
	  else {
 | 
			
		||||
| 
						 | 
				
			
			@ -797,8 +679,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		|||
	break;
 | 
			
		||||
  case 42: //Punctuation --_
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  if (mc_shift_on == true) {		
 | 
			
		||||
		return MACRO(T(DOT), T(DOT), T(MINS), T(MINS), T(DOT), T(MINS), T(SPACE), END); //..--.-
 | 
			
		||||
	  }
 | 
			
		||||
	  else {
 | 
			
		||||
| 
						 | 
				
			
			@ -808,9 +689,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
			
		|||
	break;
 | 
			
		||||
  case 43: //Morse Space
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  if (keyboard_report->mods & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) {
 | 
			
		||||
		clear_mods();
 | 
			
		||||
	  }
 | 
			
		||||
	  return MACRO(T(BSLS), T(SPACE), END); //When pressed, this sends a slash followed by a space, making it easier to distinguish words in Morse
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
| 
						 | 
				
			
			@ -833,6 +711,14 @@ bool process_record_user (uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
	  }
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  case MC_LSFT ... MC_RSFT:
 | 
			
		||||
	if (record->event.pressed) {
 | 
			
		||||
	  mc_shift_on = true;
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
	  mc_shift_on = false;
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
  }
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue