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
master
fauxpark 2019-07-16 16:15:07 +10:00 committed by skullydazed
parent 26bbf6a66a
commit a5ecf14608
12 changed files with 511 additions and 291 deletions

View File

@ -13,13 +13,14 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* Sendstring definitions for the belgian layout */
#ifndef SENDSTRING_BELGIAN // Sendstring lookup tables for Belgian layouts
#define SENDSTRING_BELGIAN
#pragma once
#include "keymap_belgian.h" #include "keymap_belgian.h"
const bool ascii_to_shift_lut[0x80] PROGMEM = { const bool ascii_to_shift_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -38,7 +39,8 @@ const bool ascii_to_shift_lut[0x80] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 0, 0, 0, 0, 0, 0, 0, 0
}; };
const bool ascii_to_altgr_lut[0x80] PROGMEM = {
const bool ascii_to_altgr_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -58,37 +60,38 @@ const bool ascii_to_altgr_lut[0x80] PROGMEM = {
0, 0, 0, 1, 1, 1, 1, 0 0, 0, 0, 1, 1, 1, 1, 0
}; };
// NOTE that you have to send the dead keys twice: tilda, circ const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// SEND_STRING(" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^^``_abcdefghijklmnopqrstuvwxyz{|}~~"); // NUL SOH STX ETX EOT ENQ ACK BEL
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
0, 0, 0, 0, 0, 0, 0, 0, // BS TAB LF VT FF CR SO SI
KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
0, 0, 0, 0, 0, 0, 0, 0, // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
0, 0, 0, KC_ESC, 0, 0, 0, 0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
/* SPACE ! " # $ % & ' */ // CAN EM SUB ESC FS GS RS US
KC_SPC, BE_EXLM, BE_QUOT, BE_QUOT, BE_DLR,BE_UGRV,BE_AMP, BE_APOS , XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
/* ( ) * + , - . / */
BE_LPRN, BE_RPRN, BE_DLR,BE_EQL, BE_COMM, BE_MINS, BE_SCLN, BE_COLN,
/* 0 1 2 3 4 5 6 7 */
BE_AGRV, BE_AMP, BE_EACU, BE_QUOT, BE_APOS, BE_LPRN, BE_PARA, BE_EGRV,
/* 8 9 : ; < = > ? */
BE_EXLM, BE_CCED, BE_COLN, BE_SCLN, BE_LESS, BE_EQL, BE_LESS, BE_COMM,
/* @ A B C D E F G */
BE_EACU, BE_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
/* H I J K L M N O */
KC_H, KC_I, KC_J, KC_K, KC_L, BE_M, KC_N, KC_O,
/* P Q R S T U V W */
KC_P, BE_Q, KC_R, KC_S, KC_T, KC_U, KC_V, BE_W,
/* X Y Z [ \ ] ^ _ */
KC_X, KC_Y, BE_Z, BE_CIRC, BE_LESS, BE_DLR, BE_PARA, BE_MINS,
/* ` a b c d e f g */
BE_MU, BE_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
/* h i j k l m n o */
KC_H, KC_I, KC_J, KC_K, KC_L, BE_M, KC_N, KC_O,
/* p q r s t u v w */
KC_P, BE_Q, KC_R, KC_S, KC_T, KC_U, KC_V, BE_W,
/* x y z { | } ~ DELETE */
KC_X, KC_Y, BE_Z, BE_CCED, BE_AMP, BE_AGRV, BE_EQL, KC_DEL
};
#endif // ! " # $ % & '
KC_SPC, BE_EXLM, BE_QUOT, BE_QUOT, BE_DLR, BE_UGRV, BE_AMP, BE_APOS,
// ( ) * + , - . /
BE_LPRN, BE_RPRN, BE_DLR, BE_EQL, BE_COMM, BE_MINS, BE_SCLN, BE_COLN,
// 0 1 2 3 4 5 6 7
BE_AGRV, BE_AMP, BE_EACU, BE_QUOT, BE_APOS, BE_LPRN, BE_PARA, BE_EGRV,
// 8 9 : ; < = > ?
BE_EXLM, BE_CCED, BE_COLN, BE_SCLN, BE_LESS, BE_EQL, BE_LESS, BE_COMM,
// @ A B C D E F G
BE_EACU, BE_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
// H I J K L M N O
KC_H, KC_I, KC_J, KC_K, KC_L, BE_M, KC_N, KC_O,
// P Q R S T U V W
KC_P, BE_Q, KC_R, KC_S, KC_T, KC_U, KC_V, BE_W,
// X Y Z [ \ ] ^ _
KC_X, KC_Y, BE_Z, BE_CIRC, BE_LESS, BE_DLR, BE_PARA, BE_MINS,
// ` a b c d e f g
BE_MU, BE_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
// h i j k l m n o
KC_H, KC_I, KC_J, KC_K, KC_L, BE_M, KC_N, KC_O,
// p q r s t u v w
KC_P, BE_Q, KC_R, KC_S, KC_T, KC_U, KC_V, BE_W,
// x y z { | } ~ DEL
KC_X, KC_Y, BE_Z, BE_CCED, BE_AMP, BE_AGRV, BE_EQL, KC_DEL
};

