diff options
| -rw-r--r-- | quantum/quantum.c | 54 | ||||
| -rw-r--r-- | quantum/quantum.h | 2 |
2 files changed, 56 insertions, 0 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c index d9aaafd61..6480e33c6 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c | |||
| @@ -473,6 +473,60 @@ bool process_record_quantum(keyrecord_t *record) { | |||
| 473 | return process_action_kb(record); | 473 | return process_action_kb(record); |
| 474 | } | 474 | } |
| 475 | 475 | ||
| 476 | bool shift_us_qwerty[0x80] = { | ||
| 477 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 31 | ||
| 478 | 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, // 32 - 63 | ||
| 479 | 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, // 64 - 95 | ||
| 480 | 0, 0, 0, 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 // 96 - 127 | ||
| 481 | }; | ||
| 482 | |||
| 483 | uint8_t ascii_us_qwerty[0x80] = { | ||
| 484 | 0, 0, 0, 0, 0, 0, 0, 0, KC_BSPC, 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 - 31 | ||
| 485 | 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, // 32 - 46 | ||
| 486 | KC_SLSH, 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, // 47 - 61 | ||
| 487 | KC_DOT, KC_SLSH, 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, // 62 - 78 | ||
| 488 | 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_6, // 79 - 94 | ||
| 489 | KC_MINS, KC_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, // 95 - 111 | ||
| 490 | 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 // 112 - 127 | ||
| 491 | }; | ||
| 492 | |||
| 493 | // This is how you'd add OS colemak support | ||
| 494 | |||
| 495 | // bool shift_us_colemak[0x80] = { | ||
| 496 | // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 31 | ||
| 497 | // 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, // 32 - 63 | ||
| 498 | // 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, // 64 - 95 | ||
| 499 | // 0, 0, 0, 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 // 96 - 127 | ||
| 500 | // }; | ||
| 501 | |||
| 502 | // #include "keymap_colemak.h" | ||
| 503 | |||
| 504 | // uint8_t ascii_us_colemak[0x80] = { | ||
| 505 | // 0, 0, 0, 0, 0, 0, 0, 0, KC_BSPC, 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 - 31 | ||
| 506 | // 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, // 32 - 46 | ||
| 507 | // KC_SLSH, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, CM_SCLN, CM_SCLN, KC_COMM, KC_EQL, // 47 - 61 | ||
| 508 | // KC_DOT, KC_SLSH, 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, // 62 - 78 | ||
| 509 | // 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, // 79 - 94 | ||
| 510 | // 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, // 95 - 111 | ||
| 511 | // 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 // 112 - 127 | ||
| 512 | // }; | ||
| 513 | |||
| 514 | void send_string(char str[]) { | ||
| 515 | for (int i = 0; str[i] != 0; i++) { | ||
| 516 | uint8_t keycode = ascii_us_qwerty[str[i]]; | ||
| 517 | if (shift_us_qwerty[str[i]]) { | ||
| 518 | register_code(KC_LSFT); | ||
| 519 | register_code(keycode); | ||
| 520 | unregister_code(keycode); | ||
| 521 | unregister_code(KC_LSFT); | ||
| 522 | } else { | ||
| 523 | register_code(keycode); | ||
| 524 | unregister_code(keycode); | ||
| 525 | } | ||
| 526 | } | ||
| 527 | } | ||
| 528 | |||
| 529 | |||
| 476 | void matrix_init_quantum() { | 530 | void matrix_init_quantum() { |
| 477 | matrix_init_kb(); | 531 | matrix_init_kb(); |
| 478 | } | 532 | } |
diff --git a/quantum/quantum.h b/quantum/quantum.h index 3ce940895..786bcb238 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h | |||
| @@ -59,6 +59,8 @@ extern uint32_t default_layer_state; | |||
| 59 | #define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT) | 59 | #define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT) |
| 60 | #endif | 60 | #endif |
| 61 | 61 | ||
| 62 | void send_string(char str[]); | ||
| 63 | |||
| 62 | void matrix_init_kb(void); | 64 | void matrix_init_kb(void); |
| 63 | void matrix_scan_kb(void); | 65 | void matrix_scan_kb(void); |
| 64 | bool process_action_kb(keyrecord_t *record); | 66 | bool process_action_kb(keyrecord_t *record); |
