diff --git a/quantum/quantum.c b/quantum/quantum.c
index 0fe918b365..7038228f73 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -957,13 +957,12 @@ void send_char(char ascii_code) {
 
   keycode = pgm_read_byte(&ascii_to_keycode_lut[(uint8_t)ascii_code]);
   if (pgm_read_byte(&ascii_to_shift_lut[(uint8_t)ascii_code])) { is_shifted = true; } else { is_shifted = false; }
- if (pgm_read_byte(&ascii_to_alt_lut[(uint8_t)ascii_code])) { is_alted = true; } else { is_alted = false; }
+  if (pgm_read_byte(&ascii_to_alt_lut[(uint8_t)ascii_code])) { is_alted = true; } else { is_alted = false; }
 
   if (is_shifted) { register_code(KC_LSFT); }
   if (is_alted) { register_code(KC_RALT); }
 
-  register_code(keycode);
-  unregister_code(keycode);
+  tap_code(keycode);
 
   if (is_alted) { unregister_code(KC_RALT); }
   if (is_shifted) { unregister_code(KC_LSFT); }
diff --git a/quantum/quantum.h b/quantum/quantum.h
index c7fce9a0f6..f7b278cefd 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -206,6 +206,7 @@ extern uint32_t default_layer_state;
 
 #define SEND_STRING(str) send_string_P(PSTR(str))
 extern const bool ascii_to_shift_lut[0x80];
+extern const bool ascii_to_alt_lut[0x80];
 extern const uint8_t ascii_to_keycode_lut[0x80];
 void send_string(const char *str);
 void send_string_with_delay(const char *str, uint8_t interval);