View File

@ -13,29 +13,85 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* Sendstring definitions for the bépo layout */
#ifndef SENDSTRING_BEPO // Sendstring lookup tables for BÉPO layouts
#define SENDSTRING_BEPO
#pragma once
#include "keymap_bepo.h" #include "keymap_bepo.h"
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { const bool ascii_to_shift_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, KC_ESC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
KC_SPC, BP_DCRC, BP_DQOT, BP_DOLLAR, BP_DOLLAR, BP_PERCENT, BP_P, BP_APOS,
BP_LPRN, BP_RPRN, BP_ASTR, BP_PLUS, BP_COMM, BP_MINUS, BP_DOT, BP_SLSH, 0, 1, 0, 1, 0, 0, 0, 0,
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, 0, 0, 0, 0, 0, 0, 0, 0,
KC_8, KC_9, BP_DOT, BP_DOT, KC_2, BP_EQUAL, KC_2, BP_APOS, 1, 1, 1, 1, 1, 1, 1, 1,
BP_AT, BP_A, BP_B, BP_C, BP_D, BP_E, BP_F, BP_G, 1, 1, 1, 1, 0, 0, 0, 1,
BP_H, BP_I, BP_J, BP_K, BP_L, BP_M, BP_N, BP_O, 0, 1, 1, 1, 1, 1, 1, 1,
BP_P, BP_Q, BP_R, BP_S, BP_T, BP_U, BP_V, BP_W, 1, 1, 1, 1, 1, 1, 1, 1,
BP_X, BP_Y, BP_Z, KC_4, BP_AGRV, KC_5, KC_5, KC_MINS, 1, 1, 1, 1, 1, 1, 1, 1,
KC_2, BP_A, BP_B, BP_C, BP_D, BP_E, BP_F, BP_G, 1, 1, 1, 0, 0, 0, 0, 0,
BP_H, BP_I, BP_J, BP_K, BP_L, BP_M, BP_N, BP_O, 1, 0, 0, 0, 0, 0, 0, 0,
BP_P, BP_Q, BP_R, BP_S, BP_T, BP_U, BP_V, BP_W, 0, 0, 0, 0, 0, 0, 0, 0,
BP_X, BP_Y, BP_Z, BP_Y, BP_B, BP_X, BP_K, KC_DEL, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
}; };
#endif const bool ascii_to_altgr_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 1, 0
};
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// BS TAB LF VT FF CR SO SI
KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// DLE DC1 DC2 DC3 DC4 NAK SYN ETB
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// CAN EM SUB ESC FS GS RS US
XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// ! " # $ % & '
KC_SPC, BP_DCRC, BP_DQOT, BP_DLR, BP_DLR, BP_PERC, BP_P, BP_APOS,
// ( ) * + , - . /
BP_LPRN, BP_RPRN, BP_ASTR, BP_PLUS, BP_COMM, BP_MINS, BP_DOT, BP_SLSH,
// 0 1 2 3 4 5 6 7
BP_ASTR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, BP_AT, BP_PLUS,
// 8 9 : ; < = > ?
BP_MINS, BP_SLSH, BP_DOT, BP_COMM, BP_LGIL, BP_EQL, BP_RGIL, BP_APOS,
// @ A B C D E F G
BP_AT, BP_A, BP_B, BP_C, BP_D, BP_E, BP_F, BP_G,
// H I J K L M N O
BP_H, BP_I, BP_J, BP_K, BP_L, BP_M, BP_N, BP_O,
// P Q R S T U V W
BP_P, BP_Q, BP_R, BP_S, BP_T, BP_U, BP_V, BP_W,
// X Y Z [ \ ] ^ _
BP_X, BP_Y, BP_Z, BP_LPRN, BP_AGRV, BP_RPRN, BP_AT, KC_SPC,
// ` a b c d e f g
BP_PERC, BP_A, BP_B, BP_C, BP_D, BP_E, BP_F, BP_G,
// h i j k l m n o
BP_H, BP_I, BP_J, BP_K, BP_L, BP_M, BP_N, BP_O,
// p q r s t u v w
BP_P, BP_Q, BP_R, BP_S, BP_T, BP_U, BP_V, BP_W,
// x y z { | } ~ DEL
BP_X, BP_Y, BP_Z, BP_Y, BP_B, BP_X, BP_K, KC_DEL
};

