summaryrefslogtreecommitdiff
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 0000000000..852103fc69
--- /dev/null
+++ b/users/losinggeneration/README.md
@@ -0,0 +1,185 @@
+losinggeneration's ortholinear layout
+============================
+
+### Features
+
+- Main layer(s)
+ - The left space bar key has been changed to delete to have backspace
+ & delete on the same main layer.
+ - Adujst is a tap dance with one tap goes to the Adjust layer, second tap
+ goes to the Numpad layer, a third tap goes to the Mouse layer. More taps
+ are an error and disables tapping until you stop and try again.
+ - Ctrl when tapped once & Ctrl+Alt when tapped twice
+ - Left Alt when tapped once & Right Alt when tapped twice.
+ - Left GUI when tapped once & right GUI when tapped twice. This is
+ because I have a compose key on the right GUI key.
+ - Left shift is a one shot modifier.
+ - Enter when tapped Shift when held.
+ - Esc when tapped Ctrl when held.
+- Lower & Raise
+ - Removed ISO ~, ISO |, ISO #, ISO /, Media Next, & Media Play
+ - Added PgUp, PgDn, Home, & End under the home row
+ - Added Mute next to Vol-
+- New layers: Workman, Game, Numpad, & Mouse
+
+## Layouts
+These include the 5x12 layout since it's nearly identical to the 4x12 layout.
+The only difference is the top row is removed for the 4x12 layout.
+
+The Adjust layer keyboard specific, so it's described with the specific
+keyboard.
+
+### Qwerty
+
+```
+ ,-----------------------------------------..-----------------------------------------.
+ | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Tab | Q | W | E | R | T || Y | U | I | O | P | Bksp |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Esc | A | S | D | F | G || H | J | K | L | ; | " |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Shift| Z | X | C | V | B || N | M | , | . | / |Enter |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ |Adjust| Ctrl | Alt | GUI |Lower | Bksp ||Space |Raise | Left | Down | Up |Right |
+ `-----------------------------------------'`-----------------------------------------'
+```
+
+### Colemak
+
+```
+ ,-----------------------------------------.,-----------------------------------------.
+ | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Tab | Q | W | F | P | G || J | L | U | Y | ; | Bksp |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Esc | A | R | S | T | D || H | N | E | I | O | " |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Shift| Z | X | C | V | B || K | M | , | . | / |Enter |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ |Adjust| Ctrl | Alt | GUI |Lower | Bksp ||Space |Raise | Left | Down | Up |Right |
+ `-----------------------------------------'`-----------------------------------------'
+```
+
+### Workman
+
+```
+ ,-----------------------------------------..-----------------------------------------.
+ | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Tab | Q | D | R | W | B || J | F | U | P | ; | Bksp |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Esc | A | S | H | T | G || Y | N | E | O | I | " |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Shift| Z | X | M | C | V || K | L | , | . | / |Enter |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ |Adjust| Ctrl | Alt | GUI |Lower | Bksp ||Space |Raise | Left | Down | Up |Right |
+ `-----------------------------------------'`-----------------------------------------'
+```
+
+### Dvorak
+
+```
+ ,-----------------------------------------..-----------------------------------------.
+ | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Tab | " | , | . | P | Y || F | G | C | R | L | Bksp |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Esc | A | O | E | U | I || D | H | T | N | S | / |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Shift| ; | Q | J | K | X || B | M | W | V | Z |Enter |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ |Adjust| Ctrl | Alt | GUI |Lower | Bksp ||Space |Raise | Left | Down | Up |Right |
+ `-----------------------------------------'`-----------------------------------------'
+```
+
+### Game (Qwerty without one shot modifiers & tap dancing)
+
+```
+ ,-----------------------------------------..-----------------------------------------.
+ | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Tab | Q | W | E | R | T || Y | U | I | O | P | Bksp |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Esc | A | S | D | F | G || H | J | K | L | ; | " |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Shift| Z | X | C | V | B || N | M | , | . | / |Enter |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ |Adjust| Ctrl | Alt | GUI |Lower |Space ||Space |Raise | Left | Down | Up |Right |
+ `-----------------------------------------'`-----------------------------------------'
+```
+
+### Number pad
+
+```
+ ,-----------------------------------------..-----------------------------------------.
+ | XXX | XXX | XXX | XXX | XXX | XXX || XXX | NLCK | * | / | BKSP | BKSP |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Tab | XXX | XXX | XXX | XXX | XXX || NLCK | 7 | 8 | 9 | - | BKSP |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Esc | XXX | XXX | XXX | XXX | XXX || * | 4 | 5 | 6 | + | BKSP |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ |Shift | XXX | XXX | XXX | XXX | XXX || / | 1 | 2 | 3 | ENT | XXX |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ |Adjust| Ctrl | Alt | GUI | XXX |Space ||Space | 0 | 0 | . | ENT | XXX |
+ `-----------------------------------------''-----------------------------------------'
+```
+
+### Mouse movement
+
+* M is short for Mouse
+* MW is short for Mouse Wheel
+* MB is short for Mouse Button
+* MA is short for Mouse Acceleration
+
+ 
+* MB\_1 is the left click
+* MB\_2 is the right click
+* MB\_3 is the middle click
+
+```
+ ,-----------------------------------------..-----------------------------------------.
+ | XXX | XXX | XXX | XXX | XXX | XXX || XXX | XXX | XXX | XXX | XXX | XXX |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Tab | MB_1 | MB_3 | MB_2 | MB_4 | MB_5 || MA_0 | MB_1 | MB_3 | MB_2 | MB_4 | MB_5 |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Esc | MW_L | MW_U | MW_D | MW_R | XXX || MA_1 | M_LT | M_UP | M_DN | M_RT | XXX |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ |Shift | MA_0 | MA_1 | MA_2 | XXX | XXX || MA_2 | MW_L | MW_U | MW_D | MW_R | XXX |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ |Adjust| Ctrl | Alt | GUI | XXX |Space || XXX | XXX | XXX | XXX | XXX | XXX |
+ `-----------------------------------------''-----------------------------------------'
+```
+
+### Lower
+
+```
+ ,-----------------------------------------..-----------------------------------------.
+ | ~ | ! | @ | # | $ | % || ^ | & | * | ( | ) | Del |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | ~ | ! | @ | # | $ | % || ^ | & | * | ( | ) | Bksp |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Del | F1 | F2 | F3 | F4 | F5 || F6 | _ | + | | \ | | |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | ⏹ |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | | | | | | || | | Mute | Vol- | Vol+ | ⏯ |
+ `-----------------------------------------'`-----------------------------------------'
+```
+
+### Raise
+
+```
+ ,-----------------------------------------..-----------------------------------------.
+ | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Del |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Bksp |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | Del | F1 | F2 | F3 | F4 | F5 || F6 | - | = | [ | ] | \ |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | ⏹ |
+ |------+------+------+------+------+------||------+------+------+------+------+------|
+ | | | | | | || | | Mute | Vol- | Vol+ | ⏯ |
+ `-----------------------------------------''-----------------------------------------'
+```
+
diff --git a/users/losinggeneration/losinggeneration-common.h b/users/losinggeneration/losinggeneration-common.h
new file mode 100644
index 0000000000..8f5b8b2416
--- /dev/null
+++ b/users/losinggeneration/losinggeneration-common.h
@@ -0,0 +1,74 @@
+#ifndef LOSINGGENERATION_COMMON_H
+#define LOSINGGENERATION_COMMON_H
+
+/* Custom keys & combinations to be shorter for keymaps */
+#define KC_LCA LCA(KC_NO)
+/* Fillers to make layering more clear */
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+#define OSM_LSFT OSM(MOD_LSFT)
+#define TD_CTL TD(TD_CTL_CTLALT)
+#define TD_GUI TD(TD_LGUI_RGUI)
+#define TD_ALT TD(TD_LALT_RALT)
+#define MT_ENT SFT_T(KC_ENT)
+#define MT_ESC CTL_T(KC_ESC)
+
+/* Custom layer movements for keymaps */
+#define TD_ADJ TD(TD_ADJUST)
+#define TO_GAME TO(_GAME)
+#define TO_MS TO(_MOUSE)
+#define TO_NUM TO(_NUMPAD)
+#define MO_ADJ MO(_ADJUST)
+
+/* Mouse keys */
+#define MS_BTN1 KC_MS_BTN1
+#define MS_BTN2 KC_MS_BTN2
+#define MS_BTN3 KC_MS_BTN3
+#define MS_BTN4 KC_MS_BTN4
+#define MS_BTN5 KC_MS_BTN5
+#define MS_LEFT KC_MS_LEFT
+#define MS_DOWN KC_MS_DOWN
+#define MS_UP KC_MS_UP
+#define MS_RGHT KC_MS_RIGHT
+#define MW_LEFT KC_MS_WH_LEFT
+#define MW_DOWN KC_MS_WH_DOWN
+#define MW_UP KC_MS_WH_UP
+#define MW_RGHT KC_MS_WH_RIGHT
+#define MS_ACL0 KC_MS_ACCEL0
+#define MS_ACL1 KC_MS_ACCEL1
+#define MS_ACL2 KC_MS_ACCEL2
+
+/*
+ * This will expand values sent to it to send to the KEYMAP macro so defines
+ * can be used by KEYMAP
+ */
+#define CATMAP(...) KEYMAP(__VA_ARGS__)
+
+/*
+ Each layer gets a name for readability, which is then used in the keymap matrix below.
+ The underscores don't mean anything - you can have a layer called STUFF or any other name.
+ Layer names don't all need to be of the same length, obviously, and you can also skip them
+ entirely and just use numbers.
+*/
+#define _QWERTY 0
+#define _COLEMAK 1
+#define _WORKMAN 2
+#define _DVORAK 3
+#define _GAME 4
+#define _NUMPAD 5
+#define _MOUSE 6
+#define _LOWER 14
+#define _RAISE 15
+#define _ADJUST 16
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ WORKMAN,
+ DVORAK,
+ LOWER,
+ RAISE,
+};
+
+#endif
diff --git a/users/losinggeneration/losinggeneration-config.h b/users/losinggeneration/losinggeneration-config.h
new file mode 100644
index 0000000000..e1719aa9e7
--- /dev/null
+++ b/users/losinggeneration/losinggeneration-config.h
@@ -0,0 +1,29 @@
+/*
+Copyright 2017 Danny Nguyen <danny@hexwire.com>
+Copyright 2018 Harley Laue <losinggeneration@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+long with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef LOSINGGENERATION_CONFIG_H
+#define LOSINGGENERATION_CONFIG_H
+
+#define MOUSEKEY_DELAY 100
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_MAX_SPEED 10
+#define MOUSEKEY_TIME_TO_MAX 20
+#define MOUSEKEY_WHEEL_MAX_SPEED 8
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 20
+
+#endif
diff --git a/users/losinggeneration/losinggeneration-keymap.h b/users/losinggeneration/losinggeneration-keymap.h
new file mode 100644
index 0000000000..89827bc131
--- /dev/null
+++ b/users/losinggeneration/losinggeneration-keymap.h
@@ -0,0 +1,352 @@
+#ifndef LOSINGGENERATION_KEYMAP_H
+#define LOSINGGENERATION_KEYMAP_H
+
+#include "action_layer.h"
+#include "eeconfig.h"
+#include "losinggeneration-common.h"
+
+/* Tap dance keycodes */
+enum tap_dance_keycodes {
+ TD_CTL_CTLALT = 0,
+ TD_LGUI_RGUI,
+ TD_LALT_RALT,
+ TD_ADJUST,
+};
+
+/*
+ Used to indicate a CTRL should be pressed on one press, or CTRL+ALT on
+ a double tap
+*/
+void dance_ctl_ctlalt_each(qk_tap_dance_state_t *state, void *user_data) {
+ register_code(KC_LCTL);
+ if(state->count > 1) {
+ register_code(KC_LALT);
+ }
+}
+
+/* Used to release CTRL or the double tapped variant CTRL+ALT */
+void dance_ctl_ctlalt_reset(qk_tap_dance_state_t *state, void *user_data) {
+ unregister_code(KC_LCTL);
+ if(state->count > 1) {
+ unregister_code(KC_LALT);
+ }
+}
+
+/*
+ Set ADJUST layer on the first press and off after that.
+ Each is used to make sure ADJUST activates as soon as it's pressed the first
+ time.
+*/
+void dance_adj_each(qk_tap_dance_state_t *state, void *user_data) {
+ if(state->count == 1) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+}
+
+/* Set NUMPAD layer on second tap and MOUSE layer on 3rd */
+void dance_adj_finish(qk_tap_dance_state_t *state, void *user_data) {
+ switch(state->count) {
+ case 1: break;
+ case 2:
+ layer_on(_NUMPAD);
+ break;
+ case 3:
+ layer_on(_MOUSE);
+ break;
+ default:
+ reset_tap_dance(state);
+ break;
+ }
+}
+
+/* Turn off any layer that may have been tapped on */
+void dance_adj_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch(state->count) {
+ case 1:
+ layer_off(_ADJUST);
+ break;
+ case 2:
+ layer_off(_NUMPAD);
+ break;
+ case 3:
+ layer_off(_MOUSE);
+ break;
+ }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_CTL_CTLALT] = ACTION_TAP_DANCE_FN_ADVANCED(dance_ctl_ctlalt_each, NULL, dance_ctl_ctlalt_reset),
+ [TD_LGUI_RGUI] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, KC_RGUI),
+ [TD_LALT_RALT] = ACTION_TAP_DANCE_DOUBLE(KC_LALT, KC_RALT),
+ [TD_ADJUST] = ACTION_TAP_DANCE_FN_ADVANCED(dance_adj_each, dance_adj_finish, dance_adj_reset),
+};
+
+/*
+ * ,-----------------------------------------..-----------------------------------------.
+ * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------'`-----------------------------------------'
+ */
+#define BOTTOM_40_ROW \
+ TD_ADJ ,TD_CTL , TD_ALT , TD_GUI , LOWER , KC_DEL , KC_SPC , RAISE , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT
+
+/*
+ * ,-----------------------------------------..-----------------------------------------.
+ * | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | ⏹ |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | | | | | | || | | Mute | Vol- | Vol+ | ⏯ |
+ * `-----------------------------------------'`-----------------------------------------'
+ */
+#define BOTTOM_RAISE_LOWER_ROWS \
+ _______, KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PGUP, KC_PGDN, KC_HOME, KC_END , KC_MSTP, \
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY
+
+/*
+ * ,-----------------------------------------..-----------------------------------------.
+ * | Tab | || | Bksp |
+ * `-----------------------------------------'`-----------------------------------------'
+ */
+#define STD_TAB_ROW(...) KC_TAB, __VA_ARGS__, KC_BSPC
+
+/*
+ * ,-----------------------------------------..-----------------------------------------.
+ * | Esc | || |
+ * `-----------------------------------------'`-----------------------------------------'
+ */
+
+#define STD_ESC_ROW(...) KC_ESC, __VA_ARGS__
+
+/*
+ * ,-----------------------------------------..-----------------------------------------.
+ * | Shift| || |Enter |
+ * `-----------------------------------------'`-----------------------------------------'
+ */
+#define STD_LSFT_ROW(...) OSM_LSFT, __VA_ARGS__, MT_ENT
+
+/* Qwerty
+ * ,-----------------------------------------..-----------------------------------------.
+ * | Tab | Q | W | E | R | T || Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G || H | J | K | L | ; | " |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B || N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------'`-----------------------------------------'
+ */
+#define QWERTY_LAYER \
+ STD_TAB_ROW( KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ), \
+ 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), \
+ STD_LSFT_ROW(KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH), \
+ BOTTOM_40_ROW
+
+/* Colemak
+ * ,-----------------------------------------.,-----------------------------------------.
+ * | Tab | Q | W | F | P | G || J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D || H | N | E | I | O | " |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B || K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------'`-----------------------------------------'
+ */
+#define COLEMAK_LAYER \
+ STD_TAB_ROW( KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_SCLN), \
+ 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), \
+ STD_LSFT_ROW(KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH), \
+ BOTTOM_40_ROW
+
+/* Workman
+ * ,-----------------------------------------..-----------------------------------------.
+ * | Tab | Q | D | R | W | B || J | F | U | P | ; | Bksp |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Esc | A | S | H | T | G || Y | N | E | O | I | " |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Shift| Z | X | M | C | V || K | L | , | . | / |Enter |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------'`-----------------------------------------'
+ */
+#define WORKMAN_LAYER \
+ STD_TAB_ROW( KC_Q , KC_D , KC_R , KC_W , KC_B , KC_J , KC_F , KC_U , KC_P , KC_SCLN), \
+ 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), \
+ STD_LSFT_ROW(KC_Z , KC_X , KC_M , KC_C , KC_V , KC_K , KC_L , KC_COMM, KC_DOT , KC_SLSH), \
+ BOTTOM_40_ROW
+
+/* Dvorak
+ * ,-----------------------------------------..-----------------------------------------.
+ * | Tab | " | , | . | P | Y || F | G | C | R | L | Bksp |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I || D | H | T | N | S | / |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X || B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt | GUI |Lower | Del ||Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------'`-----------------------------------------'
+ */
+#define DVORAK_LAYER \
+ STD_TAB_ROW( KC_QUOT, KC_COMM, KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L), \
+ 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), \
+ STD_LSFT_ROW(KC_SCLN, KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z), \
+ BOTTOM_40_ROW
+
+/* Game (Qwerty without one shot modifiers & tap dancing)
+ * ,-----------------------------------------..-----------------------------------------.
+ * | Tab | Q | W | E | R | T || Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G || H | J | K | L | ; | " |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B || N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt | GUI |Lower |Space ||Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------'`-----------------------------------------'
+ */
+#define GAME_LAYER \
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC, \
+ KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, \
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_ENT , \
+ MO_ADJ , KC_LCTL, KC_LALT, KC_LGUI, LOWER , KC_SPC , KC_SPC , RAISE , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT
+
+/* Number pad
+ * ,-----------------------------------------..-----------------------------------------.
+ * | Tab | XXX | XXX | XXX | XXX | XXX || NLCK | 7 | 8 | 9 | - | BKSP |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Esc | XXX | XXX | XXX | XXX | XXX || * | 4 | 5 | 6 | + | BKSP |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * |Shift | XXX | XXX | XXX | XXX | XXX || / | 1 | 2 | 3 | ENT | XXX |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt | GUI | XXX |Space ||Space | 0 | 0 | . | ENT | XXX |
+ * `-----------------------------------------''-----------------------------------------'
+ */
+#define NUMPAD_LAYER \
+ KC_TAB , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NLCK, KC_P7 , KC_P8 , KC_P9 , KC_PMNS, KC_BSPC, \
+ KC_ESC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAST, KC_P4 , KC_P5 , KC_P6 , KC_PPLS, KC_BSPC, \
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P1 , KC_P2 , KC_P3 , KC_PENT, XXXXXXX, \
+ TD_ADJ , TD_CTL , TD_ALT , TD_GUI , XXXXXXX, KC_SPC , KC_SPC , KC_P0 , KC_P0 , KC_PDOT, KC_PENT, XXXXXXX
+
+/* Mouse movement
+ * ,-----------------------------------------..-----------------------------------------.
+ * | Tab | MB_1 | MB_3 | MB_2 | MB_4 | MB_5 || MA_0 | MB_1 | MB_3 | MB_2 | MB_4 | MB_5 |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Esc | MW_L | MW_U | MW_D | MW_R | XXX || MA_1 | M_LT | M_UP | M_DN | M_RT | XXX |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * |Shift | MA_0 | MA_1 | MA_2 | XXX | XXX || MA_2 | MW_L | MW_U | MW_D | MW_R | XXX |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt | GUI | XXX |Space || XXX | XXX | XXX | XXX | XXX | XXX |
+ * `-----------------------------------------''-----------------------------------------'
+ */
+#define MOUSE_LAYER \
+ KC_TAB , MS_BTN1, MS_BTN3, MS_BTN2, MS_BTN4, MS_BTN5, MS_ACL0, MS_BTN1, MS_BTN3, MS_BTN2, MS_BTN4, MS_BTN5, \
+ KC_ESC , MW_LEFT, MW_DOWN, MW_UP , MW_RGHT, XXXXXXX, MS_ACL1, MS_LEFT, MS_DOWN, MS_UP , MS_RGHT, XXXXXXX, \
+ KC_LSFT, MS_ACL0, MS_ACL1, MS_ACL2, XXXXXXX, XXXXXXX, MS_ACL2, MW_LEFT, MW_DOWN, MW_UP , MW_RGHT, XXXXXXX, \
+ TD_ADJ , TD_CTL , TD_ALT , TD_GUI , XXXXXXX, KC_SPC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+
+/* Lower
+ * ,-----------------------------------------..-----------------------------------------.
+ * | ~ | ! | @ | # | $ | % || ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 || F6 | _ | + | | \ | | |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | ⏹ |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | | | | | | || | | Mute | Vol- | Vol+ | ⏯ |
+ * `-----------------------------------------'`-----------------------------------------'
+ */
+#define LOWER_LAYER \
+ KC_TILD, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
+ KC_DEL , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
+ BOTTOM_RAISE_LOWER_ROWS
+
+/* Raise
+ * ,-----------------------------------------..-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 || F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 || F12 | PgUp | PgDn | Home | End | ⏹ |
+ * |------+------+------+------+------+------||------+------+------+------+------+------|
+ * | | | | | | || | | Mute | Vol- | Vol+ | ⏯ |
+ * `-----------------------------------------''-----------------------------------------'
+ */
+#define RAISE_LAYER \
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, \
+ KC_DEL , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_BSLS, \
+ BOTTOM_RAISE_LOWER_ROWS
+
+#ifdef AUDIO_ENABLE
+float tone_qwerty[][2] = SONG(QWERTY_SOUND);
+float tone_dvorak[][2] = SONG(DVORAK_SOUND);
+float tone_colemak[][2] = SONG(COLEMAK_SOUND);
+float tone_workman[][2] = SONG(PLOVER_SOUND);
+#else
+float tone_qwerty;
+float tone_dvorak;
+float tone_colemak;
+float tone_workman;
+#define PLAY_SONG(tone)
+#endif
+
+void persistent_default_layer_set(uint16_t default_layer) {
+ layer_state_set(default_layer);
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ PLAY_SONG(tone_qwerty);
+ persistent_default_layer_set(1UL<<_QWERTY);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ PLAY_SONG(tone_colemak);
+ persistent_default_layer_set(1UL<<_COLEMAK);
+ }
+ return false;
+ break;
+ case WORKMAN:
+ if (record->event.pressed) {
+ PLAY_SONG(tone_workman);
+ persistent_default_layer_set(1UL<<_WORKMAN);
+ }
+ return false;
+ break;
+ case DVORAK:
+ if (record->event.pressed) {
+ PLAY_SONG(tone_dvorak);
+ persistent_default_layer_set(1UL<<_DVORAK);
+ }
+ return false;
+ break;
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ }
+
+ return true;
+}
+
+#endif
diff --git a/users/losinggeneration/rules.mk b/users/losinggeneration/rules.mk
new file mode 100644
index 0000000000..75277116b2
--- /dev/null
+++ b/users/losinggeneration/rules.mk
@@ -0,0 +1,16 @@
+# Build Options
+# Only enable things here that are generic to all keyboards. A yes or no here
+# will override keyboard/keymap specific values
+#
+#BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+#COMMAND_ENABLE = no # Commands for debug and configuration
+#CONSOLE_ENABLE = no # Console for debug(+400)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+#NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+TAP_DANCE_ENABLE = yes # Enable tap dancing
+#UNICODE_ENABLE = no # Unicode
+
+ifndef QUANTUM_DIR
+ include ../../../../Makefile
+endif