summaryrefslogtreecommitdiffstats
path: root/keyboards/planck
diff options
context:
space:
mode:
authordbroqua <dbroqua@mousur.org>2016-09-19 13:26:18 +0200
committerdbroqua <dbroqua@mousur.org>2016-09-19 13:26:18 +0200
commit21b6e4c1f3225fed55926a4e6be2888d17fe5fd2 (patch)
tree63504b528703a65c4addda6658a701e405bba44c /keyboards/planck
parent94af0194ddfe8f8a3069c926170d8995de5c1781 (diff)
parentc438a2a265b366c8e4594ce561feb896018983f0 (diff)
downloadqmk_firmware-21b6e4c1f3225fed55926a4e6be2888d17fe5fd2.tar.gz
qmk_firmware-21b6e4c1f3225fed55926a4e6be2888d17fe5fd2.tar.xz
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'keyboards/planck')
-rw-r--r--keyboards/planck/keymaps/bone2planck/config.h7
-rw-r--r--keyboards/planck/keymaps/bone2planck/keymap.c51
-rw-r--r--keyboards/planck/keymaps/bone2planck/readme.md8
-rw-r--r--keyboards/planck/keymaps/callum/keymap.c23
-rw-r--r--keyboards/planck/keymaps/callum/readme.md23
-rw-r--r--keyboards/planck/keymaps/cbbrowne/config.h5
-rw-r--r--keyboards/planck/keymaps/cbbrowne/keymap.c18
-rw-r--r--keyboards/planck/keymaps/cbbrowne/readme.md30
-rw-r--r--keyboards/planck/keymaps/jhenahan/Makefile25
-rw-r--r--keyboards/planck/keymaps/jhenahan/config.h9
-rw-r--r--keyboards/planck/keymaps/jhenahan/keymap.c314
-rw-r--r--keyboards/planck/keymaps/jhenahan/readme.md41
-rw-r--r--keyboards/planck/keymaps/pvc/Makefile6
-rw-r--r--keyboards/planck/keymaps/pvc/config.h21
-rw-r--r--keyboards/planck/keymaps/pvc/keymap.c509
-rw-r--r--keyboards/planck/keymaps/sgoodwin/Makefile25
-rw-r--r--keyboards/planck/keymaps/sgoodwin/keymap.c233
-rw-r--r--keyboards/planck/keymaps/sgoodwin/readme.md10
-rw-r--r--keyboards/planck/keymaps/tong92/Makefile62
-rw-r--r--keyboards/planck/keymaps/tong92/keymap.c146
-rw-r--r--keyboards/planck/keymaps/tong92/readme.md66
21 files changed, 1365 insertions, 267 deletions
diff --git a/keyboards/planck/keymaps/bone2planck/config.h b/keyboards/planck/keymaps/bone2planck/config.h
new file mode 100644
index 000000000..60aff6db0
--- /dev/null
+++ b/keyboards/planck/keymaps/bone2planck/config.h
@@ -0,0 +1,7 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+#endif
+
+#include "../../config.h"
+
+#define PREVENT_STUCK_MODIFIERS \ No newline at end of file
diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c
index 66cf9386d..69d164b8c 100644
--- a/keyboards/planck/keymaps/bone2planck/keymap.c
+++ b/keyboards/planck/keymaps/bone2planck/keymap.c
@@ -4,6 +4,13 @@
#endif
#include "keymap_german.h"
+// for intellisense, has to be commented for building
+/*
+#include "..\..\..\..\quantum\keymap_extras\keymap_german.h"
+#include "..\..\..\..\quantum\keymap_common.h"
+#include "..\..\..\..\tmk_core\common\keycode.h"
+*/
+
#define _______ KC_TRNS
/* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout.
@@ -24,14 +31,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
-* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | | Ctrl | Esc |
+* | Ctrl | GUI | Alt | M4 | M2 | Space | M2 | M4 | Alt | Esc | Ctrl |
* `-----------------------------------------------------------------------------------'
*/
[0] = {
- { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS },
- { LT(1,KC_TAB), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, LT(1,KC_ENT) },
- { KC_LSFT, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, KC_LSFT },
- { KC_LGUI, KC_LCTL, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4), KC_NO, KC_RCTL, KC_ESC }
+ { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS },
+ { LT(1,KC_TAB), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, LT(1,KC_ENT) },
+ { KC_LSFT, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, KC_LSFT },
+ { KC_LCTL, KC_RGUI, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4), KC_RALT, KC_ESC, KC_RCTL }
},
/* M1 Special Characters
@@ -43,7 +50,7 @@ very ergonomic placement for coding
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| # | $ | | | ~ | € | + | % | " | ' | ; |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
-* | GUI | Ctrl | Alt | M4 | M2 | Space | M2 | M4 | | Ctrl | Esc |
+* | Ctrl | GUI | Alt | M4 | M2 | Space | M2 | M4 | Alt | Esc | Ctrl |
* `-----------------------------------------------------------------------------------'
*/
[1] = {
@@ -56,37 +63,37 @@ very ergonomic placement for coding
/* Navigation & Number Blocks
very easy to get used to & intuituve placement
* ,-----------------------------------------------------------------------------------.
-* | | PgUp | Bksp | Up | DEL | PgDn | | 7 | 8 | 9 | | |
+* | | PgUp | Bksp | Up | DEL | PgDn | | 7 | 8 | 9 | | Ins |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Tab | Home | Lft | Down | Right| End | . | 4 | 5 | 6 | , | Enter|
* |------+------+------+------+------+------|------+------+------+------+------+------|
-* | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift |
+* | Shift| | Tab | | Enter| | 0 | 1 | 2 | 3 | ; |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
-* | GUI | Ctrl | Alt | M3 | M2 | Space | M2 | M3 | | Ctrl | Esc |
+* | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Alt | Esc | Ctrl |
* `-----------------------------------------------------------------------------------'
*/
[2] = {
- { KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_NO },
+ { KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_INS },
{ KC_TAB, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_ENT },
- { _______, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, DE_0, DE_1, DE_2, DE_3, DE_SCLN, _______ },
+ { _______, KC_NO, KC_TAB, KC_NO, KC_ENT, KC_NO, DE_0, DE_1, DE_2, DE_3, DE_SCLN, _______ },
{ _______, _______, _______, MO(3), _______, _______, _______, _______, MO(3), _______, _______, _______ }
},
/* Flipped Navigation & Number Blocks for one handed use
accessed by sliding from M2 to M3 with thumb
* ,-----------------------------------------------------------------------------------.
-* | | | 7 | 8 | 9 | | PgUp | Bksp | Up | DEL | PgDn | |
+* | Ins | | 7 | 8 | 9 | | PgUp | Bksp | Up | DEL | PgDn | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Tab | . | 4 | 5 | 6 | , | Home | Left | Down | Right| End | Enter|
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| 0 | 1 | 2 | 3 | ; | | Tab | Ins | Enter| |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
-* | GUI | Ctrl | Alt | M3 | | Space | | M3 | | Ctrl | Esc |
+* | Ctrl | GUI | Alt | M3 | | Space | | M3 | Alt | Esc | Ctrl |
* `-----------------------------------------------------------------------------------'
*/
[3] = {
- { KC_NO, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO },
+ { KC_INS, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO },
{ _______, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______ },
{ _______, DE_0, DE_1, DE_2, DE_3, DE_SCLN, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, _______ },
{ _______, _______, _______, _______, KC_NO, _______, _______, KC_NO, _______, _______, _______, _______ }
@@ -102,7 +109,7 @@ slide from m4 to m5 to access flipped version
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
-* | GUI | Ctrl | Alt | M4 | M5 | Space | M5 | M4 | | Ctrl | Esc |
+* | Ctrl | GUI | Alt | M4 | M5 | Space | M5 | M4 | Alt | Esc | Ctrl |
* `-----------------------------------------------------------------------------------'
*/
[4] = {
@@ -115,19 +122,19 @@ slide from m4 to m5 to access flipped version
/* flipped Function & Media Keys
* ,-----------------------------------------------------------------------------------.
-* | | | F7 | F8 | F9 | | | Print|Scroll| Pause| | |
+* | | | F7 | F8 | F9 | F12 | | Print|Scroll| Pause| | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
-* | | ³ | F4 | F5 | F6 | | | Mute | Vol- | Vol+ | | |
+* | | ³ | F4 | F5 | F6 | F11 | | Mute | Vol- | Vol+ | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
-* | Shift| ² | F1 | F2 | F3 | | | Prev | Play | Next | |Shift |
+* | Shift| ² | F1 | F2 | F3 | F10 | | Prev | Play | Next | |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
-* | GUI | Ctrl | Alt | | M5 | Space | M5 | | | Ctrl | Esc |
+* | Ctrl | GUI | Alt | | M5 | Space | M5 | | Alt | Esc | Ctrl |
* `-----------------------------------------------------------------------------------'
*/
[5] = {
- { KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO },
- { KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO },
- { _______, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, _______ },
+ { KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F12, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO },
+ { KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO },
+ { _______, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, _______ },
{ _______, _______, _______, KC_NO, _______, _______, _______, _______, KC_NO, _______, _______, _______ }
}
};
diff --git a/keyboards/planck/keymaps/bone2planck/readme.md b/keyboards/planck/keymaps/bone2planck/readme.md
new file mode 100644
index 000000000..3c425efdd
--- /dev/null
+++ b/keyboards/planck/keymaps/bone2planck/readme.md
@@ -0,0 +1,8 @@
+check keymap.c to the layers
+
+This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout.
+It has "üäöß" as it is optimized for a mix of German & English.
+My favourite features are the placement of the special characters often used for programming right on the home row
+and the number & navigation block combo, so you never have to move your hands from their home position.
+
+Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone \ No newline at end of file
diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c
index ed187df1d..6c3431133 100644
--- a/keyboards/planck/keymaps/callum/keymap.c
+++ b/keyboards/planck/keymaps/callum/keymap.c
@@ -20,7 +20,8 @@ enum planck_keycodes {
BASE = SAFE_RANGE,
MOVE,
SYMB,
- FUNC
+ FUNC,
+ LOCK
};
// Fillers to make layering more clear
@@ -37,14 +38,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | K | M | , | . | / |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Func | GUI | Alt | Ctrl | Symb |Enter |Space | Move | GUI | Alt | Ctrl |Caps |
+ * | Func | Ctrl | Alt | GUI | Symb |Enter |Space | Move | GUI | Alt | Ctrl |Caps |
* `-----------------------------------------------------------------------------------'
*/
[_BASE] = {
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS},
{KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT},
- {FUNC, KC_LGUI, KC_LALT, KC_LCTL, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS}
+ {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS}
},
/* MOVE
@@ -87,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------.
* | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 |
* |-----------------------------------------------------------------------------------.
- * | | Play | Prev | Next | BL+ | | | | | | | |
+ * | | Play | Prev | Next | BL+ | | | Lock | | | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | Mute | Vol- | Vol+ | BL- | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -96,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FUNC] = {
{KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 },
- {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, _______, _______, _______, _______, _______},
+ {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, LOCK, _______, _______, _______, _______},
{_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, _______, _______, _______, _______, _______},
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET }
}
@@ -133,6 +134,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return false;
break;
+ case LOCK:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ register_code(KC_RCTL);
+ register_code(KC_POWER);
+ } else {
+ unregister_code(KC_POWER);
+ unregister_code(KC_RCTL);
+ unregister_code(KC_RSFT);
+ }
+ return false;
+ break;
}
return true;
}
diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md
index 030def7f7..b70de3f1e 100644
--- a/keyboards/planck/keymaps/callum/readme.md
+++ b/keyboards/planck/keymaps/callum/readme.md
@@ -1,25 +1,20 @@
# callum’s planck layout
-This is a layout for the grid planck, built with a few ideals in mind. These ideals are just my opinion mind! The great thing about *qmk* is that we can all afford to have different opinions about what makes a good layout:
+This is a layout for the grid planck, built with a few ideals in mind:
-- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided --- since they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording.
+- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided — they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording.
- The hands should never need to leave the home position. The usual culprit for this is the arrow cluster, so the arrow cluster should be as close to home as possible.
-- There should be two of every modifier (one on each side), since otherwise certain long key combinations become hard to make.
-- Backspace should be in the “capslock position” as God intended.
-- The keyboard should be usable without any firmware changes on any operating system. In my case that means it should work on *Windows* and *Linux* without any software modifications, while I can change the behaviour slightly on *macOS* in software since that’s my home OS. The images reflect the intended use on *macOS* **after** minor software tweaks; which will be noted.
+- There should be two of every modifier (one on each side), otherwise certain long key combinations become hard to make.
+- Backspace should be in the “capslock position” in the colemak tradition.
We have four layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster etc, a `SYMB` layer, with numbers and symbols; and a `FUNC` layer, with function keys and media keys.
## The `BASE` layer
-![](http://i.imgur.com/aEXOlWl.png)
+![](http://i.imgur.com/tVNI3SE.png)
This is the default layer; in [colemak](https://colemak.com). `esc` and `del` are conspicuously absent but are especially easy to reach from either of the other main layers (see below). The `backspace` location is standard colemak. The `caps` key is still on the `BASE` layer but only because I don’t really use the bottom corners so there’s nothing else I would rather put there. Having `enter` on a thumb means I can still have `quote` immediately to the right of `O`, something that would have annoyed me endlessly otherwise. `minus` is in the upper right because I had an extra space and it’s probably my next most used key that didn’t yet have a home.
-The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneosly, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls.
-
-The `ctrl`, `alt`, `cmd` cluster is asymmetric around the centre so that at least one of each of the modifiers can be reached with the thumbs. The intended use is to always hit the left `cmd` and the right `ctrl`, unless an awkward key combination dictates otherwise.
-
-In firmware `ctrl` and `cmd`/`GUI` are swapped with respect to the image above --- I swap them to the illustrated location when using *macOS* and leave them be for *Windows* and *Linux*. (so that `cmd-z,x,c,v,...` becomes `ctrl-z,x,c,v,...` saving me some confusion)
+The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls.
## The `MOVE` layer
![](http://i.imgur.com/KXRSuHT.png)
@@ -40,9 +35,9 @@ The symbol layer has all the numbers and their usual corresponding symbols in th
Again none of the modifiers are overwritten so that shortcuts involving numbers or symbols work as expected.
## The `FUNC` layer
-![](http://i.imgur.com/skxRZiH.png)
+![](http://i.imgur.com/1VKFBBU.png)
-The only thing of note here is that `bl+` and `bl-` are short for *backlight up* and *backlight down* respectively, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys.
+The only things of note here are that `bl+` and `bl-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. And that `lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-ctrl-power`.)
## Other changes from the default
-I have LEDs and sound disabled, simply because I have no need of them. \ No newline at end of file
+I have LEDs and sound disabled, simply because I have no need of them.
diff --git a/keyboards/planck/keymaps/cbbrowne/config.h b/keyboards/planck/keymaps/cbbrowne/config.h
index 2d3df59bd..58cd2cc5b 100644
--- a/keyboards/planck/keymaps/cbbrowne/config.h
+++ b/keyboards/planck/keymaps/cbbrowne/config.h
@@ -9,6 +9,11 @@
#define randmul 181
#define randmod 167
+/* Filler to make layering a bit clearer *
+ * borrowed from basic keymap */
+
+#define _______ KC_TRNS
+
#endif
diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c
index 70eaefb7b..898f6f0e0 100644
--- a/keyboards/planck/keymaps/cbbrowne/keymap.c
+++ b/keyboards/planck/keymaps/cbbrowne/keymap.c
@@ -1,6 +1,6 @@
#include "planck.h"
#ifdef BACKLIGHT_ENABLE
- #include "backlight.h"
+#include "backlight.h"
#endif
#include "config.h"
#include "quantum.h"
@@ -84,21 +84,22 @@ enum macro_id {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = { /* Qwerty */
{KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
- {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT},
+ {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_ENT)},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT },
{KC_TAB, M(M_LED), KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ /* Note that KC_SPC is recorded TWICE, so that either matrix position can activate it */
},
[_RS] = { /* RAISE */
{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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
- {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_KP), DF(_KP), RESET, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+ {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
+ {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_KP), DF(_KP), RESET, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
},
[_LW] = { /* LOWER */
{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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
- {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_KP), DF(_KP), RESET, KC_TRNS},
- {KC_TRNS, DF(_KP), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+ {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+ {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_KP), DF(_KP), RESET, _______},
+ {_______, DF(_KP), _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
},
[_KP] = { /* Key Pad */
{KC_ESC, M(M_USERNAME), M(M_VERSION), KC_F10, KC_F11, KC_F12, KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC},
@@ -108,6 +109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}
};
+/* What is fn_actions actually used for??? */
const uint16_t PROGMEM fn_actions[] = {
};
diff --git a/keyboards/planck/keymaps/cbbrowne/readme.md b/keyboards/planck/keymaps/cbbrowne/readme.md
index c676dd2c1..51979f630 100644
--- a/keyboards/planck/keymaps/cbbrowne/readme.md
+++ b/keyboards/planck/keymaps/cbbrowne/readme.md
@@ -7,16 +7,10 @@ Christopher Browne
This was originally based on the default keyboard map, but I have been
doing sundry experimentation:
-1. Experiments
+1. Useful Experiments
----------------------------------------
- * To figure things out about the toolset
- * I'm an Emacs guy, so will be needing a fair bit of tuning
* It made sense to mess around some with keyboard maps.
- - I tried added Workman alongside Dvorak and Colemak
- - Boy, oh boy, these don't help!!!
- - I have done 30 years of learning of Emacs key mappings, and
- these alternative keyboards massively mess me up
- I added a keypad, originally based on keymaps/numpad.c, but
mighty substantially revised, as that one seems to be rotated 90
degrees from usual conventions for number pads
@@ -30,6 +24,7 @@ doing sundry experimentation:
- Key [2][2] aka "a" uses a random number generator to select a digit 0-9 at random
- Key [3][2] aka "z" uses a random number generator to select a letter a-z at random
- Key [1][3] aka "e" spits out the keymap version number
+ * Minor use of Space Cadet Shift; my SHIFT key has switched to KC_LSP0, so that when I just hit SHIFT, I get a left parens: ( which is great for Lisping. I don't have a Right Shift, so I don't get an autoclose; I think I'll live with that until a Planck successor with more lines of keys :-)
2. Some code structure ideas
---------------------------------------------------
@@ -62,3 +57,24 @@ doing sundry experimentation:
and shift ESC off the first column so KC_LCTL and KC_LALT can
be on the first column.
* I needed to swap ' and ENTER
+ * I tried added Workman alongside Dvorak and Colemak
+ - Boy, oh boy, these don't help!!!
+ - I have done 30 years of learning of Emacs key mappings, and
+ these alternative keyboards massively mess me up
+
+4. TODO
+---------------------------------------------------------
+
+ * I use tmux quite a lot; the mollat keymap seems to have some
+ interesting helpers. It might be interesting to add a "tmux
+ layer," or to have a few keys in a layer oriented towards that
+ * The mollat tmux layer also suggests some thoughts about Emacs
+ helpers.
+ * I do not presently have anything that handles X11 screen
+ switching, as with Control-Alt-various
+ * I ought to probably look into KC_LEAD, to have some key combos
+ that do not need to be concurrent
+ * The jeebak keymap seems to have some neat ideas:
+ - Number layer which is aggressive about having numbers in several places
+ - Touch layer seems interesting
+ * Trying out sgoodwin's "hold Enter down to get Shift" \ No newline at end of file
diff --git a/keyboards/planck/keymaps/jhenahan/Makefile b/keyboards/planck/keymaps/jhenahan/Makefile
new file mode 100644
index 000000000..de01ad240
--- /dev/null
+++ b/keyboards/planck/keymaps/jhenahan/Makefile
@@ -0,0 +1,25 @@
+
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = yes # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+ include ../../../../Makefile
+endif
diff --git a/keyboards/planck/keymaps/jhenahan/config.h b/keyboards/planck/keymaps/jhenahan/config.h
new file mode 100644
index 000000000..cd3adc41c
--- /dev/null
+++ b/keyboards/planck/keymaps/jhenahan/config.h
@@ -0,0 +1,9 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+#define FORCE_NKRO
+#define WORKMAN_SOUND COLEMAK_SOUND
+
+#endif
diff --git a/keyboards/planck/keymaps/jhenahan/keymap.c b/keyboards/planck/keymaps/jhenahan/keymap.c
new file mode 100644
index 000000000..2bda4b695
--- /dev/null
+++ b/keyboards/planck/keymaps/jhenahan/keymap.c
@@ -0,0 +1,314 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+
+#include "planck.h"
+#include "action_layer.h"
+#ifdef AUDIO_ENABLE
+ #include "audio.h"
+#endif
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// 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 _WORKMAN 0
+#define _DEAD 1
+#define _QWERTY 2
+#define _LOWER 3
+#define _RAISE 4
+#define _PLOVER 5
+#define _ADJUST 16
+
+enum planck_keycodes {
+ WORKMAN = SAFE_RANGE,
+ DEAD,
+ QWERTY,
+ LOWER,
+ RAISE,
+ PLOVER,
+ EXT_PLV,
+ TOG_PLV
+};
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+
+/* 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 | Dead | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | RAlt | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_WORKMAN] = {
+ {KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC},
+ {MT(MOD_LCTL,KC_ESC), KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, DEAD, KC_DOT, KC_SLSH, KC_ENT},
+ {KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+
+/* Workman Dead Layer
+ * ,-----------------------------------------------------------------------------------.
+ * | | % | & | ? | + | @ | $ | _ | [ | ] | ! | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | / | ( | = | 0 | { | } | 1 | * | ) | - | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | 6 | 7 | 8 | 9 | | | \ | 2 | 3 | 4 | 5 | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | < | ~ | ` | , | # | ^ | > | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DEAD] = {
+ {XXXXXXX, KC_PERC, KC_AMPR, KC_QUES, KC_PLUS, KC_AT, KC_DLR, KC_UNDS, KC_LBRC, KC_RBRC, KC_EXLM, XXXXXXX},
+ {XXXXXXX, KC_SLSH, KC_LPRN, KC_EQL, KC_0, KC_LCBR, KC_RCBR, KC_1, KC_ASTR, KC_RPRN, KC_MINS, XXXXXXX},
+ {XXXXXXX, KC_6, KC_7, KC_8, KC_9, KC_PIPE, KC_BSLS, KC_2, KC_3, KC_4, KC_5, XXXXXXX},
+ {XXXXXXX, XXXXXXX, KC_LT, KC_TILD, KC_GRV, KC_COMM, KC_COMM, KC_HASH, KC_CIRC, KC_GT, XXXXXXX, XXXXXXX}
+},
+
+/* 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 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | RAlt | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = {
+ {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 },
+ {KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | Vol+ |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Prev | Next | Vol- | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = {
+ {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},
+ {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS), _______, KC_VOLU, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, KC_MPLY}
+},
+
+/* Raise - KWM Interaction
+ * ,-----------------------------------------------------------------------------------.
+ * |Restrt| |TgSplt|Flotng|Parent|FlScrn|InsMrk| InsW | InsS | InsN | InsE | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | Mark |Rotate|Prefix| Term | BSP |SwpMrk|SwapW |SwapS |SwapN |SwapE | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |MarkW |MarkS |MarkN |MarkE |Monocl|Float |FocusW|FocusS|FocusN|FocusE| |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = {
+ {LCAG(KC_Q), XXXXXXX, LCAG(KC_S), LCAG(KC_W), LCAG(KC_D), LCAG(KC_F), LCTL(S(KC_X)), LCTL(S(KC_H)), LCTL(S(KC_J)), LCTL(S(KC_K)), LCTL(S(KC_L)), XXXXXXX},
+ {XXXXXXX, LCAG(KC_M), LGUI(LCTL(KC_R)), LCAG(KC_DOT), LCAG(KC_T), LGUI(LCTL(KC_A)), LCTL(LALT(KC_M)), LCTL(LALT(KC_H)), LCTL(LALT(KC_J)), LCTL(LALT(KC_K)), LCTL(LALT(KC_L)), XXXXXXX},
+ {_______, LCAG(KC_H), LCAG(KC_J), LCAG(KC_K), LCAG(KC_L), LGUI(LCTL(KC_S)), LGUI(LCTL(KC_D)), LGUI(LALT(KC_H)), LGUI(LALT(KC_J)), LGUI(LALT(KC_K)), LGUI(LALT(KC_L)), _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+},
+
+/* Plover layer (http://opensteno.org)
+ * ,-----------------------------------------------------------------------------------.
+ * | # | # | # | # | # | # | # | # | # | # | # | # |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | S | T | P | H | * | * | F | P | L | T | D |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |TogOut| S | K | W | R | * | * | R | B | G | S | Z |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Exit | | | A | O | | E | U | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+[_PLOVER] = {
+ {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
+ {XXXXXXX, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC},
+ {TOG_PLV, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT},
+ {EXT_PLV, XXXXXXX, XXXXXXX, KC_M, KC_C, XXXXXXX, XXXXXXX, KC_L, KC_COMM, XXXXXXX, XXXXXXX, XXXXXXX}
+},
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Workmn|Plover| | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = {
+ {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
+ {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, WORKMAN, PLOVER, _______, _______},
+ {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+}
+
+
+};
+
+#ifdef AUDIO_ENABLE
+
+float tone_startup[][2] = SONG(STARTUP_SOUND);
+float tone_qwerty[][2] = SONG(QWERTY_SOUND);
+float tone_workman[][2] = SONG(WORKMAN_SOUND);
+float tone_plover[][2] = SONG(PLOVER_SOUND);
+float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
+float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
+
+float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+
+void persistant_default_layer_set(uint16_t 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 WORKMAN:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_workman, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_WORKMAN);
+ }
+ return false;
+ break;
+ case DEAD:
+ if (record->event.pressed) {
+ layer_on(_DEAD);
+ set_oneshot_layer(_DEAD, ONESHOT_START);
+ clear_oneshot_layer_state(ONESHOT_PRESSED);
+ }
+ return false;
+ break;
+ case QWERTY:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_QWERTY);
+ }
+ 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;
+ case PLOVER:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ PLAY_NOTE_ARRAY(tone_plover, false, 0);
+ #endif
+ layer_off(_RAISE);
+ layer_off(_LOWER);
+ layer_off(_ADJUST);
+ layer_on(_PLOVER);
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+ }
+ return false;
+ break;
+ case EXT_PLV:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_plover_gb, false, 0);
+ #endif
+ layer_off(_PLOVER);
+ }
+ return false;
+ break;
+ case TOG_PLV:
+ if (record->event.pressed) {
+ register_code(KC_R);
+ register_code(KC_W);
+ register_code(KC_T);
+ register_code(KC_C);
+ register_code(KC_P);
+ register_code(KC_O);
+ clear_keyboard();
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+void matrix_init_user(void) {
+ #ifdef AUDIO_ENABLE
+ startup_user();
+ #endif
+}
+
+#ifdef AUDIO_ENABLE
+
+void startup_user()
+{
+ _delay_ms(20); // gets rid of tick
+ PLAY_NOTE_ARRAY(tone_startup, false, 0);
+}
+
+void shutdown_user()
+{
+ PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+ _delay_ms(150);
+ stop_all_notes();
+}
+
+void music_on_user(void)
+{
+ music_scale_user();
+}
+
+void music_scale_user(void)
+{
+ PLAY_NOTE_ARRAY(music_scale, false, 0);
+}
+
+#endif
diff --git a/keyboards/planck/keymaps/jhenahan/readme.md b/keyboards/planck/keymaps/jhenahan/readme.md
new file mode 100644
index 000000000..a80506fc9
--- /dev/null
+++ b/keyboards/planck/keymaps/jhenahan/readme.md
@@ -0,0 +1,41 @@
+# jhenahan's layout
+
+## Layout
+
+The base layer is based on the
+[Workman Dead](https://github.com/ojbucao/Workman/tree/master/mac) layout. The
+primary interaction layer is a slightly modified Workman layout with a 'dead'
+key on the third row under the middle finger. The dead key activates a layer of
+special characters.
+
+## [Layers](http://www.keyboard-layout-editor.com/#/gists/2b875f7d5d76fe4408c0a5b3bd76ddae)
+### Function Layer
+
+This is very slightly modified from the default, mainly just to rearrange the media keys.
+
+### [KWM](https://github.com/koekeishiya/kwm) Interaction Layer
+
+`kwm` is a tiling window manager for OS X. The keys defined in my keymap
+correspond to the settings I use in
+[my `kwmrc` file](https://github.com/jhenahan/dotfiles/blob/master/kwm/kwmrc).
+
+### QWERTY
+
+Just in case.
+
+### [Plover](http://www.openstenoproject.org/plover/)
+
+This layout functions exactly as a Workman layout unless you're running the Plover
+application. Includes a key for toggling Plover while it's running.
+
+Add this in the appropriate section of your `plover.cfg` to allow this altered layout:
+
+``` ini
+[System: English Stenotype]
+keymap[keyboard] = [["#", ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "="]], ["S-", ["q", "a"]], ["T-", ["d"]], ["K-", ["s"]], ["P-", ["r"]], ["W-", ["h"]], ["H-", ["w"]], ["R-", ["t"]], ["A-", ["m"]], ["O-", ["c"]], ["*", ["y", "g", "j", "b"]], ["-E", ["l"]], ["-U", [","]], ["-F", ["f"]], ["-R", ["n"]], ["-P", ["u"]], ["-B", ["e"]], ["-L", ["p"]], ["-G", ["o"]], ["-T", [";"]], ["-S", ["i"]], ["-D", ["BackSpace"]], ["-Z", ["'"]], ["no-op", ["\\", "]", "x", ".", "/"]], ["arpeggiate", ["space"]]]
+```
+
+### Adjust Layer
+
+This layer is only slightly modified from the default to remove Dvorak and
+Colemak and replace them with Workman.
diff --git a/keyboards/planck/keymaps/pvc/Makefile b/keyboards/planck/keymaps/pvc/Makefile
index 0b2f060de..b2ff961fa 100644
--- a/keyboards/planck/keymaps/pvc/Makefile
+++ b/keyboards/planck/keymaps/pvc/Makefile
@@ -1,12 +1,12 @@
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
+# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
+CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/planck/keymaps/pvc/config.h b/keyboards/planck/keymaps/pvc/config.h
index c857a3e89..1004c8b99 100644
--- a/keyboards/planck/keymaps/pvc/config.h
+++ b/keyboards/planck/keymaps/pvc/config.h
@@ -59,13 +59,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
-/* ws2812 RGB LED */
-#define RGB_DI_PIN D1
-#define RGBLIGHT_TIMER
-#define RGBLED_NUM 28 // Number of LEDs
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
+#define BACKLIGHT_PIN B7
+#define BACKLIGHT_BREATHING
/*
* Feature disable options
@@ -73,10 +68,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* disable debug print */
-//#define NO_DEBUG
+#ifndef NO_DEBUG
+# define NO_DEBUG
+#endif
/* disable print */
-//#define NO_PRINT
+// #ifndef NO_PRINT
+// # define NO_PRINT
+// #endif
+
+/* Only print user print statements */
+#define USER_PRINT
+
/* disable action features */
//#define NO_ACTION_LAYER
diff --git a/keyboards/planck/keymaps/pvc/keymap.c b/keyboards/planck/keymaps/pvc/keymap.c
index 0bb7f0def..6ad95832d 100644
--- a/keyboards/planck/keymaps/pvc/keymap.c
+++ b/keyboards/planck/keymaps/pvc/keymap.c
@@ -2,48 +2,59 @@
#include "action_layer.h"
#include "eeconfig.h"
#include "led.h"
+#include "mousekey.h"
#ifdef AUDIO_ENABLE
#include "audio.h"
#include "song_list.h"
#endif
-#define LAYER_QWERTY 0
-#define LAYER_COLEMAK 1
-#define LAYER_DVORAK 2
-#define LAYER_UPPER 3
-#define LAYER_LOWER 4
-#define LAYER_FUNCTION 5
-#define LAYER_MOUSE 6
-#define LAYER_ADJUST 7
-
-#define MACRO_QWERTY 0
-#define MACRO_COLEMAK 1
-#define MACRO_DVORAK 2
-#define MACRO_UPPER 3
-#define MACRO_LOWER 4
-#define MACRO_FUNCTION 5
-#define MACRO_MOUSE 6
-#define MACRO_TIMBRE_1 7
-#define MACRO_TIMBRE_2 8
-#define MACRO_TIMBRE_3 9
-#define MACRO_TIMBRE_4 10
-#define MACRO_TEMPO_U 11
-#define MACRO_TEMPO_D 12
-#define MACRO_TONE_DEFAULT 13
-#define MACRO_MUSIC_TOGGLE 14
-#define MACRO_AUDIO_TOGGLE 16
-#define MACRO_INC_VOICE 18
-#define MACRO_DEC_VOICE 19
-#define MACRO_BACKLIGHT 20
-#define MACRO_BREATH_TOGGLE 21
-#define MACRO_BREATH_SPEED_INC 23
-#define MACRO_BREATH_SPEED_DEC 24
-#define MACRO_BREATH_DEFAULT 25
+enum keyboard_layers {
+ LAYER_QWERTY = 0,
+ LAYER_UPPER,
+ LAYER_LOWER,
+ LAYER_FUNCTION,
+ LAYER_MOUSE,
+ LAYER_ADJUST,
+};
+enum keyboard_macros {
+ MACRO_QWERTY = 0,
+ MACRO_UPPER,
+ MACRO_LOWER,
+ MACRO_FUNCTION,
+ MACRO_MOUSE,
+ MACRO_TIMBRE_1,
+ MACRO_TIMBRE_2,
+ MACRO_TIMBRE_3,
+ MACRO_TIMBRE_4,
+ MACRO_TEMPO_U,
+ MACRO_TEMPO_D,
+ MACRO_TONE_DEFAULT,
+ MACRO_MUSIC_TOGGLE,
+ MACRO_AUDIO_TOGGLE,
+ MACRO_INC_VOICE,
+ MACRO_DEC_VOICE,
+ MACRO_BACKLIGHT,
+ MACRO_BREATH_TOGGLE,
+ MACRO_BREATH_SPEED_INC,
+ MACRO_BREATH_SPEED_DEC,
+ MACRO_BREATH_DEFAULT,
+ MACRO_MOUSE_MOVE_UL,
+ MACRO_MOUSE_MOVE_UR,
+ MACRO_MOUSE_MOVE_DL,
+ MACRO_MOUSE_MOVE_DR,
+ MACRO_HELP_1,
+ MACRO_HELP_2,
+ MACRO_HELP_3,
+ MACRO_HELP_4,
+ MACRO_HELP_5,
+ MACRO_HELP_6,
+ MACRO_HELP_7,
+ MACRO_HELP_8,
+ MACRO_HELP_9,
+};
#define M_QWRTY M(MACRO_QWERTY)
-#define M_COLMK M(MACRO_COLEMAK)
-#define M_DVORK M(MACRO_DVORAK)
#define M_UPPER M(MACRO_UPPER)
#define M_LOWER M(MACRO_LOWER)
#define M_FUNCT M(MACRO_FUNCTION)
@@ -60,6 +71,19 @@
#define M_BSPDU M(MACRO_BREATH_SPEED_INC)
#define M_BSPDD M(MACRO_BREATH_SPEED_DEC)
#define M_BDFLT M(MACRO_BREATH_DEFAULT)
+#define M_MS_UL M(MACRO_MOUSE_MOVE_UL)
+#define M_MS_UR M(MACRO_MOUSE_MOVE_UR)
+#define M_MS_DL M(MACRO_MOUSE_MOVE_DL)
+#define M_MS_DR M(MACRO_MOUSE_MOVE_DR)
+#define M_HELP1 M(MACRO_HELP_1)
+#define M_HELP2 M(MACRO_HELP_2)
+#define M_HELP3 M(MACRO_HELP_3)
+#define M_HELP4 M(MACRO_HELP_4)
+#define M_HELP5 M(MACRO_HELP_5)
+#define M_HELP6 M(MACRO_HELP_6)
+#define M_HELP7 M(MACRO_HELP_7)
+#define M_HELP8 M(MACRO_HELP_8)
+#define M_HELP9 M(MACRO_HELP_9)
#define VC_UP M(MACRO_INC_VOICE)
@@ -77,6 +101,7 @@
#define SC_ACLS LALT(KC_F4)
#define SC_CCLS LCTL(KC_F4)
+#define TG_NKRO MAGIC_TOGGLE_NKRO
#define OS_SHFT KC_FN0
#define _______ KC_TRNS
@@ -86,146 +111,108 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* QWERTY
- * .-----------------------------------------------------------------------------------------------------------.
- * | TAB | Q | W | E | R | T | Y | U | I | O | P | BACKSP |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | ESC | A | S | D | F | G | H | J | K | L | ; | ' |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LSHIFT | Z | X | C | V | B | N | M | , | . | UP | ENTER |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | SHIFT | LEFT | DOWN | RIGHT |
- * '-----------------------------------------------------------------------------------------------------------'
- */
-
- [LAYER_QWERTY] = { // QWERTY
- { 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_UP, KC_ENT },
- { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT },
- },
-
-/* COLEMAK
- * .-----------------------------------------------------------------------------------------------------------.
- * | TAB | Q | W | F | P | G | J | L | U | Y | ; | ESC |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | BACKSP | A | R | S | T | D | H | N | E | I | O | ' |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LSHIFT | Z | X | C | V | B | K | M | , | . | UP | ENTER |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | SHIFT | LEFT | DOWN | RIGHT |
- * '-----------------------------------------------------------------------------------------------------------'
- */
-
- [LAYER_COLEMAK] = { // COLEMAK
- { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_ESC },
- { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT },
- { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT },
- { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT },
- },
-
-/* DVORAK
- * .-----------------------------------------------------------------------------------------------------------.
- * | TAB | ' | , | . | P | Y | F | G | C | R | L | BACKSP |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | ESC | A | O | E | U | I | D | H | T | N | S | / |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | ENTER |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT |
- * '-----------------------------------------------------------------------------------------------------------'
- */
-
- [LAYER_DVORAK] = { // DVORAK
- { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC },
- { KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH },
- { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
- { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT },
- },
-
-/* UPPER
- * .-----------------------------------------------------------------------------------------------------------.
- * | PRINT | F1 | F2 | F3 | F4 | NUM LK | / | 7 | 8 | 9 | - | DEL |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | CAP LK | F5 | F6 | F7 | F8 | SCR LK | * | 4 | 5 | 6 | + | INS |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | F9 | F10 | F11 | F12 | PAUSE | | 1 | 2 | 3 | ENTER | HOME |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
- * | | | | | | 0 | 0 | | RALT | . | ENTER | END |
- * '-----------------------------------------------------------------------------------------------------------'
- */
-
- [LAYER_UPPER] = { // UPPER
- { KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, KC_DEL },
- { KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_SLCK, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_INS },
- { _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_HOME },
- { _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, KC_END },
- },
-
-/* LOWER
- * .-----------------------------------------------------------------------------------------------------------.
- * | | $ | { | [ | ( | % | # | ) | ] | } | @ | PG UP |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | ^ | * | + | - | / | \ | _ | ' | " | ` | PG DN |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | | | & | ! | ~ | ; | : | = | < | > | ? | HOME |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
- * | | | | | | | | | | | | END |
- * '-----------------------------------------------------------------------------------------------------------'
- */
-
- [LAYER_LOWER] = { // LOWER
- { _______, KC_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, KC_PGUP },
- { _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, KC_PGDN },
- { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL, KC_LT, KC_GT, KC_QUES, KC_HOME },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END },
- },
-
-
-/* FUNCTION
- * .-----------------------------------------------------------------------------------------------------------.
- * | NUM LK | F13 | F14 | F15 | F16 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | PAUSE |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | CAP LK | F17 | F18 | F19 | F20 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | PRINT |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | SCR LK | F21 | F22 | F23 | F24 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MUTE |
- * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | LCTRL | LWIN | FN | LALT | UPPER | PLAY | PLAY | LOWER | VOL UP | VOL DN | NEXT | PREV |
- * '-----------------------------------------------------------------------------------------------------------'
- */
- [LAYER_FUNCTION] = { // FUNCTION
- { KC_NLCK, KC_F13, KC_F14, KC_F15, KC_F16, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAUS },
- { KC_CAPS, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR },
- { KC_SLCK, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE },
- { _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, KC_VOLU, KC_VOLD, KC_MPRV, KC_MNXT },
- },
-
-#ifdef MOUSEKEY_ENABLE
-
- [LAYER_MOUSE] = { // MOUSE
- { KC_ESC, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC },
- { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
- { _______, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U, KC_WH_D },
- { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, KC_MS_U, KC_MS_D, KC_MS_L, KC_MS_R },
- },
-
-#endif
-
- [LAYER_ADJUST] = { // ADJUST
- { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, MU_TOG, AU_TOG },
- { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______ },
- { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, MUV_IN, _______ },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MUV_DE, _______ },
- },
-
-/*
- [LAYER_EMPTY] = {
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, },
- { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, },
- { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, },
- },
+/* LAYER = LAYER_QWERTY
+ .-----------------------------------------------------------------------------------------------------------.
+ | TAB | Q | W | E | R | T | Y | U | I | O | P | BACKSP |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | ESC | A | S | D | F | G | H | J | K | L | ; | ' |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | LSHIFT | Z | X | C | V | B | N | M | , | . | UP | ENTER |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | LCTRL | LWIN | FN | LALT | UPPER | SPACE | SPACE | LOWER | OSHIFT | LEFT | DOWN | RIGHT |
+ '-----------------------------------------------------------------------------------------------------------'
*/
+[LAYER_QWERTY] = {
+ { 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_UP , KC_ENT },
+ { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC , KC_SPC , M_LOWER, OS_SHFT, KC_LEFT, KC_DOWN, KC_RGHT }
+},
+/* LAYER = LAYER_UPPER
+ .-----------------------------------------------------------------------------------------------------------.
+ | PRINT | F1 | F2 | F3 | F4 | NUM LK | KP / | KP 7 | KP 8 | KP 9 | KP - | DEL |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | PAUSE | F5 | F6 | F7 | F8 | SCR LK | KP * | KP 4 | KP 5 | KP 6 | KP + | INS |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | ______ | F9 | F10 | F11 | F12 | PAUSE | KP 0 | KP 1 | KP 2 | KP 3 | KP ENT | HOME |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | ______ | ______ | ______ | ______ | UPPER | KP 0 | KP 0 | ______ | RALT | KP . | KP ENT | END |
+ '-----------------------------------------------------------------------------------------------------------'
+*/
+[LAYER_UPPER] = {
+ { KC_PSCR, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, KC_DEL },
+ { KC_PAUS, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_SLCK, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_INS },
+ { _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PAUS, KC_KP_0, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_HOME },
+ { _______, _______, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, KC_END }
+},
+/* LAYER = LAYER_LOWER
+ .-----------------------------------------------------------------------------------------------------------.
+ | ______ | $ | { | [ | ( | % | # | ) | ] | } | @ | PG UP |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | ______ | ^ | * | + | - | / | \ | _ | ' | " | ` | PG DN |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | ______ | | | & | ! | ~ | ; | : | = | < | > | ? | HOME |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | LOWER | ______ | ______ | ______ | END |
+ '-----------------------------------------------------------------------------------------------------------'
+*/
+[LAYER_LOWER] = {
+ { _______, KC_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT , KC_PGUP },
+ { _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , KC_PGDN },
+ { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL , KC_LT , KC_GT , KC_QUES, KC_HOME },
+ { _______, _______, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, KC_END }
+},
+/* LAYER = LAYER_FUNCTION
+ .-----------------------------------------------------------------------------------------------------------.
+ | XXXXXX | F13 | F14 | F15 | F16 | NUM LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | XXXXXX | F17 | F18 | F19 | F20 | SCR LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | ______ | F21 | F22 | F23 | F24 | CAP LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | VOL UP | MUTE |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | ______ | ______ | FN | ______ | ______ | PLAY | PLAY | ______ | ______ | PREV | VOL DN | NEXT |
+ '-----------------------------------------------------------------------------------------------------------'
+*/
+[LAYER_FUNCTION] = {
+ { XXXXXXX, KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { _______, KC_F21 , KC_F22 , KC_F23 , KC_F24 , KC_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, KC_MUTE },
+ { _______, _______, M_FUNCT, _______, _______, KC_MPLY, KC_MPLY, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT }
+},
+/* LAYER = LAYER_MOUSE
+ .-----------------------------------------------------------------------------------------------------------.
+ | ESC | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MS UL | MS U | MS UR | MS WHL | MS WHR |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | XXXXXX | MS BT5 | MS BT4 | MS BT3 | MS BT2 | XXXXXX | XXXXXX | MS L | XXXXXX | MS R | XXXXXX | MS WHU |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | ______ | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MS DL | MS D | MS DR | MS U | MS WHD |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | ______ | ______ | ______ | ______ | ______ | MS BT1 | MS BT1 | ______ | ______ | MS L | MS D | MS R |
+ '-----------------------------------------------------------------------------------------------------------'
+*/
+[LAYER_MOUSE] = {
+ { KC_ESC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_UL, KC_MS_U, M_MS_UR, KC_WH_L, KC_WH_R },
+ { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, KC_MS_L, XXXXXXX, KC_MS_R, XXXXXXX, KC_WH_U },
+ { _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_DL, KC_MS_D, M_MS_DR, KC_MS_U, KC_WH_D },
+ { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }
+},
+/* LAYER = LAYER_ADJUST
+ .-----------------------------------------------------------------------------------------------------------.
+ | XXXXXX | HELP 1 | HELP 2 | HELP 3 | HELP 4 | HELP 5 | HELP 6 | HELP 7 | HELP 8 | HELP 9 | MUSIC | AUDIO |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | XXXXXX | BRTOG | BRSPD+ | BRSPD- | BRDFLT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | XXXXXX | QWERTY | XXXXXX | XXXXXX | BACKLT | RESET | XXXXXX | MOUSE | XXXXXX | XXXXXX | VOICE+ | XXXXXX |
+ |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ | XXXXXX | XXXXXX | XXXXXX | XXXXXX | UPPER | XXXXXX | XXXXXX | LOWER | XXXXXX | TEMPO- | VOICE- | TEMPO+ |
+ '-----------------------------------------------------------------------------------------------------------'
+*/
+[LAYER_ADJUST] = {
+ { XXXXXXX, M_HELP1, M_HELP2, M_HELP3, M_HELP4, M_HELP5, M_HELP6, M_HELP7, M_HELP8, M_HELP9, MU_TOG , AU_TOG },
+ { XXXXXXX, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
+ { XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, MUV_IN , XXXXXXX },
+ { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, TMPO_DN, MUV_DE , TMPO_UP }
+},
};
@@ -234,10 +221,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
float tone_my_startup[][2] = SONG(ODE_TO_JOY);
float tone_my_goodbye[][2] = SONG(ROCK_A_BYE_BABY);
-float tone_qwerty[][2] = SONG(QWERTY_SOUND);
-float tone_dvorak[][2] = SONG(DVORAK_SOUND);
-float tone_colemak[][2] = SONG(COLEMAK_SOUND);
-
float tone_audio_on[][2] = SONG(CLOSE_ENCOUNTERS_5_NOTE);
float tone_music_on[][2] = SONG(DOE_A_DEER);
float tone_caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND);
@@ -257,7 +240,7 @@ void persistant_default_layer_set(uint16_t default_layer)
}
const uint16_t PROGMEM fn_actions[] = {
- [0] = ACTION_MODS_ONESHOT(MOD_LSFT),
+ [0] = ACTION_MODS_ONESHOT(MOD_RSFT),
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
@@ -267,46 +250,101 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
switch(id)
{
- case MACRO_QWERTY:
+ case MACRO_HELP_1:
if (record->event.pressed)
{
- persistant_default_layer_set(1UL<<LAYER_QWERTY);
- #ifdef AUDIO_ENABLE
- PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO);
- #endif /* AUDIO_ENABLE */
+ uprintf("1");
}
break;
- case MACRO_COLEMAK:
+ case MACRO_HELP_2:
if (record->event.pressed)
{
- persistant_default_layer_set(1UL<<LAYER_COLEMAK);
- #ifdef AUDIO_ENABLE
- PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO);
- #endif /* AUDIO_ENABLE */
+ uprintf("2");
}
break;
- case MACRO_DVORAK:
+ case MACRO_HELP_3:
if (record->event.pressed)
{
- persistant_default_layer_set(1UL<<LAYER_DVORAK);
- #ifdef AUDIO_ENABLE
- PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO);
- #endif /* AUDIO_ENABLE */
+ uprintf("3");
}
break;
- case MACRO_LOWER:
+ case MACRO_HELP_4:
if (record->event.pressed)
{
- layer_on(LAYER_LOWER);
- update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST);
+ uprintf("4");
}
- else
+ break;
+
+ case MACRO_HELP_5:
+ if (record->event.pressed)
{
- layer_off(LAYER_LOWER);
- update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST);
+ uprintf("5");
+ }
+ break;
+
+ case MACRO_HELP_6:
+ if (record->event.pressed)
+ {
+ uprintf("6");
+ }
+ break;
+
+ case MACRO_HELP_7:
+ if (record->event.pressed)
+ {
+ uprintf("7");
+ }
+ break;
+
+ case MACRO_HELP_8:
+ if (record->event.pressed)
+ {
+ uprintf("8");
+ }
+ break;
+
+ case MACRO_HELP_9:
+ if (record->event.pressed)
+ {
+ uprintf("9");
+ }
+ break;
+
+ case MACRO_BREATH_TOGGLE:
+ if (record->event.pressed)
+ {
+ breathing_toggle();
+ }
+ break;
+
+ case MACRO_BREATH_SPEED_INC:
+ if (record->event.pressed)
+ {
+ breathing_speed_inc(1);
+ }
+ break;
+
+ case MACRO_BREATH_SPEED_DEC:
+ if (record->event.pressed)
+ {
+ breathing_speed_dec(1);
+ }
+ break;
+
+ case MACRO_BREATH_DEFAULT:
+ if (record->event.pressed)
+ {
+ breathing_defaults();
+ }
+ break;
+
+ case MACRO_QWERTY:
+ if (record->event.pressed)
+ {
+ persistant_default_layer_set(1UL<<LAYER_QWERTY);
}
break;
@@ -314,6 +352,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
if (record->event.pressed)
{
layer_on(LAYER_UPPER);
+ breathing_speed_set(2);
+ breathing_pulse();
update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST);
}
else
@@ -323,13 +363,32 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}
break;
+ case MACRO_LOWER:
+ if (record->event.pressed)
+ {
+ layer_on(LAYER_LOWER);
+ breathing_speed_set(2);
+ breathing_pulse();
+ update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST);
+ }
+ else
+ {
+ layer_off(LAYER_LOWER);
+ update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST);
+ }
+ break;
+
case MACRO_FUNCTION:
if (record->event.pressed)
{
+ breathing_speed_set(3);
+ breathing_enable();
layer_on(LAYER_FUNCTION);
}
else
{
+ breathing_speed_set(1);
+ breathing_self_disable();
layer_off(LAYER_FUNCTION);
}
break;
@@ -352,6 +411,58 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}
break;
+ case MACRO_MOUSE_MOVE_UL:
+ if (record->event.pressed)
+ {
+ mousekey_on(KC_MS_UP);
+ mousekey_on(KC_MS_LEFT);
+ }
+ else
+ {
+ mousekey_off(KC_MS_UP);
+ mousekey_off(KC_MS_LEFT);
+ }
+ break;
+
+ case MACRO_MOUSE_MOVE_UR:
+ if (record->event.pressed)
+ {
+ mousekey_on(KC_MS_UP);
+ mousekey_on(KC_MS_RIGHT);
+ }
+ else
+ {
+ mousekey_off(KC_MS_UP);
+ mousekey_off(KC_MS_RIGHT);
+ }
+ break;
+
+ case MACRO_MOUSE_MOVE_DL:
+ if (record->event.pressed)
+ {
+ mousekey_on(KC_MS_DOWN);
+ mousekey_on(KC_MS_LEFT);
+ }
+ else
+ {
+ mousekey_off(KC_MS_DOWN);
+ mousekey_off(KC_MS_LEFT);
+ }
+ break;
+
+ case MACRO_MOUSE_MOVE_DR:
+ if (record->event.pressed)
+ {
+ mousekey_on(KC_MS_DOWN);
+ mousekey_on(KC_MS_RIGHT);
+ }
+ else
+ {
+ mousekey_off(KC_MS_DOWN);
+ mousekey_off(KC_MS_RIGHT);
+ }
+ break;
+
#endif /* MOUSEKEY_ENABLE */
#ifdef AUDIO_ENABLE
diff --git a/keyboards/planck/keymaps/sgoodwin/Makefile b/keyboards/planck/keymaps/sgoodwin/Makefile
new file mode 100644
index 000000000..581e08cd0
--- /dev/null
+++ b/keyboards/planck/keymaps/sgoodwin/Makefile
@@ -0,0 +1,25 @@
+
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = yes # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+ include ../../../../Makefile
+endif \ No newline at end of file
diff --git a/keyboards/planck/keymaps/sgoodwin/keymap.c b/keyboards/planck/keymaps/sgoodwin/keymap.c
new file mode 100644
index 000000000..4d5d3d7ef
--- /dev/null
+++ b/keyboards/planck/keymaps/sgoodwin/keymap.c
@@ -0,0 +1,233 @@
+// This is sgoodwin's layout file for the Quantum project.
+// It doesn't have Plover or Dvorak layers because he doesn't use that.
+// It Also doesn't allow for swapping alt with CMD because that only happens in error.
+
+#include "planck.h"
+#include "action_layer.h"
+#ifdef AUDIO_ENABLE
+ #include "audio.h"
+#endif
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// 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 1
+#define _COLEMAK 0
+#define _LOWER 3
+#define _RAISE 4
+#define _ADJUST 16
+
+enum planck_keycodes {
+ COLEMAK = SAFE_RANGE,
+ QWERTY,
+ LOWER,
+ RAISE,
+ BACKLIT,
+};
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* 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 | , | . | / |SHEnt |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Hyper| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = {
+ {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
+ {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_RSFT, KC_ENT) },
+ {ALL_T(KC_NO), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+
+/* 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 | , | . | / |SHEnt |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Hyper| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = {
+ {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, MT(MOD_RSFT, KC_ENT) },
+ {ALL_T(KC_NO), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+},
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = {
+ {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},
+ {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______},
+ {BACKLIT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+/* 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 |ISO # |ISO / | | |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = {
+ {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},
+ {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______},
+ {BACKLIT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|Audoff| | |Qwerty|Colemk| | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = {
+ {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
+ {_______, _______, _______, AU_ON, AU_OFF, _______, _______, QWERTY, COLEMAK, _______, _______, _______},
+ {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+}
+
+
+};
+
+#ifdef AUDIO_ENABLE
+
+float tone_startup[][2] = SONG(STARTUP_SOUND);
+float tone_qwerty[][2] = SONG(QWERTY_SOUND);
+float tone_colemak[][2] = SONG(COLEMAK_SOUND);
+float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
+
+float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+
+void persistant_default_layer_set(uint16_t 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) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_QWERTY);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_COLEMAK);
+ }
+ 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;
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+void matrix_init_user(void) {
+ #ifdef AUDIO_ENABLE
+ startup_user();
+ #endif
+}
+
+#ifdef AUDIO_ENABLE
+
+void startup_user()
+{
+ _delay_ms(20); // gets rid of tick
+ PLAY_NOTE_ARRAY(tone_startup, false, 0);
+}
+
+void shutdown_user()
+{
+ PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
+ _delay_ms(150);
+ stop_all_notes();
+}
+
+void music_on_user(void)
+{
+ music_scale_user();
+}
+
+void music_scale_user(void)
+{
+ PLAY_NOTE_ARRAY(music_scale, false, 0);
+}
+
+#endif
diff --git a/keyboards/planck/keymaps/sgoodwin/readme.md b/keyboards/planck/keymaps/sgoodwin/readme.md
new file mode 100644
index 000000000..dfa88f380
--- /dev/null
+++ b/keyboards/planck/keymaps/sgoodwin/readme.md
@@ -0,0 +1,10 @@
+# sgoodwin's Planck Layout
+
+Includes:
+
+1. No Dvorak or Plover
+2. No alt-swapping
+3. Right enter is shift when held down, enter when tapped.
+4. Bottom left corner in normal layers is Hyper and not brightness control.
+5. Brightness is instead in the bottom corner on raise/lower.
+
diff --git a/keyboards/planck/keymaps/tong92/Makefile b/keyboards/planck/keymaps/tong92/Makefile
new file mode 100644
index 000000000..e6608e74c
--- /dev/null
+++ b/keyboards/planck/keymaps/tong92/Makefile
@@ -0,0 +1,62 @@
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make all = Make software.
+#
+# make clean = Clean out built project files.
+#
+# make coff = Convert ELF to AVR COFF.
+#
+# make extcoff = Convert ELF to AVR Extended COFF.
+#
+# make program = Download the hex file to the device.
+# Please customize your programmer settings(PROGRAM_CMD)
+#
+# make teensy = Download the hex file to the device, using teensy_loader_cli.
+# (must have teensy_loader_cli installed).
+#
+# make dfu = Download the hex file to the device, using dfu-programmer (must
+# have dfu-programmer installed).
+#
+# make flip = Download the hex file to the device, using Atmel FLIP (must
+# have Atmel FLIP installed).
+#
+# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
+# (must have dfu-programmer installed).
+#
+# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
+# (must have Atmel FLIP installed).
+#
+# make debug = Start either simulavr or avarice as specified for debugging,
+# with avr-gdb or avr-insight as the front end for debugging.
+#
+# make filename.s = Just compile filename.c into the assembler code only.
+#
+# make filename.i = Create a preprocessed source file for use in submitting
+# bug reports to the GCC project.
+#
+# To rebuild project do "make clean" then "make all".
+#----------------------------------------------------------------------------
+# Build Options
+# change to "no" to disable the options, or define them in the makefile.mk in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+ include ../../../../Makefile
+endif \ No newline at end of file
diff --git a/keyboards/planck/keymaps/tong92/keymap.c b/keyboards/planck/keymaps/tong92/keymap.c
new file mode 100644
index 000000000..2be28fb4f
--- /dev/null
+++ b/keyboards/planck/keymaps/tong92/keymap.c
@@ -0,0 +1,146 @@
+//Author: tong92 <tong92power@gmail.com>
+
+#include "planck.h"
+#ifdef BACKLIGHT_ENABLE
+ #include "backlight.h"
+#endif
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+#define LOWER M(1)
+#define RAISE M(2)
+#define GO_DEFT M(99)
+#
+
+//MIT Layout
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* 0: Qwerty layer (Default)
+* ,-----------------------------------------------------------------------.
+* |Tab | q | w | e | r | t | y | u | i | o | p | BS |
+* |-----------------------------------------------------------------------|
+* |Ctrl | a | s | d | f | g | h | j | k | l | ; |enter|
+* |-----------------------------------------------------------------------|
+* |Shift| z | x | c | v | b | n | m | , | . | / |Shift|
+* |-----------------------------------------------------------------------|
+* | Fn |Ctrl | Win | Alt |Lower| Space |Upper| ' | [ | ] | Alt |
+* `-----------------------------------------------------------------------'
+*/
+[0] ={
+{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_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_ENT },
+{KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT},
+{MO(4), KC_RCTL,KC_LGUI,KC_LALT,LOWER,KC_SPC,KC_SPC,RAISE,KC_QUOT,KC_LBRC,KC_RBRC,KC_RALT}
+},
+/* 1: Lower layer
+* ,-----------------------------------------------------------------------.
+* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BS |
+* |-----------------------------------------------------------------------|
+* | | F1 | F2 | F3 | F4 | F5 | F6 | - | + | [ | ] | \ |
+* |-----------------------------------------------------------------------|
+* | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo|
+* |-----------------------------------------------------------------------|
+* | | | | | | SPACE |mouse| END | LEFT| DOWN|RIGHT|
+* `-----------------------------------------------------------------------'
+*/
+[1] ={
+{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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS },
+{_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,KC_F12,_______,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN },
+{XXXXXXX,_______,_______,_______,_______,KC_SPC,KC_SPC,_______,KC_END, KC_LEFT,KC_DOWN,KC_RIGHT}
+},
+/* 2: Upper layer
+* ,-----------------------------------------------------------------------.
+* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | BS |
+* |-----------------------------------------------------------------------|
+* | | F1 | F2 | F3 | F4 | F5 | F6 | _ | = | { | } | | |
+* |-----------------------------------------------------------------------|
+* | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo|
+* |-----------------------------------------------------------------------|
+* | | | | |mouse| SPACE | | END | LEFT| DOWN|RIGHT|
+* `-----------------------------------------------------------------------'
+*/
+[2] ={
+{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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS,KC_EQL, KC_LCBR,KC_RCBR,KC_PIPE },
+{_______,KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_HOME,KC_PGUP,KC_UP ,KC_PGDN },
+{XXXXXXX,_______,_______,_______,_______,KC_SPC, KC_SPC, _______,KC_END, KC_LEFT,KC_DOWN,KC_RIGHT}
+},
+/* 4: fn layer (Window shortcuts)
+* ,-----------------------------------------------------------------------.
+* | ESC |WinOf|WinUp| | |Sh+Ca| | PgUp| UP | PgDo|PrtSc| DEL |
+* |-----------------------------------------------------------------------|
+* | |WinLe|WinDo|WinRi| |Al+Ca|CapsL| LEFT| DOWN|RIGHT| | |
+* |-----------------------------------------------------------------------|
+* | |WinLW|WinRW| | |Ct+Ca|ScroL| HOME| | END | | |
+* |-----------------------------------------------------------------------|
+* | |DeskL|DeskR|DeskX|Task | ChangeLang| | | | | LED |
+* `-----------------------------------------------------------------------'
+*/
+[4] ={
+{KC_ESC ,LALT(KC_F4) ,LGUI(KC_UP) ,XXXXXXX ,XXXXXXX ,S(KC_CAPS) ,XXXXXXX,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_DELT},
+{_______,LGUI(KC_LEFT) ,LGUI(KC_DOWN) ,LGUI(KC_RIGHT) ,XXXXXXX ,LALT(KC_CAPS),KC_CAPS,KC_LEFT,KC_DOWN,KC_RIGHT,XXXXXXX,XXXXXXX},
+{_______,LGUI(LSFT(KC_LEFT)),LGUI(LSFT(KC_RIGHT)),XXXXXXX ,XXXXXXX ,LCTL(KC_CAPS),KC_SLCK,KC_HOME,XXXXXXX,KC_END,XXXXXXX,XXXXXXX},
+{KC_TRNS,LGUI(LCTL(KC_LEFT)),LGUI(LCTL(KC_RIGHT)),LGUI(LCTL(KC_F4)),LCTL(LALT(KC_DELT)),LGUI(KC_SPC),LGUI(KC_SPC),XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,M(0)}
+},
+/* 10: mouse layer
+* ,-----------------------------------------------------------------------.
+* | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| |RESET|
+* |-----------------------------------------------------------------------|
+* | | |Mo_Le|Mo_Do|Mo_Ri| | |M_Bt1|M_WhD|M_Bt2| | |
+* |-----------------------------------------------------------------------|
+* | | | | | | | |M_AC0|M_AC1|M_AC2| | |
+* |-----------------------------------------------------------------------|
+* | | | | | | GO_DEFT | | | | | |
+* `-----------------------------------------------------------------------'
+*/
+[10] ={
+{XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,RESET},
+{XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX,XXXXXXX,KC_BTN1,KC_WH_D,KC_BTN2,XXXXXXX,XXXXXXX},
+{XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_ACL0,KC_ACL1,KC_ACL2,XXXXXXX,XXXXXXX},
+{XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,GO_DEFT,GO_DEFT,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX}
+}
+
+};
+//Layout END
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ }
+ break;
+ case 1:
+ if (record->event.pressed) {
+ layer_on(1);
+ update_tri_layer(1, 2, 10);
+ } else {
+ layer_off(1);
+ update_tri_layer(1, 2, 10);
+ }
+ break;
+ case 2:
+ if (record->event.pressed) {
+ layer_on(2);
+ update_tri_layer(1, 2, 10);
+ } else {
+ layer_off(2);
+ update_tri_layer(1, 2, 10);
+ }
+ break;
+ case 99:
+ if (record->event.pressed) {
+ layer_off(10);
+ layer_off(1);
+ layer_off(2);
+ layer_on(0);
+ update_tri_layer(0 ,1 ,2);
+ }
+ break;
+ }
+ return MACRO_NONE;
+}; \ No newline at end of file
diff --git a/keyboards/planck/keymaps/tong92/readme.md b/keyboards/planck/keymaps/tong92/readme.md
new file mode 100644
index 000000000..328d005f6
--- /dev/null
+++ b/keyboards/planck/keymaps/tong92/readme.md
@@ -0,0 +1,66 @@
+# The Tong92 Layout
+- MIT Layout
+- my keymap for WIndow User
+- Lower && Upper Hold -> Mouse Layer
+- Mouse Layer : space -> Default Layer
+- No Audio
+
+## 1. Default Layer - Qwerty
+
+ ,-----------------------------------------------------------------------.
+ |Tab | q | w | e | r | t | y | u | i | o | p | BS |
+ |-----------------------------------------------------------------------|
+ |Ctrl | a | s | d | f | g | h | j | k | l | ; |enter|
+ |-----------------------------------------------------------------------|
+ |Shift| z | x | c | v | b | n | m | , | . | / |Shift|
+ |-----------------------------------------------------------------------|
+ | Fn |Ctrl | Win | Alt |Lower| Space |Upper| ' | [ | ] | Alt |
+ `-----------------------------------------------------------------------'
+
+## 2. Lower Layer
+
+ ,-----------------------------------------------------------------------.
+ | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BS |
+ |-----------------------------------------------------------------------|
+ | | F1 | F2 | F3 | F4 | F5 | F6 | - | + | [ | ] | \ |
+ |-----------------------------------------------------------------------|
+ | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo|
+ |-----------------------------------------------------------------------|
+ | | | | | | SPACE |mouse| END | LEFT| DOWN|RIGHT|
+ `-----------------------------------------------------------------------'
+
+## 3. Upper Layer
+
+ ,-----------------------------------------------------------------------.
+ | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | BS |
+ |-----------------------------------------------------------------------|
+ | | F1 | F2 | F3 | F4 | F5 | F6 | _ | = | { | } | | |
+ |-----------------------------------------------------------------------|
+ | | F7 | F8 | F9 | F10 | F11 | F12 | | HOME| PgUp| UP | PgDo|
+ |-----------------------------------------------------------------------|
+ | | | | |mouse| SPACE | | END | LEFT| DOWN|RIGHT|
+ `-----------------------------------------------------------------------'
+
+## 4. Fn Layer - Window Shortcuts
+
+ ,-----------------------------------------------------------------------.
+ | ESC |WinOf|WinUp| | |Sh+Ca| | PgUp| UP | PgDo|PrtSc| DEL |
+ |-----------------------------------------------------------------------|
+ | |WinLe|WinDo|WinRi| |Al+Ca|CapsL| LEFT| DOWN|RIGHT| | |
+ |-----------------------------------------------------------------------|
+ | |WinLW|WinRW| | |Ct+Ca|ScroL| HOME| | END | | |
+ |-----------------------------------------------------------------------|
+ | |DeskL|DeskR|DeskX|Task | ChangeLang| | | | | LED |
+ `-----------------------------------------------------------------------'
+
+## 5. Mouse Layer
+
+ ,-----------------------------------------------------------------------.
+ | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| |RESET|
+ |-----------------------------------------------------------------------|
+ | | |Mo_Le|Mo_Do|Mo_Ri| | |M_Bt1|M_WhD|M_Bt2| | |
+ |-----------------------------------------------------------------------|
+ | | | | | | | |M_AC0|M_AC1|M_AC2| | |
+ |-----------------------------------------------------------------------|
+ | | | | | |GO_DEFAULT | | | | | |
+ `-----------------------------------------------------------------------' \ No newline at end of file