aboutsummaryrefslogtreecommitdiff
path: root/users/losinggeneration
diff options
context:
space:
mode:
Diffstat (limited to 'users/losinggeneration')
-rw-r--r--users/losinggeneration/README.md185
-rw-r--r--users/losinggeneration/losinggeneration-common.h74
-rw-r--r--users/losinggeneration/losinggeneration-config.h29
-rw-r--r--users/losinggeneration/losinggeneration-keymap.h352
-rw-r--r--users/losinggeneration/rules.mk16
5 files changed, 656 insertions, 0 deletions
diff --git a/users/losinggeneration/README.md b/users/losinggeneration/README.md
new file mode 100644
index 000000000..852103fc6
--- /dev/null
+++ b/users/losinggeneration/README.md
@@ -0,0 +1,185 @@
1losinggeneration's ortholinear layout
2============================
3
4### Features
5
6- Main layer(s)
7 - The left space bar key has been changed to delete to have backspace
8 & delete on the same main layer.
9 - Adujst is a tap dance with one tap goes to the Adjust layer, second tap
10 goes to the Numpad layer, a third tap goes to the Mouse layer. More taps
11 are an error and disables tapping until you stop and try again.
12 - Ctrl when tapped once & Ctrl+Alt when tapped twice
13 - Left Alt when tapped once & Right Alt when tapped twice.
14 - Left GUI when tapped once & right GUI when tapped twice. This is
15 because I have a compose key on the right GUI key.
16 - Left shift is a one shot modifier.
17 - Enter when tapped Shift when held.
18 - Esc when tapped Ctrl when held.
19- Lower & Raise
20 - Removed ISO ~, ISO |, ISO #, ISO /, Media Next, & Media Play
21 - Added PgUp, PgDn, Home, & End under the home row
22 - Added Mute next to Vol-
23- New layers: Workman, Game, Numpad, & Mouse
24
25## Layouts
26These include the 5x12 layout since it's nearly identical to the 4x12 layout.
27The only difference is the top row is removed for the 4x12 layout.
28
29The Adjust layer keyboard specific, so it's described with the specific
30keyboard.
31
32### Qwerty
33
34```
35 ,-----------------------------------------..-----------------------------------------.
36 | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del |
37 |------+------+------+------+------+------||------+------+------+------+------+------|
38 | Tab | Q | W | E | R | T || Y | U | I | O | P | Bksp |
39 |------+------+------+------+------+------||------+------+------+------+------+------|
40 | Esc | A | S | D | F | G || H | J | K | L | ; | " |
41 |------+------+------+------+------+------||------+------+------+------+------+------|
42 | Shift| Z | X | C | V | B || N | M | , | . | / |Enter |
43 |------+------+------+------+------+------||------+------+------+------+------+------|
44 |Adjust| Ctrl | Alt | GUI |Lower | Bksp ||Space |Raise | Left | Down | Up |Right |
45 `-----------------------------------------'`-----------------------------------------'
46```
47
48### Colemak
49
50```
51 ,-----------------------------------------.,-----------------------------------------.
52 | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del |
53 |------+------+------+------+------+------||------+------+------+------+------+------|
54 | Tab | Q | W | F | P | G || J | L | U | Y | ; | Bksp |
55 |------+------+------+------+------+------||------+------+------+------+------+------|
56 | Esc | A | R | S | T | D || H | N | E | I | O | " |
57 |------+------+------+------+------+------||------+------+------+------+------+------|
58 | Shift| Z | X | C | V | B || K | M | , | . | / |Enter |
59 |------+------+------+------+------+------||------+------+------+------+------+------|
60 |Adjust| Ctrl | Alt | GUI |Lower | Bksp ||Space |Raise | Left | Down | Up |Right |
61 `-----------------------------------------'`-----------------------------------------'
62```
63
64### Workman
65
66```
67 ,-----------------------------------------..-----------------------------------------.
68 | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del |
69 |------+------+------+------+------+------||------+------+------+------+------+------|
70 | Tab | Q | D | R | W | B || J | F | U | P | ; | Bksp |
71 |------+------+------+------+------+------||------+------+------+------+------+------|
72 | Esc | A | S | H | T | G || Y | N | E | O | I | " |
73 |------+------+------+------+------+------||------+------+------+------+------+------|
74 | Shift| Z | X | M | C | V || K | L | , | . | / |Enter |
75 |------+------+------+------+------+------||------+------+------+------+------+------|
76 |Adjust| Ctrl | Alt | GUI |Lower | Bksp ||Space |Raise | Left | Down | Up |Right |
77 `-----------------------------------------'`-----------------------------------------'
78```
79
80### Dvorak
81
82```
83 ,-----------------------------------------..-----------------------------------------.
84 | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del |
85 |------+------+------+------+------+------||------+------+------+------+------+------|
86 | Tab | " | , | . | P | Y || F | G | C | R | L | Bksp |
87 |------+------+------+------+------+------||------+------+------+------+------+------|
88 | Esc | A | O | E | U | I || D | H | T | N | S | / |
89 |------+------+------+------+------+------||------+------+------+------+------+------|
90 | Shift| ; | Q | J | K | X || B | M | W | V | Z |Enter |
91 |------+------+------+------+------+------||------+------+------+------+------+------|
92 |Adjust| Ctrl | Alt | GUI |Lower | Bksp ||Space |Raise | Left | Down | Up |Right |
93 `-----------------------------------------'`-----------------------------------------'
94```
95
96### Game (Qwerty without one shot modifiers & tap dancing)
97
98```
99 ,-----------------------------------------..-----------------------------------------.
100 | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del |
101 |------+------+------+------+------+------||------+------+------+------+------+------|
102 | Tab | Q | W | E | R | T || Y | U | I | O | P | Bksp |
103 |------+------+------+------+------+------||------+------+------+------+------+------|
104 | Esc | A | S | D | F | G || H | J | K | L | ; | " |
105 |------+------+------+------+------+------||------+------+------+------+------+------|
106 | Shift| Z | X | C | V | B || N | M | , | . | / |Enter |
107 |------+------+------+------+------+------||------+------+------+------+------+------|
108 |Adjust| Ctrl | Alt | GUI |Lower |Space ||Space |Raise | Left | Down | Up |Right |
109 `-----------------------------------------'`-----------------------------------------'
110```
111
112### Number pad
113
114```
115 ,-----------------------------------------..-----------------------------------------.
116 | XXX | XXX | XXX | XXX | XXX | XXX || XXX | NLCK | * | / | BKSP | BKSP |
117 |------+------+------+------+------+------||------+------+------+------+------+------|
118 | Tab | XXX | XXX | XXX | XXX | XXX || NLCK | 7 | 8 | 9 | - | BKSP |
119 |------+------+------+------+------+------||------+------+------+------+------+------|
120 | Esc | XXX | XXX | XXX | XXX | XXX || * | 4 | 5 | 6 | + | BKSP |
121 |------+------+------+------+------+------||------+------+------+------+------+------|
122 |Shift | XXX | XXX | XXX | XXX | XXX || / | 1 | 2 | 3 | ENT | XXX |
123 |------+------+------+------+------+------||------+------+------+------+------+------|
124 |Adjust| Ctrl | Alt | GUI | XXX |Space ||Space | 0 | 0 | . | ENT | XXX |
125 `-----------------------------------------''-----------------------------------------'
126```
127
128### Mouse movement
129
130* M is short for Mouse
131* MW is short for Mouse Wheel
132* MB is short for Mouse Button
133* MA is short for Mouse Acceleration
134
135 
136* MB\_1 is the left click
137* MB\_2 is the right click
138* MB\_3 is the middle click
139
140```
141 ,-----------------------------------------..-----------------------------------------.
142 | XXX | XXX | XXX | XXX | XXX | XXX || XXX | XXX | XXX | XXX | XXX | XXX |
143 |------+------+------+------+------+------||------+------+------+------+------+------|
144 | Tab | MB_1 | MB_3 | MB_2 | MB_4 | MB_5 || MA_0 | MB_1 | MB_3 | MB_2 | MB_4 | MB_5 |
145 |------+------+------+------+------+------||------+------+------+------+------+------|
146 | Esc | MW_L | MW_U | MW_D | MW_R | XXX || MA_1 | M_LT | M_UP | M_DN | M_RT | XXX |
147 |------+------+------+------+------+------||------+------+------+------+------+------|
148 |Shift | MA_0 | MA_1 | MA_2 | XXX | XXX || MA_2 | MW_L | MW_U | MW_D | MW_R | XXX |
149 |------+------+------+------+------+------||------+------+------+------+------+------|
150 |Adjust| Ctrl | Alt | GUI | XXX |Space || XXX | XXX | XXX | XXX | XXX | XXX |
151 `-----------------------------------------''-----------------------------------------'
152```
153
154### Lower
155
156```
157 ,-----------------------------------------..-----------------------------------------.
158 | ~ | ! | @ | # | $ | % || ^ | & | * | ( | ) | Del |
159 |------+------+------+------+------+------||------+------+------+------+------+------|
160 | ~ | ! | @ | # | $ | % || ^ | & | * | ( | ) | Bksp |
161 |------+------+------+------+------+------||------+------+------+------+------+------|
162 | Del | F1 | F2 | F3 | F4 | F5 || F6 | _ | + | | \ | | |
163 |------+------+------+------+------+------||------+------+------+------+------+------|
164 | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | ⏹ |
165 |------+------+------+------+------+------||------+------+------+------+------+------|
166 | | | | | | || | | Mute | Vol- | Vol+ | ⏯ |
167 `-----------------------------------------'`-----------------------------------------'
168```
169
170### Raise
171
172```
173 ,-----------------------------------------..-----------------------------------------.
174 | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del |
175 |------+------+------+------+------+------||------+------+------+------+------+------|
176 | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Bksp |
177 |------+------+------+------+------+------||------+------+------+------+------+------|
178 | Del | F1 | F2 | F3 | F4 | F5 || F6 | - | = | [ | ] | \ |
179 |------+------+------+------+------+------||------+------+------+------+------+------|
180 | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | ⏹ |
181 |------+------+------+------+------+------||------+------+------+------+------+------|
182 | | | | | | || | | Mute | Vol- | Vol+ | ⏯ |
183 `-----------------------------------------''-----------------------------------------'
184```
185
diff --git a/users/losinggeneration/losinggeneration-common.h b/users/losinggeneration/losinggeneration-common.h
new file mode 100644
index 000000000..8f5b8b241
--- /dev/null
+++ b/users/losinggeneration/losinggeneration-common.h
@@ -0,0 +1,74 @@
1#ifndef LOSINGGENERATION_COMMON_H
2#define LOSINGGENERATION_COMMON_H
3
4/* Custom keys & combinations to be shorter for keymaps */
5#define KC_LCA LCA(KC_NO)
6/* Fillers to make layering more clear */
7#define _______ KC_TRNS
8#define XXXXXXX KC_NO
9
10#define OSM_LSFT OSM(MOD_LSFT)
11#define TD_CTL TD(TD_CTL_CTLALT)
12#define TD_GUI TD(TD_LGUI_RGUI)
13#define TD_ALT TD(TD_LALT_RALT)
14#define MT_ENT SFT_T(KC_ENT)
15#define MT_ESC CTL_T(KC_ESC)
16
17/* Custom layer movements for keymaps */
18#define TD_ADJ TD(TD_ADJUST)
19#define TO_GAME TO(_GAME)
20#define TO_MS TO(_MOUSE)
21#define TO_NUM TO(_NUMPAD)
22#define MO_ADJ MO(_ADJUST)
23
24/* Mouse keys */
25#define MS_BTN1 KC_MS_BTN1
26#define MS_BTN2 KC_MS_BTN2
27#define MS_BTN3 KC_MS_BTN3
28#define MS_BTN4 KC_MS_BTN4
29#define MS_BTN5 KC_MS_BTN5
30#define MS_LEFT KC_MS_LEFT
31#define MS_DOWN KC_MS_DOWN
32#define MS_UP KC_MS_UP
33#define MS_RGHT KC_MS_RIGHT
34#define MW_LEFT KC_MS_WH_LEFT
35#define MW_DOWN KC_MS_WH_DOWN
36#define MW_UP KC_MS_WH_UP
37#define MW_RGHT KC_MS_WH_RIGHT
38#define MS_ACL0 KC_MS_ACCEL0
39#define MS_ACL1 KC_MS_ACCEL1
40#define MS_ACL2 KC_MS_ACCEL2
41
42/*
43 * This will expand values sent to it to send to the KEYMAP macro so defines
44 * can be used by KEYMAP
45 */
46#define CATMAP(...) KEYMAP(__VA_ARGS__)
47
48/*
49 Each layer gets a name for readability, which is then used in the keymap matrix below.
50 The underscores don't mean anything - you can have a layer called STUFF or any other name.
51 Layer names don't all need to be of the same length, obviously, and you can also skip them
52 entirely and just use numbers.
53*/
54#define _QWERTY 0
55#define _COLEMAK 1
56#define _WORKMAN 2
57#define _DVORAK 3
58#define _GAME 4
59#define _NUMPAD 5
60#define _MOUSE 6
61#define _LOWER 14
62#define _RAISE 15
63#define _ADJUST 16
64
65enum custom_keycodes {
66 QWERTY = SAFE_RANGE,
67 COLEMAK,
68 WORKMAN,
69 DVORAK,
70 LOWER,
71 RAISE,
72};
73
74#endif
diff --git a/users/losinggeneration/losinggeneration-config.h b/users/losinggeneration/losinggeneration-config.h
new file mode 100644
index 000000000..e1719aa9e
--- /dev/null
+++ b/users/losinggeneration/losinggeneration-config.h
@@ -0,0 +1,29 @@
1/*
2Copyright 2017 Danny Nguyen <danny@hexwire.com>
3Copyright 2018 Harley Laue <losinggeneration@gmail.com>
4
5This program is free software: you can redistribute it and/or modify
6it under the terms of the GNU General Public License as published by
7the Free Software Foundation, either version 2 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16long with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#ifndef LOSINGGENERATION_CONFIG_H
20#define LOSINGGENERATION_CONFIG_H
21
22#define MOUSEKEY_DELAY 100
23#define MOUSEKEY_INTERVAL 20
24#define MOUSEKEY_MAX_SPEED 10
25#define MOUSEKEY_TIME_TO_MAX 20
26#define MOUSEKEY_WHEEL_MAX_SPEED 8
27#define MOUSEKEY_WHEEL_TIME_TO_MAX 20
28
29#endif
diff --git a/users/losinggeneration/losinggeneration-keymap.h b/users/losinggeneration/losinggeneration-keymap.h
new file mode 100644
index 000000000..89827bc13
--- /dev/null
+++ b/users/losinggeneration/losinggeneration-keymap.h
@@ -0,0 +1,352 @@
1#ifndef LOSINGGENERATION_KEYMAP_H
2#define LOSINGGENERATION_KEYMAP_H
3
4#include "action_layer.h"
5#include "eeconfig.h"
6#include "losinggeneration-common.h"
7
8/* Tap dance keycodes */
9enum tap_dance_keycodes {
10 TD_CTL_CTLALT = 0,
11 TD_LGUI_RGUI,
12 TD_LALT_RALT,
13 TD_ADJUST,
14};
15
16/*
17 Used to indicate a CTRL should be pressed on one press, or CTRL+ALT on
18 a double tap
19*/
20void dance_ctl_ctlalt_each(qk_tap_dance_state_t *state, void *user_data) {
21 register_code(KC_LCTL);
22 if(state->count > 1) {
23 register_code(KC_LALT);
24 }
25}
26
27/* Used to release CTRL or the double tapped variant CTRL+ALT */
28void dance_ctl_ctlalt_reset(qk_tap_dance_state_t *state, void *user_data) {
29 unregister_code(KC_LCTL);
30 if(state->count > 1) {
31 unregister_code(KC_LALT);
32 }
33}
34
35/*
36 Set ADJUST layer on the first press and off after that.
37 Each is used to make sure ADJUST activates as soon as it's pressed the first
38 time.
39*/
40void dance_adj_each(qk_tap_dance_state_t *state, void *user_data) {
41 if(state->count == 1) {
42 layer_on(_ADJUST);
43 } else {
44 layer_off(_ADJUST);
45 }
46}
47
48/* Set NUMPAD layer on second tap and MOUSE layer on 3rd */
49void dance_adj_finish(qk_tap_dance_state_t *state, void *user_data) {
50 switch(state->count) {
51 case 1: break;
52 case 2:
53 layer_on(_NUMPAD);
54 break;
55 case 3:
56 layer_on(_MOUSE);
57 break;
58 default:
59 reset_tap_dance(state);
60 break;
61 }
62}
63
64/* Turn off any layer that may have been tapped on */
65void dance_adj_reset(qk_tap_dance_state_t *state, void *user_data) {
66 switch(state->count) {
67 case 1:
68 layer_off(_ADJUST);
69 break;
70 case 2:
71 layer_off(_NUMPAD);
72 break;
73 case 3:
74 layer_off(_MOUSE);
75 break;
76 }
77}
78
79qk_tap_dance_action_t tap_dance_actions[] = {
80 [TD_CTL_CTLALT] = ACTION_TAP_DANCE_FN_ADVANCED(dance_ctl_ctlalt_each, NULL, dance_ctl_ctlalt_reset),
81 [TD_LGUI_RGUI] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, KC_RGUI),
82 [TD_LALT_RALT] = ACTION_TAP_DANCE_DOUBLE(KC_LALT, KC_RALT),
83 [TD_ADJUST] = ACTION_TAP_DANCE_FN_ADVANCED(dance_adj_each, dance_adj_finish, dance_adj_reset),
84};
85
86/*
87 * ,-----------------------------------------..-----------------------------------------.
88 * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right |
89 * `-----------------------------------------'`-----------------------------------------'
90 */
91#define BOTTOM_40_ROW \
92 TD_ADJ ,TD_CTL , TD_ALT , TD_GUI , LOWER , KC_DEL , KC_SPC , RAISE , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT
93
94/*
95 * ,-----------------------------------------..-----------------------------------------.
96 * | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | ⏹ |
97 * |------+------+------+------+------+------||------+------+------+------+------+------|
98 * | | | | | | || | | Mute | Vol- | Vol+ | ⏯ |
99 * `-----------------------------------------'`-----------------------------------------'
100 */
101#define BOTTOM_RAISE_LOWER_ROWS \
102 _______, KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PGUP, KC_PGDN, KC_HOME, KC_END , KC_MSTP, \
103 _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY
104
105/*
106 * ,-----------------------------------------..-----------------------------------------.
107 * | Tab | || | Bksp |
108 * `-----------------------------------------'`-----------------------------------------'
109 */
110#define STD_TAB_ROW(...) KC_TAB, __VA_ARGS__, KC_BSPC
111
112/*
113 * ,-----------------------------------------..-----------------------------------------.
114 * | Esc | || |
115 * `-----------------------------------------'`-----------------------------------------'
116 */
117
118#define STD_ESC_ROW(...) KC_ESC, __VA_ARGS__
119
120/*
121 * ,-----------------------------------------..-----------------------------------------.
122 * | Shift| || |Enter |
123 * `-----------------------------------------'`-----------------------------------------'
124 */
125#define STD_LSFT_ROW(...) OSM_LSFT, __VA_ARGS__, MT_ENT
126
127/* Qwerty
128 * ,-----------------------------------------..-----------------------------------------.
129 * | Tab | Q | W | E | R | T || Y | U | I | O | P | Bksp |
130 * |------+------+------+------+------+------||------+------+------+------+------+------|
131 * | Esc | A | S | D | F | G || H | J | K | L | ; | " |
132 * |------+------+------+------+------+------||------+------+------+------+------+------|
133 * | Shift| Z | X | C | V | B || N | M | , | . | / |Enter |
134 * |------+------+------+------+------+------||------+------+------+------+------+------|
135 * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right |
136 * `-----------------------------------------'`-----------------------------------------'
137 */
138#define QWERTY_LAYER \
139 STD_TAB_ROW( KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ), \
140 STD_ESC_ROW( KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT), \
141 STD_LSFT_ROW(KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH), \
142 BOTTOM_40_ROW
143
144/* Colemak
145 * ,-----------------------------------------.,-----------------------------------------.
146 * | Tab | Q | W | F | P | G || J | L | U | Y | ; | Bksp |
147 * |------+------+------+------+------+------||------+------+------+------+------+------|
148 * | Esc | A | R | S | T | D || H | N | E | I | O | " |
149 * |------+------+------+------+------+------||------+------+------+------+------+------|
150 * | Shift| Z | X | C | V | B || K | M | , | . | / |Enter |
151 * |------+------+------+------+------+------||------+------+------+------+------+------|
152 * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right |
153 * `-----------------------------------------'`-----------------------------------------'
154 */
155#define COLEMAK_LAYER \
156 STD_TAB_ROW( KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_SCLN), \
157 STD_ESC_ROW( KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , KC_QUOT), \
158 STD_LSFT_ROW(KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH), \
159 BOTTOM_40_ROW
160
161/* Workman
162 * ,-----------------------------------------..-----------------------------------------.
163 * | Tab | Q | D | R | W | B || J | F | U | P | ; | Bksp |
164 * |------+------+------+------+------+------||------+------+------+------+------+------|
165 * | Esc | A | S | H | T | G || Y | N | E | O | I | " |
166 * |------+------+------+------+------+------||------+------+------+------+------+------|
167 * | Shift| Z | X | M | C | V || K | L | , | . | / |Enter |
168 * |------+------+------+------+------+------||------+------+------+------+------+------|
169 * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right |
170 * `-----------------------------------------'`-----------------------------------------'
171 */
172#define WORKMAN_LAYER \
173 STD_TAB_ROW( KC_Q , KC_D , KC_R , KC_W , KC_B , KC_J , KC_F , KC_U , KC_P , KC_SCLN), \
174 STD_ESC_ROW( KC_A , KC_S , KC_H , KC_T , KC_G , KC_Y , KC_N , KC_E , KC_O , KC_I , KC_QUOT), \
175 STD_LSFT_ROW(KC_Z , KC_X , KC_M , KC_C , KC_V , KC_K , KC_L , KC_COMM, KC_DOT , KC_SLSH), \
176 BOTTOM_40_ROW
177
178/* Dvorak
179 * ,-----------------------------------------..-----------------------------------------.
180 * | Tab | " | , | . | P | Y || F | G | C | R | L | Bksp |
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 * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right |
187 * `-----------------------------------------'`-----------------------------------------'
188 */
189#define DVORAK_LAYER \
190 STD_TAB_ROW( KC_QUOT, KC_COMM, KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L), \
191 STD_ESC_ROW( KC_A , KC_O , KC_E , KC_U , KC_I , KC_D , KC_H , KC_T , KC_N , KC_S , KC_SLSH), \
192 STD_LSFT_ROW(KC_SCLN, KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z), \
193 BOTTOM_40_ROW
194
195/* Game (Qwerty without one shot modifiers & tap dancing)
196 * ,-----------------------------------------..-----------------------------------------.
197 * | Tab | Q | W | E | R | T || Y | U | I | O | P | Bksp |
198 * |------+------+------+------+------+------||------+------+------+------+------+------|
199 * | Esc | A | S | D | F | G || H | J | K | L | ; | " |
200 * |------+------+------+------+------+------||------+------+------+------+------+------|
201 * | Shift| Z | X | C | V | B || N | M | , | . | / |Enter |
202 * |------+------+------+------+------+------||------+------+------+------+------+------|
203 * |Adjust| Ctrl | Alt | GUI |Lower |Space ||Space |Raise | Left | Down | Up |Right |
204 * `-----------------------------------------'`-----------------------------------------'
205 */
206#define GAME_LAYER \
207 KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC, \
208 KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, \
209 KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_ENT , \
210 MO_ADJ , KC_LCTL, KC_LALT, KC_LGUI, LOWER , KC_SPC , KC_SPC , RAISE , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT
211
212/* Number pad
213 * ,-----------------------------------------..-----------------------------------------.
214 * | Tab | XXX | XXX | XXX | XXX | XXX || NLCK | 7 | 8 | 9 | - | BKSP |
215 * |------+------+------+------+------+------||------+------+------+------+------+------|
216 * | Esc | XXX | XXX | XXX | XXX | XXX || * | 4 | 5 | 6 | + | BKSP |
217 * |------+------+------+------+------+------||------+------+------+------+------+------|
218 * |Shift | XXX | XXX | XXX | XXX | XXX || / | 1 | 2 | 3 | ENT | XXX |
219 * |------+------+------+------+------+------||------+------+------+------+------+------|
220 * |Adjust| Ctrl | Alt | GUI | XXX |Space ||Space | 0 | 0 | . | ENT | XXX |
221 * `-----------------------------------------''-----------------------------------------'
222 */
223#define NUMPAD_LAYER \
224 KC_TAB , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NLCK, KC_P7 , KC_P8 , KC_P9 , KC_PMNS, KC_BSPC, \
225 KC_ESC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAST, KC_P4 , KC_P5 , KC_P6 , KC_PPLS, KC_BSPC, \
226 KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P1 , KC_P2 , KC_P3 , KC_PENT, XXXXXXX, \
227 TD_ADJ , TD_CTL , TD_ALT , TD_GUI , XXXXXXX, KC_SPC , KC_SPC , KC_P0 , KC_P0 , KC_PDOT, KC_PENT, XXXXXXX
228
229/* Mouse movement
230 * ,-----------------------------------------..-----------------------------------------.
231 * | Tab | MB_1 | MB_3 | MB_2 | MB_4 | MB_5 || MA_0 | MB_1 | MB_3 | MB_2 | MB_4 | MB_5 |
232 * |------+------+------+------+------+------||------+------+------+------+------+------|
233 * | Esc | MW_L | MW_U | MW_D | MW_R | XXX || MA_1 | M_LT | M_UP | M_DN | M_RT | XXX |
234 * |------+------+------+------+------+------||------+------+------+------+------+------|
235 * |Shift | MA_0 | MA_1 | MA_2 | XXX | XXX || MA_2 | MW_L | MW_U | MW_D | MW_R | XXX |
236 * |------+------+------+------+------+------||------+------+------+------+------+------|
237 * |Adjust| Ctrl | Alt | GUI | XXX |Space || XXX | XXX | XXX | XXX | XXX | XXX |
238 * `-----------------------------------------''-----------------------------------------'
239 */
240#define MOUSE_LAYER \
241 KC_TAB , MS_BTN1, MS_BTN3, MS_BTN2, MS_BTN4, MS_BTN5, MS_ACL0, MS_BTN1, MS_BTN3, MS_BTN2, MS_BTN4, MS_BTN5, \
242 KC_ESC , MW_LEFT, MW_DOWN, MW_UP , MW_RGHT, XXXXXXX, MS_ACL1, MS_LEFT, MS_DOWN, MS_UP , MS_RGHT, XXXXXXX, \
243 KC_LSFT, MS_ACL0, MS_ACL1, MS_ACL2, XXXXXXX, XXXXXXX, MS_ACL2, MW_LEFT, MW_DOWN, MW_UP , MW_RGHT, XXXXXXX, \
244 TD_ADJ , TD_CTL , TD_ALT , TD_GUI , XXXXXXX, KC_SPC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
245
246/* Lower
247 * ,-----------------------------------------..-----------------------------------------.
248 * | ~ | ! | @ | # | $ | % || ^ | & | * | ( | ) | Bksp |
249 * |------+------+------+------+------+------||------+------+------+------+------+------|
250 * | Del | F1 | F2 | F3 | F4 | F5 || F6 | _ | + | | \ | | |
251 * |------+------+------+------+------+------||------+------+------+------+------+------|
252 * | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | ⏹ |
253 * |------+------+------+------+------+------||------+------+------+------+------+------|
254 * | | | | | | || | | Mute | Vol- | Vol+ | ⏯ |
255 * `-----------------------------------------'`-----------------------------------------'
256 */
257#define LOWER_LAYER \
258 KC_TILD, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
259 KC_DEL , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
260 BOTTOM_RAISE_LOWER_ROWS
261
262/* Raise
263 * ,-----------------------------------------..-----------------------------------------.
264 * | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Bksp |
265 * |------+------+------+------+------+------||------+------+------+------+------+------|
266 * | Del | F1 | F2 | F3 | F4 | F5 || F6 | - | = | [ | ] | \ |
267 * |------+------+------+------+------+------||------+------+------+------+------+------|
268 * | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | ⏹ |
269 * |------+------+------+------+------+------||------+------+------+------+------+------|
270 * | | | | | | || | | Mute | Vol- | Vol+ | ⏯ |
271 * `-----------------------------------------''-----------------------------------------'
272 */
273#define RAISE_LAYER \
274 KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, \
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 BOTTOM_RAISE_LOWER_ROWS
277
278#ifdef AUDIO_ENABLE
279float tone_qwerty[][2] = SONG(QWERTY_SOUND);
280float tone_dvorak[][2] = SONG(DVORAK_SOUND);
281float tone_colemak[][2] = SONG(COLEMAK_SOUND);
282float tone_workman[][2] = SONG(PLOVER_SOUND);
283#else
284float tone_qwerty;
285float tone_dvorak;
286float tone_colemak;
287float tone_workman;
288#define PLAY_SONG(tone)
289#endif
290
291void persistent_default_layer_set(uint16_t default_layer) {
292 layer_state_set(default_layer);
293 eeconfig_update_default_layer(default_layer);
294 default_layer_set(default_layer);
295}
296
297bool process_record_user(uint16_t keycode, keyrecord_t *record) {
298 switch (keycode) {
299 case QWERTY:
300 if (record->event.pressed) {
301 PLAY_SONG(tone_qwerty);
302 persistent_default_layer_set(1UL<<_QWERTY);
303 }
304 return false;
305 break;
306 case COLEMAK:
307 if (record->event.pressed) {
308 PLAY_SONG(tone_colemak);
309 persistent_default_layer_set(1UL<<_COLEMAK);
310 }
311 return false;
312 break;
313 case WORKMAN:
314 if (record->event.pressed) {
315 PLAY_SONG(tone_workman);
316 persistent_default_layer_set(1UL<<_WORKMAN);
317 }
318 return false;
319 break;
320 case DVORAK:
321 if (record->event.pressed) {
322 PLAY_SONG(tone_dvorak);
323 persistent_default_layer_set(1UL<<_DVORAK);
324 }
325 return false;
326 break;
327 case LOWER:
328 if (record->event.pressed) {
329 layer_on(_LOWER);
330 update_tri_layer(_LOWER, _RAISE, _ADJUST);
331 } else {
332 layer_off(_LOWER);
333 update_tri_layer(_LOWER, _RAISE, _ADJUST);
334 }
335 return false;
336 break;
337 case RAISE:
338 if (record->event.pressed) {
339 layer_on(_RAISE);
340 update_tri_layer(_LOWER, _RAISE, _ADJUST);
341 } else {
342 layer_off(_RAISE);
343 update_tri_layer(_LOWER, _RAISE, _ADJUST);
344 }
345 return false;
346 break;
347 }
348
349 return true;
350}
351
352#endif
diff --git a/users/losinggeneration/rules.mk b/users/losinggeneration/rules.mk
new file mode 100644
index 000000000..75277116b
--- /dev/null
+++ b/users/losinggeneration/rules.mk
@@ -0,0 +1,16 @@
1# Build Options
2# Only enable things here that are generic to all keyboards. A yes or no here
3# will override keyboard/keymap specific values
4#
5#BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6#COMMAND_ENABLE = no # Commands for debug and configuration
7#CONSOLE_ENABLE = no # Console for debug(+400)
8EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
9MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
10#NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11TAP_DANCE_ENABLE = yes # Enable tap dancing
12#UNICODE_ENABLE = no # Unicode
13
14ifndef QUANTUM_DIR
15 include ../../../../Makefile
16endif