|
|
@ -147,7 +147,7 @@ __attribute__((weak)) const uint8_t ascii_to_keycode_lut[128] PROGMEM = { |
|
|
|
#define PGM_LOADBIT(mem, pos) ((pgm_read_byte(&((mem)[(pos) / 8])) >> ((pos) % 8)) & 0x01) |
|
|
|
|
|
|
|
void send_string(const char *string) { |
|
|
|
send_string_with_delay(string, 0); |
|
|
|
send_string_with_delay(string, TAP_CODE_DELAY); |
|
|
|
} |
|
|
|
|
|
|
|
void send_string_with_delay(const char *string, uint8_t interval) { |
|
|
@ -156,6 +156,7 @@ void send_string_with_delay(const char *string, uint8_t interval) { |
|
|
|
if (!ascii_code) break; |
|
|
|
if (ascii_code == SS_QMK_PREFIX) { |
|
|
|
ascii_code = *(++string); |
|
|
|
|
|
|
|
if (ascii_code == SS_TAP_CODE) { |
|
|
|
// tap |
|
|
|
uint8_t keycode = *(++string); |
|
|
@ -172,28 +173,30 @@ void send_string_with_delay(const char *string, uint8_t interval) { |
|
|
|
// delay |
|
|
|
int ms = 0; |
|
|
|
uint8_t keycode = *(++string); |
|
|
|
|
|
|
|
while (isdigit(keycode)) { |
|
|
|
ms *= 10; |
|
|
|
ms += keycode - '0'; |
|
|
|
keycode = *(++string); |
|
|
|
} |
|
|
|
while (ms--) |
|
|
|
wait_ms(1); |
|
|
|
|
|
|
|
wait_ms(ms); |
|
|
|
} |
|
|
|
|
|
|
|
wait_ms(interval); |
|
|
|
} else { |
|
|
|
send_char(ascii_code); |
|
|
|
send_char_with_delay(ascii_code, interval); |
|
|
|
} |
|
|
|
|
|
|
|
++string; |
|
|
|
// interval |
|
|
|
{ |
|
|
|
uint8_t ms = interval; |
|
|
|
while (ms--) |
|
|
|
wait_ms(1); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void send_char(char ascii_code) { |
|
|
|
send_char_with_delay(ascii_code, TAP_CODE_DELAY); |
|
|
|
} |
|
|
|
|
|
|
|
void send_char_with_delay(char ascii_code, uint8_t interval) { |
|
|
|
#if defined(AUDIO_ENABLE) && defined(SENDSTRING_BELL) |
|
|
|
if (ascii_code == '\a') { // BEL |
|
|
|
PLAY_SONG(bell_song); |
|
|
@ -208,19 +211,30 @@ void send_char(char ascii_code) { |
|
|
|
|
|
|
|
if (is_shifted) { |
|
|
|
register_code(KC_LEFT_SHIFT); |
|
|
|
wait_ms(interval); |
|
|
|
} |
|
|
|
|
|
|
|
if (is_altgred) { |
|
|
|
register_code(KC_RIGHT_ALT); |
|
|
|
wait_ms(interval); |
|
|
|
} |
|
|
|
tap_code(keycode); |
|
|
|
|
|
|
|
tap_code_delay(keycode, interval); |
|
|
|
wait_ms(interval); |
|
|
|
|
|
|
|
if (is_altgred) { |
|
|
|
unregister_code(KC_RIGHT_ALT); |
|
|
|
wait_ms(interval); |
|
|
|
} |
|
|
|
|
|
|
|
if (is_shifted) { |
|
|
|
unregister_code(KC_LEFT_SHIFT); |
|
|
|
wait_ms(interval); |
|
|
|
} |
|
|
|
|
|
|
|
if (is_dead) { |
|
|
|
tap_code(KC_SPACE); |
|
|
|
wait_ms(interval); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|