summaryrefslogtreecommitdiff
path: root/keyboard
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2016-01-23 20:37:00 -0500
committerJack Humbert <jack.humb@gmail.com>2016-01-23 20:37:00 -0500
commit9a1ae948c9e19d3153512c196801a969c9637732 (patch)
tree948641e82788ee298468da9090749f79ad765c00 /keyboard
parente5aee62e54d0b6f02ff170f4e9bf1e738d36fb4c (diff)
parentae620fe8562254a5c00a48b863cabd4c87abd613 (diff)
Merge pull request #104 from jackhumbert/smarkefile
Rework Planck file structure
Diffstat (limited to 'keyboard')
-rw-r--r--keyboard/ergodox_ez/keymaps/jack/keymap.c69
-rw-r--r--keyboard/ergodox_ez/keymaps/keymap_generated.c78
-rw-r--r--keyboard/planck/Makefile32
-rw-r--r--keyboard/planck/README.md126
-rw-r--r--keyboard/planck/keymaps/alexey.c (renamed from keyboard/planck/keymaps/keymap_alexey.c)0
-rw-r--r--keyboard/planck/keymaps/angerthosenear.c (renamed from keyboard/planck/keymaps/keymap_angerthosenear.c)0
-rw-r--r--keyboard/planck/keymaps/austin.c (renamed from keyboard/planck/keymaps/keymap_austin.c)0
-rw-r--r--keyboard/planck/keymaps/charlie.c (renamed from keyboard/planck/keymaps/keymap_charlie.c)0
-rw-r--r--keyboard/planck/keymaps/daniel.c (renamed from keyboard/planck/keymaps/keymap_daniel.c)0
-rw-r--r--keyboard/planck/keymaps/david.c (renamed from keyboard/planck/keymaps/keymap_david.c)0
-rw-r--r--keyboard/planck/keymaps/default/README.md34
-rw-r--r--keyboard/planck/keymaps/default/keymap.c (renamed from keyboard/planck/keymaps/keymap_default.c)8
-rw-r--r--keyboard/planck/keymaps/dzobert.c (renamed from keyboard/planck/keymaps/keymap_dzobert.c)0
-rw-r--r--keyboard/planck/keymaps/gabriel.c (renamed from keyboard/planck/keymaps/keymap_gabriel.c)0
-rw-r--r--keyboard/planck/keymaps/joe.c (renamed from keyboard/planck/keymaps/keymap_joe.c)0
-rw-r--r--keyboard/planck/keymaps/keymap_jack.c50
-rw-r--r--keyboard/planck/keymaps/kyle.c (renamed from keyboard/planck/keymaps/keymap_kyle.c)0
-rw-r--r--keyboard/planck/keymaps/leo.c (renamed from keyboard/planck/keymaps/keymap_leo.c)0
-rw-r--r--keyboard/planck/keymaps/lock/README.md3
-rw-r--r--keyboard/planck/keymaps/lock/keymap.c (renamed from keyboard/planck/keymaps/keymap_lock.c)55
-rw-r--r--keyboard/planck/keymaps/max.c (renamed from keyboard/planck/keymaps/keymap_max.c)0
-rw-r--r--keyboard/planck/keymaps/monkey.c (renamed from keyboard/planck/keymaps/keymap_monkey.c)0
-rw-r--r--keyboard/planck/keymaps/numpad.c (renamed from keyboard/planck/keymaps/keymap_numpad.c)0
-rw-r--r--keyboard/planck/planck.h7
24 files changed, 286 insertions, 176 deletions
diff --git a/keyboard/ergodox_ez/keymaps/jack/keymap.c b/keyboard/ergodox_ez/keymaps/jack/keymap.c
index 2677a3d8fa..f8f73a1afd 100644
--- a/keyboard/ergodox_ez/keymaps/jack/keymap.c
+++ b/keyboard/ergodox_ez/keymaps/jack/keymap.c
@@ -8,29 +8,6 @@
#define MDIA 2 // media keys
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Keymap 0: Basic layer
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' |
- * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
- * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | App | LGui | | Alt |Ctrl/Esc|
- * ,------|------|------| |------+--------+------.
- * | | | Home | | PgUp | | |
- * | Space|Backsp|------| |------| Tab |Enter |
- * | |ace | End | | PgDn | | |
- * `--------------------' `----------------------'
- */
-// If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
[BASE] = KEYMAP( // layer 0 : default
// left hand
KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO,
@@ -51,28 +28,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_PGUP,
KC_PGDN, KC_SPC,KC_SPC
),
-/* Keymap 1: Symbol Layer
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | | | | | . | 0 | = | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | | | | | |
- * ,------|------|------| |------+------+------.
- * | | | | | | | |
- * | | |------| |------| | |
- * | | | | | | | |
- * `--------------------' `--------------------'
- */
-// SYMBOLS
[SYMB] = KEYMAP(
// left hand
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
@@ -93,29 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
-/* Keymap 2: Media and mouse keys
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | | | | | | | | | | | | | | | |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | | | MsUp | | | | | | | | | | | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | | | | | | | | | | Prev | Next | | |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | | | | | |
- * ,------|------|------| |------+------+------.
- * | | | | | | |Brwser|
- * | | |------| |------| |Back |
- * | | | | | | | |
- * `--------------------' `--------------------'
- */
-// MEDIA AND MOUSE
-KEYMAP(
+[MDIA] = KEYMAP(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS,
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
diff --git a/keyboard/ergodox_ez/keymaps/keymap_generated.c b/keyboard/ergodox_ez/keymaps/keymap_generated.c
new file mode 100644
index 0000000000..54fd3059f2
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/keymap_generated.c
@@ -0,0 +1,78 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+
+#define SYMB 0
+
+[0] = KEYMAP( \
+\
+KC_KP_EQUAL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_DELETE, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), KC_BSPACE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TAB, KC_LEFT, KC_RIGHT, KC_TRANSPARENT, KC_LGUI, KC_HOME, KC_SPACE, KC_BSPACE, KC_END, KC_RIGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, TG(1), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, KC_TRANSPARENT, KC_N, KC_M, KC_COMMA, KC_DOT, KC_LCTRL, KC_LSHIFT, KC_UP, KC_DOWN, KC_LBRACKET, KC_RBRACKET, KC_TRANSPARENT, KC_LALT, KC_ESCAPE, KC_PGUP, KC_PGDOWN, KC_TAB, KC_ENTER \
+\
+),
+
+[1] = KEYMAP( \
+\
+KC_TRANSPARENT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRANSPARENT, KC_UP, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_ASTERISK, KC_F12, KC_DOWN, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_TRANSPARENT, KC_TRANSPARENT, , KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, KC_TRANSPARENT, KC_TRANSPARENT, KC_KP_DOT, KC_KP_0, KC_KP_EQUAL, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT \
+\
+),
+
+[2] = KEYMAP( \
+\
+KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_UP, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_BTN3, KC_MS_BTN2, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MEDIA_PLAY_PAUSE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_VOL_UP, KC_AUDIO_VOL_DOWN, KC_AUDIO_MUTE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT \
+\
+),
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void * matrix_init_user(void) {
+
+};
+
+// Runs constantly in the background, in a loop.
+void * matrix_scan_user(void) {
+
+ uint8_t layer = biton32(layer_state);
+
+ ergodox_board_led_off();
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+ switch (layer) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile
index 485c5f77f6..dece6a7f17 100644
--- a/keyboard/planck/Makefile
+++ b/keyboard/planck/Makefile
@@ -50,14 +50,30 @@ TMK_DIR = ../../tmk_core
TARGET_DIR = .
# # project specific files
-SRC = planck.c \
- backlight.c
+SRC = planck.c
+
+ifdef keymap
+ KEYMAP = $(keymap)
+endif
ifdef KEYMAP
- SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+ifneq ("$(wildcard keymaps/$(KEYMAP).c)","")
+ KEYMAP_FILE = keymaps/$(KEYMAP).c
+else
+ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","")
+ KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c
else
- SRC := keymaps/keymap_default.c $(SRC)
+$(error Keymap file does not exist)
endif
+endif
+else
+ifneq ("$(wildcard keymaps/default.c)","")
+ KEYMAP_FILE = keymaps/default.c
+else
+ KEYMAP_FILE = keymaps/default/keymap.c
+endif
+endif
+SRC := $(KEYMAP_FILE) $(SRC)
CONFIG_H = config.h
@@ -122,11 +138,15 @@ 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 - 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 = YES # MIDI controls
+# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+MIDI_ENABLE = YES # MIDI controls
+AUDIO_ENABLE = YES # Audio output on port C6
# UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+ifdef BACKLIGHT_ENABLE
+ SRC += backlight.c
+endif
# 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 0003e765d4..5c3a52498a 100644
--- a/keyboard/planck/README.md
+++ b/keyboard/planck/README.md
@@ -3,29 +3,42 @@ Planck keyboard firmware
DIY/Assembled compact ortholinear 40% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
## Quantum MK Firmware
+
You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you.
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = yes # MIDI controls
- # UNICODE_ENABLE = yes # Unicode support
+ # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not //
BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
-### Mod shortcuts
+## Quick aliases to common actions
+
+Your keymap can include shortcuts to common operations (called "function actions" in tmk).
+
+### Switching and toggling layers
+
+`MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack.
+
+`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer).
+
+`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack.
-* `LSFT(kc)` - applies left shift to *kc* - `S(kc)` is an alias
-* `RSFT(kc)` - applies right shift to *kc*
-* `LCTL(kc)` - applies left control to *kc*
-* `RCTL(kc)` - applies right control to *kc*
-* `LALT(kc)` - applies left alt to *kc*
-* `RALT(kc)` - applies right alt to *kc*
-* `LGUI(kc)` - applies left gui (command/win) to *kc*
-* `RGUI(kc)` - applies right gui (command/win) to *kc*
+### Fun with modifier keys
-You can also use more than one, like this:
+* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias
+* `RSFT(kc)` - applies right Shift to *kc*
+* `LCTL(kc)` - applies left Control to *kc*
+* `RCTL(kc)` - applies right Control to *kc*
+* `LALT(kc)` - applies left Alt to *kc*
+* `RALT(kc)` - applies right Alt to *kc*
+* `LGUI(kc)` - applies left GUI (command/win) to *kc*
+* `RGUI(kc)` - applies right GUI (command/win) to *kc*
- LALT(LGUI(KC_ESC))
+You can also chain these, like this:
-The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names (see `quantum/keymap_common.h`) are also availble.
+ LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress.
+
+The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `/quantum/keymap_common.h`.
KC_TILD ~
KC_EXLM !
@@ -45,31 +58,71 @@ The following shortcuts automatically add `LSFT()` to keycodes to get commonly u
KC_PIPE |
KC_COLN :
-### Function shortcuts
+`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down.
+
+These are the values you can use for the `mod` in `MT()` (right-hand modifiers are not available):
+
+ * MOD_LCTL
+ * MOD_LSFT
+ * MOD_LALT
+ * MOD_LGUI
-Instead of using `FNx`, you can use `F(x)` - the benefit here is being able to use more than 32 function layers (up to 4096), if you happen to need them.
+These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped.
-There are also keycode shortcuts for common actions:
+We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact:
-* `MO(layer)` - momentary switch to *layer*
-* `DF(layer)` - sets default layer to *layer*
-* `TG(layer)` - toggle between the current layer and *layer*
-* `MT(mod, kc)` - is *mod* when held, and *kc* when tapped
* `CTL_T(kc)` - is LCTL when held and *kc* when tapped
* `SFT_T(kc)` - is LSFT when held and *kc* when tapped
* `ALT_T(kc)` - is LALT when held and *kc* when tapped
* `GUI_T(kc)` - is LGUI when held and *kc* when tapped
- * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped
-* `LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped
+ * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)
+
+### Temporarily setting the default layer
+
+`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does.
+
+### Remember: These are just aliases
-These functions work the same way that their `ACTION_*` functions do, and will require KC_TRNS on the layer being switched to - check out the default keymap for an example.
+These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action).
-### Additional keycodes for software-implemented layouts (Colemak, Dvorak, etc)
+Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them.
+
+## Macro shortcuts: Send a whole string when pressing just one key
+
+Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to trigger it. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymaps/default.c).
+
+```c
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is.
+{
+ switch(id) {
+ case 0: // this would trigger when you hit a key mapped as M(0)
+ if (record->event.pressed) {
+ return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+```
+A macro can include the following commands:
+
+* I() change interval of stroke in milliseconds.
+* D() press key.
+* U() release key.
+* T() type key(press and release).
+* W() wait (milliseconds).
+* END end mark.
+
+So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends.
+
+Note: Using macros to have your keyboard send passwords for you is a bad idea.
+
+### Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc)
Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap:
- #include "keymap_<layout>.h"
-
+ #include "keymap_<layout>.h"
+
Where <layout> is "colemak" or "dvorak". After including this line, you will get access to:
* `CM_*` for all of the Colemak-equivalent characters
@@ -79,19 +132,15 @@ These implementations assume you're using Colemak or Dvorak on your OS, not on y
To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`.
-### Additional language support
+## Additional language support
-In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbrivation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support).
+In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support).
-### Unicode support
+## Unicode support
You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile.
-### Macro shortcuts
-
-Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to filter them. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c).
-
-### Other keyboard shortcut keycodes
+## Other firmware shortcut keycodes
* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`)
* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things
@@ -105,12 +154,11 @@ Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to acces
Enable the backlight from the Makefile.
-
-### MIDI functionalty
+## MIDI functionalty
This is still a WIP, but check out `quantum/keymap_midi.c` to see what's happening. Enable from the Makefile.
-### Bluetooth functionality
+## Bluetooth functionality
This requires [some hardware changes](https://www.reddit.com/r/MechanicalKeyboards/comments/3psx0q/the_planck_keyboard_with_bluetooth_guide_and/?ref=search_posts), but can be enabled via the Makefile. The firmware will still output characters via USB, so be aware of this when charging via a computer. It would make sense to have a switch on the Bluefruit to turn it off at will.
@@ -124,13 +172,13 @@ Depending on which keymap you would like to use, you will have to compile slight
To build with the default keymap, simply run `make`.
### Other Keymaps
-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 `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
```
$ make KEYMAP=[default|jack|<name>]
```
-Keymaps follow the format **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder.
+Keymaps follow the format **__<name\>.c__** and are stored in the `keymaps` folder.
### Notable forks (which some of the keymap files are from)
- [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck)
diff --git a/keyboard/planck/keymaps/keymap_alexey.c b/keyboard/planck/keymaps/alexey.c
index 89af4112c6..89af4112c6 100644
--- a/keyboard/planck/keymaps/keymap_alexey.c
+++ b/keyboard/planck/keymaps/alexey.c
diff --git a/keyboard/planck/keymaps/keymap_angerthosenear.c b/keyboard/planck/keymaps/angerthosenear.c
index cdf60632e4..cdf60632e4 100644
--- a/keyboard/planck/keymaps/keymap_angerthosenear.c
+++ b/keyboard/planck/keymaps/angerthosenear.c
diff --git a/keyboard/planck/keymaps/keymap_austin.c b/keyboard/planck/keymaps/austin.c
index 49fc98a587..49fc98a587 100644
--- a/keyboard/planck/keymaps/keymap_austin.c
+++ b/keyboard/planck/keymaps/austin.c
diff --git a/keyboard/planck/keymaps/keymap_charlie.c b/keyboard/planck/keymaps/charlie.c
index 88f454d789..88f454d789 100644
--- a/keyboard/planck/keymaps/keymap_charlie.c
+++ b/keyboard/planck/keymaps/charlie.c
diff --git a/keyboard/planck/keymaps/keymap_daniel.c b/keyboard/planck/keymaps/daniel.c
index 234e48ff4a..234e48ff4a 100644
--- a/keyboard/planck/keymaps/keymap_daniel.c
+++ b/keyboard/planck/keymaps/daniel.c
diff --git a/keyboard/planck/keymaps/keymap_david.c b/keyboard/planck/keymaps/david.c
index f483084801..f483084801 100644
--- a/keyboard/planck/keymaps/keymap_david.c
+++ b/keyboard/planck/keymaps/david.c
diff --git a/keyboard/planck/keymaps/default/README.md b/keyboard/planck/keymaps/default/README.md
new file mode 100644
index 0000000000..d2f43bbdb8
--- /dev/null
+++ b/keyboard/planck/keymaps/default/README.md
@@ -0,0 +1,34 @@
+# The Default Planck Layout
+
+ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QW] = { /* Qwerty */
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
+ {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ },
+ [_CM] = { /* Colemak */
+ {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
+ {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
+ {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ },
+ [_DV] = { /* Dvorak */
+ {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
+ {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
+ {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
+ {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ },
+ [_RS] = { /* RAISE */
+ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
+ {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
+ {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+ },
+ [_LW] = { /* LOWER */
+ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+ {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+ {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+ }
+ }; \ No newline at end of file
diff --git a/keyboard/planck/keymaps/keymap_default.c b/keyboard/planck/keymaps/default/keymap.c
index 49670dafd3..a9c2a06813 100644
--- a/keyboard/planck/keymaps/keymap_default.c
+++ b/keyboard/planck/keymaps/default/keymap.c
@@ -2,7 +2,9 @@
// this is the style you want to emulate.
#include "planck.h"
-#include "backlight.h"
+#ifdef BACKLIGHT_ENABLE
+ #include "backlight.h"
+#endif
// 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.
@@ -58,7 +60,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
case 0:
if (record->event.pressed) {
register_code(KC_RSFT);
- backlight_step();
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
} else {
unregister_code(KC_RSFT);
}
diff --git a/keyboard/planck/keymaps/keymap_dzobert.c b/keyboard/planck/keymaps/dzobert.c
index 665e9c20b6..665e9c20b6 100644
--- a/keyboard/planck/keymaps/keymap_dzobert.c
+++ b/keyboard/planck/keymaps/dzobert.c
diff --git a/keyboard/planck/keymaps/keymap_gabriel.c b/keyboard/planck/keymaps/gabriel.c
index 805484488b..805484488b 100644
--- a/keyboard/planck/keymaps/keymap_gabriel.c
+++ b/keyboard/planck/keymaps/gabriel.c
diff --git a/keyboard/planck/keymaps/keymap_joe.c b/keyboard/planck/keymaps/joe.c
index 5b7bbe2bbb..5b7bbe2bbb 100644
--- a/keyboard/planck/keymaps/keymap_joe.c
+++ b/keyboard/planck/keymaps/joe.c
diff --git a/keyboard/planck/keymaps/keymap_jack.c b/keyboard/planck/keymaps/keymap_jack.c
deleted file mode 100644
index 0b93bba33f..0000000000
--- a/keyboard/planck/keymaps/keymap_jack.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "keymap_common.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Jack soft-coded colemak */
- {KC_TAB, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_BSPC},
- {KC_ESC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_QUOT},
- {KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, KC_ENT},
- {BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
- // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* Jack hard-coded colemak */
- {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
- {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT},
- {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
-},
-[2] = { /* Jack RAISE */
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
- {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
- {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* Jack LOWER */
- {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC},
- {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
- {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-}
-};
-
-
-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),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- return MACRODOWN(T(CM_T), END);
- break;
- }
- return MACRO_NONE;
-};
diff --git a/keyboard/planck/keymaps/keymap_kyle.c b/keyboard/planck/keymaps/kyle.c
index da32b74f96..da32b74f96 100644
--- a/keyboard/planck/keymaps/keymap_kyle.c
+++ b/keyboard/planck/keymaps/kyle.c
diff --git a/keyboard/planck/keymaps/keymap_leo.c b/keyboard/planck/keymaps/leo.c
index 6d66441822..6d66441822 100644
--- a/keyboard/planck/keymaps/keymap_leo.c
+++ b/keyboard/planck/keymaps/leo.c
diff --git a/keyboard/planck/keymaps/lock/README.md b/keyboard/planck/keymaps/lock/README.md
new file mode 100644
index 0000000000..d21cb990b0
--- /dev/null
+++ b/keyboard/planck/keymaps/lock/README.md
@@ -0,0 +1,3 @@
+# Lock layout
+
+This layout is designed for having a lock switch in the lower-left-hand corner, and for experimenting with MIDI/audio features. It's constantly in development, so don't expect anything to work/be documented correctly! \ No newline at end of file
diff --git a/keyboard/planck/keymaps/keymap_lock.c b/keyboard/planck/keymaps/lock/keymap.c
index cc9be55f64..9585764629 100644
--- a/keyboard/planck/keymaps/keymap_lock.c
+++ b/keyboard/planck/keymaps/lock/keymap.c
@@ -1,7 +1,12 @@
+// USING_MIDI
+// USING_BACKLIGHT
#include "keymap_common.h"
-#include "backlight.h"
+#ifdef BACKLIGHT_ENABLE
+ #include "backlight.h"
+#endif
#include "action_layer.h"
#include "keymap_midi.h"
+#include "audio.h"
#include <avr/boot.h>
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -63,15 +68,31 @@ uint16_t hextokeycode(int hex) {
}
}
+float walk_up[][2] = {
+ {440.0*pow(2.0,(60)/12.0), 400},
+ {0, 50},
+ {440.0*pow(2.0,(67)/12.0), 600},
+};
+
+float walk_dn[][2] = {
+ {440.0*pow(2.0,(67)/12.0), 400},
+ {0, 50},
+ {440.0*pow(2.0,(60)/12.0), 600},
+};
+
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
+
+ play_notes(&walk_up, 3, false);
// play_note(440, 20);
// register_code(KC_RSFT);
- backlight_set(BACKLIGHT_LEVELS);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_set(BACKLIGHT_LEVELS);
+ #endif
default_layer_and(0);
default_layer_or((1<<5));
@@ -103,19 +124,33 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
// register_code(hextokeycode((lock & 0x0F)));
// unregister_code(hextokeycode((lock & 0x0F)));
- // note(0+12, 20);
- // note(0+24, 20);
} else {
- // unregister_code(KC_RSFT);
- // stop_note();
- backlight_set(0);
+ unregister_code(KC_RSFT);
+ play_notes(&walk_dn, 3, false);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_set(0);
+ #endif
default_layer_and(0);
default_layer_or(0);
- // note(0+24, 20);
- // note(0, 20);
- // play_note(4, 20);
}
break;
}
return MACRO_NONE;
};
+
+float start_up[][2] = {
+ {440.0*pow(2.0,(67)/12.0), 600},
+ {0, 50},
+ {440.0*pow(2.0,(64)/12.0), 400},
+ {0, 50},
+ {440.0*pow(2.0,(55)/12.0), 400},
+ {0, 50},
+ {440.0*pow(2.0,(60)/12.0), 400},
+ {0, 50},
+ {440.0*pow(2.0,(64)/12.0), 1000},
+};
+
+void * matrix_init_user(void) {
+ init_notes();
+ play_notes(&start_up, 9, false);
+} \ No newline at end of file
diff --git a/keyboard/planck/keymaps/keymap_max.c b/keyboard/planck/keymaps/max.c
index 7fb29bc7a4..7fb29bc7a4 100644
--- a/keyboard/planck/keymaps/keymap_max.c
+++ b/keyboard/planck/keymaps/max.c
diff --git a/keyboard/planck/keymaps/keymap_monkey.c b/keyboard/planck/keymaps/monkey.c
index 21a2c146ab..21a2c146ab 100644
--- a/keyboard/planck/keymaps/keymap_monkey.c
+++ b/keyboard/planck/keymaps/monkey.c
diff --git a/keyboard/planck/keymaps/keymap_numpad.c b/keyboard/planck/keymaps/numpad.c
index 7de4372ab0..7de4372ab0 100644
--- a/keyboard/planck/keymaps/keymap_numpad.c
+++ b/keyboard/planck/keymaps/numpad.c
diff --git a/keyboard/planck/planck.h b/keyboard/planck/planck.h
index 4e59aef566..e775ea7c62 100644
--- a/keyboard/planck/planck.h
+++ b/keyboard/planck/planck.h
@@ -3,8 +3,13 @@
#include "matrix.h"
#include "keymap_common.h"
-#include "backlight.h"
+#ifdef BACKLIGHT_ENABLE
+ #include "backlight.h"
+#endif
#include <stddef.h>
+#ifdef MIDI_ENABLE
+ #include <keymap_midi.h>
+#endif
#define PLANCK_MIT( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \