aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/atreus62/keymaps/mneme/Makefile5
-rw-r--r--keyboards/atreus62/keymaps/mneme/README.md56
-rw-r--r--keyboards/atreus62/keymaps/mneme/config.h7
-rw-r--r--keyboards/atreus62/keymaps/mneme/img/base.pngbin0 -> 458762 bytes
-rw-r--r--keyboards/atreus62/keymaps/mneme/img/fun.pngbin0 -> 430634 bytes
-rw-r--r--keyboards/atreus62/keymaps/mneme/img/sym.pngbin0 -> 433342 bytes
-rw-r--r--keyboards/atreus62/keymaps/mneme/keymap.c337
-rw-r--r--keyboards/atreus62/keymaps/mneme/unicode114
-rw-r--r--keyboards/ergodox/keymaps/bryan/keymap.c226
-rw-r--r--keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.pngbin0 -> 79741 bytes
-rw-r--r--keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-1-symbols.pngbin0 -> 55349 bytes
-rw-r--r--keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.pngbin0 -> 50926 bytes
-rw-r--r--keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.pngbin0 -> 43551 bytes
-rw-r--r--keyboards/ergodox/keymaps/deadcyclo/readme.md26
-rw-r--r--keyboards/planck/keymaps/vifon/Makefile5
-rw-r--r--keyboards/planck/keymaps/vifon/config.h5
-rw-r--r--keyboards/planck/keymaps/vifon/keymap.c4
-rw-r--r--keyboards/tv44/keymaps/default/keymap.c2
-rw-r--r--quantum/quantum_keycodes.h4
-rw-r--r--readme.md2
20 files changed, 785 insertions, 8 deletions
diff --git a/keyboards/atreus62/keymaps/mneme/Makefile b/keyboards/atreus62/keymaps/mneme/Makefile
new file mode 100644
index 000000000..046aec273
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/Makefile
@@ -0,0 +1,5 @@
1TAP_DANCE_ENABLE = yes
2NKRO_ENABLE = true
3MOUSEKEY_ENABLE = no
4EXTRAKEY_ENABLE = yes
5CONSOLE_ENABLE = no
diff --git a/keyboards/atreus62/keymaps/mneme/README.md b/keyboards/atreus62/keymaps/mneme/README.md
new file mode 100644
index 000000000..04ab070be
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/README.md
@@ -0,0 +1,56 @@
1<!-- -*- mode: markdown; fill-column: 8192 -*- -->
2
3Mnemes Swedish Bonaza
4=======================
5
6My Layout in process, most of the code is shamelessly stolen from [algernons][algernon] excellent layout
7
8 [algernon]: https://github.com/algernon/ergodox-layout
9
10It's for Windows (current work forces me to) and Swedish (matter of birth) so ymmw.
11
12## Table of Contents
13
14* [Layouts](#layouts)
15 - [Base layer](#base-layer)
16 - [Nav layer](#nav-layer)
17 - [Sym layer](#sym-layer)
18 - [LED states](#led-states)
19
20# Layouts
21
22## Base layer
23
24![Base layer](img/base.png)
25
26
27* The number row doubles as a function row. Short presses produces numbers, long presses produces Fxx
28* The `Shift`, `Alt`, and `Control` modifiers are one-shot.
29* `Backspace` and `Enter` doubles as switches to the `sym` layer when held
30* The `ESC` key also doubles as a one-shot cancel key.
31* The **Lead** key is followed by a sequence of keys.
32 - `LEAD l` : `lgui+l`.
33 - `LEAD s l` : `λ`.
34 - `LEAD s s` : `¯\_(ツ)_/¯`
35 - `LEAD s f` : `凸(ツ)凸`
36 - `LEAD a *` : Application switching based on position in start menu. Very specific to my computer.
37
38
39## Nav layer
40
41![Nav layer](img/fun.png)
42
43Basic navigation on the right hand and modifiers close
44by for the left. The latter because I tend to use `ctrl+arrows` quite a lot.
45
46## Sym layer
47
48![Sym layer](img/sym.png)
49
50* Easy access to most symbols I use on a daily basis. Most common are on the home row, the rest are grouped as best as I could.
51
52- `eq` : Tapdance, produces `===` and `!==`
53- `fun`: Tapdance, produces `=>` and `() => {\n`
54
55# License
56 GPL-3+
diff --git a/keyboards/atreus62/keymaps/mneme/config.h b/keyboards/atreus62/keymaps/mneme/config.h
new file mode 100644
index 000000000..2c2a08c05
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/config.h
@@ -0,0 +1,7 @@
1#define ONESHOT_TIMEOUT 3000
2#define TAPPING_TERM 200
3#define PREVENT_STUCK_MODIFIERS
4
5#define LEADER_TIMEOUT 1000
6
7#include "../../config.h"
diff --git a/keyboards/atreus62/keymaps/mneme/img/base.png b/keyboards/atreus62/keymaps/mneme/img/base.png
new file mode 100644
index 000000000..86907d544
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/img/base.png
Binary files differ
diff --git a/keyboards/atreus62/keymaps/mneme/img/fun.png b/keyboards/atreus62/keymaps/mneme/img/fun.png
new file mode 100644
index 000000000..ec5a478c6
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/img/fun.png
Binary files differ
diff --git a/keyboards/atreus62/keymaps/mneme/img/sym.png b/keyboards/atreus62/keymaps/mneme/img/sym.png
new file mode 100644
index 000000000..11b5bd4b0
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/img/sym.png
Binary files differ
diff --git a/keyboards/atreus62/keymaps/mneme/keymap.c b/keyboards/atreus62/keymaps/mneme/keymap.c
new file mode 100644
index 000000000..7c1879982
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/keymap.c
@@ -0,0 +1,337 @@
1#include <stdarg.h>
2#include "atreus62.h"
3#include "led.h"
4#include "action_layer.h"
5#include "action_util.h"
6
7/*
8 *WINDOWS SWEDISH
9 */
10#define KN_HALF KC_GRV // 1/2
11#define KN_PLUS KC_MINS // +
12#define KN_ACUT KC_EQL // ´
13#define KN_AO KC_LBRC // Å
14#define KN_UMLA KC_RBRC // ¨
15#define KN_OE KC_SCLN // Ö
16#define KN_AE KC_QUOT // Ä
17#define KN_QUOT KC_NUHS // '
18#define KN_LABK KC_NUBS // <
19#define KN_MINS KC_SLSH // -
20#define KN_EXLM LSFT(KC_1) // !
21#define KN_DQT LSFT(KC_2) // "
22#define KN_AT RALT(KC_2) // @
23#define KN_HASH LSFT(KC_3) // #
24#define KN_DLR RALT(KC_4) // $
25#define KN_PERC LSFT(KC_5) // %
26#define KN_AMPR LSFT(KC_6) // &
27#define KN_SLSH LSFT(KC_7) // /
28#define KN_LPRN LSFT(KC_8) // (
29#define KN_RPRN LSFT(KC_9) // )
30#define KN_EQL LSFT(KC_0) // =
31#define KN_UNDS LSFT(KN_MINS) // _
32#define KN_QUES LSFT(KN_PLUS) // ?
33#define KN_GRAV LSFT(KN_ACUT) // `
34#define KN_LCBR RALT(KC_7) // {
35#define KN_RCBR RALT(KC_0) // }
36#define KN_LBRC RALT(KC_8) // [
37#define KN_RBRC RALT(KC_9) // ]
38#define KN_RABK LSFT(KN_LABK) // <
39#define KN_COLN LSFT(KC_DOT) // :
40#define KN_SCLN LSFT(KC_COMM) // :
41#define KN_PIPE RALT(KN_LABK) // |
42#define KN_QUES LSFT(KN_PLUS) // ?
43#define KN_CIRC LSFT(KN_UMLA) // ^
44#define KN_ASTR LSFT(KN_QUOT) // *
45#define KN_TILD RALT(KN_UMLA) // ~
46#define KN_BSLS RALT(KN_PLUS) //
47
48#define OSM_LCTL OSM(MOD_LCTL)
49#define OSM_LALT OSM(MOD_LALT)
50#define OSM_LSFT OSM(MOD_LSFT)
51
52#define KC_HYP LSFT(LALT(LCTL(KC_LGUI)))
53
54#define KC_COPY LCTL(KC_C)
55#define KC_PASTE LCTL(KC_V)
56#define KC_UNDO LCTL(KC_Z)
57#define KC_REDO LCTL(LSFT(KC_Z))
58
59// Layers
60enum {
61 BASE = 0,
62 NAV,
63 SYM
64};
65
66//Macros
67enum {
68 KF_1 = 0, // 1, F1
69 KF_2, // ...
70 KF_3,
71 KF_4,
72 KF_5,
73 KF_6,
74 KF_7,
75 KF_8,
76 KF_9,
77 KF_10,
78 KF_11,
79 KF_12
80};
81
82// Tapdance
83enum {
84 TD_FUN = 0,
85 TD_EQ
86};
87
88//Custom keycodes
89enum {
90 PLACEHOLDER = SAFE_RANGE
91};
92
93//State and timers
94uint16_t kf_timers[12];
95
96
97
98const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
99
100 [BASE] = {
101
102 { M(KF_11) ,M(KF_1) ,M(KF_2) ,M(KF_3) ,M(KF_4) ,M(KF_5) ,KC_NO ,M(KF_6) ,M(KF_7) ,M(KF_8) ,M(KF_9) ,M(KF_10) ,M(KF_12) },
103 { KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_NO ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KN_AO },
104 { OSM_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_NO ,KC_H ,KC_J ,KC_K ,KC_L ,KN_OE ,KN_AE },
105 { OSM_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_DELT ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KN_MINS ,OSM_LSFT },
106 { MO(NAV) ,OSM_LCTL ,OSM_LALT ,KC_LGUI ,KC_SPC ,LT(SYM,KC_BSPC) ,KC_HYP ,LT(SYM,KC_ENT) ,KC_SPC ,KC_LEAD ,KC_LALT ,KC_LCTRL ,MO(NAV) }
107
108 },
109 [NAV] = {
110
111 { KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS },
112 { KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_NO ,KC_PGUP ,KC_HOME ,KC_UP ,KC_END ,KC_TRNS ,KC_TRNS },
113 { KC_TRNS ,KC_LSFT ,KC_LCTL ,KC_LALT ,KC_L ,KC_TRNS ,KC_NO ,KC_PGDN ,KC_LEFT ,KC_DOWN ,KC_RIGHT ,KC_TRNS ,KC_TRNS },
114 { KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS },
115 { KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_VOLD ,KC_VOLU }
116
117 },
118 [SYM] = {
119
120 { KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,TD(TD_EQ) ,KC_NO ,TD(TD_FUN) ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS },
121 { KC_TRNS ,KN_LABK ,KN_RABK ,KN_LCBR ,KN_RCBR ,KN_PLUS ,KC_NO ,KN_AT ,KN_DQT ,KN_QUOT ,KN_GRAV ,KN_SLSH ,KC_TRNS },
122 { KC_TRNS ,KN_EXLM ,KN_EQL ,KN_LPRN ,KN_RPRN ,KN_MINS ,KC_NO ,KN_UNDS ,KN_SCLN ,KN_COLN ,KN_AMPR ,KN_PIPE ,KC_TRNS },
123 { KC_TRNS ,KN_DLR ,KN_PERC ,KN_LBRC ,KN_RBRC ,KN_ASTR ,KC_TRNS ,KN_HASH ,KC_COMM ,KC_DOT ,KN_QUES ,KN_BSLS ,KC_TRNS },
124 { KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS }
125
126 }
127};
128
129#define TAP_ONCE(code) \
130 register_code (code); \
131 unregister_code (code)
132
133static void m_tapn (uint8_t code, ...) {
134 uint8_t kc = code;
135 va_list ap;
136
137 va_start(ap, code);
138 do {
139 register_code(kc);
140 unregister_code(kc);
141 wait_ms(50);
142 kc = va_arg(ap, int);
143 } while (kc != 0);
144 va_end(ap);
145}
146
147static void m_handle_kf (keyrecord_t *record, uint8_t id) {
148 uint8_t code = id - KF_1;
149
150 if (record->event.pressed) {
151 kf_timers[code] = timer_read ();
152 } else {
153 uint8_t kc_base;
154 uint8_t long_press = (kf_timers[code] && timer_elapsed (kf_timers[code]) > TAPPING_TERM);
155
156 kf_timers[code] = 0;
157
158 switch(id){
159 case KF_1 ... KF_10:
160 if (long_press) {
161 // Long press
162 kc_base = KC_F1;
163 } else {
164 kc_base = KC_1;
165 }
166 code += kc_base;
167 break;
168 case KF_11:
169 code = long_press ? KC_F11 : KC_ESC;
170 break;
171 case KF_12:
172 code = long_press ? KC_F12 : KN_PLUS;
173 break;
174 }
175 register_code (code);
176 unregister_code (code);
177 }
178}
179
180const uint16_t PROGMEM fn_actions[] = {
181};
182
183const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
184{
185 switch (id) {
186 case KF_1 ... KF_12:
187 m_handle_kf(record, id);
188 break;
189 }
190 return MACRO_NONE;
191};
192
193// Custom keycodes
194bool process_record_user(uint16_t keycode, keyrecord_t *record) {
195 bool queue = true;
196
197 //Cancle one-shot mods.
198 switch (keycode) {
199 case KC_ESC:
200 if (record->event.pressed && get_oneshot_mods() && !has_oneshot_mods_timed_out()) {
201 clear_oneshot_mods();
202 queue = false;
203 }
204 break;
205 }
206 return queue;
207}
208
209// TAP DANCE SETTINGS
210void dance_eq (qk_tap_dance_state_t *state, void *user_data) {
211 switch (state->count) {
212 case 1: // ===
213 register_code(KC_LSHIFT);
214 m_tapn(KC_0, KC_0, KC_0, 0);
215 unregister_code(KC_LSHIFT);
216 break;
217 case 2:
218 register_code(KC_LSHIFT);
219 m_tapn(KC_1, KC_0, KC_0, 0);
220 unregister_code(KC_LSHIFT);
221 break;
222 default:
223 reset_tap_dance(state);
224 }
225}
226
227void dance_fun (qk_tap_dance_state_t *state, void *user_data) {
228 switch (state->count) {
229 case 1: // =>
230 register_code(KC_LSHIFT);
231 m_tapn(KC_0, KN_LABK, 0);
232 unregister_code(KC_LSHIFT);
233 break;
234 case 2: // () => {}
235 register_code(KC_LSHIFT);
236 m_tapn(KC_8, KC_9, KC_SPC, KC_0, KN_LABK, KC_SPC, 0);
237 unregister_code(KC_LSHIFT);
238 register_code(KC_RALT);
239 m_tapn(KC_7, 0);
240 unregister_code(KC_RALT);
241 TAP_ONCE(KC_ENT);
242 break;
243 default:
244 reset_tap_dance(state);
245 }
246}
247
248qk_tap_dance_action_t tap_dance_actions[] = {
249 [TD_FUN] = ACTION_TAP_DANCE_FN (dance_fun)
250 ,[TD_EQ] = ACTION_TAP_DANCE_FN (dance_eq)
251};
252
253// Runs just one time when the keyboard initializes.
254void matrix_init_user(void) {
255 set_unicode_input_mode(UC_WINC);
256};
257
258LEADER_EXTERNS();
259// Runs constantly in the background, in a loop.
260void matrix_scan_user(void) {
261 LEADER_DICTIONARY() {
262 leading = false;
263 leader_end();
264 SEQ_ONE_KEY(KC_L){
265 register_code(KC_RGUI);
266 TAP_ONCE(KC_L);
267 unregister_code(KC_RGUI);
268 };
269
270
271 SEQ_TWO_KEYS (KC_A, KC_W) {
272 //Web - chrome
273 register_code (KC_LGUI); TAP_ONCE (KC_1); unregister_code (KC_LGUI);
274 }
275 SEQ_TWO_KEYS (KC_A, KC_P) {
276 //sPotify
277 register_code (KC_LGUI); TAP_ONCE (KC_2); unregister_code (KC_LGUI);
278
279 }
280 SEQ_TWO_KEYS (KC_A, KC_T) {
281 //Total Commander
282 register_code (KC_LGUI); TAP_ONCE (KC_3); unregister_code (KC_LGUI);
283
284 }
285 SEQ_TWO_KEYS (KC_A, KC_A) {
286 //Atom
287 register_code (KC_LGUI); TAP_ONCE (KC_4); unregister_code (KC_LGUI);
288
289 }
290 SEQ_TWO_KEYS (KC_A, KC_E) {
291 //Emacs
292 register_code (KC_LGUI); TAP_ONCE (KC_5); unregister_code (KC_LGUI);
293
294 }
295 SEQ_TWO_KEYS (KC_A, KC_C) {
296 //Cmdr
297 register_code (KC_LGUI); TAP_ONCE (KC_6); unregister_code (KC_LGUI);
298
299 }
300 SEQ_TWO_KEYS (KC_A, KC_S) {
301 //Slack
302 register_code (KC_LGUI); TAP_ONCE (KC_7); unregister_code (KC_LGUI);
303 }
304
305
306 SEQ_TWO_KEYS (KC_S, KC_S) {
307 // ¯\_(ツ)_/¯
308 unicode_input_start(); register_hex(0xaf); unicode_input_finish();
309 register_code (KC_LALT);
310 register_code (KC_LCTL);
311 TAP_ONCE (KN_PLUS);
312 unregister_code (KC_LCTL);
313 unregister_code (KC_LALT);
314
315 register_code (KC_RSFT); TAP_ONCE (KC_8); unregister_code (KC_RSFT);
316 unicode_input_start (); register_hex(0x30c4); unicode_input_finish();
317 register_code (KC_RSFT); TAP_ONCE (KC_9); TAP_ONCE(KC_7); unregister_code (KC_RSFT);
318 unicode_input_start (); register_hex(0xaf); unicode_input_finish();
319 }
320
321 SEQ_TWO_KEYS (KC_S, KC_F) {
322 // 凸(ツ)凸
323 unicode_input_start(); register_hex(0x51F8); unicode_input_finish();
324 register_code (KC_RSFT); TAP_ONCE (KC_8); unregister_code (KC_RSFT);
325 unicode_input_start (); register_hex(0x30c4); unicode_input_finish();
326 register_code (KC_RSFT); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
327 unicode_input_start (); register_hex(0x51F8); unicode_input_finish();
328 }
329
330 SEQ_TWO_KEYS (KC_S, KC_L) {
331 // λ
332 unicode_input_start();
333 register_hex(0x03bb);
334 unicode_input_finish();
335 }
336 };
337};
diff --git a/keyboards/atreus62/keymaps/mneme/unicode b/keyboards/atreus62/keymaps/mneme/unicode
new file mode 100644
index 000000000..b3f62b6d3
--- /dev/null
+++ b/keyboards/atreus62/keymaps/mneme/unicode
@@ -0,0 +1,114 @@
1Todo
2☐ 2610 Todo
3☑ 2611 Done
4☒ 2612 Failed
5
6Operator
7× 00D7 Multiplication
8÷ 00F7 Division
9≤ 2264 LessEqual
10≥ 2265 MoreEqual
11± 00B1 Plusminus
12
13Math
14∏ 220F Product
15∑ 2211 Sum
16≈ 2248 Almost
17≡ 2261 Equivalent
18∞ 221E Infinity
19‰ 2030 Mille
20
21Set
22⊂ 2282 Subset
23⊃ 2283 sUperset
24∩ 2229 Intersextion
25∪ 222A Union
26∈ 2208 Element
27∉ 2209 Notelement
28∍ 220D Contains
29∌ 220C doesNotcontain
30
31Logic
32¬ 00AC Not
33∧ 2227 And
34∨ 2228 Or
35∃ 2203 Exists
36∄ 2204 Notexists
37
38Greek
39µ 00B5 Micro
40λ 03BB Lamda
41Ω 2126 Omega
42α 03B1 Alpha
43β 03B2 Beta
44γ 03B3 Gamma
45π 03C0 Pi
46δ 03B4 Delta
47
48Other
49☁ 2601 Cloud
50☼ 263C Sun
51☂ 2602 Rain
52☠ 2620 Skull
53♺ 267A Recycle
54👍1F44D thumbsUp
55👎1F44E thumbsDown
56💩 1F4A9 Poo
57
58
59//Todo
60SEQ_THREE_KEYS(KC_U, KC_G, KC_T){m_unicode(0x2610);}; // Todo
61SEQ_THREE_KEYS(KC_U, KC_G, KC_D){m_unicode(0x2611);}; // Done
62SEQ_THREE_KEYS(KC_U, KC_G, KC_F){m_unicode(0x2612);}; // Failed
63
64//Operator
65SEQ_THREE_KEYS(KC_U, KC_O, KC_M){m_unicode(0x00D7);}; // Multiplication
66SEQ_THREE_KEYS(KC_U, KC_O, KC_D){m_unicode(0x00F7);}; // Division
67SEQ_THREE_KEYS(KC_U, KC_O, KC_L){m_unicode(0x2264);}; // LessEqual
68SEQ_THREE_KEYS(KC_U, KC_O, KC_M){m_unicode(0x2265);}; // MoreEqual
69SEQ_THREE_KEYS(KC_U, KC_O, KC_P){m_unicode(0x00B1);}; // Plusminus
70
71//Math
72SEQ_THREE_KEYS(KC_U, KC_M, KC_P){m_unicode(0x220F);}; // Product
73SEQ_THREE_KEYS(KC_U, KC_M, KC_S){m_unicode(0x2211);}; // Sum
74SEQ_THREE_KEYS(KC_U, KC_M, KC_A){m_unicode(0x2248);}; // Almost
75SEQ_THREE_KEYS(KC_U, KC_M, KC_E){m_unicode(0x2261);}; // Equivalent
76SEQ_THREE_KEYS(KC_U, KC_M, KC_I){m_unicode(0x221E);}; // Infinity
77SEQ_THREE_KEYS(KC_U, KC_M, KC_M){m_unicode(0x2030);}; // Mille
78
79//Set
80SEQ_THREE_KEYS(KC_U, KC_S, KC_S){m_unicode(0x2282);}; Subset
81SEQ_THREE_KEYS(KC_U, KC_S, KC_P){m_unicode(0x2283);}; suPerset
82SEQ_THREE_KEYS(KC_U, KC_S, KC_I){m_unicode(0x2229);}; Intersection
83SEQ_THREE_KEYS(KC_U, KC_S, KC_U){m_unicode(0x222A);}; Union
84SEQ_THREE_KEYS(KC_U, KC_S, KC_E){m_unicode(0x2208);}; Element
85SEQ_THREE_KEYS(KC_U, KC_S, KC_N){m_unicode(0x2209);}; Notelement
86SEQ_THREE_KEYS(KC_U, KC_S, KC_C){m_unicode(0x220D);}; Contains
87SEQ_THREE_KEYS(KC_U, KC_S, KC_D){m_unicode(0x220C);}; doesNotcontain
88
89//Logic
90SEQ_THREE_KEYS(KC_U, KC_L, KC_N){m_unicode(0x00AC);}; // Not
91SEQ_THREE_KEYS(KC_U, KC_L, KC_A){m_unicode(0x2227);}; // And
92SEQ_THREE_KEYS(KC_U, KC_L, KC_O){m_unicode(0x2228);}; // Or
93SEQ_THREE_KEYS(KC_U, KC_L, KC_E){m_unicode(0x2203);}; // Exists
94SEQ_THREE_KEYS(KC_U, KC_L, KC_N){m_unicode(0x2204);}; // Notexists
95
96//Greek
97SEQ_THREE_KEYS(KC_U, KC_G, KC_M){m_unicode(0x00B5);}; // Micro
98SEQ_THREE_KEYS(KC_U, KC_G, KC_L){m_unicode(0x03BB);}; // Lamda
99SEQ_THREE_KEYS(KC_U, KC_G, KC_O){m_unicode(0x2126);}; // Omega
100SEQ_THREE_KEYS(KC_U, KC_G, KC_A){m_unicode(0x03B1);}; // Alpha
101SEQ_THREE_KEYS(KC_U, KC_G, KC_B){m_unicode(0x03B2);}; // Beta
102SEQ_THREE_KEYS(KC_U, KC_G, KC_G){m_unicode(0x03B3);}; // Gamma
103SEQ_THREE_KEYS(KC_U, KC_G, KC_P){m_unicode(0x03C0);}; // Pi
104SEQ_THREE_KEYS(KC_U, KC_G, KC_D){m_unicode(0x03B4);}; // Delta
105
106//Zother
107SEQ_THREE_KEYS(KC_U, KC_Z, KC_C){m_unicode(0x2601);}; // Cloud
108SEQ_THREE_KEYS(KC_U, KC_Z, KC_S){m_unicode(0x263C);}; // Sun
109SEQ_THREE_KEYS(KC_U, KC_Z, KC_R){m_unicode(0x2602);}; // Rain
110SEQ_THREE_KEYS(KC_U, KC_Z, KC_K){m_unicode(0x2620);}; // sKull
111SEQ_THREE_KEYS(KC_U, KC_Z, KC_R){m_unicode(0x267A);}; // rEcycle
112SEQ_THREE_KEYS(KC_U, KC_Z, KC_U){m_unicode(0x1F44D);}; // thumbsUp
113SEQ_THREE_KEYS(KC_U, KC_Z, KC_D){m_unicode(0x1F44E);}; // thumbsDown
114SEQ_THREE_KEYS(KC_U, KC_Z, KC_P){m_unicode(0x1F4A9);}; // Poo
diff --git a/keyboards/ergodox/keymaps/bryan/keymap.c b/keyboards/ergodox/keymaps/bryan/keymap.c
new file mode 100644
index 000000000..572cea8cd
--- /dev/null
+++ b/keyboards/ergodox/keymaps/bryan/keymap.c
@@ -0,0 +1,226 @@
1#include "ergodox.h"
2#include "debug.h"
3#include "action_layer.h"
4#include "version.h"
5
6#define BASE 0 // default layer
7#define SYMB 1 // symbols
8#define MDIA 2 // media keys
9
10enum custom_keycodes {
11 PLACEHOLDER = SAFE_RANGE, // can always be here
12 EPRM,
13 VRSN,
14 RGB_SLD
15};
16
17const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
18/* Keymap 0: Basic layer
19 *
20 * ,--------------------------------------------------------. ,--------------------------------------------------------.
21 * | = | 1 | 2 | 3 | 4 | 5 | Cmd,Shft,[ | | Cmd,Shft,] | 6 | 7 | 8 | 9 | 0 | - |
22 * |--------+------+------+------+------+-------------------| |------------+------+------+------+------+------+--------|
23 * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
24 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
25 * |BkSp/Cmd| A | S | D | F | G |------------| |------------| H | J | K | L |; / L2|' / Cmd |
26 * |--------+------+------+------+------+------| Hyper | | Meh |------+------+------+------+------+--------|
27 * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
28 * `--------+------+------+------+------+-------------------' `-------------+------+------+------+------+--------'
29 * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
30 * `----------------------------------' `----------------------------------'
31 * ,-------------. ,-------------.
32 * |Ctrl/Esc|PgUp| | App | LGui |
33 * ,------|------|------| |------+--------+------.
34 * | | | PgDn | | Home | | |
35 * | Space|Backsp|------| |------| Tab |Enter |
36 * | |ace | Esc | | Alt | | |
37 * `--------------------' `----------------------'
38 */
39// If it accepts an argument (i.e, is a function), it doesn't need KC_.
40// Otherwise, it needs KC_*
41[BASE] = KEYMAP( // layer 0 : default
42 // left hand
43 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, M(2),
44 KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
45 GUI_T(KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G,
46 KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
47 LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
48 CTL_T(KC_ESC),KC_PGUP,
49 KC_PGDN,
50 KC_SPC,KC_BSPC, KC_ESC,
51 // right hand
52 M(3), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
53 TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
54 KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
55 MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
56 KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
57
58 ALT_T(KC_APP), KC_LGUI,
59 KC_HOME,
60 KC_LALT,KC_TAB, KC_ENT
61 ),
62/* Keymap 1: Symbol Layer
63 *
64 * ,--------------------------------------------------. ,--------------------------------------------------.
65 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
66 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
67 * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
68 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
69 * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
70 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
71 * | | % | ^ | [ | ] | ~ | | | | <- | 1 | 2 | 3 | \ | |
72 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
73 * | | | | | | | | . | 0 | = | |
74 * `----------------------------------' `----------------------------------'
75 * ,-------------. ,-------------.
76 * | | | | | |
77 * ,------|------|------| |------+------+------.
78 * | | | | | | | |
79 * | | |------| |------| | |
80 * | | | | | | | |
81 * `--------------------' `--------------------'
82 */
83// SYMBOLS
84[SYMB] = KEYMAP(
85 // left hand
86 KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
87 KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
88 KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
89 KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
90 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
91 KC_TRNS,KC_TRNS,
92 KC_TRNS,
93 KC_TRNS,KC_TRNS,KC_TRNS,
94 // right hand
95 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
96 KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
97 KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
98 KC_TRNS, M(1), KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
99 KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
100 KC_TRNS, KC_TRNS,
101 KC_TRNS,
102 KC_TRNS, KC_TRNS, KC_TRNS
103),
104// KC_COMM, KC_MINS
105
106/* Keymap 2: Media and mouse keys
107 *
108 * ,--------------------------------------------------. ,--------------------------------------------------.
109 * | | | | | | | | | | | | | | | |
110 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
111 * | | | | MsUp | | | | | | | | | | | |
112 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
113 * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
114 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
115 * | | | | | | | | | | | | Prev | Next | | |
116 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
117 * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
118 * `----------------------------------' `----------------------------------'
119 * ,-------------. ,-------------.
120 * | | | | | |
121 * ,------|------|------| |------+------+------.
122 * | | | | | | |Brwser|
123 * | | |------| |------| |Back |
124 * | | | | | | | |
125 * `--------------------' `--------------------'
126 */
127// MEDIA AND MOUSE
128[MDIA] = KEYMAP(
129 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
130 KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
131 KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
132 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
133 KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
134 KC_TRNS, KC_TRNS,
135 KC_TRNS,
136 KC_TRNS, KC_TRNS, KC_TRNS,
137 // right hand
138 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
139 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
140 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
141 KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
142 KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
143 KC_TRNS, KC_TRNS,
144 KC_TRNS,
145 KC_TRNS, KC_TRNS, KC_WBAK
146),
147};
148
149const uint16_t PROGMEM fn_actions[] = {
150 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
151};
152
153const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
154{
155 // MACRODOWN only works in this function
156 switch(id) {
157 case 0:
158 if (record->event.pressed) {
159 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
160 }
161 break;
162 case 1:
163 if (record->event.pressed) { // For resetting EEPROM
164 eeconfig_init();
165 }
166 break;
167 }
168 return MACRO_NONE;
169};
170
171bool process_record_user(uint16_t keycode, keyrecord_t *record) {
172 switch (keycode) {
173 // dynamically generate these.
174 case EPRM:
175 if (record->event.pressed) {
176 eeconfig_init();
177 }
178 return false;
179 break;
180 case VRSN:
181 if (record->event.pressed) {
182 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
183 }
184 return false;
185 break;
186 case RGB_SLD:
187 if (record->event.pressed) {
188 #ifdef RGBLIGHT_ENABLE
189 rgblight_mode(1);
190 #endif
191 }
192 return false;
193 break;
194 }
195 return true;
196}
197
198// Runs just one time when the keyboard initializes.
199void matrix_init_user(void) {
200
201};
202
203
204// Runs constantly in the background, in a loop.
205void matrix_scan_user(void) {
206
207 uint8_t layer = biton32(layer_state);
208
209 ergodox_board_led_off();
210 ergodox_right_led_1_off();
211 ergodox_right_led_2_off();
212 ergodox_right_led_3_off();
213 switch (layer) {
214 // TODO: Make this relevant to the ErgoDox EZ.
215 case 1:
216 ergodox_right_led_1_on();
217 break;
218 case 2:
219 ergodox_right_led_2_on();
220 break;
221 default:
222 // none
223 break;
224 }
225
226};
diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png
new file mode 100644
index 000000000..4208c5189
--- /dev/null
+++ b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-1-symbols.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-1-symbols.png
new file mode 100644
index 000000000..ccda70e39
--- /dev/null
+++ b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-1-symbols.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png
new file mode 100644
index 000000000..481e63e32
--- /dev/null
+++ b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png
new file mode 100644
index 000000000..9ebba6734
--- /dev/null
+++ b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/deadcyclo/readme.md b/keyboards/ergodox/keymaps/deadcyclo/readme.md
index 915507440..809dd6eb5 100644
--- a/keyboards/ergodox/keymaps/deadcyclo/readme.md
+++ b/keyboards/ergodox/keymaps/deadcyclo/readme.md
@@ -5,6 +5,32 @@ some common keys might be missing, as this layout is intented to be used on *nix
5with their system. The layout is geared towards avoiding using the rat (mouse for those of you who are 5with their system. The layout is geared towards avoiding using the rat (mouse for those of you who are
6unfamiliar with tiling window managers) as much as possibly. 6unfamiliar with tiling window managers) as much as possibly.
7 7
8# Layouts
9
10All layer images created using [keyboard-layout-editor](http://www.keyboard-layout-editor.com/)
11
12## Base layer
13
14[![Base layer](images/deadcyclo-base-layout.png)](http://www.keyboard-layout-editor.com/#/gists/0321b18620180a3e46c498206eb65366)
15
16## Layer 1 - Symbols
17
18[![Layer 1 - Symbols](images/deadcyclo-layer-1-symbols.png)](http://www.keyboard-layout-editor.com/#/gists/96714e198054c9115bafb5267cc6bc73)
19
20## Layer 2 - Media and Mouse
21
22[![Layer 2 - Media and Mouse](images/deadcyclo-layer-2-media-and-mouse.png)](http://www.keyboard-layout-editor.com/#/gists/824759486e378bcec30784309a7e5731)
23
24## Layer 3 - Navigation
25
26[![Layer 3 - Navigation](images/deadcyclo-layer-3-navigation.png)](http://www.keyboard-layout-editor.com/#/gists/67d9613dcd873c68693d11863d0fd289)
27
8# Changelog 28# Changelog
9 29
10- 02.01.2017 Added delete key on second layer 30- 02.01.2017 Added delete key on second layer
31- 10.01.2017 Added layer images to readme
32
33# TODO
34
35- Add unicode support (direct input and indirect? see algernon layout for examples)
36- Add descriptions below each layer image of any special functions/keys
diff --git a/keyboards/planck/keymaps/vifon/Makefile b/keyboards/planck/keymaps/vifon/Makefile
index 53660a2e7..15a7b736f 100644
--- a/keyboards/planck/keymaps/vifon/Makefile
+++ b/keyboards/planck/keymaps/vifon/Makefile
@@ -1,6 +1,3 @@
1# Please remove if no longer applicable
2$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD)
3$(warning Please disable some options in the Makefile to resolve)
4 1
5 2
6# Build Options 3# Build Options
@@ -10,7 +7,7 @@ $(warning Please disable some options in the Makefile to resolve)
10BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) 7BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
11MOUSEKEY_ENABLE = yes # Mouse keys(+4700) 8MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
12EXTRAKEY_ENABLE = yes # Audio control and System control(+450) 9EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
13CONSOLE_ENABLE = yes # Console for debug(+400) 10CONSOLE_ENABLE = no # Console for debug(+400)
14COMMAND_ENABLE = yes # Commands for debug and configuration 11COMMAND_ENABLE = yes # Commands for debug and configuration
15NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 12NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
16BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality 13BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/planck/keymaps/vifon/config.h b/keyboards/planck/keymaps/vifon/config.h
index 9cb0634fb..a08b37cbe 100644
--- a/keyboards/planck/keymaps/vifon/config.h
+++ b/keyboards/planck/keymaps/vifon/config.h
@@ -81,6 +81,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
81/* prevent the modifiers from being stuck, sacrificing some memory */ 81/* prevent the modifiers from being stuck, sacrificing some memory */
82#define PREVENT_STUCK_MODIFIERS 82#define PREVENT_STUCK_MODIFIERS
83 83
84/* A larger buffer for the dynamic macros as this keymap is not taking
85 * up that much memory.
86 */
87#define DYNAMIC_MACRO_SIZE 256
88
84#ifdef SUBPROJECT_rev3 89#ifdef SUBPROJECT_rev3
85 #include "rev3/config.h" 90 #include "rev3/config.h"
86#endif 91#endif
diff --git a/keyboards/planck/keymaps/vifon/keymap.c b/keyboards/planck/keymaps/vifon/keymap.c
index 80c4a516c..ee0c0ac36 100644
--- a/keyboards/planck/keymaps/vifon/keymap.c
+++ b/keyboards/planck/keymaps/vifon/keymap.c
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
62[_PPG] = { /* Pure Pro: Gaming */ 62[_PPG] = { /* Pure Pro: Gaming */
63 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, 63 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
64 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, 64 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
65 {_______, _______, _______, _______, _______, _______, _______, _______, _______, DF(_RS), _______, _______}, 65 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
66 {_______, _______, XXXXXXX, _______, KM_RS , _______, _______, KM_LW , _______, _______, _______, _______}, 66 {_______, _______, XXXXXXX, _______, KM_RS , _______, _______, KM_LW , _______, _______, _______, _______},
67}, 67},
68[_NM] = { /* Numeric */ 68[_NM] = { /* Numeric */
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
90 {_______, _______, KC_LGUI, KC_LALT, _______, _______, _______, _______, _______, _______, _______, _______} 90 {_______, _______, KC_LGUI, KC_LALT, _______, _______, _______, _______, _______, _______, _______, _______}
91}, 91},
92[_DYN]= { /* special */ 92[_DYN]= { /* special */
93 {_______, DYN_REC_START1, DYN_MACRO_PLAY1, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_PAUS}, 93 {_______, DYN_REC_START1, DYN_MACRO_PLAY1, _______, _______, _______, _______, KC_APP, KC_INS, _______, KC_PSCR, KC_PAUS},
94 {_______, DYN_REC_START2, DYN_MACRO_PLAY2, _______, _______, _______, _______, _______, _______, KC_CAPS, KC_SLCK, KC_NLCK}, 94 {_______, DYN_REC_START2, DYN_MACRO_PLAY2, _______, _______, _______, _______, _______, _______, KC_CAPS, KC_SLCK, KC_NLCK},
95 {KM_SHLK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, 95 {KM_SHLK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
96 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} 96 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
diff --git a/keyboards/tv44/keymaps/default/keymap.c b/keyboards/tv44/keymaps/default/keymap.c
index f3f989f2d..b9fe33a7c 100644
--- a/keyboards/tv44/keymaps/default/keymap.c
+++ b/keyboards/tv44/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
30 [_QW] = { /* Qwerty */ 30 [_QW] = { /* Qwerty */
31 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, 31 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC },
32 {MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1) }, 32 {MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1) },
33 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_F, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) }, 33 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) },
34 {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } 34 {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) }
35 }, 35 },
36 [_DV] = { /* Dvorak */ 36 [_DV] = { /* Dvorak */
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 5cd3c8e78..4853655f9 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -159,6 +159,8 @@ enum quantum_keycodes {
159#define MEH(kc) (kc | QK_LCTL | QK_LSFT | QK_LALT) 159#define MEH(kc) (kc | QK_LCTL | QK_LSFT | QK_LALT)
160#define LCAG(kc) (kc | QK_LCTL | QK_LALT | QK_LGUI) 160#define LCAG(kc) (kc | QK_LCTL | QK_LALT | QK_LGUI)
161#define ALTG(kc) (kc | QK_RCTL | QK_RALT) 161#define ALTG(kc) (kc | QK_RCTL | QK_RALT)
162#define SCMD(kc) (kc | QK_LGUI | QK_LSFT)
163#define SWIN(kc) SCMD(kc)
162 164
163#define MOD_HYPR 0xf 165#define MOD_HYPR 0xf
164#define MOD_MEH 0x7 166#define MOD_MEH 0x7
@@ -293,6 +295,8 @@ enum quantum_keycodes {
293#define MEH_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT), kc) // Meh is a less hyper version of the Hyper key -- doesn't include Win or Cmd, so just alt+shift+ctrl 295#define MEH_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT), kc) // Meh is a less hyper version of the Hyper key -- doesn't include Win or Cmd, so just alt+shift+ctrl
294#define LCAG_T(kc) MT((MOD_LCTL | MOD_LALT | MOD_LGUI), kc) // Left control alt and gui 296#define LCAG_T(kc) MT((MOD_LCTL | MOD_LALT | MOD_LGUI), kc) // Left control alt and gui
295#define ALL_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI), kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/ 297#define ALL_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI), kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/
298#define SCMD_T(kc) MT((MOD_LGUI | MOD_LSFT), kc)
299#define SWIN_T(kc) SCMD_T(kc)
296 300
297// Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap 301// Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap
298#define KC_HYPR HYPR(KC_NO) 302#define KC_HYPR HYPR(KC_NO)
diff --git a/readme.md b/readme.md
index 90584cabc..d33c3ad01 100644
--- a/readme.md
+++ b/readme.md
@@ -31,7 +31,7 @@ The OLKB product firmwares are maintained by [Jack Humbert](https://github.com/j
31 31
32This is not a tiny project. While this is the main readme, there are many other files you might want to consult. Here are some points of interest: 32This is not a tiny project. While this is the main readme, there are many other files you might want to consult. Here are some points of interest:
33 33
34* [**The Wiki**](https://github.com/jackhumbert/qmk_firmware/wiki) - the entirity of the readme has been moved here 34* [**The Wiki**](https://github.com/jackhumbert/qmk_firmware/wiki) - the entirety of the readme has been moved here
35* The readme for your own keyboard: This is found under `keyboards/<your keyboards's name>/`. So for the ErgoDox EZ, it's [here](keyboards/ergodox/ez/); for the Planck, it's [here](keyboards/planck/) and so on. 35* The readme for your own keyboard: This is found under `keyboards/<your keyboards's name>/`. So for the ErgoDox EZ, it's [here](keyboards/ergodox/ez/); for the Planck, it's [here](keyboards/planck/) and so on.
36* The list of possible keycodes you can use in your keymap is actually spread out in a few different places: 36* The list of possible keycodes you can use in your keymap is actually spread out in a few different places:
37 * [doc/keycode.txt](doc/keycode.txt) - an explanation of those same keycodes. 37 * [doc/keycode.txt](doc/keycode.txt) - an explanation of those same keycodes.