aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--layouts/community/ortho_4x12/greatwizard/README.md149
-rw-r--r--layouts/community/ortho_4x12/greatwizard/config.h24
-rw-r--r--layouts/community/ortho_4x12/greatwizard/keymap.c209
-rw-r--r--layouts/community/ortho_4x12/greatwizard/rules.mk7
-rw-r--r--layouts/community/ortho_5x12/greatwizard/README.md233
-rw-r--r--layouts/community/ortho_5x12/greatwizard/config.h25
-rw-r--r--layouts/community/ortho_5x12/greatwizard/keymap.c342
-rw-r--r--layouts/community/ortho_5x12/greatwizard/rules.mk8
-rw-r--r--users/greatwizard/config.h31
-rw-r--r--users/greatwizard/fn.h21
-rw-r--r--users/greatwizard/game.c27
-rw-r--r--users/greatwizard/game.h21
-rw-r--r--users/greatwizard/git.c127
-rw-r--r--users/greatwizard/git.h39
-rw-r--r--users/greatwizard/greatwizard.c112
-rw-r--r--users/greatwizard/greatwizard.h135
-rw-r--r--users/greatwizard/keymap_helpers.h61
-rw-r--r--users/greatwizard/ortho.c21
-rw-r--r--users/greatwizard/ortho.h24
-rw-r--r--users/greatwizard/programmer.c174
-rw-r--r--users/greatwizard/programmer.h31
-rw-r--r--users/greatwizard/readme.md32
-rw-r--r--users/greatwizard/rules.mk31
-rw-r--r--users/greatwizard/tap_dances.c105
-rw-r--r--users/greatwizard/tap_dances.h65
-rw-r--r--users/greatwizard/underglow.c109
-rw-r--r--users/greatwizard/underglow.h24
27 files changed, 2187 insertions, 0 deletions
diff --git a/layouts/community/ortho_4x12/greatwizard/README.md b/layouts/community/ortho_4x12/greatwizard/README.md
new file mode 100644
index 000000000..9eadb6343
--- /dev/null
+++ b/layouts/community/ortho_4x12/greatwizard/README.md
@@ -0,0 +1,149 @@
1# GreatWizard ortholinear 4x12 keymap
2
3## Base layers
4
5### Qwerty
6
7```
8,-----------------------------------------------------------------------------------.
9| Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
10|------+------+------+------+------+------+------+------+------+------+------+------|
11| Esc | A | S | D | F | G | H | J | K | L | ; | ' |
12|------+------+------+------+------+------+------+------+------+------+------+------|
13| Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
14|------+------+------+------+------+------+------+------+------+------+------+------|
15| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
16`-----------------------------------------------------------------------------------'
17```
18
19### Workman
20
21```
22,-----------------------------------------------------------------------------------.
23| Tab | Q | D | R | W | B | J | F | U | P | ; | Bksp |
24|------+------+------+------+------+------+------+------+------+------+------+------|
25| Esc | A | S | H | T | G | Y | N | E | O | I | ' |
26|------+------+------+------+------+------+------+------+------+------+------+------|
27| Shift| Z | X | M | C | V | K | L | , | . | / |Enter |
28|------+------+------+------+------+------+------+------+------+------+------+------|
29| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
30`-----------------------------------------------------------------------------------'
31```
32
33### Colemak
34
35```
36,-----------------------------------------------------------------------------------.
37| Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
38|------+------+------+------+------+------+------+------+------+------+------+------|
39| Esc | A | R | S | T | D | H | N | E | I | O | ' |
40|------+------+------+------+------+------+------+------+------+------+------+------|
41| Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
42|------+------+------+------+------+------+------+------+------+------+------+------|
43| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
44`-----------------------------------------------------------------------------------'
45```
46
47### Dvorak
48
49```
50,-----------------------------------------------------------------------------------.
51| Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp |
52|------+------+------+------+------+------+------+------+------+------+------+------|
53| Esc | A | O | E | U | I | D | H | T | N | S | / |
54|------+------+------+------+------+------+------+------+------+------+------+------|
55| Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
56|------+------+------+------+------+------+------+------+------+------+------+------|
57| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
58`-----------------------------------------------------------------------------------'
59```
60
61### Game
62
63```
64,-----------------------------------------------------------------------------------.
65| Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
66|------+------+------+------+------+------+------+------+------+------+------+------|
67| Esc | A | S | D | F | G | H | J | K | L | ; | ' |
68|------+------+------+------+------+------+------+------+------+------+------+------|
69| Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
70|------+------+------+------+------+------+------+------+------+------+------+------|
71| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | / | Left | Down |Right |
72`-----------------------------------------------------------------------------------'
73```
74
75## Momentarily Layers
76
77### Lower
78
79```
80,-----------------------------------------------------------------------------------.
81| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
82|------+------+------+------+------+------+------+------+------+------+------+------|
83| Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
84|------+------+------+------+------+------+------+------+------+------+------+------|
85| | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
86|------+------+------+------+------+------+------+------+------+------+------+------|
87| | | | | | | | Next | Vol- | Vol+ | Play |
88`-----------------------------------------------------------------------------------'
89```
90
91### Raise
92
93```
94,-----------------------------------------------------------------------------------.
95| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
96|------+------+------+------+------+------+------+------+------+------+------+------|
97| Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
98|------+------+------+------+------+------+------+------+------+------+------+------|
99| | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |PageUp|PageDn| |
100|------+------+------+------+------+------+------+------+------+------+------+------|
101| | | | | | | | Next | Vol- | Vol+ | Play |
102`-----------------------------------------------------------------------------------'
103```
104
105### Adjust (Lower + Raise)
106
107```
108,-----------------------------------------------------------------------------------.
109| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
110|------+------+------+------+------+------+------+------+------+------+------+------|
111|CPSLCK| Reset|EP_RST| | | | Game |Qwerty|Workmn|Colemk|Dvorak| |
112|------+------+------+------+------+------+------+------+------+------+------+------|
113| | | | | | | | | | | | |
114|------+------+------+------+------+------+------+------+------+------+------+------|
115| | | | | | | | | | | |
116`-----------------------------------------------------------------------------------'
117```
118
119### Fn (rgblight and backlight layout)
120
121```
122,-----------------------------------------------------------------------------------.
123| | | | | | | | | |RGBVA-|RGBVA+| |
124|------+------+------+------+------+------+------+------+------+------+------+------|
125| | | | | | | | | |RGBSA-|RGBSA+|RGBLYR|
126|------+------+------+------+------+------+------+------+------+------+------+------|
127| | | | | | | | |RGBTOG|RGBHU-|RGBHU+|RGBMOD|
128|------+------+------+------+------+------+------+------+------+------+------+------|
129| | | | | | | |BLTOGG| BL- | BL+ |BLBRTG|
130`-----------------------------------------------------------------------------------'
131```
132
133## One Shot Key Layers
134
135### GIT
136
137Double tap on Alt to activate it.
138
139```
140,-----------------------------------------------------------------------------------.
141| |CHRPCK| SHOW |REBASE|RESET | TAG | | PULL | INIT |REMOTE| PUSH | |
142|------+------+------+------+------+------+------+------+------+------+------+------|
143| | ADD |STATUS| DIFF |FETCH | GREP |STASH | |CHECKT| LOG | | |
144|------+------+------+------+------+------+------+------+------+------+------+------|
145| | | |COMMIT| MV |BRANCH| |MERGE | | | | |
146|------+------+------+------+------+------+------+------+------+------+------+------|
147| | | | | | | | | | | | |
148`-----------------------------------------------------------------------------------'
149```
diff --git a/layouts/community/ortho_4x12/greatwizard/config.h b/layouts/community/ortho_4x12/greatwizard/config.h
new file mode 100644
index 000000000..48dab19c1
--- /dev/null
+++ b/layouts/community/ortho_4x12/greatwizard/config.h
@@ -0,0 +1,24 @@
1/* Copyright 2020 Guillaume Gérard
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#pragma once
17
18#define LAYERS_ORTHO
19#define LAYER_GAME
20#define LAYER_GIT
21#define LAYER_FN
22
23#define TAP_DANCE_LALT_GIT
24#define TAP_DANCE_LSFT_CAPS
diff --git a/layouts/community/ortho_4x12/greatwizard/keymap.c b/layouts/community/ortho_4x12/greatwizard/keymap.c
new file mode 100644
index 000000000..a895aaf94
--- /dev/null
+++ b/layouts/community/ortho_4x12/greatwizard/keymap.c
@@ -0,0 +1,209 @@
1/* Copyright 2020 Guillaume Gérard
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#include "greatwizard.h"
17
18#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
19#define LAYOUT_ortho_4x12_base( \
20 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
21 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
22 K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A \
23 ) \
24 LAYOUT_ortho_4x12_wrapper( \
25 KC_TAB, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_BSPC, \
26 KC_ESC, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
27 TD_LSCP, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_ENT, \
28 FN, KC_LCTL, TD_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
29 )
30#define LAYOUT_ortho_4x12_base_wrapper(...) LAYOUT_ortho_4x12_base(__VA_ARGS__)
31
32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33
34 /* Qwerty
35 * ,-----------------------------------------------------------------------------------.
36 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
37 * |------+------+------+------+------+------+------+------+------+------+------+------|
38 * | Esc | A | S | D | F | G | H | J | K | L | ; | ' |
39 * |------+------+------+------+------+------+------+------+------+------+------+------|
40 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
41 * |------+------+------+------+------+------+------+------+------+------+------+------|
42 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
43 * `-----------------------------------------------------------------------------------'
44 */
45 [_QWERTY] = LAYOUT_ortho_4x12_base_wrapper(
46 _______________QWERTY_LEFT1________________, _______________QWERTY_RIGHT1_______________,
47 _______________QWERTY_LEFT2________________, _______________QWERTY_RIGHT2_______________, KC_QUOT,
48 _______________QWERTY_LEFT3________________, _______________QWERTY_RIGHT3_______________
49 ),
50
51 /* Workman
52 * ,-----------------------------------------------------------------------------------.
53 * | Tab | Q | D | R | W | B | J | F | U | P | ; | Bksp |
54 * |------+------+------+------+------+------+------+------+------+------+------+------|
55 * | Esc | A | S | H | T | G | Y | N | E | O | I | ' |
56 * |------+------+------+------+------+------+------+------+------+------+------+------|
57 * | Shift| Z | X | M | C | V | K | L | , | . | / |Enter |
58 * |------+------+------+------+------+------+------+------+------+------+------+------|
59 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
60 * `-----------------------------------------------------------------------------------'
61 */
62 [_WORKMAN] = LAYOUT_ortho_4x12_base_wrapper(
63 _______________WORKMAN_LEFT1_______________, _______________WORKMAN_RIGHT1______________,
64 _______________WORKMAN_LEFT2_______________, _______________WORKMAN_RIGHT2______________, KC_QUOT,
65 _______________WORKMAN_LEFT3_______________, _______________WORKMAN_RIGHT3______________
66 ),
67
68 /* Colemak
69 * ,-----------------------------------------------------------------------------------.
70 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
71 * |------+------+------+------+------+------+------+------+------+------+------+------|
72 * | Esc | A | R | S | T | D | H | N | E | I | O | ' |
73 * |------+------+------+------+------+------+------+------+------+------+------+------|
74 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
75 * |------+------+------+------+------+------+------+------+------+------+------+------|
76 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
77 * `-----------------------------------------------------------------------------------'
78 */
79 [_COLEMAK] = LAYOUT_ortho_4x12_base_wrapper(
80 _______________COLEMAK_LEFT1_______________, _______________COLEMAK_RIGHT1______________,
81 _______________COLEMAK_LEFT2_______________, _______________COLEMAK_RIGHT2______________, KC_QUOT,
82 _______________COLEMAK_LEFT3_______________, _______________COLEMAK_RIGHT3______________
83 ),
84
85 /* Dvorak
86 * ,-----------------------------------------------------------------------------------.
87 * | Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp |
88 * |------+------+------+------+------+------+------+------+------+------+------+------|
89 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
90 * |------+------+------+------+------+------+------+------+------+------+------+------|
91 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
92 * |------+------+------+------+------+------+------+------+------+------+------+------|
93 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
94 * `-----------------------------------------------------------------------------------'
95 */
96 [_DVORAK] = LAYOUT_ortho_4x12_base_wrapper(
97 _______________DVORAK_LEFT1________________, _______________DVORAK_RIGHT1_______________,
98 _______________DVORAK_LEFT2________________, _______________DVORAK_RIGHT2_______________, KC_SLSH,
99 _______________DVORAK_LEFT3________________, _______________DVORAK_RIGHT3_______________
100 ),
101
102 /* Game
103 * ,-----------------------------------------------------------------------------------.
104 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
105 * |------+------+------+------+------+------+------+------+------+------+------+------|
106 * | Esc | A | S | D | F | G | H | J | K | L | ; | ' |
107 * |------+------+------+------+------+------|------+------+------+------+------+------|
108 * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
109 * |------+------+------+------+------+------+------+------+------+------+------+------|
110 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | / | Left | Down |Right |
111 * `-----------------------------------------------------------------------------------'
112 */
113 [_GAME] = LAYOUT_ortho_4x12_wrapper(
114 KC_TAB, _______________QWERTY_LEFT1________________, _______________QWERTY_RIGHT1_______________, KC_BSPC,
115 KC_ESC, _______________QWERTY_LEFT2________________, _______________QWERTY_RIGHT2_______________, KC_QUOT,
116 TD_LSCP, _______________QWERTY_LEFT3________________, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
117 FN, KC_LCTL, TD_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
118 ),
119
120 /* Lower
121 * ,-----------------------------------------------------------------------------------.
122 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
123 * |------+------+------+------+------+------+------+------+------+------+------+------|
124 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
125 * |------+------+------+------+------+------+------+------+------+------+------+------|
126 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
127 * |------+------+------+------+------+------+------+------+------+------+------+------|
128 * | | | | | | | | Next | Vol- | Vol+ | Play |
129 * `-----------------------------------------------------------------------------------'
130 */
131 [_LOWER] = LAYOUT_ortho_4x12_wrapper(
132 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
133 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
134 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
135 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
136 ),
137
138 /* Raise
139 * ,-----------------------------------------------------------------------------------.
140 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
141 * |------+------+------+------+------+------+------+------+------+------+------+------|
142 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
143 * |------+------+------+------+------+------+------+------+------+------+------+------|
144 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |PageUp|PageDn| |
145 * |------+------+------+------+------+------+------+------+------+------+------+------|
146 * | | | | | | | | Next | Vol- | Vol+ | Play |
147 * `-----------------------------------------------------------------------------------'
148 */
149 [_RAISE] = LAYOUT_ortho_4x12_wrapper(
150 KC_GRV, _______________NUMBER_LEFT_________________, _______________NUMBER_RIGHT________________, _______,
151 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
152 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
153 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
154 ),
155
156 /* Adjust (Lower + Raise)
157 * ,-----------------------------------------------------------------------------------.
158 * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
159 * |------+------+------+------+------+------+------+------+------+------+------+------|
160 * |CPSLCK| Reset|EP_RST| | | | Game |Qwerty|Workmn|Colemk|Dvorak| |
161 * |------+------+------+------+------+------+------+------+------+------+------+------|
162 * | | | | | | | | | | | | |
163 * |------+------+------+------+------+------+------+------+------+------+------+------|
164 * | | | | | | | | | | | |
165 * `-----------------------------------------------------------------------------------'
166 */
167 [_ADJUST] = LAYOUT_ortho_4x12_wrapper(
168 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
169 KC_CAPS, RESET, EEP_RST, _______, _______, _______, GAME, QWERTY, WORKMAN, COLEMAK, DVORAK, _______,
170 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
171 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
172 ),
173
174 /* Fn (rgblight and backlight layout)
175 * ,-----------------------------------------------------------------------------------.
176 * | | | | | | | | | |RGBVA-|RGBVA+| |
177 * |------+------+------+------+------+------+------+------+------+------+------+------|
178 * | | | | | | | | | |RGBSA-|RGBSA+|RGBLYR|
179 * |------+------+------+------+------+------+------+------+------+------+------+------|
180 * | | | | | | | | |RGBTOG|RGBHU-|RGBHU+|RGBMOD|
181 * |------+------+------+------+------+------+------+------+------+------+------+------|
182 * | | | | | | | |BLTOGG| BL- | BL+ |BLBRTG|
183 * `-----------------------------------------------------------------------------------'
184 */
185 [_FN] = LAYOUT_ortho_4x12_wrapper(
186 _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, _______,
187 _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_SAI, RGB_LYR,
188 _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUD, RGB_HUI, RGB_MOD,
189 _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, BL_BRTG
190 ),
191
192 /* GIT
193 * ,-----------------------------------------------------------------------------------.
194 * | |CHRPCK| SHOW |REBASE|RESET | TAG | | PULL | INIT |REMOTE| PUSH | |
195 * |------+------+------+------+------+------+------+------+------+------+------+------|
196 * | | ADD |STATUS| DIFF |FETCH | GREP |STASH | |CHECKT| LOG | | |
197 * |------+------+------+------+------+------+------+------+------+------+------+------|
198 * | | | |COMMIT| MV |BRANCH| |MERGE | | | | |
199 * |------+------+------+------+------+------+------+------+------+------+------+------|
200 * | | | | | | | | | | | |
201 * `-----------------------------------------------------------------------------------'
202 */
203 [_GIT] = LAYOUT_ortho_4x12_wrapper(
204 _______, _________________GIT_LEFT1_________________, _________________GIT_RIGHT1________________, _______,
205 _______, _________________GIT_LEFT2_________________, _________________GIT_RIGHT2________________, _______,
206 _______, _________________GIT_LEFT3_________________, _________________GIT_RIGHT3________________, _______,
207 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
208 )
209};
diff --git a/layouts/community/ortho_4x12/greatwizard/rules.mk b/layouts/community/ortho_4x12/greatwizard/rules.mk
new file mode 100644
index 000000000..bbc8f14c2
--- /dev/null
+++ b/layouts/community/ortho_4x12/greatwizard/rules.mk
@@ -0,0 +1,7 @@
1EXTRAKEY_ENABLE = yes # Audio control and System control
2TAP_DANCE_ENABLE = yes # Enable Tap Dance
3
4LAYERS_ORTHO = yes
5LAYER_GAME = yes
6LAYER_GIT = yes
7LAYER_FN = yes
diff --git a/layouts/community/ortho_5x12/greatwizard/README.md b/layouts/community/ortho_5x12/greatwizard/README.md
new file mode 100644
index 000000000..4158af5a3
--- /dev/null
+++ b/layouts/community/ortho_5x12/greatwizard/README.md
@@ -0,0 +1,233 @@
1# GreatWizard ortholinear 5x12 keymap
2
3## Base layers
4
5### Qwerty
6
7```
8,-----------------------------------------------------------------------------------.
9| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
10|------+------+------+------+------+------+------+------+------+------+------+------|
11| Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
12|------+------+------+------+------+------+------+------+------+------+------+------|
13| Esc | A | S | D | F | G | H | J | K | L | ; | ' |
14|------+------+------+------+------+------+------+------+------+------+------+------|
15| Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
16|------+------+------+------+------+------+------+------+------+------+------+------|
17| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
18`-----------------------------------------------------------------------------------'
19```
20
21### Qwerty Programmer
22
23```
24,-----------------------------------------------------------------------------------.
25| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
26|------+------+------+------+------+------+------+------+------+------+------+------|
27| Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
28|------+------+------+------+------+------+------+------+------+------+------+------|
29| Esc | A | S | D | F | G | H | J | K | L | ; | ' |
30|------+------+------+------+------+------+------+------+------+------+------+------|
31| Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
32|------+------+------+------+------+------+------+------+------+------+------+------|
33| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
34`-----------------------------------------------------------------------------------'
35```
36
37### Workman
38
39```
40,-----------------------------------------------------------------------------------.
41| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
42|------+------+------+------+------+------+------+------+------+------+------+------|
43| Tab | Q | D | R | W | B | J | F | U | P | ; | Del |
44|------+------+------+------+------+------+------+------+------+------+------+------|
45| Esc | A | S | H | T | G | Y | N | E | O | I | ' |
46|------+------+------+------+------+------+------+------+------+------+------+------|
47| Shift| Z | X | M | C | V | K | L | , | . | / |Enter |
48|------+------+------+------+------+------+------+------+------+------+------+------|
49| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
50`-----------------------------------------------------------------------------------'
51```
52
53### Workman Programmer
54
55```
56,-----------------------------------------------------------------------------------.
57| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
58|------+------+------+------+------+------+------+------+------+------+------+------|
59| Tab | Q | D | R | W | B | J | F | U | P | ; | Del |
60|------+------+------+------+------+------+------+------+------+------+------+------|
61| Esc | A | S | H | T | G | Y | N | E | O | I | ' |
62|------+------+------+------+------+------+------+------+------+------+------+------|
63| Shift| Z | X | M | C | V | K | L | , | . | / |Enter |
64|------+------+------+------+------+------+------+------+------+------+------+------|
65| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
66`-----------------------------------------------------------------------------------'
67```
68
69### Colemak
70
71```
72,-----------------------------------------------------------------------------------.
73| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
74|------+------+------+------+------+------+------+------+------+------+------+------|
75| Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
76|------+------+------+------+------+------+------+------+------+------+------+------|
77| Esc | A | R | S | T | D | H | N | E | I | O | ' |
78|------+------+------+------+------+------+------+------+------+------+------+------|
79| Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
80|------+------+------+------+------+------+------+------+------+------+------+------|
81| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
82`-----------------------------------------------------------------------------------'
83```
84
85### Colemak Programmer
86
87```
88,-----------------------------------------------------------------------------------.
89| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
90|------+------+------+------+------+------+------+------+------+------+------+------|
91| Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
92|------+------+------+------+------+------+------+------+------+------+------+------|
93| Esc | A | R | S | T | D | H | N | E | I | O | ' |
94|------+------+------+------+------+------+------+------+------+------+------+------|
95| Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
96|------+------+------+------+------+------+------+------+------+------+------+------|
97| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
98`-----------------------------------------------------------------------------------'
99```
100
101### Dvorak
102
103```
104,-----------------------------------------------------------------------------------.
105| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
106|------+------+------+------+------+------+------+------+------+------+------+------|
107| Tab | ' | , | . | P | Y | F | G | C | R | L | Del |
108|------+------+------+------+------+------+------+------+------+------+------+------|
109| Esc | A | O | E | U | I | D | H | T | N | S | / |
110|------+------+------+------+------+------+------+------+------+------+------+------|
111| Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
112|------+------+------+------+------+------+------+------+------+------+------+------|
113| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
114`-----------------------------------------------------------------------------------'
115```
116
117### Dvorak Programmer
118
119```
120,-----------------------------------------------------------------------------------.
121| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
122|------+------+------+------+------+------+------+------+------+------+------+------|
123| Tab | ' | , | . | P | Y | F | G | C | R | L | Del |
124|------+------+------+------+------+------+------+------+------+------+------+------|
125| Esc | A | O | E | U | I | D | H | T | N | S | / |
126|------+------+------+------+------+------+------+------+------+------+------+------|
127| Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
128|------+------+------+------+------+------+------+------+------+------+------+------|
129| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
130`-----------------------------------------------------------------------------------'
131```
132
133### Game
134
135```
136,-----------------------------------------------------------------------------------.
137| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
138|------+------+------+------+------+------+------+------+------+------+------+------|
139| Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
140|------+------+------+------+------+------+------+------+------+------+------+------|
141| Esc | A | S | D | F | G | H | J | K | L | ; | ' |
142|------+------+------+------+------+------+------+------+------+------+------+------|
143| Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
144|------+------+------+------+------+------+------+------+------+------+------+------|
145| Fn | Ctrl | Alt | GUI |Lower | Space |Raise | / | Left | Down |Right |
146`-----------------------------------------------------------------------------------'
147```
148
149## Momentarily Layers
150
151### Lower
152
153```
154,-----------------------------------------------------------------------------------.
155| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
156|------+------+------+------+------+------+------+------+------+------+------+------|
157| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
158|------+------+------+------+------+------+------+------+------+------+------+------|
159| Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
160|------+------+------+------+------+------+------+------+------+------+------+------|
161| | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
162|------+------+------+------+------+------+------+------+------+------+------+------|
163| | | | | | | | Next | Vol- | Vol+ | Play |
164`-----------------------------------------------------------------------------------'
165```
166
167### Raise
168
169```
170,-----------------------------------------------------------------------------------.
171| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
172|------+------+------+------+------+------+------+------+------+------+------+------|
173| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
174|------+------+------+------+------+------+------+------+------+------+------+------|
175| Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
176|------+------+------+------+------+------+------+------+------+------+------+------|
177| | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |PageUp|PageDn| |
178|------+------+------+------+------+------+------+------+------+------+------+------|
179| | | | | | | | Next | Vol- | Vol+ | Play |
180`-----------------------------------------------------------------------------------'
181```
182
183### Adjust (Lower + Raise)
184
185```
186,-----------------------------------------------------------------------------------.
187| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
188|------+------+------+------+------+------+------+------+------+------+------+------|
189| | Reset|EP_RST| | | | | | | | | |
190|------+------+------+------+------+------+------+------+------+------+------+------|
191|CPSLCK| | | | | | Game |Qwerty|Workmn|Colemk|Dvorak| |
192|------+------+------+------+------+------+------+------+------+------+------+------|
193| | | | | | | |QwertP|WrkmnP|ColmkP|DvorkP| |
194|------+------+------+------+------+------+------+------+------+------+------+------|
195| | | | | | | | | | | |
196`-----------------------------------------------------------------------------------'
197```
198
199### Fn (rgblight and backlight layout)
200
201```
202,-----------------------------------------------------------------------------------.
203| | | | | | | | | | | | |
204|------+------+------+------+------+------+------+------+------+------+------+------|
205| | | | | | | | | |RGBVA-|RGBVA+| |
206|------+------+------+------+------+------+------+------+------+------+------+------|
207| | | | | | | | | |RGBSA-|RGBSA+|RGBLYR|
208|------+------+------+------+------+------+------+------+------+------+------+------|
209| | | | | | | | |RGBTOG|RGBHU-|RGBHU+|RGBMOD|
210|------+------+------+------+------+------+------+------+------+------+------+------|
211| | | | | | | |BLTOGG| BL- | BL+ |BLBRTG|
212`-----------------------------------------------------------------------------------'
213```
214
215## One Shot Key Layers
216
217### GIT
218
219Double tap on Alt to activate it.
220
221```
222,-----------------------------------------------------------------------------------.
223| | | | | | | | | | | | |
224|------+------+------+------+------+------+------+------+------+------+------+------|
225| |CHRPCK| SHOW |REBASE|RESET | TAG | | PULL | INIT |REMOTE| PUSH | |
226|------+------+------+------+------+------+------+------+------+------+------+------|
227| | ADD |STATUS| DIFF |FETCH | GREP |STASH | |CHECKT| LOG | | |
228|------+------+------+------+------+------+------+------+------+------+------+------|
229| | | |COMMIT| MV |BRANCH| |MERGE | | | | |
230|------+------+------+------+------+------+------+------+------+------+------+------|
231| | | | | | | | | | | | |
232`-----------------------------------------------------------------------------------'
233```
diff --git a/layouts/community/ortho_5x12/greatwizard/config.h b/layouts/community/ortho_5x12/greatwizard/config.h
new file mode 100644
index 000000000..598a7e56a
--- /dev/null
+++ b/layouts/community/ortho_5x12/greatwizard/config.h
@@ -0,0 +1,25 @@
1/* Copyright 2020 Guillaume Gérard
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#pragma once
17
18#define LAYERS_ORTHO
19#define LAYERS_PROGRAMMER
20#define LAYER_GAME
21#define LAYER_GIT
22#define LAYER_FN
23
24#define TAP_DANCE_LALT_GIT
25#define TAP_DANCE_LSFT_CAPS
diff --git a/layouts/community/ortho_5x12/greatwizard/keymap.c b/layouts/community/ortho_5x12/greatwizard/keymap.c
new file mode 100644
index 000000000..77d758b0f
--- /dev/null
+++ b/layouts/community/ortho_5x12/greatwizard/keymap.c
@@ -0,0 +1,342 @@
1/* Copyright 2020 Guillaume Gérard
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#include "greatwizard.h"
17
18#define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__VA_ARGS__)
19#define LAYOUT_ortho_5x12_base( \
20 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
21 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
22 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
23 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A \
24 ) \
25 LAYOUT_ortho_5x12_wrapper( \
26 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
27 KC_TAB, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_DEL, \
28 KC_ESC, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
29 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_ENT, \
30 FN, KC_LCTL, TD_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
31 )
32#define LAYOUT_ortho_5x12_base_wrapper(...) LAYOUT_ortho_5x12_base(__VA_ARGS__)
33
34const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
35
36 /* Qwerty
37 * ,-----------------------------------------------------------------------------------.
38 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
39 * |------+------+------+------+------+------+------+------+------+------+------+------|
40 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
41 * |------+------+------+------+------+------+------+------+------+------+------+------|
42 * | Esc | A | S | D | F | G | H | J | K | L | ; | ' |
43 * |------+------+------+------+------+------+------+------+------+------+------+------|
44 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
45 * |------+------+------+------+------+------+------+------+------+------+------+------|
46 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
47 * `-----------------------------------------------------------------------------------'
48 */
49 [_QWERTY] = LAYOUT_ortho_5x12_base_wrapper(
50 KC_GRV, _______________NUMBER_LEFT_________________, _______________NUMBER_RIGHT________________,
51 _______________QWERTY_LEFT1________________, _______________QWERTY_RIGHT1_______________,
52 _______________QWERTY_LEFT2________________, _______________QWERTY_RIGHT2_______________, KC_QUOT,
53 TD_LSCP, _______________QWERTY_LEFT3________________, _______________QWERTY_RIGHT3_______________
54 ),
55
56 /* Qwerty Programmer
57 * ,-----------------------------------------------------------------------------------.
58 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
59 * |------+------+------+------+------+------+------+------+------+------+------+------|
60 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
61 * |------+------+------+------+------+------+------+------+------+------+------+------|
62 * | Esc | A | S | D | F | G | H | J | K | L | ; | ' |
63 * |------+------+------+------+------+------+------+------+------+------+------+------|
64 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
65 * |------+------+------+------+------+------+------+------+------+------+------+------|
66 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
67 * `-----------------------------------------------------------------------------------'
68 */
69 [_QWERTY_PROGRAMMER] = LAYOUT_ortho_5x12_base_wrapper(
70 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
71 _______________QWERTY_LEFT1________________, _______________QWERTY_RIGHT1_______________,
72 _______________QWERTY_LEFT2________________, _______________QWERTY_RIGHT2_______________, KC_QUOT,
73 PG_LSCP, _______________QWERTY_LEFT3________________, _______________QWERTY_RIGHT3_______________
74 ),
75
76 /* Workman
77 * ,-----------------------------------------------------------------------------------.
78 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
79 * |------+------+------+------+------+------+------+------+------+------+------+------|
80 * | Tab | Q | D | R | W | B | J | F | U | P | ; | Del |
81 * |------+------+------+------+------+------+------+------+------+------+------+------|
82 * | Esc | A | S | H | T | G | Y | N | E | O | I | ' |
83 * |------+------+------+------+------+------+------+------+------+------+------+------|
84 * | Shift| Z | X | M | C | V | K | L | , | . | / |Enter |
85 * |------+------+------+------+------+------+------+------+------+------+------+------|
86 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
87 * `-----------------------------------------------------------------------------------'
88 */
89 [_WORKMAN] = LAYOUT_ortho_5x12_base_wrapper(
90 KC_GRV, _______________NUMBER_LEFT_________________, _______________NUMBER_RIGHT________________,
91 _______________WORKMAN_LEFT1_______________, _______________WORKMAN_RIGHT1______________,
92 _______________WORKMAN_LEFT2_______________, _______________WORKMAN_RIGHT2______________, KC_QUOT,
93 TD_LSCP, _______________WORKMAN_LEFT3_______________, _______________WORKMAN_RIGHT3______________
94 ),
95
96 /* Workman Programmer
97 * ,-----------------------------------------------------------------------------------.
98 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
99 * |------+------+------+------+------+------+------+------+------+------+------+------|
100 * | Tab | Q | D | R | W | B | J | F | U | P | ; | Del |
101 * |------+------+------+------+------+------+------+------+------+------+------+------|
102 * | Esc | A | S | H | T | G | Y | N | E | O | I | ' |
103 * |------+------+------+------+------+------+------+------+------+------+------+------|
104 * | Shift| Z | X | M | C | V | K | L | , | . | / |Enter |
105 * |------+------+------+------+------+------+------+------+------+------+------+------|
106 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
107 * `-----------------------------------------------------------------------------------'
108 */
109 [_WORKMAN_PROGRAMMER] = LAYOUT_ortho_5x12_base_wrapper(
110 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
111 _______________WORKMAN_LEFT1_______________, _______________WORKMAN_RIGHT1______________,
112 _______________WORKMAN_LEFT2_______________, _______________WORKMAN_RIGHT2______________, KC_QUOT,
113 PG_LSCP, _______________WORKMAN_LEFT3_______________, _______________WORKMAN_RIGHT3______________
114 ),
115
116 /* Colemak
117 * ,-----------------------------------------------------------------------------------.
118 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
119 * |------+------+------+------+------+------+------+------+------+------+------+------|
120 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
121 * |------+------+------+------+------+------+------+------+------+------+------+------|
122 * | Esc | A | R | S | T | D | H | N | E | I | O | ' |
123 * |------+------+------+------+------+------+------+------+------+------+------+------|
124 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
125 * |------+------+------+------+------+------+------+------+------+------+------+------|
126 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
127 * `-----------------------------------------------------------------------------------'
128 */
129 [_COLEMAK] = LAYOUT_ortho_5x12_base_wrapper(
130 KC_GRV, _______________NUMBER_LEFT_________________, _______________NUMBER_RIGHT________________,
131 _______________COLEMAK_LEFT1_______________, _______________COLEMAK_RIGHT1______________,
132 _______________COLEMAK_LEFT2_______________, _______________COLEMAK_RIGHT2______________, KC_QUOT,
133 TD_LSCP, _______________COLEMAK_LEFT3_______________, _______________COLEMAK_RIGHT3______________
134 ),
135
136 /* Colemak Programmer
137 * ,-----------------------------------------------------------------------------------.
138 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
139 * |------+------+------+------+------+------+------+------+------+------+------+------|
140 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
141 * |------+------+------+------+------+------+------+------+------+------+------+------|
142 * | Esc | A | R | S | T | D | H | N | E | I | O | ' |
143 * |------+------+------+------+------+------+------+------+------+------+------+------|
144 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
145 * |------+------+------+------+------+------+------+------+------+------+------+------|
146 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
147 * `-----------------------------------------------------------------------------------'
148 */
149 [_COLEMAK_PROGRAMMER] = LAYOUT_ortho_5x12_base_wrapper(
150 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
151 _______________COLEMAK_LEFT1_______________, _______________COLEMAK_RIGHT1______________,
152 _______________COLEMAK_LEFT2_______________, _______________COLEMAK_RIGHT2______________, KC_QUOT,
153 PG_LSCP, _______________COLEMAK_LEFT3_______________, _______________COLEMAK_RIGHT3______________
154 ),
155
156 /* Dvorak
157 * ,-----------------------------------------------------------------------------------.
158 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
159 * |------+------+------+------+------+------+------+------+------+------+------+------|
160 * | Tab | ' | , | . | P | Y | F | G | C | R | L | Del |
161 * |------+------+------+------+------+------+------+------+------+------+------+------|
162 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
163 * |------+------+------+------+------+------+------+------+------+------+------+------|
164 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
165 * |------+------+------+------+------+------+------+------+------+------+------+------|
166 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
167 * `-----------------------------------------------------------------------------------'
168 */
169 [_DVORAK] = LAYOUT_ortho_5x12_base_wrapper(
170 KC_GRV, _______________NUMBER_LEFT_________________, _______________NUMBER_RIGHT________________,
171 _______________DVORAK_LEFT1________________, _______________DVORAK_RIGHT1_______________,
172 _______________DVORAK_LEFT2________________, _______________DVORAK_RIGHT2_______________, KC_SLSH,
173 TD_LSCP, _______________DVORAK_LEFT3________________, _______________DVORAK_RIGHT3_______________
174 ),
175
176 /* Dvorak Programmer
177 * ,-----------------------------------------------------------------------------------.
178 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
179 * |------+------+------+------+------+------+------+------+------+------+------+------|
180 * | Tab | ' | , | . | P | Y | F | G | C | R | L | Del |
181 * |------+------+------+------+------+------+------+------+------+------+------+------|
182 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
183 * |------+------+------+------+------+------+------+------+------+------+------+------|
184 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
185 * |------+------+------+------+------+------+------+------+------+------+------+------|
186 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
187 * `-----------------------------------------------------------------------------------'
188 */
189 [_DVORAK_PROGRAMMER] = LAYOUT_ortho_5x12_base_wrapper(
190 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
191 _______________DVORAK_LEFT1________________, _______________DVORAK_RIGHT1_______________,
192 _______________DVORAK_LEFT2________________, _______________DVORAK_RIGHT2_______________, KC_SLSH,
193 PG_LSCP, _______________DVORAK_LEFT3________________, _______________DVORAK_RIGHT3_______________
194 ),
195
196 /* X Programmer Shifted
197 * ,-----------------------------------------------------------------------------------.
198 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
199 * |------+------+------+------+------+------+------+------+------+------+------+------|
200 * | | | | | | | | | | | | |
201 * |------+------+------+------+------+------+------+------+------+------+------+------|
202 * | | | | | | | | | | | | |
203 * |------+------+------+------+------+------+------+------+------+------+------+------|
204 * | | | | | | | | | | | | |
205 * |------+------+------+------+------+------+------+------+------+------+------+------|
206 * | | | | | | | | | | | |
207 * `-----------------------------------------------------------------------------------'
208 */
209 [_PROGRAMMER_SHIFTED] = LAYOUT_ortho_5x12_wrapper(
210 PG_GRV, PG_1, PG_2, PG_3, PG_4, PG_5, PG_6, PG_7, PG_8, PG_9, PG_0, _______,
211 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
212 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
213 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
214 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
215 ),
216
217 /* Game
218 * ,-----------------------------------------------------------------------------------.
219 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
220 * |------+------+------+------+------+------+------+------+------+------+------+------|
221 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
222 * |------+------+------+------+------+------+------+------+------+------+------+------|
223 * | Esc | A | S | D | F | G | H | J | K | L | ; | ' |
224 * |------+------+------+------+------+------|------+------+------+------+------+------|
225 * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
226 * |------+------+------+------+------+------+------+------+------+------+------+------|
227 * | Fn | Ctrl | Alt | GUI |Lower | Space |Raise | / | Left | Down |Right |
228 * `-----------------------------------------------------------------------------------'
229 */
230 [_GAME] = LAYOUT_ortho_5x12_wrapper(
231 KC_GRV, _______________NUMBER_LEFT_________________, _______________NUMBER_RIGHT________________, KC_BSPC,
232 KC_TAB, _______________QWERTY_LEFT1________________, _______________QWERTY_RIGHT1_______________, KC_DEL,
233 KC_ESC, _______________QWERTY_LEFT2________________, _______________QWERTY_RIGHT2_______________, KC_QUOT,
234 TD_LSCP, _______________QWERTY_LEFT3________________, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
235 FN, KC_LCTL, TD_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
236 ),
237
238 /* Lower
239 * ,-----------------------------------------------------------------------------------.
240 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
241 * |------+------+------+------+------+------+------+------+------+------+------+------|
242 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
243 * |------+------+------+------+------+------+------+------+------+------+------+------|
244 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
245 * |------+------+------+------+------+------+------+------+------+------+------+------|
246 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
247 * |------+------+------+------+------+------+------+------+------+------+------+------|
248 * | | | | | | | | Next | Vol- | Vol+ | Play |
249 * `-----------------------------------------------------------------------------------'
250 */
251 [_LOWER] = LAYOUT_ortho_5x12_wrapper(
252 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
253 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
254 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
255 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
256 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
257 ),
258
259 /* Raise
260 * ,-----------------------------------------------------------------------------------.
261 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
262 * |------+------+------+------+------+------+------+------+------+------+------+------|
263 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
264 * |------+------+------+------+------+------+------+------+------+------+------+------|
265 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
266 * |------+------+------+------+------+------+------+------+------+------+------+------|
267 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |PageUp|PageDn| |
268 * |------+------+------+------+------+------+------+------+------+------+------+------|
269 * | | | | | | | | Next | Vol- | Vol+ | Play |
270 * `-----------------------------------------------------------------------------------'
271 */
272 [_RAISE] = LAYOUT_ortho_5x12_wrapper(
273 KC_GRV, _______________NUMBER_LEFT_________________, _______________NUMBER_RIGHT________________, _______,
274 KC_GRV, _______________NUMBER_LEFT_________________, _______________NUMBER_RIGHT________________, _______,
275 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
276 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
277 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
278 ),
279
280 /* Adjust (Lower + Raise)
281 * ,-----------------------------------------------------------------------------------.
282 * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
283 * |------+------+------+------+------+------+------+------+------+------+------+------|
284 * | | Reset|EP_RST| | | | | | | | | |
285 * |------+------+------+------+------+------+------+------+------+------+------+------|
286 * |CPSLCK| | | | | | Game |Qwerty|Workmn|Colemk|Dvorak| |
287 * |------+------+------+------+------+------+------+------+------+------+------+------|
288 * | | | | | | | |QwertP|WrkmnP|ColmkP|DvorkP| |
289 * |------+------+------+------+------+------+------+------+------+------+------+------|
290 * | | | | | | | | | | | |
291 * `-----------------------------------------------------------------------------------'
292 */
293 [_ADJUST] = LAYOUT_ortho_5x12_wrapper(
294 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
295 _______, RESET, EEP_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______,
296 KC_CAPS, _______, _______, _______, _______, _______, GAME, QWERTY, WORKMAN, COLEMAK, DVORAK, _______,
297 _______, _______, _______, _______, _______, _______, _______, QWERTYP, WORKMNP, COLEMKP, DVORAKP, _______,
298 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
299 ),
300
301 /* Fn (rgblight and backlight layout)
302 * ,-----------------------------------------------------------------------------------.
303 * | | | | | | | | | | | | |
304 * |------+------+------+------+------+------+------+------+------+------+------+------|
305 * | | | | | | | | | |RGBVA-|RGBVA+| |
306 * |------+------+------+------+------+------+------+------+------+------+------+------|
307 * | | | | | | | | | |RGBSA-|RGBSA+|RGBLYR|
308 * |------+------+------+------+------+------+------+------+------+------+------+------|
309 * | | | | | | | | |RGBTOG|RGBHU-|RGBHU+|RGBMOD|
310 * |------+------+------+------+------+------+------+------+------+------+------+------|
311 * | | | | | | | |BLTOGG| BL- | BL+ |BLBRTG|
312 * `-----------------------------------------------------------------------------------'
313 */
314 [_FN] = LAYOUT_ortho_5x12_wrapper(
315 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
316 _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, _______,
317 _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_SAI, RGB_LYR,
318 _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUD, RGB_HUI, RGB_MOD,
319 _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, BL_BRTG
320 ),
321
322 /* GIT
323 * ,-----------------------------------------------------------------------------------.
324 * | | | | | | | | | | | | |
325 * |------+------+------+------+------+------+------+------+------+------+------+------|
326 * | |CHRPCK| SHOW |REBASE|RESET | TAG | | PULL | INIT |REMOTE| PUSH | |
327 * |------+------+------+------+------+------+------+------+------+------+------+------|
328 * | | ADD |STATUS| DIFF |FETCH | GREP |STASH | |CHECKT| LOG | | |
329 * |------+------+------+------+------+------+------+------+------+------+------+------|
330 * | | | |COMMIT| MV |BRANCH| |MERGE | | | | |
331 * |------+------+------+------+------+------+------+------+------+------+------+------|
332 * | | | | | | | | | | | |
333 * `-----------------------------------------------------------------------------------'
334 */
335 [_GIT] = LAYOUT_ortho_5x12_wrapper(
336 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
337 _______, _________________GIT_LEFT1_________________, _________________GIT_RIGHT1________________, _______,
338 _______, _________________GIT_LEFT2_________________, _________________GIT_RIGHT2________________, _______,
339 _______, _________________GIT_LEFT3_________________, _________________GIT_RIGHT3________________, _______,
340 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
341 )
342};
diff --git a/layouts/community/ortho_5x12/greatwizard/rules.mk b/layouts/community/ortho_5x12/greatwizard/rules.mk
new file mode 100644
index 000000000..fbff04ed9
--- /dev/null
+++ b/layouts/community/ortho_5x12/greatwizard/rules.mk
@@ -0,0 +1,8 @@
1EXTRAKEY_ENABLE = yes # Audio control and System control
2TAP_DANCE_ENABLE = yes # Enable Tap Dance
3
4LAYERS_ORTHO = yes
5LAYERS_PROGRAMMER = yes
6LAYER_GAME = yes
7LAYER_GIT = yes
8LAYER_FN = yes
diff --git a/users/greatwizard/config.h b/users/greatwizard/config.h
new file mode 100644
index 000000000..2ee9e5090
--- /dev/null
+++ b/users/greatwizard/config.h
@@ -0,0 +1,31 @@
1/* Copyright 2020 Guillaume Gérard
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#pragma once
17
18#define TAP_CODE_DELAY 5
19
20#define RGBLIGHT_ANIMATIONS
21
22#ifdef TAP_DANCE_ENABLE
23# define TAPPING_TERM 175
24# define PERMISSIVE_HOLD
25#endif
26
27#ifdef AUTO_SHIFT_ENABLE
28# define AUTO_SHIFT_TIMEOUT 135
29# define NO_AUTO_SHIFT_SPECIAL
30# define NO_AUTO_SHIFT_NUMERIC
31#endif
diff --git a/users/greatwizard/fn.h b/users/greatwizard/fn.h
new file mode 100644
index 000000000..f842bf04b
--- /dev/null
+++ b/users/greatwizard/fn.h
@@ -0,0 +1,21 @@
1/* Copyright 2020 Guillaume Gérard
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#pragma once
17
18#include QMK_KEYBOARD_H
19#include "greatwizard.h"
20
21#define FN MO(_FN)
diff --git a/users/greatwizard/game.c b/users/greatwizard/game.c
new file mode 100644
index 000000000..eecabfa40
--- /dev/null
+++ b/users/greatwizard/game.c
@@ -0,0 +1,27 @@
1/* Copyright 2020 Guillaume Gérard
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#include "game.h"
17
18bool process_record_game(uint16_t keycode, keyrecord_t *record) {
19 switch (keycode) {
20 case GAME:
21 if (record->event.pressed) {
22 set_single_persistent_default_layer(_GAME);
23 }
24 return false;
25 }
26 return true;
27}
diff --git a/users/greatwizard/game.h b/users/greatwizard/game.h
new file mode 100644
index 000000000..504129b40
--- /dev/null
+++ b/users/greatwizard/game.h
@@ -0,0 +1,21 @@
1/* Copyright 2020 Guillaume Gérard
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#pragma once
17
18#include QMK_KEYBOARD_H
19#include "greatwizard.h"
20
21bool process_record_game(uint16_t keycode, keyrecord_t *record);
diff --git a/users/greatwizard/git.c b/users/greatwizard/git.c
new file mode 100644
index 000000000..4bf68fe69
--- /dev/null
+++ b/users/greatwizard/git.c
@@ -0,0 +1,127 @@
1/* Copyright 2020 Guillaume Gérard
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#include "git.h"
17
18bool process_record_git(uint16_t keycode, keyrecord_t *record) {
19 switch (keycode) {
20 case GIT_ADD:
21 if (record->event.pressed) {
22 SEND_STRING("git add ");
23 }
24 return false;
25 case GIT_BRANCH:
26 if (record->event.pressed) {
27 SEND_STRING("git branch ");
28 }
29 return false;
30 case GIT_CHECKOUT:
31 if (record->event.pressed) {
32 SEND_STRING("git checkout ");
33 }
34 return false;
35 case GIT_CHERRYPICK:
36 if (record->event.pressed) {
37 SEND_STRING("git cherry-pick ");
38 }
39 return false;
40 case GIT_COMMIT:
41 if (record->event.pressed) {
42 SEND_STRING("git commit -m \"\""SS_TAP(X_LEFT));
43 }
44 return false;
45 case GIT_DIFF:
46 if (record->event.pressed) {
47 SEND_STRING("git diff ");
48 }
49 return false;
50 case GIT_FETCH:
51 if (record->event.pressed) {
52 SEND_STRING("git fetch ");
53 }
54 return false;
55 case GIT_GREP:
56 if (record->event.pressed) {
57 SEND_STRING("git grep ");
58 }
59 return false;
60 case GIT_LOG:
61 if (record->event.pressed) {
62 SEND_STRING("git log --decorate --oneline --graph ");
63 }
64 return false;
65 case GIT_INIT:
66 if (record->event.pressed) {
67 SEND_STRING("git init ");
68 }
69 return false;
70 case GIT_MV:
71 if (record->event.pressed) {
72 SEND_STRING("git mv ");
73 }
74 return false;
75 case GIT_MERGE:
76 if (record->event.pressed) {
77 SEND_STRING("git merge ");
78 }
79 return false;
80 case GIT_PUSH:
81 if (record->event.pressed) {
82 SEND_STRING("git push ");
83 }
84 return false;
85 case GIT_PULL:
86 if (record->event.pressed) {
87 SEND_STRING("git pull ");
88 }
89 return false;
90 case GIT_REBASE:
91 if (record->event.pressed) {
92 SEND_STRING("git rebase ");
93 }
94 return false;
95 case GIT_REMOTE:
96 if (record->event.pressed) {
97 SEND_STRING("git remote ");
98 }
99 return false;
100 case GIT_RESET:
101 if (record->event.pressed) {
102 SEND_STRING("git reset ");
103 }
104 return false;
105 case GIT_SHOW:
106 if (record->event.pressed) {
107 SEND_STRING("git show ");
108 }
109 return false;
110 case GIT_STASH:
111 if (record->event.pressed) {
112 SEND_STRING("git stash ");
113 }
114 return false;
115 case GIT_STATUS:
116 if (record->event.pressed) {
117 SEND_STRING("git status ");
118 }
119 return false;
120 case GIT_TAG:
121 if (record->event.pressed) {
122 SEND_STRING("git tag ");
123 }
124 return false;
125 }
126 return true;
127}
diff --git a/users/greatwizard/git.h b/users/greatwizard/git.h
new file mode 100644
index 000000000..c3b4a617d
--- /dev/null
+++ b/users/greatwizard/git.h
@@ -0,0 +1,39 @@
1/* Copyright 2020 Guillaume Gérard
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#pragma once
17
18#include QMK_KEYBOARD_H
19#include "greatwizard.h"
20
21bool process_record_git(uint16_t keycode, keyrecord_t *record);
22
23#define GIT_BRC GIT_BRANCH
24#define GIT_CKT GIT_CHECKOUT
25#define GIT_CPK GIT_CHERRYPICK
26#define GIT_CMT GIT_COMMIT
27#define GIT_DIF GIT_DIFF
28#define GIT_FTC GIT_FETCH
29#define GIT_GRP GIT_GREP
30#define GIT_INI GIT_INIT
31#define GIT_MRG GIT_MERGE
32#define GIT_PUS GIT_PUSH
33#define GIT_PUL GIT_PULL
34#define GIT_RBS GIT_REBASE
35#define GIT_RMT GIT_REMOTE
36#define GIT_RST GIT_RESET
37#define GIT_SHW GIT_SHOW
38#define GIT_STS GIT_STASH
39#define GIT_STT GIT_STATUS
diff --git a/users/greatwizard/greatwizard.c b/users/greatwizard/greatwizard.c
new file mode 100644
index 000000000..46ee41436
--- /dev/null
+++ b/users/greatwizard/greatwizard.c
@@ -0,0 +1,112 @@
1/* Copyright 2020 Guillaume Gérard
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#include "greatwizard.h"
17
18void eeconfig_init_user(void) {
19 user_config_t user_config;
20 user_config.raw = 0;
21#ifdef RGBLIGHT_ENABLE
22 user_config.rgb_layer_change = true;
23#endif
24 eeconfig_update_user(user_config.raw);
25 keyboard_init();
26}
27
28void keyboard_post_init_user(void) {
29#ifdef RGBLIGHT_ENABLE
30 keyboard_post_init_rgb();
31#endif
32}
33
34bool process_record_user(uint16_t keycode, keyrecord_t *record) {
35#ifdef RGBLIGHT_ENABLE
36 process_record_rgb(keycode, record);
37#endif
38#ifdef LAYER_GAME
39 process_record_game(keycode, record);
40#endif
41#ifdef LAYER_GIT
42 process_record_git(keycode, record);
43#endif
44#ifdef LAYERS_PROGRAMMER
45 process_record_pg(keycode, record);
46#endif
47 switch (keycode) {
48 case QWERTY:
49 if (record->event.pressed) {
50 set_single_persistent_default_layer(_QWERTY);
51 }
52 return false;
53 case WORKMAN:
54 if (record->event.pressed) {
55 set_single_persistent_default_layer(_WORKMAN);
56 }
57 return false;
58 case COLEMAK:
59 if (record->event.pressed) {
60 set_single_persistent_default_layer(_COLEMAK);
61 }
62 return false;
63 case DVORAK:
64 if (record->event.pressed) {
65 set_single_persistent_default_layer(_DVORAK);
66 }
67 return false;
68 }
69 return true;
70}
71
72#ifdef ENCODER_ENABLE
73void encoder_update_user(uint8_t index, bool clockwise) {
74 switch (get_highest_layer(layer_state)) {
75 case _QWERTY:
76#ifdef LAYERS_PROGRAMMER
77 case _PROGRAMMER_SHIFTED:
78#endif
79 if (clockwise) {
80 tap_code(KC_AUDIO_VOL_UP);
81 } else {
82 tap_code(KC_AUDIO_VOL_DOWN);
83 }
84 break;
85 default:
86 if (clockwise) {
87 tap_code(KC_MEDIA_NEXT_TRACK);
88 } else {
89 tap_code(KC_MEDIA_PREV_TRACK);
90 }
91 break;
92 }
93}
94#endif
95
96layer_state_t layer_state_set_user(layer_state_t state) {
97 state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
98#ifdef RGBLIGHT_ENABLE
99 state = layer_state_set_rgb(state);
100#endif
101#ifdef LAYERS_ORTHO
102 state = layer_state_set_ortho(state);
103#endif
104 return state;
105}
106
107bool led_update_user(led_t led_state) {
108#ifdef RGBLIGHT_ENABLE
109 led_update_rgb(led_state);
110#endif
111 return true;
112}
diff --git a/users/greatwizard/greatwizard.h b/users/greatwizard/greatwizard.h
new file mode 100644
index 000000000..d2e15854a
--- /dev/null
+++ b/users/greatwizard/greatwizard.h
@@ -0,0 +1,135 @@
1/* Copyright 2020 Guillaume Gérard
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#pragma once
17
18#include QMK_KEYBOARD_H
19#include "keymap_helpers.h"
20#ifdef TAP_DANCE_ENABLE
21# include "tap_dances.h"
22#endif
23#ifdef RGBLIGHT_ENABLE
24# include "underglow.h"
25#endif
26#ifdef LAYER_FN
27# include "fn.h"
28#endif
29#ifdef LAYER_GAME
30# include "game.h"
31#endif
32#ifdef LAYER_GIT
33# include "git.h"
34#endif
35#ifdef LAYERS_ORTHO
36# include "ortho.h"
37#endif
38#ifdef LAYERS_PROGRAMMER
39# include "programmer.h"
40#endif
41
42typedef union {
43 uint32_t raw;
44 struct {
45#ifdef RGBLIGHT_ENABLE
46 bool rgb_layer_change : 1;
47#endif
48 };
49} user_config_t;
50
51enum layers {
52 _QWERTY,
53 _WORKMAN,
54 _COLEMAK,
55 _DVORAK,
56#ifdef LAYER_GAME
57 _GAME,
58#endif
59#ifdef LAYERS_PROGRAMMER
60 _QWERTY_PROGRAMMER,
61 _WORKMAN_PROGRAMMER,
62 _COLEMAK_PROGRAMMER,
63 _DVORAK_PROGRAMMER,
64 _PROGRAMMER_SHIFTED,
65#endif
66#ifdef LAYERS_ORTHO
67 _LOWER,
68 _RAISE,
69 _ADJUST,
70#endif
71#ifdef LAYER_FN
72 _FN,
73#endif
74#ifdef LAYER_GIT
75 _GIT,
76#endif
77};
78
79enum keycodes {
80 // Persistent layers switcher keys
81 QWERTY = SAFE_RANGE,
82 WORKMAN,
83 COLEMAK,
84 DVORAK,
85#ifdef LAYER_GAME
86 GAME,
87#endif
88#ifdef LAYERS_PROGRAMMER
89 // Workman Programmer
90 QWERTY_PROGRAMMER,
91 WORKMAN_PROGRAMMER,
92 COLEMAK_PROGRAMMER,
93 DVORAK_PROGRAMMER,
94 PROGRAMMER_SHIFTED,
95 PG_GRV,
96 PG_1,
97 PG_2,
98 PG_3,
99 PG_4,
100 PG_5,
101 PG_6,
102 PG_7,
103 PG_8,
104 PG_9,
105 PG_0,
106#endif
107 // RGB Underglow lights based on the layer key
108 RGB_LAYER,
109#ifdef LAYER_GIT
110 // GIT commands
111 GIT_ADD,
112 GIT_BRANCH,
113 GIT_CHECKOUT,
114 GIT_CHERRYPICK,
115 GIT_COMMIT,
116 GIT_DIFF,
117 GIT_FETCH,
118 GIT_GREP,
119 GIT_LOG,
120 GIT_INIT,
121 GIT_MV,
122 GIT_MERGE,
123 GIT_PUSH,
124 GIT_PULL,
125 GIT_REBASE,
126 GIT_REMOTE,
127 GIT_RESET,
128 GIT_SHOW,
129 GIT_STASH,
130 GIT_STATUS,
131 GIT_TAG
132#endif
133};
134
135#define RGB_LYR RGB_LAYER
diff --git a/users/greatwizard/keymap_helpers.h b/users/greatwizard/keymap_helpers.h
new file mode 100644
index 000000000..af9f4dfaa
--- /dev/null
+++ b/users/greatwizard/keymap_helpers.h
@@ -0,0 +1,61 @@
1/* Copyright 2020 Guillaume Gérard
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#pragma once
17
18#include QMK_KEYBOARD_H
19
20#define _______________QWERTY_LEFT1________________ KC_Q, KC_W, KC_E, KC_R, KC_T
21#define _______________QWERTY_LEFT2________________ KC_A, KC_S, KC_D, KC_F, KC_G
22#define _______________QWERTY_LEFT3________________ KC_Z, KC_X, KC_C, KC_V, KC_B
23
24#define _______________QWERTY_RIGHT1_______________ KC_Y, KC_U, KC_I, KC_O, KC_P
25#define _______________QWERTY_RIGHT2_______________ KC_H, KC_J, KC_K, KC_L, KC_SCLN
26#define _______________QWERTY_RIGHT3_______________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
27
28#define _______________WORKMAN_LEFT1_______________ KC_Q, KC_D, KC_R, KC_W, KC_B
29#define _______________WORKMAN_LEFT2_______________ KC_A, KC_S, KC_H, KC_T, KC_G
30#define _______________WORKMAN_LEFT3_______________ KC_Z, KC_X, KC_M, KC_C, KC_V
31
32#define _______________WORKMAN_RIGHT1______________ KC_J, KC_F, KC_U, KC_P, KC_SCLN
33#define _______________WORKMAN_RIGHT2______________ KC_Y, KC_N, KC_E, KC_O, KC_I
34#define _______________WORKMAN_RIGHT3______________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH
35
36#define _______________COLEMAK_LEFT1_______________ KC_Q, KC_W, KC_F, KC_P, KC_G
37#define _______________COLEMAK_LEFT2_______________ KC_A, KC_R, KC_S, KC_T, KC_D
38#define _______________COLEMAK_LEFT3_______________ KC_Z, KC_X, KC_C, KC_V, KC_B
39
40#define _______________COLEMAK_RIGHT1______________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
41#define _______________COLEMAK_RIGHT2______________ KC_H, KC_N, KC_E, KC_I, KC_O
42#define _______________COLEMAK_RIGHT3______________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
43
44#define _______________DVORAK_LEFT1________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
45#define _______________DVORAK_LEFT2________________ KC_A, KC_O, KC_E, KC_U, KC_I
46#define _______________DVORAK_LEFT3________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
47
48#define _______________DVORAK_RIGHT1_______________ KC_F, KC_G, KC_C, KC_R, KC_L
49#define _______________DVORAK_RIGHT2_______________ KC_D, KC_H, KC_T, KC_N, KC_S
50#define _______________DVORAK_RIGHT3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z
51
52#define _______________NUMBER_LEFT_________________ KC_1, KC_2, KC_3, KC_4, KC_5
53#define _______________NUMBER_RIGHT________________ KC_6, KC_7, KC_8, KC_9, KC_0
54
55#define _________________GIT_LEFT1_________________ GIT_CPK, GIT_SHW, GIT_RBS, GIT_RST, GIT_TAG
56#define _________________GIT_LEFT2_________________ GIT_ADD, GIT_STT, GIT_DIF, GIT_FTC, GIT_GRP
57#define _________________GIT_LEFT3_________________ _______, _______, GIT_CMT, GIT_MV, GIT_BRC
58
59#define _________________GIT_RIGHT1________________ _______, GIT_PUL, GIT_INI, GIT_RMT, GIT_PUS
60#define _________________GIT_RIGHT2________________ GIT_STS, _______, GIT_CKT, GIT_LOG, _______
61#define _________________GIT_RIGHT3________________ _______, GIT_MRG, _______, _______, _______
diff --git a/users/greatwizard/ortho.c b/users/greatwizard/ortho.c
new file mode 100644
index 000000000..90b25b930
--- /dev/null
+++ b/users/greatwizard/ortho.c
@@ -0,0 +1,21 @@
1/* Copyright 2020 Guillaume Gérard
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#include "ortho.h"
17
18layer_state_t layer_state_set_ortho(layer_state_t state) {
19 state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
20 return state;
21}
diff --git a/users/greatwizard/ortho.h b/users/greatwizard/ortho.h
new file mode 100644
index 000000000..7fb5d5e6c
--- /dev/null
+++ b/users/greatwizard/ortho.h
@@ -0,0 +1,24 @@
1/* Copyright 2020 Guillaume Gérard
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#pragma once
17
18#include QMK_KEYBOARD_H
19#include "greatwizard.h"
20
21layer_state_t layer_state_set_ortho(layer_state_t state);
22
23#define LOWER MO(_LOWER)
24#define RAISE MO(_RAISE)
diff --git a/users/greatwizard/programmer.c b/users/greatwizard/programmer.c
new file mode 100644
index 000000000..e0f71ea06
--- /dev/null
+++ b/users/greatwizard/programmer.c
@@ -0,0 +1,174 @@
1/* Copyright 2020 Guillaume Gérard
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#include "programmer.h"
17
18bool process_record_pg(uint16_t keycode, keyrecord_t *record) {
19 switch (keycode) {
20 case QWERTY_PROGRAMMER:
21 if (record->event.pressed) {
22 set_single_persistent_default_layer(_QWERTY_PROGRAMMER);
23 }
24 return false;
25 case WORKMAN_PROGRAMMER:
26 if (record->event.pressed) {
27 set_single_persistent_default_layer(_WORKMAN_PROGRAMMER);
28 }
29 return false;
30 case COLEMAK_PROGRAMMER:
31 if (record->event.pressed) {
32 set_single_persistent_default_layer(_COLEMAK_PROGRAMMER);
33 }
34 return false;
35 case DVORAK_PROGRAMMER:
36 if (record->event.pressed) {
37 set_single_persistent_default_layer(_DVORAK_PROGRAMMER);
38 }
39 return false;
40 case PG_GRV:
41 if (record->event.pressed) {
42 uint8_t current_mods = get_mods();
43 if (current_mods & MOD_MASK_SHIFT) {
44 clear_mods();
45 SEND_STRING("`");
46 set_mods(current_mods);
47 } else {
48 SEND_STRING("~");
49 }
50 }
51 return false;
52 case PG_1:
53 if (record->event.pressed) {
54 uint8_t current_mods = get_mods();
55 if (current_mods & MOD_MASK_SHIFT) {
56 clear_mods();
57 SEND_STRING("1");
58 set_mods(current_mods);
59 } else {
60 SEND_STRING("!");
61 }
62 }
63 return false;
64 case PG_2:
65 if (record->event.pressed) {
66 uint8_t current_mods = get_mods();
67 if (current_mods & MOD_MASK_SHIFT) {
68 clear_mods();
69 SEND_STRING("2");
70 set_mods(current_mods);
71 } else {
72 SEND_STRING("@");
73 }
74 }
75 return false;
76 case PG_3:
77 if (record->event.pressed) {
78 uint8_t current_mods = get_mods();
79 if (current_mods & MOD_MASK_SHIFT) {
80 clear_mods();
81 SEND_STRING("3");
82 set_mods(current_mods);
83 } else {
84 SEND_STRING("#");
85 }
86 }
87 return false;
88 case PG_4:
89 if (record->event.pressed) {
90 uint8_t current_mods = get_mods();
91 if (current_mods & MOD_MASK_SHIFT) {
92 clear_mods();
93 SEND_STRING("4");
94 set_mods(current_mods);
95 } else {
96 SEND_STRING("$");
97 }
98 }
99 return false;
100 case PG_5:
101 if (record->event.pressed) {
102 uint8_t current_mods = get_mods();
103 if (current_mods & MOD_MASK_SHIFT) {
104 clear_mods();
105 SEND_STRING("5");
106 set_mods(current_mods);
107 } else {
108 SEND_STRING("%");
109 }
110 }
111 return false;
112 case PG_6:
113 if (record->event.pressed) {
114 uint8_t current_mods = get_mods();
115 if (current_mods & MOD_MASK_SHIFT) {
116 clear_mods();
117 SEND_STRING("6");
118 set_mods(current_mods);
119 } else {
120 SEND_STRING("^");
121 }
122 }
123 return false;
124 case PG_7:
125 if (record->event.pressed) {
126 uint8_t current_mods = get_mods();
127 if (current_mods & MOD_MASK_SHIFT) {
128 clear_mods();
129 SEND_STRING("7");
130 set_mods(current_mods);
131 } else {
132 SEND_STRING("&");
133 }
134 }
135 return false;
136 case PG_8:
137 if (record->event.pressed) {
138 uint8_t current_mods = get_mods();
139 if (current_mods & MOD_MASK_SHIFT) {
140 clear_mods();
141 SEND_STRING("8");
142 set_mods(current_mods);
143 } else {
144 SEND_STRING("*");
145 }
146 }
147 return false;
148 case PG_9:
149 if (record->event.pressed) {
150 uint8_t current_mods = get_mods();
151 if (current_mods & MOD_MASK_SHIFT) {
152 clear_mods();
153 SEND_STRING("9");
154 set_mods(current_mods);
155 } else {
156 SEND_STRING("(");
157 }
158 }
159 return false;
160 case PG_0:
161 if (record->event.pressed) {
162 uint8_t current_mods = get_mods();
163 if (current_mods & MOD_MASK_SHIFT) {
164 clear_mods();
165 SEND_STRING("0");
166 set_mods(current_mods);
167 } else {
168 SEND_STRING(")");
169 }
170 }
171 return false;
172 }
173 return true;
174}
diff --git a/users/greatwizard/programmer.h b/users/greatwizard/programmer.h
new file mode 100644
index 000000000..a79aada24
--- /dev/null
+++ b/users/greatwizard/programmer.h
@@ -0,0 +1,31 @@
1/* Copyright 2020 Guillaume Gérard
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#pragma once
17
18#include QMK_KEYBOARD_H
19#include "greatwizard.h"
20
21bool process_record_pg(uint16_t keycode, keyrecord_t *record);
22
23#define QWERTYP QWERTY_PROGRAMMER
24#define WORKMNP WORKMAN_PROGRAMMER
25#define COLEMKP COLEMAK_PROGRAMMER
26#define DVORAKP DVORAK_PROGRAMMER
27#ifdef TAP_DANCE_LSFT_CAPS
28# define PG_LSCP TD(TD_PG_LSFT_CAPS)
29#else
30# define PG_LSCP LM(_PROGRAMMER_SHIFTED, MOD_LSFT)
31#endif
diff --git a/users/greatwizard/readme.md b/users/greatwizard/readme.md
new file mode 100644
index 000000000..bc2df7f9b
--- /dev/null
+++ b/users/greatwizard/readme.md
@@ -0,0 +1,32 @@
1# GreatWizard Userspace
2
3## Features
4
5- ⌨️ Switchable and persistent base layers: Qwerty, Workman, Workman, Colemak, Dvorak, 🎮 Game
6- ⌨️ Programmer flavored base layers available
7- 💃🕺 Tap Dances
8- 🆙 Auto Shift
9- 👨‍💻 One shot keys git commands layer
10- 🌈 RGB Underglow lights based on the layer
11- ⚙️ Rotary encoder for volume level and next/previous media
12- 🗜️ Enable link time optimization
13
14## Community Layouts
15
16- [ortholinear 4x12](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/ortho_4x12/greatwizard)
17- [ortholinear 5x12](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/ortho_5x12/greatwizard)
18
19## Build Options
20
21### Layers
22
23- `LAYERS_ORTHO`: add Lower, Raise and Adjust layers/keycodes
24- `LAYERS_PROGRAMMER`: add Programmer layers/keycodes
25- `LAYER_GAME`: add Game layer/keycode
26- `LAYER_GIT`: add GIT layer/keycode
27- `LAYER_FN`: add Fn layer/keycode
28
29### Tap Dances
30
31- `TAP_DANCE_LALT_GIT`: Double tap on LGUI to use the one shot keys git commands layer
32- `TAP_DANCE_LSFT_CAPS`: Double tap on LSHIFT to set Caps Lock
diff --git a/users/greatwizard/rules.mk b/users/greatwizard/rules.mk
new file mode 100644
index 000000000..92bb4ccd1
--- /dev/null
+++ b/users/greatwizard/rules.mk
@@ -0,0 +1,31 @@
1SRC += greatwizard.c
2
3ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
4 SRC += tap_dances.c
5endif
6
7ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
8 SRC += underglow.c
9endif
10
11ifeq ($(strip $(LAYER_GAME)), yes)
12 SRC += game.c
13endif
14
15ifeq ($(strip $(LAYER_GIT)), yes)
16 SRC += git.c
17endif
18
19ifeq ($(strip $(LAYERS_ORTHO)), yes)
20 SRC += ortho.c
21endif
22
23ifeq ($(strip $(LAYERS_PROGRAMMER)), yes)
24 SRC += programmer.c
25endif
26
27ifneq ($(PLATFORM),CHIBIOS)
28 LTO_ENABLE = yes # Enable link time optimization
29endif
30
31AUTO_SHIFT_ENABLE = yes # Autoshift by holding down a key
diff --git a/users/greatwizard/tap_dances.c b/users/greatwizard/tap_dances.c
new file mode 100644
index 000000000..c6be995c4
--- /dev/null
+++ b/users/greatwizard/tap_dances.c
@@ -0,0 +1,105 @@
1/* Copyright 2020 Guillaume Gérard
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#include "tap_dances.h"
17
18uint8_t cur_dance(qk_tap_dance_state_t *state) {
19 if (state->count == 1) {
20 if (state->interrupted || !state->pressed) return SINGLE_TAP;
21 else return SINGLE_HOLD;
22 } else if (state->count == 2) {
23 if (state->interrupted) return DOUBLE_SINGLE_TAP;
24 else if (state->pressed) return DOUBLE_HOLD;
25 else return DOUBLE_TAP;
26 }
27 if (state->count == 3) {
28 if (state->interrupted || !state->pressed) return TRIPLE_TAP;
29 else return TRIPLE_HOLD;
30 } else return 8;
31}
32
33static tap tap_state = {
34 .is_press_action = true,
35 .state = 0
36};
37
38#ifdef TAP_DANCE_LALT_GIT
39void lalt_finished(qk_tap_dance_state_t *state, void *user_data) {
40 tap_state.state = cur_dance(state);
41 switch (tap_state.state) {
42 case SINGLE_HOLD:
43 register_mods(MOD_BIT(KC_LALT));
44 break;
45 case DOUBLE_SINGLE_TAP:
46 case DOUBLE_TAP:
47 set_oneshot_layer(_GIT, ONESHOT_START);
48 break;
49 }
50}
51
52void lalt_reset(qk_tap_dance_state_t *state, void *user_data) {
53 switch (tap_state.state) {
54 case SINGLE_HOLD:
55 unregister_mods(MOD_BIT(KC_LALT));
56 break;
57 case DOUBLE_SINGLE_TAP:
58 case DOUBLE_TAP:
59 clear_oneshot_layer_state(ONESHOT_PRESSED);
60 break;
61 }
62 tap_state.state = 0;
63}
64#endif
65
66#ifdef TAP_DANCE_LSFT_CAPS
67# ifdef LAYERS_PROGRAMMER
68void pg_lsft_finished(qk_tap_dance_state_t *state, void *user_data) {
69 tap_state.state = cur_dance(state);
70 switch (tap_state.state) {
71 case SINGLE_HOLD:
72 register_mods(MOD_BIT(KC_LSFT));
73 layer_on(_PROGRAMMER_SHIFTED);
74 break;
75 case DOUBLE_SINGLE_TAP:
76 case DOUBLE_TAP:
77 tap_code(KC_CAPS);
78 layer_on(_PROGRAMMER_SHIFTED);
79 break;
80 }
81}
82
83void pg_lsft_reset(qk_tap_dance_state_t *state, void *user_data) {
84 switch (tap_state.state) {
85 case SINGLE_HOLD:
86 unregister_mods(MOD_BIT(KC_LSFT));
87 layer_off(_PROGRAMMER_SHIFTED);
88 break;
89 }
90 tap_state.state = 0;
91}
92# endif
93#endif
94
95qk_tap_dance_action_t tap_dance_actions[] = {
96#ifdef TAP_DANCE_LALT_GIT
97 [TD_LALT_GIT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lalt_finished, lalt_reset),
98#endif
99#ifdef TAP_DANCE_LSFT_CAPS
100 [TD_LSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
101# ifdef LAYERS_PROGRAMMER
102 [TD_PG_LSFT_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, pg_lsft_finished, pg_lsft_reset),
103# endif
104#endif
105};
diff --git a/users/greatwizard/tap_dances.h b/users/greatwizard/tap_dances.h
new file mode 100644
index 000000000..944ae4555
--- /dev/null
+++ b/users/greatwizard/tap_dances.h
@@ -0,0 +1,65 @@
1/* Copyright 2020 Guillaume Gérard
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#pragma once
17
18#include QMK_KEYBOARD_H
19#include "greatwizard.h"
20
21typedef struct {
22 bool is_press_action;
23 uint8_t state;
24} tap;
25
26enum {
27 SINGLE_TAP = 1,
28 SINGLE_HOLD,
29 DOUBLE_TAP,
30 DOUBLE_HOLD,
31 DOUBLE_SINGLE_TAP,
32 TRIPLE_TAP,
33 TRIPLE_HOLD
34};
35
36enum {
37#ifdef TAP_DANCE_LALT_GIT
38 TD_LALT_GIT,
39#endif
40#ifdef TAP_DANCE_LSFT_CAPS
41 TD_LSFT_CAPS,
42# ifdef LAYERS_PROGRAMMER
43 TD_PG_LSFT_CAPS,
44# endif
45#endif
46};
47
48uint8_t cur_dance(qk_tap_dance_state_t *state);
49
50#ifdef TAP_DANCE_LALT_GIT
51void lalt_finished(qk_tap_dance_state_t *state, void *user_data);
52void lalt_reset(qk_tap_dance_state_t *state, void *user_data);
53# define TD_LALT TD(TD_LALT_GIT)
54#endif
55
56#ifdef TAP_DANCE_LSFT_CAPS
57# ifdef LAYERS_PROGRAMMER
58void pg_lsft_finished(qk_tap_dance_state_t *state, void *user_data);
59void pg_lsft_reset(qk_tap_dance_state_t *state, void *user_data);
60# endif
61#endif
62
63#ifdef TAP_DANCE_LSFT_CAPS
64# define TD_LSCP TD(TD_LSFT_CAPS)
65#endif
diff --git a/users/greatwizard/underglow.c b/users/greatwizard/underglow.c
new file mode 100644
index 000000000..db31290ac
--- /dev/null
+++ b/users/greatwizard/underglow.c
@@ -0,0 +1,109 @@
1/* Copyright 2020 Guillaume Gérard
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#include "underglow.h"
17
18void keyboard_post_init_rgb(void) {
19 user_config_t user_config;
20 user_config.raw = eeconfig_read_user();
21 if (!user_config.rgb_layer_change) {
22 return;
23 }
24 rgblight_enable_noeeprom();
25 rgblight_sethsv_noeeprom_orange();
26 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
27}
28
29bool process_record_rgb(uint16_t keycode, keyrecord_t *record) {
30 switch (keycode) {
31 case RGB_LAYER:
32 if (record->event.pressed) {
33 user_config_t user_config;
34 user_config.raw = eeconfig_read_user();
35 user_config.rgb_layer_change ^= 1;
36 eeconfig_update_user(user_config.raw);
37 if (user_config.rgb_layer_change) {
38 layer_state_set(layer_state);
39 }
40 }
41 return false;
42 case RGB_MODE_FORWARD ... RGB_MODE_RGBTEST:
43 if (record->event.pressed) {
44 user_config_t user_config;
45 user_config.raw = eeconfig_read_user();
46 if (user_config.rgb_layer_change) {
47 user_config.rgb_layer_change = false;
48 eeconfig_update_user(user_config.raw);
49 }
50 }
51 return true;
52 }
53 return true;
54}
55
56layer_state_t layer_state_set_rgb(layer_state_t state) {
57 user_config_t user_config;
58 user_config.raw = eeconfig_read_user();
59 if (!user_config.rgb_layer_change) {
60 return state;
61 }
62 switch (get_highest_layer(state)) {
63 case _QWERTY:
64#ifdef LAYERS_PROGRAMMER
65 case _PROGRAMMER_SHIFTED:
66#endif
67 rgblight_sethsv_noeeprom_orange();
68 break;
69#ifdef LAYERS_ORTHO
70 case _LOWER:
71 rgblight_sethsv_noeeprom_red();
72 break;
73 case _RAISE:
74 rgblight_sethsv_noeeprom_blue();
75 break;
76 case _ADJUST:
77 rgblight_sethsv_noeeprom_purple();
78 break;
79#endif
80#ifdef LAYER_FN
81 case _FN:
82 rgblight_sethsv_noeeprom_chartreuse();
83 break;
84#endif
85#ifdef LAYER_GIT
86 case _GIT:
87 rgblight_sethsv_noeeprom_teal();
88 break;
89#endif
90 default:
91 rgblight_sethsv_noeeprom_white();
92 break;
93 }
94 return state;
95}
96
97bool led_update_rgb(led_t led_state) {
98 user_config_t user_config;
99 user_config.raw = eeconfig_read_user();
100 if (!user_config.rgb_layer_change) {
101 return true;
102 }
103 if (led_state.caps_lock) {
104 rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
105 } else {
106 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
107 }
108 return true;
109}
diff --git a/users/greatwizard/underglow.h b/users/greatwizard/underglow.h
new file mode 100644
index 000000000..7e073b857
--- /dev/null
+++ b/users/greatwizard/underglow.h
@@ -0,0 +1,24 @@
1/* Copyright 2020 Guillaume Gérard
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#pragma once
17
18#include QMK_KEYBOARD_H
19#include "greatwizard.h"
20
21void keyboard_post_init_rgb(void);
22bool process_record_rgb(uint16_t keycode, keyrecord_t *record);
23layer_state_t layer_state_set_rgb(layer_state_t state);
24bool led_update_rgb(led_t led_state);