summaryrefslogtreecommitdiffstats
path: root/keyboards/planck
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/planck')
-rw-r--r--keyboards/planck/keymaps/callum/keymap.c125
-rw-r--r--keyboards/planck/keymaps/callum/readme.md100
-rw-r--r--keyboards/planck/keymaps/priyadi/Makefile26
-rw-r--r--keyboards/planck/keymaps/priyadi/keymap.c417
-rw-r--r--keyboards/planck/keymaps/priyadi/readme.md1
-rw-r--r--keyboards/planck/keymaps/vifon/Makefile25
-rw-r--r--keyboards/planck/keymaps/vifon/config.h91
-rw-r--r--keyboards/planck/keymaps/vifon/keymap.c187
-rw-r--r--keyboards/planck/rev3/Makefile3
9 files changed, 889 insertions, 86 deletions
diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c
index 6c34311339..4d0151710e 100644
--- a/keyboards/planck/keymaps/callum/keymap.c
+++ b/keyboards/planck/keymaps/callum/keymap.c
@@ -14,14 +14,15 @@ extern keymap_config_t keymap_config;
#define _BASE 0
#define _MOVE 1
#define _SYMB 2
-#define _FUNC 3
+#define _MOUSE 3
+#define _FUNC 4
enum planck_keycodes {
- BASE = SAFE_RANGE,
- MOVE,
+ MOVE = SAFE_RANGE,
SYMB,
FUNC,
- LOCK
+ BELOW,
+ ABOVE
};
// Fillers to make layering more clear
@@ -33,73 +34,91 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* BASE
* ,-----------------------------------------------------------------------------------.
* | 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 | Ctrl | Alt | GUI | Symb |Enter |Space | Move | GUI | Alt | Ctrl |Caps |
+ * | Shift| Z | X | C | V | B | K | M | , | . | / | Shift|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Func | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Func |
* `-----------------------------------------------------------------------------------'
*/
[_BASE] = {
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS},
{KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT},
- {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS}
+ {FUNC, KC_LCTL, KC_LALT, KC_LGUI, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, FUNC }
},
/* MOVE
* ,-----------------------------------------------------------------------------------.
- * | Esc | | Home | Up | End | | | Home | Up | End | | Esc |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | | Left | Down |Right | | | Left | Down |Right | | Del |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | | |Pg Up |Pg Dn | | |Pg Dn |Pg Up | | | |
+ * | Esc | | Cmd-L| Up | Cmd-R| | | Cmd-L| Up | Cmd-R| | Esc |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | | |
+ * | Del | Caps | Left | Down | Right| | | Left | Down | Right| Caps | Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | Pg Up| Pg Dn| Above| | Pg Dn| Pg Up| | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | Below| | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_MOVE] = {
- {KC_ESC, _______, KC_HOME, KC_UP, KC_END, _______, _______, KC_HOME, KC_UP, KC_END, _______, KC_ESC},
- {KC_DEL, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL},
- {_______, _______, _______, KC_PGUP, KC_PGDN, _______, _______, KC_PGDN, KC_PGUP, _______, _______, _______},
- {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+ {KC_ESC, XXXXXXX, LGUI(KC_LEFT), KC_UP, LGUI(KC_RGHT), XXXXXXX, XXXXXXX, LGUI(KC_LEFT), KC_UP, LGUI(KC_RGHT), XXXXXXX, KC_ESC },
+ {KC_DEL, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL },
+ {_______, XXXXXXX, XXXXXXX, KC_PGUP, KC_PGDN, ABOVE, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, _______},
+ {_______, _______, _______, _______, _______, BELOW, _______, _______, _______, _______, _______, _______}
},
/* SYMB
* ,-----------------------------------------------------------------------------------.
- * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc |
- * |-----------------------------------------------------------------------------------.
- * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | – |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | £ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
* | | ~ | ` | + | = | | | \ | [ | ] | { | } | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_SYMB] = {
- {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESC },
- {KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL },
+ {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, LALT(KC_MINS)},
+ {KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, LALT(KC_3)},
{_______, KC_TILD, KC_GRV, KC_PLUS, KC_EQL, KC_PIPE, KC_BSLS, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______},
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
},
+/* MOUSE
+ * ,-----------------------------------------------------------------------------------.
+ * | | | ACC-2| ACC-1| ACC-0| | | SW-L | M-U | SW-R | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | MB-3 | MB-2 | MB-1 | | | M-L | M-D | M-R | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | SW-D | SW-U | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_MOUSE] = {
+ {XXXXXXX, XXXXXXX, KC_ACL2, KC_ACL1, KC_ACL0, XXXXXXX, XXXXXXX, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX},
+ {XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN2, KC_BTN1, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX},
+ {_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_D, KC_WH_U, XXXXXXX, XXXXXXX, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+},
+
/* FUNC
* ,-----------------------------------------------------------------------------------.
- * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 |
- * |-----------------------------------------------------------------------------------.
- * | | Play | Prev | Next | BL+ | | | Lock | | | | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | Mute | Vol- | Vol+ | BL- | | | | | | | |
+ * | Reset| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Vol+ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | Vol- |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | |Reset |
+ * | | F21 | F22 | F23 | F24 | | | Power| | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | Prev | Mute | Play | Next | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_FUNC] = {
- {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 },
- {_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, LOCK, _______, _______, _______, _______},
- {_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, _______, _______, _______, _______, _______},
- {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET }
+ {RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_VOLU},
+ {XXXXXXX, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_VOLD},
+ {_______, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, KC_POWER, XXXXXXX, XXXXXXX, XXXXXXX, _______},
+ {_______, _______, _______, _______, KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT, _______, _______, _______, _______}
}
};
@@ -109,20 +128,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case MOVE:
if (record->event.pressed) {
layer_on(_MOVE);
- update_tri_layer(_MOVE, _SYMB, _FUNC);
+ update_tri_layer(_MOVE, _SYMB, _MOUSE);
} else {
layer_off(_MOVE);
- update_tri_layer(_MOVE, _SYMB, _FUNC);
+ update_tri_layer(_MOVE, _SYMB, _MOUSE);
}
return false;
break;
case SYMB:
if (record->event.pressed) {
layer_on(_SYMB);
- update_tri_layer(_MOVE, _SYMB, _FUNC);
+ update_tri_layer(_MOVE, _SYMB, _MOUSE);
} else {
layer_off(_SYMB);
- update_tri_layer(_MOVE, _SYMB, _FUNC);
+ update_tri_layer(_MOVE, _SYMB, _MOUSE);
}
return false;
break;
@@ -134,15 +153,27 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return false;
break;
- case LOCK:
+ case BELOW:
if (record->event.pressed) {
- register_code(KC_RSFT);
- register_code(KC_RCTL);
- register_code(KC_POWER);
- } else {
- unregister_code(KC_POWER);
- unregister_code(KC_RCTL);
- unregister_code(KC_RSFT);
+ register_code(KC_LGUI);
+ register_code(KC_RGHT);
+ unregister_code(KC_RGHT);
+ unregister_code(KC_LGUI);
+ register_code(KC_ENT);
+ unregister_code(KC_ENT);
+ }
+ return false;
+ break;
+ case ABOVE:
+ if (record->event.pressed) {
+ register_code(KC_LGUI);
+ register_code(KC_LEFT);
+ unregister_code(KC_LEFT);
+ unregister_code(KC_LGUI);
+ register_code(KC_ENT);
+ unregister_code(KC_ENT);
+ register_code(KC_UP);
+ unregister_code(KC_UP);
}
return false;
break;
diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md
index b70de3f1e2..0baeba46d9 100644
--- a/keyboards/planck/keymaps/callum/readme.md
+++ b/keyboards/planck/keymaps/callum/readme.md
@@ -2,42 +2,70 @@
This is a layout for the grid planck, built with a few ideals in mind:
-- Minimal response times should be maintained. i.e. keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided — they inevitably send their keycode later than a normal key, interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording.
+- Minimal response times should be maintained. Keys that react differently depending on whether they are tapped or held, keys that react differently if they are double tapped, etc. should be avoided – they inevitably send their keycode later than a normal key – interrupting the immediate feedback from the screen. Therefore we restrict ourselves to chording as our only means of getting more than one symbol out of a single physical key.
- The hands should never need to leave the home position. The usual culprit for this is the arrow cluster, so the arrow cluster should be as close to home as possible.
- There should be two of every modifier (one on each side), otherwise certain long key combinations become hard to make.
-- Backspace should be in the “capslock position” in the colemak tradition.
-We have four layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster etc, a `SYMB` layer, with numbers and symbols; and a `FUNC` layer, with function keys and media keys.
-
-## The `BASE` layer
-![](http://i.imgur.com/tVNI3SE.png)
-
-This is the default layer; in [colemak](https://colemak.com). `esc` and `del` are conspicuously absent but are especially easy to reach from either of the other main layers (see below). The `backspace` location is standard colemak. The `caps` key is still on the `BASE` layer but only because I don’t really use the bottom corners so there’s nothing else I would rather put there. Having `enter` on a thumb means I can still have `quote` immediately to the right of `O`, something that would have annoyed me endlessly otherwise. `minus` is in the upper right because I had an extra space and it’s probably my next most used key that didn’t yet have a home.
-
-The `MOVE` and `SYMB` layers are reached by holding down the `move` and `symb` keys respectively. The `FUNC` layer is reached by holding down both the `move` and `symb` keys simultaneously, *or* by holding down the `fn` key. The intended use is that whenever both hands are on the keyboard, the former method is used, and the latter is only used when, for example, reaching over to the keyboard with one hand to access the media controls.
-
-## The `MOVE` layer
-![](http://i.imgur.com/KXRSuHT.png)
-
-This is fairly self explanatory. I almost exclusively use the right hand cluster so that movement is a one handed affair, but the left hand cluster is there if it’s needed.
-
-On *macOS* I recommend using [Karabiner](https://pqrs.org/osx/karabiner/) and ticking *Use PC Style Home/End #2* and *Use PC Style PageUp/PageDown* so that `home` and `end` jump you to the beginning and end of the line respectively and so that `pg up` and `pg dn` move the cursor instead of just scrolling.
-
-None of the modifiers are overwritten so that `shift-alt-arrows` etc work as expected.
-
-## The `SYMB` layer
-![](http://i.imgur.com/thh1ne2.png)
-
-The symbol layer has all the numbers and their usual corresponding symbols in the first two rows, with the symbols on the home row since I use them more frequently than the numbers. The third row contains all the remaining symbols, arranged roughly so that the most used symbols are accessible with the strongest fingers.
-
-`esc` and `del` are repeated here since I wanted to be able to reach either, one handed, with either hand.
-
-Again none of the modifiers are overwritten so that shortcuts involving numbers or symbols work as expected.
-
-## The `FUNC` layer
-![](http://i.imgur.com/1VKFBBU.png)
-
-The only things of note here are that `bl+` and `bl-` are short for *backlight up* and *backlight down*, and in firmware are actually `KC_PAUS` and `KC_SLCK` respectively, since *macOS* interprets these as the backlight keys. And that `lock` is currently a macro hard coded to turn off the screen on *macOS*. (By activating the shortcut `shift-ctrl-power`.)
-
-## Other changes from the default
-I have LEDs and sound disabled, simply because I have no need of them.
+We have five layers. A `BASE` layer, in colemak; a `MOVE` layer, with an arrow cluster and other movement keys; a `SYMB` layer, with numbers and symbols; a `FUNC` layer, with function keys and media keys; and a `MOUSE` layer, with mouse emulation.
+
+```
+/* BASE
+ * ,-----------------------------------------------------------------------------------.
+ * | 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 | Ctrl | Alt | Cmd | Symb | Enter| Space| Move | Cmd | Alt | Ctrl | Func |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+/* MOVE
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | | Cmd-L| Up | Cmd-R| | | Cmd-L| Up | Cmd-R| | Esc |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | Caps | Left | Down | Right| | | Left | Down | Right| Caps | Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | Pg Up| Pg Dn| Above| | Pg Dn| Pg Up| | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | Below| | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+/* SYMB
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | – |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | £ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | ~ | ` | + | = | | | \ | [ | ] | { | } | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+/* MOUSE
+ * ,-----------------------------------------------------------------------------------.
+ * | | | ACC-2| ACC-1| ACC-0| | | SW-L | M-U | SW-R | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | MB-3 | MB-2 | MB-1 | | | M-L | M-D | M-R | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | SW-D | SW-U | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+/* FUNC
+ * ,-----------------------------------------------------------------------------------.
+ * | Reset| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Vol+ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | Vol- |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F21 | F22 | F23 | F24 | | | Lock | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | Prev | Mute | Play | Next | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+```
diff --git a/keyboards/planck/keymaps/priyadi/Makefile b/keyboards/planck/keymaps/priyadi/Makefile
new file mode 100644
index 0000000000..aa211d2f05
--- /dev/null
+++ b/keyboards/planck/keymaps/priyadi/Makefile
@@ -0,0 +1,26 @@
+
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = yes # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+UNICODEMAP_ENABLE = yes # Unicode map
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+ include ../../../../Makefile
+endif
diff --git a/keyboards/planck/keymaps/priyadi/keymap.c b/keyboards/planck/keymaps/priyadi/keymap.c
new file mode 100644
index 0000000000..dd8652d348
--- /dev/null
+++ b/keyboards/planck/keymaps/priyadi/keymap.c
@@ -0,0 +1,417 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+
+#include "planck.h"
+#include "action_layer.h"
+#ifdef AUDIO_ENABLE
+ #include "audio.h"
+#endif
+#include "eeconfig.h"
+#include "process_unicode.h"
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _COLEMAK 1
+#define _WORKMAN 2
+#define _PUNC 9
+#define _NUM 10
+#define _FUNC 11
+#define _EMOJI 12
+#define _ADJUST 16
+
+enum planck_keycodes {
+ // layouts
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ WORKMAN,
+
+ // layer switchers
+ PUNC,
+ NUM,
+ FUNC,
+ EMOJI,
+
+ // os switchers
+ LINUX,
+ WIN,
+ OSX,
+};
+
+// Fillers to make layering clearer
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+// unicode map
+enum unicode_name {
+ GRIN, // grinning face 😊
+ TJOY, // tears of joy 😂
+ SMILE, // grining face with smiling eyes 😁
+ HEART, // heart ❤
+ EYERT, // smiling face with heart shaped eyes 😍
+ CRY, // crying face 😭
+ SMEYE, // smiling face with smiling eyes 😊
+ UNAMU, // unamused 😒
+ KISS, // kiss 😘
+ HART2, // two hearts 💕
+ WEARY, // weary 😩
+ OKHND, // ok hand sign 👌
+ PENSV, // pensive 😔
+ SMIRK, // smirk 😏
+ RECYC, // recycle ♻
+ WINK, // wink 😉
+ THMUP, // thumb up 👍
+ THMDN, // thumb down 👎
+ PRAY, // pray 🙏
+ PHEW, // relieved 😌
+ MUSIC, // musical notes
+ FLUSH, // flushed 😳
+ CELEB, // celebration 🙌
+ CRY2, // crying face 😢
+ COOL, // smile with sunglasses 😎
+ NOEVS, // see no evil
+ NOEVH, // hear no evil
+ NOEVK, // speak no evil
+ POO, // pile of poo
+ EYES, // eyes
+ VIC, // victory hand
+ BHART, // broken heart
+ SLEEP, // sleeping face
+ SMIL2, // smiling face with open mouth & sweat
+ HUNRD, // 100
+ CONFU, // confused
+ TONGU, // face with tongue & winking eye
+ DISAP, // disappointed
+ YUMMY, // face savoring delicious food
+ CLAP, // hand clapping
+ FEAR, // face screaming in fear
+ HORNS, // smiling face with horns
+ HALO, // smiling face with halo
+ BYE, // waving hand
+ SUN, // sun
+ MOON, // moon
+ SKULL, // skull
+};
+
+const uint32_t PROGMEM unicode_map[] = {
+ [GRIN] = 0x1F600,
+ [TJOY] = 0x1F602,
+ [SMILE] = 0x1F601,
+ [HEART] = 0x2764,
+ [EYERT] = 0x1f60d,
+ [CRY] = 0x1f62d,
+ [SMEYE] = 0x1F60A,
+ [UNAMU] = 0x1F612,
+ [KISS] = 0x1F618,
+ [HART2] = 0x1F495,
+ [WEARY] = 0x1F629,
+ [OKHND] = 0x1F44C,
+ [PENSV] = 0x1F614,
+ [SMIRK] = 0x1F60F,
+ [RECYC] = 0x267B,
+ [WINK] = 0x1F609,
+ [THMUP] = 0x1F44D,
+ [THMDN] = 0x1F44E,
+ [PRAY] = 0x1F64F,
+ [PHEW] = 0x1F60C,
+ [MUSIC] = 0x1F3B6,
+ [FLUSH] = 0x1F633,
+ [CELEB] = 0x1F64C,
+ [CRY2] = 0x1F622,
+ [COOL] = 0x1F60E,
+ [NOEVS] = 0x1F648,
+ [NOEVH] = 0x1F649,
+ [NOEVK] = 0x1F64A,
+ [POO] = 0x1F4A9,
+ [EYES] = 0x1F440,
+ [VIC] = 0x270C,
+ [BHART] = 0x1F494,
+ [SLEEP] = 0x1F634,
+ [SMIL2] = 0x1F605,
+ [HUNRD] = 0x1F4AF,
+ [CONFU] = 0x1F615,
+ [TONGU] = 0x1F61C,
+ [DISAP] = 0x1F61E,
+ [YUMMY] = 0x1F60B,
+ [CLAP] = 0x1F44F,
+ [FEAR] = 0x1F631,
+ [HORNS] = 0x1F608,
+ [HALO] = 0x1F607,
+ [BYE] = 0x1F44B,
+ [SUN] = 0x2600,
+ [MOON] = 0x1F314,
+ [SKULL] = 0x1F480,
+};
+
+// keymaps
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = {
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
+ {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT },
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT},
+ {KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL}
+},
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = {
+ {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
+ {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT },
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT},
+ {KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL}
+},
+
+/* Workman
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_WORKMAN] = {
+ {KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC},
+ {KC_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_ENT },
+ {KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT},
+ {KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL}
+},
+
+/* Punc
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | ` | | | | | | | | _ | + | { | } | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | \ | - | = | [ | ] | ' |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | < | > | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_PUNC] = {
+ {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_GRV, _______, _______, _______, _______, _______, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_DQUO},
+ {_______, _______, _______, _______, _______, _______, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_QUOT},
+ {_______, _______, _______, _______, _______, KC_SPC, KC_SPC, _______, _______, KC_LABK, KC_RABK, _______}
+},
+
+/* Num
+ * ,-----------------------------------------------------------------------------------.
+ * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | @ | A | B | C | [ | ] | 4 | 5 | 6 | : |Enter |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | D | E | F | & | # | 1 | 2 | 3 | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | x | | | | 0 | , | . | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_NUM] = {
+ {_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ { KC_ESC, KC_AT, S(KC_A), S(KC_B), S(KC_C), KC_LBRC, KC_RBRC, KC_4, KC_5, KC_6, KC_COLN, KC_BSLS},
+ {_______, _______, S(KC_D), S(KC_E), S(KC_F), KC_AMPR, KC_HASH, KC_1, KC_2, KC_3, _______, _______},
+ {_______, _______, KC_X, _______, _______, KC_SPC, KC_SPC, KC_0, KC_COMM,KC_KP_DOT,_______, _______}
+},
+
+/* Func
+ * ,-----------------------------------------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | | | PgUp | Up | PgDn | PgUp | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | F5 | F6 | F7 | F8 | | | Left | Down | Right| PgDn | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F9 | F10 | F11 | F12 | | | | Home | End | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | |Print |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_FUNC] = {
+ {_______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_BSPC},
+ {_______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______},
+ {_______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, KC_HOME, KC_END, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______,KC_PSCREEN}
+},
+
+/* Emoji
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_EMOJI] = {
+ {X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW)},
+ {X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS)},
+ {X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH)},
+ { X(POO), X(EYES),X(HUNRD),X(TONGU),X(SKULL),X(HORNS), X(HALO), X(FEAR), _______,X(YUMMY),X(DISAP),X(NOEVK)}
+},
+
+/* Adjust
+ * ,-----------------------------------------------------------------------------------.
+ * | | |Linux | Win | OSX | | |Qwerty|Colemk|Workmm| | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = {
+ {_______, _______, LINUX, WIN, OSX, _______, _______, QWERTY, COLEMAK, WORKMAN, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
+ {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
+}
+
+
+};
+
+#ifdef AUDIO_ENABLE
+float tone_startup[][2] = SONG(STARTUP_SOUND);
+float tone_qwerty[][2] = SONG(QWERTY_SOUND);
+float tone_colemak[][2] = SONG(COLEMAK_SOUND);
+float tone_workman[][2] = SONG(DVORAK_SOUND);
+float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
+#endif
+
+void persistant_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_QWERTY);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_COLEMAK);
+ }
+ return false;
+ break;
+ case WORKMAN:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_NOTE_ARRAY(tone_workman, false, 0);
+ #endif
+ persistant_default_layer_set(1UL<<_WORKMAN);
+ }
+ return false;
+ break;
+ case PUNC:
+ if (record->event.pressed) {
+ layer_on(_PUNC);
+ update_tri_layer(_PUNC, _EMOJI, _ADJUST);
+ } else {
+ layer_off(_PUNC);
+ update_tri_layer(_PUNC, _EMOJI, _ADJUST);
+ }
+ return false;
+ break;
+ case EMOJI:
+ if (record->event.pressed) {
+ layer_on(_EMOJI);
+ update_tri_layer(_PUNC, _EMOJI, _ADJUST);
+ } else {
+ layer_off(_EMOJI);
+ update_tri_layer(_PUNC, _EMOJI, _ADJUST);
+ }
+ return false;
+ break;
+ case NUM:
+ if (record->event.pressed) {
+ layer_on(_NUM);
+ } else {
+ layer_off(_NUM);
+ }
+ return false;
+ break;
+ case FUNC:
+ if (record->event.pressed) {
+ layer_on(_FUNC);
+ } else {
+ layer_off(_FUNC);
+ }
+ return false;
+ break;
+ case LINUX:
+ set_unicode_input_mode(UC_LNX);
+ return false;