1 /* Copyright 2015-2017 Jack Humbert
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.
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.
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/>.
17 #include QMK_KEYBOARD_H
18 #include "keymap_steno.h"
20 extern keymap_config_t keymap_config
;
32 enum planck_keycodes
{
43 #define ST_BOLT QK_STENO_BOLT
44 #define ST_GEM QK_STENO_GEMINI
46 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
49 * ,-----------------------------------------------------------------------------------.
50 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
51 * |------+------+------+------+------+-------------+------+------+------+------+------|
52 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
53 * |------+------+------+------+------+------|------+------+------+------+------+------|
54 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
55 * |------+------+------+------+------+------+------+------+------+------+------+------|
56 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
57 * `-----------------------------------------------------------------------------------'
59 [_QWERTY
] = LAYOUT_planck_grid(
60 KC_TAB
, KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_BSPC
,
61 KC_ESC
, KC_A
, KC_S
, KC_D
, KC_F
, KC_G
, KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
, KC_QUOT
,
62 KC_LSFT
, KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_N
, KC_M
, KC_COMM
, KC_DOT
, KC_SLSH
, KC_ENT
,
63 BACKLIT
, KC_LCTL
, KC_LALT
, KC_LGUI
, LOWER
, KC_SPC
, KC_SPC
, RAISE
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
67 * ,-----------------------------------------------------------------------------------.
68 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
69 * |------+------+------+------+------+-------------+------+------+------+------+------|
70 * | Esc | A | R | S | T | D | H | N | E | I | O | " |
71 * |------+------+------+------+------+------|------+------+------+------+------+------|
72 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
73 * |------+------+------+------+------+------+------+------+------+------+------+------|
74 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
75 * `-----------------------------------------------------------------------------------'
77 [_COLEMAK
] = LAYOUT_planck_grid(
78 KC_TAB
, KC_Q
, KC_W
, KC_F
, KC_P
, KC_G
, KC_J
, KC_L
, KC_U
, KC_Y
, KC_SCLN
, KC_BSPC
,
79 KC_ESC
, KC_A
, KC_R
, KC_S
, KC_T
, KC_D
, KC_H
, KC_N
, KC_E
, KC_I
, KC_O
, KC_QUOT
,
80 KC_LSFT
, KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_K
, KC_M
, KC_COMM
, KC_DOT
, KC_SLSH
, KC_ENT
,
81 BACKLIT
, KC_LCTL
, KC_LALT
, KC_LGUI
, LOWER
, KC_SPC
, KC_SPC
, RAISE
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
85 * ,-----------------------------------------------------------------------------------.
86 * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
87 * |------+------+------+------+------+-------------+------+------+------+------+------|
88 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
89 * |------+------+------+------+------+------|------+------+------+------+------+------|
90 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
91 * |------+------+------+------+------+------+------+------+------+------+------+------|
92 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
93 * `-----------------------------------------------------------------------------------'
95 [_DVORAK
] = LAYOUT_planck_grid(
96 KC_TAB
, KC_QUOT
, KC_COMM
, KC_DOT
, KC_P
, KC_Y
, KC_F
, KC_G
, KC_C
, KC_R
, KC_L
, KC_BSPC
,
97 KC_ESC
, KC_A
, KC_O
, KC_E
, KC_U
, KC_I
, KC_D
, KC_H
, KC_T
, KC_N
, KC_S
, KC_SLSH
,
98 KC_LSFT
, KC_SCLN
, KC_Q
, KC_J
, KC_K
, KC_X
, KC_B
, KC_M
, KC_W
, KC_V
, KC_Z
, KC_ENT
,
99 BACKLIT
, KC_LCTL
, KC_LALT
, KC_LGUI
, LOWER
, KC_SPC
, KC_SPC
, RAISE
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
103 * ,-----------------------------------------------------------------------------------.
104 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
105 * |------+------+------+------+------+-------------+------+------+------+------+------|
106 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
107 * |------+------+------+------+------+------|------+------+------+------+------+------|
108 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
109 * |------+------+------+------+------+------+------+------+------+------+------+------|
110 * | | | | | | | | Next | Vol- | Vol+ | Play |
111 * `-----------------------------------------------------------------------------------'
113 [_LOWER
] = LAYOUT_planck_grid(
114 KC_TILD
, KC_EXLM
, KC_AT
, KC_HASH
, KC_DLR
, KC_PERC
, KC_CIRC
, KC_AMPR
, KC_ASTR
, KC_LPRN
, KC_RPRN
, KC_BSPC
,
115 KC_DEL
, KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_F6
, KC_UNDS
, KC_PLUS
, KC_LCBR
, KC_RCBR
, KC_PIPE
,
116 _______
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, KC_F11
, KC_F12
, S(KC_NUHS
), S(KC_NUBS
), KC_HOME
, KC_END
, _______
,
117 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_MNXT
, KC_VOLD
, KC_VOLU
, KC_MPLY
121 * ,-----------------------------------------------------------------------------------.
122 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
123 * |------+------+------+------+------+-------------+------+------+------+------+------|
124 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
125 * |------+------+------+------+------+------|------+------+------+------+------+------|
126 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
127 * |------+------+------+------+------+------+------+------+------+------+------+------|
128 * | | | | | | | | Next | Vol- | Vol+ | Play |
129 * `-----------------------------------------------------------------------------------'
131 [_RAISE
] = LAYOUT_planck_grid(
132 KC_GRV
, KC_1
, KC_2
, KC_3
, KC_4
, KC_5
, KC_6
, KC_7
, KC_8
, KC_9
, KC_0
, KC_BSPC
,
133 KC_DEL
, KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_F6
, KC_MINS
, KC_EQL
, KC_LBRC
, KC_RBRC
, KC_BSLS
,
134 _______
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, KC_F11
, KC_F12
, KC_NUHS
, KC_NUBS
, KC_PGUP
, KC_PGDN
, _______
,
135 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_MNXT
, KC_VOLD
, KC_VOLU
, KC_MPLY
138 /* Plover layer (http://opensteno.org)
139 * ,-----------------------------------------------------------------------------------.
140 * | # | # | # | # | # | # | # | # | # | # | # | # |
141 * |------+------+------+------+------+-------------+------+------+------+------+------|
142 * | FN | S | T | P | H | * | * | F | P | L | T | D |
143 * |------+------+------+------+------+------|------+------+------+------+------+------|
144 * | | S | K | W | R | * | * | R | B | G | S | Z |
145 * |------+------+------+------+------+------+------+------+------+------+------+------|
146 * | Exit | | | A | O | | E | U | PWR | RES1 | RES2 |
147 * `-----------------------------------------------------------------------------------'
150 [_PLOVER
] = LAYOUT_planck_grid(
151 STN_N1
, STN_N2
, STN_N3
, STN_N4
, STN_N5
, STN_N6
, STN_N7
, STN_N8
, STN_N9
, STN_NA
, STN_NB
, STN_NC
,
152 STN_FN
, STN_S1
, STN_TL
, STN_PL
, STN_HL
, STN_ST1
, STN_ST3
, STN_FR
, STN_PR
, STN_LR
, STN_TR
, STN_DR
,
153 XXXXXXX
, STN_S2
, STN_KL
, STN_WL
, STN_RL
, STN_ST2
, STN_ST4
, STN_RR
, STN_BR
, STN_GR
, STN_SR
, STN_ZR
,
154 EXT_PLV
, XXXXXXX
, XXXXXXX
, STN_A
, STN_O
, XXXXXXX
, XXXXXXX
, STN_E
, STN_U
, STN_PWR
, STN_RE1
, STN_RE2
157 /* Adjust (Lower + Raise)
158 * ,-----------------------------------------------------------------------------------.
159 * | | Reset| | | | | | | | | | Del |
160 * |------+------+------+------+------+-------------+------+------+------+------+------|
161 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
162 * |------+------+------+------+------+------|------+------+------+------+------+------|
163 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | |TXBOLT|GEM RP|
164 * |------+------+------+------+------+------+------+------+------+------+------+------|
165 * | | | | | | | | | | | |
166 * `-----------------------------------------------------------------------------------'
168 [_ADJUST
] = LAYOUT_planck_grid(
169 _______
, RESET
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_DEL
,
170 _______
, _______
, MU_MOD
, AU_ON
, AU_OFF
, AG_NORM
, AG_SWAP
, QWERTY
, COLEMAK
, DVORAK
, PLOVER
, _______
,
171 _______
, MUV_DE
, MUV_IN
, MU_ON
, MU_OFF
, MI_ON
, MI_OFF
, _______
, _______
, _______
, ST_BOLT
, ST_GEM
,
172 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
179 float plover_song
[][2] = SONG(PLOVER_SOUND
);
180 float plover_gb_song
[][2] = SONG(PLOVER_GOODBYE_SOUND
);
183 bool process_record_user(uint16_t keycode
, keyrecord_t
*record
) {
186 if (record
->event
.pressed
) {
187 set_single_persistent_default_layer(_QWERTY
);
192 if (record
->event
.pressed
) {
193 set_single_persistent_default_layer(_COLEMAK
);
198 if (record
->event
.pressed
) {
199 set_single_persistent_default_layer(_DVORAK
);
204 if (record
->event
.pressed
) {
206 update_tri_layer(_LOWER
, _RAISE
, _ADJUST
);
209 update_tri_layer(_LOWER
, _RAISE
, _ADJUST
);
214 if (record
->event
.pressed
) {
216 update_tri_layer(_LOWER
, _RAISE
, _ADJUST
);
219 update_tri_layer(_LOWER
, _RAISE
, _ADJUST
);
224 if (record
->event
.pressed
) {
225 register_code(KC_RSFT
);
226 #ifdef BACKLIGHT_ENABLE
230 unregister_code(KC_RSFT
);
235 if (!record
->event
.pressed
) {
238 PLAY_SONG(plover_song
);
245 if (record
->event
.pressed
) {
247 PLAY_SONG(plover_gb_song
);