View File

@ -13,29 +13,45 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* Sendstring definitions for the Colemak layout */
#ifndef SENDSTRING_COLEMAK // Sendstring lookup tables for Colemak layouts
#define SENDSTRING_COLEMAK
#pragma once
#include "keymap_colemak.h" #include "keymap_colemak.h"
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, // NUL SOH STX ETX EOT ENQ ACK BEL
KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
0, 0, 0, 0, 0, 0, 0, 0, // BS TAB LF VT FF CR SO SI
0, 0, 0, KC_ESC, 0, 0, 0, 0, KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT, // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, // CAN EM SUB ESC FS GS RS US
KC_8, KC_9, CM_SCLN, CM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_2, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
KC_GRV, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
};
#endif // ! " # $ % & '
KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
// ( ) * + , - . /
KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
// 0 1 2 3 4 5 6 7
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
// 8 9 : ; < = > ?
KC_8, KC_9, CM_SCLN, CM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
// @ A B C D E F G
KC_2, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
// H I J K L M N O
CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
// P Q R S T U V W
CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
// X Y Z [ \ ] ^ _
CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
// ` a b c d e f g
KC_GRV, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
// h i j k l m n o
CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
// p q r s t u v w
CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
// x y z { | } ~ DEL
CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
};

View File

@ -13,29 +13,45 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* Sendstring definitions for the Dvorak layout */
#ifndef SENDSTRING_DVORAK // Sendstring lookup tables for Dvorak layouts
#define SENDSTRING_DVORAK
#pragma once
#include "keymap_dvorak.h" #include "keymap_dvorak.h"
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, // NUL SOH STX ETX EOT ENQ ACK BEL
KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
0, 0, 0, 0, 0, 0, 0, 0, // BS TAB LF VT FF CR SO SI
0, 0, 0, KC_ESC, 0, 0, 0, 0, KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_SPC, DV_1, DV_QUOT, DV_3, DV_4, DV_5, DV_7, DV_QUOT, // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
DV_9, DV_0, DV_8, DV_EQL, DV_COMM, DV_MINS, DV_DOT, DV_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
DV_0, DV_1, DV_2, DV_3, DV_4, DV_5, DV_6, DV_7, // CAN EM SUB ESC FS GS RS US
DV_8, DV_9, DV_SCLN, DV_SCLN, DV_COMM, DV_EQL, DV_DOT, DV_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
DV_2, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_6, DV_MINS,
DV_GRV, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_GRV, KC_DEL
};
#endif // ! " # $ % & '
KC_SPC, DV_1, DV_QUOT, DV_3, DV_4, DV_5, DV_7, DV_QUOT,
// ( ) * + , - . /
DV_9, DV_0, DV_8, DV_EQL, DV_COMM, DV_MINS, DV_DOT, DV_SLSH,
// 0 1 2 3 4 5 6 7
DV_0, DV_1, DV_2, DV_3, DV_4, DV_5, DV_6, DV_7,
// 8 9 : ; < = > ?
DV_8, DV_9, DV_SCLN, DV_SCLN, DV_COMM, DV_EQL, DV_DOT, DV_SLSH,
// @ A B C D E F G
DV_2, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
// H I J K L M N O
DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
// P Q R S T U V W
DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
// X Y Z [ \ ] ^ _
DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_6, DV_MINS,
// ` a b c d e f g
DV_GRV, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
// h i j k l m n o
DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
// p q r s t u v w
DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
// x y z { | } ~ DEL
DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_GRV, KC_DEL
};

