summaryrefslogtreecommitdiffstats
path: root/keyboard/planck
diff options
context:
space:
mode:
Diffstat (limited to 'keyboard/planck')
-rw-r--r--keyboard/planck/Makefile35
-rw-r--r--keyboard/planck/README.md56
-rw-r--r--keyboard/planck/__avr_gdbinit6
-rw-r--r--keyboard/planck/backlight.c49
-rw-r--r--keyboard/planck/common_keymaps/keymap_brett.c (renamed from keyboard/planck/keymap_brett.c)12
-rw-r--r--keyboard/planck/common_keymaps/keymap_dotcom.c (renamed from keyboard/planck/keymap_dotcom.c)0
-rw-r--r--keyboard/planck/common_keymaps/keymap_jack.c (renamed from keyboard/planck/keymap_jack.c)2
-rw-r--r--keyboard/planck/common_keymaps/keymap_joe.c (renamed from keyboard/planck/keymap_joe.c)0
-rw-r--r--keyboard/planck/common_keymaps/keymap_matthew.c (renamed from keyboard/planck/keymap_matthew.c)0
-rw-r--r--keyboard/planck/common_keymaps/keymap_nathan.c (renamed from keyboard/planck/keymap_nathan.c)49
-rw-r--r--keyboard/planck/common_keymaps/keymap_peasant.c (renamed from keyboard/planck/keymap_peasant.c)0
-rw-r--r--keyboard/planck/common_keymaps/keymap_reed.c74
-rw-r--r--keyboard/planck/common_keymaps/keymap_sean.c57
-rw-r--r--keyboard/planck/common_keymaps/keymap_shane.c (renamed from keyboard/planck/keymap_shane.c)0
-rw-r--r--keyboard/planck/common_keymaps/keymap_simon.c44
-rw-r--r--keyboard/planck/common_keymaps/keymap_tim.c44
-rw-r--r--keyboard/planck/common_keymaps/keymap_wilba.c56
-rw-r--r--keyboard/planck/config.h8
-rw-r--r--keyboard/planck/extended_keymap_common.c208
-rw-r--r--keyboard/planck/extended_keymap_common.h177
-rw-r--r--keyboard/planck/extended_keymaps/extended_keymap_austin.c50
-rw-r--r--keyboard/planck/extended_keymaps/extended_keymap_charlie.c54
-rw-r--r--keyboard/planck/extended_keymaps/extended_keymap_default.c50
-rw-r--r--keyboard/planck/extended_keymaps/extended_keymap_jack.c50
-rw-r--r--keyboard/planck/keymap_common.h26
-rw-r--r--keyboard/planck/keymap_sean.c50
-rw-r--r--keyboard/planck/led.c16
-rw-r--r--keyboard/planck/matrix.c2
-rw-r--r--keyboard/planck/matrix_center.c202
-rw-r--r--keyboard/planck/matrix_pcb.c222
30 files changed, 1474 insertions, 125 deletions
diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile
index c456cb51b3..964e6832ea 100644
--- a/keyboard/planck/Makefile
+++ b/keyboard/planck/Makefile
@@ -47,15 +47,35 @@ TOP_DIR = ../..
# Directory keyboard dependent files exist
TARGET_DIR = .
-# project specific files
-SRC = keymap_common.c \
- matrix.c \
- led.c
+
+
+# # project specific files
+ifdef COMMON
+
+ SRC = keymap_common.c \
+ matrix_pcb.c \
+ led.c \
+ backlight.c
ifdef KEYMAP
- SRC := keymap_$(KEYMAP).c $(SRC)
+ SRC := common_keymaps/keymap_$(KEYMAP).c $(SRC)
else
- SRC := keymap_jack.c $(SRC)
+ SRC := common_keymaps/keymap_jack.c $(SRC)
+endif
+
+else
+
+SRC = extended_keymap_common.c \
+ matrix_pcb.c \
+ led.c \
+ backlight.c
+
+ifdef KEYMAP
+ SRC := extended_keymaps/extended_keymap_$(KEYMAP).c $(SRC)
+else
+ SRC := extended_keymaps/extended_keymap_default.c $(SRC)
+endif
+
endif
CONFIG_H = config.h
@@ -118,9 +138,10 @@ MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
-
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
diff --git a/keyboard/planck/README.md b/keyboard/planck/README.md
index cb009c005d..ee824d26e0 100644
--- a/keyboard/planck/README.md
+++ b/keyboard/planck/README.md
@@ -1,24 +1,56 @@
Planck keyboard firmware
======================
-DIY/Assembled compact ortholinear keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
+DIY/Assembled compact ortholinear 40% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
-## Notable TMK forks (which some of the keymap files are from)
-- [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck)
-- [Pierre's Fork](https://github.com/pcarrier/tmk_keyboard/blob/pcarrier/planck/keyboard/gh60/keymap_planck.c)
-- [Nathan's Fork](https://github.com/nathanrosspowell/tmk_keyboard/tree/planck-jack/keyboard/planck)
-- [Matthew's Fork](https://github.com/pepers/tmk_keyboard/tree/master/keyboard/planck_grid)
+## Extended Keymap
+If you include extended_keymap_common.h instead of keymap_common.h at the top of your file, you'll have access to a bunch of goodies:
+
+- Use `LSFT()`, `LCTL()`, et. al. (listed in extended_keymap_common.h) as modifiers for keys (daisy-chain-able)
+- Use `FUNC(1)` instead of `FN1` (etc.) to access the function layers beyond the 32 function layer limit
+- Use `CM_F` instead of `KC_F` to get the ColeMak equivilent for shortcuts (maps backwards)
+- Use `MACRODOWN()` instead of `MACRO()` to easily make a keydown macro (`CM_*` works here too)
+
+### Some notes on usage:
+
+- The `KEYMAP()` macro is unable to be used due to the bitwise modifications that take place - refer to extended_keymap_jack.c to see how to set things up with the `KC_` prefix
+- Keep an eye on the Makefile - this needs to include the correct files to work
+- Don't forget to use `const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {` instead of the 8bit equivilent
## Build
-Move to this directory then just run `make` like:
- $ make
+Follow [this guide](http://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177.html) to setup your development environment before anything else. Abbreviated instructions are provide at the [bottom of this document](https://github.com/rswiernik/tmk_keyboard/tree/rswiernik_dev/keyboard/planck#environment-setup)
-Use `make -f Makefile.pjrc` if you want to use PJRC stack but I find no reason to do so now.
+Download the whole firmware [here](https://github.com/jackhumbert/tmk_keyboard/archive/master.zip) and navigate to the keyboard/planck folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex that you can load with the Teensy app onto your Planck (once you've hit reset/shorted GND & RST).
+Depending on which keymap you would like to use, you will have to compile slightly differently.
+
+####Default
+To build with the default keymap, simply move to the tmk\_keyboard/keyboard/planck/ and run `make` as follows:
+```
+$ make
+```
## Keymap
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document(you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+
+####**Extended Keymaps**
+
+To build the firmware binary hex file with an extended keymap just do `make` with `KEYMAP` option like:
+```
+$ make KEYMAP=[common|jack|<name>]
+```
+_The only applicable keymaps will work with this option._ Extended keymaps follow the format **__extended\_keymap\_\<name\>.c__**
-To build firmware binary hex file with a certain keymap just do `make` with `KEYMAP` option like:
+####**Common Keymaps**
- $ make KEYMAP=[<name>]
+Building with a common keymap is as simple as adding the COMMON option. Note that only
+```
+$ make KEYMAP=[common|jack|<name>] COMMON=true
+```
+_The only applicable keymaps will work with this option._ Common keymaps follow the format **__keymap\_\<name\>.c__**
+
+## Notable TMK forks (which some of the keymap files are from)
+- [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck)
+- [Pierre's Fork](https://github.com/pcarrier/tmk_keyboard/blob/pcarrier/planck/keyboard/gh60/keymap_planck.c)
+- [Nathan's Fork](https://github.com/nathanrosspowell/tmk_keyboard/tree/planck-jack/keyboard/planck)
+- [Matthew's Fork](https://github.com/pepers/tmk_keyboard/tree/master/keyboard/planck_grid)
diff --git a/keyboard/planck/__avr_gdbinit b/keyboard/planck/__avr_gdbinit
new file mode 100644
index 0000000000..afc51e6d19
--- /dev/null
+++ b/keyboard/planck/__avr_gdbinit
@@ -0,0 +1,6 @@
+define reset
+SIGNAL SIGHUP
+end
+file planck_lufa.elf
+target remote localhost:4242
+break main
diff --git a/keyboard/planck/backlight.c b/keyboard/planck/backlight.c
new file mode 100644
index 0000000000..06f103b4ac
--- /dev/null
+++ b/keyboard/planck/backlight.c
@@ -0,0 +1,49 @@
+
+#include <avr/io.h>
+#include "backlight.h"
+
+#define CHANNEL OCR1C
+
+void backlight_init_ports()
+{
+
+ // Setup PB7 as output and output low.
+ DDRB |= (1<<7);
+ PORTB &= ~(1<<7);
+
+ // Use full 16-bit resolution.
+ ICR1 = 0xFFFF;
+
+ // I could write a wall of text here to explain... but TL;DW
+ // Go read the ATmega32u4 datasheet.
+ // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on
+
+ // Pin PB7 = OCR1C (Timer 1, Channel C)
+ // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0
+ // (i.e. start high, go low when counter matches.)
+ // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0
+ // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1
+
+ TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010;
+ TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001;
+
+ backlight_init();
+}
+
+void backlight_set(uint8_t level)
+{
+ if ( level == 0 )
+ {
+ // Turn off PWM control on PB7, revert to output low.
+ TCCR1A &= ~(_BV(COM1C1));
+ // CHANNEL = level << OFFSET | 0x0FFF;
+ CHANNEL = ((1 << level) - 1);
+ }
+ else
+ {
+ // Turn on PWM control of PB7
+ TCCR1A |= _BV(COM1C1);
+ // CHANNEL = level << OFFSET | 0x0FFF;
+ CHANNEL = ((1 << level) - 1);
+ }
+} \ No newline at end of file
diff --git a/keyboard/planck/keymap_brett.c b/keyboard/planck/common_keymaps/keymap_brett.c
index 16a12837cc..97d832b47a 100644
--- a/keyboard/planck/keymap_brett.c
+++ b/keyboard/planck/common_keymaps/keymap_brett.c
@@ -5,15 +5,15 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC,
LCTL, A, S, D, F, G, H, J, K, L, SCLN, ENT,
LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT,
- LGUI, TAB, LCTL, LALT, FN2, SPC, FN1, LEFT, DOWN, UP, RGHT),
+ TAB, LGUI, RSFT, LALT, FN2, SPC, FN1, LEFT, DOWN, UP, RGHT),
[1] = KEYMAP( /* RAISE */
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, DEL,
- TRNS, F1, F2, F3, F4, F5, F6, 4, 5, 6, TRNS, TRNS,
- TRNS, F7, F8, F9, F10, F11, F12, 1, 2, 3, TRNS, PGUP,
- MPRV, MNXT, TRNS, MUTE, TRNS, TRNS, FN1, TRNS, TRNS, TRNS, PGDN),
+ TRNS, F1, F2, F3, F4, F5, F6, 4, 5, 6, QUOT, TRNS,
+ TRNS, F7, F8, F9, F10, F11, F12, 1, 2, 3, TRNS, PGUP,
+ MPRV, MNXT, TRNS, MUTE, TRNS, TRNS, FN1, 0, 0, TRNS, PGDN),
[2] = KEYMAP( /* LOWER */
- FN22, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, MINS,
- TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, EQL,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MINS,
+ TRNS, TRNS, TRNS, PAUSE, TRNS, TRNS, TRNS, TRNS, LBRC, RBRC, BSLS, EQL,
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
MPLY, MSTP, VOLU, VOLD, FN2, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
};
diff --git a/keyboard/planck/keymap_dotcom.c b/keyboard/planck/common_keymaps/keymap_dotcom.c
index 347f6dea91..347f6dea91 100644
--- a/keyboard/planck/keymap_dotcom.c
+++ b/keyboard/planck/common_keymaps/keymap_dotcom.c
diff --git a/keyboard/planck/keymap_jack.c b/keyboard/planck/common_keymaps/keymap_jack.c
index 3724bca49f..c74812121f 100644
--- a/keyboard/planck/keymap_jack.c
+++ b/keyboard/planck/common_keymaps/keymap_jack.c
@@ -24,7 +24,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
const uint16_t PROGMEM fn_actions[] = {
[1] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay
- [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay
+ [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay
[3] = ACTION_DEFAULT_LAYER_SET(0),
[4] = ACTION_DEFAULT_LAYER_SET(1),
diff --git a/keyboard/planck/keymap_joe.c b/keyboard/planck/common_keymaps/keymap_joe.c
index 598b0c455c..598b0c455c 100644
--- a/keyboard/planck/keymap_joe.c
+++ b/keyboard/planck/common_keymaps/keymap_joe.c
diff --git a/keyboard/planck/keymap_matthew.c b/keyboard/planck/common_keymaps/keymap_matthew.c
index 56e7003a97..56e7003a97 100644
--- a/keyboard/planck/keymap_matthew.c
+++ b/keyboard/planck/common_keymaps/keymap_matthew.c
diff --git a/keyboard/planck/keymap_nathan.c b/keyboard/planck/common_keymaps/keymap_nathan.c
index 47539188ed..5a0900b66d 100644
--- a/keyboard/planck/keymap_nathan.c
+++ b/keyboard/planck/common_keymaps/keymap_nathan.c
@@ -3,31 +3,6 @@
#include "keymap_common.h"
-#ifndef KEYMAP_GRID
- /* Planck keymap definition macro for the 'grid' layout
- * ,-----------------------------------------------------------------------.
- * | | | | | | | | | | | | |
- * |-----------------------------------------------------------------------|
- * | | | | | | | | | | | | |
- * |-----------------------------------------------------------------------|
- * | | | | | | | | | | | | |
- * |-----------------------------------------------------------------------|
- * | | | | | | | | | | | | |
- * `-----------------------------------------------------------------------'
- */
-#define KEYMAP_GRID( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B \
-) { \
- { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B }, \
- { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B }, \
- { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B }, \
- { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B } \
-}
-#endif
-
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: main layer
* ,-----------------------------------------------------------------------.
@@ -50,9 +25,9 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* The top row are Visual Studio combos:
* 'Run', 'Breakpoint', 'Step over', 'Step into', 'Set cursor to line'
* 2nd row are key combos:
- * 'ctrl-alt-delete', 'ctrl-shift-escape'
+ * 'ctrl-alt-delete', 'ctrl-shift-escape'
* 3rd row are macros keys:
- * 'P0' - 'P5' execute a script on Windows machines
+ * 'P0' - 'P5' execute a script on Windows machines
* ,-----------------------------------------------------------------------.
* | ESC | F5 | F9 | F10 | F11 |S+F11|CSF10|NLock|Num7 |Num8 |Num9 | Del |
* |-----------------------------------------------------------------------|
@@ -113,7 +88,7 @@ const uint16_t PROGMEM fn_actions[] = {
[11] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // {
[12] = ACTION_MODS_KEY(MOD_LSFT, KC_COMMA), // <
[13] = ACTION_MODS_KEY(MOD_LSFT, KC_0), // )
- [14] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // {
+ [14] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // }
[15] = ACTION_MODS_KEY(MOD_LSFT, KC_DOT), // >
// Combo
[16] = ACTION_MODS_KEY(MOD_LALT | MOD_LCTL, KC_DEL), // Ctrl+Alt+Delete
@@ -127,7 +102,7 @@ const uint16_t PROGMEM fn_actions[] = {
[23] = ACTION_MODS_KEY(MOD_LSFT, KC_6), // ^
[24] = ACTION_MODS_KEY(MOD_LSFT, KC_7), // &
[25] = ACTION_MODS_KEY(MOD_LSFT, KC_8), // *
- [26] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), // +
+ [26] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), // +
[27] = ACTION_MODS_KEY(MOD_LSFT, KC_MINUS), // _
[28] = ACTION_MODS_KEY(MOD_LSFT, KC_QUOTE), // "
[29] = ACTION_MODS_KEY(MOD_LSFT, KC_GRAVE), // ~
@@ -142,39 +117,37 @@ const uint16_t PROGMEM fn_actions[] = {
// *return*
#define RUN_PYTHON_PROGRAM_ON_WIN MACRO( T(ENT), END )
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
keyevent_t event = record->event;
switch (id) {
case M_P0:
return event.pressed ?
- ADD_PYTHON_PROGRAM_ON_WIN( 0 ) :
+ ADD_PYTHON_PROGRAM_ON_WIN( 0 ) :
RUN_PYTHON_PROGRAM_ON_WIN;
case M_P1:
return event.pressed ?
- ADD_PYTHON_PROGRAM_ON_WIN( 1 ) :
+ ADD_PYTHON_PROGRAM_ON_WIN( 1 ) :
RUN_PYTHON_PROGRAM_ON_WIN;
case M_P2:
return event.pressed ?
- ADD_PYTHON_PROGRAM_ON_WIN( 2 ) :
+ ADD_PYTHON_PROGRAM_ON_WIN( 2 ) :
RUN_PYTHON_PROGRAM_ON_WIN;
case M_P3:
return event.pressed ?
- ADD_PYTHON_PROGRAM_ON_WIN( 3 ) :
+ ADD_PYTHON_PROGRAM_ON_WIN( 3 ) :
RUN_PYTHON_PROGRAM_ON_WIN;
case M_P4:
return event.pressed ?
- ADD_PYTHON_PROGRAM_ON_WIN( 4 ) :
+ ADD_PYTHON_PROGRAM_ON_WIN( 4 ) :
RUN_PYTHON_PROGRAM_ON_WIN;
case M_P5:
return event.pressed ?
- ADD_PYTHON_PROGRAM_ON_WIN( 5 ) :
+ ADD_PYTHON_PROGRAM_ON_WIN( 5 ) :
RUN_PYTHON_PROGRAM_ON_WIN;
case M_USERNAME:
return event.pressed ?
MACRO( T(N), T(A), T(T), T(H), T(A), T(N), T(R), T(O), T(S), T(S), T(P), T(O), T(W), T(E), T(L), T(L), END ) :
MACRO_NONE;
-
}
return MACRO_NONE;
}
diff --git a/keyboard/planck/keymap_peasant.c b/keyboard/planck/common_keymaps/keymap_peasant.c
index ddacb614e6..ddacb614e6 100644
--- a/keyboard/planck/keymap_peasant.c
+++ b/keyboard/planck/common_keymaps/keymap_peasant.c
diff --git a/keyboard/planck/common_keymaps/keymap_reed.c b/keyboard/planck/common_keymaps/keymap_reed.c
new file mode 100644
index 0000000000..1aa24e10de
--- /dev/null
+++ b/keyboard/planck/common_keymaps/keymap_reed.c
@@ -0,0 +1,74 @@
+#include "keymap_common.h"
+
+/*
+ * BUILD:
+ * Simply run the command below in the keyboard/planck directory
+ * to build against this keymap
+ *
+ * make KEYMAP=reed COMMON_KEYMAP=true
+ *
+ *
+ * DETAILS:
+ *
+ * This layout works off of Jack's layout, making some changes that I
+ * feel significantly improve the function of the keyboard. Major changes
+ * include adding a "gaming mode" that will allow users to still access
+ * the number keys 1 through 4 easily for games that require it. Also
+ * included is the ability to use the tap/hold function for easy use of
+ * right shift and thumb shift with their tapped companions.
+ *
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP_GRID( /* Reed */
+ ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC,
+ TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT,
+ LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN5,
+ LCTL, CAPS, LALT, LGUI, FN2, FN7, SPC, FN1, LEFT, DOWN, UP, RGHT),
+
+[1] = KEYMAP_GRID( /* Reed EXTREME GAMING */
+ ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC,
+ TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT,
+ LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN5,
+ LCTL, 1, 2, 3, 4, SPC, FN2, FN1, LEFT, DOWN, UP, RGHT),
+
+[2] = KEYMAP_GRID( /* Reed RAISE */
+ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC,
+ TRNS, FN3, FN4, PAUSE, TRNS, TRNS, TRNS, MINS, EQL, LBRC, RBRC, BSLS,
+ TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN1, MNXT, VOLD, VOLU, MPLY),
+
+[3] = KEYMAP_GRID( /* Reed LOWER */
+ TRNS, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, DEL,
+ TRNS, TRNS, INS, HOME, PGUP, TRNS, TRNS, FN20, FN21, FN23, FN24, FN28,
+ TRNS, TRNS, DEL, END, PGDN, F11, F12, F13, TRNS, VOLD, VOLU, TRNS,
+ TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, TRNS, MPRV, MUTE, MPLY, MNXT),
+};
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay - RAISE
+ [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay - LOWER
+
+ [3] = ACTION_DEFAULT_LAYER_SET(0),
+ [4] = ACTION_DEFAULT_LAYER_SET(1),
+ // Actions for the tap/hold modifiers listed above
+ [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT),
+ [7] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPC),
+
+ [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
+ [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
+ [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
+ [13] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
+ [14] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
+ [15] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
+ [16] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
+ [17] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
+ [18] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
+ [19] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
+ [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS),
+ [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),
+ [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),
+ [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC),
+ [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC),
+ [28] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS),
+
+ [29] = ACTION_MODS_KEY(MOD_LSFT | MOD_RSFT, KC_PAUSE),
+};
diff --git a/keyboard/planck/common_keymaps/keymap_sean.c b/keyboard/planck/common_keymaps/keymap_sean.c
new file mode 100644
index 0000000000..4fe07f701a
--- /dev/null
+++ b/keyboard/planck/common_keymaps/keymap_sean.c
@@ -0,0 +1,57 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = KEYMAP( /* Matrix Dvorak */
+ QUOT, COMM, DOT, P, Y, SLSH, EQL, F, G, C, R, L,
+ A, O, E, U, I, ESC, BSPC, D, H, T, N, S,
+ SCLN, Q, J, K, X, TAB, ENT, B, M, W, V, Z,
+ LSFT, LCTL, LALT, LGUI, FN1, SPC, FN2, LEFT, DOWN, UP, RGHT),
+
+ [1] = KEYMAP( /* Matrix Qwerty */
+ Q, W, E, R, T, QUOT, EQL, Y, U, I, O, P,
+ A, S, D, F, G, ESC, BSPC, H, J, K, L, SCLN,
+ Z, X, C, V, B, TAB, ENT, N, M, COMM, DOT, SLSH,
+ LSFT, LCTL, LALT, LGUI, FN1, SPC, FN2, LEFT, DOWN, UP, RGHT),
+
+ [2] = KEYMAP( /* fn1 lower */
+ F1, F2, F3, F4, F5, TRNS, TRNS, F6, F7, F8, F9, F10,
+ 1, 2, 3, 4, 5, F18, DEL, 6, 7, 8, 9, 0,
+ FN3, FN4, TRNS, GRV, MINS, TRNS, TRNS, BSLS, LBRC, RBRC, TRNS, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN5, HOME, PGDN, PGUP, END),
+
+ [3] = KEYMAP( /* fn2 raise */
+ F1, F2, F3, F4, F5, TRNS, TRNS, F6, F7, F8, F9, F10,
+ F11, F12, F13, F14, F15, F18, DEL, F16, F17, F18, F19, F20,
+ FN3, FN4, TRNS, TRNS, TRNS, TRNS, TRNS, EJCT, PWR, LSFT,PAUSE, RSFT,
+ LEFT, DOWN, UP, RGHT, FN5, TRNS, TRNS, MNXT, VOLD, VOLU, MUTE),
+
+ [4] = KEYMAP( /* lower + raise */
+ LEFT, DOWN, UP, RGHT, TRNS, TRNS, TRNS, TRNS, LEFT, DOWN, UP, RGHT,
+ HOME, PGDN, PGUP, END, TRNS, F18, DEL, TRNS, HOME, PGDN, PGUP, END,
+ FN3, FN4, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, EJCT, PWR, MPLY, RSFT,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MNXT, VOLD, VOLU, MUTE),
+};
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay LOWER
+ [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay RAISE
+ [3] = ACTION_DEFAULT_LAYER_SET(0),
+ [4] = ACTION_DEFAULT_LAYER_SET(1),
+ [5] = ACTION_LAYER_MOMENTARY(4), // to Fn overlay LOWER + RAISE
+
+ [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
+ [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
+ [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
+ [13] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
+ [14] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
+ [15] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
+ [16] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
+ [17] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
+ [18] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
+ [19] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
+ [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS),
+ [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),
+ [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),
+ [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC),
+ [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC),
+ [28] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS),
+};
diff --git a/keyboard/planck/keymap_shane.c b/keyboard/planck/common_keymaps/keymap_shane.c
index d4e40fe63a..d4e40fe63a 100644
--- a/keyboard/planck/keymap_shane.c
+++ b/keyboard/planck/common_keymaps/keymap_shane.c
diff --git a/keyboard/planck/common_keymaps/keymap_simon.c b/keyboard/planck/common_keymaps/keymap_simon.c
new file mode 100644
index 0000000000..37951364be
--- /dev/null
+++ b/keyboard/planck/common_keymaps/keymap_simon.c
@@ -0,0 +1,44 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP( /* Jack */
+ ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC,
+ TAB, A, S, D, F, G, H, J, K, L, DOT, ENT,
+ LSFT, Z, X, C, V, B, N, M, COMM, DOT, SCLN, DEL,
+ LCTL, ENT, LALT, CAPS, FN2, SPC, FN1, LEFT, DOWN, UP, RGHT),
+[1] = KEYMAP( /* Jack RAISE */
+ TRNS, F1, F2, F3, F4, NO, FN11, FN9, FN12, NO, FN14, TRNS,
+ TRNS, F5, F6, F7, F8, FN16, SLSH, MINS, EQL, LBRC, FN8, TRNS,
+ TRNS, F9, F10, F11, F12, F15, F16, FN22, SCLN, MINS, QUOT, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
+[2] = KEYMAP( /* Jack LOWER */
+ FN22, 1, 2, 3, FN13, FN14, FN15, FN16, FN17, FN18, FN19, BSPC,
+ TRNS, 4, 5, 6, TRNS, TRNS, TRNS, FN20, FN21, FN23, FN24, FN28,
+ TRNS, 7, 8, 9, 0, FN28, FN15, F7, F8, F9, F10, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
+};
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay
+ [2] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay
+
+ [8] = ACTION_MODS_KEY(MOD_LSFT, KC_SLSH),
+ [9] = ACTION_MODS_KEY(MOD_LSFT, KC_QUOT),
+ [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
+ [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
+ [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
+ [13] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
+ [14] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
+ [15] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
+ [16] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
+ [17] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
+ [18] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
+ [19] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
+ [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS),
+ [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),
+ [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),
+ [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC),
+ [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC),
+ [28] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS),
+
+ [29] = ACTION_MODS_KEY(MOD_LSFT | MOD_RSFT, KC_PAUSE),
+};
diff --git a/keyboard/planck/common_keymaps/keymap_tim.c b/keyboard/planck/common_keymaps/keymap_tim.c
new file mode 100644
index 0000000000..7444f3877b
--- /dev/null
+++ b/keyboard/planck/common_keymaps/keymap_tim.c
@@ -0,0 +1,44 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(
+ ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC,
+ TAB, A, S, D, F, G, H, J, K, L, SCLN, ENT,
+ LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT,
+ LCTL, LALT, DEL, LGUI, FN2, SPC, FN1, F2, F5, F9, F12),
+[2] = KEYMAP( /* RAISE */
+ TRNS, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC,
+ GRV, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, MINS, EQL, LBRC, RBRC, BSLS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, QUOT, FN29, TRNS, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN1, TRNS, TRNS, TRNS, TRNS),
+[3] = KEYMAP( /* LOWER */
+ TRNS, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, BSPC,
+ FN22, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN20, FN21, FN23, FN24, FN28,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, QUOT, FN29, TRNS, TRNS,
+ TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
+};
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay
+ [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay
+
+ [3] = ACTION_DEFAULT_LAYER_SET(0),
+ [4] = ACTION_DEFAULT_LAYER_SET(1),
+
+ [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
+ [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
+ [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
+ [13] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
+ [14] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
+ [15] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
+ [16] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
+ [17] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
+ [18] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
+ [19] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
+ [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS),
+ [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),
+ [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),
+ [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC),
+ [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC),
+ [28] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS),
+ [29] = ACTION_MODS_KEY(MOD_LSFT, KC_QUOT),
+};
diff --git a/keyboard/planck/common_keymaps/keymap_wilba.c b/keyboard/planck/common_keymaps/keymap_wilba.c
new file mode 100644
index 0000000000..9781f8fcd8
--- /dev/null
+++ b/keyboard/planck/common_keymaps/keymap_wilba.c
@@ -0,0 +1,56 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP( /* Wilba */
+ FN27, FN28, FN29, E, R, T, Y, U, I, O, P, BSPC,
+ TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT,
+ LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT,
+ LCTL, LGUI, LALT, RSFT, FN1, SPC, FN2, LEFT, DOWN, UP, RGHT),
+[1] = KEYMAP( /* Wilba Alternate */
+ ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC,
+ TAB, A, S, D, F, G, H, J, K, L, SCLN, QUOT,
+ LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT,
+ LCTL, LGUI, LALT, RSFT, FN1, SPC, FN2, LEFT, DOWN, UP, RGHT),
+[2] = KEYMAP( /* Wilba LOWER */
+ TRNS, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, TRNS,
+ TRNS, F11, F12, LBRC, RBRC, FN20, EQL, FN23, FN24, MINS, FN21, TRNS,
+ TRNS, BSLS, GRV, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
+ TRNS, TRNS, TRNS, TRNS, FN1, TRNS, TRNS, MNXT, VOLD, VOLU, MPLY),
+[3] = KEYMAP( /* Wilba RAISE */
+ TRNS, FN10, FN11, FN12, FN13, FN14, FN15, FN16, FN17, FN18, FN19, TRNS,
+ TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, TRNS,
+ TRNS, FN25, FN22, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
+ TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, TRNS, TRNS),
+};
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_MOMENTARY(2), // LOWER
+ [2] = ACTION_LAYER_MOMENTARY(3), // RAISE
+
+ [3] = ACTION_DEFAULT_LAYER_SET(0),
+ [4] = ACTION_DEFAULT_LAYER_SET(1),
+
+ [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1), // !
+ [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2), // @
+ [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3), // #
+ [13] = ACTION_MODS_KEY(MOD_LSFT, KC_4), // $
+ [14] = ACTION_MODS_KEY(MOD_LSFT, KC_5), // %
+ [15] = ACTION_MODS_KEY(MOD_LSFT, KC_6), // ^
+ [16] = ACTION_MODS_KEY(MOD_LSFT, KC_7), // &</