From 3eaa0645c8376e0d8612873955bf59b776bdb8d9 Mon Sep 17 00:00:00 2001 From: "Collin J. Doering" Date: Sun, 5 Apr 2020 14:26:52 -0400 Subject: [PATCH] Add stenography layout --- .../levinson/keymaps/rekahsoft/keymap.c | 54 +++++++++++++++---- .../levinson/keymaps/rekahsoft/rules.mk | 1 + 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/keyboards/keebio/levinson/keymaps/rekahsoft/keymap.c b/keyboards/keebio/levinson/keymaps/rekahsoft/keymap.c index 3cb9eb06db..017a3f38aa 100644 --- a/keyboards/keebio/levinson/keymaps/rekahsoft/keymap.c +++ b/keyboards/keebio/levinson/keymaps/rekahsoft/keymap.c @@ -1,17 +1,19 @@ #include QMK_KEYBOARD_H - +#include "keymap_steno.h" #define _QWERTY 0 #define _COLEMAK 1 #define _DVORAK 2 -#define _LOWER 3 -#define _RAISE 4 +#define _STENO 3 +#define _LOWER 4 +#define _RAISE 5 #define _ADJUST 16 enum custom_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK, + STENO, LOWER, RAISE, ADJUST, @@ -129,6 +131,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ ), +/* Steno layout layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | FN | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | PWR | RES1 | RES2 | + * `-----------------------------------------------------------------------------------' + */ + +[_STENO] = LAYOUT_ortho_4x12( \ + STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC, \ + STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR, \ + XXXXXXX, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR, \ + _______, XXXXXXX, XXXXXXX, STN_A, STN_O, XXXXXXX, XXXXXXX, STN_E, STN_U, STN_PWR, STN_RE1, STN_RE2 +), + + /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. * | | Reset| | | | | | | | | | Del | @@ -142,18 +164,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = LAYOUT_ortho_4x12( \ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ - _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, STENO, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ ) - }; #ifdef AUDIO_ENABLE float tone_qwerty[][2] = SONG(QWERTY_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); +// TODO: float tone_steno[][2] = SONG(...); #endif void persistent_default_layer_set(uint16_t default_layer) { @@ -190,13 +212,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case LOWER: + case STENO: if (record->event.pressed) { - layer_on(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); + #ifdef AUDIO_ENABLE + // TODO: audio + PLAY_SONG(tone_steno); + #endif + persistent_default_layer_set(1UL<<_STENO); } return false; break; @@ -210,6 +232,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; case ADJUST: if (record->event.pressed) { layer_on(_ADJUST); diff --git a/keyboards/keebio/levinson/keymaps/rekahsoft/rules.mk b/keyboards/keebio/levinson/keymaps/rekahsoft/rules.mk index fb9195de48..aac461220d 100644 --- a/keyboards/keebio/levinson/keymaps/rekahsoft/rules.mk +++ b/keyboards/keebio/levinson/keymaps/rekahsoft/rules.mk @@ -1,3 +1,4 @@ RGBLIGHT_ENABLE = no BACKLIGHT_ENABLE = yes NKRO_ENABLE = yes +STENO_ENABLE = yes