View File

@ -13,69 +13,85 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* Sendstring definitions for the German layout */
#ifndef SENDSTRING_GERMAN // Sendstring lookup tables for German layouts
#define SENDSTRING_GERMAN
#pragma once
#include "keymap_german.h" #include "keymap_german.h"
const bool ascii_to_shift_lut[0x80] PROGMEM = { const bool ascii_to_shift_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
};
const bool ascii_to_altgr_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 1, 0 0, 0, 0, 1, 1, 1, 1, 0
}; };
/* Until an ALT table/functionality is added, the following symbols will not work: const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
* § @ [ ] { } \ ~ äA öÖ ß ´ // NUL SOH STX ETX EOT ENQ ACK BEL
* Following characters can be printed using other characters like so: XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
* [ in makro will be ü // BS TAB LF VT FF CR SO SI
* { in makro will be Ü KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
* ~ in makro will be ° // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
*/ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { // CAN EM SUB ESC FS GS RS US
0, 0, 0, 0, 0, 0, 0, 0, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, KC_ESC, 0, 0, 0, 0,
/* SPACE ! " # $ % & ' */ // ! " # $ % & '
KC_SPC, KC_1, KC_2, DE_HASH, KC_4, KC_5, KC_6, DE_HASH, KC_SPC, DE_1, DE_2, DE_HASH, DE_4, DE_5, DE_6, DE_HASH,
/* ( ) * + , - . / */ // ( ) * + , - . /
KC_8, KC_9, DE_PLUS, DE_PLUS, KC_COMM, DE_MINS, KC_DOT, KC_7, DE_8, DE_9, DE_PLUS, DE_PLUS, DE_COMM, DE_MINS, DE_DOT, DE_7,
/* 0 1 2 3 4 5 6 7 */ // 0 1 2 3 4 5 6 7
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, DE_0, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7,
/* 8 9 : ; < = > ? */ // 8 9 : ; < = > ?
KC_8, KC_9, KC_DOT, KC_COMM, DE_LESS, KC_0, DE_LESS, KC_MINS, DE_8, DE_9, DE_DOT, DE_COMM, DE_LESS, DE_0, DE_LESS, DE_SS,
/* @ A B C D E F G */ // @ A B C D E F G
KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, DE_Q, DE_A, DE_B, DE_C, DE_D, DE_E, DE_F, DE_G,
/* H I J K L M N O */ // H I J K L M N O
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, DE_H, DE_I, DE_J, DE_K, DE_L, DE_M, DE_N, DE_O,
/* P Q R S T U V W */ // P Q R S T U V W
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W, DE_P, DE_Q, DE_R, DE_S, DE_T, DE_U, DE_V, DE_W,
/* X Y Z [ \ ] ^ _ */ // X Y Z [ \ ] ^ _
KC_X, DE_Y, DE_Z, KC_LBRC, KC_BSLS, KC_RBRC, DE_CIRC, DE_MINS, DE_X, DE_Y, DE_Z, DE_8, DE_SS, DE_9, DE_CIRC, DE_MINS,
/* ` a b c d e f g */ // ` a b c d e f g
DE_ACUT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, DE_ACUT, DE_A, DE_B, DE_C, DE_D, DE_E, DE_F, DE_G,
/* h i j k l m n o */ // h i j k l m n o
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, DE_H, DE_I, DE_J, DE_K, DE_L, DE_M, DE_N, DE_O,
/* p q r s t u v w */ // p q r s t u v w
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W, DE_P, DE_Q, DE_R, DE_S, DE_T, DE_U, DE_V, DE_W,
/* x y z { | } ~ DELETE */ // x y z { | } ~ DEL
KC_X, DE_Y, DE_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL DE_X, DE_Y, DE_Z, DE_7, DE_LESS, DE_0, DE_PLUS, KC_DEL
}; };
#endif

