summaryrefslogtreecommitdiff
path: root/keyboards/planck/keymaps
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/planck/keymaps')
-rw-r--r--keyboards/planck/keymaps/callum/config.h7
-rw-r--r--keyboards/planck/keymaps/callum/keymap.c73
-rw-r--r--keyboards/planck/keymaps/callum/readme.md67
-rw-r--r--keyboards/planck/keymaps/callum/rules.mk2
-rw-r--r--keyboards/planck/keymaps/cbbrowne/readme.org (renamed from keyboards/planck/keymaps/cbbrowne/readme.md)63
-rw-r--r--keyboards/planck/keymaps/dcompact/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dcompact/readme.md (renamed from keyboards/planck/keymaps/dcompact/README.md)8
-rw-r--r--keyboards/planck/keymaps/dsanchezseco/config.h39
-rw-r--r--keyboards/planck/keymaps/dsanchezseco/keymap.c116
-rw-r--r--keyboards/planck/keymaps/dsanchezseco/readme.md2
-rw-r--r--keyboards/planck/keymaps/dsanchezseco/rules.mk1
-rw-r--r--keyboards/planck/keymaps/jarred/keymap.c3
-rw-r--r--keyboards/planck/keymaps/juno/config.h41
-rw-r--r--keyboards/planck/keymaps/juno/keymap.c444
-rw-r--r--keyboards/planck/keymaps/juno/readme.md8
-rw-r--r--keyboards/planck/keymaps/juno/rules.mk10
-rw-r--r--keyboards/planck/keymaps/msiu/config.h40
-rw-r--r--keyboards/planck/keymaps/msiu/keymap.c208
-rw-r--r--keyboards/planck/keymaps/msiu/readme.md2
-rw-r--r--keyboards/planck/keymaps/msiu/rules.mk1
-rw-r--r--keyboards/planck/keymaps/rjhilgefort/config.h35
-rw-r--r--keyboards/planck/keymaps/rjhilgefort/keymap.c153
-rw-r--r--keyboards/planck/keymaps/rjhilgefort/readme.md63
-rw-r--r--keyboards/planck/keymaps/rjhilgefort/rules.mk0
-rw-r--r--keyboards/planck/keymaps/samuel/README.org509
-rw-r--r--keyboards/planck/keymaps/samuel/keymap.c372
-rw-r--r--keyboards/planck/keymaps/tom/config.h39
-rw-r--r--keyboards/planck/keymaps/tom/keymap.c297
-rw-r--r--keyboards/planck/keymaps/tom/readme.md31
-rw-r--r--keyboards/planck/keymaps/tom/rules.mk1
-rw-r--r--keyboards/planck/keymaps/vxid/config.h1
-rw-r--r--keyboards/planck/keymaps/vxid/keymap.c49
-rw-r--r--keyboards/planck/keymaps/vxid/readme.md13
33 files changed, 2292 insertions, 408 deletions
diff --git a/keyboards/planck/keymaps/callum/config.h b/keyboards/planck/keymaps/callum/config.h
new file mode 100644
index 0000000000..49f61dee55
--- /dev/null
+++ b/keyboards/planck/keymaps/callum/config.h
@@ -0,0 +1,7 @@
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_INTERVAL 16
+#define MOUSEKEY_MAX_SPEED 10
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_WHEEL_DELAY 0
+#define MOUSEKEY_WHEEL_MAX_SPEED 8
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 60
diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c
index eca83d8320..02456aa7d8 100644
--- a/keyboards/planck/keymaps/callum/keymap.c
+++ b/keyboards/planck/keymaps/callum/keymap.c
@@ -13,6 +13,7 @@ enum planck_layers {
_SYMB,
_MOVE,
_FUNC,
+ _MOUSE,
};
enum planck_keycodes {
@@ -21,6 +22,7 @@ enum planck_keycodes {
SYMB,
MOVE,
FUNC,
+ MOUSE,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -101,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
* | | ~ | ` | + | = | | | \ | [ | ] | { | } | |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | | | | | | |
+ * | | | | | | | |Mouse| | | | |
* `-----------------------------------------------------------------------'
*/
[_SYMB] = {
@@ -122,41 +124,41 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
},
{
_______, _______, _______, _______,
- _______, _______, _______, _______,
+ _______, _______, _______, MOUSE,
_______, _______, _______, _______
}
},
/* MOVE
* ,-----------------------------------------------------------------------.
- * | | | | | | | |Home | Up | End | | Esc |
+ * | | | | | | |CtrUp|Home | Up | End |Caps | Esc |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | |Left |Down |Right|Caps | Del |
+ * | | | | | | |SpaL |Left |Down |Right|SpaR | Del |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | |PgDn |PgUp |TabL |TabR | |
+ * | | | | | | |CtrDn|PgDn |PgUp |TabL |TabR | |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | | | | | | |
+ * | | | | |Mouse| | | | | | | |
* `-----------------------------------------------------------------------'
*/
[_MOVE] = {
{
AC(KC_A), AC(KC_B), AC(KC_C), AC(KC_D),
- AC(KC_E), AC(KC_F), XXXXXXX, KC_HOME,
- KC_UP, KC_END, XXXXXXX, KC_ESC
+ AC(KC_E), AC(KC_F), C(KC_UP), KC_HOME,
+ KC_UP, KC_END, KC_CAPS, KC_ESC
},
{
AC(KC_G), AC(KC_H), AC(KC_I), AC(KC_J),
- AC(KC_K), AC(KC_L), XXXXXXX, KC_LEFT,
- KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL
+ AC(KC_K), AC(KC_L), C(KC_LEFT), KC_LEFT,
+ KC_DOWN, KC_RGHT, C(KC_RIGHT), KC_DEL
},
{
_______, AC(KC_M), AC(KC_N), AC(KC_O),
- AC(KC_P), AC(KC_Q), XXXXXXX, KC_PGDN,
+ AC(KC_P), AC(KC_Q), C(KC_DOWN), KC_PGDN,
KC_PGUP, SC(KC_TAB), C(KC_TAB), _______
},
{
_______, _______, _______, _______,
- _______, _______, _______, _______,
+ MOUSE, _______, _______, _______,
_______, _______, _______, _______
}
},
@@ -167,7 +169,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
* |Power| F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 |VolDn|
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | |TabL |TabR | | | | |Clmak|Qwrty| |
+ * | | |Home |TabL |TabR |End | | | |Clmak|Qwrty| |
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
* | | | | |Prev |Mute |Play |Next | | | | |
* `-----------------------------------------------------------------------'
@@ -184,8 +186,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F18, KC_F19, KC_F20, KC_VOLD
},
{
- _______, XXXXXXX, XXXXXXX, SC(KC_TAB),
- C(KC_TAB), XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, KC_HOME, SC(KC_TAB),
+ C(KC_TAB), KC_END, XXXXXXX, XXXXXXX,
XXXXXXX, COLEMAK, QWERTY, _______
},
{
@@ -193,6 +195,40 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT,
_______, _______, _______, _______
}
+ },
+
+ /* MOUSE
+ * ,-----------------------------------------------------------------------.
+ * | | | | | | | | ScL |Up | ScR | | |
+ * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
+ * | | B4 | B3 | B2 | B1 | | |Left |Down |Right| | |
+ * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
+ * | | | Ac0 | Ac1 | Ac2 | | | ScD | ScU | | | |
+ * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------'
+ */
+ [_MOUSE] = {
+ {
+ _______, _______, C(KC_LEFT), C(KC_UP),
+ C(KC_RIGHT), _______, _______, KC_WH_L,
+ KC_MS_U, KC_WH_R, _______, _______
+ },
+ {
+ _______, KC_BTN4, KC_BTN3, KC_BTN2,
+ KC_BTN1, _______, _______, KC_MS_L,
+ KC_MS_D, KC_MS_R, _______, _______
+ },
+ {
+ _______, _______, KC_ACL0, KC_ACL1,
+ KC_ACL2, _______, _______, KC_WH_D,
+ KC_WH_U, _______, _______, _______
+ },
+ {
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ }
}
};
@@ -250,6 +286,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
layer_off(_FUNC);
}
return false;
+ case MOUSE:
+ if (record->event.pressed) {
+ layer_on(_MOUSE);
+ } else {
+ layer_off(_MOUSE);
+ }
+ return false;
// Override the defualt auto shifted symbols to use SEND_STRING
// See https://github.com/qmk/qmk_firmware/issues/4072
diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md
index 176211cd4b..99b6dfbeff 100644
--- a/keyboards/planck/keymaps/callum/readme.md
+++ b/keyboards/planck/keymaps/callum/readme.md
@@ -17,68 +17,7 @@ This is a layout for the grid planck, built with a few ideals in mind:
- There should be two of every modifier (one on each side), otherwise certain
long key combinations become hard to make.
-Keys are arranged as follows. Blank keys below may actually contain
-undocumented shortcuts specific to my workflow. The base layer can be set to
-colemak or qwerty (from the function layer).
+A layout graphic can be found [here][keyboard-layout-editor] (excludes window
+management keys).
-```
-/* COLEMAK
- * ,-----------------------------------------------------------------------.
- * |Tab | Q | W | F | P | G | J | L | U | Y | ; | - |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |Bksp | A | R | S | T | D | H | N | E | I | O | ' |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |Shift| Z | X | C | V | B | K | M | , | . | / |Shift|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |FUNC |Super| Alt |Ctrl |SYMB |Enter|Space|MOVE |Ctrl | Alt |Super|FUNC |
- * `-----------------------------------------------------------------------'
- */
-
-/* QWERTY
- * ,-----------------------------------------------------------------------.
- * |Tab | Q | W | E | R | T | Y | U | I | O | P | - |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |Bksp | A | S | D | F | G | H | J | K | L | ; | ' |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |Shift| Z | X | C | V | B | N | M | , | . | / |Shift|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |FUNC |Super| Alt |Ctrl |SYMB |Enter|Space|MOVE |Ctrl | Alt |Super|FUNC |
- * `-----------------------------------------------------------------------'
- */
-
-/* SYMB
- * ,-----------------------------------------------------------------------.
- * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | ~ | ` | + | = | | | \ | [ | ] | { | } | |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | | | | | | |
- * `-----------------------------------------------------------------------'
- */
-
-/* MOVE
- * ,-----------------------------------------------------------------------.
- * | | | | | | | |Home | Up | End | | Esc |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | |Left |Down |Right|Caps | Del |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | |PgDn |PgUp | | | |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | | | | | | |
- * `-----------------------------------------------------------------------'
- */
-
-/* FUNC
- * ,-----------------------------------------------------------------------.
- * |Reset| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 |VolUp|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |Power| F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 |VolDn|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | F21 | F22 | F23 | F24 | | | | |COLMK|QWRTY| |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | |Prev |Mute |Play |Next | | | | |
- * `-----------------------------------------------------------------------'
- */
- ```
+[keyboard-layout-editor]: http://www.keyboard-layout-editor.com/#/gists/ade5ec1f814bf83046489a4b632575ff
diff --git a/keyboards/planck/keymaps/callum/rules.mk b/keyboards/planck/keymaps/callum/rules.mk
index 25d398f080..4774c2c417 100644
--- a/keyboards/planck/keymaps/callum/rules.mk
+++ b/keyboards/planck/keymaps/callum/rules.mk
@@ -3,7 +3,7 @@
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+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
diff --git a/keyboards/planck/keymaps/cbbrowne/readme.md b/keyboards/planck/keymaps/cbbrowne/readme.org
index e55b130eff..2b10058584 100644
--- a/keyboards/planck/keymaps/cbbrowne/readme.md
+++ b/keyboards/planck/keymaps/cbbrowne/readme.org
@@ -1,20 +1,18 @@
-cbbrowne custom keyboard
-==============================
+* cbbrowne custom keyboard
-Due to cbbrowne@acm.org
-Christopher Browne
+ Due to cbbrowne@acm.org
+ Christopher Browne
-This was originally based on the default keyboard map, but I have been
-doing sundry experimentation:
+ This was originally based on the default keyboard map, but I have
+ been doing sundry experimentation:
-1. Useful Experiments
-----------------------------------------
+** Useful Experiments
- * It made sense to mess around some with keyboard maps.
+ - It made sense to mess around some with keyboard maps.
- 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
- * The keypad layer also includes some sample "hacks" of cool things,
+ - The keypad layer also includes some sample "hacks" of cool things,
all using actions attached in using the function action_get_macro()
- Key [1][2] aka "q" types out my name, cbbrowne, as a fun example
of a key generating a bunch of keystrokes. The keystroke is
@@ -24,7 +22,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
- * Trying out sgoodwin's "hold Enter down to get Shift"
+ - Trying out sgoodwin's "hold Enter down to get Shift"
- Liking this Quite Well Enough...
- Applied this to both Shift and Quote
- It seems likely that Alt should get a right-hand-side, akin to this...
@@ -33,11 +31,11 @@ doing sundry experimentation:
- Emacs likes this!!! :-)
- I'm suspicious that I'll want to shift ROT_LED another location over,
so some modifier can replace the OS/KC_LGUI key
- * I have added an alternate ADJUST layer that is activated via update_tri_layer()
+ - I have added an alternate ADJUST layer that is activated via update_tri_layer()
- e.g. - LOWER+RAISE simultaneously
- This seems entirely more useful for handling my "special keys"
like the random numbers, user name, and such, than the keypad layer
- * The _ADJUST layer provides a good place to have RESET
+ - The _ADJUST layer provides a good place to have RESET
- But this isn't strictly enough; I want RESET somewhat accessible from
main layer lest an error hide that layer
- I never use the OS/KC_LGUI key (that's Command on MacOS, Windows
@@ -45,8 +43,7 @@ doing sundry experimentation:
some sort
-2. Some code structure ideas
----------------------------------------------------
+** Some code structure ideas
Each layer is given a name to aid in readability, which is then
used in the keymap matrix below. The underscores do not denote
@@ -65,57 +62,55 @@ doing sundry experimentation:
to care (beyond "start at 0", and arguably even that's not needed)
about their values.
-3. Things I did not like about the default mapping
----------------------------------------------------------
+** Things I did not like about the default mapping
- * I found control too hard to get to. I use it more than Tab, so
+
+ - I found control too hard to get to. I use it more than Tab, so
switched it there.
- * Having dash on [lower-j] is a bit nonintuitive, but may be OK
- * I switched ESC/TAB/M(0) around
- * I'm suspicious that I want to shift M(0) from [4][1] to [4][2],
+ - Having dash on [lower-j] is a bit nonintuitive, but may be OK
+ - I switched ESC/TAB/M(0) around
+ - I'm suspicious that I want to shift M(0) from [4][1] to [4][2],
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 needed to swap ' and ENTER
-4. Unuseful experiments
----------------------------------------------------------
+** Unuseful experiments
I have tried some things out that didn't turn out particularly well.
I'll note some of these for posterity, hopefully helpful in not doing
unwise things again...
- * I tried added Workman alongside Dvorak and Colemak
+ - 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
- * Space Cadet Shift; switching L_SHIFT to KC_LSP0, so that when I
+ - Space Cadet Shift; switching L_SHIFT to KC_LSP0, so that when I
just hit SHIFT, I get a left parens. In principle, this is great
for Lisping.
- Unfortunately, there are times when mouse interfaces use SHIFT
to allow selecting multiple items, and this really interferes
with that
-5. TODO
----------------------------------------------------------
+** TODO
- * I use tmux quite a lot; the mollat keymap seems to have some
+ - 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
- Keys for...
- Picking windows 0 thru 8
- next/prev/new window
- * The mollat tmux layer also suggests some thoughts about Emacs
+ - The mollat tmux layer also suggests some thoughts about Emacs
helpers.
- * I do not presently have anything that handles X11 screen
+ - 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
+ - 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:
+ - The jeebak keymap seems to have some neat ideas:
- Number layer which is aggressive about having numbers in several places
- TouchCursor layer seems interesting
- It sets up a layer with cursor keys on the home keys
- * The jeremy-dev keymap has some very interesting concepts
+ - The jeremy-dev keymap has some very interesting concepts
- Shift hands outwards; the special keys go in the center
- Symbol layer has some compound keys for C operators like /=, *=, -=, +=, ...
- This is likely what I'll use for my XD75re, and maybe I'll fork a
diff --git a/keyboards/planck/keymaps/dcompact/keymap.c b/keyboards/planck/keymaps/dcompact/keymap.c
index 79c9831509..0893059a0d 100644
--- a/keyboards/planck/keymaps/dcompact/keymap.c
+++ b/keyboards/planck/keymaps/dcompact/keymap.c
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH},
{ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS},
{ DEL_SHF, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_BSPC},
- { KC_LCTL, PLOVER, KC_LGUI, KC_LALT, LOWER, KC_LSFT, KC_SPC, RAISE, KC_RALT, KC_RGUI, FUNC, KC_ENT}
+ { KC_LCTL, PLOVER, KC_LGUI, KC_LALT, LOWER, KC_LSFT, KC_SPC, RAISE, KC_RALT, KC_RGUI, FUNC, KC_ENT}
},
/* Lower
diff --git a/keyboards/planck/keymaps/dcompact/README.md b/keyboards/planck/keymaps/dcompact/readme.md
index d3e4c7a62d..cd88c3fed3 100644
--- a/keyboards/planck/keymaps/dcompact/README.md
+++ b/keyboards/planck/keymaps/dcompact/readme.md
@@ -34,10 +34,10 @@ merge with those in the keyboard folder_
## Relevant Links
-- ![Online Dvorak Layout Trainer](https://learn.dvorak.nl/)
-- ![Dvorak Wikipedia Page](https://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard)
-- ![QMK Docs](https://docs.qmk.fm/#/)
-- ![QMK KeyCode Reference](https://docs.qmk.fm/#/keycodes)
+- [Online Dvorak Layout Trainer](https://learn.dvorak.nl/)
+- [Dvorak Wikipedia Page](https://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard)
+- [QMK Docs](https://docs.qmk.fm/#/)
+- [QMK KeyCode Reference](https://docs.qmk.fm/#/keycodes)
## Contact
diff --git a/keyboards/planck/keymaps/dsanchezseco/config.h b/keyboards/planck/keymaps/dsanchezseco/config.h
new file mode 100644
index 0000000000..6fa31cc8a7
--- /dev/null
+++ b/keyboards/planck/keymaps/dsanchezseco/config.h
@@ -0,0 +1,39 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+// Most tactile encoders have detents every 4 stages
+#define ENCODER_RESOLUTION 4
+
diff --git a/keyboards/planck/keymaps/dsanchezseco/keymap.c b/keyboards/planck/keymaps/dsanchezseco/keymap.c
new file mode 100644
index 0000000000..311cc110bf
--- /dev/null
+++ b/keyboards/planck/keymaps/dsanchezseco/keymap.c
@@ -0,0 +1,116 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+enum planck_keycodes {
+ DVORAK,
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | " | , | . | P | Y | F | G | C | R | L | / |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S | - |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI |Lower | Space | Bksp |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = LAYOUT_planck_grid(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINUS,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, KC_BSPC, 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 | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | AltGr| | | | Del | | Play | Vol- | Vol+ | Next |
+ * `-----------------------------------------------------------------------------------'
+ * ^-- sticky
+ */
+[_LOWER] = LAYOUT_planck_grid(
+ 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_HOME, KC_END, KC_ENT,
+ _______, OSM(MOD_RALT), _______, _______, _______, _______, KC_DEL, _______, KC_MPLY, KC_VOLD, KC_VOLU, KC_MNXT
+),
+
+/* 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 / |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | AltGr| | | | Del | | Play | Vol- | Vol+ | Next |
+ * `-----------------------------------------------------------------------------------'
+ * ^-- sticky
+ */
+[_RAISE] = LAYOUT_planck_grid(
+ 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, KC_PGUP, KC_PGDN, KC_ENT,
+ _______, OSM(MOD_RALT), _______, _______, _______, _______, KC_DEL, _______, KC_MPLY, KC_VOLD, KC_VOLU, KC_MNXT
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|AGnorm|AGswap| | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_grid(
+ _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
diff --git a/keyboards/planck/keymaps/dsanchezseco/readme.md b/keyboards/planck/keymaps/dsanchezseco/readme.md
new file mode 100644
index 0000000000..de9680b498
--- /dev/null
+++ b/keyboards/planck/keymaps/dsanchezseco/readme.md
@@ -0,0 +1,2 @@
+# The Default Planck Layout
+
diff --git a/keyboards/planck/keymaps/dsanchezseco/rules.mk b/keyboards/planck/keymaps/dsanchezseco/rules.mk
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/keyboards/planck/keymaps/dsanchezseco/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/planck/keymaps/jarred/keymap.c b/keyboards/planck/keymaps/jarred/keymap.c
index 6697c4ea48..5911669086 100644
--- a/keyboards/planck/keymaps/jarred/keymap.c
+++ b/keyboards/planck/keymaps/jarred/keymap.c
@@ -19,6 +19,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = LAYOUT_planck_grid_wrapper(QWERTY_4x12),
+ [_GAME] = LAYOUT_planck_grid_wrapper(GAME_4x12),
[_LW] = LAYOUT_planck_grid_wrapper(LOWER_4x12),
[_NV] = LAYOUT_planck_grid_wrapper(NAV_4x12),
[_NP] = LAYOUT_planck_grid_wrapper(NUMPAD_4x12),
@@ -30,4 +31,4 @@ void rgb_matrix_indicators_user(void) {
// Disable light in middle of 2U position
rgb_matrix_set_color(42, 0, 0, 0);
}
-#endif \ No newline at end of file
+#endif
diff --git a/keyboards/planck/keymaps/juno/config.h b/keyboards/planck/keymaps/juno/config.h
new file mode 100644
index 0000000000..eae636c57e
--- /dev/null
+++ b/keyboards/planck/keymaps/juno/config.h
@@ -0,0 +1,41 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+// Most tactile encoders have detents every 4 stages
+#define ENCODER_RESOLUTION 4
+
+// Reduce power consumption for iOS compatibility
+#define USB_MAX_POWER_CONSUMPTION 100 \ No newline at end of file
diff --git a/keyboards/planck/keymaps/juno/keymap.c b/keyboards/planck/keymaps/juno/keymap.c
new file mode 100644
index 0000000000..a34a9e9480
--- /dev/null
+++ b/keyboards/planck/keymaps/juno/keymap.c
@@ -0,0 +1,444 @@
+#include QMK_KEYBOARD_H
+#include "muse.h"
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _PLOVER,
+ _ADJUST,
+
+ _FN1,
+ _DPAD,
+ _DPADNUM
+};
+
+enum planck_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ DVORAK,
+ PLOVER,
+ BACKLIT,
+ EXT_PLV,
+
+ FN1,
+ DP_ON,
+ DP_OFF
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | ESC | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | App | Ctrl | GUI | Alt |Lower | SpaceFn |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_planck_grid(
+ 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_TAB, 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, RSFT_T(KC_ENT),
+ KC_APP, KC_LCTL, KC_LGUI, KC_LALT, LOWER, LT(_FN1, KC_SPC),
+ LT(_FN1, KC_SPC), RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
+),
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT_planck_grid(
+ 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, KC_ENT ,
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S | / |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = LAYOUT_planck_grid(
+ 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 ,
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_planck_grid(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ 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, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_planck_grid(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ 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_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Plover layer (http://opensteno.org)
+ * ,-----------------------------------------------------------------------------------.
+ * | # | # | # | # | # | # | # | # | # | # | # | # |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | S | T | P | H | * | * | F | P | L | T | D |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | S | K | W | R | * | * | R | B | G | S | Z |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Exit | | | A | O | | E | U | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+[_PLOVER] = LAYOUT_planck_grid(
+ 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_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_grid(
+ _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+// Two personal additional layers below
+
+/* Personal custom Fn layer
+ * ,-----------------------------------------------------------------------------------.
+ * | | Vol+ | PgUp | Up | PdDn | Ins | | | Up | | PScr | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | Vol- | Left | Down | Right| Home | | Left | Down |Right | | Del |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | Prev | Play | Next | Brite| End | | | Vol- | Vol+ | Mute | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Caps | | | | | Space | | DP_ON| | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_FN1] = LAYOUT_planck_grid(
+ _______, KC_VOLU, KC_PGUP, KC_UP, KC_PGDN, KC_INS, _______, _______, KC_UP, _______, KC_PSCR, _______,
+ _______, KC_VOLD, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL ,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, BACKLIT, KC_END, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, DP_ON, _______, _______, _______
+),
+
+/* DPAD layer, to activate arrow cluster at the bottom right corner
+
+ * ,-----------------------------------------------------------------------------------.
+ * | ESC | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | Alt | |DNUM | Space | |DP_OFF| Left | Down |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+[_DPAD] = LAYOUT_planck_grid(
+ 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_TAB, 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, KC_LALT, XXXXXXX, MO(_DPADNUM),
+ KC_SPC, KC_SPC, LOWER, DP_OFF, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+// Extended layer for weapon switching
+
+[_DPADNUM] = LAYOUT_planck_grid(
+ XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, _______, _______, XXXXXXX, MO(_DPADNUM),
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+)
+
+
+};
+
+#ifdef AUDIO_ENABLE
+ float plover_song[][2] = SONG(PLOVER_SOUND);
+ float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
+
+ // Borrowing audio from unused audio
+ // Caps Lock on and off sound too similar
+
+ float caps_song_on[][2] = SONG(NUM_LOCK_ON_SOUND);
+ float caps_song_off[][2] = SONG(SCROLL_LOCK_ON_SOUND);
+
+ float dpad_song_on[][2] = SONG(ZELDA_PUZZLE);
+ float dpad_song_off[][2] = SONG(SONIC_RING);
+#endif
+
+uint32_t layer_state_set_user(uint32_t state) {
+
+ // LED control, lighting up when Fn layer is activated
+
+ state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+
+ switch (biton32(state)) {
+ case _QWERTY:
+ backlight_set(0);
+ break;
+ case _FN1:
+ backlight_set(3);
+ break;
+ case _DPAD:
+ backlight_set(3);
+ break;
+ }
+
+ return state;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ print("mode just switched to qwerty and this is a huge string\n");
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ break;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ break;
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ #ifdef KEYBOARD_planck_rev5
+ PORTE &= ~(1<<6);
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ #ifdef KEYBOARD_planck_rev5
+ PORTE |= (1<<6);
+ #endif
+ }
+ return false;
+ break;
+ case PLOVER:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ PLAY_SONG(plover_song);
+ #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_SONG(plover_gb_song);
+ #endif
+ layer_off(_PLOVER);
+ }
+ return false;
+ break;
+
+
+// Play audio upon switching Caps Lock and custom layers
+
+ case KC_CAPS:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
+ PLAY_SONG(caps_song_off);
+ } else {
+ PLAY_SONG(caps_song_on);
+ }
+ #endif
+ }
+ return true;
+
+ case DP_ON:
+ if (record->event.pressed) {
+
+ } else {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(dpad_song_on);
+ #endif
+
+ layer_off(_FN1);
+ layer_on(_DPAD);
+ }
+
+ case DP_OFF:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(dpad_song_off);
+ #endif
+
+ layer_off(_DPAD);
+ }
+ }
+ return true;
+}
+
+bool muse_mode = false;
+uint8_t last_muse_note = 0;
+uint16_t muse_counter = 0;
+uint8_t muse_offset = 70;
+uint16_t muse_tempo = 50;
+
+void encoder_update(bool clockwise) {
+ if (muse_mode) {
+ if (IS_LAYER_ON(_RAISE)) {
+ if (clockwise) {
+ muse_offset++;
+ } else {
+ muse_offset--;
+ }
+ } else {
+ if (clockwise) {
+ muse_tempo+=1;
+ } else {
+ muse_tempo-=1;
+ }
+ }
+ } else {
+ if (clockwise) {
+ register_code(KC_PGDN);
+ unregister_code(KC_PGDN);
+ } else {
+ register_code(KC_PGUP);
+ unregister_code(KC_PGUP);
+ }
+ }
+}
+
+void dip_update(uint8_t index, bool active) {
+ switch (index) {
+ case 0:
+ if (active) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_song);
+ #endif
+ layer_on(_ADJUST);
+ } else {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_gb_song);
+ #endif
+ layer_off(_ADJUST);
+ }
+ break;
+ case 1:
+ if (active) {
+ muse_mode = true;
+ } else {
+ muse_mode = false;
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ #endif
+ }
+ }
+}
+
+void matrix_scan_user(void) {
+ #ifdef AUDIO_ENABLE
+ if (muse_mode) {
+ if (muse_counter == 0) {
+ uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+ if (muse_note != last_muse_note) {
+ stop_note(compute_freq_for_midi_note(last_muse_note));
+ play_note(compute_freq_for_midi_note(muse_note), 0xF);
+ last_muse_note = muse_note;
+ }
+ }
+ muse_counter = (muse_counter + 1) % muse_tempo;
+ }
+ #endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+} \ No newline at end of file
diff --git a/keyboards/planck/keymaps/juno/readme.md b/keyboards/planck/keymaps/juno/readme.md
new file mode 100644
index 0000000000..a93a0643d5
--- /dev/null
+++ b/keyboards/planck/keymaps/juno/readme.md
@@ -0,0 +1,8 @@
+# Juno Layout
+created by Juno Nguyen
+juno.ngx@gmail.com
+
+## Feature:
+* Pok3r-inspired functional layer.
+* Rearranged numerics for maximum efficiency.
+
diff --git a/keyboards/planck/keymaps/juno/rules.mk b/keyboards/planck/keymaps/juno/rules.mk
new file mode 100644
index 0000000000..e9f1b13360
--- /dev/null
+++ b/keyboards/planck/keymaps/juno/rules.mk
@@ -0,0 +1,10 @@
+BACKLIGHT_ENABLE = yes
+
+SRC += muse.c
+
+MIDI_ENABLE=no
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration \ No newline at end of file
diff --git a/keyboards/planck/keymaps/msiu/config.h b/keyboards/planck/keymaps/msiu/config.h
new file mode 100644
index 0000000000..40e399a675
--- /dev/null
+++ b/keyboards/planck/keymaps/msiu/config.h
@@ -0,0 +1,40 @@
+#pragma once
+
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+// Most tactile encoders have detents every 4 stages
+#define ENCODER_RESOLUTION 4
+
diff --git a/keyboards/planck/keymaps/msiu/keymap.c b/keyboards/planck/keymaps/msiu/keymap.c
new file mode 100644
index 0000000000..aea59e8d77
--- /dev/null
+++ b/keyboards/planck/keymaps/msiu/keymap.c
@@ -0,0 +1,208 @@
+#include QMK_KEYBOARD_H
+#include "muse.h"
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+ _QWERTY,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _NUMB,
+ _FUNC,
+ _ADJUST
+};
+
+enum planck_keycodes {
+ QWERTY = SAFE_RANGE,
+ DVORAK,
+ BACKLIT,
+ EXT_PLV
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = LAYOUT_planck_grid(
+ LT(_NUMB, KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ LCTL_T(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_HYPR, KC_LALT, KC_LGUI, LOWER, MO(_FUNC), KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+[_DVORAK] = LAYOUT_planck_grid(
+ _______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, _______,
+ _______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ _______, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+[_LOWER] = LAYOUT_planck_grid(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, 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, KC_PGDN, KC_PGUP, KC_HOME, KC_END , KC_MUTE,
+ _______, _______, _______, _______, _______, _______, KC_MPLY, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT
+),
+
+[_RAISE] = LAYOUT_planck_grid(
+ 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_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_PGDN, KC_PGUP, KC_HOME, KC_END , KC_MUTE,
+ _______, _______, _______, _______, _______, _______, KC_MPLY, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT
+),
+
+[_ADJUST] = LAYOUT_planck_grid(
+ _______, _______, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, DVORAK, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF,_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
+),
+
+[_FUNC] = LAYOUT_planck_grid(
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, KC_PSCR, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+[_NUMB] = LAYOUT_planck_grid(
+ _______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, KC_BSPC,
+ _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_0, KC_0, _______, _______, _______
+)
+
+
+};
+
+#ifdef AUDIO_ENABLE
+ float plover_song[][2] = SONG(PLOVER_SOUND);
+ float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
+#endif
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ print("mode just switched to qwerty and this is a huge string\n");
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ break;
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ #ifdef KEYBOARD_planck_rev5
+ PORTE &= ~(1<<6);
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ #ifdef KEYBOARD_planck_rev5
+ PORTE |= (1<<6);
+ #endif
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+bool muse_mode = false;
+uint8_t last_muse_note = 0;
+uint16_t muse_counter = 0;
+uint8_t muse_offset = 70;
+uint16_t muse_tempo = 50;
+
+void encoder_update(bool clockwise) {
+ if (muse_mode) {
+ if (IS_LAYER_ON(_RAISE)) {
+ if (clockwise) {
+ muse_offset++;
+ } else {
+ muse_offset--;
+ }
+ } else {
+ if (clockwise) {
+ muse_tempo+=1;
+ } else {
+ muse_tempo-=1;
+ }
+ }
+ } else {
+ if (clockwise) {
+ register_code(KC_PGDN);
+ unregister_code(KC_PGDN);
+ } else {
+ register_code(KC_PGUP);
+ unregister_code(KC_PGUP);
+ }
+ }
+}
+
+void dip_update(uint8_t index, bool active) {
+ switch (index) {
+ case 0:
+ if (active) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_song);
+ #endif
+ layer_on(_ADJUST);
+ } else {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_gb_song);
+ #endif
+ layer_off(_ADJUST);
+ }
+ break;
+ case 1:
+ if (active) {
+ muse_mode = true;
+ } else {
+ muse_mode = false;
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ #endif
+ }
+ }
+}
+
+void matrix_scan_user(void) {
+ #ifdef AUDIO_ENABLE
+ if (muse_mode) {
+ if (muse_counter == 0) {
+ uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+ if (muse_note != last_muse_note) {
+ stop_note(compute_freq_for_midi_note(last_muse_note));
+ play_note(compute_freq_for_midi_note(muse_note), 0xF);
+ last_muse_note = muse_note;
+ }
+ }
+ muse_counter = (muse_counter + 1) % muse_tempo;
+ }
+ #endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/planck/keymaps/msiu/readme.md b/keyboards/planck/keymaps/msiu/readme.md
new file mode 100644
index 0000000000..de9680b498
--- /dev/null
+++ b/keyboards/planck/keymaps/msiu/readme.md
@@ -0,0 +1,2 @@
+# The Default Planck Layout
+
diff --git a/keyboards/planck/keymaps/msiu/rules.mk b/keyboards/planck/keymaps/msiu/rules.mk
new file mode 100644
index 0000000000..dcf16bef39
--- /dev/null
+++ b/keyboards/planck/keymaps/msiu/rules.mk
@@ -0,0 +1 @@
+SRC += muse.c
diff --git a/keyboards/planck/keymaps/rjhilgefort/config.h b/keyboards/planck/keymaps/rjhilgefort/config.h
new file mode 100644
index 0000000000..672c5d570f
--- /dev/null
+++ b/keyboards/planck/keymaps/rjhilgefort/config.h
@@ -0,0 +1,35 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
diff --git a/keyboards/planck/keymaps/rjhilgefort/keymap.c b/keyboards/planck/keymaps/rjhilgefort/keymap.c
new file mode 100644
index 0000000000..455aa5a364
--- /dev/null
+++ b/keyboards/planck/keymaps/rjhilgefort/keymap.c
@@ -0,0 +1,153 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+enum planck_keycodes {
+ // QWERTY = SAFE_RANGE,
+ BACKLIT,
+ EXT_PLV
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+#define CTRL_ESC MT(MOD_LCTL, KC_ESC)
+#define HYPER LCTL(LALT(QK_LGUI))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+* ,-------------------------------------------------------------------------------------------------------.
+* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+* |--------+--------+--------+--------+--------+-------+-------+------+--------+--------+--------+--------|
+* | Ct/Esc | A | S | D | F | G | H | J | K | L | ; | " |
+* |--------+--------+--------+--------+--------+-------+-------+------+--------+--------+--------+--------|
+* | Shift | Z | X | C | V | B | N | M | , | . | / | Enter |
+* |--------+--------+--------+--------+--------+-------+-------+------+--------+--------+--------+--------|
+* | | Ctrl | Raise | Alt | GUI | Space | Lowr | Hyper | | | Raise |
+* `-------------------------------------------------------------------------------------------------------'
+*/
+[_QWERTY] = LAYOUT_planck_grid(
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
+ {CTRL_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, RAISE, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, LOWER, HYPER, _______, _______, RAISE }
+),
+
+/* Lower
+* ,-----------------------------------------------------------------------------------------------------------.
+* | | \ | / | [ | ] | ~ | | | = | + | - | _ | |
+* |-------+--------+--------+--------+--------+--------+--------+--------+--------+---------+--------+--------|
+* | | { | } | ( | ) | ` | ← | ↓ | ↑ | → | Alt | |
+* |-------+--------+--------+--------+--------+--------+--------+--------+--------+---------+--------+--------|
+* | | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
+* |-------+--------+--------+--------+--------+--------+--------+--------+--------+---------+--------+--------|
+* | | | | | | | | | | | |
+* `-----------------------------------------------------------------------------------------------------------'
+*/
+[_LOWER] = LAYOUT_planck_grid(
+ {_______, KC_BSLS, KC_SLSH, KC_LBRC, KC_RBRC, KC_TILD, KC_PIPE, KC_EQL, KC_PLUS, KC_MINS, KC_UNDS, _______},
+ {_______, KC_LCBR, KC_RCBR, KC_LPRN, KC_RPRN, KC_GRV, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_LALT, _______},
+ {_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+),
+
+/* Raise
+* ,----------------------------------------------------------------------------------------------------------.
+* | | | | | | | | 7 | 8 | 9 | | |
+* |-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+* | | VolMte | Vol - | Vol + | Ply/Pse| | | 4 | 5 | 6 | | |
+* |-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+* | | Trak ← | Trak → | Scrn - | Scrn + | | | 1 | 2 | 3 | | |
+* |-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+* | | | | | | | | 0 | . | | |
+* `----------------------------------------------------------------------------------------------------------'
+*/
+[_RAISE] = LAYOUT_planck_grid(
+ {_______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______},
+ {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, KC_4, KC_5, KC_6, _______, _______},
+ {_______, KC_MRWD, KC_MFFD, KC_SLCK, KC_PAUS, _______, _______, KC_1, KC_2, KC_3, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, KC_0, KC_0, KC_DOT, _______, _______}
+),
+
+/* Adjust (Lower + Raise)
+ * ,----------------------------------------------------------------------------------------------------------.
+ * | | Reset | | | | | | | | | | Del |
+ * |-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | MuMod | AudOn | AudOff | | | Qwerty | | | | |
+ * |-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | Voice- | Voice+ | MusOn | Musoff | MIDIon | MIDIof | TermOn | TermOff| | | |
+ * |-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | | | |
+ * `----------------------------------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_grid(
+ {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL },
+ {_______, _______, MU_MOD, AU_ON, AU_OFF, _______, _______, QWERTY, _______, _______, _______, _______},
+ {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+)
+
+};
+
+#ifdef AUDIO_ENABLE
+ float plover_song[][2] = SONG(PLOVER_SOUND);
+ float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
+#endif
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
+
+/*
+* Example
+* ,----------------------------------------------------------------------------------------------------------.
+* | | | | | | | | | | | | |
+* |-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+* | | | | | | | | | | | | |
+* |-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+* | | | | | | | | | | | | |
+* |-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+* | | | | | | | | | | | |
+* `----------------------------------------------------------------------------------------------------------'
+*
+[_EXAMPLE] = LAYOUT_planck_grid(
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+),
+*/
diff --git a/keyboards/planck/keymaps/rjhilgefort/readme.md b/keyboards/planck/keymaps/rjhilgefort/readme.md
new file mode 100644
index 0000000000..f446a76194
--- /dev/null
+++ b/keyboards/planck/keymaps/rjhilgefort/readme.md
@@ -0,0 +1,63 @@
+# [🐦 @rjhilgefort](https://twitter.com/rjhilgefort) Planck Layout
+
+A simple and practical layout featuring:
+
+- Hyper Key === CTRL + ALT + GUI
+- Ctrl/Esc key that is CTRL when held and ESC when tapped
+- Symbols layer that focuses on coding
+- Numpad + media layer
+
+![Imgur](https://i.imgur.com/elygxAb.jpg)
+
+
+## Main
+```
+,-------------------------------------------------------------------------------------------------------.
+| Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+|--------|--------|--------|--------|--------|-------|-------|------|--------|--------|--------|--------|
+| Ct/Esc | A | S | D | F | G | H | J | K | L | ; | " |
+|--------|--------|--------|--------|--------|-------|-------|------|--------|--------|--------|--------|
+| Shift | Z | X | C | V | B | N | M | , | . | / | Enter |
+|--------|--------|--------|--------|--------|-------|-------|------|--------|--------|--------|--------|
+| | Ctrl | Raise | Alt | GUI | Space | Lowr | Hyper | | | Raise |
+`-------------------------------------------------------------------------------------------------------'
+```
+
+## Lower
+```
+,-----------------------------------------------------------------------------------------------------------.
+| | \ | / | [ | ] | ~ | | | = | + | - | _ | |
+|-------|--------|--------|--------|--------|--------|--------|--------|--------|---------|--------|--------|
+| | { | } | ( | ) | ` | ← | ↓ | ↑ | → | Alt | |
+|-------|--------|--------|--------|--------|--------|--------|--------|--------|---------|--------|--------|
+| | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
+|-------|--------|--------|--------|--------|--------|--------|--------|--------|---------|--------|--------|
+| | | | | | | | | | | |
+`-----------------------------------------------------------------------------------------------------------'
+```
+
+## Raise
+```
+,----------------------------------------------------------------------------------------------------------.
+| | | | | | | | 7 | 8 | 9 | | |
+|-------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|
+| | VolMte | Vol - | Vol + | Ply/Pse| | | 4 | 5 | 6 | | |
+|-------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|
+| | Trak ← | Trak → | Scrn - | Scrn + | | | 1 | 2 | 3 | | |
+|-------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|
+| | | | | | | | 0 | . | | |
+`----------------------------------------------------------------------------------------------------------'
+```
+
+## Adjust (Lower + Raise)
+```
+,----------------------------------------------------------------------------------------------------------.
+| | Reset | | | | | | | | | | Del |
+|-------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|
+| | | MuMod | AudOn | AudOff | | | Qwerty | | | | |
+|-------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|
+| | Voice- | Voice+ | MusOn | Musoff | MIDIon | MIDIof | TermOn | TermOff| | | |
+|-------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|
+| | | | | | | | | | | |
+`----------------------------------------------------------------------------------------------------------'
+```
diff --git a/keyboards/planck/keymaps/rjhilgefort/rules.mk b/keyboards/planck/keymaps/rjhilgefort/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/planck/keymaps/rjhilgefort/rules.mk
diff --git a/keyboards/planck/keymaps/samuel/README.org b/keyboards/planck/keymaps/samuel/README.org
index d0750ee03a..3c0f08a9d9 100644
--- a/keyboards/planck/keymaps/samuel/README.org
+++ b/keyboards/planck/keymaps/samuel/README.org
@@ -5,7 +5,7 @@ This is my qmk firmware for my keyboard. I grew tired of organizing the keycode
array in plain text so I made it a literate .org file. I've never done this
before, so bear with me.
-* Keymap
+* Layers
#+BEGIN_COMMENT
#+NAME: empty-layer
@@ -19,7 +19,7 @@ before, so bear with me.
#+END_COMMENT
This is my "pretty" org mode organized table for my main dvorak layer. If you
-don't use org mode, it won't be that exiting, but if you enjoy working in org
+don't use org mode, it won't be that exciting, but if you enjoy working in org
mode, you can edit this table directly, and this file is tangled to the actual
keymap. No more organizing spaces or converting to and from comments.
@@ -31,23 +31,45 @@ keymap. No more organizing spaces or converting to and from comments.
| T_LGUI | T_LALT | UP | DOWN | BSPC | TAB | ENT | SPC | LEFT | RIGHT | T_RALT | T_RGUI |
|--------+--------+------+------+------+-----+-----+-----+------+-------+--------+--------|
+This qwerty layout is just so normal people can try out the board. Tap keys
+would need to be customized I think, more on that later. I also put another
+dvorak key here because I have nightmares of getting trapped in this forsaken
+layout.
+
+#+NAME: qwerty-layer
+|--------+--------+----+------+------+-----+-----+-----+------+-------+--------+--------|
+| T_LRSE | Q | W | E | R | T | Y | U | I | O | P | T_RRSE |
+| T_LSFT | A | S | D | F | G | H | J | K | L | SCLN | T_RSFT |
+| T_LCTL | Z | X | C | V | B | N | M | COMM | DOT | QUOT | T_RCTL |
+| T_LGUI | T_LALT | UP | DOWN | BSPC | TAB | ENT | SPC | LEFT | RIGHT | T_RALT | DVORAK |
+|--------+--------+----+------+------+-----+-----+-----+------+-------+--------+--------|
+
I tried to keep my layout bare bones, just what would be available on a normal
-keyboard, minus some keys I never used. The bottom left copies a normal
+keyboard, minus some keys I never used. This one secondary layer should cover a
+majority of the keys not found on the home layer. The bottom left copies a normal
keyboards symbols from shifted numbers, and the rest is placed where convenient,
with some considerations for one handed use, hence the shortcuts in the top
left.
-#+TODO: qwerty layer for ma friends
-
#+NAME: secondary-layer
-|----+--------+--------+--------+--------+------+------+----+--------+--------+-----+----|
-| -- | EZUNDO | EZCOPY | EZCUT | EZPSTE | INS | EQL | 7 | 8 | 9 | F11 | -- |
-| -- | ESC | CAPS | PGUP | PGDN | F4 | ASTR | 4 | 5 | 6 | 0 | -- |
-| -- | EXLM | AT | HASH | DLR | PERC | CIRC | 1 | 2 | 3 | F12 | -- |
-| -- | -- | EZUP | EZDOWN | -- | AMPR | PIPE | -- | EZLEFT | EZRGHT | -- | -- |
-|----+--------+--------+--------+--------+------+------+----+--------+--------+-----+----|
-
-But wait, we are missing several important keys!? yes, well, the modifier keys
+|--------+--------+--------+--------+--------+------+------+-----+--------+--------+-------+--------|
+| -- | EZUNDO | EZCOPY | EZCUT | EZPSTE | INS | EQL | 7 | 8 | 9 | -- | -- |
+| EZSHFT | ESC | CAPS | PGUP | PGDN | HOME | ASTR | 4 | 5 | 6 | 0 | EZSHFT |
+| EZCTRL | EXLM | AT | HASH | DLR | PERC | CIRC | 1 | 2 | 3 | COM | EZCTRL |
+| EZGUI | EZALT | EZUP | EZDOWN | SPC | AMPR | PIPE | END | EZLEFT | EZRGHT | EZALT | EZGUI |
+|--------+--------+--------+--------+--------+------+------+-----+--------+--------+-------+--------|
+
+Basic command layer for one-shot macros and function keys.
+
+#+NAME: command-layer
+|----+-----+-----+-----+-----+--------+--------+------+-------+------+-----+----|
+| -- | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | -- |
+| -- | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | -- |
+| -- | F21 | F22 | F23 | F24 | QWERTY | DVORAK | USER | EMAIL | NAME | -- | -- |
+| -- | -- | -- | -- | -- | -- | -- | DIR | -- | -- | -- | -- |
+|----+-----+-----+-----+-----+--------+--------+------+-------+------+-----+----|
+
+But wait, we are missing several important keys? well, yes, but the modifier keys
all do other keys when tapped. More about that in the keymap section.
* Keymap Conversion in Python
@@ -55,7 +77,7 @@ all do other keys when tapped. More about that in the keymap section.
This python can convert that table into the array needed for the keymap file. It
simply prepends every key with "KC_". I used to use a dictionary to convert some
keys from the table into qmk keycodes, but the double convertion was
-unneccessary so I simply prepended all my macros with KC and moved all the
+unneccessary so I just prepended all my macros with KC and moved all the
implementation to the `process-user-input` function.
#+NAME:layer-to-array
@@ -84,55 +106,69 @@ return results
* keymap.c
-Now that we have done all the hard work, lets layout our keymap file then define
-our macros.
-
-** Headers And Layer Declaration
+Now that we laid out our layout, lets lay out our kemap file.
#+BEGIN_SRC C :noweb yes
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
-static uint16_t tap_timers[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-char last_mod = -1;
+#+END_SRC
-enum planck_layers {
- _DVORAK,
- _RISE
-};
+** Keycodes
+#+BEGIN_SRC C :noweb yes
// where the 'T_' communicates how the key does something different when tapped.
enum planck_keycodes {
- DVORAK = SAFE_RANGE,
- KC_T_LALT,
- KC_T_RALT,
- KC_T_LGUI,
- KC_T_RGUI,
- KC_T_LCTL,
- KC_T_RCTL,
- KC_T_LSFT,
- KC_T_RSFT,
- KC_T_LRSE,
- KC_T_RRSE,
- KC_EZRGHT,
- KC_EZLEFT,
- KC_EZUP,
- KC_EZDOWN,
- KC_EZUNDO,
- KC_EZCOPY,
- KC_EZCUT,
- KC_EZPSTE
+//DVORAK = SAFE_RANGE,
+KC_T_LALT = SAFE_RANGE,
+KC_T_RALT,
+KC_T_LGUI,
+KC_T_RGUI,
+KC_T_LCTL,
+KC_T_RCTL,
+KC_T_LSFT,
+KC_T_RSFT,
+KC_T_LRSE,
+KC_T_RRSE,
+KC_EZRGHT,
+KC_EZLEFT,
+KC_EZUP,
+KC_EZDOWN,
+KC_EZUNDO,
+KC_EZCOPY,
+KC_EZCUT,
+KC_EZPSTE,
+KC_EZSHFT,
+KC_EZCTRL,
+KC_EZGUI,
+KC_EZALT,
+KC_DVORAK,
+KC_QWERTY,
+KC_USER,
+KC_EMAIL,
+KC_NAME,
+KC_DIR,
+KC_COM
};
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
#+END_SRC
** Import Key table
#+BEGIN_SRC C :noweb yes
+enum planck_layers {
+_DVORAK,
+_QWERTY,
+_RISE,
+_COMMAND
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+#+END_SRC
+
+#+BEGIN_SRC C :noweb yes
[_DVORAK] =
#+END_SRC
@@ -143,6 +179,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#+END_SRC
#+BEGIN_SRC C :noweb yes
+[_QWERTY] =
+
+#+END_SRC
+
+#+BEGIN_SRC C :noweb yes
+<<layer-to-array(qwerty-layer)>>
+
+#+END_SRC
+
+#+BEGIN_SRC C :noweb yes
[_RISE] =
#+END_SRC
@@ -152,50 +198,96 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#+END_SRC
-** Process User Input
-*** Tap Key Functionality
+#+BEGIN_SRC C :noweb yes
+[_COMMAND] =
-These methods define how I implemented the tap mechanic. Basically, I believe
-that /pressing/ any other key should be grounds for the hold functionality to be
-assumed. My natuaral typing style experiences no delays from my method.
+#+END_SRC
+
+#+BEGIN_SRC C :noweb yes
+<<layer-to-array(command-layer)>>
+
+#+END_SRC
#+BEGIN_SRC C :noweb yes
};
-void mod_press(uint16_t hold_code, int id) {
- tap_timers[id] = timer_read();
- last_mod = id;
- register_code(hold_code);
+#+END_SRC
+
+** Tap Keys
+
+I don't like tap keys coming out on release. When modified, I often let go of
+the modifier too early because the tap button doesn't come out untill release. I
+guess you could save the state of the board on press and then apply it after the
+timer, but what I really want is the keys to come out on press when they can and
+when it is most useful. For me, that is when they are modified a single time. So
+I kind "locked" the board into only doing single modifiers, making them faster.
+Disadvantages are double modified keys must be done with one shot keys (its
+actually not that bad, it feels like emacs!) and triple modified keys are
+impossible at the moment.
+
+#+BEGIN_SRC C :noweb yes
+
+static uint16_t tap_timer = 0;
+char last_mod = 10;
+
+void mod_press(uint16_t tap_code, uint16_t hold_code, int id) {
+ // this first if body makes double modified keys impossible, but stops the
+ // delay when modifying a tap key which would result in the tap key not
+ // getting modified.
+ if (last_mod != id && last_mod != 10) {
+ tap_code16(tap_code);
+ last_mod = 10;
+ } else {
+ tap_timer = timer_read();
+ last_mod = id;
+ register_code(hold_code);
+ }
}
void mod_lift(uint16_t tap_code, uint16_t hold_code, int id) {
unregister_code(hold_code);
- if (last_mod == id && timer_elapsed(tap_timers[id]) < TAPPING_TERM) {
- tap_code16(tap_code);
- last_mod = -1;
+ if (last_mod == id && timer_elapsed(tap_timer) < TAPPING_TERM) {
+ tap_code16(tap_code);
+ last_mod = 10;
}
}
#+END_SRC
-*** Set DVORAK layout
-
-The function that filter's user inputs and applies macros, the begginning is
-pretty basic, setting our main layer and configuring our secondary layer.
+** Process User Input
#+BEGIN_SRC C :noweb yes
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case DVORAK:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_DVORAK);
- }
- return false;
- break;
+ switch (keycode) {
+#+END_SRC
+
+** Layouts
+
+Set Dvorak layout
+
+#+BEGIN_SRC C :noweb yes
+case KC_DVORAK:
+if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+}
+return true;
+break;
+
+#+END_SRC
+
+Set Qwerty layout.
+
+#+BEGIN_SRC C :noweb yes
+case KC_QWERTY:
+if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+}
+return true;
+break;
#+END_SRC
-*** Alt and ()
+** Alt and ()
Left and right alt are ( and ) when tapped. I put them on alt instead of a more
conveniant key like control because parentheses do not need to be shift modified
@@ -204,24 +296,24 @@ ever, unlike some other tap keys seen in the next sections.
#+BEGIN_SRC C :noweb yes
case KC_T_LALT:
if (record->event.pressed) {
- mod_press(KC_LALT, 0);
- } else {
- mod_lift(S(KC_9), KC_LALT, 0);
- }
+ mod_press(S(KC_9), KC_LALT, 0);
+} else {
+ mod_lift(S(KC_9), KC_LALT, 0);
+}
return false;
break;
case KC_T_RALT:
if (record->event.pressed) {
- mod_press(KC_RALT, 1);
- } else {
- mod_lift(S(KC_0), KC_RALT, 1);
- }
+ mod_press(S(KC_0), KC_RALT, 1);
+} else {
+ mod_lift(S(KC_0), KC_RALT, 1);
+}
return false;
break;
#+END_SRC
-*** Gui and `\
+** Gui and `\
I place gui in the bottom corner because I believe it is the hardest key to
reach, so gui seemed like a good fit for a dedicated key that I never want to
@@ -231,24 +323,24 @@ number pad or shifted number keys.
#+BEGIN_SRC C :noweb yes
case KC_T_LGUI:
if (record->event.pressed) {
- mod_press(KC_LGUI, 2);
- } else {
- mod_lift(KC_GRAVE, KC_LGUI, 2);
- }
+ mod_press(KC_GRAVE, KC_LGUI, 2);
+} else {
+ mod_lift(KC_GRAVE, KC_LGUI, 2);
+}
return false;
break;
case KC_T_RGUI:
if (record->event.pressed) {
- mod_press(KC_RGUI, 3);
- } else {
- mod_lift(KC_BSLASH, KC_RGUI, 3);
- }
+ mod_press(KC_BSLASH, KC_RGUI, 3);
+} else {
+ mod_lift(KC_BSLASH, KC_RGUI, 3);
+}
return false;
break;
#+END_SRC
-*** Ctrl and []
+** Ctrl and []
Left and right control are [] respectively when they are tapped, making { and }
also very convenient.
@@ -256,24 +348,24 @@ also very convenient.
#+BEGIN_SRC C :noweb yes
case KC_T_LCTL:
if (record->event.pressed) {
- mod_press(KC_LCTL, 4);
- } else {
- mod_lift(KC_LBRACKET, KC_LCTL, 4);
- }
+ mod_press(KC_LBRACKET, KC_LCTL, 4);
+} else {
+ mod_lift(KC_LBRACKET, KC_LCTL, 4);
+}
return false;
break;
case KC_T_RCTL:
if (record->event.pressed) {
- mod_press(KC_RCTL, 5);
- } else {
- mod_lift(KC_RBRACKET, KC_RCTL, 5);
- }
+ mod_press(KC_RBRACKET, KC_RCTL, 5);
+} else {
+ mod_lift(KC_RBRACKET, KC_RCTL, 5);
+}
return false;
break;
#+END_SRC
-*** Shft and =-
+** Shft and =-
I place shift on the home row, so having '-' right of my pinkie is standard, and
it only felt natural to put its opposite, '=/+' on the other side. I put an
@@ -282,24 +374,24 @@ extra one on the right side in the secondary layer for the num pad.
#+BEGIN_SRC C :noweb yes
case KC_T_LSFT:
if (record->event.pressed) {
- mod_press(KC_LSFT, 6);
- } else {
- mod_lift(KC_EQUAL, KC_LSFT, 6);
- }
+ mod_press(KC_EQUAL, KC_LSFT, 6);
+} else {
+ mod_lift(KC_EQUAL, KC_LSFT, 6);
+}
return false;
break;
case KC_T_RSFT:
if (record->event.pressed) {
- mod_press(KC_RSFT, 7);
- } else {
- mod_lift(KC_MINUS, KC_RSFT, 7);
- }
+ mod_press(KC_MINUS, KC_RSFT, 7);
+} else {
+ mod_lift(KC_MINUS, KC_RSFT, 7);
+}
return false;
break;
#+END_SRC
-*** Rise, DEL, and /
+** Rise, DEL, and /
I use the top corners as rise because I decided that I do not like using layers
with my thumbs. It feels uncomfortable to hold keys down with the side of my
@@ -315,36 +407,78 @@ corner again mimicing a standard dvorak keyboard.
#+BEGIN_SRC C :noweb yes
case KC_T_LRSE:
if (record->event.pressed) {
- tap_timers[8] = timer_read();
- last_mod = 8;
- layer_on(_RISE);
- } else {
- layer_off(_RISE);
- if (last_mod == 8 && timer_elapsed(tap_timers[8]) < TAPPING_TERM) {
- tap_code16(KC_DELETE);
- last_mod = -1;
- }
- }
+ tap_timer = timer_read();
+ last_mod = 8;
+ layer_on(_RISE);
+} else {
+ layer_off(_RISE);
+ if (last_mod == 8 && timer_elapsed(tap_timer) < TAPPING_TERM) {
+ tap_code16(KC_DELETE);
+ last_mod = 10;
+ }
+}
return false;
break;
case KC_T_RRSE:
if (record->event.pressed) {
- tap_timers[9] = timer_read();
- last_mod = 9;
- layer_on(_RISE);
- } else {
- layer_off(_RISE);
- if (last_mod == 9 && timer_elapsed(tap_timers[9]) < TAPPING_TERM) {
- tap_code16(KC_SLASH);
- last_mod = -1;
- }
- }
+ tap_timer = timer_read();
+ last_mod = 9;
+ layer_on(_RISE);
+} else {
+ layer_off(_RISE);
+ if (last_mod == 9 && timer_elapsed(tap_timer) < TAPPING_TERM) {
+ tap_code16(KC_SLASH);
+ last_mod = 10;
+ }
+}
return false;
break;
#+END_SRC
-*** EZ keys
+** EZ Keys
+
+EZ or "easy" keys do things that can already be done on the board, but I want an
+easier way of doing them.
+
+*** One Shot Keys
+
+Since I made modified tap keys occur on press instead of release, I need one
+shot keys to press any key with more than one modifier.
+
+#+BEGIN_SRC C :noweb yes
+case KC_EZSHFT:
+if (record->event.pressed) {
+ set_oneshot_mods(MOD_LSFT);
+ last_mod = 10;
+}
+return false;
+break;
+case KC_EZCTRL:
+if (record->event.pressed) {
+ set_oneshot_mods(MOD_LCTL);
+ last_mod = 10;
+}
+return false;
+break;
+case KC_EZALT:
+if (record->event.pressed) {
+ set_oneshot_mods(MOD_LALT);
+ last_mod = 10;
+}
+return false;
+break;
+case KC_EZGUI:
+if (record->event.pressed) {
+ set_oneshot_mods(MOD_LGUI);
+ last_mod = 10;
+}
+return false;
+break;
+
+#+END_SRC
+
+*** Arrows
I use ctrl+shift+arrows keys a lot, so when the layer key is pressed they became
lazy versions of themselves with control and shift already pressed.
@@ -355,77 +489,134 @@ left hand like on a qwerty or colemek keyboard.
#+BEGIN_SRC C :noweb yes
case KC_EZRGHT:
if (record->event.pressed) {
- register_code(KC_LCTL);
- tap_code16(S(KC_RGHT));
- unregister_code(KC_LCTL);
- last_mod = -1;
- }
+ register_code(KC_LCTL);
+ tap_code16(S(KC_RGHT));
+ unregister_code(KC_LCTL);
+ last_mod = 10;
+}
return false;
break;
case KC_EZLEFT:
if (record->event.pressed) {
- register_code(KC_LCTL);
- tap_code16(S(KC_LEFT));
- unregister_code(KC_LCTL);
- last_mod = -1;
- }
+ register_code(KC_LCTL);
+ tap_code16(S(KC_LEFT));
+ unregister_code(KC_LCTL);
+ last_mod = 10;
+}
return false;
break;
case KC_EZDOWN:
if (record->event.pressed) {
- register_code(KC_LCTL);
- tap_code16(S(KC_DOWN));
- unregister_code(KC_LCTL);
- last_mod = -1;
- }
+ register_code(KC_LCTL);
+ tap_code16(S(KC_DOWN));
+ unregister_code(KC_LCTL);
+ last_mod = 10;
+}
return false;
break;
case KC_EZUP:
if (record->event.pressed) {
- register_code(KC_LCTL);
- tap_code16(S(KC_UP));
- unregister_code(KC_LCTL);
- last_mod = -1;
- }
+ register_code(KC_LCTL);
+ tap_code16(S(KC_UP));
+ unregister_code(KC_LCTL);
+ last_mod = 10;
+}
return false;
break;
+#+END_SRC
+
+*** Undo, Copy, Cut, Paste
+
+#+BEGIN_SRC C :noweb yes
case KC_EZUNDO:
if (record->event.pressed) {
- tap_code16(C(KC_Z));
- last_mod = -1;
+ tap_code16(C(KC_Z));
+ last_mod = 10;
}
return false;
break;
case KC_EZCOPY:
if (record->event.pressed) {
- tap_code16(C(KC_C));
- last_mod = -1;
+ tap_code16(C(KC_C));
+ last_mod = 10;
}
return false;
break;
case KC_EZCUT:
if (record->event.pressed) {
- tap_code16(C(KC_X));
- last_mod = -1;
+ tap_code16(C(KC_X));
+ last_mod = 10;
}
return false;
break;
case KC_EZPSTE:
if (record->event.pressed) {
- tap_code16(C(KC_P));
- last_mod = -1;
+ tap_code16(C(KC_V));
+ last_mod = 10;
+}
+return false;
+break;
+#+END_SRC
+
+** Commands
+
+Start command layer one shot
+
+#+BEGIN_SRC C :noweb yes
+case KC_COM:
+if (record->event.pressed) {
+ layer_on(_COMMAND);
+ set_oneshot_layer(_COMMAND, ONESHOT_START);
+ last_mod = 10;
+} else {
+ clear_oneshot_layer_state (ONESHOT_PRESSED);
}
return false;
break;
#+END_SRC
-*** Standard inputs interupt tap
+Just some strings I notice that I type a lot.
+
+#+BEGIN_SRC C :noweb yes
+case KC_USER:
+if (record->event.pressed) {
+ send_string("mhostley");
+ last_mod = 10;
+}
+return true;
+break;
+case KC_EMAIL:
+if (record->event.pressed) {
+ send_string("mhostley@gmail.com");
+ last_mod = 10;
+}
+return true;
+break;
+case KC_NAME:
+if (record->event.pressed) {
+ send_string("Samuel Jahnke");
+ last_mod = 10;
+}
+return true;
+break;
+case KC_DIR:
+if (record->event.pressed) {
+ send_string("home/mhostley/");
+ last_mod = 10;
+}
+return true;
+break;
+
+#+END_SRC
+
+** Standard inputs interupt tap
Finally, if just a standard key is tapped, set the interupted flag.
+Keep this last.
#+BEGIN_SRC C :noweb yes
- }
- last_mod = -1;
- return true;
+}
+last_mod = 10;
+return true;
}
#+END_SRC
diff --git a/keyboards/planck/keymaps/samuel/keymap.c b/keyboards/planck/keymaps/samuel/keymap.c
index 53760da767..ff1424489f 100644
--- a/keyboards/planck/keymaps/samuel/keymap.c
+++ b/keyboards/planck/keymaps/samuel/keymap.c
@@ -2,36 +2,45 @@
extern keymap_config_t keymap_config;
-static uint16_t tap_timers[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-char last_mod = -1;
-
-enum planck_layers {
- _DVORAK,
- _RISE
-};
-
// where the 'T_' communicates how the key does something different when tapped.
enum planck_keycodes {
- DVORAK = SAFE_RANGE,
- KC_T_LALT,
- KC_T_RALT,
- KC_T_LGUI,
- KC_T_RGUI,
- KC_T_LCTL,
- KC_T_RCTL,
- KC_T_LSFT,
- KC_T_RSFT,
- KC_T_LRSE,
- KC_T_RRSE,
- KC_EZRGHT,
- KC_EZLEFT,
- KC_EZUP,
- KC_EZDOWN,
- KC_EZUNDO,
- KC_EZCOPY,
- KC_EZCUT,
- KC_EZPSTE
+//DVORAK = SAFE_RANGE,
+KC_T_LALT = SAFE_RANGE,
+KC_T_RALT,
+KC_T_LGUI,
+KC_T_RGUI,
+KC_T_LCTL,
+KC_T_RCTL,
+KC_T_LSFT,
+KC_T_RSFT,
+KC_T_LRSE,
+KC_T_RRSE,
+KC_EZRGHT,
+KC_EZLEFT,
+KC_EZUP,
+KC_EZDOWN,
+KC_EZUNDO,
+KC_EZCOPY,
+KC_EZCUT,
+KC_EZPSTE,
+KC_EZSHFT,
+KC_EZCTRL,
+KC_EZGUI,
+KC_EZALT,
+KC_DVORAK,
+KC_QWERTY,
+KC_USER,
+KC_EMAIL,
+KC_NAME,
+KC_DIR,
+KC_COM
+};
+
+enum planck_layers {
+_DVORAK,
+_QWERTY,
+_RISE,
+_COMMAND
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -44,202 +53,307 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{ KC_T_LGUI, KC_T_LALT, KC_UP, KC_DOWN, KC_BSPC, KC_TAB, KC_ENT, KC_SPC, KC_LEFT, KC_RIGHT, KC_T_RALT, KC_T_RGUI}
},
+[_QWERTY] =
+
+{{ KC_T_LRSE, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_T_RRSE},
+{ KC_T_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_T_RSFT},
+{ KC_T_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT, KC_T_RCTL},
+{ KC_T_LGUI, KC_T_LALT, KC_UP, KC_DOWN, KC_BSPC, KC_TAB, KC_ENT, KC_SPC, KC_LEFT, KC_RIGHT, KC_T_RALT, KC_DVORAK}
+},
+
[_RISE] =
-{{ KC_TRANSPARENT, KC_EZUNDO, KC_EZCOPY, KC_EZCUT, KC_EZPSTE, KC_INS, KC_EQL, KC_7, KC_8, KC_9, KC_F11, KC_TRANSPARENT},
-{ KC_TRANSPARENT, KC_ESC, KC_CAPS, KC_PGUP, KC_PGDN, KC_F4, KC_ASTR, KC_4, KC_5, KC_6, KC_0, KC_TRANSPARENT},
-{ KC_TRANSPARENT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_1, KC_2, KC_3, KC_F12, KC_TRANSPARENT},
-{ KC_TRANSPARENT, KC_TRANSPARENT, KC_EZUP, KC_EZDOWN, KC_TRANSPARENT, KC_AMPR, KC_PIPE, KC_TRANSPARENT, KC_EZLEFT, KC_EZRGHT, KC_TRANSPARENT, KC_TRANSPARENT}
+{{ KC_TRANSPARENT, KC_EZUNDO, KC_EZCOPY, KC_EZCUT, KC_EZPSTE, KC_INS, KC_EQL, KC_7, KC_8, KC_9, KC_TRANSPARENT, KC_TRANSPARENT},
+{ KC_EZSHFT, KC_ESC, KC_CAPS, KC_PGUP, KC_PGDN, KC_HOME, KC_ASTR, KC_4, KC_5, KC_6, KC_0, KC_EZSHFT},
+{ KC_EZCTRL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_1, KC_2, KC_3, KC_COM, KC_EZCTRL},
+{ KC_EZGUI, KC_EZALT, KC_EZUP, KC_EZDOWN, KC_SPC, KC_AMPR, KC_PIPE, KC_END, KC_EZLEFT, KC_EZRGHT, KC_EZALT, KC_EZGUI}
+},
+
+[_COMMAND] =
+
+{{ KC_TRANSPARENT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRANSPARENT},
+{ KC_TRANSPARENT, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRANSPARENT},
+{ KC_TRANSPARENT, KC_F21, KC_F22, KC_F23, KC_F24, KC_QWERTY, KC_DVORAK, KC_USER, KC_EMAIL, KC_NAME, KC_TRANSPARENT, KC_TRANSPARENT},
+{ KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_DIR, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT}
},
};
-void mod_press(uint16_t hold_code, int id) {
- tap_timers[id] = timer_read();
- last_mod = id;
- register_code(hold_code);
+static uint16_t tap_timer = 0;
+char last_mod = 10;
+
+void mod_press(uint16_t tap_code, uint16_t hold_code, int id) {
+ // this first if body makes double modified keys impossible, but stops the
+ // delay when modifying a tap key which would result in the tap key not
+ // getting modified.
+ if (last_mod != id && last_mod != 10) {
+ tap_code16(tap_code);
+ last_mod = 10;
+ } else {
+ tap_timer = timer_read();
+ last_mod = id;
+ register_code(hold_code);
+ }
}
void mod_lift(uint16_t tap_code, uint16_t hold_code, int id) {
unregister_code(hold_code);
- if (last_mod == id && timer_elapsed(tap_timers[id]) < TAPPING_TERM) {
- tap_code16(tap_code);
- last_mod = -1;
+ if (last_mod == id && timer_elapsed(tap_timer) < TAPPING_TERM) {
+ tap_code16(tap_code);
+ last_mod = 10;
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case DVORAK:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_DVORAK);
- }
- return false;
- break;
+ switch (keycode) {
+
+case KC_DVORAK:
+if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+}
+return true;
+break;
+
+case KC_QWERTY:
+if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+}
+return true;
+break;
case KC_T_LALT:
if (record->event.pressed) {
- mod_press(KC_LALT, 0);
- } else {
- mod_lift(S(KC_9), KC_LALT, 0);
- }
+ mod_press(S(KC_9), KC_LALT, 0);
+} else {
+ mod_lift(S(KC_9), KC_LALT, 0);
+}
return false;
break;
case KC_T_RALT:
if (record->event.pressed) {
- mod_press(KC_RALT, 1);
- } else {
- mod_lift(S(KC_0), KC_RALT, 1);
- }
+ mod_press(S(KC_0), KC_RALT, 1);
+} else {
+ mod_lift(S(KC_0), KC_RALT, 1);
+}
return false;
break;
case KC_T_LGUI:
if (record->event.pressed) {
- mod_press(KC_LGUI, 2);
- } else {
- mod_lift(KC_GRAVE, KC_LGUI, 2);
- }
+ mod_press(KC_GRAVE, KC_LGUI, 2);
+} else {
+ mod_lift(KC_GRAVE, KC_LGUI, 2);
+}
return false;
break;
case KC_T_RGUI:
if (record->event.pressed) {
- mod_press(KC_RGUI, 3);
- } else {
- mod_lift(KC_BSLASH, KC_RGUI, 3);
- }
+ mod_press(KC_BSLASH, KC_RGUI, 3);
+} else {
+ mod_lift(KC_BSLASH, KC_RGUI, 3);
+}
return false;
break;
case KC_T_LCTL:
if (record->event.pressed) {
- mod_press(KC_LCTL, 4);
- } else {
- mod_lift(KC_LBRACKET, KC_LCTL, 4);
- }
+ mod_press(KC_LBRACKET, KC_LCTL, 4);
+} else {
+ mod_lift(KC_LBRACKET, KC_LCTL, 4);
+}
return false;
break;
case KC_T_RCTL:
if (record->event.pressed) {
- mod_press(KC_RCTL, 5);
- } else {
- mod_lift(KC_RBRACKET, KC_RCTL, 5);
- }
+ mod_press(KC_RBRACKET, KC_RCTL, 5);
+} else {
+ mod_lift(KC_RBRACKET, KC_RCTL, 5);
+}
return false;
break;
case KC_T_LSFT:
if (record->event.pressed) {
- mod_press(KC_LSFT, 6);
- } else {
- mod_lift(KC_EQUAL, KC_LSFT, 6);
- }
+ mod_press(KC_EQUAL, KC_LSFT, 6);
+} else {
+ mod_lift(KC_EQUAL, KC_LSFT, 6);
+}
return false;
break;
case KC_T_RSFT:
if (record->event.pressed) {
- mod_press(KC_RSFT, 7);
- } else {
- mod_lift(KC_MINUS, KC_RSFT, 7);
- }
+ mod_press(KC_MINUS, KC_RSFT, 7);
+} else {
+ mod_lift(KC_MINUS, KC_RSFT, 7);
+}
return false;
break;
case KC_T_LRSE:
if (record->event.pressed) {
- tap_timers[8] = timer_read();
- last_mod = 8;
- layer_on(_RISE);
- } else {
- layer_off(_RISE);
- if (last_mod == 8 && timer_elapsed(tap_timers[8]) < TAPPING_TERM) {
- tap_code16(KC_DELETE);
- last_mod = -1;
- }
- }
+ tap_timer = timer_read();
+ last_mod = 8;
+ layer_on(_RISE);
+} else {
+ layer_off(_RISE);
+ if (last_mod == 8 && timer_elapsed(tap_timer) < TAPPING_TERM) {
+ tap_code16(KC_DELETE);
+ last_mod = 10;
+ }
+}
return false;
break;
case KC_T_RRSE:
if (record->event.pressed) {
- tap_timers[9] = timer_read();
- last_mod = 9;
- layer_on(_RISE);
- } else {
- layer_off(_RISE);
- if (last_mod == 9 && timer_elapsed(tap_timers[9]) < TAPPING_TERM) {
- tap_code16(KC_SLASH);
- last_mod = -1;
- }
- }
+ tap_timer = timer_read();
+ last_mod = 9;
+ layer_on(_RISE);
+} else {
+ layer_off(_RISE);
+ if (last_mod == 9 && timer_elapsed(tap_timer) < TAPPING_TERM) {
+ tap_code16(KC_SLASH);
+ last_mod = 10;
+ }
+}
+return false;
+break;
+
+case KC_EZSHFT:
+if (record->event.pressed) {
+ set_oneshot_mods(MOD_LSFT);
+ last_mod = 10;
+}
+return false;
+break;
+case KC_EZCTRL:
+if (record->event.pressed) {
+ set_oneshot_mods(MOD_LCTL);
+ last_mod = 10;
+}
+return false;
+break;
+case KC_EZALT:
+if (record->event.pressed) {
+ set_oneshot_mods(MOD_LALT);
+ last_mod = 10;
+}
+return false;
+break;
+case KC_EZGUI:
+if (record->event.pressed) {
+ set_oneshot_mods(MOD_LGUI);
+ last_mod = 10;
+}
return false;
break;
case KC_EZRGHT:
if (record->event.pressed) {
- register_code(KC_LCTL);
- tap_code16(S(KC_RGHT));
- unregister_code(KC_LCTL);
- last_mod = -1;
- }
+ register_code(KC_LCTL);
+ tap_code16(S(KC_RGHT));
+ unregister_code(KC_LCTL);
+ last_mod = 10;
+}
return false;
break;
case KC_EZLEFT:
if (record->event.pressed) {
- register_code(KC_LCTL);
- tap_code16(S(KC_LEFT));
- unregister_code(KC_LCTL);
- last_mod = -1;
- }
+ register_code(KC_LCTL);
+ tap_code16(S(KC_LEFT));
+ unregister_code(KC_LCTL);
+ last_mod = 10;
+}
return false;
break;
case KC_EZDOWN:
if (record->event.pressed) {
- register_code(KC_LCTL);
- tap_code16(S(KC_DOWN));
- unregister_code(KC_LCTL);
- last_mod = -1;
- }
+ register_code(KC_LCTL);
+ tap_code16(S(KC_DOWN));
+ unregister_code(KC_LCTL);
+ last_mod = 10;
+}
return false;
break;
case KC_EZUP:
if (record->event.pressed) {
- register_code(KC_LCTL);
- tap_code16(S(KC_UP));
- unregister_code(KC_LCTL);
- last_mod = -1;
- }
+ register_code(KC_LCTL);
+ tap_code16(S(KC_UP));
+ unregister_code(KC_LCTL);
+ last_mod = 10;
+}
return false;
break;
+
case KC_EZUNDO:
if (record->event.pressed) {
- tap_code16(C(KC_Z));
- last_mod = -1;
+ tap_code16(C(KC_Z));
+ last_mod = 10;
}
return false;
break;
case KC_EZCOPY:
if (record->event.pressed) {
- tap_code16(C(KC_C));
- last_mod = -1;
+ tap_code16(C(KC_C));
+ last_mod = 10;
}
return false;
break;
case KC_EZCUT:
if (record->event.pressed) {
- tap_code16(C(KC_X));
- last_mod = -1;
+ tap_code16(C(KC_X));
+ last_mod = 10;
}
return false;
break;
case KC_EZPSTE:
if (record->event.pressed) {
- tap_code16(C(KC_P));
- last_mod = -1;
+ tap_code16(C(KC_V));
+ last_mod = 10;
}
return false;
break;
- }
- last_mod = -1;
- return true;
+case KC_COM:
+if (record->event.pressed) {
+ layer_on(_COMMAND);
+ set_oneshot_layer(_COMMAND, ONESHOT_START);
+ last_mod = 10;
+} else {
+ clear_oneshot_layer_state (ONESHOT_PRESSED);
+}
+return false;
+break;
+
+case KC_USER:
+if (record->event.pressed) {
+ send_string("mhostley");
+ last_mod = 10;
+}
+return true;
+break;
+case KC_EMAIL:
+if (record->event.pressed) {
+ send_string("mhostley@gmail.com");
+ last_mod = 10;
+}
+return true;
+break;
+case KC_NAME:
+if (record->event.pressed) {
+ send_string("Samuel Jahnke");
+ last_mod = 10;
+}
+return true;
+break;
+case KC_DIR:
+if (record->event.pressed) {
+ send_string("home/mhostley/");
+ last_mod = 10;
+}
+return true;
+break;
+
+}
+last_mod = 10;
+return true;
}
diff --git a/keyboards/planck/keymaps/tom/config.h b/keyboards/planck/keymaps/tom/config.h
new file mode 100644
index 0000000000..6fa31cc8a7
--- /dev/null
+++ b/keyboards/planck/keymaps/tom/config.h
@@ -0,0 +1,39 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+// Most tactile encoders have detents every 4 stages
+#define ENCODER_RESOLUTION 4
+
diff --git a/keyboards/planck/keymaps/tom/keymap.c b/keyboards/planck/keymaps/tom/keymap.c
new file mode 100644
index 0000000000..abd7c8adaa
--- /dev/null
+++ b/keyboards/planck/keymaps/tom/keymap.c
@@ -0,0 +1,297 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _PLOVER,
+ _ADJUST
+};
+
+enum planck_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ DVORAK,
+ PLOVER,
+ BACKLIT,
+ EXT_PLV
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G | H | J | K | L | ; |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | Up |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | / | Left | Down |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_planck_grid(
+ 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_TAB, 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_UP, KC_RSFT,
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | ' |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Vol- | Vol+ |Brite-|Brite+|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_planck_grid(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_QUOT,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_BRMD, KC_BRMU
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | \ |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | ' |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Vol- | Vol+ |Brite-|Brite+|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_planck_grid(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_QUOT,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_BRMD, KC_BRMU
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty| | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_grid(
+ _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+
+#ifdef AUDIO_ENABLE
+ float plover_song[][2] = SONG(PLOVER_SOUND);
+ float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
+#endif
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ print("mode just switched to qwerty and this is a huge string\n");
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ #ifdef KEYBOARD_planck_rev5
+ PORTE &= ~(1<<6);
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ #ifdef KEYBOARD_planck_rev5
+ PORTE |= (1<<6);
+ #endif
+ }
+ return false;
+ break;
+ case EXT_PLV:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_gb_song);
+ #endif
+ layer_off(_PLOVER);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+bool muse_mode = false;
+uint8_t last_muse_note = 0;
+uint16_t muse_counter = 0;
+uint8_t muse_offset = 70;
+uint16_t muse_tempo = 50;
+
+void encoder_update(bool clockwise) {
+ if (muse_mode) {
+ if (IS_LAYER_ON(_RAISE)) {
+ if (clockwise) {
+ muse_offset++;
+ } else {
+ muse_offset--;
+ }
+ } else {
+ if (clockwise) {
+ muse_tempo+=1;
+ } else {
+ muse_tempo-=1;
+ }
+ }
+ } else {
+ if (clockwise) {
+ #ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_DOWN);
+ #else
+ tap_code(KC_PGDN);
+ #endif
+ } else {
+ #ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_UP);
+ #else
+ tap_code(KC_PGUP);
+ #endif
+ }
+ }
+}
+
+void dip_update(uint8_t index, bool active) {
+ switch (index) {
+ case 0:
+ if (active) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_song);
+ #endif
+ layer_on(_ADJUST);
+ } else {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_gb_song);
+ #endif
+ layer_off(_ADJUST);
+ }
+ break;
+ case 1:
+ if (active) {
+ muse_mode = true;
+ } else {
+ muse_mode = false;
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ #endif
+ }
+ }
+}
+
+void matrix_scan_user(void) {
+ #ifdef AUDIO_ENABLE
+ if (muse_mode) {
+ if (muse_counter == 0) {
+ uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+ if (muse_note != last_muse_note) {
+ stop_note(compute_freq_for_midi_note(last_muse_note));
+ play_note(compute_freq_for_midi_note(muse_note), 0xF);
+ last_muse_note = muse_note;
+ }
+ }
+ muse_counter = (muse_counter + 1) % muse_tempo;
+ }
+ #endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
+
+void rgb_matrix_indicators_user(void) {
+ #ifdef RGB_MATRIX_ENABLE
+ rgb_led led;
+ switch (biton32(layer_state)) {
+ case _RAISE:
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ led = g_rgb_leds[i];
+ if ( led.modifier ) {
+ rgb_matrix_set_color(i, 0x6B, 0x00, 0x80);
+ } else {
+ rgb_matrix_set_color(i, 0x00, 0xFF, 0x00);
+ }
+ }
+ break;
+
+ case _LOWER:
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ led = g_rgb_leds[i];
+ if ( led.modifier ) {
+ rgb_matrix_set_color(i, 0xFF, 0xA5, 0x00);
+ } else {
+ rgb_matrix_set_color(i, 0x00, 0x67, 0xC7);
+ }
+ }
+ break;
+
+ case _ADJUST:
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ rgb_matrix_set_color(i, 0xFF, 0x99, 0x00);
+ }
+ rgb_matrix_set_color(1, 0xFF, 0x00, 0x00);
+ break;
+
+ default:
+ break;
+ }
+ #endif
+}
diff --git a/keyboards/planck/keymaps/tom/readme.md b/keyboards/planck/keymaps/tom/readme.md
new file mode 100644
index 0000000000..7e31e2a054
--- /dev/null
+++ b/keyboards/planck/keymaps/tom/readme.md
@@ -0,0 +1,31 @@
+# tomholford's layout
+
+This layout is data-driven: I installed [WhatPulse](https://whatpulse.org/) a few months ago and generated a heatmap of the most frequently used keys. I also optimized for my most-used programming languages, and muscle memory.
+
+## Changes from Default
+
+### QWERTY
+
+- swap escape and tab
+- rearrange arrows in original layout
+- swap rshift and Enter
+- map / to original location of left arrow key
+
+### RAISE
+
+- move backslash to backspace
+- map quote to original location from qwerty layer
+- map brightness up / down to original location of left and up arrows
+- map volume up / down to original location of down and right arrows
+
+### LOWER
+
+- move pipe to backspace
+- map quote to original location from qwerty layer
+- map brightness up / down to original location of left and up arrows
+- map volume up / down to original location of down and right arrows
+
+
+## RGB LED
+
+- Illuminate when pressing RAISE, LOWER, or ADJUST ([source](https://www.reddit.com/r/olkb/comments/8wvk8s/custom_rgb_configuration_by_keycodelayer/))
diff --git a/keyboards/planck/keymaps/tom/rules.mk b/keyboards/planck/keymaps/tom/rules.mk
new file mode 100644
index 0000000000..dcf16bef39
--- /dev/null
+++ b/keyboards/planck/keymaps/tom/rules.mk
@@ -0,0 +1 @@
+SRC += muse.c
diff --git a/keyboards/planck/keymaps/vxid/config.h b/keyboards/planck/keymaps/vxid/config.h
new file mode 100644
index 0000000000..6f70f09bee
--- /dev/null
+++ b/keyboards/planck/keymaps/vxid/config.h
@@ -0,0 +1 @@
+#pragma once
diff --git a/keyboards/planck/keymaps/vxid/keymap.c b/keyboards/planck/keymaps/vxid/keymap.c
new file mode 100644
index 0000000000..51d1daa70a
--- /dev/null
+++ b/keyboards/planck/keymaps/vxid/keymap.c
@@ -0,0 +1,49 @@
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = LAYOUT_planck_grid(
+ 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_TAB, 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_BSLS,
+ KC_LCTL, KC_LGUI, KC_LALT, LOWER, RAISE, KC_MINS, KC_SPC, KC_EQL, KC_LBRC, KC_RBRC, KC_QUOT, KC_GRV
+),
+
+[_LOWER] = LAYOUT_planck_grid(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______,
+ _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+[_RAISE] = LAYOUT_planck_grid(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+[_ADJUST] = LAYOUT_planck_grid(
+ RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
diff --git a/keyboards/planck/keymaps/vxid/readme.md b/keyboards/planck/keymaps/vxid/readme.md
new file mode 100644
index 0000000000..9e0ae33423
--- /dev/null
+++ b/keyboards/planck/keymaps/vxid/readme.md
@@ -0,0 +1,13 @@
+# vxid planck layout
+
+## Layout
+
+This planck layout aims at proviging most symbols on the base layer while remaining usable.
+The minus and space keys become alt and gui modifiers when pressed.
+Arrow keys are located on hjkl on the lower layer.
+
+## Building
+
+```
+ make planck/rev6:vxid:dfu-util
+```