aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfauxpark <fauxpark@gmail.com>2019-07-16 16:15:07 +1000
committerskullydazed <skullydazed@users.noreply.github.com>2019-07-15 23:15:07 -0700
commita5ecf146085716f3a79424c2f4b3b3039ff36b3e (patch)
treee324f9ec4e19e28cb19b6b435edca77fde73e6b1
parent26bbf6a66a6c1f606a64acafec3afdf9d3ad7e96 (diff)
downloadqmk_firmware-a5ecf146085716f3a79424c2f4b3b3039ff36b3e.tar.gz
qmk_firmware-a5ecf146085716f3a79424c2f4b3b3039ff36b3e.zip
Sendstring LUT improvements (#5727)
* Align sendstring LUTs to 9 characters wide * Replace 0 with XXXXXXX * Use decimal 128 for LUT size * Align heading comments * Add ASCII table comments * Add missing AltGr LUTs and adjust keycode LUTs accordingly * Use pragma once * Correct a couple more keycodes * Capitalise "BÉPO" * Also clean up the default tables * Tidy up Belgian and Norman LUTs
-rw-r--r--quantum/keymap_extras/sendstring_belgian.h79
-rw-r--r--quantum/keymap_extras/sendstring_bepo.h98
-rw-r--r--quantum/keymap_extras/sendstring_colemak.h60
-rw-r--r--quantum/keymap_extras/sendstring_dvorak.h60
-rw-r--r--quantum/keymap_extras/sendstring_german.h104
-rw-r--r--quantum/keymap_extras/sendstring_jis.h65
-rw-r--r--quantum/keymap_extras/sendstring_norman.h56
-rw-r--r--quantum/keymap_extras/sendstring_spanish.h96
-rw-r--r--quantum/keymap_extras/sendstring_uk.h61
-rw-r--r--quantum/keymap_extras/sendstring_workman.h60
-rw-r--r--quantum/quantum.c57
-rw-r--r--quantum/quantum.h6
12 files changed, 511 insertions, 291 deletions
diff --git a/quantum/keymap_extras/sendstring_belgian.h b/quantum/keymap_extras/sendstring_belgian.h
index 77531a14a..f07d85272 100644
--- a/quantum/keymap_extras/sendstring_belgian.h
+++ b/quantum/keymap_extras/sendstring_belgian.h
@@ -13,13 +13,14 @@
13 * You should have received a copy of the GNU General Public License 13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16/* Sendstring definitions for the belgian layout */ 16
17#ifndef SENDSTRING_BELGIAN 17// Sendstring lookup tables for Belgian layouts
18#define SENDSTRING_BELGIAN 18
19#pragma once
19 20
20#include "keymap_belgian.h" 21#include "keymap_belgian.h"
21 22
22const bool ascii_to_shift_lut[0x80] PROGMEM = { 23const bool ascii_to_shift_lut[128] PROGMEM = {
23 0, 0, 0, 0, 0, 0, 0, 0, 24 0, 0, 0, 0, 0, 0, 0, 0,
24 0, 0, 0, 0, 0, 0, 0, 0, 25 0, 0, 0, 0, 0, 0, 0, 0,
25 0, 0, 0, 0, 0, 0, 0, 0, 26 0, 0, 0, 0, 0, 0, 0, 0,
@@ -38,7 +39,8 @@ const bool ascii_to_shift_lut[0x80] PROGMEM = {
38 0, 0, 0, 0, 0, 0, 0, 0, 39 0, 0, 0, 0, 0, 0, 0, 0,
39 0, 0, 0, 0, 0, 0, 0, 0 40 0, 0, 0, 0, 0, 0, 0, 0
40}; 41};
41const bool ascii_to_altgr_lut[0x80] PROGMEM = { 42
43const bool ascii_to_altgr_lut[128] PROGMEM = {
42 0, 0, 0, 0, 0, 0, 0, 0, 44 0, 0, 0, 0, 0, 0, 0, 0,
43 0, 0, 0, 0, 0, 0, 0, 0, 45 0, 0, 0, 0, 0, 0, 0, 0,
44 0, 0, 0, 0, 0, 0, 0, 0, 46 0, 0, 0, 0, 0, 0, 0, 0,
@@ -58,37 +60,38 @@ const bool ascii_to_altgr_lut[0x80] PROGMEM = {
58 0, 0, 0, 1, 1, 1, 1, 0 60 0, 0, 0, 1, 1, 1, 1, 0
59}; 61};
60 62
61// NOTE that you have to send the dead keys twice: tilda, circ 63const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
62// SEND_STRING(" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^^``_abcdefghijklmnopqrstuvwxyz{|}~~"); 64 // NUL SOH STX ETX EOT ENQ ACK BEL
63const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { 65 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
64 0, 0, 0, 0, 0, 0, 0, 0, 66 // BS TAB LF VT FF CR SO SI
65 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, 67 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
66 0, 0, 0, 0, 0, 0, 0, 0, 68 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
67 0, 0, 0, KC_ESC, 0, 0, 0, 0, 69 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
68 /* SPACE ! " # $ % & ' */ 70 // CAN EM SUB ESC FS GS RS US
69 KC_SPC, BE_EXLM, BE_QUOT, BE_QUOT, BE_DLR,BE_UGRV,BE_AMP, BE_APOS , 71 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
70 /* ( ) * + , - . / */
71 BE_LPRN, BE_RPRN, BE_DLR,BE_EQL, BE_COMM, BE_MINS, BE_SCLN, BE_COLN,
72 /* 0 1 2 3 4 5 6 7 */
73 BE_AGRV, BE_AMP, BE_EACU, BE_QUOT, BE_APOS, BE_LPRN, BE_PARA, BE_EGRV,
74 /* 8 9 : ; < = > ? */
75 BE_EXLM, BE_CCED, BE_COLN, BE_SCLN, BE_LESS, BE_EQL, BE_LESS, BE_COMM,
76 /* @ A B C D E F G */
77 BE_EACU, BE_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
78 /* H I J K L M N O */
79 KC_H, KC_I, KC_J, KC_K, KC_L, BE_M, KC_N, KC_O,
80 /* P Q R S T U V W */
81 KC_P, BE_Q, KC_R, KC_S, KC_T, KC_U, KC_V, BE_W,
82 /* X Y Z [ \ ] ^ _ */
83 KC_X, KC_Y, BE_Z, BE_CIRC, BE_LESS, BE_DLR, BE_PARA, BE_MINS,
84 /* ` a b c d e f g */
85 BE_MU, BE_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
86 /* h i j k l m n o */
87 KC_H, KC_I, KC_J, KC_K, KC_L, BE_M, KC_N, KC_O,
88 /* p q r s t u v w */
89 KC_P, BE_Q, KC_R, KC_S, KC_T, KC_U, KC_V, BE_W,
90 /* x y z { | } ~ DELETE */
91 KC_X, KC_Y, BE_Z, BE_CCED, BE_AMP, BE_AGRV, BE_EQL, KC_DEL
92};
93 72
94#endif 73 // ! " # $ % & '
74 KC_SPC, BE_EXLM, BE_QUOT, BE_QUOT, BE_DLR, BE_UGRV, BE_AMP, BE_APOS,
75 // ( ) * + , - . /
76 BE_LPRN, BE_RPRN, BE_DLR, BE_EQL, BE_COMM, BE_MINS, BE_SCLN, BE_COLN,
77 // 0 1 2 3 4 5 6 7
78 BE_AGRV, BE_AMP, BE_EACU, BE_QUOT, BE_APOS, BE_LPRN, BE_PARA, BE_EGRV,
79 // 8 9 : ; < = > ?
80 BE_EXLM, BE_CCED, BE_COLN, BE_SCLN, BE_LESS, BE_EQL, BE_LESS, BE_COMM,
81 // @ A B C D E F G
82 BE_EACU, BE_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
83 // H I J K L M N O
84 KC_H, KC_I, KC_J, KC_K, KC_L, BE_M, KC_N, KC_O,
85 // P Q R S T U V W
86 KC_P, BE_Q, KC_R, KC_S, KC_T, KC_U, KC_V, BE_W,
87 // X Y Z [ \ ] ^ _
88 KC_X, KC_Y, BE_Z, BE_CIRC, BE_LESS, BE_DLR, BE_PARA, BE_MINS,
89 // ` a b c d e f g
90 BE_MU, BE_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
91 // h i j k l m n o
92 KC_H, KC_I, KC_J, KC_K, KC_L, BE_M, KC_N, KC_O,
93 // p q r s t u v w
94 KC_P, BE_Q, KC_R, KC_S, KC_T, KC_U, KC_V, BE_W,
95 // x y z { | } ~ DEL
96 KC_X, KC_Y, BE_Z, BE_CCED, BE_AMP, BE_AGRV, BE_EQL, KC_DEL
97};
diff --git a/quantum/keymap_extras/sendstring_bepo.h b/quantum/keymap_extras/sendstring_bepo.h
index c7377e077..565c55b95 100644
--- a/quantum/keymap_extras/sendstring_bepo.h
+++ b/quantum/keymap_extras/sendstring_bepo.h
@@ -13,29 +13,85 @@
13 * You should have received a copy of the GNU General Public License 13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16/* Sendstring definitions for the bépo layout */ 16
17#ifndef SENDSTRING_BEPO 17// Sendstring lookup tables for BÉPO layouts
18#define SENDSTRING_BEPO 18
19#pragma once
19 20
20#include "keymap_bepo.h" 21#include "keymap_bepo.h"
21 22
22const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { 23const bool ascii_to_shift_lut[128] PROGMEM = {
23 0, 0, 0, 0, 0, 0, 0, 0, 24 0, 0, 0, 0, 0, 0, 0, 0,
24 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, 25 0, 0, 0, 0, 0, 0, 0, 0,
25 0, 0, 0, 0, 0, 0, 0, 0, 26 0, 0, 0, 0, 0, 0, 0, 0,
26 0, 0, 0, KC_ESC, 0, 0, 0, 0, 27 0, 0, 0, 0, 0, 0, 0, 0,
27 KC_SPC, BP_DCRC, BP_DQOT, BP_DOLLAR, BP_DOLLAR, BP_PERCENT, BP_P, BP_APOS, 28
28 BP_LPRN, BP_RPRN, BP_ASTR, BP_PLUS, BP_COMM, BP_MINUS, BP_DOT, BP_SLSH, 29 0, 1, 0, 1, 0, 0, 0, 0,
29 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 30 0, 0, 0, 0, 0, 0, 0, 0,
30 KC_8, KC_9, BP_DOT, BP_DOT, KC_2, BP_EQUAL, KC_2, BP_APOS, 31 1, 1, 1, 1, 1, 1, 1, 1,
31 BP_AT, BP_A, BP_B, BP_C, BP_D, BP_E, BP_F, BP_G, 32 1, 1, 1, 1, 0, 0, 0, 1,
32 BP_H, BP_I, BP_J, BP_K, BP_L, BP_M, BP_N, BP_O, 33 0, 1, 1, 1, 1, 1, 1, 1,
33 BP_P, BP_Q, BP_R, BP_S, BP_T, BP_U, BP_V, BP_W, 34 1, 1, 1, 1, 1, 1, 1, 1,
34 BP_X, BP_Y, BP_Z, KC_4, BP_AGRV, KC_5, KC_5, KC_MINS, 35 1, 1, 1, 1, 1, 1, 1, 1,
35 KC_2, BP_A, BP_B, BP_C, BP_D, BP_E, BP_F, BP_G, 36 1, 1, 1, 0, 0, 0, 0, 0,
36 BP_H, BP_I, BP_J, BP_K, BP_L, BP_M, BP_N, BP_O, 37 1, 0, 0, 0, 0, 0, 0, 0,
37 BP_P, BP_Q, BP_R, BP_S, BP_T, BP_U, BP_V, BP_W, 38 0, 0, 0, 0, 0, 0, 0, 0,
38 BP_X, BP_Y, BP_Z, BP_Y, BP_B, BP_X, BP_K, KC_DEL, 39 0, 0, 0, 0, 0, 0, 0, 0,
40 0, 0, 0, 0, 0, 0, 0, 0
41};
42
43const bool ascii_to_altgr_lut[128] PROGMEM = {
44 0, 0, 0, 0, 0, 0, 0, 0,
45 0, 0, 0, 0, 0, 0, 0, 0,
46 0, 0, 0, 0, 0, 0, 0, 0,
47 0, 0, 0, 0, 0, 0, 0, 0,
48
49 0, 0, 0, 0, 0, 0, 1, 0,
50 0, 0, 0, 0, 0, 0, 0, 0,
51 0, 0, 0, 0, 0, 0, 0, 0,
52 0, 0, 0, 0, 1, 0, 1, 0,
53 0, 0, 0, 0, 0, 0, 0, 0,
54 0, 0, 0, 0, 0, 0, 0, 0,
55 0, 0, 0, 0, 0, 0, 0, 0,
56 0, 0, 0, 1, 1, 1, 1, 1,
57 0, 0, 0, 0, 0, 0, 0, 0,
58 0, 0, 0, 0, 0, 0, 0, 0,
59 0, 0, 0, 0, 0, 0, 0, 0,
60 0, 0, 0, 1, 1, 1, 1, 0
39}; 61};
40 62
41#endif 63const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
64 // NUL SOH STX ETX EOT ENQ ACK BEL
65 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
66 // BS TAB LF VT FF CR SO SI
67 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
68 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
69 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
70 // CAN EM SUB ESC FS GS RS US
71 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
72
73 // ! " # $ % & '
74 KC_SPC, BP_DCRC, BP_DQOT, BP_DLR, BP_DLR, BP_PERC, BP_P, BP_APOS,
75 // ( ) * + , - . /
76 BP_LPRN, BP_RPRN, BP_ASTR, BP_PLUS, BP_COMM, BP_MINS, BP_DOT, BP_SLSH,
77 // 0 1 2 3 4 5 6 7
78 BP_ASTR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, BP_AT, BP_PLUS,
79 // 8 9 : ; < = > ?
80 BP_MINS, BP_SLSH, BP_DOT, BP_COMM, BP_LGIL, BP_EQL, BP_RGIL, BP_APOS,
81 // @ A B C D E F G
82 BP_AT, BP_A, BP_B, BP_C, BP_D, BP_E, BP_F, BP_G,
83 // H I J K L M N O
84 BP_H, BP_I, BP_J, BP_K, BP_L, BP_M, BP_N, BP_O,
85 // P Q R S T U V W
86 BP_P, BP_Q, BP_R, BP_S, BP_T, BP_U, BP_V, BP_W,
87 // X Y Z [ \ ] ^ _
88 BP_X, BP_Y, BP_Z, BP_LPRN, BP_AGRV, BP_RPRN, BP_AT, KC_SPC,
89 // ` a b c d e f g
90 BP_PERC, BP_A, BP_B, BP_C, BP_D, BP_E, BP_F, BP_G,
91 // h i j k l m n o
92 BP_H, BP_I, BP_J, BP_K, BP_L, BP_M, BP_N, BP_O,
93 // p q r s t u v w
94 BP_P, BP_Q, BP_R, BP_S, BP_T, BP_U, BP_V, BP_W,
95 // x y z { | } ~ DEL
96 BP_X, BP_Y, BP_Z, BP_Y, BP_B, BP_X, BP_K, KC_DEL
97};
diff --git a/quantum/keymap_extras/sendstring_colemak.h b/quantum/keymap_extras/sendstring_colemak.h
index fa9ace929..331f6c222 100644
--- a/quantum/keymap_extras/sendstring_colemak.h
+++ b/quantum/keymap_extras/sendstring_colemak.h
@@ -13,29 +13,45 @@
13 * You should have received a copy of the GNU General Public License 13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16/* Sendstring definitions for the Colemak layout */ 16
17#ifndef SENDSTRING_COLEMAK 17// Sendstring lookup tables for Colemak layouts
18#define SENDSTRING_COLEMAK 18
19#pragma once
19 20
20#include "keymap_colemak.h" 21#include "keymap_colemak.h"
21 22
22const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { 23const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
23 0, 0, 0, 0, 0, 0, 0, 0, 24 // NUL SOH STX ETX EOT ENQ ACK BEL
24 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, 25 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
25 0, 0, 0, 0, 0, 0, 0, 0, 26 // BS TAB LF VT FF CR SO SI
26 0, 0, 0, KC_ESC, 0, 0, 0, 0, 27 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
27 KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT, 28 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
28 KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, 29 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
29 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 30 // CAN EM SUB ESC FS GS RS US
30 KC_8, KC_9, CM_SCLN, CM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH, 31 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
31 KC_2, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
32 CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
33 CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
34 CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
35 KC_GRV, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
36 CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
37 CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
38 CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
39};
40 32
41#endif 33 // ! " # $ % & '
34 KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
35 // ( ) * + , - . /
36 KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
37 // 0 1 2 3 4 5 6 7
38 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
39 // 8 9 : ; < = > ?
40 KC_8, KC_9, CM_SCLN, CM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
41 // @ A B C D E F G
42 KC_2, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
43 // H I J K L M N O
44 CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
45 // P Q R S T U V W
46 CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
47 // X Y Z [ \ ] ^ _
48 CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
49 // ` a b c d e f g
50 KC_GRV, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
51 // h i j k l m n o
52 CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
53 // p q r s t u v w
54 CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
55 // x y z { | } ~ DEL
56 CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
57};
diff --git a/quantum/keymap_extras/sendstring_dvorak.h b/quantum/keymap_extras/sendstring_dvorak.h
index f5c5c818b..f2cb6c4a0 100644
--- a/quantum/keymap_extras/sendstring_dvorak.h
+++ b/quantum/keymap_extras/sendstring_dvorak.h
@@ -13,29 +13,45 @@
13 * You should have received a copy of the GNU General Public License 13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16/* Sendstring definitions for the Dvorak layout */ 16
17#ifndef SENDSTRING_DVORAK 17// Sendstring lookup tables for Dvorak layouts
18#define SENDSTRING_DVORAK 18
19#pragma once
19 20
20#include "keymap_dvorak.h" 21#include "keymap_dvorak.h"
21 22
22const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { 23const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
23 0, 0, 0, 0, 0, 0, 0, 0, 24 // NUL SOH STX ETX EOT ENQ ACK BEL
24 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, 25 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
25 0, 0, 0, 0, 0, 0, 0, 0, 26 // BS TAB LF VT FF CR SO SI
26 0, 0, 0, KC_ESC, 0, 0, 0, 0, 27 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
27 KC_SPC, DV_1, DV_QUOT, DV_3, DV_4, DV_5, DV_7, DV_QUOT, 28 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
28 DV_9, DV_0, DV_8, DV_EQL, DV_COMM, DV_MINS, DV_DOT, DV_SLSH, 29 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
29 DV_0, DV_1, DV_2, DV_3, DV_4, DV_5, DV_6, DV_7, 30 // CAN EM SUB ESC FS GS RS US
30 DV_8, DV_9, DV_SCLN, DV_SCLN, DV_COMM, DV_EQL, DV_DOT, DV_SLSH, 31 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
31 DV_2, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
32 DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
33 DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
34 DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_6, DV_MINS,
35 DV_GRV, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
36 DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
37 DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
38 DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_GRV, KC_DEL
39};
40 32
41#endif 33 // ! " # $ % & '
34 KC_SPC, DV_1, DV_QUOT, DV_3, DV_4, DV_5, DV_7, DV_QUOT,
35 // ( ) * + , - . /
36 DV_9, DV_0, DV_8, DV_EQL, DV_COMM, DV_MINS, DV_DOT, DV_SLSH,
37 // 0 1 2 3 4 5 6 7
38 DV_0, DV_1, DV_2, DV_3, DV_4, DV_5, DV_6, DV_7,
39 // 8 9 : ; < = > ?
40 DV_8, DV_9, DV_SCLN, DV_SCLN, DV_COMM, DV_EQL, DV_DOT, DV_SLSH,
41 // @ A B C D E F G
42 DV_2, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
43 // H I J K L M N O
44 DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
45 // P Q R S T U V W
46 DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
47 // X Y Z [ \ ] ^ _
48 DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_6, DV_MINS,
49 // ` a b c d e f g
50 DV_GRV, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
51 // h i j k l m n o
52 DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
53 // p q r s t u v w
54 DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
55 // x y z { | } ~ DEL
56 DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_GRV, KC_DEL
57};
diff --git a/quantum/keymap_extras/sendstring_german.h b/quantum/keymap_extras/sendstring_german.h
index f20fab77d..61d224824 100644
--- a/quantum/keymap_extras/sendstring_german.h
+++ b/quantum/keymap_extras/sendstring_german.h
@@ -13,69 +13,85 @@
13 * You should have received a copy of the GNU General Public License 13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16/* Sendstring definitions for the German layout */ 16
17#ifndef SENDSTRING_GERMAN 17// Sendstring lookup tables for German layouts
18#define SENDSTRING_GERMAN 18
19#pragma once
19 20
20#include "keymap_german.h" 21#include "keymap_german.h"
21 22
22const bool ascii_to_shift_lut[0x80] PROGMEM = { 23const bool ascii_to_shift_lut[128] PROGMEM = {
23 0, 0, 0, 0, 0, 0, 0, 0, 24 0, 0, 0, 0, 0, 0, 0, 0,
24 0, 0, 0, 0, 0, 0, 0, 0, 25 0, 0, 0, 0, 0, 0, 0, 0,
25 0, 0, 0, 0, 0, 0, 0, 0, 26 0, 0, 0, 0, 0, 0, 0, 0,
26 0, 0, 0, 0, 0, 0, 0, 0, 27 0, 0, 0, 0, 0, 0, 0, 0,
27 28
28 0, 1, 1, 0, 1, 1, 1, 1, 29 0, 1, 1, 0, 1, 1, 1, 1,
29 1, 1, 1, 0, 0, 0, 0, 1, 30 1, 1, 1, 0, 0, 0, 0, 1,
30 0, 0, 0, 0, 0, 0, 0, 0, 31 0, 0, 0, 0, 0, 0, 0, 0,
31 0, 0, 1, 1, 0, 1, 1, 1, 32 0, 0, 1, 1, 0, 1, 1, 1,
32 1, 1, 1, 1, 1, 1, 1, 1, 33 0, 1, 1, 1, 1, 1, 1, 1,
33 1, 1, 1, 1, 1, 1, 1, 1, 34 1, 1, 1, 1, 1, 1, 1, 1,
34 1, 1, 1, 1, 1, 1, 1, 1, 35 1, 1, 1, 1, 1, 1, 1, 1,
35 1, 1, 1, 0, 0, 0, 0, 1, 36 1, 1, 1, 0, 0, 0, 0, 1,
36 1, 0, 0, 0, 0, 0, 0, 0, 37 1, 0, 0, 0, 0, 0, 0, 0,
37 0, 0, 0, 0, 0, 0, 0, 0, 38 0, 0, 0, 0, 0, 0, 0, 0,
38 0, 0, 0, 0, 0, 0, 0, 0, 39 0, 0, 0, 0, 0, 0, 0, 0,
39 0, 0, 0, 1, 1, 1, 1, 0 40 0, 0, 0, 0, 0, 0, 0, 0
40}; 41};
41 42
42/* Until an ALT table/functionality is added, the following symbols will not work: 43const bool ascii_to_altgr_lut[128] PROGMEM = {
43* § @ [ ] { } \ ~ äA öÖ ß ´ 44 0, 0, 0, 0, 0, 0, 0, 0,
44* Following characters can be printed using other characters like so: 45 0, 0, 0, 0, 0, 0, 0, 0,
45* [ in makro will be ü 46 0, 0, 0, 0, 0, 0, 0, 0,
46* { in makro will be Ü 47 0, 0, 0, 0, 0, 0, 0, 0,
47* ~ in makro will be °
48*/
49const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = {
50 0, 0, 0, 0, 0, 0, 0, 0,
51 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0,
52 0, 0, 0, 0, 0, 0, 0, 0,
53 0, 0, 0, KC_ESC, 0, 0, 0, 0,
54 48
55 /* SPACE ! " # $ % & ' */ 49 0, 0, 0, 0, 0, 0, 0, 0,
56 KC_SPC, KC_1, KC_2, DE_HASH, KC_4, KC_5, KC_6, DE_HASH, 50 0, 0, 0, 0, 0, 0, 0, 0,
57 /* ( ) * + , - . / */ 51 0, 0, 0, 0, 0, 0, 0, 0,
58 KC_8, KC_9, DE_PLUS, DE_PLUS, KC_COMM, DE_MINS, KC_DOT, KC_7, 52 0, 0, 0, 0, 0, 0, 0, 0,
59 /* 0 1 2 3 4 5 6 7 */ 53 1, 0, 0, 0, 0, 0, 0, 0,
60 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 54 0, 0, 0, 0, 0, 0, 0, 0,
61 /* 8 9 : ; < = > ? */ 55 0, 0, 0, 0, 0, 0, 0, 0,
62 KC_8, KC_9, KC_DOT, KC_COMM, DE_LESS, KC_0, DE_LESS, KC_MINS, 56 0, 0, 0, 1, 1, 1, 0, 0,
63 /* @ A B C D E F G */ 57 0, 0, 0, 0, 0, 0, 0, 0,
64 KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, 58 0, 0, 0, 0, 0, 0, 0, 0,
65 /* H I J K L M N O */ 59 0, 0, 0, 0, 0, 0, 0, 0,
66 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, 60 0, 0, 0, 1, 1, 1, 1, 0
67 /* P Q R S T U V W */
68 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
69 /* X Y Z [ \ ] ^ _ */
70 KC_X, DE_Y, DE_Z, KC_LBRC, KC_BSLS, KC_RBRC, DE_CIRC, DE_MINS,
71 /* ` a b c d e f g */
72 DE_ACUT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
73 /* h i j k l m n o */
74 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
75 /* p q r s t u v w */
76 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
77 /* x y z { | } ~ DELETE */
78 KC_X, DE_Y, DE_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
79}; 61};
80 62
81#endif 63const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
64 // NUL SOH STX ETX EOT ENQ ACK BEL
65 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
66 // BS TAB LF VT FF CR SO SI
67 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
68 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
69 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
70 // CAN EM SUB ESC FS GS RS US
71 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
72
73 // ! " # $ % & '
74 KC_SPC, DE_1, DE_2, DE_HASH, DE_4, DE_5, DE_6, DE_HASH,
75 // ( ) * + , - . /
76 DE_8, DE_9, DE_PLUS, DE_PLUS, DE_COMM, DE_MINS, DE_DOT, DE_7,
77 // 0 1 2 3 4 5 6 7
78 DE_0, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7,
79 // 8 9 : ; < = > ?
80 DE_8, DE_9, DE_DOT, DE_COMM, DE_LESS, DE_0, DE_LESS, DE_SS,
81 // @ A B C D E F G
82 DE_Q, DE_A, DE_B, DE_C, DE_D, DE_E, DE_F, DE_G,
83 // H I J K L M N O
84 DE_H, DE_I, DE_J, DE_K, DE_L, DE_M, DE_N, DE_O,
85 // P Q R S T U V W
86 DE_P, DE_Q, DE_R, DE_S, DE_T, DE_U, DE_V, DE_W,
87 // X Y Z [ \ ] ^ _
88 DE_X, DE_Y, DE_Z, DE_8, DE_SS, DE_9, DE_CIRC, DE_MINS,
89 // ` a b c d e f g
90 DE_ACUT, DE_A, DE_B, DE_C, DE_D, DE_E, DE_F, DE_G,
91 // h i j k l m n o
92 DE_H, DE_I, DE_J, DE_K, DE_L, DE_M, DE_N, DE_O,
93 // p q r s t u v w
94 DE_P, DE_Q, DE_R, DE_S, DE_T, DE_U, DE_V, DE_W,
95 // x y z { | } ~ DEL
96 DE_X, DE_Y, DE_Z, DE_7, DE_LESS, DE_0, DE_PLUS, KC_DEL
97};
diff --git a/quantum/keymap_extras/sendstring_jis.h b/quantum/keymap_extras/sendstring_jis.h
index c5a38c6a5..fe42445f4 100644
--- a/quantum/keymap_extras/sendstring_jis.h
+++ b/quantum/keymap_extras/sendstring_jis.h
@@ -13,15 +13,19 @@
13 * You should have received a copy of the GNU General Public License 13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16/* Sendstring definitions for the JIS keyboard layout */
17#ifndef SENDSTRING_JIS
18#define SENDSTRING_JIS
19 16
20const bool ascii_to_shift_lut[0x80] PROGMEM = { 17// Sendstring lookup tables for JIS layouts
18
19#pragma once
20
21#include "keymap_jp.h"
22
23const bool ascii_to_shift_lut[128] PROGMEM = {
21 0, 0, 0, 0, 0, 0, 0, 0, 24 0, 0, 0, 0, 0, 0, 0, 0,
22 0, 0, 0, 0, 0, 0, 0, 0, 25 0, 0, 0, 0, 0, 0, 0, 0,
23 0, 0, 0, 0, 0, 0, 0, 0, 26 0, 0, 0, 0, 0, 0, 0, 0,
24 0, 0, 0, 0, 0, 0, 0, 0, 27 0, 0, 0, 0, 0, 0, 0, 0,
28
25 0, 1, 1, 1, 1, 1, 1, 1, 29 0, 1, 1, 1, 1, 1, 1, 1,
26 1, 1, 1, 1, 0, 0, 0, 0, 30 1, 1, 1, 1, 0, 0, 0, 0,
27 0, 0, 0, 0, 0, 0, 0, 0, 31 0, 0, 0, 0, 0, 0, 0, 0,
@@ -36,23 +40,38 @@ const bool ascii_to_shift_lut[0x80] PROGMEM = {
36 0, 0, 0, 1, 1, 1, 1, 0 40 0, 0, 0, 1, 1, 1, 1, 0
37}; 41};
38 42
39const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { 43const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
40 0, 0, 0, 0, 0, 0, 0, 0, 44 // NUL SOH STX ETX EOT ENQ ACK BEL
41 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, 45 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
42 0, 0, 0, 0, 0, 0, 0, 0, 46 // BS TAB LF VT FF CR SO SI
43 0, 0, 0, KC_ESC, 0, 0, 0, 0, 47 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
44 KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 48 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
45 KC_8, KC_9, KC_QUOT, KC_SCLN, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, 49 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
46 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 50 // CAN EM SUB ESC FS GS RS US
47 KC_8, KC_9, KC_QUOT, KC_SCLN, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, 51 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
48 KC_LBRC, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
49 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
50 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
51 KC_X, KC_Y, KC_Z, KC_RBRC, KC_JYEN, KC_BSLS, KC_EQL, KC_RO,
52 KC_LBRC, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
53 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
54 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
55 KC_X, KC_Y, KC_Z, KC_RBRC, KC_JYEN, KC_BSLS, KC_EQL, KC_DEL,
56};
57 52
58#endif 53 // ! " # $ % & '
54 KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
55 // ( ) * + , - . /
56 KC_8, KC_9, JP_COLN, JP_SCLN, JP_COMM, JP_MINS, JP_DOT, JP_SLSH,
57 // 0 1 2 3 4 5 6 7
58 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
59 // 8 9 : ; < = > ?
60 KC_8, KC_9, JP_COLN, JP_SCLN, JP_COMM, JP_MINS, JP_DOT, JP_SLSH,
61 // @ A B C D E F G
62 JP_AT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
63 // H I J K L M N O
64 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
65 // P Q R S T U V W
66 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
67 // X Y Z [ \ ] ^ _
68 KC_X, KC_Y, KC_Z, JP_LBRC, JP_BSLS, JP_RBRC, JP_CIRC, JP_BSLS,
69 // ` a b c d e f g
70 JP_AT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
71 // h i j k l m n o
72 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
73 // p q r s t u v w
74 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
75 // x y z { | } ~ DEL
76 KC_X, KC_Y, KC_Z, JP_LBRC, JP_YEN, JP_RBRC, JP_CIRC, KC_DEL
77};
diff --git a/quantum/keymap_extras/sendstring_norman.h b/quantum/keymap_extras/sendstring_norman.h
index 57d450ca8..8d4ec8dab 100644
--- a/quantum/keymap_extras/sendstring_norman.h
+++ b/quantum/keymap_extras/sendstring_norman.h
@@ -13,27 +13,45 @@
13 * You should have received a copy of the GNU General Public License 13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16/* Sendstring definitions for the Colemak layout */ 16
17// Sendstring lookup tables for Norman layouts
18
17#pragma once 19#pragma once
18 20
19#include "keymap_norman.h" 21#include "keymap_norman.h"
20 22
21const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { 23const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
22 0, 0, 0, 0, 0, 0, 0, 0, 24 // NUL SOH STX ETX EOT ENQ ACK BEL
23 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, 25 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
24 0, 0, 0, 0, 0, 0, 0, 0, 26 // BS TAB LF VT FF CR SO SI
25 0, 0, 0, KC_ESC, 0, 0, 0, 0, 27 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
26 KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT, 28 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
27 KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, 29 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
28 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 30 // CAN EM SUB ESC FS GS RS US
29 KC_8, KC_9, NM_SCLN, NM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH, 31 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
30 KC_2, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G,
31 NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O,
32 NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W,
33 NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
34 KC_GRV, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G,
35 NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O,
36 NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W,
37 NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
38};
39 32
33 // ! " # $ % & '
34 KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
35 // ( ) * + , - . /
36 KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
37 // 0 1 2 3 4 5 6 7
38 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
39 // 8 9 : ; < = > ?
40 KC_8, KC_9, NM_SCLN, NM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
41 // @ A B C D E F G
42 KC_2, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G,
43 // H I J K L M N O
44 NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O,
45 // P Q R S T U V W
46 NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W,
47 // X Y Z [ \ ] ^ _
48 NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
49 // ` a b c d e f g
50 KC_GRV, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G,
51 // h i j k l m n o
52 NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O,
53 // p q r s t u v w
54 NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W,
55 // x y z { | } ~ DEL
56 NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
57};
diff --git a/quantum/keymap_extras/sendstring_spanish.h b/quantum/keymap_extras/sendstring_spanish.h
index 719445929..985d60288 100644
--- a/quantum/keymap_extras/sendstring_spanish.h
+++ b/quantum/keymap_extras/sendstring_spanish.h
@@ -13,59 +13,85 @@
13 * You should have received a copy of the GNU General Public License 13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16/* Sendstring definitions for the Spanish layout */ 16
17#ifndef SENDSTRING_SPANISH 17// Sendstring lookup tables for Spanish layouts
18#define SENDSTRING_SPANISH 18
19#pragma once
19 20
20#include "keymap_spanish.h" 21#include "keymap_spanish.h"
21 22
22const bool ascii_to_shift_lut[0x80] PROGMEM = { 23const bool ascii_to_shift_lut[128] PROGMEM = {
23 0, 0, 0, 0, 0, 0, 0, 0, 24 0, 0, 0, 0, 0, 0, 0, 0,
24 0, 0, 0, 0, 0, 0, 0, 0, 25 0, 0, 0, 0, 0, 0, 0, 0,
25 0, 0, 0, 0, 0, 0, 0, 0, 26 0, 0, 0, 0, 0, 0, 0, 0,
26 0, 0, 0, 0, 0, 0, 0, 0, 27 0, 0, 0, 0, 0, 0, 0, 0,
27 28
28 0, 1, 1, 1, 1, 1, 1, 0, 29 0, 1, 1, 0, 1, 1, 1, 0,
29 1, 1, 1, 0, 0, 0, 0, 1, 30 1, 1, 1, 0, 0, 0, 0, 1,
30 0, 0, 0, 0, 0, 0, 0, 0, 31 0, 0, 0, 0, 0, 0, 0, 0,
31
32 0, 0, 1, 1, 0, 1, 1, 1, 32 0, 0, 1, 1, 0, 1, 1, 1,
33 0, 1, 1, 1, 1, 1, 1, 1,
33 1, 1, 1, 1, 1, 1, 1, 1, 34 1, 1, 1, 1, 1, 1, 1, 1,
34 1, 1, 1, 1, 1, 1, 1, 1, 35 1, 1, 1, 1, 1, 1, 1, 1,
35 1, 1, 1, 1, 1, 1, 1, 1,
36
37 1, 1, 1, 0, 0, 0, 1, 1, 36 1, 1, 1, 0, 0, 0, 1, 1,
38 0, 0, 0, 0, 0, 0, 0, 0, 37 0, 0, 0, 0, 0, 0, 0, 0,
39 0, 0, 0, 0, 0, 0, 0, 0, 38 0, 0, 0, 0, 0, 0, 0, 0,
40 0, 0, 0, 0, 0, 0, 0, 0, 39 0, 0, 0, 0, 0, 0, 0, 0,
41 0, 0, 0, 1, 1, 1, 1, 0 40 0, 0, 0, 0, 0, 0, 0, 0
42}; 41};
43 42
44/* Until an ALT table/functionality is added, the following symbols will not work: 43const bool ascii_to_altgr_lut[128] PROGMEM = {
45 # @ [ ] { } | ~ 44 0, 0, 0, 0, 0, 0, 0, 0,
46*/ 45 0, 0, 0, 0, 0, 0, 0, 0,
47const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { 46 0, 0, 0, 0, 0, 0, 0, 0,
48 0, 0, 0, 0, 0, 0, 0, 0, 47 0, 0, 0, 0, 0, 0, 0, 0,
49 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, 48
50 0, 0, 0, 0, 0, 0, 0, 0, 49 0, 0, 0, 1, 0, 0, 0, 0,
51 0, 0, 0, KC_ESC, 0, 0, 0, 0, 50 0, 0, 0, 0, 0, 0, 0, 0,
52/* , ! " # $ % & ' */ 51 0, 0, 0, 0, 0, 0, 0, 0,
53 KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, ES_APOS, 52 0, 0, 0, 0, 0, 0, 0, 0,
54/* ( ) * + , - . / */ 53 1, 0, 0, 0, 0, 0, 0, 0,
55 KC_8, KC_9, ES_PLUS, ES_PLUS, KC_COMM, ES_MINS, KC_DOT, KC_7, 54 0, 0, 0, 0, 0, 0, 0, 0,
56 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 55 0, 0, 0, 0, 0, 0, 0, 0,
57/* 8 9 : ; < = > ? */ 56 0, 0, 0, 1, 1, 1, 0, 0,
58 KC_8, KC_9, KC_DOT, KC_COMM, KC_NUBS, KC_0, KC_NUBS, ES_APOS, 57 0, 0, 0, 0, 0, 0, 0, 0,
59/* @ A B C D E F G */ 58 0, 0, 0, 0, 0, 0, 0, 0,
60 KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, 59 0, 0, 0, 0, 0, 0, 0, 0,
61 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, 60 0, 0, 0, 1, 1, 1, 1, 0
62 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
63/* X Y Z [ \ ] ^ _ */
64 KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, ES_GRV, ES_MINS,
65 ES_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
66 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
67 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
68 KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
69}; 61};
70 62
71#endif 63const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
64 // NUL SOH STX ETX EOT ENQ ACK BEL
65 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
66 // BS TAB LF VT FF CR SO SI
67 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
68 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
69 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
70 // CAN EM SUB ESC FS GS RS US
71 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
72
73 // ! " # $ % & '
74 KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, ES_APOS,
75 // ( ) * + , - . /
76 KC_8, KC_9, ES_PLUS, ES_PLUS, KC_COMM, ES_MINS, KC_DOT, KC_7,
77 // 0 1 2 3 4 5 6 7
78 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
79 // 8 9 : ; < = > ?
80 KC_8, KC_9, KC_DOT, KC_COMM, ES_LESS, KC_0, ES_LESS, ES_APOS,
81 // @ A B C D E F G
82 KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
83 // H I J K L M N O
84 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
85 // P Q R S T U V W
86 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
87 // X Y Z [ \ ] ^ _
88 KC_X, KC_Y, KC_Z, ES_GRV, ES_OVRR, ES_PLUS, ES_GRV, ES_MINS,
89 // ` a b c d e f g
90 ES_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
91 // h i j k l m n o
92 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
93 // p q r s t u v w
94 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
95 // x y z { | } ~ DEL
96 KC_X, KC_Y, KC_Z, ES_ACUT, KC_1, ES_CCED, ES_NTIL, KC_DEL
97};
diff --git a/quantum/keymap_extras/sendstring_uk.h b/quantum/keymap_extras/sendstring_uk.h
index 2824e5d44..a01c9bc43 100644
--- a/quantum/keymap_extras/sendstring_uk.h
+++ b/quantum/keymap_extras/sendstring_uk.h
@@ -14,12 +14,13 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16 16
17/* SEND_STRING() LUTs for UK layouts */ 17// Sendstring lookup tables for UK layouts
18 18
19#ifndef SENDSTRING_UK 19#pragma once
20#define SENDSTRING_UK
21 20
22const bool ascii_to_shift_lut[0x80] PROGMEM = { 21#include "keymap_uk.h"
22
23const bool ascii_to_shift_lut[128] PROGMEM = {
23 0, 0, 0, 0, 0, 0, 0, 0, 24 0, 0, 0, 0, 0, 0, 0, 0,
24 0, 0, 0, 0, 0, 0, 0, 0, 25 0, 0, 0, 0, 0, 0, 0, 0,
25 0, 0, 0, 0, 0, 0, 0, 0, 26 0, 0, 0, 0, 0, 0, 0, 0,
@@ -39,24 +40,38 @@ const bool ascii_to_shift_lut[0x80] PROGMEM = {
39 0, 0, 0, 1, 1, 1, 1, 0 40 0, 0, 0, 1, 1, 1, 1, 0
40}; 41};
41 42
42const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { 43const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
43 0, 0, 0, 0, 0, 0, 0, 0, 44 // NUL SOH STX ETX EOT ENQ ACK BEL
44 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, 45 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
45 0, 0, 0, 0, 0, 0, 0, 0, 46 // BS TAB LF VT FF CR SO SI
46 0, 0, 0, KC_ESC, 0, 0, 0, 0, 47 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
48 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
49 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
50 // CAN EM SUB ESC FS GS RS US
51 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
47 52
48 KC_SPC, KC_1, KC_2, KC_NUHS, KC_4, KC_5, KC_7, KC_QUOT, 53 // ! " # $ % & '
49 KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, 54 UK_SPC, UK_1, UK_2, UK_HASH, UK_4, UK_5, UK_7, UK_QUOT,
50 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 55 // ( ) * + , - . /
51 KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH, 56 UK_9, UK_0, UK_8, UK_EQL, UK_COMM, UK_MINS, UK_DOT, UK_SLSH,
52 KC_QUOT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, 57 // 0 1 2 3 4 5 6 7
53 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, 58 UK_0, UK_1, UK_2, UK_3, UK_4, UK_5, UK_6, UK_7,
54 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W, 59 // 8 9 : ; < = > ?
55 KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS, 60 UK_8, UK_9, UK_SCLN, UK_SCLN, UK_COMM, UK_EQL, UK_DOT, UK_SLSH,
56 KC_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, 61 // @ A B C D E F G
57 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, 62 UK_QUOT, UK_A, UK_B, UK_C, UK_D, UK_E, UK_F, UK_G,
58 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W, 63 // H I J K L M N O
59 KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL 64 UK_H, UK_I, UK_J, UK_K, UK_L, UK_M, UK_N, UK_O,
65 // P Q R S T U V W
66 UK_P, UK_Q, UK_R, UK_S, UK_T, UK_U, UK_V, UK_W,
67 // X Y Z [ \ ] ^ _
68 UK_X, UK_Y, UK_Z, UK_LBRC, UK_BSLS, UK_RBRC, UK_6, UK_MINS,
69 // ` a b c d e f g
70 UK_GRV, UK_A, UK_B, UK_C, UK_D, UK_E, UK_F, UK_G,
71 // h i j k l m n o
72 UK_H, UK_I, UK_J, UK_K, UK_L, UK_M, UK_N, UK_O,
73 // p q r s t u v w
74 UK_P, UK_Q, UK_R, UK_S, UK_T, UK_U, UK_V, UK_W,
75 // x y z { | } ~ DEL
76 UK_X, UK_Y, UK_Z, UK_LBRC, UK_BSLS, UK_RBRC, UK_HASH, KC_DEL
60}; 77};
61
62#endif
diff --git a/quantum/keymap_extras/sendstring_workman.h b/quantum/keymap_extras/sendstring_workman.h
index a8571839d..a0dd4756f 100644
--- a/quantum/keymap_extras/sendstring_workman.h
+++ b/quantum/keymap_extras/sendstring_workman.h
@@ -13,29 +13,45 @@
13 * You should have received a copy of the GNU General Public License 13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16/* Sendstring definitions for the Workman layout */ 16
17#ifndef SENDSTRING_WORKMAN 17// Sendstring lookup tables for Workman layouts
18#define SENDSTRING_WORKMAN 18
19#pragma once
19 20
20#include "keymap_workman.h" 21#include "keymap_workman.h"
21 22
22const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { 23const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
23 0, 0, 0, 0, 0, 0, 0, 0, 24 // NUL SOH STX ETX EOT ENQ ACK BEL
24 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, 25 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
25 0, 0, 0, 0, 0, 0, 0, 0, 26 // BS TAB LF VT FF CR SO SI
26 0, 0, 0, KC_ESC, 0, 0, 0, 0, 27 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
27 KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT, 28 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
28 KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, 29 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
29 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 30 // CAN EM SUB ESC FS GS RS US
30 KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH, 31 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
31 KC_2, WK_A, WK_B, WK_C, WK_D, WK_E, WK_F, WK_G,
32 WK_H, WK_I, WK_J, WK_K, WK_L, WK_M, WK_N, WK_O,
33 WK_P, WK_Q, WK_R, WK_S, WK_T, WK_U, WK_V, WK_W,
34 WK_X, WK_Y, WK_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
35 KC_GRV, WK_A, WK_B, WK_C, WK_D, WK_E, WK_F, WK_G,
36 WK_H, WK_I, WK_J, WK_K, WK_L, WK_M, WK_N, WK_O,
37 WK_P, WK_Q, WK_R, WK_S, WK_T, WK_U, WK_V, WK_W,
38 WK_X, WK_Y, WK_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
39};
40 32
41#endif \ No newline at end of file 33 // ! " # $ % & '
34 KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
35 // ( ) * + , - . /
36 KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
37 // 0 1 2 3 4 5 6 7
38 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
39 // 8 9 : ; < = > ?
40 KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
41 // @ A B C D E F G
42 KC_2, WK_A, WK_B, WK_C, WK_D, WK_E, WK_F, WK_G,
43 // H I J K L M N O
44 WK_H, WK_I, WK_J, WK_K, WK_L, WK_M, WK_N, WK_O,
45 // P Q R S T U V W
46 WK_P, WK_Q, WK_R, WK_S, WK_T, WK_U, WK_V, WK_W,
47 // X Y Z [ \ ] ^ _
48 WK_X, WK_Y, WK_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
49 // ` a b c d e f g
50 KC_GRV, WK_A, WK_B, WK_C, WK_D, WK_E, WK_F, WK_G,
51 // h i j k l m n o
52 WK_H, WK_I, WK_J, WK_K, WK_L, WK_M, WK_N, WK_O,
53 // p q r s t u v w
54 WK_P, WK_Q, WK_R, WK_S, WK_T, WK_U, WK_V, WK_W,
55 // x y z { | } ~ DEL
56 WK_X, WK_Y, WK_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
57};
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 44635fe3e..31dfa60cd 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -719,11 +719,12 @@ bool process_record_quantum(keyrecord_t *record) {
719} 719}
720 720
721__attribute__ ((weak)) 721__attribute__ ((weak))
722const bool ascii_to_shift_lut[0x80] PROGMEM = { 722const bool ascii_to_shift_lut[128] PROGMEM = {
723 0, 0, 0, 0, 0, 0, 0, 0, 723 0, 0, 0, 0, 0, 0, 0, 0,
724 0, 0, 0, 0, 0, 0, 0, 0, 724 0, 0, 0, 0, 0, 0, 0, 0,
725 0, 0, 0, 0, 0, 0, 0, 0, 725 0, 0, 0, 0, 0, 0, 0, 0,
726 0, 0, 0, 0, 0, 0, 0, 0, 726 0, 0, 0, 0, 0, 0, 0, 0,
727
727 0, 1, 1, 1, 1, 1, 1, 0, 728 0, 1, 1, 1, 1, 1, 1, 0,
728 1, 1, 1, 1, 0, 0, 0, 0, 729 1, 1, 1, 1, 0, 0, 0, 0,
729 0, 0, 0, 0, 0, 0, 0, 0, 730 0, 0, 0, 0, 0, 0, 0, 0,
@@ -739,11 +740,12 @@ const bool ascii_to_shift_lut[0x80] PROGMEM = {
739}; 740};
740 741
741__attribute__ ((weak)) 742__attribute__ ((weak))
742const bool ascii_to_altgr_lut[0x80] PROGMEM = { 743const bool ascii_to_altgr_lut[128] PROGMEM = {
743 0, 0, 0, 0, 0, 0, 0, 0, 744 0, 0, 0, 0, 0, 0, 0, 0,
744 0, 0, 0, 0, 0, 0, 0, 0, 745 0, 0, 0, 0, 0, 0, 0, 0,
745 0, 0, 0, 0, 0, 0, 0, 0, 746 0, 0, 0, 0, 0, 0, 0, 0,
746 0, 0, 0, 0, 0, 0, 0, 0, 747 0, 0, 0, 0, 0, 0, 0, 0,
748
747 0, 0, 0, 0, 0, 0, 0, 0, 749 0, 0, 0, 0, 0, 0, 0, 0,
748 0, 0, 0, 0, 0, 0, 0, 0, 750 0, 0, 0, 0, 0, 0, 0, 0,
749 0, 0, 0, 0, 0, 0, 0, 0, 751 0, 0, 0, 0, 0, 0, 0, 0,
@@ -759,23 +761,40 @@ const bool ascii_to_altgr_lut[0x80] PROGMEM = {
759}; 761};
760 762
761__attribute__ ((weak)) 763__attribute__ ((weak))
762const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { 764const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
763 0, 0, 0, 0, 0, 0, 0, 0, 765 // NUL SOH STX ETX EOT ENQ ACK BEL
764 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, 766 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
765 0, 0, 0, 0, 0, 0, 0, 0, 767 // BS TAB LF VT FF CR SO SI
766 0, 0, 0, KC_ESC, 0, 0, 0, 0, 768 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
767 KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT, 769 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
768 KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, 770 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
769 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 771 // CAN EM SUB ESC FS GS RS US
770 KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH, 772 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
771 KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, 773
772 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, 774 // ! " # $ % & '
773 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W, 775 KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
774 KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS, 776 // ( ) * + , - . /
775 KC_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, 777 KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
776 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, 778 // 0 1 2 3 4 5 6 7
777 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W, 779 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
778 KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL 780 // 8 9 : ; < = > ?
781 KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
782 // @ A B C D E F G
783 KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
784 // H I J K L M N O
785 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
786 // P Q R S T U V W
787 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
788 // X Y Z [ \ ] ^ _
789 KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
790 // ` a b c d e f g
791 KC_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
792 // h i j k l m n o
793 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
794 // p q r s t u v w
795 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
796 // x y z { | } ~ DEL
797 KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
779}; 798};
780 799
781void send_string(const char *str) { 800void send_string(const char *str) {
diff --git a/quantum/quantum.h b/quantum/quantum.h
index f089c6ef6..56f30624c 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -201,9 +201,9 @@ extern layer_state_t default_layer_state;
201 201
202#define SEND_STRING(string) send_string_P(PSTR(string)) 202#define SEND_STRING(string) send_string_P(PSTR(string))
203 203
204extern const bool ascii_to_shift_lut[0x80]; 204extern const bool ascii_to_shift_lut[128];
205extern const bool ascii_to_altgr_lut[0x80]; 205extern const bool ascii_to_altgr_lut[128];
206extern const uint8_t ascii_to_keycode_lut[0x80]; 206extern const uint8_t ascii_to_keycode_lut[128];
207 207
208void send_string(const char *str); 208void send_string(const char *str);
209void send_string_with_delay(const char *str, uint8_t interval); 209void send_string_with_delay(const char *str, uint8_t interval);