View File

@ -13,15 +13,19 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* Sendstring definitions for the JIS keyboard layout */
#ifndef SENDSTRING_JIS
#define SENDSTRING_JIS
const bool ascii_to_shift_lut[0x80] PROGMEM = { // Sendstring lookup tables for JIS layouts
#pragma once
#include "keymap_jp.h"
const bool ascii_to_shift_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -36,23 +40,38 @@ const bool ascii_to_shift_lut[0x80] PROGMEM = {
0, 0, 0, 1, 1, 1, 1, 0 0, 0, 0, 1, 1, 1, 1, 0
}; };
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, // NUL SOH STX ETX EOT ENQ ACK BEL
KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
0, 0, 0, 0, 0, 0, 0, 0, // BS TAB LF VT FF CR SO SI
0, 0, 0, KC_ESC, 0, 0, 0, 0, KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
KC_8, KC_9, KC_QUOT, KC_SCLN, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, // CAN EM SUB ESC FS GS RS US
KC_8, KC_9, KC_QUOT, KC_SCLN, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_LBRC, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
KC_X, KC_Y, KC_Z, KC_RBRC, KC_JYEN, KC_BSLS, KC_EQL, KC_RO,
KC_LBRC, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
KC_X, KC_Y, KC_Z, KC_RBRC, KC_JYEN, KC_BSLS, KC_EQL, KC_DEL,
};
#endif // ! " # $ % & '
KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
// ( ) * + , - . /
KC_8, KC_9, JP_COLN, JP_SCLN, JP_COMM, JP_MINS, JP_DOT, JP_SLSH,
// 0 1 2 3 4 5 6 7
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
// 8 9 : ; < = > ?
KC_8, KC_9, JP_COLN, JP_SCLN, JP_COMM, JP_MINS, JP_DOT, JP_SLSH,
// @ A B C D E F G
JP_AT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
// H I J K L M N O
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
// P Q R S T U V W
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
// X Y Z [ \ ] ^ _
KC_X, KC_Y, KC_Z, JP_LBRC, JP_BSLS, JP_RBRC, JP_CIRC, JP_BSLS,
// ` a b c d e f g
JP_AT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
// h i j k l m n o
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
// p q r s t u v w
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
// x y z { | } ~ DEL
KC_X, KC_Y, KC_Z, JP_LBRC, JP_YEN, JP_RBRC, JP_CIRC, KC_DEL
};

View File

