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
21 extern keymap_config_t keymap_config
;
23 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
26 * ,-----------------------------------------------------------------------------------.
27 * |HypTab| Q | W | E | R | T | Y | U | I | O | P | Bksp |
28 * |------+------+------+------+------+------+------+------+------+------+------+------|
29 * |EscCtl| A | S | D | F | G | H | J | K | L | ; | " |
30 * |------+------+------+------+------+------+------+------+------+------+------+------|
31 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
32 * |------+------+------+------+------+------+------+------+------+------+------+------|
33 * | GESC | Ctrl | Alt | GUI |Lower |SpcUtl|SpcUtl|Raise | Left | Down | Up |Right |
34 * `-----------------------------------------------------------------------------------'
36 [_QWERTY
] = LAYOUT_ortho_4x12(
37 HPR_TAB
, KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_BSPC
,
38 ESC_CTL
, KC_A
, KC_S
, KC_D
, KC_F
, KC_G
, KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
, KC_QUOT
,
39 KC_LSFT
, KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_N
, KC_M
, KC_COMM
, KC_DOT
, KC_SLSH
, SFT_ENT
,
40 KC_GESC
, KC_LCTL
, KC_LALT
, KC_LGUI
, LOWER
, SPC_UTL
, SPC_UTL
, RAISE
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
44 * Gaming is very similar to Qwerty. Certain features from Qwerty are disable
45 * for better gaming experience.
47 [_GAMING
] = LAYOUT_ortho_4x12(
48 KC_TAB
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
,
49 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
,
50 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
,
51 KC_ESC
, _______
, _______
, _______
, _______
, KC_SPC
, KC_SPC
, _______
, _______
, _______
, _______
, _______
55 * Util is accessed by holding Space. The Util layer contains vimkeys and
56 * shortcuts that I find myself needing often.
58 [_UTIL
] = LAYOUT_ortho_4x12( \
59 _______
, GUI_1
, GUI_2
, GUI_3
, GUI_4
, GUI_5
, GUI_6
, GUI_7
, GUI_8
, GUI_9
, GUI_0
, _______
,
60 _______
, KC_VOLD
, KC_VOLU
, KC_MUTE
, _______
, _______
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
, _______
, _______
,
61 _______
, _______
, _______
, _______
, _______
, _______
, _______
, GO_BACK
, GO_FWD
, _______
, _______
, _______
,
62 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
65 * ,-----------------------------------------------------------------------------------.
66 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
67 * |------+------+------+------+------+------+------+------+------+------+------+------|
68 * | Esc | A | R | S | T | D | H | N | E | I | O | " |
69 * |------+------+------+------+------+------+------+------+------+------+------+------|
70 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
71 * |------+------+------+------+------+------+------+------+------+------+------+------|
72 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
73 * `-----------------------------------------------------------------------------------'
75 [_COLEMAK
] = LAYOUT_ortho_4x12(
76 KC_TAB
, KC_Q
, KC_W
, KC_F
, KC_P
, KC_G
, KC_J
, KC_L
, KC_U
, KC_Y
, KC_SCLN
, KC_BSPC
,
77 KC_ESC
, KC_A
, KC_R
, KC_S
, KC_T
, KC_D
, KC_H
, KC_N
, KC_E
, KC_I
, KC_O
, KC_QUOT
,
78 KC_LSFT
, KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_K
, KC_M
, KC_COMM
, KC_DOT
, KC_SLSH
, KC_ENT
,
79 BACKLIT
, KC_LCTL
, KC_LALT
, KC_LGUI
, LOWER
, KC_SPC
, KC_SPC
, RAISE
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
83 * ,-----------------------------------------------------------------------------------.
84 * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
85 * |------+------+------+------+------+------+------+------+------+------+------+------|
86 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
87 * |------+------+------+------+------+------+------+------+------+------+------+------|
88 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
89 * |------+------+------+------+------+------+------+------+------+------+------+------|
90 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
91 * `-----------------------------------------------------------------------------------'
93 [_DVORAK
] = LAYOUT_ortho_4x12(
94 KC_TAB
, KC_QUOT
, KC_COMM
, KC_DOT
, KC_P
, KC_Y
, KC_F
, KC_G
, KC_C
, KC_R
, KC_L
, KC_BSPC
,
95 KC_ESC
, KC_A
, KC_O
, KC_E
, KC_U
, KC_I
, KC_D
, KC_H
, KC_T
, KC_N
, KC_S
, KC_SLSH
,
96 KC_LSFT
, KC_SCLN
, KC_Q
, KC_J
, KC_K
, KC_X
, KC_B
, KC_M
, KC_W
, KC_V
, KC_Z
, KC_ENT
,
97 BACKLIT
, KC_LCTL
, KC_LALT
, KC_LGUI
, LOWER
, KC_SPC
, KC_SPC
, RAISE
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
101 * ,-----------------------------------------------------------------------------------.
102 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
103 * |------+------+------+------+------+------+------+------+------+------+------+------|
104 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
105 * |------+------+------+------+------+------+------+------+------+------+------+------|
106 * | | F7 | F8 | F9 | F10 | F11 | F12 | - | = | [ | ] | |
107 * |------+------+------+------+------+------+------+------+------+------+------+------|
108 * | | | | | | | | Next | Vol- | Vol+ | Play |
109 * `-----------------------------------------------------------------------------------'
111 [_LOWER
] = LAYOUT_ortho_4x12(
112 KC_TILD
, KC_EXLM
, KC_AT
, KC_HASH
, KC_DLR
, KC_PERC
, KC_CIRC
, KC_AMPR
, KC_ASTR
, KC_LPRN
, KC_RPRN
, KC_BSPC
,
113 KC_DEL
, KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_F6
, KC_UNDS
, KC_PLUS
, KC_LCBR
, KC_RCBR
, KC_PIPE
,
114 _______
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, KC_F11
, KC_F12
, KC_MINS
, KC_EQL
, KC_LBRC
, KC_RBRC
, KC_BSLS
,
115 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_MNXT
, KC_VOLD
, KC_VOLU
, KC_MPLY
119 * ,-----------------------------------------------------------------------------------.
120 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
121 * |------+------+------+------+------+------+------+------+------+------+------+------|
122 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | | | | | |
123 * |------+------+------+------+------+------+------+------+------+------+------+------|
124 * | | F7 | F8 | F9 | F10 | F11 | F12 | | |Pg Up |Pg Dn | |
125 * |------+------+------+------+------+------+------+------+------+------+------+------|
126 * | | | | | | | | Next | Vol- | Vol+ | Play |
127 * `-----------------------------------------------------------------------------------'
129 [_RAISE
] = LAYOUT_ortho_4x12(
130 KC_GRV
, KC_1
, KC_2
, KC_3
, KC_4
, KC_5
, KC_6
, KC_7
, KC_8
, KC_9
, KC_0
, KC_BSPC
,
131 KC_DEL
, KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_F6
, _______
, _______
, _______
, _______
, _______
,
132 _______
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, KC_F11
, KC_F12
, _______
, _______
, KC_PGUP
, KC_PGDN
, _______
,
133 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_MNXT
, KC_VOLD
, KC_VOLU
, KC_MPLY
136 /* Plover layer (http://opensteno.org)
137 * ,-----------------------------------------------------------------------------------.
138 * | # | # | # | # | # | # | # | # | # | # | # | # |
139 * |------+------+------+------+------+------+------+------+------+------+------+------|
140 * | | S | T | P | H | * | * | F | P | L | T | D |
141 * |------+------+------+------+------+------+------+------+------+------+------+------|
142 * | | S | K | W | R | * | * | R | B | G | S | Z |
143 * |------+------+------+------+------+------+------+------+------+------+------+------|
144 * | Exit | | | A | O | | E | U | | | |
145 * `-----------------------------------------------------------------------------------'
147 [_PLOVER
] = LAYOUT_ortho_4x12(
148 KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
,
149 XXXXXXX
, KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_LBRC
,
150 XXXXXXX
, KC_A
, KC_S
, KC_D
, KC_F
, KC_G
, KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
, KC_QUOT
,
151 EXT_PLV
, XXXXXXX
, XXXXXXX
, KC_C
, KC_V
, XXXXXXX
, XXXXXXX
, KC_N
, KC_M
, XXXXXXX
, XXXXXXX
, XXXXXXX
154 /* Adjust (Lower + Raise)
155 * v------------------------RGB CONTROL--------------------v
156 * ,-----------------------------------------------------------------------------------.
157 * |ToGame| Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
158 * |------+------+------+------+------+------+------+------+------+------+------+------|
159 * | | |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
160 * |------+------+------+------+------+------+------+------+------+------+------+------|
161 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | |
162 * |------+------+------+------+------+------+------+------+------+------+------+------|
163 * | | | | | | | | | | | |
164 * `-----------------------------------------------------------------------------------'
166 [_ADJUST
] = LAYOUT_ortho_4x12(
167 TG_GAME
, RESET
, DEBUG
, RGB_TOG
, RGB_MOD
, RGB_HUI
, RGB_HUD
, RGB_SAI
, RGB_SAD
, RGB_VAI
, RGB_VAD
, KC_DEL
,
168 _______
, _______
, MU_MOD
, AU_ON
, AU_OFF
, AG_NORM
, AG_SWAP
, QWERTY
, COLEMAK
, DVORAK
, PLOVER
, _______
,
169 _______
, MUV_DE
, MUV_IN
, MU_ON
, MU_OFF
, MI_ON
, MI_OFF
, TERM_ON
, TERM_OFF
, _______
, _______
, _______
,
170 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
176 float plover_song
[][2] = SONG(PLOVER_SOUND
);
177 float plover_gb_song
[][2] = SONG(PLOVER_GOODBYE_SOUND
);
180 layer_state_t
layer_state_set_user(layer_state_t state
) {
181 return update_tri_layer_state(state
, _LOWER
, _RAISE
, _ADJUST
);
184 bool process_record_user(uint16_t keycode
, keyrecord_t
*record
) {
187 if (record
->event
.pressed
) {
188 print("mode just switched to qwerty and this is a huge string\n");
189 set_single_persistent_default_layer(_QWERTY
);
194 if (record
->event
.pressed
) {
195 set_single_persistent_default_layer(_COLEMAK
);
200 if (record
->event
.pressed
) {
201 set_single_persistent_default_layer(_DVORAK
);
206 if (record
->event
.pressed
) {
207 register_code(KC_RSFT
);
208 #ifdef BACKLIGHT_ENABLE
211 #ifdef KEYBOARD_planck_rev5
215 unregister_code(KC_RSFT
);
216 #ifdef KEYBOARD_planck_rev5
223 if (record
->event
.pressed
) {
226 PLAY_SONG(plover_song
);
232 if (!eeconfig_is_enabled()) {
235 keymap_config
.raw
= eeconfig_read_keymap();
236 keymap_config
.nkro
= 1;
237 eeconfig_update_keymap(keymap_config
.raw
);
242 if (record
->event
.pressed
) {
244 PLAY_SONG(plover_gb_song
);
254 bool muse_mode
= false;
255 uint8_t last_muse_note
= 0;
256 uint16_t muse_counter
= 0;
257 uint8_t muse_offset
= 70;
258 uint16_t muse_tempo
= 50;
260 void encoder_update(bool clockwise
) {
262 if (IS_LAYER_ON(_RAISE
)) {
277 #ifdef MOUSEKEY_ENABLE
278 tap_code(KC_MS_WH_DOWN
);
283 #ifdef MOUSEKEY_ENABLE
284 tap_code(KC_MS_WH_UP
);
292 void dip_switch_update_user(uint8_t index
, bool active
) {
296 static bool play_sound
= false;
300 if (play_sound
) { PLAY_SONG(plover_song
); }
305 if (play_sound
) { PLAY_SONG(plover_gb_song
); }
323 void matrix_scan_user(void) {
326 if (muse_counter
== 0) {
327 uint8_t muse_note
= muse_offset
+ SCALE
[muse_clock_pulse()];
328 if (muse_note
!= last_muse_note
) {
329 stop_note(compute_freq_for_midi_note(last_muse_note
));
330 play_note(compute_freq_for_midi_note(muse_note
), 0xF);
331 last_muse_note
= muse_note
;
334 muse_counter
= (muse_counter
+ 1) % muse_tempo
;
344 bool music_mask_user(uint16_t keycode
) {