aboutsummaryrefslogtreecommitdiff
path: root/quantum
diff options
context:
space:
mode:
Diffstat (limited to 'quantum')
-rw-r--r--quantum/keymap_extras/sendstring_colemak.h41
-rw-r--r--quantum/keymap_extras/sendstring_dvorak.h41
-rw-r--r--quantum/keymap_extras/sendstring_jis.h58
-rw-r--r--quantum/quantum.c90
-rw-r--r--quantum/quantum.h2
5 files changed, 144 insertions, 88 deletions
diff --git a/quantum/keymap_extras/sendstring_colemak.h b/quantum/keymap_extras/sendstring_colemak.h
new file mode 100644
index 000000000..fa9ace929
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_colemak.h
@@ -0,0 +1,41 @@
1/* Copyright 2016 Jack Humbert
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
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/>.
15 */
16/* Sendstring definitions for the Colemak layout */
17#ifndef SENDSTRING_COLEMAK
18#define SENDSTRING_COLEMAK
19
20#include "keymap_colemak.h"
21
22const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = {
23 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,
26 0, 0, 0, KC_ESC, 0, 0, 0, 0,
27 KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
28 KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
29 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
30 KC_8, KC_9, CM_SCLN, CM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
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
41#endif
diff --git a/quantum/keymap_extras/sendstring_dvorak.h b/quantum/keymap_extras/sendstring_dvorak.h
new file mode 100644
index 000000000..f5c5c818b
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_dvorak.h
@@ -0,0 +1,41 @@
1/* Copyright 2016 Jack Humbert
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
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/>.
15 */
16/* Sendstring definitions for the Dvorak layout */
17#ifndef SENDSTRING_DVORAK
18#define SENDSTRING_DVORAK
19
20#include "keymap_dvorak.h"
21
22const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = {
23 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,
26 0, 0, 0, KC_ESC, 0, 0, 0, 0,
27 KC_SPC, DV_1, DV_QUOT, DV_3, DV_4, DV_5, DV_7, DV_QUOT,
28 DV_9, DV_0, DV_8, DV_EQL, DV_COMM, DV_MINS, DV_DOT, DV_SLSH,
29 DV_0, DV_1, DV_2, DV_3, DV_4, DV_5, DV_6, DV_7,
30 DV_8, DV_9, DV_SCLN, DV_SCLN, DV_COMM, DV_EQL, DV_DOT, DV_SLSH,
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
41#endif
diff --git a/quantum/keymap_extras/sendstring_jis.h b/quantum/keymap_extras/sendstring_jis.h
new file mode 100644
index 000000000..c5a38c6a5
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_jis.h
@@ -0,0 +1,58 @@
1/* Copyright 2016 Jack Humbert
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
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/>.
15 */
16/* Sendstring definitions for the JIS keyboard layout */
17#ifndef SENDSTRING_JIS
18#define SENDSTRING_JIS
19
20const bool ascii_to_shift_lut[0x80] PROGMEM = {
21 0, 0, 0, 0, 0, 0, 0, 0,
22 0, 0, 0, 0, 0, 0, 0, 0,
23 0, 0, 0, 0, 0, 0, 0, 0,
24 0, 0, 0, 0, 0, 0, 0, 0,
25 0, 1, 1, 1, 1, 1, 1, 1,
26 1, 1, 1, 1, 0, 0, 0, 0,
27 0, 0, 0, 0, 0, 0, 0, 0,
28 0, 0, 0, 0, 1, 1, 1, 1,
29 0, 1, 1, 1, 1, 1, 1, 1,
30 1, 1, 1, 1, 1, 1, 1, 1,
31 1, 1, 1, 1, 1, 1, 1, 1,
32 1, 1, 1, 0, 0, 0, 0, 1,
33 1, 0, 0, 0, 0, 0, 0, 0,
34 0, 0, 0, 0, 0, 0, 0, 0,
35 0, 0, 0, 0, 0, 0, 0, 0,
36 0, 0, 0, 1, 1, 1, 1, 0
37};
38
39const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = {
40 0, 0, 0, 0, 0, 0, 0, 0,
41 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0,
42 0, 0, 0, 0, 0, 0, 0, 0,
43 0, 0, 0, KC_ESC, 0, 0, 0, 0,
44 KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
45 KC_8, KC_9, KC_QUOT, KC_SCLN, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
46 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
47 KC_8, KC_9, KC_QUOT, KC_SCLN, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
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
58#endif
diff --git a/quantum/quantum.c b/quantum/quantum.c
index b5acc75c3..36e586d31 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -455,28 +455,7 @@ bool process_record_quantum(keyrecord_t *record) {
455 return process_action_kb(record); 455 return process_action_kb(record);
456} 456}
457 457
458#if defined SENDSTRING_JIS_KEYCODE 458__attribute__ ((weak))
459/* for users with JIS keyboards */
460const bool ascii_to_shift_lut[0x80] PROGMEM = {
461 0, 0, 0, 0, 0, 0, 0, 0,
462 0, 0, 0, 0, 0, 0, 0, 0,
463 0, 0, 0, 0, 0, 0, 0, 0,
464 0, 0, 0, 0, 0, 0, 0, 0,
465 0, 1, 1, 1, 1, 1, 1, 1,
466 1, 1, 1, 1, 0, 0, 0, 0,
467 0, 0, 0, 0, 0, 0, 0, 0,
468 0, 0, 0, 0, 1, 1, 1, 1,
469 0, 1, 1, 1, 1, 1, 1, 1,
470 1, 1, 1, 1, 1, 1, 1, 1,
471 1, 1, 1, 1, 1, 1, 1, 1,
472 1, 1, 1, 0, 0, 0, 0, 1,
473 1, 0, 0, 0, 0, 0, 0, 0,
474 0, 0, 0, 0, 0, 0, 0, 0,
475 0, 0, 0, 0, 0, 0, 0, 0,
476 0, 0, 0, 1, 1, 1, 1, 0
477};
478#else
479/* for standard keycodes */
480const bool ascii_to_shift_lut[0x80] PROGMEM = { 459const bool ascii_to_shift_lut[0x80] PROGMEM = {
481 0, 0, 0, 0, 0, 0, 0, 0, 460 0, 0, 0, 0, 0, 0, 0, 0,
482 0, 0, 0, 0, 0, 0, 0, 0, 461 0, 0, 0, 0, 0, 0, 0, 0,
@@ -495,72 +474,8 @@ const bool ascii_to_shift_lut[0x80] PROGMEM = {
495 0, 0, 0, 0, 0, 0, 0, 0, 474 0, 0, 0, 0, 0, 0, 0, 0,
496 0, 0, 0, 1, 1, 1, 1, 0 475 0, 0, 0, 1, 1, 1, 1, 0
497}; 476};
498#endif
499 477
500#if defined SENDSTRING_JIS_KEYCODE 478__attribute__ ((weak))
501/* for users with JIS keyboards */
502const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = {
503 0, 0, 0, 0, 0, 0, 0, 0,
504 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0,
505 0, 0, 0, 0, 0, 0, 0, 0,
506 0, 0, 0, KC_ESC, 0, 0, 0, 0,
507 KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
508 KC_8, KC_9, KC_QUOT, KC_SCLN, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
509 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
510 KC_8, KC_9, KC_QUOT, KC_SCLN, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
511 KC_LBRC, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
512 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
513 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
514 KC_X, KC_Y, KC_Z, KC_RBRC, KC_JYEN, KC_BSLS, KC_EQL, KC_RO,
515 KC_LBRC, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
516 KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
517 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
518 KC_X, KC_Y, KC_Z, KC_RBRC, KC_JYEN, KC_BSLS, KC_EQL, KC_DEL,
519};
520#elif defined SENDSTRING_COLEMAK_KEYCODE
521/* for users whose OSes are set to Colemak */
522#include "keymap_colemak.h"
523const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = {
524 0, 0, 0, 0, 0, 0, 0, 0,
525 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0,
526 0, 0, 0, 0, 0, 0, 0, 0,
527 0, 0, 0, KC_ESC, 0, 0, 0, 0,
528 KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
529 KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
530 KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
531 KC_8, KC_9, CM_SCLN, CM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
532 KC_2, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
533 CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
534 CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
535 CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
536 KC_GRV, CM_A, CM_B, CM_C, CM_D, CM_E, CM_F, CM_G,
537 CM_H, CM_I, CM_J, CM_K, CM_L, CM_M, CM_N, CM_O,
538 CM_P, CM_Q, CM_R, CM_S, CM_T, CM_U, CM_V, CM_W,
539 CM_X, CM_Y, CM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
540};
541#elif defined SENDSTRING_DVORAK_KEYCODE
542/* for users whose OSes are set to Dvorak */
543#include "keymap_dvorak.h"
544const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = {
545 0, 0, 0, 0, 0, 0, 0, 0,
546 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0,
547 0, 0, 0, 0, 0, 0, 0, 0,
548 0, 0, 0, KC_ESC, 0, 0, 0, 0,
549 KC_SPC, DV_1, DV_QUOT, DV_3, DV_4, DV_5, DV_7, DV_QUOT,
550 DV_9, DV_0, DV_8, DV_EQL, DV_COMM, DV_MINS, DV_DOT, DV_SLSH,
551 DV_0, DV_1, DV_2, DV_3, DV_4, DV_5, DV_6, DV_7,
552 DV_8, DV_9, DV_SCLN, DV_SCLN, DV_COMM, DV_EQL, DV_DOT, DV_SLSH,
553 DV_2, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
554 DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
555 DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
556 DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_6, DV_MINS,
557 DV_GRV, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
558 DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
559 DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
560 DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_GRV, KC_DEL
561};
562#else
563/* For users with default keyboard layout in OS */
564const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { 479const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = {
565 0, 0, 0, 0, 0, 0, 0, 0, 480 0, 0, 0, 0, 0, 0, 0, 0,
566 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, 481 KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0,
@@ -579,7 +494,6 @@ const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = {
579 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W, 494 KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
580 KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL 495 KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
581}; 496};
582#endif
583 497
584void send_string(const char *str) { 498void send_string(const char *str) {
585 send_string_with_delay(str, 0); 499 send_string_with_delay(str, 0);
diff --git a/quantum/quantum.h b/quantum/quantum.h
index 1dafbf3b0..e00fe2346 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -95,6 +95,8 @@ extern uint32_t default_layer_state;
95#endif 95#endif
96 96
97#define SEND_STRING(str) send_string(PSTR(str)) 97#define SEND_STRING(str) send_string(PSTR(str))
98extern const bool ascii_to_shift_lut[0x80];
99extern const uint8_t ascii_to_keycode_lut[0x80];
98void send_string(const char *str); 100void send_string(const char *str);
99void send_string_with_delay(const char *str, uint8_t interval); 101void send_string_with_delay(const char *str, uint8_t interval);
100 102