@ -13,27 +13,45 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* Sendstring definitions for the Colemak layout */
// Sendstring lookup tables for Norman layouts
#pragma once #pragma once
#include "keymap_norman.h" #include "keymap_norman.h"
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, // NUL SOH STX ETX EOT ENQ ACK BEL
KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
0, 0, 0, 0, 0, 0, 0, 0, // BS TAB LF VT FF CR SO SI
0, 0, 0, KC_ESC, 0, 0, 0, 0, KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT, // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, // CAN EM SUB ESC FS GS RS US
KC_8, KC_9, NM_SCLN, NM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_2, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G,
NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O,
NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W,
NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
KC_GRV, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G,
NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O,
NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W,
NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
};
// ! " # $ % & '
KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
// ( ) * + , - . /
KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
// 0 1 2 3 4 5 6 7
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
// 8 9 : ; < = > ?
KC_8, KC_9, NM_SCLN, NM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
// @ A B C D E F G
KC_2, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G,
// H I J K L M N O
NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O,
// P Q R S T U V W
NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W,
// X Y Z [ \ ] ^ _
NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
// ` a b c d e f g
KC_GRV, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G,
// h i j k l m n o
NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O,
// p q r s t u v w
NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W,
// x y z { | } ~ DEL
NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
};

View File

@ -13,59 +13,85 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* Sendstring definitions for the Spanish layout */
#ifndef SENDSTRING_SPANISH // Sendstring lookup tables for Spanish layouts
#define SENDSTRING_SPANISH
#pragma once
#include "keymap_spanish.h" #include "keymap_spanish.h"
const bool ascii_to_shift_lut[0x80] PROGMEM = { const bool ascii_to_shift_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
};
const bool ascii_to_altgr_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 1, 0 0, 0, 0, 1, 1, 1, 1, 0
}; };
/* Until an ALT table/functionality is added, the following symbols will not work: const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
# @ [ ] { } | ~ // NUL SOH STX ETX EOT ENQ ACK BEL
*/ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { // BS TAB LF VT FF CR SO SI
0, 0, 0, 0, 0, 0, 0, 0, KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
0, 0, 0, 0, 0, 0, 0, 0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
0, 0, 0, KC_ESC, 0, 0, 0, 0, // CAN EM SUB ESC FS GS RS US
/* , ! " # $ % & ' */ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, ES_APOS,
/* ( ) * + , - . / */
KC_8, KC_9, ES_PLUS, ES_PLUS, KC_COMM, ES_MINS, KC_DOT, KC_7,
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
/* 8 9 : ; < = > ? */
KC_8, KC_9, KC_DOT, KC_COMM, KC_NUBS, KC_0, KC_NUBS, ES_APOS,
/* @ A B C D E F G */
KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
/* X Y Z [ \ ] ^ _ */
KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, ES_GRV, ES_MINS,
ES_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
};
#endif // ! " # $ % & '
KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, ES_APOS,
// ( ) * + , - . /
KC_8, KC_9, ES_PLUS, ES_PLUS, KC_COMM, ES_MINS, KC_DOT, KC_7,
// 0 1 2 3 4 5 6 7
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
// 8 9 : ; < = > ?
KC_8, KC_9, KC_DOT, KC_COMM, ES_LESS, KC_0, ES_LESS, ES_APOS,
// @ A B C D E F G
KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
// H I J K L M N O
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
// P Q R S T U V W
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
// X Y Z [ \ ] ^ _
KC_X, KC_Y, KC_Z, ES_GRV, ES_OVRR, ES_PLUS, ES_GRV, ES_MINS,
// ` a b c d e f g
ES_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
// h i j k l m n o
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
// p q r s t u v w
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
// x y z { | } ~ DEL
KC_X, KC_Y, KC_Z, ES_ACUT, KC_1, ES_CCED, ES_NTIL, KC_DEL
};

View File

@ -14,12 +14,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* SEND_STRING() LUTs for UK layouts */ // Sendstring lookup tables for UK layouts
#ifndef SENDSTRING_UK #pragma once
#define SENDSTRING_UK
const bool ascii_to_shift_lut[0x80] PROGMEM = { #include "keymap_uk.h"
const bool ascii_to_shift_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -39,24 +40,38 @@ const bool ascii_to_shift_lut[0x80] PROGMEM = {
0, 0, 0, 1, 1, 1, 1, 0 0, 0, 0, 1, 1, 1, 1, 0
}; };
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, // NUL SOH STX ETX EOT ENQ ACK BEL
KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
0, 0, 0, 0, 0, 0, 0, 0, // BS TAB LF VT FF CR SO SI
0, 0, 0, KC_ESC, 0, 0, 0, 0, KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// DLE DC1 DC2 DC3 DC4 NAK SYN ETB
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// CAN EM SUB ESC FS GS RS US
XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_SPC, KC_1, KC_2, KC_NUHS, KC_4, KC_5, KC_7, KC_QUOT, // ! " # $ % & '
KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, UK_SPC, UK_1, UK_2, UK_HASH, UK_4, UK_5, UK_7, UK_QUOT,
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, // ( ) * + , - . /
KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH, UK_9, UK_0, UK_8, UK_EQL, UK_COMM, UK_MINS, UK_DOT, UK_SLSH,
KC_QUOT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, // 0 1 2 3 4 5 6 7
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, UK_0, UK_1, UK_2, UK_3, UK_4, UK_5, UK_6, UK_7,
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W, // 8 9 : ; < = > ?
KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS, UK_8, UK_9, UK_SCLN, UK_SCLN, UK_COMM, UK_EQL, UK_DOT, UK_SLSH,
KC_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, // @ A B C D E F G
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, UK_QUOT, UK_A, UK_B, UK_C, UK_D, UK_E, UK_F, UK_G,
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W, // H I J K L M N O
KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL UK_H, UK_I, UK_J, UK_K, UK_L, UK_M, UK_N, UK_O,
// P Q R S T U V W
UK_P, UK_Q, UK_R, UK_S, UK_T, UK_U, UK_V, UK_W,
// X Y Z [ \ ] ^ _
UK_X, UK_Y, UK_Z, UK_LBRC, UK_BSLS, UK_RBRC, UK_6, UK_MINS,
// ` a b c d e f g
UK_GRV, UK_A, UK_B, UK_C, UK_D, UK_E, UK_F, UK_G,
// h i j k l m n o
UK_H, UK_I, UK_J, UK_K, UK_L, UK_M, UK_N, UK_O,
// p q r s t u v w
UK_P, UK_Q, UK_R, UK_S, UK_T, UK_U, UK_V, UK_W,
// x y z { | } ~ DEL
UK_X, UK_Y, UK_Z, UK_LBRC, UK_BSLS, UK_RBRC, UK_HASH, KC_DEL
}; };
#endif

View File

@ -13,29 +13,45 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* Sendstring definitions for the Workman layout */
#ifndef SENDSTRING_WORKMAN // Sendstring lookup tables for Workman layouts
#define SENDSTRING_WORKMAN
#pragma once
#include "keymap_workman.h" #include "keymap_workman.h"
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, // NUL SOH STX ETX EOT ENQ ACK BEL
KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
0, 0, 0, 0, 0, 0, 0, 0, // BS TAB LF VT FF CR SO SI
0, 0, 0, KC_ESC, 0, 0, 0, 0, KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT, // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, // CAN EM SUB ESC FS GS RS US
KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_2, WK_A, WK_B, WK_C, WK_D, WK_E, WK_F, WK_G,
WK_H, WK_I, WK_J, WK_K, WK_L, WK_M, WK_N, WK_O,
WK_P, WK_Q, WK_R, WK_S, WK_T, WK_U, WK_V, WK_W,
WK_X, WK_Y, WK_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
KC_GRV, WK_A, WK_B, WK_C, WK_D, WK_E, WK_F, WK_G,
WK_H, WK_I, WK_J, WK_K, WK_L, WK_M, WK_N, WK_O,
WK_P, WK_Q, WK_R, WK_S, WK_T, WK_U, WK_V, WK_W,
WK_X, WK_Y, WK_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
};
#endif // ! " # $ % & '
KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
// ( ) * + , - . /
KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
// 0 1 2 3 4 5 6 7
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
// 8 9 : ; < = > ?
KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
// @ A B C D E F G
KC_2, WK_A, WK_B, WK_C, WK_D, WK_E, WK_F, WK_G,
// H I J K L M N O
WK_H, WK_I, WK_J, WK_K, WK_L, WK_M, WK_N, WK_O,
// P Q R S T U V W
WK_P, WK_Q, WK_R, WK_S, WK_T, WK_U, WK_V, WK_W,
// X Y Z [ \ ] ^ _
WK_X, WK_Y, WK_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
// ` a b c d e f g
KC_GRV, WK_A, WK_B, WK_C, WK_D, WK_E, WK_F, WK_G,
// h i j k l m n o
WK_H, WK_I, WK_J, WK_K, WK_L, WK_M, WK_N, WK_O,
// p q r s t u v w
WK_P, WK_Q, WK_R, WK_S, WK_T, WK_U, WK_V, WK_W,
// x y z { | } ~ DEL
WK_X, WK_Y, WK_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
};

View File

@ -719,11 +719,12 @@ bool process_record_quantum(keyrecord_t *record) {
} }
__attribute__ ((weak)) __attribute__ ((weak))
const bool ascii_to_shift_lut[0x80] PROGMEM = { const bool ascii_to_shift_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -739,11 +740,12 @@ const bool ascii_to_shift_lut[0x80] PROGMEM = {
}; };
__attribute__ ((weak)) __attribute__ ((weak))
const bool ascii_to_altgr_lut[0x80] PROGMEM = { const bool ascii_to_altgr_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -759,23 +761,40 @@ const bool ascii_to_altgr_lut[0x80] PROGMEM = {
}; };
__attribute__ ((weak)) __attribute__ ((weak))
const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
0, 0, 0, 0, 0, 0, 0, 0, // NUL SOH STX ETX EOT ENQ ACK BEL
KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
0, 0, 0, 0, 0, 0, 0, 0, // BS TAB LF VT FF CR SO SI
0, 0, 0, KC_ESC, 0, 0, 0, 0, KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT, // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, // CAN EM SUB ESC FS GS RS US
KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, // ! " # $ % & '
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W, KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS, // ( ) * + , - . /
KC_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O, // 0 1 2 3 4 5 6 7
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL // 8 9 : ; < = > ?
KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
// @ A B C D E F G
KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
// H I J K L M N O
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
// P Q R S T U V W
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
// X Y Z [ \ ] ^ _
KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
// ` a b c d e f g
KC_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
// h i j k l m n o
KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
// p q r s t u v w
KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
// x y z { | } ~ DEL
KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
}; };
void send_string(const char *str) { void send_string(const char *str) {

View File

@ -201,9 +201,9 @@ extern layer_state_t default_layer_state;
#define SEND_STRING(string) send_string_P(PSTR(string)) #define SEND_STRING(string) send_string_P(PSTR(string))
extern const bool ascii_to_shift_lut[0x80]; extern const bool ascii_to_shift_lut[128];
extern const bool ascii_to_altgr_lut[0x80]; extern const bool ascii_to_altgr_lut[128];
extern const uint8_t ascii_to_keycode_lut[0x80]; extern const uint8_t ascii_to_keycode_lut[128];
void send_string(const char *str); void send_string(const char *str);
void send_string_with_delay(const char *str, uint8_t interval); void send_string_with_delay(const char *str, uint8_t interval);