diff --git a/common_features.mk b/common_features.mk
index 05a99fc63c8..83b2b51aed8 100644
--- a/common_features.mk
+++ b/common_features.mk
@@ -246,6 +246,11 @@ ifneq ($(strip $(BACKLIGHT_ENABLE)), no)
CIE1931_CURVE = yes
endif
+
+ COMMON_VPATH += $(QUANTUM_DIR)/backlight
+ SRC += $(QUANTUM_DIR)/backlight/backlight.c
+ OPT_DEFS += -DBACKLIGHT_ENABLE
+
ifeq ($(strip $(BACKLIGHT_ENABLE)), custom)
OPT_DEFS += -DBACKLIGHT_CUSTOM_DRIVER
endif
diff --git a/docs/coding_conventions_c.md b/docs/coding_conventions_c.md
index cbddedf8b0f..08994bfbb74 100644
--- a/docs/coding_conventions_c.md
+++ b/docs/coding_conventions_c.md
@@ -31,17 +31,17 @@ Here is an example for easy reference:
```c
/* Enums for foo */
enum foo_state {
- FOO_BAR,
- FOO_BAZ,
+ FOO_BAR,
+ FOO_BAZ,
};
/* Returns a value */
int foo(void) {
- if (some_condition) {
- return FOO_BAR;
- } else {
- return -1;
- }
+ if (some_condition) {
+ return FOO_BAR;
+ } else {
+ return -1;
+ }
}
```
diff --git a/docs/config_options.md b/docs/config_options.md
index 9e43f47c259..abd98ec8a80 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -267,6 +267,14 @@ There are a few different ways to set handedness for split keyboards (listed in
* 4: about 26kbps
* 5: about 20kbps
+* `#define SPLIT_USB_DETECT`
+ * Detect (with timeout) USB connection when delegating master/slave
+ * Default behavior for ARM
+ * Required for AVR Teensy
+
+* `#define SPLIT_USB_TIMEOUT 2500`
+ * Maximum timeout when detecting master/slave when using `SPLIT_USB_DETECT`
+
# The `rules.mk` File
This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.
@@ -302,13 +310,13 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU.
* `BOOTMAGIC_ENABLE`
- * Virtual DIP switch configuration(+1000)
+ * Virtual DIP switch configuration
* `MOUSEKEY_ENABLE`
- * Mouse keys(+4700)
+ * Mouse keys
* `EXTRAKEY_ENABLE`
- * Audio control and System control(+450)
+ * Audio control and System control
* `CONSOLE_ENABLE`
- * Console for debug(+400)
+ * Console for debug
* `COMMAND_ENABLE`
* Commands for debug and configuration
* `COMBO_ENABLE`
@@ -340,7 +348,7 @@ Use these to enable or disable building certain features. The more you have enab
* `NO_USB_STARTUP_CHECK`
* Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master.
* `LINK_TIME_OPTIMIZATION_ENABLE`
- = Enables Link Time Optimization (`LTO`) when compiling the keyboard. This makes the process take longer, but can significantly reduce the compiled size (and since the firmware is small, the added time is not noticable). However, this will automatically disable the old Macros and Functions features automatically, as these break when `LTO` is enabled. It does this by automatically defining `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION`
+ = Enables Link Time Optimization (`LTO`) when compiling the keyboard. This makes the process take longer, but can significantly reduce the compiled size (and since the firmware is small, the added time is not noticable). However, this will automatically disable the old Macros and Functions features automatically, as these break when `LTO` is enabled. It does this by automatically defining `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION`
## USB Endpoint Limitations
diff --git a/docs/feature_hd44780.md b/docs/feature_hd44780.md
index e0838948a2b..0a174035be8 100644
--- a/docs/feature_hd44780.md
+++ b/docs/feature_hd44780.md
@@ -2,7 +2,7 @@
This is an integration of Peter Fleury's LCD library. This page will explain the basics. [For in depth documentation visit his page.](http://homepage.hispeed.ch/peterfleury/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
-You can enable support for HD44780 Displays by setting the `HD44780_ENABLE` flag in your keyboards `rules.mk` to yes. This will use about 400 KB of extra space.
+You can enable support for HD44780 Displays by setting the `HD44780_ENABLE` flag in your keyboards `rules.mk` to yes.
## Configuration
@@ -26,7 +26,7 @@ Uncomment the section labled HD44780 and change the parameters as needed.
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
-#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
#define LCD_RS_PORT LCD_PORT //< port for RS line
#define LCD_RS_PIN 3 //< pin for RS line
@@ -39,14 +39,14 @@ Uncomment the section labled HD44780 and change the parameters as needed.
Should you need to configure other properties you can copy them from `quantum/hd44780.h` and set them in your `config.h`
-## Usage
+## Usage
To initialize your display, call `lcd_init()` with one of these parameters:
````
LCD_DISP_OFF : display off
LCD_DISP_ON : display on, cursor off
LCD_DISP_ON_CURSOR : display on, cursor on
-LCD_DISP_ON_CURSOR_BLINK : display on, cursor on flashing
+LCD_DISP_ON_CURSOR_BLINK : display on, cursor on flashing
````
This is best done in your keyboards `matrix_init_kb` or your keymaps `matrix_init_user`.
It is advised to clear the display before use.
diff --git a/docs/feature_key_lock.md b/docs/feature_key_lock.md
index 718d9c5bd19..46935adda06 100644
--- a/docs/feature_key_lock.md
+++ b/docs/feature_key_lock.md
@@ -16,7 +16,7 @@ First, enable Key Lock by setting `KEY_LOCK_ENABLE = yes` in your `rules.mk`. Th
## Caveats
-Key Lock is only able to hold standard action keys and [One Shot modifier](quantum_keycodes.md#one-shot-keys) keys (for example, if you have your Shift defined as `OSM(KC_LSFT)`).
+Key Lock is only able to hold standard action keys and [One Shot modifier](feature_advanced_keycodes.md#one-shot-keys) keys (for example, if you have your Shift defined as `OSM(KC_LSFT)`).
This does not include any of the QMK special functions (except One Shot modifiers), or shifted versions of keys such as `KC_LPRN`. If it's in the [Basic Keycodes](keycodes_basic.md) list, it can be held.
Switching layers will not cancel the Key Lock.
diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md
index 42dd838d0da..efc65a4c700 100644
--- a/docs/feature_split_keyboard.md
+++ b/docs/feature_split_keyboard.md
@@ -190,6 +190,18 @@ This sets how many LEDs are directly connected to each controller. The first nu
?> This setting implies that `RGBLIGHT_SPLIT` is enabled, and will forcibly enable it, if it's not.
+```c
+#define SPLIT_USB_DETECT
+```
+This option changes the startup behavior to detect an active USB connection when delegating master/slave. If this operation times out, then the half is assume to be a slave. This is the default behavior for ARM, and required for AVR Teensy boards (due to hardware limitations).
+
+?> This setting will stop the ability to demo using battery packs.
+
+```c
+#define SPLIT_USB_TIMEOUT 2500
+```
+This sets the maximum timeout when detecting master/slave when using `SPLIT_USB_DETECT`.
+
## Additional Resources
Nicinabox has a [very nice and detailed guide](https://github.com/nicinabox/lets-split-guide) for the Let's Split keyboard, that covers most everything you need to know, including troubleshooting information.
diff --git a/docs/feature_terminal.md b/docs/feature_terminal.md
index 1863599f844..f8506221654 100644
--- a/docs/feature_terminal.md
+++ b/docs/feature_terminal.md
@@ -1,6 +1,6 @@
# Terminal
-> This feature is currently *huge* at 4400 bytes, and should probably only be put on boards with a lot of memory, or for fun.
+> This feature is currently *huge*, and should probably only be put on boards with a lot of memory, or for fun.
The terminal feature is a command-line-like interface designed to communicate through a text editor with keystrokes. It's beneficial to turn off auto-indent features in your editor.
@@ -56,7 +56,7 @@ Outputs the last 5 commands entered
1. help
2. about
3. keymap 0
-4. help
+4. help
5. flush-buffer
```
diff --git a/docs/fr-FR/newbs_testing_debugging.md b/docs/fr-FR/newbs_testing_debugging.md
index 4b03ae3ed25..bc6aec668da 100644
--- a/docs/fr-FR/newbs_testing_debugging.md
+++ b/docs/fr-FR/newbs_testing_debugging.md
@@ -8,7 +8,8 @@ Tester votre clavier est normalement assez simple. Appuyez chaque touche de votr
Note: ces programmes ne sont ni fournis ni approuvés par QMK.
-* [Switch Hitter](https://elitekeyboards.com/switchhitter.php) (Windows seulement)
+* [QMK Configurator](https://config.qmk.fm/#/test/) (Web)
+* [Switch Hitter](https://web.archive.org/web/20190413233743/https://elitekeyboards.com/switchhitter.php) (Windows seulement)
* [Keyboard Viewer](https://www.imore.com/how-use-keyboard-viewer-your-mac) (Mac seulement)
* [Keyboard Tester](http://www.keyboardtester.com) (Web)
* [Keyboard Checker](http://keyboardchecker.com) (Web)
diff --git a/docs/getting_started_make_guide.md b/docs/getting_started_make_guide.md
index 71e9d33f25f..d1ecf6f5a64 100644
--- a/docs/getting_started_make_guide.md
+++ b/docs/getting_started_make_guide.md
@@ -41,8 +41,6 @@ Set these variables to `no` to disable them, and `yes` to enable them.
This allows you to hold a key and the salt key (space by default) and have access to a various EEPROM settings that persist over power loss. It's advised you keep this disabled, as the settings are often changed by accident, and produce confusing results that makes it difficult to debug. It's one of the more common problems encountered in help sessions.
-Consumes about 1000 bytes.
-
`MOUSEKEY_ENABLE`
This gives you control over cursor movements and clicks via keycodes/custom functions.
@@ -67,8 +65,6 @@ To see the text, open `hid_listen` and enjoy looking at your printed messages.
**NOTE:** Do not include *uprint* messages in anything other than your keymap code. It must not be used within the QMK system framework. Otherwise, you will bloat other people's .hex files.
-Consumes about 400 bytes.
-
`COMMAND_ENABLE`
This enables magic commands, typically fired with the default magic key combo `LSHIFT+RSHIFT+KEY`. Magic commands include turning on debugging messages (`MAGIC+D`) or temporarily toggling NKRO (`MAGIC+N`).
@@ -125,11 +121,9 @@ Use this to debug changes to variable values, see the [tracing variables](unit_t
This enables using the Quantum SYSEX API to send strings (somewhere?)
-This consumes about 5390 bytes.
-
`KEY_LOCK_ENABLE`
-This enables [key lock](feature_key_lock.md). This consumes an additional 260 bytes.
+This enables [key lock](feature_key_lock.md).
`SPLIT_KEYBOARD`
diff --git a/docs/newbs_testing_debugging.md b/docs/newbs_testing_debugging.md
index 771846b4099..4756a29bec3 100644
--- a/docs/newbs_testing_debugging.md
+++ b/docs/newbs_testing_debugging.md
@@ -8,7 +8,8 @@ Testing your keyboard is usually pretty straightforward. Press every single key
Note: These programs are not provided by or endorsed by QMK.
-* [Switch Hitter](https://elitekeyboards.com/switchhitter.php) (Windows Only)
+* [QMK Configurator](https://config.qmk.fm/#/test/) (Web Based)
+* [Switch Hitter](https://web.archive.org/web/20190413233743/https://elitekeyboards.com/switchhitter.php) (Windows Only)
* [Keyboard Viewer](https://www.imore.com/how-use-keyboard-viewer-your-mac) (Mac Only)
* [Keyboard Tester](http://www.keyboardtester.com) (Web Based)
* [Keyboard Checker](http://keyboardchecker.com) (Web Based)
diff --git a/docs/zh-cn/newbs_testing_debugging.md b/docs/zh-cn/newbs_testing_debugging.md
index 824f94b906f..4edceee41a0 100644
--- a/docs/zh-cn/newbs_testing_debugging.md
+++ b/docs/zh-cn/newbs_testing_debugging.md
@@ -8,7 +8,8 @@
注意:这些程序不是由QMK提供或认可的。
-* [Switch Hitter](https://elitekeyboards.com/switchhitter.php) (仅Windows)
+* [QMK Configurator](https://config.qmk.fm/#/test/) (网页版)
+* [Switch Hitter](https://web.archive.org/web/20190413233743/https://elitekeyboards.com/switchhitter.php) (仅Windows)
* [Keyboard Viewer](https://www.imore.com/how-use-keyboard-viewer-your-mac) (仅Mac)
* [Keyboard Tester](http://www.keyboardtester.com) (网页版)
* [Keyboard Checker](http://keyboardchecker.com) (网页版)
diff --git a/drivers/arm/i2c_master.c b/drivers/arm/i2c_master.c
index fcfe85b5617..2a43ba23931 100644
--- a/drivers/arm/i2c_master.c
+++ b/drivers/arm/i2c_master.c
@@ -32,27 +32,17 @@
static uint8_t i2c_address;
-// ChibiOS uses two initialization structure for v1 and v2/v3 i2c APIs.
-// The F1 series uses the v1 api, which have to initialized this way.
-#ifdef STM32F103xB
-static const I2CConfig i2cconfig = {
- OPMODE_I2C,
- 400000,
- FAST_DUTY_CYCLE_2,
-};
-#else
-// This configures the I2C clock to 400khz assuming a 72Mhz clock
-// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html
static const I2CConfig i2cconfig = {
#ifdef USE_I2CV1
I2C1_OPMODE,
I2C1_CLOCK_SPEED,
I2C1_DUTY_CYCLE,
#else
+ // This configures the I2C clock to 400khz assuming a 72Mhz clock
+ // For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html
STM32_TIMINGR_PRESC(I2C1_TIMINGR_PRESC) | STM32_TIMINGR_SCLDEL(I2C1_TIMINGR_SCLDEL) | STM32_TIMINGR_SDADEL(I2C1_TIMINGR_SDADEL) | STM32_TIMINGR_SCLH(I2C1_TIMINGR_SCLH) | STM32_TIMINGR_SCLL(I2C1_TIMINGR_SCLL), 0, 0
#endif
};
-#endif
static i2c_status_t chibios_to_qmk(const msg_t* status) {
switch (*status) {
diff --git a/keyboards/2_milk/keymaps/emoji/config.h b/keyboards/2_milk/keymaps/emoji/config.h
new file mode 100644
index 00000000000..90e4d631023
--- /dev/null
+++ b/keyboards/2_milk/keymaps/emoji/config.h
@@ -0,0 +1,2 @@
+#define UNICODE_SELECTED_MODES UC_LNX, UC_OSX, UC_WIN, UC_WINC
+#define TAPPING_TERM 300
\ No newline at end of file
diff --git a/keyboards/2_milk/keymaps/emoji/keymap.c b/keyboards/2_milk/keymaps/emoji/keymap.c
index 9b84df5c2c5..024a6a054b2 100644
--- a/keyboards/2_milk/keymaps/emoji/keymap.c
+++ b/keyboards/2_milk/keymaps/emoji/keymap.c
@@ -1,31 +1,53 @@
#include QMK_KEYBOARD_H
-enum custom_keycodes {
- DISSA,
- SHRUG
+enum tapdance_keycodes {
+ TD_KEY_1,
+ TD_KEY_2,
+};
+
+void dance_key_one (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF"); // ¯\_(ツ)_/¯
+ SEND_STRING(SS_TAP(X_ENTER));
+ reset_tap_dance (state);
+ } else if (state->count == 2) {
+ cycle_unicode_input_mode(+1);
+ reset_tap_dance (state);
+ }
+}
+
+void dance_key_two (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ send_unicode_hex_string("0CA0 005F 0CA0"); // ಠ_ಠ
+ SEND_STRING(SS_TAP(X_ENTER));
+ reset_tap_dance (state);
+ } else if (state->count == 2) {
+ send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B"); // (ノಠ痊ಠ)ノ彡┻━┻
+ SEND_STRING(SS_TAP(X_ENTER));
+ reset_tap_dance (state);
+ } else if (state->count == 3) {
+ send_unicode_hex_string("256D 2229 256E 0028 002D 005F 002D 0029 256D 2229 256E"); // ╭∩╮(-_-)╭∩╮
+ SEND_STRING(SS_TAP(X_ENTER));
+ reset_tap_dance (state);
+ } else if (state->count == 4) {
+ send_unicode_hex_string("0028 3065 FFE3 0020 00B3 FFE3 0029 3065"); // (づ ̄ ³ ̄)づ
+ SEND_STRING(SS_TAP(X_ENTER));
+ reset_tap_dance (state);
+ } else if (state->count == 5) {
+ send_unicode_hex_string("0028 FE3A FE39 FE3A 0029"); // (︺︹︺)
+ SEND_STRING(SS_TAP(X_ENTER));
+ reset_tap_dance (state);
+ }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_KEY_1] = ACTION_TAP_DANCE_FN(dance_key_one),
+ [TD_KEY_2] = ACTION_TAP_DANCE_FN(dance_key_two),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(
- SHRUG,
- DISSA
- )
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case SHRUG:
- if (record->event.pressed) {
- send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
- } else {
- }
- break;
- case DISSA:
- if (record->event.pressed) {
- send_unicode_hex_string("0CA0 005F 0CA0");
- } else {
- }
- break;
- }
- return true;
+ [0] = LAYOUT(
+ TD(TD_KEY_1),
+ TD(TD_KEY_2)
+ ),
};
diff --git a/keyboards/2_milk/keymaps/emoji/readme.md b/keyboards/2_milk/keymaps/emoji/readme.md
index 980be7dd5c3..1d5a08730dc 100644
--- a/keyboards/2_milk/keymaps/emoji/readme.md
+++ b/keyboards/2_milk/keymaps/emoji/readme.md
@@ -1,2 +1,39 @@
# Emoji Keymap

+
+# Unicode Setup
+
+Unicode input in QMK works by inputting a sequence of characters to the
+OS, sort of like a macro. Unfortunately, the way this is done differs
+for each platform. Specifically, each platform requires a different
+combination of keys to trigger Unicode input. Therefore, a
+corresponding input mode has to be set in QMK.
+
+Documentation: [Feature Unicode](https://beta.docs.qmk.fm/features/feature_unicode#input-modes)
+
+On this keymap the default unicode mode it's `UC_LNX`.
+You can change it permanently tapping 2 times the KeyOne to select the next mode.
+
+## Unicode Mode List
+- UC_LNX
+- UC_OSX
+- UC_WIN
+- UC_WINC
+
+# Keymap
+To add more functionality to this Minimal Keyboard,
+it's implemented the tap dance feature, so pressing the same key
+multiples times will produce different emojis.
+
+## Key One
+
+- 1 Tap: `¯\_(ツ)_/¯`
+- 2 Taps: Switch Unicode Input Type
+
+## Key Two
+
+- 1 Tap: `ಠ_ಠ`
+- 2 Taps: `(ノಠ痊ಠ)ノ彡┻━┻`
+- 3 Taps: `╭∩╮(-_-)╭∩╮`
+- 4 Taps: `(づ ̄ ³ ̄)づ`
+- 5 Taps: `(︺︹︺)`
\ No newline at end of file
diff --git a/keyboards/2_milk/keymaps/emoji/rules.mk b/keyboards/2_milk/keymaps/emoji/rules.mk
new file mode 100644
index 00000000000..7a64eb9023e
--- /dev/null
+++ b/keyboards/2_milk/keymaps/emoji/rules.mk
@@ -0,0 +1,2 @@
+UNICODE_ENABLE = yes # Unicode
+TAP_DANCE_ENABLE = yes # Tap Dance
\ No newline at end of file
diff --git a/keyboards/40percentclub/nano/keymaps/drashna/keymap.c b/keyboards/40percentclub/nano/keymaps/drashna/keymap.c
new file mode 100644
index 00000000000..6c5b9745720
--- /dev/null
+++ b/keyboards/40percentclub/nano/keymaps/drashna/keymap.c
@@ -0,0 +1,111 @@
+#include QMK_KEYBOARD_H
+#include "drashna.h"
+#include "analog.c"
+#include "pointing_device.h"
+#include "pincontrol.h"
+
+
+#define KC_X0 LT(_FN, KC_ESC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ KC_VOLU, KC_MPLY, KC_MPRV, RESET,
+ KC_VOLD, KC_MUTE, KC_MNXT, RESET
+ ),
+
+};
+
+// Joystick
+// Set Pins
+uint8_t xPin = 8; // VRx / /B4
+uint8_t yPin = 7; // VRy // B5
+uint8_t swPin = E6; // SW
+
+// Set Parameters
+uint16_t minAxisValue = 0;
+uint16_t maxAxisValue = 1023;
+
+uint8_t maxCursorSpeed = 2;
+uint8_t precisionSpeed = 1;
+uint8_t speedRegulator = 20; // Lower Values Create Faster Movement
+
+int8_t xPolarity = 1;
+int8_t yPolarity = 1;
+
+uint8_t cursorTimeout = 10;
+
+int16_t xOrigin, yOrigin;
+
+uint16_t lastCursor = 0;
+
+int16_t axisCoordinate(uint8_t pin, uint16_t origin) {
+ int8_t direction;
+ int16_t distanceFromOrigin;
+ int16_t range;
+
+ int16_t position = analogRead(pin);
+
+ if (origin == position) {
+ return 0;
+ } else if (origin > position) {
+ distanceFromOrigin = origin - position;
+ range = origin - minAxisValue;
+ direction = -1;
+ } else {
+ distanceFromOrigin = position - origin;
+ range = maxAxisValue - origin;
+ direction = 1;
+ }
+
+ float percent = (float)distanceFromOrigin / range;
+ int16_t coordinate = (int16_t)(percent * 100);
+ if (coordinate < 0) {
+ return 0;
+ } else if (coordinate > 100) {
+ return 100 * direction;
+ } else {
+ return coordinate * direction;
+ }
+}
+
+int8_t axisToMouseComponent(uint8_t pin, int16_t origin, uint8_t maxSpeed, int8_t polarity) {
+ int coordinate = axisCoordinate(pin, origin);
+ if (coordinate == 0) {
+ return 0;
+ } else {
+ float percent = (float)coordinate / 100;
+ if (keyboard_report->mods & MOD_BIT(KC_LSFT)) {
+ return percent * precisionSpeed * polarity * (abs(coordinate) / speedRegulator);
+ } else {
+ return percent * maxCursorSpeed * polarity * (abs(coordinate) / speedRegulator);
+ }
+ }
+}
+
+void pointing_device_task(void) {
+ report_mouse_t report = pointing_device_get_report();
+
+ // todo read as one vector
+ if (timer_elapsed(lastCursor) > cursorTimeout) {
+ lastCursor = timer_read();
+ report.x = axisToMouseComponent(xPin, xOrigin, maxCursorSpeed, xPolarity);
+ report.y = axisToMouseComponent(yPin, yOrigin, maxCursorSpeed, yPolarity);
+ }
+ //
+ if (!readPin(swPin)) {
+ report.buttons |= MOUSE_BTN1;
+ } else {
+ report.buttons &= ~MOUSE_BTN1;
+ }
+
+ pointing_device_set_report(report);
+ pointing_device_send();
+}
+
+void matrix_init_keymap(void) {
+ // init pin? Is needed?
+ setPinInputHigh(swPin);
+ // Account for drift
+ xOrigin = analogRead(xPin);
+ yOrigin = analogRead(yPin);
+}
diff --git a/keyboards/40percentclub/nano/keymaps/drashna/rules.mk b/keyboards/40percentclub/nano/keymaps/drashna/rules.mk
new file mode 100644
index 00000000000..06110a0a2e2
--- /dev/null
+++ b/keyboards/40percentclub/nano/keymaps/drashna/rules.mk
@@ -0,0 +1,5 @@
+POINTING_DEVICE_ENABLE = yes
+RGBLIGHT_ENABLE = no
+CONSOLE_ENABLE = no
+
+BOOTLOADER = qmk-dfu
diff --git a/keyboards/aeboards/aegis/config.h b/keyboards/aeboards/aegis/config.h
index d8c256c7d98..2a35897300d 100644
--- a/keyboards/aeboards/aegis/config.h
+++ b/keyboards/aeboards/aegis/config.h
@@ -47,8 +47,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-//#define WT_MONO_BACKLIGHT
-
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
// EEPROM usage
diff --git a/keyboards/aeboards/ext65/config.h b/keyboards/aeboards/ext65/config.h
index b3e1b8c2f0b..7255b463fc6 100644
--- a/keyboards/aeboards/ext65/config.h
+++ b/keyboards/aeboards/ext65/config.h
@@ -47,8 +47,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-//#define WT_MONO_BACKLIGHT
-
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
// EEPROM usage
diff --git a/keyboards/angel17/alpha/rules.mk b/keyboards/angel17/alpha/rules.mk
index 423ebddc514..5a26a2e0bee 100644
--- a/keyboards/angel17/alpha/rules.mk
+++ b/keyboards/angel17/alpha/rules.mk
@@ -1,27 +1,16 @@
# MCU name
MCU = atmega32u4
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/angel17/rev1/rules.mk b/keyboards/angel17/rev1/rules.mk
index fe22b3ab86f..c76c0244a85 100644
--- a/keyboards/angel17/rev1/rules.mk
+++ b/keyboards/angel17/rev1/rules.mk
@@ -1,27 +1,16 @@
# MCU name
MCU = atmega32u4
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/bm43a/bm43a.c b/keyboards/bm43a/bm43a.c
new file mode 100644
index 00000000000..36543e3721d
--- /dev/null
+++ b/keyboards/bm43a/bm43a.c
@@ -0,0 +1,51 @@
+/* Copyright 2019 mechmerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include "bm43a.h"
+
+// Optional override functions below.
+// You can leave any or all of these undefined.
+// These are only required if you want to perform custom actions.
+
+/*
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+
+ matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+ // put your looping keyboard code here
+ // runs every cycle (a lot)
+
+ matrix_scan_user();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ // put your per-action keyboard code here
+ // runs for every action, just before processing by the firmware
+
+ return process_record_user(keycode, record);
+}
+
+void led_set_kb(uint8_t usb_led) {
+ // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+
+ led_set_user(usb_led);
+}
+
+*/
diff --git a/keyboards/bm43a/bm43a.h b/keyboards/bm43a/bm43a.h
new file mode 100644
index 00000000000..87ca05c4d1a
--- /dev/null
+++ b/keyboards/bm43a/bm43a.h
@@ -0,0 +1,30 @@
+/* Copyright 2019 mechmerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1B, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2B, \
+ K30, K31, K32, K33, K35, K37, K38, K39, K3B \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, K1B }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, K2B }, \
+ { K30, K31, K32, K33, KC_NO, K35, KC_NO, K37, K38, K39, KC_NO, K3B }, \
+}
diff --git a/keyboards/bm43a/config.h b/keyboards/bm43a/config.h
new file mode 100644
index 00000000000..538b2eadde3
--- /dev/null
+++ b/keyboards/bm43a/config.h
@@ -0,0 +1,73 @@
+/*
+Copyright 2019 mechmerlin
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER KPRepublic
+#define PRODUCT BM43A
+#define DESCRIPTION A QMK-powered custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D1, F4, F1, F0 }
+#define MATRIX_COL_PINS { B0, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 5
+
+#define RGB_DI_PIN E2
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 10
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+ #define RGBLIGHT_ANIMATIONS
+// /*== or choose animations ==*/
+// #define RGBLIGHT_EFFECT_BREATHING
+// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+// #define RGBLIGHT_EFFECT_SNAKE
+// #define RGBLIGHT_EFFECT_KNIGHT
+// #define RGBLIGHT_EFFECT_CHRISTMAS
+// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// #define RGBLIGHT_EFFECT_RGB_TEST
+// #define RGBLIGHT_EFFECT_ALTERNATING
+#endif
diff --git a/keyboards/bm43a/info.json b/keyboards/bm43a/info.json
new file mode 100644
index 00000000000..59dd63c72ef
--- /dev/null
+++ b/keyboards/bm43a/info.json
@@ -0,0 +1,58 @@
+{
+ "keyboard_name": "BM43A",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 12,
+ "height": 4,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 43,
+ "layout": [
+ {"label":"K00 (D1,B0)", "x":0, "y":0},
+ {"label":"K01 (D1,F5)", "x":1, "y":0},
+ {"label":"K02 (D1,F6)", "x":2, "y":0},
+ {"label":"K03 (D1,F7)", "x":3, "y":0},
+ {"label":"K04 (D1,C7)", "x":4, "y":0},
+ {"label":"K05 (D1,C6)", "x":5, "y":0},
+ {"label":"K06 (D1,B6)", "x":6, "y":0},
+ {"label":"K07 (D1,B5)", "x":7, "y":0},
+ {"label":"K08 (D1,B4)", "x":8, "y":0},
+ {"label":"K09 (D1,D7)", "x":9, "y":0},
+ {"label":"K0A (D1,D6)", "x":10, "y":0},
+ {"label":"K0B (D1,D4)", "x":11, "y":0},
+ {"label":"K10 (F4,B0)", "x":0, "y":1, "w":1.25},
+ {"label":"K11 (F4,F5)", "x":1.25, "y":1},
+ {"label":"K12 (F4,F6)", "x":2.25, "y":1},
+ {"label":"K13 (F4,F7)", "x":3.25, "y":1},
+ {"label":"K14 (F4,C7)", "x":4.25, "y":1},
+ {"label":"K15 (F4,C6)", "x":5.25, "y":1},
+ {"label":"K16 (F4,B6)", "x":6.25, "y":1},
+ {"label":"K17 (F4,B5)", "x":7.25, "y":1},
+ {"label":"K18 (F4,B4)", "x":8.25, "y":1},
+ {"label":"K19 (F4,D7)", "x":9.25, "y":1},
+ {"label":"K1B (F4,D4)", "x":10.25, "y":1, "w":1.75},
+ {"label":"K20 (F1,B0)", "x":0, "y":2, "w":2},
+ {"label":"K21 (F1,F5)", "x":2, "y":2},
+ {"label":"K22 (F1,F6)", "x":3, "y":2},
+ {"label":"K23 (F1,F7)", "x":4, "y":2},
+ {"label":"K24 (F1,C7)", "x":5, "y":2},
+ {"label":"K25 (F1,C6)", "x":6, "y":2},
+ {"label":"K26 (F1,B6)", "x":7, "y":2},
+ {"label":"K27 (F1,B5)", "x":8, "y":2},
+ {"label":"K28 (F1,B4)", "x":9, "y":2},
+ {"label":"K29 (F1,D7)", "x":10, "y":2},
+ {"label":"K2B (F1,D4)", "x":11, "y":2},
+ {"label":"K30 (F0,B0)", "x":0, "y":3},
+ {"label":"K31 (F0,F5)", "x":1, "y":3},
+ {"label":"K32 (F0,F6)", "x":2, "y":3},
+ {"label":"K33 (F0,F7)", "x":3, "y":3, "w":2.75},
+ {"label":"K35 (F0,C6)", "x":5.75, "y":3, "w":2.25},
+ {"label":"K37 (F0,B5)", "x":8, "y":3},
+ {"label":"K38 (F0,B4)", "x":9, "y":3},
+ {"label":"K39 (F0,D7)", "x":10, "y":3},
+ {"label":"K3B (F0,D4)", "x":11, "y":3}
+ ]
+ }
+ }
+ ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
+}
\ No newline at end of file
diff --git a/keyboards/bm43a/keymaps/default/config.h b/keyboards/bm43a/keymaps/default/config.h
new file mode 100644
index 00000000000..60dd02a9d0e
--- /dev/null
+++ b/keyboards/bm43a/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 mechmerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/bm43a/keymaps/default/keymap.c b/keyboards/bm43a/keymaps/default/keymap.c
new file mode 100644
index 00000000000..7cafeadb321
--- /dev/null
+++ b/keyboards/bm43a/keymaps/default/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2019 mechmerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_UP, KC_DOT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, BL_TOGG, BL_DEC, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
+
diff --git a/keyboards/bm43a/keymaps/default/readme.md b/keyboards/bm43a/keymaps/default/readme.md
new file mode 100644
index 00000000000..cec19a1f9ef
--- /dev/null
+++ b/keyboards/bm43a/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for bm43a
diff --git a/keyboards/bm43a/readme.md b/keyboards/bm43a/readme.md
new file mode 100644
index 00000000000..ee5c173338f
--- /dev/null
+++ b/keyboards/bm43a/readme.md
@@ -0,0 +1,16 @@
+# bm43a
+
+A 40% mechanical keyboard.
+
+This firmware was originally taken from a kbfirmware.json and converted through [kbf_qmk_converter](https://noroadsleft.github.io/kbf_qmk_converter/). You may find the original `.json` files [here](https://drive.google.com/drive/folders/11DowBYrFN_uCNa9Q9bXwuMn91vmZYBcG).
+
+
+Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
+Hardware Supported: bm43a PCB
+Hardware Availability: [KPRepublic](https://kprepublic.com/products/bm43a-bm43-43-keys-40-custom-mechanical-keyboard-pcb-programmed-numpad-layouts-qmk-firmware-with-rgb-bottom-underglow-alps-mx)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make bm43a:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/bm43a/rules.mk b/keyboards/bm43a/rules.mk
new file mode 100644
index 00000000000..66a778b6c23
--- /dev/null
+++ b/keyboards/bm43a/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
+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 = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
diff --git a/keyboards/c39/keymaps/drashna/config.h b/keyboards/c39/keymaps/drashna/config.h
new file mode 100755
index 00000000000..361f68a78ea
--- /dev/null
+++ b/keyboards/c39/keymaps/drashna/config.h
@@ -0,0 +1,7 @@
+#pragma once
+
+// place overrides here
+#undef MATRIX_COL_PINS
+#define MATRIX_COL_PINS { A3, A2, A1, A0, B13, B14, B15, B9, B3, B2, B4, A10, A9 }
+#undef MATRIX_ROW_PINS
+#define MATRIX_ROW_PINS { B7, B1, B0 }
diff --git a/keyboards/c39/keymaps/drashna/keymap.c b/keyboards/c39/keymaps/drashna/keymap.c
new file mode 100755
index 00000000000..9de75190d03
--- /dev/null
+++ b/keyboards/c39/keymaps/drashna/keymap.c
@@ -0,0 +1,45 @@
+#include QMK_KEYBOARD_H
+
+// 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 _FN1 1
+
+// Defines for task manager and such
+#define CALTDEL LCTL(LALT(KC_DEL))
+#define TSKMGR LCTL(LSFT(KC_ESC))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,----------------------------------------------------------------------------. ,-------------.
+ * | Q | W | E | R | T | Bksp | Y | U | I | O | P | | M1 | M2 |
+ * |------+------+------+------+------+------+------+------+------+------+------+ |------+------|
+ * | A | S | D | F | G | Enter| H | J | K | L | ; | | M3 | M4 |
+ * |------+------+------+------+------+------+------+------+------+------+------+ |------+------|
+ * | Z | X | C | V | B | FN1 | N | M | , | . | / | | M5 | M6 |
+ * `----------------------------------------------------------------------------' `-------------'
+ */
+[_QWERTY] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_1, KC_2,
+ KC_A, KC_S, KC_D, KC_F, KC_G, MT(MOD_LSFT, KC_ENT), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_3, KC_4,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, LT(_FN1, KC_SPC), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_5, KC_6
+),
+
+/* FN1
+ * ,----------------------------------------------------------------------------. ,-------------.
+ * | 1 | 2 | 3 | 4 | 5 | Bksp | 6 | 7 | 8 | 9 | 0 | | M1 | M2 |
+ * |------+------+------+------+------+------+------+------+------+------+------+ |------+------|
+ * | 4 | 5 | 6 | + | | Enter| | | | | | | M3 | M4 |
+ * |------+------+------+------+------+------+------+------+------+------+------+ |------+------|
+ * | 7 | 8 | 9 | 0 | | FN1 | | | | | | | M5 | M6 |
+ * `----------------------------------------------------------------------------' `-------------'
+ */
+[_FN1] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_BSPC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2,
+ KC_4, KC_5, KC_6, KC_PLUS, _______, KC_ENT, _______, _______, _______, _______, _______, KC_3, KC_4,
+ KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______, _______, _______, KC_5, KC_6
+),
+};
diff --git a/keyboards/c39/keymaps/drashna/readme.md b/keyboards/c39/keymaps/drashna/readme.md
new file mode 100755
index 00000000000..a8efbaa5fe5
--- /dev/null
+++ b/keyboards/c39/keymaps/drashna/readme.md
@@ -0,0 +1,3 @@
+# @drashna's keymap for the C39
+
+HERE BE DRAGONS
diff --git a/keyboards/c39/keymaps/drashna/rules.mk b/keyboards/c39/keymaps/drashna/rules.mk
new file mode 100644
index 00000000000..ae0cc9efee6
--- /dev/null
+++ b/keyboards/c39/keymaps/drashna/rules.mk
@@ -0,0 +1,18 @@
+MCU = STM32F303
+BOOTLOADER =
+
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
+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 = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+MIDI_ENABLE = no # MIDI controls
+UNICODE_ENABLE = yes # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = yes # Audio output on port C6
+RGBLIGHT_ENABLE = no # RGB Enable / Disable
diff --git a/keyboards/clueboard/60/led.c b/keyboards/clueboard/60/led.c
index 350696736be..91a2c537dc1 100644
--- a/keyboards/clueboard/60/led.c
+++ b/keyboards/clueboard/60/led.c
@@ -16,21 +16,21 @@
*/
#include "hal.h"
-#include "backlight.h"
#include "led.h"
#include "printf.h"
+#ifdef BACKLIGHT_ENABLE
+#include "backlight.h"
+
void backlight_init_ports(void) {
printf("backlight_init_ports()\n");
- #ifdef BACKLIGHT_ENABLE
+
palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL);
palSetPad(GPIOB, 8);
- #endif
}
void backlight_set(uint8_t level) {
printf("backlight_set(%d)\n", level);
- #ifdef BACKLIGHT_ENABLE
if (level == 0) {
// Turn backlight off
palSetPad(GPIOB, 8);
@@ -38,8 +38,8 @@ void backlight_set(uint8_t level) {
// Turn backlight on
palClearPad(GPIOB, 8);
}
- #endif
}
+#endif
void led_set_kb(uint8_t usb_led) {
printf("led_set_kb(%d)\n", usb_led);
diff --git a/keyboards/clueboard/card/rules.mk b/keyboards/clueboard/card/rules.mk
index 2162b25de12..9e3f19dc0c9 100644
--- a/keyboards/clueboard/card/rules.mk
+++ b/keyboards/clueboard/card/rules.mk
@@ -11,7 +11,6 @@ MCU = atmega32u4
# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
# Build Options
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
diff --git a/keyboards/converter/usb_usb/README.md b/keyboards/converter/usb_usb/README.md
index 64334a85fba..594a9be877e 100644
--- a/keyboards/converter/usb_usb/README.md
+++ b/keyboards/converter/usb_usb/README.md
@@ -36,18 +36,18 @@ https://geekhack.org/index.php?topic=69169.0
### Build one yourself using Arduino Leonardo + Circuit@Home USB Host Shield 2.0
Buying Arduino Leonardo and USB Host Shield 2.0(from Circuit@home) will be better, you won't need even soldering iron.
-http://arduino.cc/en/Main/ArduinoBoardLeonardo
-https://www.circuitsathome.com/arduino_usb_host_shield_projects/
+- http://arduino.cc/en/Main/ArduinoBoardLeonardo
+- https://www.circuitsathome.com/arduino_usb_host_shield_projects/
Other compatible boards like Arduino's Shield will also work well but I think Sparkfun's needs to be modified.
-http://arduino.cc/en/Main/ArduinoUSBHostShield
-https://www.sparkfun.com/products/9947
+- http://arduino.cc/en/Main/ArduinoUSBHostShield
+- https://www.sparkfun.com/products/9947
Also Pro Micro 3.3V(not Mini) or Teensy with mini host shield will work with some fixes on signal/power routing.
-[Build guide](https://geekhack.org/index.php?topic=80421.0)
-https://www.circuitsathome.com/arduino_usb_host_shield_projects/
-https://www.sparkfun.com/products/12587
-https://www.pjrc.com/teensy/td_libs_USBHostShield.html
+- [Build guide](https://geekhack.org/index.php?topic=80421.0)
+- https://www.circuitsathome.com/arduino_usb_host_shield_projects/
+- https://www.sparkfun.com/products/12587
+- https://www.pjrc.com/teensy/td_libs_USBHostShield.html
Limitations
----------
@@ -56,24 +56,14 @@ Note that the converter can host only USB "boot protocol" keyboard(6KRO), not NK
Resources
--------
-Hasu's main thread for the converter
- https://geekhack.org/index.php?topic=69169.0
-Build guide for the Pro Micro variant
- https://geekhack.org/index.php?topic=80421.0
-Original TMK version of the converter
- https://github.com/tmk/tmk_keyboard/tree/master/converter/usb_usb
-USB Host Shield 2.0
- https://www.circuitsathome.com/arduino_usb_host_shield_projects/
-USB Host Shield 2.0 source
- https://github.com/felis/USB_Host_Shield_2.0
-Arduino USB Host Shield (with bootst converter)
- http://arduino.cc/en/Main/ArduinoUSBHostShield
-Arduino source
- https://github.com/arduino/Arduino
-Initial release of TMK USB-USB converter
- https://geekhack.org/index.php?topic=33057.msg653549#msg653549
- http://deskthority.net/workshop-f7/is-remapping-a-usb-keyboard-using-teensy-possible-t2841-30.html#p74854
-Arduino-based hardware keyboard remapper - Colemak forum
- http://forum.colemak.com/viewtopic.php?id=1561
-Teensy + Host Shield
- http://www.pjrc.com/teensy/td_libs_USBHostShield.html
+- [Hasu's main thread for the converter](https://geekhack.org/index.php?topic=69169.0)
+- [Build guide for the Pro Micro variant](https://geekhack.org/index.php?topic=80421.0)
+- [Original TMK version of the converter](https://github.com/tmk/tmk_keyboard/tree/master/converter/usb_usb)
+- [USB Host Shield 2.0](https://www.circuitsathome.com/arduino_usb_host_shield_projects/)
+- [USB Host Shield 2.0 source](https://github.com/felis/USB_Host_Shield_2.0)
+- [Arduino USB Host Shield (with bootst converter)](http://arduino.cc/en/Main/ArduinoUSBHostShield)
+- [Arduino source](https://github.com/arduino/Arduino)
+- [Initial release of TMK USB-USB converter](https://geekhack.org/index.php?topic=33057.msg653549#msg653549)
+- [Teensy/Arduino + Host Shield](http://deskthority.net/workshop-f7/is-remapping-a-usb-keyboard-using-teensy-possible-t2841-30.html#p74854)
+- [Arduino-based hardware keyboard remapper - Colemak forum](http://forum.colemak.com/viewtopic.php?id=1561)
+- [Teensy + Host Shield](http://www.pjrc.com/teensy/td_libs_USBHostShield.html)
diff --git a/keyboards/converter/usb_usb/keymaps/narze/README.md b/keyboards/converter/usb_usb/keymaps/narze/README.md
new file mode 100644
index 00000000000..a089568d2cf
--- /dev/null
+++ b/keyboards/converter/usb_usb/keymaps/narze/README.md
@@ -0,0 +1,10 @@
+# narze's layout for usb-usb converter
+
+## Key features
+- Qwerty + [Colemak](https://colemak.com) layouts, and you can type Qwerty on software-level Colemak as well. Very useful for gaming or when your friend wanna type something but don't use Colemak.
+- [(S)uper (D)uper Mode](https://github.com/jasonrudolph/keyboard#super-duper-mode) inspired by [jasonrudolph](https://github.com/jasonrudolph), with [some extensions](https://gist.github.com/narze/861e2167784842d38771) such as backspace & forward delete.
+
+## Build instructions
+- `cd /path/to/qmk_firmware`
+- Ensure latest libraries are loaded `make git-submodule`
+- Build & flash : `make converter/usb_usb:narze:flash`
diff --git a/keyboards/converter/usb_usb/keymaps/narze/config.h b/keyboards/converter/usb_usb/keymaps/narze/config.h
new file mode 100644
index 00000000000..cbdb7d94e35
--- /dev/null
+++ b/keyboards/converter/usb_usb/keymaps/narze/config.h
@@ -0,0 +1,48 @@
+#pragma once
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#undef TAPPING_TERM
+#define TAPPING_TERM 100
+
+#define COMBO_TERM 20
+#define COMBO_COUNT 1
+
+#define IGNORE_MOD_TAP_INTERRUPT
+#define PERMISSIVE_HOLD
+
+#define SUPER_DUPER_SOUND S__NOTE(_B1)
+
+#define MOUSEKEY_DELAY 100
+
+#define USB_POLLING_INTERVAL_MS 1
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
diff --git a/keyboards/converter/usb_usb/keymaps/narze/keymap.c b/keyboards/converter/usb_usb/keymaps/narze/keymap.c
new file mode 100644
index 00000000000..b5938fa359f
--- /dev/null
+++ b/keyboards/converter/usb_usb/keymaps/narze/keymap.c
@@ -0,0 +1,167 @@
+#include QMK_KEYBOARD_H
+#include "narze.h"
+#include "keymap_colemak.h"
+
+enum usb_usb_layers {
+ _QWERTY,
+ _COLEMAK,
+ _QWOC,
+ _SUPERDUPER,
+};
+
+enum usb_usb_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ QWOC,
+ SUPERDUPER,
+ SDTOGG, // Toggle SuperDuper
+ GUI_UNDS,
+ LSFT_LPRN,
+ RSFT_RPRN,
+};
+
+#define HPR_ESC ALL_T(KC_ESC)
+#define SFT_ENT SFT_T(KC_ENT)
+#define BRWS_L S(LGUI(KC_LBRC))
+#define BRWS_R S(LGUI(KC_RBRC))
+
+enum process_combo_event {
+ CB_SUPERDUPER,
+};
+
+const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+ /* 0: plain Qwerty without layer switching
+ * ,---------------. ,---------------. ,---------------.
+ * |F13|F14|F15|F16| |F17|F18|F19|F20| |F21|F22|F23|F24|
+ * ,---. |---------------| |---------------| |---------------| ,-----------. ,---------------. ,-------.
+ * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut|Pwr| | Help |
+ * `---' `---------------' `---------------' `---------------' `-----------' `---------------' `-------'
+ * ,-----------------------------------------------------------. ,-----------. ,---------------. ,-------.
+ * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| |Stp|Agn|
+ * |-----------------------------------------------------------| |-----------| |---------------| |-------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +| |Mnu|Und|
+ * |-----------------------------------------------------------| `-----------' |---------------| |-------|
+ * |CapsL | A| S| D| F| G| H| J| K| L| ;| :| #|Retn| | 4| 5| 6|KP,| |Sel|Cpy|
+ * |-----------------------------------------------------------| ,---. |---------------| |-------|
+ * |Shft| <| Z| X| C| V| B| N| M| ,| ,| /| RO|Shift | |Up | | 1| 2| 3|KP=| |Exe|Pst|
+ * |-----------------------------------------------------------| ,-----------. |---------------| |-------|
+ * |Ctl|Gui|Alt|MHEN|HNJ| Space |H/E|HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0 | .|Ent| |Fnd|Cut|
+ * `-----------------------------------------------------------' `-----------' `---------------' `-------'
+ */
+ [_QWERTY] = LAYOUT_all(
+ KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24,
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, KC_HELP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_JYEN, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_STOP, KC_AGIN,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_MENU, KC_UNDO,
+ HPR_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_SLCT, KC_COPY,
+ LSFT_LPRN,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, RSFT_RPRN, KC_UP, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_EXEC, KC_PSTE,
+ KC_LCTL, KC_LALT, GUI_UNDS,KC_MHEN, KC_HANJ, KC_SPC, KC_HAEN, KC_HENK, KC_KANA, KC_BSPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, KC_FIND, KC_CUT
+ ),
+ [_COLEMAK] = LAYOUT_all(
+ KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24,
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, KC_HELP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_JYEN, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_STOP, KC_AGIN,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_MENU, KC_UNDO,
+ HPR_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_SLCT, KC_COPY,
+ LSFT_LPRN,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, RSFT_RPRN, KC_UP, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_EXEC, KC_PSTE,
+ KC_LCTL, KC_LALT, GUI_UNDS,KC_MHEN, KC_HANJ, KC_SPC, KC_HAEN, KC_HENK, KC_KANA, KC_BSPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, KC_FIND, KC_CUT
+ ),
+ [_QWOC] = LAYOUT_all(
+ KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24,
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, KC_HELP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_JYEN, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_STOP, KC_AGIN,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_MENU, KC_UNDO,
+ HPR_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_SLCT, KC_COPY,
+ LSFT_LPRN,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, RSFT_RPRN, KC_UP, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_EXEC, KC_PSTE,
+ KC_LCTL, KC_LALT, GUI_UNDS,KC_MHEN, KC_HANJ, KC_SPC, KC_HAEN, KC_HENK, KC_KANA, KC_BSPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, KC_FIND, KC_CUT
+ ),
+ [_SUPERDUPER] = LAYOUT_all(
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ RESET, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,______,______, ______,______,______,______, ______,
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,______,______, ______,______,______,______, ______,______,
+ ______, ______, ______, ______, ______, ______, ______, ______, BRWS_L, BRWS_R, ______, ______, ______, ______, ______,______,______, ______,______,______,______, ______,______,
+ KC_SPC, KC_LALT, _______, _______, KC_BSPC,KC_LGUI,KC_LEFT, KC_DOWN, KC_UP,KC_RGHT, KC_DEL, ______, ______, ______, ______,______,______,______, ______,______,
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,______,______,______, ______,______,
+ ______, ______, ______, ______, ______, KC_LSFT, ______, ______, ______, ______, ______, ______, ______, ______,______,______, ______, ______,______, ______,______
+ ),
+};
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+
+ set_superduper_key_combo_layer(_QWERTY);
+ }
+ return false;
+
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+
+ set_superduper_key_combo_layer(_COLEMAK);
+ }
+ return false;
+
+ case QWOC:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWOC);
+
+ set_superduper_key_combo_layer(_QWOC);
+ }
+ return false;
+
+ case SDTOGG:
+ if (record->event.pressed) {
+ toggle_superduper_mode();
+ }
+ return false;
+
+ // Macros
+
+ // 1. Hold for LGUI, tap for Underscore
+ case GUI_UNDS:
+ perform_space_cadet(record, KC_LGUI, KC_LSFT, KC_MINS);
+ return false;
+
+ // 2. Hold for LSHIFT, tap for Parens open
+ case LSFT_LPRN:
+ perform_space_cadet(record, KC_LSFT, KC_LSFT, KC_9);
+ return false;
+
+ // 3. Hold for RSHIFT, tap for Parens close
+ case RSFT_RPRN:
+ perform_space_cadet(record, KC_RSFT, KC_RSFT, KC_0);
+ return false;
+
+ default:
+ return true;
+ }
+ return true;
+}
+
+void matrix_setup(void) {
+ set_superduper_key_combos();
+}
+
+void process_combo_event(uint8_t combo_index, bool pressed) {
+ if (pressed) {
+ switch(combo_index) {
+ case CB_SUPERDUPER:
+ layer_on(_SUPERDUPER);
+ break;
+ }
+ } else {
+ layer_off(_SUPERDUPER);
+ unregister_mods(MOD_BIT(KC_LGUI) | MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT)); // Sometimes mods are held, unregister them
+ }
+}
diff --git a/keyboards/converter/usb_usb/keymaps/narze/rules.mk b/keyboards/converter/usb_usb/keymaps/narze/rules.mk
new file mode 100644
index 00000000000..657773e84ee
--- /dev/null
+++ b/keyboards/converter/usb_usb/keymaps/narze/rules.mk
@@ -0,0 +1,3 @@
+EXTRAKEY_ENABLE = no
+NKRO_ENABLE = yes
+COMBO_ENABLE = yes
diff --git a/keyboards/crkbd/keymaps/drashna/config.h b/keyboards/crkbd/keymaps/drashna/config.h
index d35f723dac7..26af029573b 100644
--- a/keyboards/crkbd/keymaps/drashna/config.h
+++ b/keyboards/crkbd/keymaps/drashna/config.h
@@ -41,7 +41,7 @@ along with this program. If not, see .
# define RGBLIGHT_HUE_STEP 8
# define RGBLIGHT_SAT_STEP 8
# define RGBLIGHT_VAL_STEP 5
-# define RGBLIGHT_LIMIT_VAL 150
+# define RGBLIGHT_LIMIT_VAL 120
#endif
#ifdef RGB_MATRIX_ENABLE
@@ -51,7 +51,7 @@ along with this program. If not, see .
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
# define RGB_MATRIX_HUE_STEP 8
# define RGB_MATRIX_SAT_STEP 8
# define RGB_MATRIX_VAL_STEP 5
@@ -60,7 +60,11 @@ along with this program. If not, see .
#ifdef AUDIO_ENABLE
# define B6_AUDIO
-// #define NO_MUSIC_MODE
+# define NO_MUSIC_MODE
+#endif
+
+#ifdef HAPTIC_ENABLE
+# define SOLENOID_PIN B7
#endif
#undef PRODUCT
diff --git a/keyboards/crkbd/keymaps/drashna/keymap.c b/keyboards/crkbd/keymaps/drashna/keymap.c
index 36a5f5dd337..cd84f0d9192 100644
--- a/keyboards/crkbd/keymaps/drashna/keymap.c
+++ b/keyboards/crkbd/keymaps/drashna/keymap.c
@@ -12,7 +12,25 @@ extern rgblight_config_t rgblight_config;
static uint32_t oled_timer = 0;
static char keylog_str[6] = {};
static uint16_t log_timer = 0;
-static const char code_to_name[60] = {' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
+static const char PROGMEM code_to_name[0xFF] = {
+// 0 1 2 3 4 5 6 7 8 9 A B c D E F
+ ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
+ 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
+ '3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
+ ']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x
+ ' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
+ 'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
+};
void add_keylog(uint16_t keycode);
#endif
@@ -27,7 +45,7 @@ enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE };
) \
LAYOUT_wrapper( \
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
- KC_TAB, ALT_T(K11), K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
+ ALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI \
)
@@ -107,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET,
VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
MG_NKRO, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL,
- _______, KC_NUKE, _______, _______, TG_MODS, _______
+ HPT_TOG, KC_NUKE, _______, _______, TG_MODS, HPT_FBK
)
};
// clang-format on
@@ -131,16 +149,18 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
void add_keylog(uint16_t keycode) {
- if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
keycode = keycode & 0xFF;
+ } else if (keycode > 0xFF) {
+ keycode = 0;
}
for (uint8_t i = 4; i > 0; --i) {
keylog_str[i] = keylog_str[i - 1];
}
- if (keycode < 60) {
- keylog_str[0] = code_to_name[keycode];
+ if (keycode < (sizeof(code_to_name) / sizeof(char))) {
+ keylog_str[0] = pgm_read_byte(&code_to_name[keycode]);
}
log_timer = timer_read();
@@ -148,7 +168,7 @@ void add_keylog(uint16_t keycode) {
void update_log(void) {
if (timer_elapsed(log_timer) > 750) {
- add_keylog(0);
+ //add_keylog(0);
}
}
@@ -197,19 +217,18 @@ void render_layer_state(void) {
void render_keylock_status(uint8_t led_usb_state) {
oled_write_P(PSTR("Lock:"), false);
oled_write_P(PSTR(" "), false);
- oled_write_P(PSTR("NUM "), led_usb_state & (1 << USB_LED_NUM_LOCK));
- oled_write_P(PSTR(" "), false);
- oled_write_P(PSTR("CAPS"), led_usb_state & (1 << USB_LED_CAPS_LOCK));
- oled_write_P(PSTR(" "), false);
- oled_write_P(PSTR("SCRL"), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
+ oled_write_P(PSTR("N"), led_usb_state & (1 << USB_LED_NUM_LOCK));
+ oled_write_P(PSTR("C"), led_usb_state & (1 << USB_LED_CAPS_LOCK));
+ oled_write_ln_P(PSTR("S"), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
}
void render_mod_status(uint8_t modifiers) {
oled_write_P(PSTR("Mods:"), false);
- oled_write_P(PSTR(" SHFT"), (modifiers & MOD_MASK_SHIFT));
- oled_write_P(PSTR(" CTRL"), (modifiers & MOD_MASK_CTRL));
- oled_write_P(PSTR(" ALT "), (modifiers & MOD_MASK_ALT));
- oled_write_P(PSTR(" GUI "), (modifiers & MOD_MASK_GUI));
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
+ oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL));
+ oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT));
+ oled_write_P(PSTR("G"), (modifiers & MOD_MASK_GUI));
}
void render_bootmagic_status(void) {
diff --git a/keyboards/crkbd/keymaps/drashna/rules.mk b/keyboards/crkbd/keymaps/drashna/rules.mk
index af340459716..492c17e20fe 100644
--- a/keyboards/crkbd/keymaps/drashna/rules.mk
+++ b/keyboards/crkbd/keymaps/drashna/rules.mk
@@ -18,6 +18,7 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no # Enable one-hand typing
RGB_MATRIX_ENABLE = WS2812
+HAPTIC_ENABLE = SOLENOID
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/crkbd/keymaps/hvp/config.h b/keyboards/crkbd/keymaps/hvp/config.h
new file mode 100644
index 00000000000..c5c6d1cba88
--- /dev/null
+++ b/keyboards/crkbd/keymaps/hvp/config.h
@@ -0,0 +1,50 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define SSD1306OLED
+
+#define USE_SERIAL_PD2
+
+//#define TAPPING_FORCE_HOLD
+//#define TAPPING_TERM 100
+
+#define TAPPING_TERM 150
+#define PERMISSIVE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
+
+#ifdef RGBLIGHT_ENABLE
+# undef RGBLED_NUM
+# define RGBLIGHT_ANIMATIONS
+# define RGBLED_NUM 27
+# define RGBLIGHT_LIMIT_VAL 120
+# define RGBLIGHT_HUE_STEP 10
+# define RGBLIGHT_SAT_STEP 17
+# define RGBLIGHT_VAL_STEP 17
+#endif
diff --git a/keyboards/crkbd/keymaps/hvp/keymap.c b/keyboards/crkbd/keymaps/hvp/keymap.c
new file mode 100644
index 00000000000..b66c360e188
--- /dev/null
+++ b/keyboards/crkbd/keymaps/hvp/keymap.c
@@ -0,0 +1,183 @@
+#include QMK_KEYBOARD_H
+#include "hvp.c"
+
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+extern uint8_t is_master;
+
+// 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 _LOWER 1
+#define _RAISE 2
+#define _ADJUST 3
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT( \
+ //,-----------------------------------------. ,-----------------------------------------.
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_BSPC,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ LT(_ADJUST, KC_ESC), KC_A, KC_S, KC_D, LT(_RAISE,KC_F), MT(MOD_LCTL,KC_G), KC_H, KC_J, KC_K, KC_L,TD(TD1),TD(TD2),\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM,KC_DOT,TD(TD3),KC_SFTENT,\
+ //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ KC_LGUI, LOWER,MT(MOD_LSFT, KC_SPC), LT(_RAISE,KC_ENT), RAISE,KC_LALT \
+ //`--------------------' `--------------------'
+ ),
+
+ [_RAISE] = LAYOUT( \
+ //,-----------------------------------------. ,-----------------------------------------.
+ KC_TAB, 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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT,KC_NO, KC_DEL,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_NO, KC_NO,\
+ //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ KC_LGUI, LOWER,MT(MOD_LSFT, KC_SPC), LT(_RAISE,KC_ENT), RAISE,KC_LALT \
+ //`--------------------' `--------------------'
+ ),
+
+ [_LOWER] = LAYOUT( \
+ //,-----------------------------------------. ,-----------------------------------------.
+ KC_TAB,KC_EXLM,KC_AT,KC_HASH,KC_DLR,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSPC,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS,KC_EQL,KC_LCBR,KC_RCBR,KC_PIPE,KC_GRV,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS,KC_TILD,\
+ //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ KC_LGUI, LOWER,MT(MOD_LSFT, KC_SPC), LT(_RAISE,KC_ENT), RAISE,KC_LALT \
+ //`--------------------' `--------------------'
+ ),
+
+ [_ADJUST] = LAYOUT( \
+ //,-----------------------------------------. ,-----------------------------------------.
+ KC_F1,KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ RESET,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_MPLY, KC_MNXT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,\
+ //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ KC_LGUI, LOWER,MT(MOD_LSFT, KC_SPC), LT(_RAISE,KC_ENT), RAISE,KC_LALT \
+ //`--------------------' `--------------------'
+ )
+};
+
+int RGB_current_mode;
+
+// Setting ADJUST layer RGB back to default
+void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+ if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
+ layer_on(layer3);
+ } else {
+ layer_off(layer3);
+ }
+}
+
+void matrix_init_user(void) {
+ #ifdef RGBLIGHT_ENABLE
+ RGB_current_mode = rgblight_config.mode;
+ #endif
+ //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
+ #ifdef SSD1306OLED
+ iota_gfx_init(!has_usb()); // turns on the display
+ #endif
+}
+
+//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
+#ifdef SSD1306OLED
+
+// When add source files to SRC in rules.mk, you can use functions.
+const char *read_layer_state(void);
+const char *read_logo(void);
+void set_keylog(uint16_t keycode, keyrecord_t *record);
+const char *read_keylog(void);
+const char *read_keylogs(void);
+
+// const char *read_mode_icon(bool swap);
+// const char *read_host_led_state(void);
+// void set_timelog(void);
+// const char *read_timelog(void);
+
+void matrix_scan_user(void) {
+ iota_gfx_task();
+}
+
+void matrix_render_user(struct CharacterMatrix *matrix) {
+ if (is_master) {
+ // If you want to change the display of OLED, you need to change here
+ matrix_write_ln(matrix, read_layer_state());
+ matrix_write_ln(matrix, read_keylog());
+ //matrix_write_ln(matrix, read_keylogs());
+ //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
+ //matrix_write_ln(matrix, read_host_led_state());
+ //matrix_write_ln(matrix, read_timelog());
+ } else {
+ matrix_write(matrix, read_logo());
+ }
+}
+
+void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
+ if (memcmp(dest->display, source->display, sizeof(dest->display))) {
+ memcpy(dest->display, source->display, sizeof(dest->display));
+ dest->dirty = true;
+ }
+}
+
+void iota_gfx_task_user(void) {
+ struct CharacterMatrix matrix;
+ matrix_clear(&matrix);
+ matrix_render_user(&matrix);
+ matrix_update(&display, &matrix);
+}
+#endif//SSD1306OLED
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+#ifdef SSD1306OLED
+ set_keylog(keycode, record);
+#endif
+ // set_timelog();
+ }
+
+ switch (keycode) {
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ case ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
\ No newline at end of file
diff --git a/keyboards/crkbd/keymaps/hvp/readme.md b/keyboards/crkbd/keymaps/hvp/readme.md
new file mode 100644
index 00000000000..33bb83b83f9
--- /dev/null
+++ b/keyboards/crkbd/keymaps/hvp/readme.md
@@ -0,0 +1,5 @@
+Keymap to be used with Eurkey for easy access to swedish characters on first layer.
+
+Links:
+
+- https://eurkey.steffen.bruentjen.eu/
\ No newline at end of file
diff --git a/keyboards/crkbd/keymaps/hvp/rules.mk b/keyboards/crkbd/keymaps/hvp/rules.mk
new file mode 100644
index 00000000000..a651e528cf4
--- /dev/null
+++ b/keyboards/crkbd/keymaps/hvp/rules.mk
@@ -0,0 +1,14 @@
+
+# If you want to change the display of OLED, you need to change here
+SRC += ./lib/glcdfont.c \
+ ./lib/rgb_state_reader.c \
+ ./lib/layer_state_reader.c \
+ ./lib/logo_reader.c \
+ ./lib/keylogger.c \
+ # ./lib/mode_icon_reader.c \
+ # ./lib/host_led_state_reader.c \
+ # ./lib/timelogger.c \
+
+TAP_DANCE_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+# LOCAL_GLCDFONT = yes
\ No newline at end of file
diff --git a/keyboards/crkbd/keymaps/soundmonster/README.md b/keyboards/crkbd/keymaps/soundmonster/README.md
new file mode 100644
index 00000000000..8b271cbbbad
--- /dev/null
+++ b/keyboards/crkbd/keymaps/soundmonster/README.md
@@ -0,0 +1,13 @@
+# Soundmonster's layout for Corne
+
+Features:
+
+* Modern OLED support (many thanks to @drashna):
+ * Proper orientation
+ * Graphic layer indicator ↑ ↓
+ * Graphic modifier indicator ⌘ ⇧ ⌥ ⌃
+* Similar enough to the default keymap so you can easily port your custom keymap to it
+* Mac-friendly (Command and Option on the thumbs)
+* Vim-friendly (Esc, `:` and Ctrl on the thumbs)
+* Full per-key RGB Matrix support out of the box (you still have to go through the nightmare of soldering yourself though 😉)
+
diff --git a/keyboards/crkbd/keymaps/soundmonster/config.h b/keyboards/crkbd/keymaps/soundmonster/config.h
new file mode 100644
index 00000000000..1e58af3abec
--- /dev/null
+++ b/keyboards/crkbd/keymaps/soundmonster/config.h
@@ -0,0 +1,110 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+// #define SSD1306OLED
+#undef USE_I2C
+#undef SSD1306OLED
+
+#define USE_SERIAL_PD2
+
+// #define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 150
+#define RETRO_TAPPING
+#define IGNORE_MOD_TAP_INTERRUPT
+
+#ifdef RGBLIGHT_ENABLE
+ #undef RGBLED_NUM
+ #define RGBLED_NUM 27
+ #define RGBLIGHT_ANIMATIONS
+ #define RGBLIGHT_SLEEP
+ #define RGBLIGHT_SPLIT
+ #define RGBLIGHT_LIMIT_VAL 120
+ #define RGBLIGHT_HUE_STEP 10
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
+#endif
+
+#define OLED_FONT_H "keyboards/crkbd/keymaps/soundmonster/glcdfont.c"
+// #define OLED_FONT_WIDTH 5
+// #define OLED_FONT_HEIGHT 7
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
+// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+# define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
+# define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
+# define RGB_MATRIX_HUE_STEP 8
+# define RGB_MATRIX_SAT_STEP 8
+# define RGB_MATRIX_VAL_STEP 8
+# define RGB_MATRIX_SPD_STEP 10
+
+/* Disable the animations you don't want/need. You will need to disable a good number of these *
+ * because they take up a lot of space. Disable until you can successfully compile your firmware. */
+// # define DISABLE_RGB_MATRIX_ALPHAS_MODS
+# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define DISABLE_RGB_MATRIX_BREATHING
+// # define DISABLE_RGB_MATRIX_BAND_SAT
+# define DISABLE_RGB_MATRIX_BAND_VAL
+# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define DISABLE_RGB_MATRIX_CYCLE_ALL
+# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define DISABLE_RGB_MATRIX_DUAL_BEACON
+# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
+# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+// # define DISABLE_RGB_MATRIX_RAINDROPS
+# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP
+// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+# define DISABLE_RGB_MATRIX_SOLID_REACTIVE
+# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define DISABLE_RGB_MATRIX_SPLASH
+// # define DISABLE_RGB_MATRIX_MULTISPLASH
+# define DISABLE_RGB_MATRIX_SOLID_SPLASH
+# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
diff --git a/keyboards/crkbd/keymaps/soundmonster/glcdfont.c b/keyboards/crkbd/keymaps/soundmonster/glcdfont.c
new file mode 100644
index 00000000000..291445b5e3d
--- /dev/null
+++ b/keyboards/crkbd/keymaps/soundmonster/glcdfont.c
@@ -0,0 +1,241 @@
+#pragma once
+
+#ifdef __AVR__
+ #include
+ #include
+#elif defined(ESP8266)
+ #include
+#else
+ #define PROGMEM
+#endif
+
+// Corne 8x6 font with QMK Firmware Logo
+// Online editor: https://helixfonteditor.netlify.com/
+// See also: https://github.com/soundmonster/glcdfont_converter
+
+const unsigned char font[] PROGMEM = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
+0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8,
+0xF8, 0x18, 0x00, 0xC0, 0xF0, 0xFC,
+0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00,
+0x00, 0xF8, 0x04, 0x22, 0x52, 0xE2,
+0x42, 0x42, 0x42, 0xE2, 0x52, 0x22,
+0x22, 0x22, 0x42, 0x82, 0x02, 0x02,
+0x22, 0x22, 0x02, 0x04, 0xF8, 0x00,
+0x00, 0xF8, 0x04, 0x02, 0x02, 0x82,
+0x42, 0x22, 0x42, 0x82, 0x02, 0x02,
+0x02, 0x82, 0x42, 0x22, 0x12, 0x22,
+0x42, 0x82, 0x02, 0x04, 0xF8, 0x00,
+0x00, 0xF8, 0xFC, 0xDE, 0xAE, 0x1E,
+0xBE, 0xBE, 0xBE, 0x1E, 0xAE, 0xDE,
+0xDE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
+0xDE, 0xDE, 0xFE, 0xFC, 0xF8, 0x00,
+0x00, 0xF8, 0xFC, 0xFE, 0xFE, 0x7E,
+0xBE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
+0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
+0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0,
+0xF0, 0xF0, 0xF8, 0xF8, 0xF0, 0xF0,
+0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80,
+0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
+0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
+0x80, 0x80, 0x40, 0xC0, 0x60, 0xA0,
+0x50, 0xB0, 0x58, 0xA8, 0x50, 0xB0,
+0x60, 0xA0, 0x40, 0xC0, 0x80, 0x80,
+0x00, 0xF8, 0xFC, 0xFE, 0xFF, 0xE0,
+0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
+0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
+0x07, 0x01, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x1F, 0x20, 0x44, 0x4A, 0x47,
+0x42, 0x42, 0x42, 0x47, 0x4A, 0x44,
+0x40, 0x40, 0x40, 0x40, 0x41, 0x42,
+0x44, 0x44, 0x40, 0x20, 0x1F, 0x00,
+0x00, 0x1F, 0x20, 0x40, 0x41, 0x40,
+0x40, 0x40, 0x40, 0x40, 0x41, 0x40,
+0x41, 0x41, 0x4F, 0x48, 0x48, 0x48,
+0x4F, 0x41, 0x41, 0x20, 0x1F, 0x00,
+0x00, 0x1F, 0x3F, 0x7B, 0x75, 0x78,
+0x7D, 0x7D, 0x7D, 0x78, 0x75, 0x7B,
+0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D,
+0x7B, 0x7B, 0x7F, 0x3F, 0x1F, 0x00,
+0x00, 0x1F, 0x3F, 0x7F, 0x7E, 0x7F,
+0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x88, 0x88, 0x5D, 0x5D, 0x3E, 0x3E,
+0x7C, 0x7C, 0xF8, 0xF8, 0x7C, 0x7C,
+0x3E, 0x3E, 0x5D, 0x5D, 0x88, 0x88,
+0x88, 0x88, 0x55, 0x55, 0x23, 0x23,
+0x47, 0x47, 0x8F, 0x8F, 0x47, 0x47,
+0x23, 0x23, 0x55, 0x55, 0x88, 0x88,
+0x88, 0x88, 0xD5, 0xD5, 0xE2, 0xE2,
+0xC4, 0xC4, 0x88, 0x88, 0xC4, 0xC4,
+0xE2, 0xE2, 0xD5, 0xD5, 0x88, 0x88,
+0x88, 0x88, 0x5D, 0xD5, 0x6B, 0xB6,
+0x6D, 0xD6, 0xAD, 0xDA, 0x6D, 0xD6,
+0x6B, 0xB6, 0x5D, 0xD5, 0x88, 0x88,
+0x00, 0x03, 0x0F, 0x1F, 0x3F, 0x3F,
+0x3F, 0x3F, 0x1F, 0x1F, 0x3F, 0x3F,
+0x7F, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F,
+0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7C,
+0x78, 0x78, 0x38, 0x1C, 0x0F, 0x00,
+0x04, 0xF8, 0x00, 0x00, 0xF8, 0x04,
+0x20, 0x1F, 0x00, 0x00, 0x1F, 0x20,
+0xFC, 0xF8, 0x00, 0x00, 0xF8, 0x04,
+0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x20,
+0x04, 0xF8, 0x00, 0x00, 0xF8, 0xFC,
+0x20, 0x1F, 0x00, 0x00, 0x1F, 0x3F,
+0xFC, 0xF8, 0x00, 0x00, 0xF8, 0xFC,
+0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x3F,
+0xFE, 0x7E, 0xBE, 0xDE, 0xEE, 0xDE,
+0xBE, 0x7E, 0xFE, 0xFC, 0xF8, 0x00,
+0x7E, 0x7E, 0x70, 0x77, 0x77, 0x77,
+0x70, 0x7E, 0x7E, 0x3F, 0x1F, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+0x04, 0x04, 0x08, 0x08, 0x04, 0x04,
+0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+0x04, 0x04, 0x08, 0x08, 0x04, 0x04,
+0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x01, 0x03, 0x03,
+0x07, 0x07, 0x0F, 0x0F, 0x07, 0x07,
+0x03, 0x03, 0x01, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x01, 0x03, 0x02,
+0x05, 0x06, 0x0D, 0x0A, 0x05, 0x06,
+0x03, 0x02, 0x01, 0x01, 0x00, 0x00
+};
diff --git a/keyboards/crkbd/keymaps/soundmonster/keymap.c b/keyboards/crkbd/keymaps/soundmonster/keymap.c
new file mode 100644
index 00000000000..28b3e19d139
--- /dev/null
+++ b/keyboards/crkbd/keymaps/soundmonster/keymap.c
@@ -0,0 +1,393 @@
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+#ifdef OLED_DRIVER_ENABLE
+static uint32_t oled_timer = 0;
+#endif
+
+extern uint8_t is_master;
+
+// 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.
+enum layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+// Custom keycodes for layer keys
+// Dual function escape with left command
+#define KC_LGESC LGUI_T(KC_ESC)
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST,
+ RGBRST,
+ KC_RACL // right alt / colon
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //,-----------------------------------------. ,---------------------------------------------.
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ //|------+------+------+------+------+------| |------+------+-------+------+-------+--------|
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,
+ //|------+------+------+------+------+------| |------+------+-------+------+-------+--------|
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSPC,
+ //|------+------+------+------+------+------+------| |------+------+------+-------+------+-------+--------|
+ KC_LGESC,LOWER, KC_SPC, RCTL_T(KC_ENT), RAISE, KC_RACL
+ //`--------------------' `--------------------'
+ ),
+
+ [_LOWER] = LAYOUT(
+ //,---------------------------------------------. ,-----------------------------------------.
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ //|------+------+-------+-------+-------+-------| |------+------+------+------+------+------|
+ KC_LCTL, KC_NO,KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R, KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,KC_NO,KC_NO,
+ //|------+------+-------+-------+-------+-------| |------+------+------+------+------+------|
+ KC_LSFT, KC_NO,KC_BTN2,KC_WH_D,KC_WH_U,KC_BTN1, KC_HOME,KC_PGDN,KC_PGUP,KC_END,KC_NO,KC_NO,
+ //|------+------+-------+-------+-------+-------+------| |------+------+------+------+------+------+------|
+ KC_LGUI, LOWER,KC_SPC, KC_ENT, RAISE,KC_RALT
+ //`--------------------' `--------------------'
+ ),
+
+ [_RAISE] = LAYOUT(
+ //,-----------------------------------------. ,-----------------------------------------.
+ KC_ESC,KC_EXLM,KC_AT,KC_HASH,KC_DLR,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSPC,
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ KC_LCTL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS,KC_EQL,KC_LCBR,KC_RCBR,KC_PIPE,KC_GRV,
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ KC_LSFT, KC_F6, KC_F7, KC_F8, KC_F9,KC_F10, KC_UNDS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS,KC_TILD,
+ //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ KC_LGUI, LOWER,KC_SPC, KC_ENT, RAISE,KC_RALT
+ //`--------------------' `--------------------'
+ ),
+
+ [_ADJUST] = LAYOUT(
+ //,-----------------------------------------. ,-----------------------------------------.
+ RESET,RGBRST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,KC__MUTE, KC_NO, KC_NO, KC_NO, KC_NO,
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ RGB_TOG,RGB_HUI,RGB_SAI,RGB_VAI,RGB_SPI,KC_NO, KC_PAUSE,KC__VOLUP, KC_NO, KC_NO, KC_NO, KC_NO,
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ RGB_MOD,RGB_HUD,RGB_SAD,RGB_VAD,RGB_SPD,KC_NO, KC_SCROLLLOCK,KC__VOLDOWN, KC_NO, KC_NO, KC_NO, RGB_RMOD,
+ //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ KC_LGUI, LOWER,KC_SPC, KC_ENT, RAISE,KC_RALT
+ //`--------------------' `--------------------'
+ )
+};
+
+int RGB_current_mode;
+
+// Setting ADJUST layer RGB back to default
+void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+ if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
+ layer_on(layer3);
+ } else {
+ layer_off(layer3);
+ }
+}
+
+void matrix_init_user(void) {
+ #ifdef RGBLIGHT_ENABLE
+ RGB_current_mode = rgblight_config.mode;
+ #endif
+}
+
+#ifdef OLED_DRIVER_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
+
+void render_space(void) {
+ oled_write_P(PSTR(" "), false);
+}
+
+void render_mod_status_gui_alt(uint8_t modifiers) {
+ static const char PROGMEM gui_off_1[] = {0x85, 0x86, 0};
+ static const char PROGMEM gui_off_2[] = {0xa5, 0xa6, 0};
+ static const char PROGMEM gui_on_1[] = {0x8d, 0x8e, 0};
+ static const char PROGMEM gui_on_2[] = {0xad, 0xae, 0};
+
+ static const char PROGMEM alt_off_1[] = {0x87, 0x88, 0};
+ static const char PROGMEM alt_off_2[] = {0xa7, 0xa8, 0};
+ static const char PROGMEM alt_on_1[] = {0x8f, 0x90, 0};
+ static const char PROGMEM alt_on_2[] = {0xaf, 0xb0, 0};
+
+ // fillers between the modifier icons bleed into the icon frames
+ static const char PROGMEM off_off_1[] = {0xc5, 0};
+ static const char PROGMEM off_off_2[] = {0xc6, 0};
+ static const char PROGMEM on_off_1[] = {0xc7, 0};
+ static const char PROGMEM on_off_2[] = {0xc8, 0};
+ static const char PROGMEM off_on_1[] = {0xc9, 0};
+ static const char PROGMEM off_on_2[] = {0xca, 0};
+ static const char PROGMEM on_on_1[] = {0xcb, 0};
+ static const char PROGMEM on_on_2[] = {0xcc, 0};
+
+ if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(gui_on_1, false);
+ } else {
+ oled_write_P(gui_off_1, false);
+ }
+
+ if ((modifiers & MOD_MASK_GUI) && (modifiers & MOD_MASK_ALT)) {
+ oled_write_P(on_on_1, false);
+ } else if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(on_off_1, false);
+ } else if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(off_on_1, false);
+ } else {
+ oled_write_P(off_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(alt_on_1, false);
+ } else {
+ oled_write_P(alt_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(gui_on_2, false);
+ } else {
+ oled_write_P(gui_off_2, false);
+ }
+
+ if (modifiers & MOD_MASK_GUI & MOD_MASK_ALT) {
+ oled_write_P(on_on_2, false);
+ } else if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(on_off_2, false);
+ } else if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(off_on_2, false);
+ } else {
+ oled_write_P(off_off_2, false);
+ }
+
+ if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(alt_on_2, false);
+ } else {
+ oled_write_P(alt_off_2, false);
+ }
+}
+
+void render_mod_status_ctrl_shift(uint8_t modifiers) {
+ static const char PROGMEM ctrl_off_1[] = {0x89, 0x8a, 0};
+ static const char PROGMEM ctrl_off_2[] = {0xa9, 0xaa, 0};
+ static const char PROGMEM ctrl_on_1[] = {0x91, 0x92, 0};
+ static const char PROGMEM ctrl_on_2[] = {0xb1, 0xb2, 0};
+
+ static const char PROGMEM shift_off_1[] = {0x8b, 0x8c, 0};
+ static const char PROGMEM shift_off_2[] = {0xab, 0xac, 0};
+ static const char PROGMEM shift_on_1[] = {0xcd, 0xce, 0};
+ static const char PROGMEM shift_on_2[] = {0xcf, 0xd0, 0};
+
+ // fillers between the modifier icons bleed into the icon frames
+ static const char PROGMEM off_off_1[] = {0xc5, 0};
+ static const char PROGMEM off_off_2[] = {0xc6, 0};
+ static const char PROGMEM on_off_1[] = {0xc7, 0};
+ static const char PROGMEM on_off_2[] = {0xc8, 0};
+ static const char PROGMEM off_on_1[] = {0xc9, 0};
+ static const char PROGMEM off_on_2[] = {0xca, 0};
+ static const char PROGMEM on_on_1[] = {0xcb, 0};
+ static const char PROGMEM on_on_2[] = {0xcc, 0};
+
+ if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(ctrl_on_1, false);
+ } else {
+ oled_write_P(ctrl_off_1, false);
+ }
+
+ if ((modifiers & MOD_MASK_CTRL) && (modifiers & MOD_MASK_SHIFT)) {
+ oled_write_P(on_on_1, false);
+ } else if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(on_off_1, false);
+ } else if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(off_on_1, false);
+ } else {
+ oled_write_P(off_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(shift_on_1, false);
+ } else {
+ oled_write_P(shift_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(ctrl_on_2, false);
+ } else {
+ oled_write_P(ctrl_off_2, false);
+ }
+
+ if (modifiers & MOD_MASK_CTRL & MOD_MASK_SHIFT) {
+ oled_write_P(on_on_2, false);
+ } else if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(on_off_2, false);
+ } else if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(off_on_2, false);
+ } else {
+ oled_write_P(off_off_2, false);
+ }
+
+ if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(shift_on_2, false);
+ } else {
+ oled_write_P(shift_off_2, false);
+ }
+}
+
+void render_logo(void) {
+ static const char PROGMEM corne_logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0};
+ oled_write_P(corne_logo, false);
+ oled_write_P(PSTR("corne"), false);
+}
+
+void render_layer_state(void) {
+ static const char PROGMEM default_layer[] = {
+ 0x20, 0x94, 0x95, 0x96, 0x20,
+ 0x20, 0xb4, 0xb5, 0xb6, 0x20,
+ 0x20, 0xd4, 0xd5, 0xd6, 0x20, 0};
+ static const char PROGMEM raise_layer[] = {
+ 0x20, 0x97, 0x98, 0x99, 0x20,
+ 0x20, 0xb7, 0xb8, 0xb9, 0x20,
+ 0x20, 0xd7, 0xd8, 0xd9, 0x20, 0};
+ static const char PROGMEM lower_layer[] = {
+ 0x20, 0x9a, 0x9b, 0x9c, 0x20,
+ 0x20, 0xba, 0xbb, 0xbc, 0x20,
+ 0x20, 0xda, 0xdb, 0xdc, 0x20, 0};
+ static const char PROGMEM adjust_layer[] = {
+ 0x20, 0x9d, 0x9e, 0x9f, 0x20,
+ 0x20, 0xbd, 0xbe, 0xbf, 0x20,
+ 0x20, 0xdd, 0xde, 0xdf, 0x20, 0};
+ if(layer_state_is(_ADJUST)) {
+ oled_write_P(adjust_layer, false);
+ } else if(layer_state_is(_LOWER)) {
+ oled_write_P(lower_layer, false);
+ } else if(layer_state_is(_RAISE)) {
+ oled_write_P(raise_layer, false);
+ } else {
+ oled_write_P(default_layer, false);
+ }
+}
+
+void render_status_main(void) {
+ render_logo();
+ render_space();
+ render_layer_state();
+ render_space();
+ render_mod_status_gui_alt(get_mods()|get_oneshot_mods());
+ render_mod_status_ctrl_shift(get_mods()|get_oneshot_mods());
+}
+
+void render_status_secondary(void) {
+ render_logo();
+ render_space();
+ render_layer_state();
+ render_space();
+ render_mod_status_gui_alt(get_mods()|get_oneshot_mods());
+ render_mod_status_ctrl_shift(get_mods()|get_oneshot_mods());
+}
+
+void oled_task_user(void) {
+ if (timer_elapsed32(oled_timer) > 30000) {
+ oled_off();
+ return;
+ }
+#ifndef SPLIT_KEYBOARD
+ else { oled_on(); }
+#endif
+
+ if (is_master) {
+ render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
+ } else {
+ render_status_secondary();
+ }
+}
+
+#endif
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+#ifdef OLED_DRIVER_ENABLE
+ oled_timer = timer_read32();
+#endif
+ // set_timelog();
+ }
+ static uint16_t my_colon_timer;
+
+ switch (keycode) {
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ case ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ case KC_RACL:
+ if (record->event.pressed) {
+ my_colon_timer = timer_read();
+ register_code(KC_RALT);
+ } else {
+ unregister_code(KC_RALT);
+ if (timer_elapsed(my_colon_timer) < TAPPING_TERM) {
+ SEND_STRING(":"); // Change the character(s) to be sent on tap here
+ }
+ }
+ return false;
+ case RGBRST:
+ #ifdef RGBLIGHT_ENABLE
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ #endif
+ #ifdef RGB_MATRIX_ENABLE
+ if (record->event.pressed) {
+ eeconfig_update_rgb_matrix_default();
+ rgb_matrix_enable();
+ }
+ #endif
+ break;
+ }
+ return true;
+}
+
+#ifdef RGB_MATRIX_ENABLE
+
+void suspend_power_down_keymap(void) {
+ rgb_matrix_set_suspend_state(true);
+}
+
+void suspend_wakeup_init_keymap(void) {
+ rgb_matrix_set_suspend_state(false);
+}
+
+#endif
diff --git a/keyboards/crkbd/keymaps/soundmonster/rules.mk b/keyboards/crkbd/keymaps/soundmonster/rules.mk
new file mode 100644
index 00000000000..bf7a84eb1f8
--- /dev/null
+++ b/keyboards/crkbd/keymaps/soundmonster/rules.mk
@@ -0,0 +1,6 @@
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = WS2812
+MOUSEKEY_ENABLE = no
+NKRO_ENABLE = yes
+OLED_DRIVER_ENABLE = yes
+
diff --git a/keyboards/crkbd/keymaps/tominabox1/keymap.c b/keyboards/crkbd/keymaps/tominabox1/keymap.c
new file mode 100755
index 00000000000..d58911194ee
--- /dev/null
+++ b/keyboards/crkbd/keymaps/tominabox1/keymap.c
@@ -0,0 +1,46 @@
+#include QMK_KEYBOARD_H
+#include "tominabox1.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_wrapper(
+ ___________________CRKBD1__________________,
+ ___________________CRKBD2__________________,
+ ___________________CRKBD3__________________,
+ ___________________CRKBD4__________________
+ ),
+
+ [_RAISE] = LAYOUT_wrapper(
+ ___________________RAISE1__________________,
+ ___________________RAISE2__________________,
+ ___________________CRKBD_RAISE3____________,
+ ___________________CRKBD_RAISE4____________
+ ),
+
+ [_LOWER] = LAYOUT_wrapper(
+ _________________LOWER_1___________________,
+ _________________LOWER_2___________________,
+ ___________________CRKBD_LOW3______________,
+ ___________________CRKBD_LOW4______________
+ ),
+
+ [_ADJUST] = LAYOUT_wrapper(
+ ___________________ADJST1__________________,
+ ___________________CRKBD_ADJST2____________,
+ ___________________CRKBD_ADJST3____________,
+ ___________________CRKBD_ADJST4____________
+ ),
+
+ [_ARROW] = LAYOUT_wrapper(
+ ___________________ARROW1__________________,
+ ___________________ARROW2__________________,
+ ___________________ARROW3__________________,
+ ___________________ARROW4__________________
+ ),
+ [_FKEY] = LAYOUT_wrapper(
+ ___________________FKEY1___________________,
+ ___________________FKEY2___________________,
+ ___________________CRKBD_FKEY3_____________,
+ ___________________CRKBD_FKEY4_____________
+ )
+
+};
diff --git a/keyboards/duck/orion/v3/rules.mk b/keyboards/duck/orion/v3/rules.mk
index a57b3d60c95..c46cb754483 100644
--- a/keyboards/duck/orion/v3/rules.mk
+++ b/keyboards/duck/orion/v3/rules.mk
@@ -11,7 +11,6 @@ MCU = atmega32u4
# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
# Build Options
# change yes to no to disable
#
@@ -36,4 +35,4 @@ CUSTOM_MATRIX = yes
SRC += indicator_leds.c \
matrix.c duck_led/duck_led.c
-LAYOUTS = tkl_ansi
\ No newline at end of file
+LAYOUTS = tkl_ansi
diff --git a/keyboards/dz60/keymaps/pok3r/keymap.c b/keyboards/dz60/keymaps/pok3r/keymap.c
new file mode 100644
index 00000000000..614cb0069c1
--- /dev/null
+++ b/keyboards/dz60/keymaps/pok3r/keymap.c
@@ -0,0 +1,25 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_NO, MO(2), KC_RCTL),
+
+ LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, RESET, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ KC_CAPS, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL, _______,
+ _______, KC_APP, _______, _______, _______, _______, KC_END, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ LAYOUT(
+ RGB_TOG, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, _______, RGB_RMOD, RGB_MOD, _______, _______,
+ _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/dztech/dz65rgb/dz65rgb.c b/keyboards/dztech/dz65rgb/dz65rgb.c
index 932d3f68b6c..766aea26c41 100644
--- a/keyboards/dztech/dz65rgb/dz65rgb.c
+++ b/keyboards/dztech/dz65rgb/dz65rgb.c
@@ -114,3 +114,12 @@ void suspend_wakeup_init_kb(void)
rgb_matrix_set_suspend_state(false);
suspend_wakeup_init_user();
}
+
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void)
+{
+ if (IS_LED_ON(host_keyboard_leds(), USB_LED_CAPS_LOCK))
+ {
+ rgb_matrix_set_color(8, 0xFF, 0xFF, 0xFF);
+ }
+}
diff --git a/keyboards/dztech/dz65rgb/keymaps/catrielmuller/config.h b/keyboards/dztech/dz65rgb/keymaps/catrielmuller/config.h
new file mode 100644
index 00000000000..f57ac640416
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/keymaps/catrielmuller/config.h
@@ -0,0 +1,3 @@
+#define LEADER_TIMEOUT 300
+#define FORCE_NKRO
+#define UNICODE_SELECTED_MODES UC_LNX, UC_OSX, UC_WIN, UC_WINC
\ No newline at end of file
diff --git a/keyboards/dztech/dz65rgb/keymaps/catrielmuller/keymap.c b/keyboards/dztech/dz65rgb/keymaps/catrielmuller/keymap.c
new file mode 100644
index 00000000000..597f6530d8b
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/keymaps/catrielmuller/keymap.c
@@ -0,0 +1,242 @@
+#include QMK_KEYBOARD_H
+
+// Config
+const uint8_t MAIN_COLOR[3] = {0xFF, 0x00, 0x00};
+
+// layers, ordering is important!
+enum layers {
+ _MAIN,
+ _INDEX,
+ _FN,
+ _MULTIMEDIA,
+ _EMOJI,
+ _EXT1,
+ _EXT2,
+ _EXT3,
+ _EXT4,
+ _EXT5,
+ _EXT6,
+ _RGB,
+ _CONFIG,
+}
+
+const layers_leds_map[] = {
+ [_MAIN] = 17,
+ [_INDEX] = 16,
+ [_FN] = 15,
+ [_MULTIMEDIA] = 14,
+ [_EMOJI] = 13,
+ [_EXT1] = 12,
+ [_EXT2] = 11,
+ [_EXT3] = 10,
+ [_EXT4] = 9,
+ [_EXT5] = 18,
+ [_EXT6] = 19,
+ [_RGB] = 20,
+ [_CONFIG] = 21,
+};
+
+enum unicode_names {
+ UC_GRINNING_FACE, // 😃
+ UC_BEAMING_FACE, // 😁
+ UC_GRINNING_FACE_WITH_SWEAT, // 😅
+ UC_ROLLING_LAUGHING, // 🤣
+ UC_FACE_TEARS_JOY, // 😂
+ UC_WINKING_FACE, // 😉
+ UC_SMILING_FACE_HALO, // 😇
+ UC_SMILING_FACE_HEARTS, // 🥰
+ UC_SMILING_FACE_HEART_EYES, // 😍
+ UC_FACE_BLOWING_KISS, // 😘
+ UC_FACE_SAVORING_FOOD, // 😋
+ UC_ZANY_FACE, // 🤪
+ UC_HUGGING_FACE, // 🤗
+ UC_SHUSHING_FACE, // 🤫
+ UC_THINKING_FACE, // 🤔
+ UC_FACE_RAISED_EYEBROW, // 🤨
+ UC_NEUTRAL_FACE, // 😐
+ UC_SMIRKING_FACE, // 😏
+ UC_FACE_ROLLING_EYES, // 🙄
+ UC_PENSIVE_FACE, // 😔
+ UC_FACE_VOMITING, // 🤮
+ UC_WOOZY_FACE, // 🥴
+ UC_PLEADING_FACE, // 🥺
+ UC_LOUDLY_CRYING_FACE, // 😭
+ UC_DISAPPOINTED_FACE, // 😞
+ UC_FACE_SYMBOLS_MOUTH, // 🤬
+ UC_SMILING_FACE_HORNS, // 😈
+ UC_SKULL, // 💀
+ UC_PILE_POO, // 💩
+ UC_GHOST, // 👻
+ UC_ALIEN_MONSTER, // 👾
+ UC_RED_HEART, // ❤
+ UC_BOMB, // 💣
+ UC_WAVING_HAND, // 👋
+ UC_OK_HAND, // 👌
+ UC_CLAPPING_HANDS, // 👏
+ UC_EYES, // 👀
+ UC_MAN_FACEPALMING, // 🤦
+ UC_TURTLE, // 🐢
+ UC_SNAKE, // 🐍
+ UC_SPOUTING_WHALE, // 🐳
+ UC_DRAGON, // 🐉
+ UC_TREX, // 🦖
+ UC_ARGENTINA_A, // 🇦
+ UC_ARGENTINA_R, // 🇷
+ UC_THUMBSDOWN, // 👍
+ UC_THUMBSUP, // 👎
+};
+
+const uint32_t PROGMEM unicode_map[] = {
+ [UC_GRINNING_FACE] = 0x1F603,
+ [UC_BEAMING_FACE] = 0x1F601,
+ [UC_GRINNING_FACE_WITH_SWEAT] = 0x1F605,
+ [UC_ROLLING_LAUGHING] = 0x1F923,
+ [UC_FACE_TEARS_JOY] = 0x1F602,
+ [UC_WINKING_FACE] = 0x1F609,
+ [UC_SMILING_FACE_HALO] = 0x1F607,
+ [UC_SMILING_FACE_HEARTS] = 0x1F970,
+ [UC_SMILING_FACE_HEART_EYES] = 0x1F60D,
+ [UC_FACE_BLOWING_KISS] = 0x1F618,
+ [UC_FACE_SAVORING_FOOD] = 0x1F60B,
+ [UC_ZANY_FACE] = 0x1F92A,
+ [UC_HUGGING_FACE] = 0x1F917,
+ [UC_SHUSHING_FACE] = 0x1F92B,
+ [UC_THINKING_FACE] = 0x1F914,
+ [UC_FACE_RAISED_EYEBROW] = 0x1F928,
+ [UC_NEUTRAL_FACE] = 0x1F610,
+ [UC_SMIRKING_FACE] = 0x1F60F,
+ [UC_FACE_ROLLING_EYES] = 0x1F644,
+ [UC_PENSIVE_FACE] = 0x1F614,
+ [UC_FACE_VOMITING] = 0x1F92E,
+ [UC_WOOZY_FACE] = 0x1F974,
+ [UC_PLEADING_FACE] = 0x1F97A,
+ [UC_LOUDLY_CRYING_FACE] = 0x1F62D,
+ [UC_DISAPPOINTED_FACE] = 0x1F61E,
+ [UC_FACE_SYMBOLS_MOUTH] = 0x1F92C,
+ [UC_SMILING_FACE_HORNS] = 0x1F608,
+ [UC_SKULL] = 0x1F480,
+ [UC_PILE_POO] = 0x1F4A9,
+ [UC_GHOST] = 0x1F47B,
+ [UC_ALIEN_MONSTER] = 0x1F47E,
+ [UC_RED_HEART] = 0x2764,
+ [UC_BOMB] = 0x1F4A3,
+ [UC_WAVING_HAND] = 0x1F44B,
+ [UC_OK_HAND] = 0x1F44C,
+ [UC_CLAPPING_HANDS] = 0x1F44F,
+ [UC_EYES] = 0x1F440,
+ [UC_MAN_FACEPALMING] = 0x1F926,
+ [UC_TURTLE] = 0x1F422,
+ [UC_SNAKE] = 0x1F40D,
+ [UC_SPOUTING_WHALE] = 0x1F433,
+ [UC_DRAGON] = 0x1F409,
+ [UC_TREX] = 0x1F996,
+ [UC_ARGENTINA_A] = 0x1F1E6,
+ [UC_ARGENTINA_R] = 0x1F1F7,
+ [UC_THUMBSDOWN] = 0x1F44E,
+ [UC_THUMBSUP] = 0x1F44D,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_MAIN] = LAYOUT_65_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_APP), KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LEAD, TO(_INDEX), MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_INDEX] = LAYOUT_65_ansi(
+ TO(_MAIN), TO(_INDEX), TO(_FN), TO(_MULTIMEDIA), TO(_EMOJI), TO(_EXT1), TO(_EXT2), TO(_EXT3), TO(_EXT4), TO(_EXT5), TO(_EXT6), TO(_RGB), TO(_CONFIG), TO(_MAIN), KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(_INDEX), TO(_FN), KC_NO, KC_NO, KC_NO
+ ),
+ [_FN] = LAYOUT_65_ansi(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR,
+ KC_TAB, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_INS, KC_SLCK,
+ KC_APP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PAUS,
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, TO(_INDEX), KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R
+ ),
+ [_MULTIMEDIA] = LAYOUT_65_ansi(
+ TO(_MAIN), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPLY, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_VOLU, KC_MUTE,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(_INDEX), KC_NO, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+ [_EMOJI] = LAYOUT_65_ansi(
+ TO(_MAIN), X(UC_GRINNING_FACE), X(UC_BEAMING_FACE), X(UC_GRINNING_FACE_WITH_SWEAT), X(UC_ROLLING_LAUGHING), X(UC_FACE_TEARS_JOY), X(UC_WINKING_FACE), X(UC_SMILING_FACE_HALO), X(UC_SMILING_FACE_HEARTS), X(UC_SMILING_FACE_HEART_EYES), X(UC_FACE_BLOWING_KISS), X(UC_FACE_SAVORING_FOOD), X(UC_ZANY_FACE), KC_BSPC, KC_HOME,
+ KC_TAB, X(UC_HUGGING_FACE), X(UC_SHUSHING_FACE), X(UC_THINKING_FACE), X(UC_FACE_RAISED_EYEBROW), X(UC_NEUTRAL_FACE), X(UC_SMIRKING_FACE), X(UC_FACE_ROLLING_EYES), X(UC_PENSIVE_FACE), X(UC_FACE_VOMITING), X(UC_WOOZY_FACE), X(UC_PLEADING_FACE), X(UC_LOUDLY_CRYING_FACE), X(UC_THUMBSUP), KC_END,
+ KC_APP, X(UC_DISAPPOINTED_FACE), X(UC_FACE_SYMBOLS_MOUTH), X(UC_SMILING_FACE_HORNS), X(UC_SKULL), X(UC_PILE_POO), X(UC_GHOST), X(UC_ALIEN_MONSTER), X(UC_RED_HEART), X(UC_BOMB), X(UC_WAVING_HAND), X(UC_OK_HAND), KC_ENT, KC_PGUP,
+ KC_LSFT, X(UC_CLAPPING_HANDS), X(UC_EYES), X(UC_MAN_FACEPALMING), X(UC_TURTLE), X(UC_SNAKE), X(UC_SPOUTING_WHALE), X(UC_DRAGON), X(UC_TREX), X(UC_ARGENTINA_A), X(UC_ARGENTINA_R), X(UC_THUMBSDOWN), KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LEAD, TO(_INDEX), TO(_MAIN), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_EXT1] = LAYOUT_65_ansi(
+ TO(_MAIN), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(_INDEX), KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_EXT2] = LAYOUT_65_ansi(
+ TO(_MAIN), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(_INDEX), KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_EXT3] = LAYOUT_65_ansi(
+ TO(_MAIN), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(_INDEX), KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_EXT4] = LAYOUT_65_ansi(
+ TO(_MAIN), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(_INDEX), KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_EXT5] = LAYOUT_65_ansi(
+ TO(_MAIN), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(_INDEX), KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_EXT6] = LAYOUT_65_ansi(
+ TO(_MAIN), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(_INDEX), KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_RGB] = LAYOUT_65_ansi(
+ TO(_MAIN), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, KC_NO, KC_NO, KC_NO,
+ KC_NO, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(_INDEX), KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_CONFIG] = LAYOUT_65_ansi(
+ TO(_MAIN), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ACL2,
+ KC_NO, KC_PWR, KC_SLEP, KC_WAKE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET, DEBUG, EEP_RST, KC_NO, KC_ACL1,
+ KC_NO, UC_RMOD, UC_MOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ACL0,
+ KC_NO, MAGIC_TOGGLE_NKRO, MAGIC_UNHOST_NKRO, MAGIC_HOST_NKRO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(_INDEX), KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+};
+
+void rgb_matrix_indicators_user(void) {
+
+ // CapsLock Light
+ if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
+ rgb_matrix_set_color(8, MAIN_COLOR[0], MAIN_COLOR[1], MAIN_COLOR[2]);
+ }
+
+ // Show Selected Layer
+ rgb_matrix_set_color(layers_leds_map[biton32(layer_state)], MAIN_COLOR[0], MAIN_COLOR[1], MAIN_COLOR[2]);
+}
\ No newline at end of file
diff --git a/keyboards/dztech/dz65rgb/keymaps/catrielmuller/rules.mk b/keyboards/dztech/dz65rgb/keymaps/catrielmuller/rules.mk
new file mode 100644
index 00000000000..1bd58cf79cd
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/keymaps/catrielmuller/rules.mk
@@ -0,0 +1,2 @@
+LEADER_ENABLE = yes
+UNICODEMAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/dztech/dz65rgb/keymaps/default/keymap.c b/keyboards/dztech/dz65rgb/keymaps/default/keymap.c
index dae08a48c67..90f25c0e46a 100644
--- a/keyboards/dztech/dz65rgb/keymaps/default/keymap.c
+++ b/keyboards/dztech/dz65rgb/keymaps/default/keymap.c
@@ -16,14 +16,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
};
-void rgb_matrix_indicators_user(void)
-{
- if (IS_LED_ON(host_keyboard_leds(), USB_LED_CAPS_LOCK))
- {
- rgb_matrix_set_color(8, 0xFF, 0xFF, 0xFF);
- }
-}
-
void matrix_init_user(void)
{
//user initialization
diff --git a/keyboards/ergodash/rev1/keymaps/yet-another-developer/config.h b/keyboards/ergodash/rev1/keymaps/yet-another-developer/config.h
new file mode 100644
index 00000000000..1005c480467
--- /dev/null
+++ b/keyboards/ergodash/rev1/keymaps/yet-another-developer/config.h
@@ -0,0 +1,67 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+
+/* Use I2C or Serial, not both */
+#define USE_SERIAL
+// #define USE_I2C
+
+/* Select hand configuration */
+
+//#define MASTER_LEFT
+#define MASTER_RIGHT /* Cable connected to the right split keyboard */
+// #define EE_HANDS
+
+#define AUTO_SHIFT_TIMEOUT 210
+
+#define TAPPING_TERM_PER_KEY
+
+// https://beta.docs.qmk.fm/features/feature_leader_key
+//#define LEADER_PER_KEY_TIMING
+//#define LEADER_TIMEOUT 280
+
+// https://docs.qmk.fm/#/feature_mouse_keys
+#define MK_3_SPEED // Constant Speed Mode
+
+#define MOUSEKEY_DELAY 300
+#define MOUSEKEY_INTERVAL 16
+#define MOUSEKEY_MAX_SPEED 3
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MK_C_OFFSET_0 4
+#define MK_C_INTERVAL_0 28
+#define MK_C_OFFSET_1 8
+#define MK_C_INTERVAL_1 16
+#define MK_C_OFFSET_2 20
+#define MK_C_INTERVAL_2 16
+
+#define MOUSEKEY_WHEEL_MAX_SPEED 4
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 40
+
+#define MK_W_OFFSET_0 1
+#define MK_W_INTERVAL_0 120
+#define MK_W_OFFSET_1 1
+#define MK_W_INTERVAL_1 100
+#define MK_W_OFFSET_2 1
+#define MK_W_INTERVAL_2 60
+
+//#define STARTUP_RESET_EEPROM // EMERGENCY
+
diff --git a/keyboards/ergodash/rev1/keymaps/yet-another-developer/keymap.c b/keyboards/ergodash/rev1/keymaps/yet-another-developer/keymap.c
new file mode 100644
index 00000000000..1d51227ccf9
--- /dev/null
+++ b/keyboards/ergodash/rev1/keymaps/yet-another-developer/keymap.c
@@ -0,0 +1,157 @@
+#include QMK_KEYBOARD_H
+#include "yet-another-developer.h"
+
+#ifndef UNICODE_ENABLE
+# define UC(x) KC_NO
+#endif
+
+extern keymap_config_t keymap_config;
+
+#define EISU LALT(KC_GRV)
+
+#define LAYOUT_ergodash_pretty_wrapper(...) LAYOUT_ergodash_pretty(__VA_ARGS__)
+
+ /* Keymap: BASE layer
+ *
+ * ,----------------------------------------------------. ,----------------------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | [ | | ] | 6 | 7 | 8 | 9 | 0 | Pscree |
+ * |--------+--------+------+------+------+-------------| |------+------+------+------+------+--------+--------|
+ * | ` | K01 | K02 | K03 | K04 | K05 | - | | = | K06 | K07 | K08 | K09 | K0A | \ |
+ * |--------+--------+------+------+------+------|------| |------|------+------+------+------+--------+--------|
+ * | Tab | K11 | K12 | K13 | K14 | K15 | { | | } | K16 | K17 | K18 | K19 | K1A | " |
+ * |--------+--------+------+------+------+------|------' `------|------+------+------+------+--------+--------|
+ * | LShift | K21 | K22 | K23 | K24 | K25 | | K26 | K27 | K28 | K29 | K2A | RShift |
+ * |--------+--------+------+------+------+------' `------+------+------+------+--------+--------|
+ * | LCtrl | GUI | Alt | Alt | | LEFT | DOWN | UP | RIGHT |
+ * `-------------------------------' `-------------------------------'
+ * ,--------------. ,--------------.
+ * | Lower| | | | Raise |
+ * ,-------| / | Del | | Bksp + / +-------.
+ * |CMD/Spc| Space| | | | Enter |CMD/Spc|
+ * `----------------------' `----------------------'
+ */
+#define LAYOUT_ergodash_pretty_base( \
+ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
+ ) \
+ LAYOUT_ergodash_pretty_wrapper( \
+ KC_ESC, ________________NUMBER_LEFT________________, KC_LBRC, KC_RBRC, ________________NUMBER_RIGHT_______________, KC_PSCR, \
+ KC_GRV, K01, K02, K03, K04, K05, KC_MINS, KC_EQL, K06, K07, K08, K09, K0A, KC_BSLS, \
+ KC_TAB, K11, K12, K13, K14, K15, KC_LCBR, KC_RCBR, K16, K17, K18, K19, K1A, KC_QUOT, \
+ OS_LSFT, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, OS_RSFT, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LALT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, \
+ LT(_LOWER, KC_SPC), LT(_RAISE, KC_ENT), \
+ OS_LGUI,LT(_LOWER, KC_SPC),KC_DEL, KC_BSPC, LT(_RAISE, KC_ENT), OS_RGUI \
+ )
+
+#define LAYOUT_ergodash_pretty_base_wrapper(...) LAYOUT_ergodash_pretty_base(__VA_ARGS__)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_ergodash_pretty_base_wrapper(
+ _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
+ _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
+ _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
+ ),
+
+/* Keymap: COLEMAK layer
+ *
+ * ,----------------------------------------------------. ,----------------------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | [ | | ] | 6 | 7 | 8 | 9 | 0 | - |
+ * |--------+--------+------+------+------+-------------| |------+------+------+------+------+--------+--------|
+ * | ` | Q | W | F | P | G | - | | = | J | L | U | Y | ; | \ |
+ * |--------+--------+------+------+------+------|------| |------|------+------+------+------+--------+--------|
+ * | Tab | A | R | S | T | D | Del | | Bksp | H | N | E | I | O | ' |
+ * |--------+--------+------+------+------+------|------' `------|------+------+------+------+--------+--------|
+ * | LShift | Z | X | C | V | B | | K | M | , < | . > | / | RShift |
+ * |--------+--------+------+------+------+------' `------+------+------+------+--------+--------|
+ * | Ctrl | GUI | Alt | EISU | | LEFT | DOWN | UP | RIGHT |
+ * `-------------------------------' `-------------------------------'
+ * ,--------------. ,--------------.
+ * | Lower| | | | Raise |
+ * ,-------| / | Del | | Bksp + / +-------.
+ * |CMD/Spc| Space| | | | Enter |CMD/Spc|
+ * `----------------------' `----------------------'
+ */
+
+
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+ [_COLEMAK] = LAYOUT_ergodash_pretty_base_wrapper(
+ _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
+ _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
+ _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
+ ),
+
+ [_DVORAK] = LAYOUT_ergodash_pretty_base_wrapper(
+ _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
+ _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
+ _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
+ ),
+
+ [_WORKMAN] = LAYOUT_ergodash_pretty_base_wrapper(
+ _________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
+ _________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
+ _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
+ ),
+
+#ifdef UNICODEMAP_ENABLE
+ [_UNICODE] = LAYOUT_ergodash_pretty_base_wrapper(
+ _______________UNICODE_L1__________________, _______________UNICODE_R1__________________,
+ _______________UNICODE_L2__________________, _______________UNICODE_R2__________________,
+ _______________UNICODE_L3__________________, _______________UNICODE_R3__________________
+ ),
+#endif
+
+ [_LOWER] = LAYOUT_ergodash_pretty_wrapper(
+ KC_F11, _________________FUNC_LEFT_________________, KC_RST , KC_RST , _________________FUNC_RIGHT________________, KC_F12,
+ KC_TILD, _________________LOWER_L1__________________, _______, _______, _________________LOWER_R1__________________, KC_PIPE,
+ _______, _________________LOWER_L2__________________, _______, _______, _________________LOWER_R2__________________, KC_DQUO,
+ _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, KC_PSCR,
+ _______, _______, _______, _______, _______, _______, _______, KC_PAUS,
+ _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_ergodash_pretty_wrapper(
+ KC_F12, _________________FUNC_LEFT_________________, KC_RST, KC_RST , _________________FUNC_RIGHT________________, KC_F11,
+ KC_GRV, _________________RAISE_L1__________________, _______, _______, _________________RAISE_R1__________________, KC_BSLS,
+ _______, _________________RAISE_L2__________________, _______, _______, _________________RAISE_R2__________________, KC_QUOT,
+ _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, KC_PSCR,
+ _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
+ _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [_ADJUST] = LAYOUT_ergodash_pretty_wrapper(
+ KC_MAKE, _______, _______, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, KC_RST,
+ VRSN, _________________ADJUST_L1_________________, _______, _______, _________________ADJUST_R1_________________, EEP_RST,
+ _______, _________________ADJUST_L2_________________, _______, _______, _________________ADJUST_R2_________________, _______,
+ _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+};
+
+#ifdef AUDIO_ENABLE
+float tone_qwerty[][2] = SONG(QWERTY_SOUND);
+#endif
+
+void persistent_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
+
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+void matrix_init_keymap(void) {
+#ifdef STARTUP_RESET_EEPROM
+ eeconfig_init();
+#endif
+}
+
+//
diff --git a/keyboards/ergodash/rev1/keymaps/yet-another-developer/rules.mk b/keyboards/ergodash/rev1/keymaps/yet-another-developer/rules.mk
new file mode 100644
index 00000000000..6ba6c5b2211
--- /dev/null
+++ b/keyboards/ergodash/rev1/keymaps/yet-another-developer/rules.mk
@@ -0,0 +1,23 @@
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+
+# Device
+AUDIO_ENABLE = no
+
+RGBLIGHT_ENABLE = no
+BACKLIGHT_ENABLE = no
+INDICATOR_LIGHTS = no
+
+# QMK Features
+AUTO_SHIFT_ENABLE = no
+MOUSEKEY_ENABLE = no
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+LEADER_ENABLE = yes # default is yes
+TAP_DANCE_ENABLE = no #(+1254)
+UNICODE_ENABLE = no #(+1134)
+UNICODEMAP_ENABLE = no
+NKRO_ENABLE = no
+MACROS_ENABLED = no
+
+# User Defined Features
+NO_SECRETS = no
diff --git a/keyboards/ergodone/matrix.c b/keyboards/ergodone/matrix.c
index 4a8230aa81d..456f73c954d 100644
--- a/keyboards/ergodone/matrix.c
+++ b/keyboards/ergodone/matrix.c
@@ -9,9 +9,6 @@
#include "matrix.h"
#include "ergodone.h"
#include "expander.h"
-#ifdef DEBUG_MATRIX_SCAN_RATE
-#include "timer.h"
-#endif
/*
* This constant define not debouncing time in msecs, but amount of matrix
@@ -41,12 +38,6 @@ static void init_cols(void);
static void unselect_rows(void);
static void select_row(uint8_t row);
-#ifdef DEBUG_MATRIX_SCAN_RATE
-uint32_t matrix_timer;
-uint32_t matrix_scan_count;
-#endif
-
-
__attribute__ ((weak))
void matrix_init_user(void) {}
@@ -88,13 +79,7 @@ void matrix_init(void)
}
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
-
matrix_init_quantum();
-
}
void matrix_power_up(void) {
@@ -105,11 +90,6 @@ void matrix_power_up(void) {
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
matrix[i] = 0;
}
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
}
// Returns a matrix_row_t whose bits are set if the corresponding key should be
@@ -140,21 +120,6 @@ uint8_t matrix_scan(void)
{
expander_scan();
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_scan_count++;
-
- uint32_t timer_now = timer_read32();
- if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) {
- print("matrix scan frequency: ");
- pdec(matrix_scan_count);
- print("\n");
- matrix_print();
-
- matrix_timer = timer_now;
- matrix_scan_count = 0;
- }
-#endif
-
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
select_row(i);
wait_us(30); // without this wait read unstable value.
diff --git a/keyboards/ergodox_ez/matrix.c b/keyboards/ergodox_ez/matrix.c
index 3c9a2f43a7c..4f11a0ad521 100644
--- a/keyboards/ergodox_ez/matrix.c
+++ b/keyboards/ergodox_ez/matrix.c
@@ -32,15 +32,6 @@ along with this program. If not, see .
#include "debounce.h"
#include QMK_KEYBOARD_H
-// Only enable this if console is enabled to print to
-#if defined(DEBUG_MATRIX_SCAN_RATE) && !defined(CONSOLE_ENABLE)
-# undef DEBUG_MATRIX_SCAN_RATE
-#endif
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
-# include "timer.h"
-#endif
-
/*
* This constant define not debouncing time in msecs, assuming eager_pr.
*
@@ -65,11 +56,6 @@ static void select_row(uint8_t row);
static uint8_t mcp23018_reset_loop;
// static uint16_t mcp23018_reset_loop;
-#ifdef DEBUG_MATRIX_SCAN_RATE
-uint32_t matrix_timer;
-uint32_t matrix_scan_count;
-#endif
-
__attribute__((weak)) void matrix_init_user(void) {}
__attribute__((weak)) void matrix_scan_user(void) {}
@@ -96,10 +82,6 @@ void matrix_init(void) {
raw_matrix[i] = 0;
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
debounce_init(MATRIX_ROWS);
matrix_init_quantum();
}
@@ -114,11 +96,6 @@ void matrix_power_up(void) {
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
matrix[i] = 0;
}
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
}
// Reads and stores a row, returning
@@ -149,20 +126,6 @@ uint8_t matrix_scan(void) {
}
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_scan_count++;
-
- uint32_t timer_now = timer_read32();
- if (TIMER_DIFF_32(timer_now, matrix_timer) > 1000) {
- print("matrix scan frequency: ");
- pdec(matrix_scan_count);
- print("\n");
-
- matrix_timer = timer_now;
- matrix_scan_count = 0;
- }
-#endif
-
#ifdef LEFT_LEDS
mcp23018_status = ergodox_left_leds_update();
#endif // LEFT_LEDS
diff --git a/keyboards/ergodox_stm32/config.h b/keyboards/ergodox_stm32/config.h
index 5305655214a..e1b3d7b14e6 100644
--- a/keyboards/ergodox_stm32/config.h
+++ b/keyboards/ergodox_stm32/config.h
@@ -33,3 +33,7 @@ along with this program. If not, see .
keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
)
+
+// i2c_master driver config
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
diff --git a/keyboards/ergodox_stm32/matrix.c b/keyboards/ergodox_stm32/matrix.c
index 5a280ee17dd..383bf9790a5 100644
--- a/keyboards/ergodox_stm32/matrix.c
+++ b/keyboards/ergodox_stm32/matrix.c
@@ -13,13 +13,6 @@
#define DEBOUNCE 10
#endif
-//#define DEBUG_MATRIX_SCAN_RATE
-
-//#ifdef DEBUG_MATRIX_SCAN_RATE
-//uint32_t matrix_timer;
-//uint32_t matrix_scan_count;
-//#endif
-
static uint8_t mcp23017_reset_loop = 0;
volatile matrix_row_t matrix[MATRIX_ROWS];
diff --git a/keyboards/ergotaco/matrix.c b/keyboards/ergotaco/matrix.c
index f7ceb194ad6..e28f754e67e 100644
--- a/keyboards/ergotaco/matrix.c
+++ b/keyboards/ergotaco/matrix.c
@@ -26,9 +26,6 @@ along with this program. If not, see .
#include "debug.h"
#include "util.h"
#include QMK_KEYBOARD_H
-#ifdef DEBUG_MATRIX_SCAN_RATE
-#include "timer.h"
-#endif
#ifndef DEBOUNCE
# define DEBOUNCE 5
@@ -70,12 +67,6 @@ static void select_row(uint8_t row);
static uint8_t mcp23018_reset_loop;
// static uint16_t mcp23018_reset_loop;
-#ifdef DEBUG_MATRIX_SCAN_RATE
-uint32_t matrix_timer;
-uint32_t matrix_scan_count;
-#endif
-
-
__attribute__ ((weak))
void matrix_init_user(void) {}
@@ -121,10 +112,6 @@ void matrix_init(void)
}
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
matrix_init_quantum();
}
@@ -138,12 +125,6 @@ void matrix_power_up(void) {
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
matrix[i] = 0;
}
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
-
}
// Returns a matrix_row_t whose bits are set if the corresponding key should be
@@ -192,18 +173,6 @@ uint8_t matrix_scan(void)
}
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_scan_count++;
- uint32_t timer_now = timer_read32();
- if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) {
- print("matrix scan frequency: ");
- pdec(matrix_scan_count);
- print("\n");
-
- matrix_timer = timer_now;
- matrix_scan_count = 0;
- }
-#endif
for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) {
select_row(i);
// and select on left hand
diff --git a/keyboards/fc660c/rules.mk b/keyboards/fc660c/rules.mk
index 18613a59171..b817b404fd8 100644
--- a/keyboards/fc660c/rules.mk
+++ b/keyboards/fc660c/rules.mk
@@ -11,7 +11,6 @@ MCU = atmega32u4
# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/geekboards/tester/rules.mk b/keyboards/geekboards/tester/rules.mk
index 7e8d595fb71..1ca57f6d09c 100644
--- a/keyboards/geekboards/tester/rules.mk
+++ b/keyboards/geekboards/tester/rules.mk
@@ -1,52 +1,16 @@
# MCU name
MCU = atmega32u4
-# project specific files
-#SRC =
-
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = qmk-dfu
-# Do not put the microcontroller into power saving mode
-# when we get USB suspend event. We want it to keep updating
-# backlight effects.
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/georgi/matrix.c b/keyboards/georgi/matrix.c
index 58f0776c425..f0b69c841ab 100644
--- a/keyboards/georgi/matrix.c
+++ b/keyboards/georgi/matrix.c
@@ -27,10 +27,6 @@ along with this program. If not, see .
#include "util.h"
#include "keymap_steno.h"
#include QMK_KEYBOARD_H
-#ifdef DEBUG_MATRIX_SCAN_RATE
-#include "timer.h"
-#endif
-
#ifndef DEBOUNCE
# define DEBOUNCE 5
@@ -92,12 +88,6 @@ static void select_row(uint8_t row);
static uint8_t mcp23018_reset_loop;
// static uint16_t mcp23018_reset_loop;
-#ifdef DEBUG_MATRIX_SCAN_RATE
-uint32_t matrix_timer;
-uint32_t matrix_scan_count;
-#endif
-
-
__attribute__ ((weak))
void matrix_init_user(void) {}
@@ -143,10 +133,6 @@ void matrix_init(void)
}
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
matrix_init_quantum();
}
@@ -160,12 +146,6 @@ void matrix_power_up(void) {
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
matrix[i] = 0;
}
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
-
}
// Returns a matrix_row_t whose bits are set if the corresponding key should be
@@ -214,18 +194,6 @@ uint8_t matrix_scan(void)
}
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_scan_count++;
- uint32_t timer_now = timer_read32();
- if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) {
- print("matrix scan frequency: ");
- pdec(matrix_scan_count);
- print("\n");
-
- matrix_timer = timer_now;
- matrix_scan_count = 0;
- }
-#endif
for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) {
select_row(i);
// and select on left hand
diff --git a/keyboards/georgi/rules.mk b/keyboards/georgi/rules.mk
index a87b448e349..412a318f0cc 100644
--- a/keyboards/georgi/rules.mk
+++ b/keyboards/georgi/rules.mk
@@ -1,18 +1,15 @@
-#----------------------------------------------------------------------------
-# make georgi:default:dfu
-# Make sure you have dfu-programmer installed!
-# Do not edit this file! Make a copy of keymaps/default and modify that!
-#----------------------------------------------------------------------------
-# Source includes
-SRC += matrix.c i2c_master.c sten.c
-
-# Hardware info
+# MCU name
MCU = atmega32u4
-F_CPU = 16000000
-ARCH = AVR8
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-F_USB = $(F_CPU)
-EXTRAFLAGS += -flto
CUSTOM_MATRIX = yes
MOUSEKEY_ENABLE = no
@@ -21,3 +18,6 @@ EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = no
NKRO_ENABLE = yes
+
+EXTRAFLAGS += -flto
+SRC += matrix.c i2c_master.c sten.c
diff --git a/keyboards/gergo/matrix.c b/keyboards/gergo/matrix.c
index 9ef1f6b5cfa..f659ed52c25 100644
--- a/keyboards/gergo/matrix.c
+++ b/keyboards/gergo/matrix.c
@@ -27,9 +27,6 @@ along with this program. If not, see .
#include "util.h"
#include "debounce.h"
#include QMK_KEYBOARD_H
-#ifdef DEBUG_MATRIX_SCAN_RATE
-# include "timer.h"
-#endif
#ifdef BALLER
#include
@@ -124,12 +121,6 @@ static void enableInterrupts(void);
static uint8_t mcp23018_reset_loop;
// static uint16_t mcp23018_reset_loop;
-#ifdef DEBUG_MATRIX_SCAN_RATE
-uint32_t matrix_timer;
-uint32_t matrix_scan_count;
-#endif
-
-
__attribute__ ((weak)) void matrix_init_user(void) {}
__attribute__ ((weak)) void matrix_scan_user(void) {}
@@ -161,10 +152,6 @@ void matrix_init(void) {
raw_matrix[i] = 0;
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
debounce_init(MATRIX_ROWS);
matrix_init_quantum();
}
@@ -179,12 +166,6 @@ void matrix_power_up(void) {
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
matrix[i] = 0;
}
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
-
}
// Reads and stores a row, returning
@@ -261,20 +242,6 @@ uint8_t matrix_scan(void) {
}
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_scan_count++;
-
- uint32_t timer_now = timer_read32();
- if (TIMER_DIFF_32(timer_now, matrix_timer) > 1000) {
- print("matrix scan frequency: ");
- pdec(matrix_scan_count);
- print("\n");
-
- matrix_timer = timer_now;
- matrix_scan_count = 0;
- }
-#endif
-
bool changed = false;
for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) {
// select rows from left and right hands
diff --git a/keyboards/gergo/rules.mk b/keyboards/gergo/rules.mk
index 2b5d62988ea..41f201a4583 100644
--- a/keyboards/gergo/rules.mk
+++ b/keyboards/gergo/rules.mk
@@ -1,18 +1,15 @@
-#----------------------------------------------------------------------------
-# make gergo:germ:dfu
-# Make sure you have dfu-programmer installed!
-# Do not edit this file! Make a copy of keymaps/default and modify that!
-#----------------------------------------------------------------------------
-# Source includes
-SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
-
-# Hardware info
+# MCU name
MCU = atmega32u4
-F_CPU = 16000000
-ARCH = AVR8
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-F_USB = $(F_CPU)
CUSTOM_MATRIX = yes
EXTRAKEY_ENABLE = yes
@@ -21,3 +18,5 @@ COMMAND_ENABLE = yes
BOOTMAGIC_ENABLE = lite
DEBOUNCE_TYPE = eager_pr
+SRC += matrix.c
+QUANTUM_LIB_SRC += i2c_master.c
diff --git a/keyboards/gh60/revc/rules.mk b/keyboards/gh60/revc/rules.mk
index bf7ea514d6e..c9362b334b4 100644
--- a/keyboards/gh60/revc/rules.mk
+++ b/keyboards/gh60/revc/rules.mk
@@ -1,51 +1,15 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
diff --git a/keyboards/gh60/satan/rules.mk b/keyboards/gh60/satan/rules.mk
index b6bb68391ff..9bd667535d2 100644
--- a/keyboards/gh60/satan/rules.mk
+++ b/keyboards/gh60/satan/rules.mk
@@ -1,48 +1,15 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
diff --git a/keyboards/gh80_3000/rules.mk b/keyboards/gh80_3000/rules.mk
index 9e4bc3f0d2b..0da2d6a2fd9 100644
--- a/keyboards/gh80_3000/rules.mk
+++ b/keyboards/gh80_3000/rules.mk
@@ -1,45 +1,15 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
diff --git a/keyboards/gonnerd/rules.mk b/keyboards/gonnerd/rules.mk
index ebea1005bac..d4858ff1309 100644
--- a/keyboards/gonnerd/rules.mk
+++ b/keyboards/gonnerd/rules.mk
@@ -1,51 +1,18 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
+# Processor frequency
F_CPU = 8000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
diff --git a/keyboards/gray_studio/cod67/rules.mk b/keyboards/gray_studio/cod67/rules.mk
index 6cba6b6b869..1df4615eb9b 100644
--- a/keyboards/gray_studio/cod67/rules.mk
+++ b/keyboards/gray_studio/cod67/rules.mk
@@ -1,51 +1,15 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = lufa-ms
# Build Options
# change yes to no to disable
diff --git a/keyboards/gray_studio/space65/rules.mk b/keyboards/gray_studio/space65/rules.mk
index 261569206aa..ced89eac045 100644
--- a/keyboards/gray_studio/space65/rules.mk
+++ b/keyboards/gray_studio/space65/rules.mk
@@ -1,63 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
@@ -79,4 +32,4 @@ AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
-LAYOUTS = 65_ansi_blocker
\ No newline at end of file
+LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/grid600/press/rules.mk b/keyboards/grid600/press/rules.mk
index 1fcf3841bec..fb575b3abc1 100644
--- a/keyboards/grid600/press/rules.mk
+++ b/keyboards/grid600/press/rules.mk
@@ -1,63 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/gskt00/rules.mk b/keyboards/gskt00/rules.mk
index 338384e3e86..2acbeaa9015 100755
--- a/keyboards/gskt00/rules.mk
+++ b/keyboards/gskt00/rules.mk
@@ -1,41 +1,14 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
# Build Options
diff --git a/keyboards/hadron/ver2/rules.mk b/keyboards/hadron/ver2/rules.mk
index 7af5d184716..3d48d88e7c5 100644
--- a/keyboards/hadron/ver2/rules.mk
+++ b/keyboards/hadron/ver2/rules.mk
@@ -1,48 +1,14 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = halfkay
# Build Options
diff --git a/keyboards/halberd/rules.mk b/keyboards/halberd/rules.mk
index ed4e6bde325..35c693379b9 100644
--- a/keyboards/halberd/rules.mk
+++ b/keyboards/halberd/rules.mk
@@ -1,63 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/handwired/2x5keypad/rules.mk b/keyboards/handwired/2x5keypad/rules.mk
index fd999de2c26..b7027cd9e9d 100644
--- a/keyboards/handwired/2x5keypad/rules.mk
+++ b/keyboards/handwired/2x5keypad/rules.mk
@@ -1,4 +1,14 @@
+# MCU name
MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
diff --git a/keyboards/handwired/412_64/rules.mk b/keyboards/handwired/412_64/rules.mk
index 9e74da5d983..c7dfa8705b7 100644
--- a/keyboards/handwired/412_64/rules.mk
+++ b/keyboards/handwired/412_64/rules.mk
@@ -1,53 +1,14 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
# Build Options
diff --git a/keyboards/handwired/arrow_pad/rules.mk b/keyboards/handwired/arrow_pad/rules.mk
index 7e68eb5990e..65fc42a062e 100644
--- a/keyboards/handwired/arrow_pad/rules.mk
+++ b/keyboards/handwired/arrow_pad/rules.mk
@@ -1,51 +1,15 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/atreus50/rules.mk b/keyboards/handwired/atreus50/rules.mk
index 1db2bfa9280..e8b551fbb73 100644
--- a/keyboards/handwired/atreus50/rules.mk
+++ b/keyboards/handwired/atreus50/rules.mk
@@ -1,49 +1,15 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
diff --git a/keyboards/handwired/cmd60/rules.mk b/keyboards/handwired/cmd60/rules.mk
index d980716eaef..b5e96d74bf5 100644
--- a/keyboards/handwired/cmd60/rules.mk
+++ b/keyboards/handwired/cmd60/rules.mk
@@ -1,52 +1,15 @@
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
@@ -65,5 +28,3 @@ MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
-
-
diff --git a/keyboards/handwired/co60/rev1/rules.mk b/keyboards/handwired/co60/rev1/rules.mk
index 31ce6cbe41a..56b5aed0a39 100644
--- a/keyboards/handwired/co60/rev1/rules.mk
+++ b/keyboards/handwired/co60/rev1/rules.mk
@@ -1,49 +1,14 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
# Build Options
diff --git a/keyboards/handwired/dactyl/matrix.c b/keyboards/handwired/dactyl/matrix.c
index 28cf37522b0..faa5c19cf25 100644
--- a/keyboards/handwired/dactyl/matrix.c
+++ b/keyboards/handwired/dactyl/matrix.c
@@ -76,11 +76,6 @@ uint8_t expander_status;
uint8_t expander_input_pin_mask;
bool i2c_initialized = false;
-#ifdef DEBUG_MATRIX_SCAN_RATE
-uint32_t matrix_timer;
-uint32_t matrix_scan_count;
-#endif
-
#define ROW_SHIFTER ((matrix_row_t)1)
__attribute__ ((weak))
@@ -129,11 +124,6 @@ void matrix_init(void)
matrix_debouncing[i] = 0;
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
-
matrix_init_quantum();
}
@@ -236,20 +226,6 @@ uint8_t matrix_scan(void)
}
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_scan_count++;
-
- uint32_t timer_now = timer_read32();
- if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) {
- print("matrix scan frequency: ");
- pdec(matrix_scan_count);
- print("\n");
-
- matrix_timer = timer_now;
- matrix_scan_count = 0;
- }
-#endif
-
#if (DIODE_DIRECTION == COL2ROW)
for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
# if (DEBOUNCE > 0)
diff --git a/keyboards/handwired/dactyl/rules.mk b/keyboards/handwired/dactyl/rules.mk
index dc25f9c3fb7..2e740e38474 100644
--- a/keyboards/handwired/dactyl/rules.mk
+++ b/keyboards/handwired/dactyl/rules.mk
@@ -1,71 +1,15 @@
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make = Make software.
-#
-# make clean = Clean out built project files.
-#
-# That's pretty much all you need. To compile, always go make clean,
-# followed by make.
-#
-# For advanced users only:
-# make teensy = Download the hex file to the device, using teensy_loader_cli.
-# (must have teensy_loader_cli installed).
-#
-#----------------------------------------------------------------------------
-
-# # project specific files
-SRC = twimaster.c \
- matrix.c
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
@@ -84,3 +28,7 @@ SWAP_HANDS_ENABLE = yes # Allow swapping hands of keyboard
SLEEP_LED_ENABLE = no
API_SYSEX_ENABLE = no
RGBLIGHT_ENABLE = no
+
+# project specific files
+SRC = twimaster.c \
+ matrix.c
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/keyboards/handwired/dactyl_manuform/rules.mk b/keyboards/handwired/dactyl_manuform/rules.mk
index 37806fa1647..1ba5f5a0934 100644
--- a/keyboards/handwired/dactyl_manuform/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/rules.mk
@@ -1,47 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# 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
diff --git a/keyboards/handwired/dactyl_promicro/rules.mk b/keyboards/handwired/dactyl_promicro/rules.mk
index 37806fa1647..1ba5f5a0934 100644
--- a/keyboards/handwired/dactyl_promicro/rules.mk
+++ b/keyboards/handwired/dactyl_promicro/rules.mk
@@ -1,47 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# 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
diff --git a/keyboards/handwired/fivethirteen/rules.mk b/keyboards/handwired/fivethirteen/rules.mk
index c8dd19ef7b3..64d566cb17b 100644
--- a/keyboards/handwired/fivethirteen/rules.mk
+++ b/keyboards/handwired/fivethirteen/rules.mk
@@ -1,52 +1,15 @@
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/frenchdev/matrix.c b/keyboards/handwired/frenchdev/matrix.c
index 26c2b312609..c9c7e94aea7 100644
--- a/keyboards/handwired/frenchdev/matrix.c
+++ b/keyboards/handwired/frenchdev/matrix.c
@@ -35,9 +35,6 @@ along with this program. If not, see .
#include "util.h"
#include "matrix.h"
#include "frenchdev.h"
-#ifdef DEBUG_MATRIX_SCAN_RATE
-#include "timer.h"
-#endif
/*
* This constant define not debouncing time in msecs, but amount of matrix
@@ -66,12 +63,6 @@ static void select_row(uint8_t row);
static uint8_t mcp23018_reset_loop;
-#ifdef DEBUG_MATRIX_SCAN_RATE
-uint32_t matrix_timer;
-uint32_t matrix_scan_count;
-#endif
-
-
__attribute__ ((weak))
void matrix_init_user(void) {}
@@ -120,13 +111,7 @@ void matrix_init(void)
matrix_debouncing[i] = 0;
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
-
matrix_init_quantum();
-
}
void matrix_power_up(void) {
@@ -140,12 +125,6 @@ void matrix_power_up(void) {
matrix[i] = 0;
matrix_debouncing[i] = 0;
}
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
-
}
uint8_t matrix_scan(void)
@@ -165,20 +144,6 @@ uint8_t matrix_scan(void)
}
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_scan_count++;
-
- uint32_t timer_now = timer_read32();
- if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) {
- print("matrix scan frequency: ");
- pdec(matrix_scan_count);
- print("\n");
-
- matrix_timer = timer_now;
- matrix_scan_count = 0;
- }
-#endif
-
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
select_row(i);
wait_us(30); // without this wait read unstable value.
diff --git a/keyboards/handwired/frenchdev/rules.mk b/keyboards/handwired/frenchdev/rules.mk
index 69a12b68d77..abf4e62c4b3 100644
--- a/keyboards/handwired/frenchdev/rules.mk
+++ b/keyboards/handwired/frenchdev/rules.mk
@@ -1,70 +1,15 @@
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make = Make software.
-#
-# make clean = Clean out built project files.
-#
-# That's pretty much all you need. To compile, always go make clean,
-# followed by make.
-#
-# For advanced users only:
-# make teensy = Download the hex file to the device, using teensy_loader_cli.
-# (must have teensy_loader_cli installed).
-#
-#----------------------------------------------------------------------------
-
-# # project specific files
-SRC = i2c_master.c \
- matrix.c
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-BOOTLOADER = halfKay
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
@@ -85,3 +30,7 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
RGBLIGHT_ENABLE = no
API_SYSEX_ENABLE = no
+
+# project specific files
+SRC = i2c_master.c \
+ matrix.c
diff --git a/keyboards/handwired/gamenum/rules.mk b/keyboards/handwired/gamenum/rules.mk
index d980716eaef..3989329835e 100644
--- a/keyboards/handwired/gamenum/rules.mk
+++ b/keyboards/handwired/gamenum/rules.mk
@@ -1,52 +1,15 @@
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
# Build Options
# change yes to no to disable
@@ -65,5 +28,3 @@ MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
-
-
diff --git a/keyboards/handwired/hexon38/rules.mk b/keyboards/handwired/hexon38/rules.mk
index 2b6f17afc28..fb5e1b0c9b5 100644
--- a/keyboards/handwired/hexon38/rules.mk
+++ b/keyboards/handwired/hexon38/rules.mk
@@ -1,54 +1,16 @@
-# see https://github.com/pepaslabs/hexon38
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = halfkay
-
# Enabled build options:
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
diff --git a/keyboards/handwired/hnah108/hnah108.h b/keyboards/handwired/hnah108/hnah108.h
index 64695a41645..9ea34b83ada 100644
--- a/keyboards/handwired/hnah108/hnah108.h
+++ b/keyboards/handwired/hnah108/hnah108.h
@@ -40,14 +40,14 @@
}
#define LAYOUT_fullsize_iso( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, k65, k66, k67, k68, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k70, k71, k72, k73, k74, k75, k76, k77, k78, k69, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k80, k81, k83, k84, k85, k86, k87, k79, k6A, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k91, k93, k94, k96, k97, k88, \
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k90, k92, k95, k98, k99, k89, k7A, \
k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k9A, k8A \
) LAYOUT_all( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, KC_NO, KC_NO, KC_NO, KC_NO, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, k65, k66, k67, k68, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k70, k71, k72, k73, k74, k75, k76, k77, k78, k69, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k80, k81, KC_NO, k83, k84, k85, k86, k87, k79, k6A, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k91, k93, k94, k96, k97, k88, \
@@ -56,14 +56,14 @@
)
#define LAYOUT_fullsize_ansi( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, k65, k66, k67, k68, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k70, k71, k72, k73, k74, k75, k76, k77, k78, k69, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k80, k81, k82, k83, k84, k85, k86, k87, k79, k6A, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k91, k94, k96, k97, k88, \
k40, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k90, k92, k95, k98, k99, k89, k7A, \
k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k9A, k8A \
) LAYOUT_all( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, KC_NO, KC_NO, KC_NO, KC_NO, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k60, k61, k62, k63, k64, k65, k66, k67, k68, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k70, k71, k72, k73, k74, k75, k76, k77, k78, k69, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k80, k81, k82, k83, k84, k85, k86, k87, k79, k6A, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k91,KC_NO,k94, k96, k97, k88, \
diff --git a/keyboards/handwired/hnah108/info.json b/keyboards/handwired/hnah108/info.json
index 2a99c4891a0..a8671a870cc 100644
--- a/keyboards/handwired/hnah108/info.json
+++ b/keyboards/handwired/hnah108/info.json
@@ -6,13 +6,13 @@
"height": 6.25,
"layouts": {
"LAYOUT_all": {
- "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"x":18.5, "y":0}, {"x":19.5, "y":0}, {"x":20.5, "y":0}, {"x":21.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Num Lock", "x":18.5, "y":1.25}, {"label":"/", "x":19.5, "y":1.25}, {"label":"*", "x":20.5, "y":1.25}, {"label":"-", "x":21.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"7", "x":18.5, "y":2.25}, {"label":"8", "x":19.5, "y":2.25}, {"label":"9", "x":20.5, "y":2.25}, {"label":"+", "x":21.5, "y":2.25, "h":2}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"@", "x":11.75, "y":3.25}, {"label":"~", "x":12.75, "y":3.25}, {"label":"4", "x":18.5, "y":3.25}, {"label":"5", "x":19.5, "y":3.25}, {"label":"6", "x":20.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"|", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"1", "x":18.5, "y":4.25}, {"label":"2", "x":19.5, "y":4.25}, {"label":"3", "x":20.5, "y":4.25}, {"label":"Enter", "x":21.5, "y":4.25, "h":2}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}, {"label":"0", "x":18.5, "y":5.25, "w":2}, {"label":".", "x":20.5, "y":5.25}]
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"x":18.5, "y":0}, {"x":19.5, "y":0}, {"x":20.5, "y":0}, {"x":21.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Num Lock", "x":18.5, "y":1.25}, {"label":"/", "x":19.5, "y":1.25}, {"label":"*", "x":20.5, "y":1.25}, {"label":"-", "x":21.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"7", "x":18.5, "y":2.25}, {"label":"8", "x":19.5, "y":2.25}, {"label":"9", "x":20.5, "y":2.25}, {"label":"+", "x":21.5, "y":2.25, "h":2}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"@", "x":11.75, "y":3.25}, {"label":"~", "x":12.75, "y":3.25}, {"label":"Enter", "x":13.75, "y":3.25, "w":1.25}, {"label":"4", "x":18.5, "y":3.25}, {"label":"5", "x":19.5, "y":3.25}, {"label":"6", "x":20.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"|", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"1", "x":18.5, "y":4.25}, {"label":"2", "x":19.5, "y":4.25}, {"label":"3", "x":20.5, "y":4.25}, {"label":"Enter", "x":21.5, "y":4.25, "h":2}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}, {"label":"0", "x":18.5, "y":5.25, "w":2}, {"label":".", "x":20.5, "y":5.25}]
},
"LAYOUT_fullsize_iso": {
- "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Num Lock", "x":18.5, "y":1.25}, {"label":"/", "x":19.5, "y":1.25}, {"label":"*", "x":20.5, "y":1.25}, {"label":"-", "x":21.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"7", "x":18.5, "y":2.25}, {"label":"8", "x":19.5, "y":2.25}, {"label":"9", "x":20.5, "y":2.25}, {"label":"+", "x":21.5, "y":2.25, "h":2}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"@", "x":11.75, "y":3.25}, {"label":"~", "x":12.75, "y":3.25}, {"label":"4", "x":18.5, "y":3.25}, {"label":"5", "x":19.5, "y":3.25}, {"label":"6", "x":20.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"|", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"1", "x":18.5, "y":4.25}, {"label":"2", "x":19.5, "y":4.25}, {"label":"3", "x":20.5, "y":4.25}, {"label":"Enter", "x":21.5, "y":4.25, "h":2}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}, {"label":"0", "x":18.5, "y":5.25, "w":2}, {"label":".", "x":20.5, "y":5.25}]
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"x":18.5, "y":0}, {"x":19.5, "y":0}, {"x":20.5, "y":0}, {"x":21.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Num Lock", "x":18.5, "y":1.25}, {"label":"/", "x":19.5, "y":1.25}, {"label":"*", "x":20.5, "y":1.25}, {"label":"-", "x":21.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"7", "x":18.5, "y":2.25}, {"label":"8", "x":19.5, "y":2.25}, {"label":"9", "x":20.5, "y":2.25}, {"label":"+", "x":21.5, "y":2.25, "h":2}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"@", "x":11.75, "y":3.25}, {"label":"~", "x":12.75, "y":3.25}, {"label":"4", "x":18.5, "y":3.25}, {"label":"5", "x":19.5, "y":3.25}, {"label":"6", "x":20.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"|", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"1", "x":18.5, "y":4.25}, {"label":"2", "x":19.5, "y":4.25}, {"label":"3", "x":20.5, "y":4.25}, {"label":"Enter", "x":21.5, "y":4.25, "h":2}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}, {"label":"0", "x":18.5, "y":5.25, "w":2}, {"label":".", "x":20.5, "y":5.25}]
},
"LAYOUT_fullsize_ansi": {
- "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Num Lock", "x":18.5, "y":1.25}, {"label":"/", "x":19.5, "y":1.25}, {"label":"*", "x":20.5, "y":1.25}, {"label":"-", "x":21.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"7", "x":18.5, "y":2.25}, {"label":"8", "x":19.5, "y":2.25}, {"label":"9", "x":20.5, "y":2.25}, {"label":"+", "x":21.5, "y":2.25, "h":2}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"@", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"4", "x":18.5, "y":3.25}, {"label":"5", "x":19.5, "y":3.25}, {"label":"6", "x":20.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"1", "x":18.5, "y":4.25}, {"label":"2", "x":19.5, "y":4.25}, {"label":"3", "x":20.5, "y":4.25}, {"label":"Enter", "x":21.5, "y":4.25, "h":2}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}, {"label":"0", "x":18.5, "y":5.25, "w":2}, {"label":".", "x":20.5, "y":5.25}]
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"x":18.5, "y":0}, {"x":19.5, "y":0}, {"x":20.5, "y":0}, {"x":21.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Num Lock", "x":18.5, "y":1.25}, {"label":"/", "x":19.5, "y":1.25}, {"label":"*", "x":20.5, "y":1.25}, {"label":"-", "x":21.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"7", "x":18.5, "y":2.25}, {"label":"8", "x":19.5, "y":2.25}, {"label":"9", "x":20.5, "y":2.25}, {"label":"+", "x":21.5, "y":2.25, "h":2}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"4", "x":18.5, "y":3.25}, {"label":"5", "x":19.5, "y":3.25}, {"label":"6", "x":20.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"1", "x":18.5, "y":4.25}, {"label":"2", "x":19.5, "y":4.25}, {"label":"3", "x":20.5, "y":4.25}, {"label":"Enter", "x":21.5, "y":4.25, "h":2}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}, {"label":"0", "x":18.5, "y":5.25, "w":2}, {"label":".", "x":20.5, "y":5.25}]
}
}
}
\ No newline at end of file
diff --git a/keyboards/handwired/hnah108/keymaps/default/keymap.c b/keyboards/handwired/hnah108/keymaps/default/keymap.c
index a0f06fe1fdf..6d8fe072c18 100644
--- a/keyboards/handwired/hnah108/keymaps/default/keymap.c
+++ b/keyboards/handwired/hnah108/keymaps/default/keymap.c
@@ -44,17 +44,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
void encoder_update_user(uint8_t index, bool clockwise) {
- if (IS_LAYER_ON(_FN)) { /* First encoder */
+ if (index == 0) {
+ if (IS_LAYER_ON(_FN)) {
if (clockwise) {
- rgb_matrix_step();
+ tap_code(KC_BRIU);
} else {
- rgb_matrix_step_reverse();
+ tap_code(KC_BRID);
}
} else {
if (clockwise) {
- rgb_matrix_increase_speed();
+ tap_code(KC_VOLU);
+
} else {
- rgb_matrix_decrease_speed();
+ tap_code(KC_VOLD);
+ }
}
}
}
diff --git a/keyboards/handwired/hnah108/rules.mk b/keyboards/handwired/hnah108/rules.mk
index f881a08bfe2..8e486c594b2 100644
--- a/keyboards/handwired/hnah108/rules.mk
+++ b/keyboards/handwired/hnah108/rules.mk
@@ -1,33 +1,22 @@
# MCU name
MCU = atmega32u4
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
@@ -44,6 +33,3 @@ FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
ENCODER_ENABLE = yes
RGB_MATRIX_ENABLE = WS2812
-
-# Supported layouts
-LAYOUTS = fullsize_ansi fullsize_iso
diff --git a/keyboards/handwired/jn68m/rules.mk b/keyboards/handwired/jn68m/rules.mk
index fa95254d8ae..80b59d628d9 100644
--- a/keyboards/handwired/jn68m/rules.mk
+++ b/keyboards/handwired/jn68m/rules.mk
@@ -1,63 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/handwired/jopr/rules.mk b/keyboards/handwired/jopr/rules.mk
index de83252c38a..ae10be0d26c 100644
--- a/keyboards/handwired/jopr/rules.mk
+++ b/keyboards/handwired/jopr/rules.mk
@@ -1,52 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/handwired/jot50/rules.mk b/keyboards/handwired/jot50/rules.mk
index 36a100c9631..d01dfefa5e7 100644
--- a/keyboards/handwired/jot50/rules.mk
+++ b/keyboards/handwired/jot50/rules.mk
@@ -1,47 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# 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
diff --git a/keyboards/handwired/jotanck/rules.mk b/keyboards/handwired/jotanck/rules.mk
index fa288141334..2a233cccd02 100644
--- a/keyboards/handwired/jotanck/rules.mk
+++ b/keyboards/handwired/jotanck/rules.mk
@@ -1,47 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# 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
diff --git a/keyboards/handwired/jotpad16/rules.mk b/keyboards/handwired/jotpad16/rules.mk
index 8105f800cb9..0c9370f1c1d 100644
--- a/keyboards/handwired/jotpad16/rules.mk
+++ b/keyboards/handwired/jotpad16/rules.mk
@@ -1,47 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# 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
diff --git a/keyboards/handwired/kbod/rules.mk b/keyboards/handwired/kbod/rules.mk
index 55ab9f350a4..0c840986330 100644
--- a/keyboards/handwired/kbod/rules.mk
+++ b/keyboards/handwired/kbod/rules.mk
@@ -1,51 +1,15 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/lovelive9/rules.mk b/keyboards/handwired/lovelive9/rules.mk
index 8ec4ed3d659..4799b5ec925 100644
--- a/keyboards/handwired/lovelive9/rules.mk
+++ b/keyboards/handwired/lovelive9/rules.mk
@@ -1,48 +1,14 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
# Build Options
diff --git a/keyboards/handwired/maartenwut/rules.mk b/keyboards/handwired/maartenwut/rules.mk
index 7ed63c65ecd..5f50d6b52a8 100755
--- a/keyboards/handwired/maartenwut/rules.mk
+++ b/keyboards/handwired/maartenwut/rules.mk
@@ -1,52 +1,15 @@
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/magicforce68/rules.mk b/keyboards/handwired/magicforce68/rules.mk
index fe01b544c80..3989329835e 100644
--- a/keyboards/handwired/magicforce68/rules.mk
+++ b/keyboards/handwired/magicforce68/rules.mk
@@ -1,52 +1,15 @@
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/mechboards_micropad/rules.mk b/keyboards/handwired/mechboards_micropad/rules.mk
index 033ccaf84f8..a61b3b3d834 100644
--- a/keyboards/handwired/mechboards_micropad/rules.mk
+++ b/keyboards/handwired/mechboards_micropad/rules.mk
@@ -1,63 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/handwired/minorca/rules.mk b/keyboards/handwired/minorca/rules.mk
index 3e8d8285614..5c29c0c93e9 100644
--- a/keyboards/handwired/minorca/rules.mk
+++ b/keyboards/handwired/minorca/rules.mk
@@ -1,49 +1,15 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = halfkay
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
diff --git a/keyboards/handwired/nicekey/rules.mk b/keyboards/handwired/nicekey/rules.mk
index cfa693a73b9..61c1fa79aa5 100644
--- a/keyboards/handwired/nicekey/rules.mk
+++ b/keyboards/handwired/nicekey/rules.mk
@@ -1,53 +1,15 @@
-
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
@@ -58,4 +20,4 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
\ No newline at end of file
+#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
diff --git a/keyboards/handwired/not_so_minidox/rules.mk b/keyboards/handwired/not_so_minidox/rules.mk
index d8735651942..ae5cb83b7bf 100644
--- a/keyboards/handwired/not_so_minidox/rules.mk
+++ b/keyboards/handwired/not_so_minidox/rules.mk
@@ -1,52 +1,16 @@
-SRC += matrix.c \
- i2c.c \
- split_util.c \
- serial.c
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# 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
@@ -68,3 +32,7 @@ USE_I2C ?= no
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
+SRC += matrix.c \
+ i2c.c \
+ split_util.c \
+ serial.c
diff --git a/keyboards/handwired/numbrero/rules.mk b/keyboards/handwired/numbrero/rules.mk
index bda6c866e21..969dd0b507a 100644
--- a/keyboards/handwired/numbrero/rules.mk
+++ b/keyboards/handwired/numbrero/rules.mk
@@ -1,49 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-#Bootloder
-#Pro Micro = caterina
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Boot Section Size in *bytes*
-#OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/handwired/numpad20/rules.mk b/keyboards/handwired/numpad20/rules.mk
index 361b2e93af1..b5e96d74bf5 100644
--- a/keyboards/handwired/numpad20/rules.mk
+++ b/keyboards/handwired/numpad20/rules.mk
@@ -1,52 +1,15 @@
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
@@ -64,4 +27,4 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by d
MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE = no # Audio output on port C6
\ No newline at end of file
+AUDIO_ENABLE = no # Audio output on port C6
diff --git a/keyboards/handwired/onekey/elite_c/rules.mk b/keyboards/handwired/onekey/elite_c/rules.mk
index eb7c443951d..2f20507d4dd 100644
--- a/keyboards/handwired/onekey/elite_c/rules.mk
+++ b/keyboards/handwired/onekey/elite_c/rules.mk
@@ -1,58 +1,12 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
diff --git a/keyboards/handwired/onekey/promicro/rules.mk b/keyboards/handwired/onekey/promicro/rules.mk
index dc6f1962373..e6fef517279 100644
--- a/keyboards/handwired/onekey/promicro/rules.mk
+++ b/keyboards/handwired/onekey/promicro/rules.mk
@@ -1,58 +1,12 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
diff --git a/keyboards/handwired/onekey/teensy_2/rules.mk b/keyboards/handwired/onekey/teensy_2/rules.mk
index 3fb7c7e5a7e..ae398e2588c 100644
--- a/keyboards/handwired/onekey/teensy_2/rules.mk
+++ b/keyboards/handwired/onekey/teensy_2/rules.mk
@@ -1,58 +1,12 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = halfkay
-
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
diff --git a/keyboards/handwired/ortho5x13/rules.mk b/keyboards/handwired/ortho5x13/rules.mk
index fe01b544c80..b5e96d74bf5 100644
--- a/keyboards/handwired/ortho5x13/rules.mk
+++ b/keyboards/handwired/ortho5x13/rules.mk
@@ -1,52 +1,15 @@
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/pilcrow/rules.mk b/keyboards/handwired/pilcrow/rules.mk
index 762ae481ecc..b5e96d74bf5 100644
--- a/keyboards/handwired/pilcrow/rules.mk
+++ b/keyboards/handwired/pilcrow/rules.mk
@@ -1,51 +1,15 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/prime_exl/rules.mk b/keyboards/handwired/prime_exl/rules.mk
index 5cce4e8113d..d7aca43dfc9 100644
--- a/keyboards/handwired/prime_exl/rules.mk
+++ b/keyboards/handwired/prime_exl/rules.mk
@@ -1,63 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk
index 17226430028..19d20ee03fb 100644
--- a/keyboards/handwired/promethium/rules.mk
+++ b/keyboards/handwired/promethium/rules.mk
@@ -1,49 +1,18 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
+# Processor frequency
F_CPU = 8000000
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
diff --git a/keyboards/handwired/pteron/rules.mk b/keyboards/handwired/pteron/rules.mk
index 10218020e6e..648387460ba 100644
--- a/keyboards/handwired/pteron/rules.mk
+++ b/keyboards/handwired/pteron/rules.mk
@@ -1,45 +1,14 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
# Build Options
@@ -55,4 +24,4 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https:/
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no
UNICODE_ENABLE = no
-UNICODEMAP_ENABLE = no
\ No newline at end of file
+UNICODEMAP_ENABLE = no
diff --git a/keyboards/handwired/qc60/rules.mk b/keyboards/handwired/qc60/rules.mk
index b487dd96ecd..8859f5012d3 100644
--- a/keyboards/handwired/qc60/rules.mk
+++ b/keyboards/handwired/qc60/rules.mk
@@ -1,47 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# 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
diff --git a/keyboards/handwired/reddot/rules.mk b/keyboards/handwired/reddot/rules.mk
index 8afe6fc63e8..4400decaac1 100755
--- a/keyboards/handwired/reddot/rules.mk
+++ b/keyboards/handwired/reddot/rules.mk
@@ -1,44 +1,14 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-# for avr upload
-USB = /dev/cu.usbmodem1421
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
ifdef TEENSY2
BOOTLOADER = halfkay
OPT_DEFS += -DATREUS_TEENSY2
@@ -50,11 +20,6 @@ else
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
endif
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-
# Build Options
# change yes to no to disable
#
@@ -76,3 +41,5 @@ AUDIO_ENABLE = no # Audio output on port C6
# upload: build
# $(ATREUS_UPLOAD_COMMAND)
+# for avr upload
+USB = /dev/cu.usbmodem1421
diff --git a/keyboards/handwired/retro_refit/rules.mk b/keyboards/handwired/retro_refit/rules.mk
index 2884ef2cb09..04db510d138 100644
--- a/keyboards/handwired/retro_refit/rules.mk
+++ b/keyboards/handwired/retro_refit/rules.mk
@@ -1,51 +1,15 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = halfkay
# Build Options
# comment out to disable the options.
diff --git a/keyboards/handwired/rs60/rules.mk b/keyboards/handwired/rs60/rules.mk
index 7b4ec69d0d3..ee10944c67b 100644
--- a/keyboards/handwired/rs60/rules.mk
+++ b/keyboards/handwired/rs60/rules.mk
@@ -1,50 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = qmk-dfu
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-LAYOUTS = ortho_5x12
-
-# Boot Section Size in *bytes*
-#OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# comment out to disable the options.
#
@@ -59,3 +25,4 @@ BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not b
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = no # This can be enabled if a ws2812 strip is connected to the expansion port.
+LAYOUTS = ortho_5x12
diff --git a/keyboards/handwired/space_oddity/rules.mk b/keyboards/handwired/space_oddity/rules.mk
index b597ef2b095..43fc1f34a3d 100644
--- a/keyboards/handwired/space_oddity/rules.mk
+++ b/keyboards/handwired/space_oddity/rules.mk
@@ -1,47 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/handwired/splittest/promicro/rules.mk b/keyboards/handwired/splittest/promicro/rules.mk
index dc6f1962373..e6fef517279 100644
--- a/keyboards/handwired/splittest/promicro/rules.mk
+++ b/keyboards/handwired/splittest/promicro/rules.mk
@@ -1,58 +1,12 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
diff --git a/keyboards/handwired/splittest/teensy_2/config.h b/keyboards/handwired/splittest/teensy_2/config.h
index 3d0b0346edf..7c092db3071 100644
--- a/keyboards/handwired/splittest/teensy_2/config.h
+++ b/keyboards/handwired/splittest/teensy_2/config.h
@@ -27,5 +27,5 @@
/* ws2812 RGB LED */
#define RGB_DI_PIN D3
-// required for teensy slave otherwise it "locks up" during startup
-#define NO_USB_STARTUP_CHECK
+// teensy has vbus detection issues - use usb detection instead
+#define SPLIT_USB_DETECT
diff --git a/keyboards/handwired/splittest/teensy_2/rules.mk b/keyboards/handwired/splittest/teensy_2/rules.mk
index 3fb7c7e5a7e..ae398e2588c 100644
--- a/keyboards/handwired/splittest/teensy_2/rules.mk
+++ b/keyboards/handwired/splittest/teensy_2/rules.mk
@@ -1,58 +1,12 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = halfkay
-
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
diff --git a/keyboards/handwired/splittest/teensy_2/teensy_2.c b/keyboards/handwired/splittest/teensy_2/teensy_2.c
deleted file mode 100644
index bcc2a437bdc..00000000000
--- a/keyboards/handwired/splittest/teensy_2/teensy_2.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include QMK_KEYBOARD_H
-
-bool is_keyboard_master(void) {
- // TODO: replace this override once USB host detection is implemented
- // SPLIT_HAND_PIN Combined with MASTER_LEFT or MASTER_RIGHT, gives a crude
- // way to force teensy to run as slave/master
- setPinInput(SPLIT_HAND_PIN);
-
-#if defined(MASTER_RIGHT)
- return !readPin(SPLIT_HAND_PIN);
-#else
- return readPin(SPLIT_HAND_PIN);
-#endif
-}
diff --git a/keyboards/handwired/tennie/rules.mk b/keyboards/handwired/tennie/rules.mk
index 0119dc6fb2f..b41b736a71a 100644
--- a/keyboards/handwired/tennie/rules.mk
+++ b/keyboards/handwired/tennie/rules.mk
@@ -1,63 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/handwired/terminus_mini/keymaps/default/rules.mk b/keyboards/handwired/terminus_mini/keymaps/default/rules.mk
index 42ab51f1507..a0c29684b1b 100644
--- a/keyboards/handwired/terminus_mini/keymaps/default/rules.mk
+++ b/keyboards/handwired/terminus_mini/keymaps/default/rules.mk
@@ -1,19 +1,3 @@
-# Copyright 2013 Jun Wako
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-
-
# QMK Build Options
# change to "no" to disable the options, or define them in the rules.mk in
# the appropriate keymap folder that will get included automatically
diff --git a/keyboards/handwired/terminus_mini/rules.mk b/keyboards/handwired/terminus_mini/rules.mk
index 1093901c098..684da4cbb9e 100644
--- a/keyboards/handwired/terminus_mini/rules.mk
+++ b/keyboards/handwired/terminus_mini/rules.mk
@@ -1,51 +1,15 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=512
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = halfkay
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/trackpoint/rules.mk b/keyboards/handwired/trackpoint/rules.mk
index 47dace8a22f..668b3bb1ffe 100644
--- a/keyboards/handwired/trackpoint/rules.mk
+++ b/keyboards/handwired/trackpoint/rules.mk
@@ -1,9 +1,17 @@
+# MCU name
MCU = atmega32u4
-F_CPU = 16000000
-ARCH = AVR8
-F_USB = $(F_CPU)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-OPT_DEFS += -DBOOTLOADER_SIZE=512
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = halfkay
+
+
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
@@ -19,4 +27,3 @@ AUDIO_ENABLE = no # Audio output on port C6
PS2_MOUSE_ENABLE = yes
PS2_USE_USART = yes
-
diff --git a/keyboards/handwired/tradestation/rules.mk b/keyboards/handwired/tradestation/rules.mk
index 649b63babf9..d3612c3c296 100644
--- a/keyboards/handwired/tradestation/rules.mk
+++ b/keyboards/handwired/tradestation/rules.mk
@@ -1,54 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Boot Section Size in *bytes*
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/handwired/traveller/rules.mk b/keyboards/handwired/traveller/rules.mk
index 03673fdd194..0758e593409 100644
--- a/keyboards/handwired/traveller/rules.mk
+++ b/keyboards/handwired/traveller/rules.mk
@@ -1,45 +1,14 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-# for avr upload
-USB = /dev/cu.usbmodem1421
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
ifdef TEENSY2
BOOTLOADER = halfkay
OPT_DEFS += -DATREUS_TEENSY2
@@ -51,21 +20,6 @@ else
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
endif
-
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
@@ -85,3 +39,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
RGBLIGHT_ENABLE = yes
+# for avr upload
+USB = /dev/cu.usbmodem1421
diff --git a/keyboards/handwired/tritium_numpad/rules.mk b/keyboards/handwired/tritium_numpad/rules.mk
index c990a6ab14d..42dfc5cbece 100644
--- a/keyboards/handwired/tritium_numpad/rules.mk
+++ b/keyboards/handwired/tritium_numpad/rules.mk
@@ -1,47 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/handwired/woodpad/keymaps/default/rules.mk b/keyboards/handwired/woodpad/keymaps/default/rules.mk
index fce19bfaa8f..394bc0271fc 100644
--- a/keyboards/handwired/woodpad/keymaps/default/rules.mk
+++ b/keyboards/handwired/woodpad/keymaps/default/rules.mk
@@ -1,19 +1,3 @@
-# Copyright 2013 Jun Wako
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-
-
# QMK 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
@@ -31,4 +15,3 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/handwired/woodpad/rules.mk b/keyboards/handwired/woodpad/rules.mk
index 4bdc561a632..7725131978e 100644
--- a/keyboards/handwired/woodpad/rules.mk
+++ b/keyboards/handwired/woodpad/rules.mk
@@ -1,49 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Build Options
# change yes to no to disable
#
@@ -63,15 +30,3 @@ BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE ?= no # Audio output on port C6
FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches
RGBLIGHT_ENABLE ?= no
-
-#avrdude: build
-# ls /dev/tty* > /tmp/1; \
-# echo "Reset your Pro Micro now"; \
-# while [ -z $$USB ]; do \
-# sleep 1; \
-# ls /dev/tty* > /tmp/2; \
-# USB=`diff /tmp/1 /tmp/2 | $(GREP) -o '/dev/tty.*'`; \
-# done; \
-# avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
-#
-#.PHONY: avrdude
diff --git a/keyboards/handwired/xealous/matrix.c b/keyboards/handwired/xealous/matrix.c
index e2d21993917..6d43db4d913 100644
--- a/keyboards/handwired/xealous/matrix.c
+++ b/keyboards/handwired/xealous/matrix.c
@@ -30,18 +30,6 @@ along with this program. If not, see .
#include "pro_micro.h"
#include "config.h"
#include "timer.h"
-#ifdef DEBUG_MATRIX_SCAN_RATE
- #include "matrix_scanrate.h"
-#endif
-
-void matrix_scan_user(void)
-{
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_check_scan_rate();
- matrix_time_between_scans();
-#endif
-
-}
// Copy this code to split_common/matrix.c,
// and call it instead of the unoptimized col_reader. Scan-rate jumps from 1200->1920
diff --git a/keyboards/handwired/xealous/matrix_scanrate.c b/keyboards/handwired/xealous/matrix_scanrate.c
deleted file mode 100644
index f2c7cbe6e36..00000000000
--- a/keyboards/handwired/xealous/matrix_scanrate.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include
-#include
-#include
-#include "wait.h"
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-#include "timer.h"
-
-#ifdef CONSOLE_ENABLE
-static uint16_t matrix_scan_count = 0;
-static uint32_t matrix_timer = 0;
-void matrix_check_scan_rate(void) {
- matrix_scan_count++;
- if (matrix_scan_count > 1000) {
- uint32_t timer_now = timer_read32();
- uint16_t ms_per_thousand = TIMER_DIFF_32(timer_now, matrix_timer);
- uint16_t rate_per_second = 1000000UL / ms_per_thousand;
- print("scan_rate: ");
- pdec(rate_per_second);
- print("\n");
- matrix_timer = timer_now;
- matrix_scan_count = 0;
- }
-}
-
-static uint32_t last_scan_time = 0;
-void matrix_time_between_scans(void) {
- if (timer_elapsed(last_scan_time) > 1)
- {
- print(">1ms elapsed since last scan: ");
- pdec(timer_elapsed(last_scan_time));
- print("\n");
- }
- last_scan_time = timer_read();
-
-}
-#endif
diff --git a/keyboards/handwired/xealous/matrix_scanrate.h b/keyboards/handwired/xealous/matrix_scanrate.h
deleted file mode 100644
index 18d56cd5b4b..00000000000
--- a/keyboards/handwired/xealous/matrix_scanrate.h
+++ /dev/null
@@ -1,4 +0,0 @@
-__attribute__((weak))
-void matrix_check_scan_rate(void) {}
-__attribute__((weak))
-void matrix_time_between_scans(void) {}
diff --git a/keyboards/handwired/xealous/rules.mk b/keyboards/handwired/xealous/rules.mk
index ef3357982ea..2d816ab7cee 100644
--- a/keyboards/handwired/xealous/rules.mk
+++ b/keyboards/handwired/xealous/rules.mk
@@ -1,49 +1,16 @@
-SRC += matrix_scanrate.c matrix.c
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# 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
@@ -66,6 +33,7 @@ SUBPROJECT_rev1 = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+SRC += matrix.c
DEBOUNCE_TYPE = eager_pk
LAYOUTS = split60
diff --git a/keyboards/handwired/xealousbrown/rules.mk b/keyboards/handwired/xealousbrown/rules.mk
index 2bad9a1c6ec..c346ef6c988 100644
--- a/keyboards/handwired/xealousbrown/rules.mk
+++ b/keyboards/handwired/xealousbrown/rules.mk
@@ -1,44 +1,16 @@
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
+
# Build Options
# change yes to no to disable
#
@@ -56,5 +28,3 @@ MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
-
-
diff --git a/keyboards/hecomi/alpha/rules.mk b/keyboards/hecomi/alpha/rules.mk
index 06434e9621f..83afff3261f 100644
--- a/keyboards/hecomi/alpha/rules.mk
+++ b/keyboards/hecomi/alpha/rules.mk
@@ -1,63 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/hecomi/rules.mk b/keyboards/hecomi/rules.mk
index 5fddc13959f..28febe217b4 100644
--- a/keyboards/hecomi/rules.mk
+++ b/keyboards/hecomi/rules.mk
@@ -1,66 +1,16 @@
-DEFAULT_FOLDER=hecomi/alpha
-#
-#
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
@@ -82,3 +32,5 @@ AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = hecomi/alpha
diff --git a/keyboards/helix/config.h b/keyboards/helix/config.h
index fbfbd328043..875312f0c35 100644
--- a/keyboards/helix/config.h
+++ b/keyboards/helix/config.h
@@ -16,8 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -27,8 +26,6 @@ along with this program. If not, see .
// -include keyboards/helix/rev?/keymaps/MAPNAME/config.h
// XXXX.c
-#include
-
// GCC include search path in qmk_firmare/keyboards/helix/
// #include "..." search starts here:
// #include <...> search starts here:
@@ -38,14 +35,3 @@ along with this program. If not, see .
// .
// ./tmk_core
// ......
-
-#ifdef USE_Link_Time_Optimization
- // LTO has issues with macros (action_get_macro) and "functions" (fn_actions),
- // so just disable them
- #define NO_ACTION_MACRO
- #define NO_ACTION_FUNCTION
-
- #define DISABLE_LEADER
-#endif // USE_Link_Time_Optimization
-
-#endif /* CONFIG_H */
diff --git a/keyboards/helix/helix.h b/keyboards/helix/helix.h
index d73feb6bbf8..7dac2455deb 100644
--- a/keyboards/helix/helix.h
+++ b/keyboards/helix/helix.h
@@ -1,5 +1,4 @@
-#ifndef HELIX_H
-#define HELIX_H
+#pragma once
#ifdef KEYBOARD_helix_rev1
#include "rev1.h"
@@ -12,5 +11,3 @@
#endif
#include "quantum.h"
-
-#endif
diff --git a/keyboards/helix/i2c.c b/keyboards/helix/local_drivers/i2c.c
similarity index 100%
rename from keyboards/helix/i2c.c
rename to keyboards/helix/local_drivers/i2c.c
diff --git a/keyboards/helix/i2c.h b/keyboards/helix/local_drivers/i2c.h
similarity index 100%
rename from keyboards/helix/i2c.h
rename to keyboards/helix/local_drivers/i2c.h
diff --git a/keyboards/helix/serial.c b/keyboards/helix/local_drivers/serial.c
similarity index 100%
rename from keyboards/helix/serial.c
rename to keyboards/helix/local_drivers/serial.c
diff --git a/keyboards/helix/serial.h b/keyboards/helix/local_drivers/serial.h
similarity index 100%
rename from keyboards/helix/serial.h
rename to keyboards/helix/local_drivers/serial.h
diff --git a/keyboards/helix/ssd1306.c b/keyboards/helix/local_drivers/ssd1306.c
similarity index 100%
rename from keyboards/helix/ssd1306.c
rename to keyboards/helix/local_drivers/ssd1306.c
diff --git a/keyboards/helix/ssd1306.h b/keyboards/helix/local_drivers/ssd1306.h
similarity index 100%
rename from keyboards/helix/ssd1306.h
rename to keyboards/helix/local_drivers/ssd1306.h
diff --git a/keyboards/helix/pico/back/rules.mk b/keyboards/helix/pico/back/rules.mk
new file mode 100644
index 00000000000..066fffb74af
--- /dev/null
+++ b/keyboards/helix/pico/back/rules.mk
@@ -0,0 +1 @@
+LED_BACK_ENABLE = yes
diff --git a/keyboards/helix/pico/config.h b/keyboards/helix/pico/config.h
index b377332efa1..260560f556f 100644
--- a/keyboards/helix/pico/config.h
+++ b/keyboards/helix/pico/config.h
@@ -16,8 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef PICO_CONFIG_H
-#define PICO_CONFIG_H
+#pragma once
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
@@ -35,6 +34,11 @@ along with this program. If not, see .
#define USE_SERIAL
//#define USE_MATRIX_I2C
+/* Soft Serial defines */
+#define SOFT_SERIAL_PIN D2
+#define SERIAL_SLAVE_BUFFER_LENGTH ((MATRIX_ROWS)/2)
+#define SERIAL_MASTER_BUFFER_LENGTH ((MATRIX_ROWS)/2)
+
/* Select hand configuration */
#define MASTER_LEFT
// #define MASTER_RIGHT
@@ -138,5 +142,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/helix/pico/keymaps/biacco/rules.mk b/keyboards/helix/pico/keymaps/biacco/rules.mk
index d6b36580e11..0c60c40f64d 100644
--- a/keyboards/helix/pico/keymaps/biacco/rules.mk
+++ b/keyboards/helix/pico/keymaps/biacco/rules.mk
@@ -1,125 +1,24 @@
-
-# Build Options
+# QMK Standard 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)
+# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
+# See TOP/docs/config_options.md for more information.
+#
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = yes # Audio output on port B5
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
+LINK_TIME_OPTIMIZATION_ENABLE = no # if firmware size over limit, try this option
-define HELIX_CUSTOMISE_MSG
- $(info Helix customize)
- $(info - OLED_ENABLE=$(OLED_ENABLE))
- $(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
- $(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
- $(info - LED_ANIMATION=$(LED_ANIMATIONS))
- $(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
-endef
+# Helix Spacific Build Options
+# you can uncomment and edit follows 6 Variables
+# jp: 以下の6つの変数を必要に応じて編集し、コメントアウトをはずします。
+# OLED_ENABLE = no # OLED_ENABLE
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+LED_ANIMATIONS = no # LED animations
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-# Helix keyboard customize
-# you can edit follows 6 Variables
-# jp: 以下の6つの変数を必要に応じて編集します。
-OLED_ENABLE = no # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
-LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
-LED_ANIMATIONS = no # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-Link_Time_Optimization = no # if firmware size over limit, try this option
-
-#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
-#### Do not enable these with audio at the same time.
-
-### Helix keyboard 'default' keymap: convenient command line option
-## make HELIX= helix:defualt
-## option= oled | back | under | na | ios
-## ex.
-## make HELIX=oled helix:defualt
-## make HELIX=oled,back helix:defualt
-## make HELIX=oled,under helix:defualt
-## make HELIX=oled,back,na helix:defualt
-## make HELIX=oled,back,ios helix:defualt
-##
-ifneq ($(strip $(HELIX)),)
- ifeq ($(findstring oled,$(HELIX)), oled)
- OLED_ENABLE = yes
- endif
- ifeq ($(findstring back,$(HELIX)), back)
- LED_BACK_ENABLE = yes
- else ifeq ($(findstring under,$(HELIX)), under)
- LED_UNDERGLOW_ENABLE = yes
- endif
- ifeq ($(findstring na,$(HELIX)), na)
- LED_ANIMATIONS = no
- endif
- ifeq ($(findstring ios,$(HELIX)), ios)
- IOS_DEVICE_ENABLE = yes
- endif
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(info )
-endif
-
-# Uncomment these for checking
-# jp: コンパイル時にカスタマイズの状態を表示したい時はコメントをはずします。
-# $(eval $(call HELIX_CUSTOMISE_MSG))
-# $(info )
-
-ifeq ($(strip $(LED_BACK_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
- OPT_DEFS += -DRGBLED_BACK
- ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
- endif
-else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
-else
- RGBLIGHT_ENABLE = no
-endif
-
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-endif
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- OPT_DEFS += -DOLED_ENABLE
-endif
-
-ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
- OPT_DEFS += -DLOCAL_GLCDFONT
-endif
-
-ifeq ($(strip $(AUDIO_ENABLE)),yes)
- ifeq ($(strip $(RGBLIGHT_ENABLE)),yes)
- Link_Time_Optimization = yes
- endif
- ifeq ($(strip $(OLED_ENABLE)),yes)
- Link_Time_Optimization = yes
- endif
-endif
-
-ifeq ($(strip $(Link_Time_Optimization)),yes)
- EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-# Uncomment these for debugging
-# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
-# $(info -- OPT_DEFS=$(OPT_DEFS))
-# $(info )
+# convert Helix-specific options (that represent combinations of standard options)
+# into QMK standard options.
+include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/pico/keymaps/default/readme.md b/keyboards/helix/pico/keymaps/default/readme.md
index 13948cf620f..9013e312878 100644
--- a/keyboards/helix/pico/keymaps/default/readme.md
+++ b/keyboards/helix/pico/keymaps/default/readme.md
@@ -95,16 +95,15 @@
see `qmk_firmware/keyboards/helix/pico/keymaps/default/rules.mk`
```
-# Helix keyboard customize
-# you can edit follows 6 Variables
-# jp: 以下の6つの変数を必要に応じて編集します。
-OLED_ENABLE = no # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
-LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
-LED_ANIMATIONS = yes # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
+# Helix Spacific Build Options
+# you can uncomment and edit follows 6 Variables
+# jp: 以下の6つの変数を必要に応じて編集し、コメントアウトをはずします。
+# OLED_ENABLE = no # OLED_ENABLE
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+# LED_ANIMATIONS = yes # LED animations
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
```
## Compile
@@ -116,11 +115,18 @@ $ cd qmk_firmware
build
```
$ make helix/pico:default
+$ make helix/pico/back:default # with backlight
+$ make HELIX=no_ani helix/pico/back:default # with backlight without animation
+$ make helix/pico/under:default # with underglow
```
flash to keyboard
```
-$ make helix/pico:default:avrdude
+$ make helix/pico:default:flash
+$ make helix/pico/back:default:flash # with backlight
+$ make HELIX=no_ani helix/pico/back:default:flash # with backlight without animation
+$ make helix/pico/under:default:flash # with underglow
+
```
## Link
diff --git a/keyboards/helix/pico/keymaps/default/readme_jp.md b/keyboards/helix/pico/keymaps/default/readme_jp.md
index 1e272f9e6a4..28594dafcbe 100644
--- a/keyboards/helix/pico/keymaps/default/readme_jp.md
+++ b/keyboards/helix/pico/keymaps/default/readme_jp.md
@@ -56,31 +56,6 @@
他の配列(Colemak,Dvorak)は、[readme.md](readme.md) を参照
-## コンパイルの仕方
-
-コンパイルは、qmk_firmware のトップディレクトリで行います。
-
-```
-$ cd qmk_firmware
-```
-qmk_firmwareでは各キーボードのコンパイルは、`<キーボード名>:<キーマップ名>`という指定で行います。
-
-```
-$ make helix/pico:default
-```
-
-キーボードへの書き込みまで同時に行うには下記のように`:avrdude`を付けます。
-
-```
-$ make helix/pico:default:avrdude
-```
-
-コンパイル結果と中間生成物を消去したい場合は以下のようにします。
-
-```
-$ make helix/pico:default:clean
-```
-
## カスタマイズ
オプションの OLED をつけたり、
@@ -88,16 +63,15 @@ RGB バックライトまたは、RGB Underglow をつけた場合は、
`qmk_firmware/keyboards/helix/pico/keymaps/default/rules.mk` の以下の部分を編集して機能を有効化してください。
```
-# Helix keyboard customize
-# you can edit follows 6 Variables
-# jp: 以下の6つの変数を必要に応じて編集します。
-OLED_ENABLE = no # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
-LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
-LED_ANIMATIONS = yes # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
+# Helix Spacific Build Options
+# you can uncomment and edit follows 6 Variables
+# jp: 以下の6つの変数を必要に応じて編集し、コメントアウトをはずします。
+# OLED_ENABLE = no # OLED_ENABLE
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+# LED_ANIMATIONS = yes # LED animations
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
```
## RGB バックライトを有効にする
@@ -131,6 +105,43 @@ RBG Underglow や RGBバックライトの輝度を抑えて、iPad, iPhone に
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
```
+## コンパイルの仕方
+
+コンパイルは、qmk_firmware のトップディレクトリで行います。
+
+```
+$ cd qmk_firmware
+```
+qmk_firmwareでは各キーボードのコンパイルは、`<キーボード名>:<キーマップ名>`という指定で行います。
+
+```
+$ make helix/pico:default
+```
+
+キーボードへの書き込みまで同時に行うには下記のように`:flash`を付けます。
+
+```
+$ make helix/pico:default:flash
+```
+
+コンパイル結果と中間生成物を消去したい場合は以下のようにします。
+
+```
+$ make helix/pico:default:clean
+```
+
+上記の、rules.mk によるカスタマイズ項目の一部は下記のようにコマンド上で直接指定することも可能です。
+
+RGB バックライトを有効にしてコンパイルしてキーボードへ書き込む。
+```
+$ make helix/pico/back:default:flash
+```
+
+RGB Underglow を有効にしてコンパイルしてキーボードへ書き込む。
+```
+$ make helix/pico/under:default:flash
+```
+
## リンク
* さらに詳細は、[こちら helix/Doc/firmware_jp.md](https://github.com/MakotoKurauchi/helix/blob/master/Doc/firmware_jp.md)をご覧ください。
diff --git a/keyboards/helix/pico/keymaps/default/rules.mk b/keyboards/helix/pico/keymaps/default/rules.mk
index 3b518ff8813..764b073007b 100644
--- a/keyboards/helix/pico/keymaps/default/rules.mk
+++ b/keyboards/helix/pico/keymaps/default/rules.mk
@@ -1,125 +1,24 @@
-
-# Build Options
+# QMK Standard 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)
+# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
+# See TOP/docs/config_options.md for more information.
+#
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = yes # Audio output on port B5
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
+AUDIO_ENABLE = yes # Audio output on port B5
+LINK_TIME_OPTIMIZATION_ENABLE = no # if firmware size over limit, try this option
-define HELIX_CUSTOMISE_MSG
- $(info Helix customize)
- $(info - OLED_ENABLE=$(OLED_ENABLE))
- $(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
- $(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
- $(info - LED_ANIMATION=$(LED_ANIMATIONS))
- $(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
-endef
+# Helix Spacific Build Options
+# you can uncomment and edit follows 6 Variables
+# jp: 以下の6つの変数を必要に応じて編集し、コメントアウトをはずします。
+# OLED_ENABLE = no # OLED_ENABLE
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+# LED_ANIMATIONS = yes # LED animations
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-# Helix keyboard customize
-# you can edit follows 6 Variables
-# jp: 以下の6つの変数を必要に応じて編集します。
-OLED_ENABLE = no # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
-LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
-LED_ANIMATIONS = yes # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-Link_Time_Optimization = no # if firmware size over limit, try this option
-
-#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
-#### Do not enable these with audio at the same time.
-
-### Helix keyboard 'default' keymap: convenient command line option
-## make HELIX= helix:defualt
-## option= oled | back | under | na | ios
-## ex.
-## make HELIX=oled helix:defualt
-## make HELIX=oled,back helix:defualt
-## make HELIX=oled,under helix:defualt
-## make HELIX=oled,back,na helix:defualt
-## make HELIX=oled,back,ios helix:defualt
-##
-ifneq ($(strip $(HELIX)),)
- ifeq ($(findstring oled,$(HELIX)), oled)
- OLED_ENABLE = yes
- endif
- ifeq ($(findstring back,$(HELIX)), back)
- LED_BACK_ENABLE = yes
- else ifeq ($(findstring under,$(HELIX)), under)
- LED_UNDERGLOW_ENABLE = yes
- endif
- ifeq ($(findstring na,$(HELIX)), na)
- LED_ANIMATIONS = no
- endif
- ifeq ($(findstring ios,$(HELIX)), ios)
- IOS_DEVICE_ENABLE = yes
- endif
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(info )
-endif
-
-# Uncomment these for checking
-# jp: コンパイル時にカスタマイズの状態を表示したい時はコメントをはずします。
-# $(eval $(call HELIX_CUSTOMISE_MSG))
-# $(info )
-
-ifeq ($(strip $(LED_BACK_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
- OPT_DEFS += -DRGBLED_BACK
- ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
- endif
-else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
-else
- RGBLIGHT_ENABLE = no
-endif
-
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-endif
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- OPT_DEFS += -DOLED_ENABLE
-endif
-
-ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
- OPT_DEFS += -DLOCAL_GLCDFONT
-endif
-
-ifeq ($(strip $(AUDIO_ENABLE)),yes)
- ifeq ($(strip $(RGBLIGHT_ENABLE)),yes)
- Link_Time_Optimization = yes
- endif
- ifeq ($(strip $(OLED_ENABLE)),yes)
- Link_Time_Optimization = yes
- endif
-endif
-
-ifeq ($(strip $(Link_Time_Optimization)),yes)
- EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-# Uncomment these for debugging
-# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
-# $(info -- OPT_DEFS=$(OPT_DEFS))
-# $(info )
+# convert Helix-specific options (that represent combinations of standard options)
+# into QMK standard options.
+include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/pico/keymaps/mtei/rules.mk b/keyboards/helix/pico/keymaps/mtei/rules.mk
index 3b518ff8813..764b073007b 100644
--- a/keyboards/helix/pico/keymaps/mtei/rules.mk
+++ b/keyboards/helix/pico/keymaps/mtei/rules.mk
@@ -1,125 +1,24 @@
-
-# Build Options
+# QMK Standard 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)
+# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
+# See TOP/docs/config_options.md for more information.
+#
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = yes # Audio output on port B5
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
+AUDIO_ENABLE = yes # Audio output on port B5
+LINK_TIME_OPTIMIZATION_ENABLE = no # if firmware size over limit, try this option
-define HELIX_CUSTOMISE_MSG
- $(info Helix customize)
- $(info - OLED_ENABLE=$(OLED_ENABLE))
- $(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
- $(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
- $(info - LED_ANIMATION=$(LED_ANIMATIONS))
- $(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
-endef
+# Helix Spacific Build Options
+# you can uncomment and edit follows 6 Variables
+# jp: 以下の6つの変数を必要に応じて編集し、コメントアウトをはずします。
+# OLED_ENABLE = no # OLED_ENABLE
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+# LED_ANIMATIONS = yes # LED animations
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-# Helix keyboard customize
-# you can edit follows 6 Variables
-# jp: 以下の6つの変数を必要に応じて編集します。
-OLED_ENABLE = no # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
-LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
-LED_ANIMATIONS = yes # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-Link_Time_Optimization = no # if firmware size over limit, try this option
-
-#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
-#### Do not enable these with audio at the same time.
-
-### Helix keyboard 'default' keymap: convenient command line option
-## make HELIX= helix:defualt
-## option= oled | back | under | na | ios
-## ex.
-## make HELIX=oled helix:defualt
-## make HELIX=oled,back helix:defualt
-## make HELIX=oled,under helix:defualt
-## make HELIX=oled,back,na helix:defualt
-## make HELIX=oled,back,ios helix:defualt
-##
-ifneq ($(strip $(HELIX)),)
- ifeq ($(findstring oled,$(HELIX)), oled)
- OLED_ENABLE = yes
- endif
- ifeq ($(findstring back,$(HELIX)), back)
- LED_BACK_ENABLE = yes
- else ifeq ($(findstring under,$(HELIX)), under)
- LED_UNDERGLOW_ENABLE = yes
- endif
- ifeq ($(findstring na,$(HELIX)), na)
- LED_ANIMATIONS = no
- endif
- ifeq ($(findstring ios,$(HELIX)), ios)
- IOS_DEVICE_ENABLE = yes
- endif
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(info )
-endif
-
-# Uncomment these for checking
-# jp: コンパイル時にカスタマイズの状態を表示したい時はコメントをはずします。
-# $(eval $(call HELIX_CUSTOMISE_MSG))
-# $(info )
-
-ifeq ($(strip $(LED_BACK_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
- OPT_DEFS += -DRGBLED_BACK
- ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
- endif
-else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
-else
- RGBLIGHT_ENABLE = no
-endif
-
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-endif
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- OPT_DEFS += -DOLED_ENABLE
-endif
-
-ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
- OPT_DEFS += -DLOCAL_GLCDFONT
-endif
-
-ifeq ($(strip $(AUDIO_ENABLE)),yes)
- ifeq ($(strip $(RGBLIGHT_ENABLE)),yes)
- Link_Time_Optimization = yes
- endif
- ifeq ($(strip $(OLED_ENABLE)),yes)
- Link_Time_Optimization = yes
- endif
-endif
-
-ifeq ($(strip $(Link_Time_Optimization)),yes)
- EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-# Uncomment these for debugging
-# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
-# $(info -- OPT_DEFS=$(OPT_DEFS))
-# $(info )
+# convert Helix-specific options (that represent combinations of standard options)
+# into QMK standard options.
+include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/pico/local_features.mk b/keyboards/helix/pico/local_features.mk
new file mode 100644
index 00000000000..47b928647b2
--- /dev/null
+++ b/keyboards/helix/pico/local_features.mk
@@ -0,0 +1,100 @@
+#
+# local_features.mk contains post-processing rules for the Helix keyboard.
+#
+# Post-processing rules convert keyboard-specific shortcuts (that represent
+# combinations of standard options) into QMK standard options.
+#
+
+define HELIX_CUSTOMISE_MSG
+ $(info Helix Spacific Build Options)
+ $(info - OLED_ENABLE = $(OLED_ENABLE))
+ $(info - LED_BACK_ENABLE = $(LED_BACK_ENABLE))
+ $(info - LED_UNDERGLOW_ENABLE = $(LED_UNDERGLOW_ENABLE))
+ $(info - LED_ANIMATION = $(LED_ANIMATIONS))
+ $(info - IOS_DEVICE_ENABLE = $(IOS_DEVICE_ENABLE))
+ $(info )
+endef
+
+ ifneq ($(strip $(HELIX)),)
+ ### Helix keyboard keymap: convenient command line option
+ ## make HELIX= helix/pico:
+ ## option= oled | back | under | no_ani | na | ios | verbose
+ ## ex.
+ ## make HELIX=oled helix/pico:
+ ## make HELIX=oled,back helix/pico:
+ ## make HELIX=oled,under helix/pico:
+ ## make HELIX=oled,back,na helix/pico:
+ ## make HELIX=oled,back,ios helix/pico:
+ ##
+ ifeq ($(findstring oled,$(HELIX)), oled)
+ OLED_ENABLE = yes
+ endif
+ ifeq ($(findstring back,$(HELIX)), back)
+ LED_BACK_ENABLE = yes
+ else ifeq ($(findstring under,$(HELIX)), under)
+ LED_UNDERGLOW_ENABLE = yes
+ endif
+ ifeq ($(findstring na,$(HELIX)), na)
+ LED_ANIMATIONS = no
+ endif
+ ifeq ($(findstring no_ani,$(HELIX)), no_ani)
+ LED_ANIMATIONS = no
+ endif
+ ifeq ($(findstring ios,$(HELIX)), ios)
+ IOS_DEVICE_ENABLE = yes
+ endif
+ ifeq ($(findstring verbose,$(HELIX)), verbose)
+ SHOW_VERBOSE_INFO = yes
+ endif
+ SHOW_HELIX_OPTIONS = yes
+ endif
+
+########
+# convert Helix-specific options (that represent combinations of standard options)
+# into QMK standard options.
+
+ifeq ($(strip $(LED_BACK_ENABLE)), yes)
+ RGBLIGHT_ENABLE = yes
+ OPT_DEFS += -DRGBLED_BACK
+ ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
+ $(eval $(call HELIX_CUSTOMISE_MSG))
+ $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
+ endif
+else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
+ RGBLIGHT_ENABLE = yes
+endif
+
+ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
+ OPT_DEFS += -DIOS_DEVICE_ENABLE
+endif
+
+ifeq ($(strip $(LED_ANIMATIONS)), yes)
+ OPT_DEFS += -DLED_ANIMATIONS
+endif
+
+ifeq ($(strip $(OLED_ENABLE)), yes)
+ OPT_DEFS += -DOLED_ENABLE
+endif
+
+ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
+ OPT_DEFS += -DLOCAL_GLCDFONT
+endif
+
+ifeq ($(strip $(AUDIO_ENABLE)),yes)
+ ifeq ($(strip $(RGBLIGHT_ENABLE)),yes)
+ LINK_TIME_OPTIMIZATION_ENABLE = yes
+ endif
+ ifeq ($(strip $(OLED_ENABLE)),yes)
+ LINK_TIME_OPTIMIZATION_ENABLE = yes
+ endif
+endif
+
+ifneq ($(strip $(SHOW_HELIX_OPTIONS)),)
+ $(eval $(call HELIX_CUSTOMISE_MSG))
+ ifneq ($(strip $(SHOW_VERBOSE_INFO)),)
+ $(info -- RGBLIGHT_ENABLE = $(RGBLIGHT_ENABLE))
+ $(info -- OPT_DEFS = $(OPT_DEFS))
+ $(info -- LINK_TIME_OPTIMIZATION_ENABLE = $(LINK_TIME_OPTIMIZATION_ENABLE))
+ $(info )
+ endif
+endif
diff --git a/keyboards/helix/pico/pico.h b/keyboards/helix/pico/pico.h
index d9c57206c61..4360be2a9c1 100644
--- a/keyboards/helix/pico/pico.h
+++ b/keyboards/helix/pico/pico.h
@@ -1,5 +1,4 @@
-#ifndef PICO_H
-#define PICO_CONFIG_H
+#pragma once
#include "../helix.h"
@@ -70,6 +69,3 @@
KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \
KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35 \
)
-
-
-#endif
diff --git a/keyboards/helix/pico/rules.mk b/keyboards/helix/pico/rules.mk
index 75bf0a5ef8c..e916f25f450 100644
--- a/keyboards/helix/pico/rules.mk
+++ b/keyboards/helix/pico/rules.mk
@@ -1,2 +1,19 @@
+KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))local_features.mk
+
+SRC += local_drivers/i2c.c
+SRC += local_drivers/serial.c
+SRC += local_drivers/ssd1306.c
+KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers
+
+CUSTOM_MATRIX = yes
+
SRC += pico/matrix.c
SRC += pico/split_util.c
+
+# Helix Spacific Build Options default values
+OLED_ENABLE = no # OLED_ENABLE
+LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+LED_ANIMATIONS = yes # LED animations
+IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
diff --git a/keyboards/helix/pico/serial_config.h b/keyboards/helix/pico/serial_config.h
deleted file mode 100644
index fc8736d4729..00000000000
--- a/keyboards/helix/pico/serial_config.h
+++ /dev/null
@@ -1,9 +0,0 @@
-//// #error rev2 serial config
-
-#ifndef SOFT_SERIAL_PIN
-/* Soft Serial defines */
-#define SOFT_SERIAL_PIN D2
-
-#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2
-#endif
diff --git a/keyboards/helix/pico/under/rules.mk b/keyboards/helix/pico/under/rules.mk
new file mode 100644
index 00000000000..a37aa6fab37
--- /dev/null
+++ b/keyboards/helix/pico/under/rules.mk
@@ -0,0 +1 @@
+LED_UNDERGLOW_ENABLE = yes
diff --git a/keyboards/helix/pro_micro.h b/keyboards/helix/pro_micro.h
deleted file mode 100644
index f9e7ed75d9d..00000000000
--- a/keyboards/helix/pro_micro.h
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- pins_arduino.h - Pin definition functions for Arduino
- Part of Arduino - http://www.arduino.cc/
-
- Copyright (c) 2007 David A. Mellis
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General
- Public License along with this library; if not, write to the
- Free Software Foundation, Inc., 59 Temple Place, Suite 330,
- Boston, MA 02111-1307 USA
-
- $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
-*/
-
-#ifndef Pins_Arduino_h
-#define Pins_Arduino_h
-
-#include
-
-// Workaround for wrong definitions in "iom32u4.h".
-// This should be fixed in the AVR toolchain.
-#undef UHCON
-#undef UHINT
-#undef UHIEN
-#undef UHADDR
-#undef UHFNUM
-#undef UHFNUML
-#undef UHFNUMH
-#undef UHFLEN
-#undef UPINRQX
-#undef UPINTX
-#undef UPNUM
-#undef UPRST
-#undef UPCONX
-#undef UPCFG0X
-#undef UPCFG1X
-#undef UPSTAX
-#undef UPCFG2X
-#undef UPIENX
-#undef UPDATX
-#undef TCCR2A
-#undef WGM20
-#undef WGM21
-#undef COM2B0
-#undef COM2B1
-#undef COM2A0
-#undef COM2A1
-#undef TCCR2B
-#undef CS20
-#undef CS21
-#undef CS22
-#undef WGM22
-#undef FOC2B
-#undef FOC2A
-#undef TCNT2
-#undef TCNT2_0
-#undef TCNT2_1
-#undef TCNT2_2
-#undef TCNT2_3
-#undef TCNT2_4
-#undef TCNT2_5
-#undef TCNT2_6
-#undef TCNT2_7
-#undef OCR2A
-#undef OCR2_0
-#undef OCR2_1
-#undef OCR2_2
-#undef OCR2_3
-#undef OCR2_4
-#undef OCR2_5
-#undef OCR2_6
-#undef OCR2_7
-#undef OCR2B
-#undef OCR2_0
-#undef OCR2_1
-#undef OCR2_2
-#undef OCR2_3
-#undef OCR2_4
-#undef OCR2_5
-#undef OCR2_6
-#undef OCR2_7
-
-#define NUM_DIGITAL_PINS 30
-#define NUM_ANALOG_INPUTS 12
-
-#define TX_RX_LED_INIT DDRD |= (1<<5), DDRB |= (1<<0)
-#define TXLED0 PORTD |= (1<<5)
-#define TXLED1 PORTD &= ~(1<<5)
-#define RXLED0 PORTB |= (1<<0)
-#define RXLED1 PORTB &= ~(1<<0)
-
-static const uint8_t SDA = 2;
-static const uint8_t SCL = 3;
-#define LED_BUILTIN 13
-
-// Map SPI port to 'new' pins D14..D17
-static const uint8_t SS = 17;
-static const uint8_t MOSI = 16;
-static const uint8_t MISO = 14;
-static const uint8_t SCK = 15;
-
-// Mapping of analog pins as digital I/O
-// A6-A11 share with digital pins
-static const uint8_t ADC0 = 18;
-static const uint8_t ADC1 = 19;
-static const uint8_t ADC2 = 20;
-static const uint8_t ADC3 = 21;
-static const uint8_t ADC4 = 22;
-static const uint8_t ADC5 = 23;
-static const uint8_t ADC6 = 24; // D4
-static const uint8_t ADC7 = 25; // D6
-static const uint8_t ADC8 = 26; // D8
-static const uint8_t ADC9 = 27; // D9
-static const uint8_t ADC10 = 28; // D10
-static const uint8_t ADC11 = 29; // D12
-
-#define digitalPinToPCICR(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0))
-#define digitalPinToPCICRbit(p) 0
-#define digitalPinToPCMSK(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0))
-#define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4))))))
-
-// __AVR_ATmega32U4__ has an unusual mapping of pins to channels
-extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
-#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
-
-#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
-
-#ifdef ARDUINO_MAIN
-
-// On the Arduino board, digital pins are also used
-// for the analog output (software PWM). Analog input
-// pins are a separate set.
-
-// ATMEL ATMEGA32U4 / ARDUINO LEONARDO
-//
-// D0 PD2 RXD1/INT2
-// D1 PD3 TXD1/INT3
-// D2 PD1 SDA SDA/INT1
-// D3# PD0 PWM8/SCL OC0B/SCL/INT0
-// D4 A6 PD4 ADC8
-// D5# PC6 ??? OC3A/#OC4A
-// D6# A7 PD7 FastPWM #OC4D/ADC10
-// D7 PE6 INT6/AIN0
-//
-// D8 A8 PB4 ADC11/PCINT4
-// D9# A9 PB5 PWM16 OC1A/#OC4B/ADC12/PCINT5
-// D10# A10 PB6 PWM16 OC1B/0c4B/ADC13/PCINT6
-// D11# PB7 PWM8/16 0C0A/OC1C/#RTS/PCINT7
-// D12 A11 PD6 T1/#OC4D/ADC9
-// D13# PC7 PWM10 CLK0/OC4A
-//
-// A0 D18 PF7 ADC7
-// A1 D19 PF6 ADC6
-// A2 D20 PF5 ADC5
-// A3 D21 PF4 ADC4
-// A4 D22 PF1 ADC1
-// A5 D23 PF0 ADC0
-//
-// New pins D14..D17 to map SPI port to digital pins
-//
-// MISO D14 PB3 MISO,PCINT3
-// SCK D15 PB1 SCK,PCINT1
-// MOSI D16 PB2 MOSI,PCINT2
-// SS D17 PB0 RXLED,SS/PCINT0
-//
-// Connected LEDs on board for TX and RX
-// TXLED D24 PD5 XCK1
-// RXLED D17 PB0
-// HWB PE2 HWB
-
-// these arrays map port names (e.g. port B) to the
-// appropriate addresses for various functions (e.g. reading
-// and writing)
-const uint16_t PROGMEM port_to_mode_PGM[] = {
- NOT_A_PORT,
- NOT_A_PORT,
- (uint16_t) &DDRB,
- (uint16_t) &DDRC,
- (uint16_t) &DDRD,
- (uint16_t) &DDRE,
- (uint16_t) &DDRF,
-};
-
-const uint16_t PROGMEM port_to_output_PGM[] = {
- NOT_A_PORT,
- NOT_A_PORT,
- (uint16_t) &PORTB,
- (uint16_t) &PORTC,
- (uint16_t) &PORTD,
- (uint16_t) &PORTE,
- (uint16_t) &PORTF,
-};
-
-const uint16_t PROGMEM port_to_input_PGM[] = {
- NOT_A_PORT,
- NOT_A_PORT,
- (uint16_t) &PINB,
- (uint16_t) &PINC,
- (uint16_t) &PIND,
- (uint16_t) &PINE,
- (uint16_t) &PINF,
-};
-
-const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
- PD, // D0 - PD2
- PD, // D1 - PD3
- PD, // D2 - PD1
- PD, // D3 - PD0
- PD, // D4 - PD4
- PC, // D5 - PC6
- PD, // D6 - PD7
- PE, // D7 - PE6
-
- PB, // D8 - PB4
- PB, // D9 - PB5
- PB, // D10 - PB6
- PB, // D11 - PB7
- PD, // D12 - PD6
- PC, // D13 - PC7
-
- PB, // D14 - MISO - PB3
- PB, // D15 - SCK - PB1
- PB, // D16 - MOSI - PB2
- PB, // D17 - SS - PB0
-
- PF, // D18 - A0 - PF7
- PF, // D19 - A1 - PF6
- PF, // D20 - A2 - PF5
- PF, // D21 - A3 - PF4
- PF, // D22 - A4 - PF1
- PF, // D23 - A5 - PF0
-
- PD, // D24 - PD5
- PD, // D25 / D6 - A7 - PD7
- PB, // D26 / D8 - A8 - PB4
- PB, // D27 / D9 - A9 - PB5
- PB, // D28 / D10 - A10 - PB6
- PD, // D29 / D12 - A11 - PD6
-};
-
-const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
- _BV(2), // D0 - PD2
- _BV(3), // D1 - PD3
- _BV(1), // D2 - PD1
- _BV(0), // D3 - PD0
- _BV(4), // D4 - PD4
- _BV(6), // D5 - PC6
- _BV(7), // D6 - PD7
- _BV(6), // D7 - PE6
-
- _BV(4), // D8 - PB4
- _BV(5), // D9 - PB5
- _BV(6), // D10 - PB6
- _BV(7), // D11 - PB7
- _BV(6), // D12 - PD6
- _BV(7), // D13 - PC7
-
- _BV(3), // D14 - MISO - PB3
- _BV(1), // D15 - SCK - PB1
- _BV(2), // D16 - MOSI - PB2
- _BV(0), // D17 - SS - PB0
-
- _BV(7), // D18 - A0 - PF7
- _BV(6), // D19 - A1 - PF6
- _BV(5), // D20 - A2 - PF5
- _BV(4), // D21 - A3 - PF4
- _BV(1), // D22 - A4 - PF1
- _BV(0), // D23 - A5 - PF0
-
- _BV(5), // D24 - PD5
- _BV(7), // D25 / D6 - A7 - PD7
- _BV(4), // D26 / D8 - A8 - PB4
- _BV(5), // D27 / D9 - A9 - PB5
- _BV(6), // D28 / D10 - A10 - PB6
- _BV(6), // D29 / D12 - A11 - PD6
-};
-
-const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- TIMER0B, /* 3 */
- NOT_ON_TIMER,
- TIMER3A, /* 5 */
- TIMER4D, /* 6 */
- NOT_ON_TIMER,
-
- NOT_ON_TIMER,
- TIMER1A, /* 9 */
- TIMER1B, /* 10 */
- TIMER0A, /* 11 */
-
- NOT_ON_TIMER,
- TIMER4A, /* 13 */
-
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
-
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
-};
-
-const uint8_t PROGMEM analog_pin_to_channel_PGM[] = {
- 7, // A0 PF7 ADC7
- 6, // A1 PF6 ADC6
- 5, // A2 PF5 ADC5
- 4, // A3 PF4 ADC4
- 1, // A4 PF1 ADC1
- 0, // A5 PF0 ADC0
- 8, // A6 D4 PD4 ADC8
- 10, // A7 D6 PD7 ADC10
- 11, // A8 D8 PB4 ADC11
- 12, // A9 D9 PB5 ADC12
- 13, // A10 D10 PB6 ADC13
- 9 // A11 D12 PD6 ADC9
-};
-
-#endif /* ARDUINO_MAIN */
-
-// These serial port names are intended to allow libraries and architecture-neutral
-// sketches to automatically default to the correct port name for a particular type
-// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
-// the first hardware serial port whose RX/TX pins are not dedicated to another use.
-//
-// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
-//
-// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
-//
-// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
-//
-// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
-//
-// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
-// pins are NOT connected to anything by default.
-#define SERIAL_PORT_MONITOR Serial
-#define SERIAL_PORT_USBVIRTUAL Serial
-#define SERIAL_PORT_HARDWARE Serial1
-#define SERIAL_PORT_HARDWARE_OPEN Serial1
-
-#endif /* Pins_Arduino_h */
diff --git a/keyboards/helix/rev1/config.h b/keyboards/helix/rev1/config.h
index 61fe744728b..1a5a2666411 100644
--- a/keyboards/helix/rev1/config.h
+++ b/keyboards/helix/rev1/config.h
@@ -16,8 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef REV1_CONFIG_H
-#define REV1_CONFIG_H
+#pragma once
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
@@ -27,25 +26,25 @@ along with this program. If not, see .
#define PRODUCT Helix Alpha
#define DESCRIPTION A split keyboard for the cheap makers
+#include
+
#define HELIX_ROWS 5
/* key matrix size */
// Rows are doubled-up
#if HELIX_ROWS == 3
#define MATRIX_ROWS 6
- #define MATRIX_COLS 6
#define MATRIX_ROW_PINS { D7, E6, B4 }
#elif HELIX_ROWS == 4
#define MATRIX_ROWS 8
- #define MATRIX_COLS 6
#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
#elif HELIX_ROWS == 5
#define MATRIX_ROWS 10
- #define MATRIX_COLS 6
#define MATRIX_ROW_PINS { D7, E6, B4, B5, D4 }
#else
#error "expected HELIX_ROWS 3 or 4 or 5"
#endif
+#define MATRIX_COLS 6
// wiring of each half
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
@@ -86,5 +85,3 @@ along with this program. If not, see .
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/helix/rev1/keymaps/OLED_sample/keymap.c b/keyboards/helix/rev1/keymaps/OLED_sample/keymap.c
index 6bee91786c3..cc73e36fb63 100644
--- a/keyboards/helix/rev1/keymaps/OLED_sample/keymap.c
+++ b/keyboards/helix/rev1/keymaps/OLED_sample/keymap.c
@@ -44,7 +44,7 @@ enum custom_keycodes {
M_SAMPLE
};
-#if HELIX_ROWS == 5
+#if MATRIX_ROWS == 10 // HELIX_ROWS == 5
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
@@ -174,7 +174,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-#elif HELIX_ROWS == 4
+#elif MATRIX_ROWS == 8 // HELIX_ROWS == 4
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
diff --git a/keyboards/helix/rev1/keymaps/OLED_sample/rules.mk b/keyboards/helix/rev1/keymaps/OLED_sample/rules.mk
index 1347d3a7daf..69170e35c3b 100644
--- a/keyboards/helix/rev1/keymaps/OLED_sample/rules.mk
+++ b/keyboards/helix/rev1/keymaps/OLED_sample/rules.mk
@@ -1,20 +1,4 @@
-# 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 = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+EXTRAKEY_ENABLE = yes
+NKRO_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+SWAP_HANDS_ENABLE = no
diff --git a/keyboards/helix/rev1/keymaps/default/keymap.c b/keyboards/helix/rev1/keymaps/default/keymap.c
index 43928a4185b..299840e3dbc 100644
--- a/keyboards/helix/rev1/keymaps/default/keymap.c
+++ b/keyboards/helix/rev1/keymaps/default/keymap.c
@@ -22,7 +22,7 @@ enum custom_keycodes {
ADJUST,
};
-#if HELIX_ROWS == 5
+#if MATRIX_ROWS == 10 // HELIX_ROWS == 5
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
@@ -152,7 +152,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-#elif HELIX_ROWS == 4
+#elif MATRIX_ROWS == 8 // HELIX_ROWS == 4
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
diff --git a/keyboards/helix/rev1/keymaps/default/rules.mk b/keyboards/helix/rev1/keymaps/default/rules.mk
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/keyboards/helix/rev1/rev1.h b/keyboards/helix/rev1/rev1.h
index a8d6ff05074..b505845ada9 100644
--- a/keyboards/helix/rev1/rev1.h
+++ b/keyboards/helix/rev1/rev1.h
@@ -1,5 +1,4 @@
-#ifndef REV1_H
-#define REV1_CONFIG_H
+#pragma once
#include "../helix.h"
@@ -13,7 +12,7 @@
#endif
#endif
-#if HELIX_ROWS == 3
+#if MATRIX_ROWS == 6 // HELIX_ROWS == 3
#ifndef FLIP_HALF
// Standard Keymap
// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
@@ -47,7 +46,7 @@
{ R20, R21, R22, R23, R24, R25 }, \
}
#endif
-#elif HELIX_ROWS == 4
+#elif MATRIX_ROWS == 8 // HELIX_ROWS == 4
#ifndef FLIP_HALF
// Standard Keymap
// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
@@ -87,7 +86,7 @@
{ R30, R31, R32, R33, R34, R35 } \
}
#endif
-#elif HELIX_ROWS == 5
+#elif MATRIX_ROWS == 10 // HELIX_ROWS == 5
#ifndef FLIP_HALF
// Standard Keymap
// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
@@ -138,7 +137,7 @@
#endif
// Used to create a keymap using only KC_ prefixed keys
-#if HELIX_ROWS == 3
+#if MATRIX_ROWS == 6 // HELIX_ROWS == 3
#define LAYOUT_kc( \
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
@@ -149,7 +148,7 @@
KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \
KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25 \
)
-#elif HELIX_ROWS == 4
+#elif MATRIX_ROWS == 8 // HELIX_ROWS == 4
#define LAYOUT_kc( \
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
@@ -179,4 +178,3 @@
)
#endif
-#endif
diff --git a/keyboards/helix/rev1/rules.mk b/keyboards/helix/rev1/rules.mk
index 13834f5da10..1418f017861 100644
--- a/keyboards/helix/rev1/rules.mk
+++ b/keyboards/helix/rev1/rules.mk
@@ -1,3 +1,10 @@
+SRC += local_drivers/i2c.c
+SRC += local_drivers/serial.c
+SRC += local_drivers/ssd1306.c
+KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers
+
+CUSTOM_MATRIX = yes
+
SRC += rev1/matrix.c
SRC += rev1/split_util.c
diff --git a/keyboards/helix/rev2/back/oled/rules.mk b/keyboards/helix/rev2/back/oled/rules.mk
new file mode 100644
index 00000000000..dd68e9d3b09
--- /dev/null
+++ b/keyboards/helix/rev2/back/oled/rules.mk
@@ -0,0 +1 @@
+OLED_ENABLE = yes
diff --git a/keyboards/helix/rev2/back/rules.mk b/keyboards/helix/rev2/back/rules.mk
new file mode 100644
index 00000000000..066fffb74af
--- /dev/null
+++ b/keyboards/helix/rev2/back/rules.mk
@@ -0,0 +1 @@
+LED_BACK_ENABLE = yes
diff --git a/keyboards/helix/rev2/config.h b/keyboards/helix/rev2/config.h
index ec744585947..fe82ce140fb 100644
--- a/keyboards/helix/rev2/config.h
+++ b/keyboards/helix/rev2/config.h
@@ -16,8 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#ifndef REV2_CONFIG_H
-#define REV2_CONFIG_H
+#pragma once
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
@@ -35,6 +34,10 @@ along with this program. If not, see .
#define USE_SERIAL
//#define USE_MATRIX_I2C
+/* Soft Serial defines */
+#define SOFT_SERIAL_PIN D2
+#define SERIAL_USE_MULTI_TRANSACTION
+
/* Select hand configuration */
#define MASTER_LEFT
// #define MASTER_RIGHT
@@ -88,7 +91,7 @@ along with this program. If not, see .
//#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no
// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
#ifdef RGBLED_BACK
- #if HELIX_ROWS == 4
+ #if MATRIX_ROWS == 8 // HELIX_ROWS == 4
#define RGBLED_NUM 25
#else
#define RGBLED_NUM 32
@@ -101,7 +104,7 @@ along with this program. If not, see .
#if RGBLED_NUM <= 6
#define RGBLIGHT_LIMIT_VAL 255
#else
- #if HELIX_ROWS == 4
+ #if MATRIX_ROWS == 8 // HELIX_ROWS == 4
#define RGBLIGHT_LIMIT_VAL 130
#else
#define RGBLIGHT_LIMIT_VAL 120
@@ -112,7 +115,7 @@ along with this program. If not, see .
#if RGBLED_NUM <= 6
#define RGBLIGHT_LIMIT_VAL 90
#else
- #if HELIX_ROWS == 4
+ #if MATRIX_ROWS == 8 // HELIX_ROWS == 4
#define RGBLIGHT_LIMIT_VAL 45
#else
#define RGBLIGHT_LIMIT_VAL 35
@@ -155,4 +158,3 @@ along with this program. If not, see .
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-#endif
diff --git a/keyboards/helix/rev2/keymaps/default/keymap.c b/keyboards/helix/rev2/keymaps/default/keymap.c
index a64eed3e72c..2f4736add82 100644
--- a/keyboards/helix/rev2/keymaps/default/keymap.c
+++ b/keyboards/helix/rev2/keymaps/default/keymap.c
@@ -53,7 +53,7 @@ enum macro_keycodes {
//Macros
#define M_SAMPLE M(KC_SAMPLEMACRO)
-#if HELIX_ROWS == 5
+#if MATRIX_ROWS == 10 // HELIX_ROWS == 5
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
@@ -183,7 +183,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-#elif HELIX_ROWS == 4
+#elif MATRIX_ROWS == 8 // HELIX_ROWS == 4
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
diff --git a/keyboards/helix/rev2/keymaps/default/readme.md b/keyboards/helix/rev2/keymaps/default/readme.md
index 2cdc5506ca0..c618c475251 100644
--- a/keyboards/helix/rev2/keymaps/default/readme.md
+++ b/keyboards/helix/rev2/keymaps/default/readme.md
@@ -108,17 +108,16 @@
see `qmk_firmware/keyboards/helix/rev2/keymaps/default/rules.mk`
```
-# Helix keyboard customize
-# you can edit follows 7 Variables
-# jp: 以下の7つの変数を必要に応じて編集します。
-HELIX_ROWS = 5 # Helix Rows is 4 or 5
-OLED_ENABLE = no # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
-LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
-LED_ANIMATIONS = yes # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
+# Helix Spacific Build Options
+# you can uncomment and edit follows 7 Variables
+# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
+# HELIX_ROWS = 5 # Helix Rows is 4 or 5
+# OLED_ENABLE = no # OLED_ENABLE
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+# LED_ANIMATIONS = yes # LED animations
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
```
## Compile
@@ -130,11 +129,24 @@ $ cd qmk_firmware
build
```
$ make helix:default
+$ make helix/rev2/back:default # with backlight
+$ make HELIX=no_ani helix/rev2/back:default # with backlight without animation
+$ make helix/rev2/under:default # with underglow
+$ make helix/rev2/oled:default # with oled
+$ make helix/rev2/oled/back:default # with oled and backlight
+$ make helix/rev2/oled/under:default # with oled and underglow
```
flash to keyboard
```
-$ make helix:default:avrdude
+$ make helix:default:flash
+$ make helix/rev2/back:default:flash # with backlight
+$ make HELIX=no_ani helix/rev2/back:default:flash # with backlight without animation
+$ make helix/rev2/under:default:flash # with underglow
+$ make helix/rev2/oled:default:flash # with oled
+$ make helix/rev2/oled/back:default:flash # with oled and backlight
+$ make helix/rev2/oled/under:default:flash # with oled and underglow
+
```
## Link
diff --git a/keyboards/helix/rev2/keymaps/default/readme_jp.md b/keyboards/helix/rev2/keymaps/default/readme_jp.md
index 3eaeab48ecf..2dfab351b0c 100644
--- a/keyboards/helix/rev2/keymaps/default/readme_jp.md
+++ b/keyboards/helix/rev2/keymaps/default/readme_jp.md
@@ -19,31 +19,6 @@
他の配列(Colemak,Dvorak)は、[readme.md](readme.md) を参照
-## コンパイルの仕方
-
-コンパイルは、qmk_firmware のトップディレクトリで行います。
-
-```
-$ cd qmk_firmware
-```
-qmk_firmwareでは各キーボードのコンパイルは、`<キーボード名>:<キーマップ名>`という指定で行います。
-
-```
-$ make helix:default
-```
-
-キーボードへの書き込みまで同時に行うには下記のように`:avrdude`を付けます。
-
-```
-$ make helix:default:avrdude
-```
-
-コンパイル結果と中間生成物を消去したい場合は以下のようにします。
-
-```
-$ make helix:default:clean
-```
-
## カスタマイズ
Helix キーボードを4行版として製作したり、オプションの OLED をつけたり、
@@ -51,17 +26,16 @@ RGB バックライトまたは、RGB Underglow をつけた場合は、
`qmk_firmware/keyboards/helix/rev2/keymaps/default/rules.mk` の以下の部分を編集して機能を有効化してください。
```
-# Helix keyboard customize
-# you can edit follows 7 Variables
-# jp: 以下の7つの変数を必要に応じて編集します。
-HELIX_ROWS = 5 # Helix Rows is 4 or 5
-OLED_ENABLE = no # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
-LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
-LED_ANIMATIONS = yes # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
+# Helix Spacific Build Options
+# you can uncomment and edit follows 7 Variables
+# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
+# HELIX_ROWS = 5 # Helix Rows is 4 or 5
+# OLED_ENABLE = no # OLED_ENABLE
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+# LED_ANIMATIONS = yes # LED animations
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
```
## 4行版Helix に対応する
@@ -103,6 +77,58 @@ RBG Underglow や RGBバックライトの輝度を抑えて、iPad, iPhone に
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
```
+## コンパイルの仕方
+
+コンパイルは、qmk_firmware のトップディレクトリで行います。
+
+```
+$ cd qmk_firmware
+```
+qmk_firmwareでは各キーボードのコンパイルは、`<キーボード名>:<キーマップ名>`という指定で行います。
+
+```
+$ make helix:default
+```
+
+キーボードへの書き込みまで同時に行うには下記のように`:flash`を付けます。
+
+```
+$ make helix:default:flash
+```
+
+コンパイル結果と中間生成物を消去したい場合は以下のようにします。
+
+```
+$ make helix:default:clean
+```
+
+上記の、rules.mk によるカスタマイズ項目の一部は下記のようにコマンド上で直接指定することも可能です。
+
+OLED を有効にしてコンパイルしてキーボードへの書き込む。
+```
+$ make helix/rev2/oled:default:flash
+```
+
+RGB バックライトを有効にしてコンパイルしてキーボードへ書き込む。
+```
+$ make helix/rev2/back:default:flash
+```
+
+RGB Underglow を有効にしてコンパイルしてキーボードへ書き込む。
+```
+$ make helix/rev2/under:default:flash
+```
+
+OLED とRGB バックライトを有効にしてコンパイルしてキーボードへ書き込む。
+```
+$ make helix/rev2/oled/back:default:flash
+```
+
+OLED とRGB Underglowを有効にしてコンパイルしてキーボードへ書き込む。
+```
+$ make helix/rev2/oled/under:default:flash
+```
+
## リンク
* さらに詳細は、[こちら helix/Doc/firmware_jp.md](https://github.com/MakotoKurauchi/helix/blob/master/Doc/firmware_jp.md)をご覧ください。
diff --git a/keyboards/helix/rev2/keymaps/default/rules.mk b/keyboards/helix/rev2/keymaps/default/rules.mk
index 37ef8632dee..6a42fcf73fc 100644
--- a/keyboards/helix/rev2/keymaps/default/rules.mk
+++ b/keyboards/helix/rev2/keymaps/default/rules.mk
@@ -1,124 +1,23 @@
-
-# Build Options
+# QMK Standard 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 = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
+# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
+# See TOP/docs/config_options.md for more information.
+#
+LINK_TIME_OPTIMIZATION_ENABLE = no # if firmware size over limit, try this option
-define HELIX_CUSTOMISE_MSG
- $(info Helix customize)
- $(info - OLED_ENABLE=$(OLED_ENABLE))
- $(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
- $(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
- $(info - LED_ANIMATION=$(LED_ANIMATIONS))
- $(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
-endef
+# Helix Spacific Build Options
+# you can uncomment and edit follows 7 Variables
+# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
+# HELIX_ROWS = 5 # Helix Rows is 4 or 5
+# OLED_ENABLE = no # OLED_ENABLE
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+# LED_ANIMATIONS = yes # LED animations
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-# Helix keyboard customize
-# you can edit follows 7 Variables
-# jp: 以下の7つの変数を必要に応じて編集します。
-HELIX_ROWS = 5 # Helix Rows is 4 or 5
-OLED_ENABLE = no # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
-LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
-LED_ANIMATIONS = yes # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-Link_Time_Optimization = no # if firmware size over limit, try this option
-
-#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
-#### Do not enable these with audio at the same time.
-
-### Helix keyboard 'default' keymap: convenient command line option
-## make HELIX= helix:defualt
-## option= oled | back | under | na | ios
-## ex.
-## make HELIX=oled helix:defualt
-## make HELIX=oled,back helix:defualt
-## make HELIX=oled,under helix:defualt
-## make HELIX=oled,back,na helix:defualt
-## make HELIX=oled,back,ios helix:defualt
-##
-ifneq ($(strip $(HELIX)),)
- ifeq ($(findstring oled,$(HELIX)), oled)
- OLED_ENABLE = yes
- endif
- ifeq ($(findstring back,$(HELIX)), back)
- LED_BACK_ENABLE = yes
- else ifeq ($(findstring under,$(HELIX)), under)
- LED_UNDERGLOW_ENABLE = yes
- endif
- ifeq ($(findstring na,$(HELIX)), na)
- LED_ANIMATIONS = no
- endif
- ifeq ($(findstring ios,$(HELIX)), ios)
- IOS_DEVICE_ENABLE = yes
- endif
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(info )
-endif
-
-# Uncomment these for checking
-# jp: コンパイル時にカスタマイズの状態を表示したい時はコメントをはずします。
-# $(eval $(call HELIX_CUSTOMISE_MSG))
-# $(info )
-
-ifneq ($(strip $(HELIX_ROWS)), 4)
- ifneq ($(strip $(HELIX_ROWS)), 5)
- $(error HELIX_ROWS = $(strip $(HELIX_ROWS)) is unexpected value)
- endif
-endif
-OPT_DEFS += -DHELIX_ROWS=$(strip $(HELIX_ROWS))
-
-ifeq ($(strip $(LED_BACK_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
- OPT_DEFS += -DRGBLED_BACK
- ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
- endif
-else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
-else
- RGBLIGHT_ENABLE = no
-endif
-
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-endif
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- OPT_DEFS += -DOLED_ENABLE
-endif
-
-ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
- OPT_DEFS += -DLOCAL_GLCDFONT
-endif
-
-ifeq ($(strip $(Link_Time_Optimization)),yes)
- EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-# Uncomment these for debugging
-# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
-# $(info -- OPT_DEFS=$(OPT_DEFS))
-# $(info )
+# convert Helix-specific options (that represent combinations of standard options)
+# into QMK standard options.
+include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk b/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk
index 4a96517eb98..e30690029bb 100644
--- a/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk
@@ -1,128 +1,38 @@
-# Build Options
+# QMK Standard 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 = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
+# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
+# See TOP/docs/config_options.md for more information.
+#
+LINK_TIME_OPTIMIZATION_ENABLE = no # if firmware size over limit, try this option
TAP_DANCE_ENABLE = yes
-define HELIX_CUSTOMISE_MSG
- $(info Helix customize)
- $(info - OLED_ENABLE=$(OLED_ENABLE))
- $(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
- $(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
- $(info - LED_ANIMATION=$(LED_ANIMATIONS))
- $(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
-endef
+# Helix Spacific Build Options
+# you can uncomment and edit follows 7 Variables
+# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
+# HELIX_ROWS = 5 # Helix Rows is 4 or 5
+# OLED_ENABLE = no # OLED_ENABLE
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" instead of "common/glcdfont.c"
+# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+# LED_ANIMATIONS = yes # LED animations
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-# Helix keyboard customize
-# you can edit follows 7 Variables
-# jp: 以下の7つの変数を必要に応じて編集します。
-HELIX_ROWS = 5 # Helix Rows is 4 or 5
-OLED_ENABLE = no # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" instead of "common/glcdfont.c"
-LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
-LED_ANIMATIONS = yes # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-Link_Time_Optimization = no # if firmware size over limit, try this option
-
-#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
-#### Do not enable these with audio at the same time.
-
-### Helix keyboard 'edvorakjp' keymap: convenient command line option
-## make HELIX= helix:edvorakjp
-## option= oled | back | under | na | ios
-## ex.
-## make HELIX=oled helix:edvorakjp
-## make HELIX=oled,back helix:edvorakjp
-## make HELIX=oled,under helix:edvorakjp
-## make HELIX=oled,back,na helix:edvorakjp
-## make HELIX=oled,back,ios helix:edvorakjp
-##
-ifneq ($(strip $(HELIX)),)
- ifeq ($(findstring oled,$(HELIX)), oled)
- OLED_ENABLE = yes
- endif
- ifeq ($(findstring back,$(HELIX)), back)
- LED_BACK_ENABLE = yes
- else ifeq ($(findstring under,$(HELIX)), under)
- LED_UNDERGLOW_ENABLE = yes
- endif
- ifeq ($(findstring na,$(HELIX)), na)
- LED_ANIMATIONS = no
- endif
- ifeq ($(findstring ios,$(HELIX)), ios)
- IOS_DEVICE_ENABLE = yes
- endif
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(info )
-endif
-
-# Uncomment these for checking
-# jp: コンパイル時にカスタマイズの状態を表示したい時はコメントをはずします。
-# $(eval $(call HELIX_CUSTOMISE_MSG))
-# $(info )
+# convert Helix-specific options (that represent combinations of standard options)
+# into QMK standard options.
+include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
ifeq ($(strip $(HELIX_ROWS)), 4)
SRC += keymap_4rows.c
else ifeq ($(strip $(HELIX_ROWS)), 5)
SRC += keymap_5rows.c
-else
- $(error HELIX_ROWS = $(strip $(HELIX_ROWS)) is unexpected value)
endif
-OPT_DEFS += -DHELIX_ROWS=$(strip $(HELIX_ROWS))
-ifeq ($(strip $(LED_BACK_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
+ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
OPT_DEFS += -DRGBLED_BACK
- ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
- endif
-else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
- OPT_DEFS += -DRGBLED_BACK
-else
- RGBLIGHT_ENABLE = no
-endif
-
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-endif
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- OPT_DEFS += -DLED_ANIMATIONS
endif
ifeq ($(strip $(OLED_ENABLE)), yes)
- OPT_DEFS += -DOLED_ENABLE
SRC += oled.c
endif
-
-ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
- OPT_DEFS += -DLOCAL_GLCDFONT
-endif
-
-ifeq ($(strip $(Link_Time_Optimization)),yes)
- EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-# Uncomment these for debugging
-# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
-# $(info -- OPT_DEFS=$(OPT_DEFS))
-# $(info )
diff --git a/keyboards/helix/rev2/keymaps/five_rows/keymap.c b/keyboards/helix/rev2/keymaps/five_rows/keymap.c
index 7b7d573d6a4..eb73881c6ba 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/keymap.c
+++ b/keyboards/helix/rev2/keymaps/five_rows/keymap.c
@@ -67,7 +67,7 @@ enum custom_keycodes {
#define KC_LSLB LSFT(KC_LBRC)
#define ___ _______
-#if HELIX_ROWS == 5
+#if MATRIX_ROWS == 10 // HELIX_ROWS == 5
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
diff --git a/keyboards/helix/rev2/keymaps/five_rows/rules.mk b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
index a0bf21917b1..fb564b6e042 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/rules.mk
+++ b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
@@ -1,131 +1,35 @@
-
-# Build Options
+# QMK Standard 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 = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-# CONSOLE_ENABLE and COMMAND_ENABLE
-# yes, no +1500
-# yes, yes +3200
-# no, yes +400
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
+# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
+# See TOP/docs/config_options.md for more information.
+#
+ CONSOLE_ENABLE = no # Console for debug
+ COMMAND_ENABLE = no # Commands for debug and configuration
+ # CONSOLE_ENABLE and COMMAND_ENABLE
+ # yes, no +1500
+ # yes, yes +3200
+ # no, yes +400
+LINK_TIME_OPTIMIZATION_ENABLE = no # if firmware size over limit, try this option
-define HELIX_CUSTOMISE_MSG
- $(info Helix customize)
- $(info - OLED_ENABLE=$(OLED_ENABLE))
- $(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
- $(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
- $(info - LED_ANIMATION=$(LED_ANIMATIONS))
- $(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
-endef
-
-# Helix keyboard customize
-# you can edit follows 7 Variables
-# jp: 以下の7つの変数を必要に応じて編集します。
+# Helix Spacific Build Options
+# you can uncomment and edit follows 7 Variables
+# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
HELIX_ROWS = 5 # Helix Rows is 4 or 5
-OLED_ENABLE = no # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
-LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
-LED_ANIMATIONS = yes # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-Link_Time_Optimization = no # if firmware size over limit, try this option
+# OLED_ENABLE = no # OLED_ENABLE
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+# LED_ANIMATIONS = yes # LED animations
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
-#### Do not enable these with audio at the same time.
-
-### Helix keyboard 'five_rows' keymap: convenient command line option
-## make HELIX= helix:five_rows
-## option= oled | back | under | na | ios
-## ex.
-## make HELIX=oled helix:five_rows
-## make HELIX=oled,back helix:five_rows
-## make HELIX=oled,under helix:five_rows
-## make HELIX=oled,back,na helix:five_rows
-## make HELIX=oled,back,ios helix:five_rows
-##
ifneq ($(strip $(HELIX)),)
- ifeq ($(findstring oled,$(HELIX)), oled)
- OLED_ENABLE = yes
- endif
- ifeq ($(findstring back,$(HELIX)), back)
- LED_BACK_ENABLE = yes
- else ifeq ($(findstring under,$(HELIX)), under)
- LED_UNDERGLOW_ENABLE = yes
- endif
- ifeq ($(findstring na,$(HELIX)), na)
- LED_ANIMATIONS = no
- endif
- ifeq ($(findstring ios,$(HELIX)), ios)
- IOS_DEVICE_ENABLE = yes
- endif
ifeq ($(findstring console,$(HELIX)), console)
CONSOLE_ENABLE = yes
endif
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(info )
endif
-# Uncomment these for checking
-# jp: コンパイル時にカスタマイズの状態を表示したい時はコメントをはずします。
-# $(eval $(call HELIX_CUSTOMISE_MSG))
-# $(info )
-
-ifneq ($(strip $(HELIX_ROWS)), 4)
-ifneq ($(strip $(HELIX_ROWS)), 5)
-$(error HELIX_ROWS = $(strip $(HELIX_ROWS)) is unexpected value)
-endif
-endif
-OPT_DEFS += -DHELIX_ROWS=$(strip $(HELIX_ROWS))
-
-ifeq ($(strip $(LED_BACK_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
- OPT_DEFS += -DRGBLED_BACK
- ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
- endif
-else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
-else
- RGBLIGHT_ENABLE = no
-endif
-
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-endif
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- OPT_DEFS += -DOLED_ENABLE
-endif
-
-ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
- OPT_DEFS += -DLOCAL_GLCDFONT
-endif
-
-ifeq ($(strip $(Link_Time_Optimization)),yes)
- EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-# Uncomment these for debugging
-# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
-# $(info -- OPT_DEFS=$(OPT_DEFS))
-# $(info )
+# convert Helix-specific options (that represent combinations of standard options)
+# into QMK standard options.
+include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c b/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c
index be76dffbe40..0dae2524d84 100644
--- a/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c
+++ b/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c
@@ -55,7 +55,7 @@ enum custom_keycodes {
#define ML_RAIE MO(_RAI_E)
#define ML_ADJ MO(_ADJUST)
-#if HELIX_ROWS == 5
+#if MATRIX_ROWS == 10 // HELIX_ROWS == 5
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty JIS Normal
* ,-----------------------------------------. ,-----------------------------------------.
diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk b/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
index 37ef8632dee..6c2057cfd6f 100644
--- a/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
+++ b/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
@@ -1,124 +1,23 @@
-
-# Build Options
+# QMK Standard 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 = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
+# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
+# See TOP/docs/config_options.md for more information.
+#
+LINK_TIME_OPTIMIZATION_ENABLE = no # if firmware size over limit, try this option
-define HELIX_CUSTOMISE_MSG
- $(info Helix customize)
- $(info - OLED_ENABLE=$(OLED_ENABLE))
- $(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
- $(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
- $(info - LED_ANIMATION=$(LED_ANIMATIONS))
- $(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
-endef
-
-# Helix keyboard customize
-# you can edit follows 7 Variables
-# jp: 以下の7つの変数を必要に応じて編集します。
+# Helix Spacific Build Options
+# you can uncomment and edit follows 7 Variables
+# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
HELIX_ROWS = 5 # Helix Rows is 4 or 5
-OLED_ENABLE = no # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
-LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
-LED_ANIMATIONS = yes # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-Link_Time_Optimization = no # if firmware size over limit, try this option
+# OLED_ENABLE = no # OLED_ENABLE
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+# LED_ANIMATIONS = yes # LED animations
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
-#### Do not enable these with audio at the same time.
-
-### Helix keyboard 'default' keymap: convenient command line option
-## make HELIX= helix:defualt
-## option= oled | back | under | na | ios
-## ex.
-## make HELIX=oled helix:defualt
-## make HELIX=oled,back helix:defualt
-## make HELIX=oled,under helix:defualt
-## make HELIX=oled,back,na helix:defualt
-## make HELIX=oled,back,ios helix:defualt
-##
-ifneq ($(strip $(HELIX)),)
- ifeq ($(findstring oled,$(HELIX)), oled)
- OLED_ENABLE = yes
- endif
- ifeq ($(findstring back,$(HELIX)), back)
- LED_BACK_ENABLE = yes
- else ifeq ($(findstring under,$(HELIX)), under)
- LED_UNDERGLOW_ENABLE = yes
- endif
- ifeq ($(findstring na,$(HELIX)), na)
- LED_ANIMATIONS = no
- endif
- ifeq ($(findstring ios,$(HELIX)), ios)
- IOS_DEVICE_ENABLE = yes
- endif
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(info )
-endif
-
-# Uncomment these for checking
-# jp: コンパイル時にカスタマイズの状態を表示したい時はコメントをはずします。
-# $(eval $(call HELIX_CUSTOMISE_MSG))
-# $(info )
-
-ifneq ($(strip $(HELIX_ROWS)), 4)
- ifneq ($(strip $(HELIX_ROWS)), 5)
- $(error HELIX_ROWS = $(strip $(HELIX_ROWS)) is unexpected value)
- endif
-endif
-OPT_DEFS += -DHELIX_ROWS=$(strip $(HELIX_ROWS))
-
-ifeq ($(strip $(LED_BACK_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
- OPT_DEFS += -DRGBLED_BACK
- ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
- endif
-else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
-else
- RGBLIGHT_ENABLE = no
-endif
-
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-endif
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- OPT_DEFS += -DOLED_ENABLE
-endif
-
-ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
- OPT_DEFS += -DLOCAL_GLCDFONT
-endif
-
-ifeq ($(strip $(Link_Time_Optimization)),yes)
- EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-# Uncomment these for debugging
-# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
-# $(info -- OPT_DEFS=$(OPT_DEFS))
-# $(info )
+# convert Helix-specific options (that represent combinations of standard options)
+# into QMK standard options.
+include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/froggy/keymap.c b/keyboards/helix/rev2/keymaps/froggy/keymap.c
index c27c1320c4e..15fe1afb0cb 100644
--- a/keyboards/helix/rev2/keymaps/froggy/keymap.c
+++ b/keyboards/helix/rev2/keymaps/froggy/keymap.c
@@ -64,7 +64,7 @@ enum macro_keycodes {
//Macros
#define M_SAMPLE M(KC_SAMPLEMACRO)
-#if HELIX_ROWS == 5
+#if MATRIX_ROWS == 10 // HELIX_ROWS == 5
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base
diff --git a/keyboards/helix/rev2/keymaps/froggy/rules.mk b/keyboards/helix/rev2/keymaps/froggy/rules.mk
index 8cd0efdd4d9..bea059ca16d 100644
--- a/keyboards/helix/rev2/keymaps/froggy/rules.mk
+++ b/keyboards/helix/rev2/keymaps/froggy/rules.mk
@@ -1,124 +1,23 @@
-
-# Build Options
+# QMK Standard 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 = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
+# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
+# See TOP/docs/config_options.md for more information.
+#
+LINK_TIME_OPTIMIZATION_ENABLE = no # if firmware size over limit, try this option
-define HELIX_CUSTOMISE_MSG
- $(info Helix customize)
- $(info - OLED_ENABLE=$(OLED_ENABLE))
- $(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
- $(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
- $(info - LED_ANIMATION=$(LED_ANIMATIONS))
- $(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
-endef
-
-# Helix keyboard customize
-# you can edit follows 7 Variables
-# jp: 以下の7つの変数を必要に応じて編集します。
+# Helix Spacific Build Options
+# you can uncomment and edit follows 7 Variables
+# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
HELIX_ROWS = 5 # Helix Rows is 4 or 5
-OLED_ENABLE = yes # OLED_ENABLE
-LOCAL_GLCDFONT = yes # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
-LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
+OLED_ENABLE = yes # OLED_ENABLE
+LOCAL_GLCDFONT = yes # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = yes # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-Link_Time_Optimization = no # if firmware size over limit, try this option
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
-#### Do not enable these with audio at the same time.
-
-### Helix keyboard 'default' keymap: convenient command line option
-## make HELIX= helix:defualt
-## option= oled | back | under | na | ios
-## ex.
-## make HELIX=oled helix:defualt
-## make HELIX=oled,back helix:defualt
-## make HELIX=oled,under helix:defualt
-## make HELIX=oled,back,na helix:defualt
-## make HELIX=oled,back,ios helix:defualt
-##
-ifneq ($(strip $(HELIX)),)
- ifeq ($(findstring oled,$(HELIX)), oled)
- OLED_ENABLE = yes
- endif
- ifeq ($(findstring back,$(HELIX)), back)
- LED_BACK_ENABLE = yes
- else ifeq ($(findstring under,$(HELIX)), under)
- LED_UNDERGLOW_ENABLE = yes
- endif
- ifeq ($(findstring na,$(HELIX)), na)
- LED_ANIMATIONS = no
- endif
- ifeq ($(findstring ios,$(HELIX)), ios)
- IOS_DEVICE_ENABLE = yes
- endif
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(info )
-endif
-
-# Uncomment these for checking
-# jp: コンパイル時にカスタマイズの状態を表示したい時はコメントをはずします。
-# $(eval $(call HELIX_CUSTOMISE_MSG))
-# $(info )
-
-ifneq ($(strip $(HELIX_ROWS)), 4)
- ifneq ($(strip $(HELIX_ROWS)), 5)
- $(error HELIX_ROWS = $(strip $(HELIX_ROWS)) is unexpected value)
- endif
-endif
-OPT_DEFS += -DHELIX_ROWS=$(strip $(HELIX_ROWS))
-
-ifeq ($(strip $(LED_BACK_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
- OPT_DEFS += -DRGBLED_BACK
- ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
- endif
-else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
-else
- RGBLIGHT_ENABLE = no
-endif
-
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-endif
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- OPT_DEFS += -DOLED_ENABLE
-endif
-
-ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
- OPT_DEFS += -DLOCAL_GLCDFONT
-endif
-
-ifeq ($(strip $(Link_Time_Optimization)),yes)
- EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-# Uncomment these for debugging
-# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
-# $(info -- OPT_DEFS=$(OPT_DEFS))
-# $(info )
+# convert Helix-specific options (that represent combinations of standard options)
+# into QMK standard options.
+include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/led_test/README.md b/keyboards/helix/rev2/keymaps/led_test/README.md
index a25f3f36fe7..2fe67064527 100644
--- a/keyboards/helix/rev2/keymaps/led_test/README.md
+++ b/keyboards/helix/rev2/keymaps/led_test/README.md
@@ -23,5 +23,5 @@ $ make helix:led_test
Execute the 'make' command and press the reset switch on the keyboard.
```
-$ make helix:led_test:avrdude
+$ make helix:led_test:flash
```
diff --git a/keyboards/helix/rev2/keymaps/led_test/rules.mk b/keyboards/helix/rev2/keymaps/led_test/rules.mk
index 2062d348d1f..fb0b5a54762 100644
--- a/keyboards/helix/rev2/keymaps/led_test/rules.mk
+++ b/keyboards/helix/rev2/keymaps/led_test/rules.mk
@@ -1,126 +1,25 @@
-
-# Build Options
+# QMK Standard 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 = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
+# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
+# See TOP/docs/config_options.md for more information.
+#
+LINK_TIME_OPTIMIZATION_ENABLE = no # if firmware size over limit, try this option
-define HELIX_CUSTOMISE_MSG
- $(info Helix customize)
- $(info - OLED_ENABLE=$(OLED_ENABLE))
- $(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
- $(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
- $(info - LED_ANIMATION=$(LED_ANIMATIONS))
- $(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
-endef
-
-# Helix keyboard customize
-# you can edit follows 7 Variables
-# jp: 以下の7つの変数を必要に応じて編集します。
-HELIX_ROWS = 5 # Helix Rows is 4 or 5
+# Helix Spacific Build Options
+# you can uncomment and edit follows 7 Variables
+# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
+# HELIX_ROWS = 5 # Helix Rows is 4 or 5
OLED_ENABLE = yes # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = yes # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-Link_Time_Optimization = no # if firmware size over limit, try this option
-
-#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
-#### Do not enable these with audio at the same time.
-
-### Helix keyboard 'default' keymap: convenient command line option
-## make HELIX= helix:defualt
-## option= oled | back | under | na | ios
-## ex.
-## make HELIX=oled helix:defualt
-## make HELIX=oled,back helix:defualt
-## make HELIX=oled,under helix:defualt
-## make HELIX=oled,back,na helix:defualt
-## make HELIX=oled,back,ios helix:defualt
-##
-ifneq ($(strip $(HELIX)),)
- ifeq ($(findstring oled,$(HELIX)), oled)
- OLED_ENABLE = yes
- endif
- ifeq ($(findstring back,$(HELIX)), back)
- LED_BACK_ENABLE = yes
- else ifeq ($(findstring under,$(HELIX)), under)
- LED_UNDERGLOW_ENABLE = yes
- endif
- ifeq ($(findstring na,$(HELIX)), na)
- LED_ANIMATIONS = no
- endif
- ifeq ($(findstring ios,$(HELIX)), ios)
- IOS_DEVICE_ENABLE = yes
- endif
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(info )
-endif
-
-# Uncomment these for checking
-# jp: コンパイル時にカスタマイズの状態を表示したい時はコメントをはずします。
-# $(eval $(call HELIX_CUSTOMISE_MSG))
-# $(info )
-
-ifneq ($(strip $(HELIX_ROWS)), 4)
- ifneq ($(strip $(HELIX_ROWS)), 5)
- $(error HELIX_ROWS = $(strip $(HELIX_ROWS)) is unexpected value)
- endif
-endif
-OPT_DEFS += -DHELIX_ROWS=$(strip $(HELIX_ROWS))
-
-ifeq ($(strip $(LED_BACK_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
- OPT_DEFS += -DRGBLED_BACK
- ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
- endif
-else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
-else
- RGBLIGHT_ENABLE = no
-endif
-
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-endif
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- OPT_DEFS += -DOLED_ENABLE
-endif
-
-ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
- OPT_DEFS += -DLOCAL_GLCDFONT
-endif
-
-ifeq ($(strip $(Link_Time_Optimization)),yes)
- EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization
-endif
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
SRC += led_test_init.c
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-# Uncomment these for debugging
-# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
-# $(info -- OPT_DEFS=$(OPT_DEFS))
-# $(info )
+# convert Helix-specific options (that represent combinations of standard options)
+# into QMK standard options.
+include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c b/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c
index 5240ac800cb..e5b5f57d970 100644
--- a/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c
+++ b/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c
@@ -49,7 +49,7 @@ enum macro_keycodes {
//Macros
#define M_SAMPLE M(KC_SAMPLEMACRO)
-#if HELIX_ROWS == 5
+#if MATRIX_ROWS == 10 // HELIX_ROWS == 5
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
@@ -158,7 +158,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-#elif HELIX_ROWS == 4
+#elif MATRIX_ROWS == 8 // HELIX_ROWS == 4
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
diff --git a/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk b/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk
index 3f390b48f86..bc823e5e12f 100644
--- a/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk
+++ b/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk
@@ -1,121 +1,24 @@
-
-# Build Options
+# QMK Standard 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 = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-
-define HELIX_CUSTOMISE_MSG
- $(info Helix customize)
- $(info - OLED_ENABLE=$(OLED_ENABLE))
- $(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
- $(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
- $(info - LED_ANIMATION=$(LED_ANIMATIONS))
- $(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
-endef
-
-# Helix keyboard customize
-# you can edit follows 7 Variables
-# jp: 以下の7つの変数を必要に応じて編集します。
-HELIX_ROWS = 4 # Helix Rows is 4 or 5
-OLED_ENABLE = yes # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
-LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
-LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
-LED_ANIMATIONS = no # LED animations
-IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
-#### Do not enable these with audio at the same time.
-
-### Helix keyboard 'default' keymap: convenient command line option
-## make HELIX= helix:defualt
-## option= oled | back | under | na | ios
-## ex.
-## make HELIX=oled helix:defualt
-## make HELIX=oled,back helix:defualt
-## make HELIX=oled,under helix:defualt
-## make HELIX=oled,back,na helix:defualt
-## make HELIX=oled,back,ios helix:defualt
-##
-ifneq ($(strip $(HELIX)),)
- ifeq ($(findstring oled,$(HELIX)), oled)
- OLED_ENABLE = yes
- endif
- ifeq ($(findstring back,$(HELIX)), back)
- LED_BACK_ENABLE = yes
- else ifeq ($(findstring under,$(HELIX)), under)
- LED_UNDERGLOW_ENABLE = yes
- endif
- ifeq ($(findstring na,$(HELIX)), na)
- LED_ANIMATIONS = no
- endif
- ifeq ($(findstring ios,$(HELIX)), ios)
- IOS_DEVICE_ENABLE = yes
- endif
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(info )
-endif
-
-# Uncomment these for checking
-# jp: コンパイル時にカスタマイズの状態を表示したい時はコメントをはずします。
-# $(eval $(call HELIX_CUSTOMISE_MSG))
-# $(info )
-
-ifneq ($(strip $(HELIX_ROWS)), 4)
- ifneq ($(strip $(HELIX_ROWS)), 5)
- $(error HELIX_ROWS = $(strip $(HELIX_ROWS)) is unexpected value)
- endif
-endif
-OPT_DEFS += -DHELIX_ROWS=$(strip $(HELIX_ROWS))
-
-ifeq ($(strip $(LED_BACK_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
- OPT_DEFS += -DRGBLED_BACK
- ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- $(eval $(call HELIX_CUSTOMISE_MSG))
- $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
- endif
-else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- RGBLIGHT_ENABLE = yes
-else
- RGBLIGHT_ENABLE = no
-endif
-
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-endif
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-ifeq ($(strip $(OLED_ENABLE)), yes)
- OPT_DEFS += -DOLED_ENABLE
-endif
-
-ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
- OPT_DEFS += -DLOCAL_GLCDFONT
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
+# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
+# See TOP/docs/config_options.md for more information.
+#
+LINK_TIME_OPTIMIZATION_ENABLE = no # if firmware size over limit, try this option
AUTO_SHIFT_ENABLE = yes
-# Uncomment these for debugging
-# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
-# $(info -- OPT_DEFS=$(OPT_DEFS))
-# $(info )
+# Helix Spacific Build Options
+# you can uncomment and edit follows 7 Variables
+# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
+HELIX_ROWS = 4 # Helix Rows is 4 or 5
+OLED_ENABLE = yes # OLED_ENABLE
+# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+LED_ANIMATIONS = no # LED animations
+# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
+
+# convert Helix-specific options (that represent combinations of standard options)
+# into QMK standard options.
+include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/local_features.mk b/keyboards/helix/rev2/local_features.mk
new file mode 100644
index 00000000000..0f4285eea95
--- /dev/null
+++ b/keyboards/helix/rev2/local_features.mk
@@ -0,0 +1,98 @@
+#
+# local_features.mk contains post-processing rules for the Helix keyboard.
+#
+# Post-processing rules convert keyboard-specific shortcuts (that represent
+# combinations of standard options) into QMK standard options.
+#
+
+define HELIX_CUSTOMISE_MSG
+ $(info Helix Spacific Build Options)
+ $(info - OLED_ENABLE = $(OLED_ENABLE))
+ $(info - LED_BACK_ENABLE = $(LED_BACK_ENABLE))
+ $(info - LED_UNDERGLOW_ENABLE = $(LED_UNDERGLOW_ENABLE))
+ $(info - LED_ANIMATION = $(LED_ANIMATIONS))
+ $(info - IOS_DEVICE_ENABLE = $(IOS_DEVICE_ENABLE))
+ $(info )
+endef
+
+ ifneq ($(strip $(HELIX)),)
+ ### Helix keyboard keymap: convenient command line option
+ ## make HELIX= helix:
+ ## option= oled | back | under | na | ios
+ ## ex.
+ ## make HELIX=oled helix:
+ ## make HELIX=oled,back helix:
+ ## make HELIX=oled,under helix:
+ ## make HELIX=oled,back,na helix:
+ ## make HELIX=oled,back,ios helix:
+ ##
+ ifeq ($(findstring oled,$(HELIX)), oled)
+ OLED_ENABLE = yes
+ endif
+ ifeq ($(findstring back,$(HELIX)), back)
+ LED_BACK_ENABLE = yes
+ else ifeq ($(findstring under,$(HELIX)), under)
+ LED_UNDERGLOW_ENABLE = yes
+ endif
+ ifeq ($(findstring na,$(HELIX)), na)
+ LED_ANIMATIONS = no
+ endif
+ ifeq ($(findstring no_ani,$(HELIX)), no_ani)
+ LED_ANIMATIONS = no
+ endif
+ ifeq ($(findstring ios,$(HELIX)), ios)
+ IOS_DEVICE_ENABLE = yes
+ endif
+ ifeq ($(findstring verbose,$(HELIX)), verbose)
+ SHOW_VERBOSE_INFO = yes
+ endif
+ SHOW_HELIX_OPTIONS = yes
+ endif
+
+########
+# convert Helix-specific options (that represent combinations of standard options)
+# into QMK standard options.
+
+ifneq ($(strip $(HELIX_ROWS)), 4)
+ ifneq ($(strip $(HELIX_ROWS)), 5)
+ $(error HELIX_ROWS = $(strip $(HELIX_ROWS)) is unexpected value)
+ endif
+endif
+OPT_DEFS += -DHELIX_ROWS=$(strip $(HELIX_ROWS))
+
+ifeq ($(strip $(LED_BACK_ENABLE)), yes)
+ RGBLIGHT_ENABLE = yes
+ OPT_DEFS += -DRGBLED_BACK
+ ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
+ $(eval $(call HELIX_CUSTOMISE_MSG))
+ $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
+ endif
+else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
+ RGBLIGHT_ENABLE = yes
+endif
+
+ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
+ OPT_DEFS += -DIOS_DEVICE_ENABLE
+endif
+
+ifeq ($(strip $(LED_ANIMATIONS)), yes)
+ OPT_DEFS += -DLED_ANIMATIONS
+endif
+
+ifeq ($(strip $(OLED_ENABLE)), yes)
+ OPT_DEFS += -DOLED_ENABLE
+endif
+
+ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
+ OPT_DEFS += -DLOCAL_GLCDFONT
+endif
+
+ifneq ($(strip $(SHOW_HELIX_OPTIONS)),)
+ $(eval $(call HELIX_CUSTOMISE_MSG))
+ ifneq ($(strip $(SHOW_VERBOSE_INFO)),)
+ $(info -- RGBLIGHT_ENABLE = $(RGBLIGHT_ENABLE))
+ $(info -- OPT_DEFS = $(OPT_DEFS))
+ $(info -- LINK_TIME_OPTIMIZATION_ENABLE = $(LINK_TIME_OPTIMIZATION_ENABLE))
+ $(info )
+ endif
+endif
diff --git a/keyboards/helix/rev2/oled/back/rules.mk b/keyboards/helix/rev2/oled/back/rules.mk
new file mode 100644
index 00000000000..066fffb74af
--- /dev/null
+++ b/keyboards/helix/rev2/oled/back/rules.mk
@@ -0,0 +1 @@
+LED_BACK_ENABLE = yes
diff --git a/keyboards/helix/rev2/oled/rules.mk b/keyboards/helix/rev2/oled/rules.mk
new file mode 100644
index 00000000000..dd68e9d3b09
--- /dev/null
+++ b/keyboards/helix/rev2/oled/rules.mk
@@ -0,0 +1 @@
+OLED_ENABLE = yes
diff --git a/keyboards/helix/rev2/oled/under/rules.mk b/keyboards/helix/rev2/oled/under/rules.mk
new file mode 100644
index 00000000000..a37aa6fab37
--- /dev/null
+++ b/keyboards/helix/rev2/oled/under/rules.mk
@@ -0,0 +1 @@
+LED_UNDERGLOW_ENABLE = yes
diff --git a/keyboards/helix/rev2/rev2.h b/keyboards/helix/rev2/rev2.h
index f4929998381..4e69daef509 100644
--- a/keyboards/helix/rev2/rev2.h
+++ b/keyboards/helix/rev2/rev2.h
@@ -1,5 +1,4 @@
-#ifndef REV2_H
-#define REV2_CONFIG_H
+#pragma once
#include "../helix.h"
@@ -18,7 +17,7 @@
#endif
#endif
-#if HELIX_ROWS == 4
+#if MATRIX_ROWS == 8 // HELIX_ROWS == 4
#ifndef FLIP_HALF
// Standard Keymap
// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
@@ -107,7 +106,7 @@
#endif
// Used to create a keymap using only KC_ prefixed keys
-#if HELIX_ROWS == 4
+#if MATRIX_ROWS == 8 // HELIX_ROWS == 4
#define LAYOUT_kc( \
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
@@ -136,5 +135,3 @@
KC_##L40, KC_##L41, KC_##L42, KC_##L43, KC_##L44, KC_##L45, KC_##L46, KC_##R46, KC_##R40, KC_##R41, KC_##R42, KC_##R43, KC_##R44, KC_##R45 \
)
#endif
-
-#endif
diff --git a/keyboards/helix/rev2/rules.mk b/keyboards/helix/rev2/rules.mk
index 5582a0f9c40..4db8f7da949 100644
--- a/keyboards/helix/rev2/rules.mk
+++ b/keyboards/helix/rev2/rules.mk
@@ -1,3 +1,21 @@
+KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))local_features.mk
+
+SRC += local_drivers/i2c.c
+SRC += local_drivers/serial.c
+SRC += local_drivers/ssd1306.c
+KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers
+
+CUSTOM_MATRIX = yes
+
SRC += rev2/matrix.c
SRC += rev2/split_util.c
SRC += rev2/split_scomm.c
+
+# Helix Spacific Build Options default values
+HELIX_ROWS = 5 # Helix Rows is 4 or 5
+OLED_ENABLE = no # OLED_ENABLE
+LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+LED_ANIMATIONS = yes # LED animations
+IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
diff --git a/keyboards/helix/rev2/under/oled/rules.mk b/keyboards/helix/rev2/under/oled/rules.mk
new file mode 100644
index 00000000000..dd68e9d3b09
--- /dev/null
+++ b/keyboards/helix/rev2/under/oled/rules.mk
@@ -0,0 +1 @@
+OLED_ENABLE = yes
diff --git a/keyboards/helix/rev2/under/rules.mk b/keyboards/helix/rev2/under/rules.mk
new file mode 100644
index 00000000000..a37aa6fab37
--- /dev/null
+++ b/keyboards/helix/rev2/under/rules.mk
@@ -0,0 +1 @@
+LED_UNDERGLOW_ENABLE = yes
diff --git a/keyboards/helix/rules.mk b/keyboards/helix/rules.mk
index 245bff70fa9..579262fe7c5 100644
--- a/keyboards/helix/rules.mk
+++ b/keyboards/helix/rules.mk
@@ -1,75 +1,37 @@
-SRC += i2c.c
-SRC += serial.c
-SRC += ssd1306.c
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Build Options
+# QMK Standard 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 = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SUBPROJECT_rev1 = no
-USE_I2C = yes
+# See TOP/docs/config_options.md for more information.
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-CUSTOM_MATRIX = yes
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
DEFAULT_FOLDER = helix/rev2
+
+HELIX_TOP_DIR := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
diff --git a/keyboards/hhkb/keymaps/tominabox1/.gitignore b/keyboards/hhkb/keymaps/tominabox1/.gitignore
new file mode 100644
index 00000000000..4b8c99bfb86
--- /dev/null
+++ b/keyboards/hhkb/keymaps/tominabox1/.gitignore
@@ -0,0 +1,3 @@
+*.h
+matrix.c
+rules.mk
diff --git a/keyboards/hhkb/keymaps/tominabox1/keymap.c b/keyboards/hhkb/keymaps/tominabox1/keymap.c
new file mode 100644
index 00000000000..d7aea977368
--- /dev/null
+++ b/keyboards/hhkb/keymaps/tominabox1/keymap.c
@@ -0,0 +1,12 @@
+#include QMK_KEYBOARD_H
+#include "tominabox1.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSPC, KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, TD(TD_SFT_CPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(2)),
+
+ [1] = LAYOUT(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, KC_CAPS, KC_MFFD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC__MUTE, KC__VOLDOWN, KC__VOLUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [2] = LAYOUT(KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS),
+
+ [3] = LAYOUT(KC_GESC, KC_EXLM, KC_EML, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGDN, KC_UP, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_TRNS)
+};
diff --git a/keyboards/hhkb/rules.mk b/keyboards/hhkb/rules.mk
index 0483a2a8784..a7a40aa6383 100644
--- a/keyboards/hhkb/rules.mk
+++ b/keyboards/hhkb/rules.mk
@@ -1,58 +1,15 @@
-
-
-# project specific files
-SRC = matrix.c
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-#OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-# as per original hasu settings
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
@@ -81,6 +38,9 @@ CUSTOM_MATRIX = yes # Custom matrix file for the HHKB
# make hhkb-keymap-clean
# make hhkb-keymap-dfu HHKB_RN42_ENABLE=yes
+# project specific files
+SRC = matrix.c
+
ifeq ($(strip $(HHKB_RN42_ENABLE)), yes)
OPT_DEFS += -DHHKB_RN42_ENABLE
diff --git a/keyboards/hid_liber/keymaps/default/rules.mk b/keyboards/hid_liber/keymaps/default/rules.mk
index 0f131bce9b2..15b7f725b26 100755
--- a/keyboards/hid_liber/keymaps/default/rules.mk
+++ b/keyboards/hid_liber/keymaps/default/rules.mk
@@ -1,33 +1 @@
-# Copyright 2013 Jun Wako
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-
-
-# QMK 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 = yes # Virtual DIP switch configuration(+1000)
-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
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
+CONSOLE_ENABLE = yes
diff --git a/keyboards/hid_liber/rules.mk b/keyboards/hid_liber/rules.mk
index 8d43488494b..3642d80742d 100755
--- a/keyboards/hid_liber/rules.mk
+++ b/keyboards/hid_liber/rules.mk
@@ -1,54 +1,15 @@
-# Project specific files
-SRC = matrix.c
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
@@ -70,3 +31,6 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+
+# Project specific files
+SRC = matrix.c
diff --git a/keyboards/hifumi/rules.mk b/keyboards/hifumi/rules.mk
index 53be9fb8abf..33c8d61784e 100644
--- a/keyboards/hifumi/rules.mk
+++ b/keyboards/hifumi/rules.mk
@@ -1,47 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
# 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
diff --git a/keyboards/hineybush/h87a/rules.mk b/keyboards/hineybush/h87a/rules.mk
index 50aac07ada8..653ec1f9a23 100644
--- a/keyboards/hineybush/h87a/rules.mk
+++ b/keyboards/hineybush/h87a/rules.mk
@@ -1,51 +1,15 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
diff --git a/keyboards/hineybush/hineyg80/rules.mk b/keyboards/hineybush/hineyg80/rules.mk
index bc370be0397..7218e1e1bf1 100644
--- a/keyboards/hineybush/hineyg80/rules.mk
+++ b/keyboards/hineybush/hineyg80/rules.mk
@@ -1,63 +1,16 @@
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
-# atmega32a bootloadHID
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
-# If you don't know the bootloader type, then you can specify the
-# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
-# Teensy halfKay 512
-# Teensy++ halfKay 1024
-# Atmel DFU loader 4096
-# LUFA bootloader 4096
-# USBaspLoader 2048
-# OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/honeycomb/rules.mk b/keyboards/honeycomb/rules.mk
index 73a6fb6f74b..05a3cff00d6 100755
--- a/keyboards/honeycomb/rules.mk
+++ b/keyboards/honeycomb/rules.mk
@@ -1,46 +1,14 @@
-# # project specific files
-SRC += matrix.c
-
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
# Build Options
@@ -61,6 +29,9 @@ NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+# # project specific files
+SRC += matrix.c
+
USB = /dev/ttyACM0
#upload: build
diff --git a/keyboards/hotdox/matrix.c b/keyboards/hotdox/matrix.c
index 11a1142d41a..605be30220e 100644
--- a/keyboards/hotdox/matrix.c
+++ b/keyboards/hotdox/matrix.c
@@ -9,9 +9,6 @@
#include "matrix.h"
#include "hotdox.h"
#include "left.h"
-#ifdef DEBUG_MATRIX_SCAN_RATE
-#include "timer.h"
-#endif
/*
* This constant define not debouncing time in msecs, but amount of matrix
@@ -41,12 +38,6 @@ static void init_cols(void);
static void unselect_rows(void);
static void select_row(uint8_t row);
-#ifdef DEBUG_MATRIX_SCAN_RATE
-uint32_t matrix_timer;
-uint32_t matrix_scan_count;
-#endif
-
-
__attribute__ ((weak))
void matrix_init_user(void) {}
@@ -90,13 +81,7 @@ void matrix_init(void)
}
}
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
-
matrix_init_quantum();
-
}
void matrix_power_up(void) {
@@ -107,11 +92,6 @@ void matrix_power_up(void) {
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
matrix[i] = 0;
}
-
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_timer = timer_read32();
- matrix_scan_count = 0;
-#endif
}
// Returns a matrix_row_t whose bits are set if the corresponding key should be
@@ -142,20 +122,6 @@ uint8_t matrix_scan(void)
{
left_scan();
-#ifdef DEBUG_MATRIX_SCAN_RATE
- matrix_scan_count++;
-
- uint32_t timer_now = timer_read32();
- if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) {
- print("matrix scan frequency: ");
- pdec(matrix_scan_count);
- print("\n");
- matrix_print();
-
- matrix_timer = timer_now;
- matrix_scan_count = 0;
- }
-#endif
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
select_row(i);
wait_us(30); // without this wait read unstable value.
diff --git a/keyboards/hotdox/rules.mk b/keyboards/hotdox/rules.mk
index f785cdd0601..be21552055c 100644
--- a/keyboards/hotdox/rules.mk
+++ b/keyboards/hotdox/rules.mk
@@ -1,63 +1,14 @@
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make = Make software.
-#
-# make clean = Clean out built project files.
-#
-# That's pretty much all you need. To compile, always go make clean,
-# followed by make.
-#
-# For advanced users only:
-# make teensy = Download the hex file to the device, using teensy_loader_cli.
-# (must have teensy_loader_cli installed).
-#
-#----------------------------------------------------------------------------
-
-# # project specific files
-SRC = matrix.c \
- i2c_master.c \
- left.c
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
# Build Options
@@ -79,4 +30,9 @@ SWAP_HANDS_ENABLE = no # Disable Onehand
RGBLIGHT_ENABLE = no
MIDI_ENABLE = no
+# project specific files
+SRC = matrix.c \
+ i2c_master.c \
+ left.c
+
LAYOUTS = ergodox
diff --git a/keyboards/hs60/v1/rules.mk b/keyboards/hs60/v1/rules.mk
index f5bcb2b0a17..13f65b6ee4f 100644
--- a/keyboards/hs60/v1/rules.mk
+++ b/keyboards/hs60/v1/rules.mk
@@ -1,46 +1,14 @@
# MCU name
MCU = atmega32u4
-# project specific files
-#SRC =
-
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = qmk-dfu
# Do not put the microcontroller into power saving mode
diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/keymap.c b/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/keymap.c
index 4db53ab0875..879c97ba7e8 100644
--- a/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/keymap.c
+++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/keymap.c
@@ -5,25 +5,24 @@ enum layer {
LAYER_FUNCTION,
};
-/* Switch to function layer when held; send menu key when tappped. */
#define LY_FUNC LT(LAYER_FUNCTION, KC_APP)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Default layer: http://www.keyboard-layout-editor.com/#/gists/dd675b40cc4df2c7bb78847ac29f5988 */
[LAYER_DEFAULT] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_HOME,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
- 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_UP, KC_END,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LY_FUNC, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ 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_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LY_FUNC, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Function layer: http://www.keyboard-layout-editor.com/#/gists/f29128427f674c43777f045e363d1b44 */
[LAYER_FUNCTION] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, _______,
- KC_CAPS, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______,
- _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______
+ KC_CAPS, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/readme.md b/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/readme.md
index 4f20c24aecb..f07cf8c1c63 100644
--- a/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/readme.md
+++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/readme.md
@@ -6,8 +6,12 @@ cluster.
## Default layer
-
+
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/dd675b40cc4df2c7bb78847ac29f5988))
## Function layer
-
+
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/f29128427f674c43777f045e363d1b44))
diff --git a/keyboards/kbdfans/kbd6x/keymaps/mekberg/config.h b/keyboards/kbdfans/kbd6x/keymaps/mekberg/config.h
new file mode 100644
index 00000000000..d29180a5aff
--- /dev/null
+++ b/keyboards/kbdfans/kbd6x/keymaps/mekberg/config.h
@@ -0,0 +1,5 @@
+#pragma once
+
+// Define some configuration for modtap behavior
+// #define TAPPING_TERM 150
+#define PERMISSIVE_HOLD
diff --git a/keyboards/kbdfans/kbd6x/keymaps/mekberg/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/mekberg/keymap.c
new file mode 100644
index 00000000000..f3be9926396
--- /dev/null
+++ b/keyboards/kbdfans/kbd6x/keymaps/mekberg/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2018 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+// #define MY_LOCK C(A(KC_L)) // Mac: Custom lock hotkey in BTT
+#define MY_LOCK C(LCMD(KC_L)) // Mac: Custom lock hotkey in BTT (when Alt/Command have been swapped in macOS)
+
+/*
+KBD6x ANSI physical layout
+1u == 8chars
+ ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+ | | | | | | | | | | | | | | | |
+ |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
+ | 1,5u | | | | | | | | | | | | | 1,5u |
+ |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
+ | 1,75u | | | | | | | | | | | | 1,25u |
+ |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
+ | 2,25u | | | | | | | | | | | 1,75u | |
+ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ | | 1,25u | | 1,25u | |
+ └────────────────────────────────────────────────────────────────────────────────────────────────────┘
+*/
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+// ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+// | | | | | | | | | | | | | | | |
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NUBS,KC_NUHS,
+// |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
+// | 1,5u | | | | | | | | | | | | | 1,5u |
+ LT(2,KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+// |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
+// | 1,75u | | | | | | | | | | | | 1,25u |
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+// |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
+// | 1,25u | | | | | | | | | | | 1,75u | |
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+// └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+// | | 1,25u | | 1,25u | |
+ XXXXXXX, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, XXXXXXX
+// └────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ ),
+
+// Fn layer, left hand free
+// F-keys, RGB controls, media controls, Keyboard functions
+ [1] = LAYOUT(
+// ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+// | | | | | | | | | | | | | | | |
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RESET,
+// |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
+// | 1,5u | | | | | | | | | | | | | 1,5u |
+ _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______,
+// |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
+// | 1,75u | | | | | | | | | | | | 1,25u |
+ KC_RCTL, KC_VOLD, KC_VOLU, KC_MUTE, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, MY_LOCK,
+// |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
+// | 1,25u | | | | | | | | | | | 1,75u | |
+ _______, BL_TOGG, BL_INC, BL_DEC, BL_STEP, _______, _______, _______, KC_MRWD, KC_MFFD, _______, _______, _______,
+// └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+// | | 1,25u | | 1,25u | |
+ XXXXXXX, _______, _______, KC_MPLY, _______, _______, XXXXXXX
+// └────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ ),
+
+// Left Tab-Hold layer, right hand free
+// Nav-keys
+ [2] = LAYOUT(
+// ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+// | | | | | | | | | | | | | | | |
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_BSPC,
+// |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
+// | 1,5u | | | | | | | | | | | | | 1,5u |
+ _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, _______, _______, KC_DEL,
+// |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
+// | 1,75u | | | | | | | | | | | | 1,25u |
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______,
+// |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
+// | 1,25u | | | | | | | | | | | 1,75u | |
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+// | | 1,25u | | 1,25u | |
+ XXXXXXX, _______, _______, _______, _______, _______, XXXXXXX
+// └────────────────────────────────────────────────────────────────────────────────────────────────────┘
+ ),
+};
diff --git a/keyboards/kbdfans/kbd6x/keymaps/mekberg/readme.md b/keyboards/kbdfans/kbd6x/keymaps/mekberg/readme.md
new file mode 100644
index 00000000000..febe2e1d68a
--- /dev/null
+++ b/keyboards/kbdfans/kbd6x/keymaps/mekberg/readme.md
@@ -0,0 +1,14 @@
+# General Information
+
+This is more or less a HHKB base layout, but with completely different Fn layers. I don't use most of the HHKB secondary key positions because, honestly, they make no sense to me at all.
+
+Fn key layer is focused mostly on keyboard firmware features (like RGB) as well as some of the necessary alternate functions. It also hold media controls, F-keys and Reset.
+
+Left Tab-Hold layer is focused on nav cluster functionality, and turns Backspace into Delete (and moves Backspace up into the top right 1u position).
+
+
+# Build instructions
+
+To simply build the firmware file: `make clean && make kbdfans/kbd6x:mekberg`
+
+To build and immediately flash: `make clean && make kbdfans/kbd6x:mekberg:dfu`
diff --git a/keyboards/kbdfans/kbd6x/keymaps/mekberg/rules.mk b/keyboards/kbdfans/kbd6x/keymaps/mekberg/rules.mk
new file mode 100644
index 00000000000..257214607e2
--- /dev/null
+++ b/keyboards/kbdfans/kbd6x/keymaps/mekberg/rules.mk
@@ -0,0 +1,2 @@
+NKRO_ENABLE = yes # USB Nkey Rollover
+CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/keebio/iris/keymaps/drashna/keymap.c b/keyboards/keebio/iris/keymaps/drashna/keymap.c
index 28783dd8af5..de19f7ca08c 100644
--- a/keyboards/keebio/iris/keymaps/drashna/keymap.c
+++ b/keyboards/keebio/iris/keymaps/drashna/keymap.c
@@ -77,11 +77,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_GAMEPAD] = LAYOUT_wrapper(
- KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_P, _______, _______, _______, _______, _______, _______,
+ KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, _______, _______, _______, _______, _______, _______,
KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______,
KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______,
KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, TG_GAME, _______, _______, _______, _______, _______, _______, _______,
- LOWER, KC_V, KC_SPC, _______, _______, _______
+ KC_GRV, KC_V, KC_SPC, _______, _______, _______
),
diff --git a/keyboards/keebio/iris/keymaps/drashna_lp/config.h b/keyboards/keebio/iris/keymaps/drashna_lp/config.h
index d59890b46a3..5370d88ed4b 100644
--- a/keyboards/keebio/iris/keymaps/drashna_lp/config.h
+++ b/keyboards/keebio/iris/keymaps/drashna_lp/config.h
@@ -21,15 +21,16 @@ along with this program. If not, see .
#include "../drashna/config.h"
#ifdef RGBLIGHT_ENABLE
-# undef RGBLED_NUM
-# define RGBLED_NUM 16 // Number of LEDs
-# undef RGBLED_SPLIT
-# define RGBLED_SPLIT { 8, 8 }
+# undef RGBLED_NUM
+# define RGBLED_NUM 16 // Number of LEDs
+# undef RGBLED_SPLIT
+# define RGBLED_SPLIT \
+ { 8, 8 }
#endif
#undef PRODUCT
#ifdef KEYBOARD_keebio_iris_rev2
-# define PRODUCT Drashna Hacked Iris LP Rev.2 (Backlit)
+# define PRODUCT Drashna Hacked Iris LP Rev .2(Backlit)
#endif
#undef SHFT_LED1
@@ -46,3 +47,5 @@ along with this program. If not, see .
#define ALT_LED1 7
#undef GUI_LED1
#define GUI_LED1 8
+
+#define DRASHNA_LP
diff --git a/keyboards/keebio/iris/keymaps/eosti/config.h b/keyboards/keebio/iris/keymaps/eosti/config.h
new file mode 100644
index 00000000000..01bb31a6e14
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/eosti/config.h
@@ -0,0 +1,28 @@
+/*
+Copyright 2017 Danny Nguyen
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+// #define USE_I2C
+#define EE_HANDS
+
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 12
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/keebio/iris/keymaps/eosti/keymap.c b/keyboards/keebio/iris/keymaps/eosti/keymap.c
new file mode 100644
index 00000000000..34f75120270
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/eosti/keymap.c
@@ -0,0 +1,101 @@
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QWERTY,
+ _GAME,
+ _UPPER,
+ _LOWER
+};
+
+enum custom_keycodes {
+ TMUX_WN = SAFE_RANGE,
+ TMUX_WL
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TMUX_WN:
+ if (record->event.pressed) {
+ SEND_STRING(SS_LCTRL("a") "n");
+ }
+ break;
+
+ case TMUX_WL:
+ if (record->event.pressed) {
+ SEND_STRING(SS_LCTRL("a") "l");
+ }
+ break;
+
+ }
+ return true;
+};
+
+#define UPPER MO(_UPPER)
+#define LOWER MO(_LOWER)
+#define GAME TG(_GAME)
+
+#define WM_R LCTL(KC_RGHT)
+#define WM_L LCTL(KC_LEFT)
+#define WM_MC LCTL(KC_UP)
+#define WEB_R LGUI(KC_RCBR)
+#define WEB_L LGUI(KC_LCBR)
+#define TMUX_ESC LCTL(KC_A)
+#define TMUX_U RALT(KC_UP)
+#define TMUX_D RALT(KC_DOWN)
+#define TMUX_R RALT(KC_RGHT)
+#define TMUX_L RALT(KC_LEFT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GRV , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ 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_LCTL, KC_RALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSPC,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ KC_LGUI, UPPER, KC_ENT, KC_SPC, LOWER, KC_NO
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+ [_GAME] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ _______, _______, KC_SPC, KC_ENT, _______, _______
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+ [_UPPER] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_TILD, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC , KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ TMUX_ESC, KC_NO, KC_NO, KC_NO, WEB_L, WEB_R, TMUX_L, TMUX_D, TMUX_U, TMUX_R, KC_NO, KC_BSLS,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, KC_NO, KC_VOLU, WM_MC, WM_L, WM_R, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_PGUP, KC_NO,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, KC_MUTE, KC_VOLD, KC_LBRC, KC_LPRN, KC_LCBR,_______, _______, KC_RCBR, KC_RPRN, KC_RBRC, KC_NO, KC_PGDN,_______,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ _______, _______, _______, _______, KC_NO, _______
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+ [_LOWER] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_NO, KC_INS, KC_HOME, KC_PGUP, KC_NO, GAME,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_SLEP, KC_DEL, KC_END, KC_PGDN, KC_NO, KC_NO,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, TMUX_WL, TMUX_WN,_______, KC_LBRC, KC_LPRN, KC_LCBR, _______, KC_RCBR, KC_RPRN, KC_RBRC, KC_NO, KC_NO, _______,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ _______, KC_NO, _______, _______, _______, _______
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ )
+};
diff --git a/keyboards/keebio/iris/keymaps/eosti/readme.md b/keyboards/keebio/iris/keymaps/eosti/readme.md
new file mode 100644
index 00000000000..0fc61a443c2
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/eosti/readme.md
@@ -0,0 +1,11 @@
+# EosTi's Iris Layout
+
+## Features
+
+- QWERTY base layer with right thumb space and left thumb enter
+- Gaming layer to swap enter and space so that WASD and space can all be on the same hand
+- MacOS navigation keys for switching windows and entering Mission Control
+- Google Chrome navigation keys for cycling tabs
+- HJKL arrow keys
+- tmux navigation keys for switching focus, panes, and the leader key
+- Probably other stuff too?
diff --git a/keyboards/keebio/iris/keymaps/eosti/rules.mk b/keyboards/keebio/iris/keymaps/eosti/rules.mk
new file mode 100644
index 00000000000..d7463419b4f
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/eosti/rules.mk
@@ -0,0 +1,2 @@
+RGBLIGHT_ENABLE = yes
+BACKLIGHT_ENABLE = yes
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
index 1f3daa85e3e..7c9699def9d 100644
--- a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
@@ -5,25 +5,24 @@ enum layer {
LAYER_FUNCTION,
};
-/* Switch to function layer when held. */
#define LY_FUNC MO(LAYER_FUNCTION)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Default layer: http://www.keyboard-layout-editor.com/#/gists/60a262432bb340b37d364a4424f3037b */
[LAYER_DEFAULT] = LAYOUT_65(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_HOME,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
- 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_UP, KC_END,
- KC_LCTL, KC_LGUI, KC_LALT, LY_FUNC, KC_SPC, KC_SPC, XXXXXXX, KC_RALT, LY_FUNC, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ 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_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, LY_FUNC, KC_SPC, KC_SPC, XXXXXXX, KC_RALT, LY_FUNC, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Function layer: http://www.keyboard-layout-editor.com/#/gists/59636898946da51f91fb290f8e078b4d */
[LAYER_FUNCTION] = LAYOUT_65(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, RGB_HUI,
- KC_CAPS, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, RGB_SAI,
- _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_SAD,
- _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_HUD,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
+ KC_CAPS, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, RGB_SAI,
+ _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_SAD,
+ _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_HUD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
),
};
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/readme.md b/keyboards/keebio/quefrency/keymaps/bcat/readme.md
index 0149d179bd3..3976bb85893 100644
--- a/keyboards/keebio/quefrency/keymaps/bcat/readme.md
+++ b/keyboards/keebio/quefrency/keymaps/bcat/readme.md
@@ -8,6 +8,10 @@ cluster, and RGB controls in the function layer on the arrow/nav keys.

+([KLE](http://www.keyboard-layout-editor.com/#/gists/60a262432bb340b37d364a4424f3037b))
+
## Function layer
-
+
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/59636898946da51f91fb290f8e078b4d))
diff --git a/keyboards/lazydesigners/dimple/keymaps/tominabox1/keymap.c b/keyboards/lazydesigners/dimple/keymaps/tominabox1/keymap.c
new file mode 100644
index 00000000000..cdaade987f1
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/keymaps/tominabox1/keymap.c
@@ -0,0 +1,109 @@
+#include QMK_KEYBOARD_H
+#include "tominabox1.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Base COLEMAK layer
+ * ,---------------------------------------------------------------.
+ * |GEsc| Q | W | F | P | G | J | L | U | Y | : | Bspc |
+ * |---------------------------------------------------------------|
+ * |Tab-Ctl| A | R | S | T | D | H | N | E | I | O |Quote|
+ * |---------------------------------------------------------------|
+ * |Shft/Cap| Z | X | C | V | B | K | M | , | Up | . |
+ * |---------------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Spc/Lwr | Spc/Rse |Left|Down|Rght|
+ * `-----------------------------------------------------'
+ */
+
+ [_BASE] = LAYOUT_wrapper(
+ __________________DIMPLE1__________________,
+ __________________DIMPLE2__________________,
+ __________________DIMPLE3L_________________,__________________DIMPLE3R_________________,
+ __________________DIMPLE4__________________
+ ),
+
+/* Lower Symbol Layer
+ * ,---------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
+ * |---------------------------------------------------------------|
+ * | Del | | | | | | | _ | + | { | } | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | ; |PgUp| ? |
+ * |---------------------------------------------------------------|
+ * | | | | | |Home|PgDn|End |
+ * `-----------------------------------------------------'
+ */
+
+ [_LOWER] = LAYOUT_wrapper(
+ _________________LOWER_1___________________,
+ _________________LOWER_2___________________,
+ _________________LOWER_3___________________,
+ _________________LOWER_4___________________
+ ),
+
+/* Raise Number Layer
+ * ,---------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bspc |
+ * |---------------------------------------------------------------|
+ * | Ins | | | | | | | - | = | [ | ] | \ |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | . | / |
+ * |---------------------------------------------------------------|
+ * |VolD|Mute|VolU| | | | | |
+ * `-----------------------------------------------------'
+ */
+
+ [_RAISE] = LAYOUT_wrapper(
+ ___________________RAISE1__________________,
+ ___________________RAISE2__________________,
+ ___________________RAISE3__________________,
+ ___________________RAISE4__________________
+
+ ),
+
+/* Adjust Layer
+ * ,---------------------------------------------------------------.
+ * |RST |EEP | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | MP | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | MODE | HUI| HUD|M_SN| | | | | | | |
+ * |---------------------------------------------------------------|
+ * |RGB-|RGB |RGB+| | | | | |
+ * `-----------------------------------------------------'
+ */
+
+ [_ADJUST] = LAYOUT_wrapper(
+ ___________________ADJST1__________________,
+ ___________________ADJST2__________________,
+ ___________________ADJST3__________________,
+ ___________________ADJST4__________________
+
+ ),
+/* Fkey Layer
+* ,---------------------------------------------------------------.
+* | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10| |
+* |---------------------------------------------------------------|
+* | | | | | | | | | | F11| F12| |
+* |---------------------------------------------------------------|
+* | | | | | | | | | | | |
+* |---------------------------------------------------------------|
+* | | | | | |FKEY| | |
+* `-----------------------------------------------------'
+*/
+
+ [_FKEY] = LAYOUT_wrapper(
+ ___________________FKEY1___________________,
+ ___________________FKEY2___________________,
+ ___________________FKEY3___________________,
+ ___________________FKEY4___________________
+ ),
+};
+
+void led_set_user(uint8_t usb_led) {
+if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+ writePinLow(E6);
+ } else {
+ writePinHigh(E6);
+ }
+}
diff --git a/keyboards/lets_split/keymaps/mekberg/README.md b/keyboards/lets_split/keymaps/mekberg/README.md
new file mode 100644
index 00000000000..5202ec83667
--- /dev/null
+++ b/keyboards/lets_split/keymaps/mekberg/README.md
@@ -0,0 +1,65 @@
+# Let's Mekberg!
+
+This is my take on a Swedish 40% layout in a split format. The priority is to have the most highly used keys opposite the modifier to make chording simpler. In other words, if the layer modifier is on the left half, the most used keys should be bound on the right half.
+
+## Layers
+
+### Default
+
+The default layer has normal alpha layout with the addition of Swedish letters, causing Enter to move down one key and backspace to take the place of the right space. The enter key also doubles as Shift when held.
+
+2nd row left modifier has been bound to both Ctrl and Tab with modtap (hold for Ctrl, tap for Tab).
+
+Delete is available on all non-default layers, positioned on the upper right corner key.
+
+### Raise
+
+The raised layer has all the symbols and special characters predefined. As much as possible, there should be no need to use additional modifiers.
+
+Arrow keys have been disabled on this layer to avoid accidental misclicks when pressing the Raise key.
+
+#### macOS / Windows variants
+
+Because macOS and Windows expect quite different keycodes to produce the same special characters (for example '{' or '|'), there are two different layers, one for each OS. To toggle either macOS (default) and Windows layouts within the RAISE layer, press SPECIAL + W for Windows or SPECIAL + M for macOS.
+
+### Lower
+
+The lower layer focuses on numbers, with a numpad-like layout on the right and F-keys in a homerow-centric layout on the left.
+
+### Special
+
+The special layer has Reset and EEP Reset keys on the left half, along with media and volume controls. On the right half it has movement keys starting in the IJKL cluster. Additionally, custom macOS Sleep and Lock Screen keys can be found on the right half on this layer.
+
+## Configuration
+
+### PERMISSIVE_HOLD
+
+This option is used because otherwise modtap functions would fail to trigger. This increases reliability for me.
+
+### USE_SERIAL
+
+N/A
+
+### EE_HANDS
+
+Prepared for EEPROM settings and different keymaps depending on USB port connected, but default master side remains left regardless.
+
+## Building
+
+Clean the build environment:
+
+```shell
+make clean
+```
+
+Build and flash left side:
+
+```shell
+make lets_split/rev2:mekberg:avrdude-split-left
+```
+
+Then do the same for the right side:
+
+```shell
+make lets_split/rev2:mekberg:avrdude-split-right
+```
diff --git a/keyboards/lets_split/keymaps/mekberg/config.h b/keyboards/lets_split/keymaps/mekberg/config.h
new file mode 100644
index 00000000000..5523ecb5a3c
--- /dev/null
+++ b/keyboards/lets_split/keymaps/mekberg/config.h
@@ -0,0 +1,34 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+// Define some configuration for modtap behavior
+// #define TAPPING_TERM 150
+#define PERMISSIVE_HOLD
+
+/* Use I2C or Serial, not both */
+#define USE_SERIAL
+// #define USE_I2C
+
+/* Select hand configuration */
+//#define MASTER_LEFT
+// #define MASTER_RIGHT
+#define EE_HANDS
diff --git a/keyboards/lets_split/keymaps/mekberg/keymap.c b/keyboards/lets_split/keymaps/mekberg/keymap.c
new file mode 100644
index 00000000000..e530623f1dd
--- /dev/null
+++ b/keyboards/lets_split/keymaps/mekberg/keymap.c
@@ -0,0 +1,228 @@
+#include QMK_KEYBOARD_H
+
+/*
+Let's Split physical layout
+1u == 8chars
+* == Homing keys
+ LEFT RIGHT
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | | | | | | | | | | | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | | * | | | | * | | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | | | | | | | | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | | | | | | | | | | |
+ `-----------------------------------------------------´ `-----------------------------------------------------'
+*/
+
+// Layers
+enum layer_names {
+ _DEFAULT,
+ _DEFAULT_MAC,
+ _DEFAULT_WIN,
+ _RAISE_MAC,
+ _RAISE_WIN,
+ _LOWER,
+ _SPECIAL,
+};
+
+#define TO_MAC TO(_DEFAULT)
+#define TO_WIN TO(_DEFAULT_WIN)
+
+#define RAISE_M MO(_RAISE_MAC)
+#define RAISE_W MO(_RAISE_WIN)
+#define LOWER MO(_LOWER)
+#define SPECIAL MO(_SPECIAL)
+
+// Modifiers
+#define SFTENT KC_SFTENT // Enter => Shift when held
+#define CTLTAB LCTL_T(KC_TAB) // Tab => Ctrl when held
+
+// ISO keycodes with Swedish layout names
+#define SE_PLUS KC_MINS // +
+#define SE_QSTM S(SE_PLUS) // Question mark
+#define SE_TCK KC_EQL // Fronttick (´)
+#define SE_BTCK S(SE_TCK) // Backtick (`)
+#define SE_UML KC_RBRC // Umlaut (¨)
+#define SE_TAK S(SE_UML) // Caret (^)
+#define SE_TILD RALT(SE_UML) // Tilde (~)
+#define SE_QUT KC_NUHS // Singlequote (')
+#define SE_DQUT S(KC_2) // Doublequote (")
+#define SE_AST S(SE_QUT) // Asterisk
+#define SE_AUML KC_QUOT // Ä
+#define SE_ARNG KC_LBRC // Å
+#define SE_OUML KC_SCLN // Ö
+#define SE_LT KC_NUBS // <
+#define SE_GT S(SE_LT) // >
+#define SE_DASH KC_SLSH // -
+#define SE_USCR S(SE_DASH) // _
+#define SE_AT RALT(KC_2) // @
+#define SE_EXCL S(KC_1) // !
+#define SE_HASH S(KC_3) // #
+#define SE_USD RALT(KC_4) // $
+#define SE_PCNT S(KC_5) // %
+#define SE_AMP S(KC_6) // &
+#define SE_EQLS S(KC_0) // =
+
+// Apple-specific layout keys
+#define AP_SLS S(KC_7) // /
+#define AP_PIPE LALT(KC_7) // |
+#define AP_BSLS A(AP_SLS) // Backslash
+#define AP_LCBR A(AP_LPAR) // {
+#define AP_RCBR A(AP_RPAR) // }
+#define AP_LBR A(KC_8) // [
+#define AP_RBR A(KC_9) // ]
+#define AP_LPAR S(KC_8) // (
+#define AP_RPAR S(KC_9) // )
+
+// Windows-specific layout keys
+#define MS_SLS S(KC_7) // /
+#define MS_PIPE RALT(SE_LT) // |
+#define MS_BSLS RALT(SE_PLUS) // Backslash
+#define MS_LCBR RALT(KC_7) // {
+#define MS_RCBR RALT(KC_0) // }
+#define MS_LBR RALT(KC_8) // [
+#define MS_RBR RALT(KC_9) // ]
+#define MS_LPAR S(KC_8) // (
+#define MS_RPAR S(KC_9) // )
+
+// My common shortcuts
+#define MY_PREV KC_MRWD // Media: Previous
+#define MY_NEXT KC_MFFD // Media: Next
+#define MY_PLAY KC_MPLY // Media: Play/Pause
+#define MY_LOCK C(A(KC_L)) // Mac: Lock
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+DEFAULT
+ Main layout for alphas and modifiers
+ Tab => Ctrl when held
+ Esc => MOVEMENT layer when held
+ Enter => Shift when held
+ LEFT RIGHT
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | Esc | Q | W | E | R | T | | Y | U | I | O | P | Å |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ |Ctrl/Tab| A | S | D | F *| G | | H |* J | K | L | Ö | Ä |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | Shift | Z | X | C | V | B | | N | M | , | . | - | Enter |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | SPECIAL| Ctrl | Alt | Cmd | LOWER | Space | | Backspc| RAISE | Left | Down | Up | Right |
+ `-----------------------------------------------------´ `-----------------------------------------------------'
+*/
+[_DEFAULT] = LAYOUT_ortho_4x12(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_ARNG,
+ CTLTAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_OUML, SE_AUML,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SE_DASH, SFTENT,
+ SPECIAL, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE_M, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/*
+DEFAULT - Windows
+ LEFT RIGHT
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | | | | | | | | | | | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | | * | | | | * | | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | | | | | | | | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | | | | | | RAISE | | | | |
+ `-----------------------------------------------------´ `-----------------------------------------------------'
+*/
+[_DEFAULT_WIN] = LAYOUT_ortho_4x12(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, RAISE_W, _______, _______, _______, _______
+),
+
+/*
+RAISE - Mac
+ This layer focuses on symbols and special characters.
+
+ LEFT RIGHT
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | | ! | ? | { | } | & | | ^ | | | ` | ´ | | Del |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | # | $ | ( | ) *| " | | ~ |* / | \ | ¨ | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | @ | % | [ | ] | ' | | | < | > | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | | | | | |XXXXXXXX| | | | |
+ `-----------------------------------------------------´ `-----------------------------------------------------'
+*/
+[_RAISE_MAC] = LAYOUT_ortho_4x12(
+ _______, SE_EXCL, SE_QSTM, AP_LCBR, AP_RCBR, SE_AMP, SE_TAK, AP_PIPE, SE_BTCK, SE_TCK, _______, KC_DEL,
+ _______, SE_HASH, SE_USD, AP_LPAR, AP_RPAR, SE_DQUT, SE_TILD, AP_SLS, AP_BSLS, SE_UML, _______, _______,
+ _______, SE_AT, SE_PCNT, AP_LBR, AP_RBR, SE_QUT, _______, SE_LT, SE_GT, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+),
+
+/*
+RAISE - Windows
+ This layer focuses on symbols and special characters.
+
+ LEFT RIGHT
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | | ! | ? | { | } | & | | ^ | | | ` | ´ | | Del |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | # | $ | ( | ) *| " | | ~ |* / | \ | ¨ | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | @ | % | [ | ] | ' | | | < | > | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | | | | | |XXXXXXXX| | | | |
+ `-----------------------------------------------------´ `-----------------------------------------------------'
+*/
+[_RAISE_WIN] = LAYOUT_ortho_4x12(
+ _______, SE_EXCL, SE_QSTM, MS_LCBR, MS_RCBR, SE_AMP, SE_TAK, MS_PIPE, SE_BTCK, SE_TCK, _______, KC_DEL,
+ _______, SE_HASH, SE_USD, MS_LPAR, MS_RPAR, SE_DQUT, SE_TILD, MS_SLS, MS_BSLS, SE_UML, _______, _______,
+ _______, SE_AT, SE_PCNT, MS_LBR, MS_RBR, SE_QUT, _______, SE_LT, SE_GT, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+),
+
+/*
+LOWER
+ This layer focuses on numbers and math.
+ LEFT RIGHT
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | | F1 | F2 | F3 | F4 | | | * | 7 | 8 | 9 | - | Del |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | F5 | F6 | F7 | F8 *| | | / |* 4 | 5 | 6 | + | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | F9 | F10 | F11 | F12 | | | / | 1 | 2 | 3 | = | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | |XXXXXXXX| | | | | 0 | . | | |
+ `-----------------------------------------------------´ `-----------------------------------------------------'
+*/
+[_LOWER] = LAYOUT_ortho_4x12(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, SE_AST, KC_7, KC_8, KC_9, SE_DASH, KC_DEL,
+ _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, AP_SLS, KC_4, KC_5, KC_6, SE_PLUS, _______,
+ _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, MS_SLS, KC_1, KC_2, KC_3, SE_EQLS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, _______, _______
+),
+
+/*
+SPECIAL
+ This layer focuses on special functions, media controls and movement keys.
+ LEFT RIGHT
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | Reset | | WIN | VolUp | | | | Ins | Home | Up | End | PgUp | Del |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ |EEPReset| | Prev | VolDn | Next *| | | |* Left | Down | Right | PgDn | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | Mute | | | | Lock | MAC | | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ |XXXXXXXX| | | | | Play | | | | | | | Sleep |
+ `-----------------------------------------------------´ `-----------------------------------------------------'
+*/
+[_SPECIAL] = LAYOUT_ortho_4x12(
+ RESET, _______, TO_WIN, KC_VOLU, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_DEL,
+ EEP_RST, _______, MY_PREV, KC_VOLD, MY_NEXT, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
+ _______, _______, _______, KC_MUTE, _______, _______, MY_LOCK, TO_MAC, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, MY_PLAY, _______, _______, _______, _______, _______, KC_SLEP
+)
+
+};
diff --git a/keyboards/lily58/keymaps/bcat/keymap.c b/keyboards/lily58/keymaps/bcat/keymap.c
index 562aad3fd04..67aa3a41438 100644
--- a/keyboards/lily58/keymaps/bcat/keymap.c
+++ b/keyboards/lily58/keymaps/bcat/keymap.c
@@ -13,6 +13,7 @@ enum layer {
#define KY_CESC LCTL_T(KC_ESC)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Default layer: http://www.keyboard-layout-editor.com/#/gists/e0eb3af65961e9fd612dcff3ddd88e4f */
[LAYER_DEFAULT] = LAYOUT(
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
@@ -21,25 +22,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, LY_LWR, KC_SPC, KC_ENT, LY_RSE, KC_RGUI, KC_APP
),
+ /* Lower layer: http://www.keyboard-layout-editor.com/#/gists/19ad0d3b5d745fbb2818db09740f5a11 */
[LAYER_LOWER] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_INS, KC_DEL, _______, _______,
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_LBRC, KC_RBRC, KC_GRV, KC_BSLS, _______, _______,
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, _______, _______, _______, KC_DEL, _______, KC_TILD, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, _______, _______, KC_INS, _______, _______, _______, KC_GRV, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, _______, _______, _______, _______, _______, _______, _______
),
+ /* Raise layer: http://www.keyboard-layout-editor.com/#/gists/912be7955f781cdaf692cc4d4c0b5823 */
[LAYER_RAISE] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- KC_PLUS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS,
- _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_HOME, KC_PGUP,
- _______, _______, KC_CAPS, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, KC_LCBR, KC_RCBR, KC_TILD, KC_PIPE, KC_END, KC_PGDN,
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_HOME, KC_PGUP,
+ _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, KC_F11, KC_F12, _______, _______, KC_END, KC_PGDN,
_______, _______, _______, _______, _______, _______, _______, _______
),
+ /* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/8f6a3f08350a9bbe1d414b22bca4e6c7 */
[LAYER_ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, EEP_RST, RESET, _______, _______, _______, _______,
+ KC_CAPS, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______,
_______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/lily58/keymaps/bcat/readme.md b/keyboards/lily58/keymaps/bcat/readme.md
new file mode 100644
index 00000000000..ac475c67603
--- /dev/null
+++ b/keyboards/lily58/keymaps/bcat/readme.md
@@ -0,0 +1,68 @@
+# bcat's Lily58 layout
+
+This split ergo layout is standard QWERTY on the default layer, with symbols on
+the lower layer, numbers/navigation on the raise layer, and media keys centered
+around the WASD cluster in the adjust (raise + lower) layer. A few general
+principles went into this layout:
+
+* The number row is optional, as are the outermost bottom row keys and the
+"extra" keys on the innnermost columns below the controllers. This will enable
+easy translation to a Crkbd or similar 40% ortho if I go that route.
+
+* Space and Enter are on the big thumb keys so they're easy to press
+(particularly with G20 or other low-profile keycaps there).
+
+* There are two shift keys because really, Right Shift is important.
+
+* Arrow keys are on VIM-style HJKL keys.
+
+* Home/End and Page Up/Page Down are easy to reach and in a square kind of like
+on the HHKB.
+
+* Navigation should be usable with just the right hand, to enable left-handed
+mousing at the same time. Additionally, Web page scrolling (Space, Shift+Space)
+should be possible with just the left hand, for writing at the same time as
+scrolling.
+
+* Escape is easy to reach because Vim.
+
+* Since most of the modifiers are on the left half, keys frequently pressed
+together with mods (e.g., numbers, function keys, etc.) are on the Raise layer
+activated by the right thumb.
+
+* Every key on a TKL has a binding.
+
+* Backspace is bound in the same place on every layer to avoid having to let go
+of layer-shift keys to fix a mistake.
+
+* Likewise, the comma and period keys are not rebound on the raise layer to
+allow typing numbers with thousand separators and decimal points without
+releasing the layer key.
+
+* Brackets and braces are on or near the home row for quick access when coding.
+
+* Other than Right Shift (sorry), modifiers aren't rebound on layers.
+
+## Default layer
+
+
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/e0eb3af65961e9fd612dcff3ddd88e4f))
+
+## Lower layer
+
+
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/19ad0d3b5d745fbb2818db09740f5a11))
+
+## Raise layer
+
+
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/912be7955f781cdaf692cc4d4c0b5823))
+
+## Adjust layer
+
+
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/8f6a3f08350a9bbe1d414b22bca4e6c7))
diff --git a/keyboards/maartenwut/plain60/keymaps/via/keymap.c b/keyboards/maartenwut/plain60/keymaps/via/keymap.c
new file mode 100644
index 00000000000..7e8cfff3541
--- /dev/null
+++ b/keyboards/maartenwut/plain60/keymaps/via/keymap.c
@@ -0,0 +1,17 @@
+#include QMK_KEYBOARD_H
+
+// 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 _MA 0
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_MA] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, \
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTRL)
+};
diff --git a/keyboards/maartenwut/plain60/keymaps/via/rules.mk b/keyboards/maartenwut/plain60/keymaps/via/rules.mk
new file mode 100644
index 00000000000..0ccefbb1194
--- /dev/null
+++ b/keyboards/maartenwut/plain60/keymaps/via/rules.mk
@@ -0,0 +1,6 @@
+# rules.mk overrides to enable VIA
+SRC += keyboards/wilba_tech/wt_main.c
+
+RAW_ENABLE = yes
+DYNAMIC_KEYMAP_ENABLE = yes
+
diff --git a/keyboards/maartenwut/plain60/rules.mk b/keyboards/maartenwut/plain60/rules.mk
index d91b0255b36..aad5598464b 100644
--- a/keyboards/maartenwut/plain60/rules.mk
+++ b/keyboards/maartenwut/plain60/rules.mk
@@ -1,4 +1,3 @@
-SRC += keyboards/wilba_tech/wt_main.c
# MCU name
MCU = atmega32u4
@@ -62,7 +61,6 @@ MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RAW_ENABLE = yes
-DYNAMIC_KEYMAP_ENABLE = yes
LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_hhkb 60_iso 60_tsangan_hhkb
+
diff --git a/keyboards/naked48/config.h b/keyboards/naked48/config.h
index b37d1022110..cfb6bf4ffcc 100644
--- a/keyboards/naked48/config.h
+++ b/keyboards/naked48/config.h
@@ -19,25 +19,3 @@ along with this program. If not, see .
#pragma once
#include "config_common.h"
-
-// GCC include 'config.h" sequence in qmk_firmware/keyboards/naked48/
-// -include keyboards/naked48/config.h
-// -include keyboards/naked48/rev?/config.h
-// -include keyboards/naked48/rev?/keymaps/MAPNAME/config.h
-// XXXX.c
-
-#include
-
-// GCC include search path in qmk_firmare/keyboards/naked48/
-// #include "..." search starts here:
-// #include <...> search starts here:
-// keyboards/naked48/rev?/keymaps/MAPNAME
-// keyboards/naked48
-// keyboards/naked48/rev?
-// .
-// ./tmk_core
-// ......
-
-// MACRO and FUNCTION are features that are depreciated.
-#define NO_ACTION_MACRO
-#define NO_ACTION_FUNCTION
diff --git a/keyboards/naked48/keymaps/default/config.h b/keyboards/naked48/keymaps/default/config.h
index ad417f7f026..a568a5f1282 100644
--- a/keyboards/naked48/keymaps/default/config.h
+++ b/keyboards/naked48/keymaps/default/config.h
@@ -18,24 +18,13 @@
/* Select hand configuration */
-#define MASTER_LEFT
+//#define MASTER_LEFT
// #define MASTER_RIGHT
// #define EE_HANDS
-#define USE_SERIAL_PD2
+//#define USE_SERIAL
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 180
-// Selection of RGBLIGHT MODE to use.
-#if defined(LED_ANIMATIONS)
- //#define RGBLIGHT_EFFECT_BREATHING
- #define RGBLIGHT_EFFECT_RAINBOW_MOOD
- #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
- //#define RGBLIGHT_EFFECT_SNAKE
- #define RGBLIGHT_EFFECT_KNIGHT
- //#define RGBLIGHT_EFFECT_CHRISTMAS
- #define RGBLIGHT_EFFECT_STATIC_GRADIENT
- //#define RGBLIGHT_EFFECT_RGB_TEST
- //#define RGBLIGHT_EFFECT_ALTERNATING
-#endif
\ No newline at end of file
+#define RGBLED_NUM 48 // Number of LEDs
\ No newline at end of file
diff --git a/keyboards/naked48/keymaps/default/keymap.c b/keyboards/naked48/keymaps/default/keymap.c
index 3229f74ecaf..91c61b5f436 100644
--- a/keyboards/naked48/keymaps/default/keymap.c
+++ b/keyboards/naked48/keymaps/default/keymap.c
@@ -21,16 +21,10 @@ enum layer_number {
};
enum custom_keycodes {
- LOWER = SAFE_RANGE,
- RAISE,
- ADJUST,
- RGBRST
+ RGB_RST = SAFE_RANGE
};
// Layer Mode aliases
-#define _____ KC_TRNS
-#define XXXXX KC_NO
-
#define KC_SNUBS S(KC_NUBS)
#define KC_SNUHS S(KC_NUHS)
@@ -43,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- ADJUST,KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
+ MO(_ADJUST),KC_LCTRL, KC_LALT, KC_LGUI,MO(_LOWER),KC_SPC,KC_SPC,MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
//`------------------------------------------------------------------------------------------------------------'
),
@@ -52,11 +46,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//,-----------------------------------------------------| |-----------------------------------------------------.
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN, KC_DEL,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- _____, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,KC_SNUHS,KC_SNUBS, _____, _____, _____,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,KC_SNUHS,KC_SNUBS, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _____, _____, _____, _____, _____, _____, _____, _____, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
//`------------------------------------------------------------------------------------------------------------'
),
@@ -65,45 +59,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//,-----------------------------------------------------| |-----------------------------------------------------.
KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- _____, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _____, _____, _____,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
),
[_ADJUST] = LAYOUT( /* Base */
//,-----------------------------------------------------| |-----------------------------------------------------.
- _____, RESET, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, _____,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, RGB_TOG, RGB_MOD, XXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____
+ _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
)
};
-static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
-
- pressed ? layer_on(layer1) : layer_off(layer1);
- IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
-}
-
int RGB_current_mode;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool result = false;
switch (keycode) {
- case LOWER:
- update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
- break;
- case RAISE:
- update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
- break;
#ifdef RGBLIGHT_ENABLE
case RGB_MOD:
if (record->event.pressed) {
@@ -112,7 +94,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
RGB_current_mode = rgblight_config.mode;
}
break;
- case RGBRST:
+ case RGB_RST:
if (record->event.pressed) {
eeconfig_update_rgblight_default();
rgblight_enable();
@@ -129,7 +111,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
void matrix_init_user(void) {
- #ifdef RGBLIGHT_ENABLE
- RGB_current_mode = rgblight_config.mode;
- #endif
+
}
+
diff --git a/keyboards/naked48/keymaps/default/readme.md b/keyboards/naked48/keymaps/default/readme.md
index 431a57340ef..a28ad8c52c8 100644
--- a/keyboards/naked48/keymaps/default/readme.md
+++ b/keyboards/naked48/keymaps/default/readme.md
@@ -1,45 +1,37 @@
# The default keymap for naked48
-Default
- //,-----------------------------------------| |-----------------------------------------.
- TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC,
- //|------+------+------+------+------+------| |------+------+------+------+------+------|
- ESC, A, S, D, F, G, H, J, K, L, ;, :,
- //|------+------+------+------+------+------| |------+------+------+------+------+------|
- LSFT, Z, X, C, V, B, N, M, ,, ., /, ENT,
- //|------+------+------+------+------+------|------+------+------+------+------+------+------|
- ADJUST, LCTRL, LALT, LGUI, LOWER, SPC, SPC, RAISE, LEFT, DOWN, UP, RIGHT
- //`----------------------------------------------------------------------------------'
+## Default
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| TAB | Q| W| E| R| T| | | Y| U| I| O| P| BSPC|
+| ESC | A| S| D| F| G| | | H| J| K| L| ;| '|
+| LSFT | Z| X| C| V| B| | | N| M| ,| .| /| ENT|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| SPC| SPC| RAISE| LEFT| DOWN| UP| RIGHT| |
-Lower
- //,-----------------------------------------| |-----------------------------------------.
- ~, !, @, #, $, %, ^, &, *, (, ), DEL,
- //|------+------+------+------+------+------| |------+------+------+------+------+------|
- DEL, F1, F2, F3, F4, F5, F6, _, +, {, }, |,
- //|------+------+------+------+------+------| |------+------+------+------+------+------|
- LSFT, F7, F8, F9, F10, F11, F12, ~, |, ,, ., ENT,
- //|------+------+------+------+------+------|------+------+------+------+------+------+------|
- ADJUST, LCTRL, LALT, LGUI, LOWER, SPC, SPC, RAISE, MNXT, VOLD, VOLU, MPLY
- //`----------------------------------------------------------------------------------'
-Raise
- //,-----------------------------------------| |-----------------------------------------.
- ~, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, DEL,
- //|------+------+------+------+------+------| |------+------+------+------+------+------|
- DEL, F1, F2, F3, F4, F5, F6, -, =, [, ], BSLS,
- //|------+------+------+------+------+------| |------+------+------+------+------+------|
- LSFT, F7, F8, F9, F10, F11, F12, #, \, ,, ., ENT,
- //|------+------+------+------+------+------|------+------+------+------+------+------+------|
- ADJUST, LCTRL, LALT, LGUI, LOWER, SPC, SPC, RAISE, MNXT, VOLD, VOLU, MPLY
- //`----------------------------------------------------------------------------------'
+## Lower
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ~| !| @| #| $| %| | | ^| &| *| (| )| DEL|
+| ESC| F1| F2| F3| F4| F5| | | F6| _| +| {| }| PIPE|
+| LSFT| F7| F8| F9| F10| F11| | | F12| SNUHS| SNUBS| ,| .| ENT|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| SPC| SPC| RAISE| MNXT| VOLD| VOLU| MPLY| |
+
+
+## Raise
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ~| 1| 2| 3| 4| 5| | | 6| 7| 8| 9| 0| DEL|
+| DEL| F1| F2| F3| F4| F5| | | F6| -| =| [| ]| BSLS|
+| LSFT| F7| F8| F9| F10| F11| | | F12| NUHS| NUBS| ,| .| ENT|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| SPC| SPC| RAISE| MNXT| VOLD| VOLU| MPLY| |
+
+
+## Adjust
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:------:|:------:|:------:|:------:|:-------:|:------:|
+| ~| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| | | RGB_RST| XXXXX| XXXXX| XXXXX| XXXXX| DEL|
+| ESC| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| | | RGB_TOG| RGB_MOD| XXXXX| C+A+D| Alt+PSCR| PSCR|
+| LSFT| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| | | RGB_VAD| RGB_VAI| RGB_HUD| RGB_HUI| RGB_SAD| RGB_SAI|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| RESET| RESET| RAISE| MNXT| VOLD| VOLU| MPLY| |
-Adjust
- //,-----------------------------------------| |----------------------------------------------.
- ~, RST, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, DEL,
- //|------+------+------+------+------+------| |------+-------+-------+-------+-------+-------|
- DEL, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, LED ON/Off,LED MOD, XXXXX, C+A+D,Alt+PSCR, PSCR,
- //|------+------+------+------+------+------| |------+-------+-------+-------+-------+-------|
- LSFT, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, LED VAD,LED VAI,LED HUD,LED HUI,LED SAD,LED SAI,
- //|------+------+------+------+------+------|------+------+------+-------+-------+-------+-------+-------|
- ADJUST, LCTRL, LALT, LGUI, LOWER, SPC, SPC, RAISE, MNXT, VOLD, VOLU, MPLY
- //`--------------------------------------------------------------------------------------'
\ No newline at end of file
diff --git a/keyboards/naked48/keymaps/default/rules.mk b/keyboards/naked48/keymaps/default/rules.mk
index ee538432e90..e69de29bb2d 100644
--- a/keyboards/naked48/keymaps/default/rules.mk
+++ b/keyboards/naked48/keymaps/default/rules.mk
@@ -1,29 +0,0 @@
-
-# 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 = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-
-# If your custom naked48 pcb, you can rewrite to yes.
-LED_ANIMATIONS = yes # LED animations
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- # OPT_DEFS += -DRGBLIGHT_ANIMATIONS
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/naked48/keymaps/default_with_nafuda/config.h b/keyboards/naked48/keymaps/default_with_nafuda/config.h
index a55856b2403..264ad08776d 100644
--- a/keyboards/naked48/keymaps/default_with_nafuda/config.h
+++ b/keyboards/naked48/keymaps/default_with_nafuda/config.h
@@ -21,44 +21,12 @@
#define MASTER_LEFT
// #define MASTER_RIGHT
// #define EE_HANDS
-
#define USE_SERIAL_PD2
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 180
-// Selection of RGBLIGHT MODE to use.
-#if defined(LED_ANIMATIONS)
- //#define RGBLIGHT_EFFECT_BREATHING
- #define RGBLIGHT_EFFECT_RAINBOW_MOOD
- #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
- //#define RGBLIGHT_EFFECT_SNAKE
- #define RGBLIGHT_EFFECT_KNIGHT
- //#define RGBLIGHT_EFFECT_CHRISTMAS
- #define RGBLIGHT_EFFECT_STATIC_GRADIENT
- //#define RGBLIGHT_EFFECT_RGB_TEST
- //#define RGBLIGHT_EFFECT_ALTERNATING
-#endif
+#define RGBLED_NUM 55 // Number of LEDs
+#define RGBLIGHT_SPLIT
+#define RGBLED_SPLIT { 48, 7 }
-#define MK_3_SPEED
-
-#undef MOUSEKEY_INTERVAL
-#define MOUSEKEY_INTERVAL 0
-
-#undef MOUSEKEY_TIME_TO_MAX
-#define MOUSEKEY_TIME_TO_MAX 150
-
-#undef MOUSEKEY_MAX_SPEED
-#define MOUSEKEY_MAX_SPEED 3
-
-#undef MOUSEKEY_MOVE_DELTA
-#define MOUSEKEY_MOVE_DELTA 5
-
-#undef MOUSEKEY_DELAY
-#define MOUSEKEY_DELAY 0
-
-#undef MOUSEKEY_WHEEL_MAX_SPEED
-#define MOUSEKEY_WHEEL_MAX_SPEED 1
-
-#undef MOUSEKEY_WHEEL_TIME_TO_MAX
-#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
diff --git a/keyboards/naked48/keymaps/default_with_nafuda/keymap.c b/keyboards/naked48/keymaps/default_with_nafuda/keymap.c
index c1a9056a98a..e4b616e70ca 100644
--- a/keyboards/naked48/keymaps/default_with_nafuda/keymap.c
+++ b/keyboards/naked48/keymaps/default_with_nafuda/keymap.c
@@ -23,125 +23,94 @@ enum layer_number {
};
enum custom_keycodes {
- MOUSE = SAFE_RANGE,
- BROWSER,
- LOWER,
- RAISE,
- ADJUST,
- RGBRST
+ RGB_RST = SAFE_RANGE
};
// Fillers to make layering more clear
-#define _____ KC_TRNS
-#define XXXXX KC_NO
-
-#define KC_CAD LCA(KC_DEL)
-#define KC_APSCR LALT(KC_PSCR)
-
#define KC_SNUBS S(KC_NUBS)
#define KC_SNUHS S(KC_NUHS)
-#define KC_RTAB LCTL(KC_TAB)
-#define KC_LTAB LCTL(LSFT(KC_TAB))
-#define KC_CTAB LCTL(KC_W)
-#define KC_RETAB LCTL(LSFT(KC_T))
-
-#define KC_TGMO TG(_MOUSE)
-#define KC_TGBR TG(_BROWSER)
#define KC_BSAD LT(_ADJUST, KC_BSPC)
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_with_nafuda(
//,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
- 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_TGMO,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, TG(_MOUSE),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- 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_BSAD, KC_UP, KC_TGBR,
+ 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_BSAD, KC_UP,TG(_BROWSER),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_LEFT, KC_DOWN,KC_RIGHT,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------|
- ADJUST,KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
+ MO(_ADJUST),KC_LCTRL, KC_LALT, KC_LGUI,MO(_LOWER),KC_SPC,KC_SPC,MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
//`------------------------------------------------------------------------------------------------------------'
),
[_MOUSE] = LAYOUT_with_nafuda(
//,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
- 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_TGMO,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, TG(_MOUSE),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
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_BTN1, KC_MS_U, KC_BTN2,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_MS_L, KC_MS_D, KC_MS_R,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------|
- ADJUST,KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
+ MO(_ADJUST),KC_LCTRL, KC_LALT, KC_LGUI,MO(_LOWER),KC_SPC,KC_SPC,MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
//`------------------------------------------------------------------------------------------------------------'
),
[_BROWSER] = LAYOUT_with_nafuda(
//,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
- 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_CTAB,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, LCTL(KC_W),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- 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_RETAB, KC_WH_U, KC_TGBR,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,LCTL(LSFT(KC_T)),KC_WH_U,TG(_BROWSER),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_LTAB, KC_WH_D, KC_RTAB,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,LCTL(LSFT(KC_TAB)), KC_WH_D,LCTL(KC_TAB),
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------|
- ADJUST,KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
+ MO(_ADJUST),KC_LCTRL, KC_LALT, KC_LGUI,MO(_LOWER),KC_SPC,KC_SPC,MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
//`------------------------------------------------------------------------------------------------------------'
),
[_LOWER] = LAYOUT_with_nafuda(
//,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN, KC_DEL, KC_TGMO,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN, KC_DEL, TG(_MOUSE),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_BSAD, KC_UP, KC_TGBR,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_BSAD, KC_UP,TG(_MOUSE),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- _____, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,KC_SNUHS,KC_SNUBS, _____, _____, _____, KC_LEFT, KC_DOWN,KC_RIGHT,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,KC_SNUHS,KC_SNUBS, _______, _______, _______, KC_LEFT, KC_DOWN,KC_RIGHT,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------|
- _____, _____, _____, _____, _____, _____, _____, _____, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
//`------------------------------------------------------------------------------------------------------------'
),
[_RAISE] = LAYOUT_with_nafuda(
//,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
- KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_TGMO,
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, TG(_MOUSE),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_BSAD, KC_UP, KC_TGBR,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_BSAD, KC_UP,TG(_MOUSE),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- _____, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _____, _____, _____, KC_LEFT, KC_DOWN,KC_RIGHT,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, KC_LEFT, KC_DOWN,KC_RIGHT,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------|
- _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
),
[_ADJUST] = LAYOUT_with_nafuda( /* Base */
//,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
- _____, RESET, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, _____, RGB_VAD,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_VAD,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, RGB_TOG, RGB_MOD, XXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR, ADJUST, RGB_SAD, RGB_VAI,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR, _ADJUST, RGB_SAD, RGB_VAI,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- _____, _____, _____, _____, _____, _____, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_MOD, RGB_TOG, RGB_SAI,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_MOD, RGB_TOG, RGB_SAI,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------|
- _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____
+ _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
)
};
-static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
-
- pressed ? layer_on(layer1) : layer_off(layer1);
- IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
-}
-
int RGB_current_mode;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool result = false;
switch (keycode) {
- case LOWER:
- update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
- break;
- case RAISE:
- update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
- break;
#ifdef RGBLIGHT_ENABLE
case RGB_MOD:
if (record->event.pressed) {
@@ -150,7 +119,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
RGB_current_mode = rgblight_config.mode;
}
break;
- case RGBRST:
+ case RGB_RST:
if (record->event.pressed) {
eeconfig_update_rgblight_default();
rgblight_enable();
@@ -167,7 +136,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
void matrix_init_user(void) {
- #ifdef RGBLIGHT_ENABLE
- RGB_current_mode = rgblight_config.mode;
- #endif
+
}
+
diff --git a/keyboards/naked48/keymaps/default_with_nafuda/readme.md b/keyboards/naked48/keymaps/default_with_nafuda/readme.md
index 780481be2e2..417b44133b2 100644
--- a/keyboards/naked48/keymaps/default_with_nafuda/readme.md
+++ b/keyboards/naked48/keymaps/default_with_nafuda/readme.md
@@ -2,38 +2,30 @@
Add Nafuda maps to the default layout.
-Default
- //|--------------------|
- Mouse,
- //|------+------+------|
- BS + Ad, UP,Browser,
- //|------+------+------|
- LEFT, DOWN, RIGHT
- //|--------------------|
+## Default
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| | MOUSE| |
+| BS+Ad| UP|Browser|
+| LEFT| DOWN| RIGHT|
-Mouse
- //|--------------------|
- Default,
- //|------+------+------|
- BTN1, MS_U, BTN2,
- //|------+------+------|
- MS_L, MS_D, MS_R
- //|--------------------|
+## Mouse
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| |Default| |
+| BTN1| MS_U| BTN2|
+| MS_L| MS_D| MS_R|
-Browser
- //|--------------------|
- CloseTAB,
- //|------+------+------|
- ReOpenTAB, WH_U,Default,
- //|------+------+------|
- LTAB, WH_D, RTAB
- //|--------------------|
+## Browser
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| |CloseTAB| |
+|ReOpenTAB|WH_U|Default|
+| LTAB| WH_D| RTAB|
-Adjust
- //|------------------------|
- LED VAD,
- //|------+----------+------|
- Default, LED HUD,LED VAI,
- //|------+----------+------|
- LED MOD,LED ON/Off,LED HUI
- //|------------------------|
+## Adjust
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| |LED_VAD| |
+|Default|LED_HUD|LED_VAI|
+|LED_MOD|LED_ON/Off|LED_HUI|
diff --git a/keyboards/naked48/keymaps/default_with_nafuda/rules.mk b/keyboards/naked48/keymaps/default_with_nafuda/rules.mk
index dd471767a7f..f76b955efde 100644
--- a/keyboards/naked48/keymaps/default_with_nafuda/rules.mk
+++ b/keyboards/naked48/keymaps/default_with_nafuda/rules.mk
@@ -1,29 +1 @@
-
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-
-# If your custom naked48 pcb, you can rewrite to yes.
-LED_ANIMATIONS = yes # LED animations
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- # OPT_DEFS += -DRGBLIGHT_ANIMATIONS
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/naked48/keymaps/default_with_setta21/config.h b/keyboards/naked48/keymaps/default_with_setta21/config.h
index ad417f7f026..1e86c6bb729 100644
--- a/keyboards/naked48/keymaps/default_with_setta21/config.h
+++ b/keyboards/naked48/keymaps/default_with_setta21/config.h
@@ -21,21 +21,11 @@
#define MASTER_LEFT
// #define MASTER_RIGHT
// #define EE_HANDS
-
#define USE_SERIAL_PD2
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 180
-// Selection of RGBLIGHT MODE to use.
-#if defined(LED_ANIMATIONS)
- //#define RGBLIGHT_EFFECT_BREATHING
- #define RGBLIGHT_EFFECT_RAINBOW_MOOD
- #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
- //#define RGBLIGHT_EFFECT_SNAKE
- #define RGBLIGHT_EFFECT_KNIGHT
- //#define RGBLIGHT_EFFECT_CHRISTMAS
- #define RGBLIGHT_EFFECT_STATIC_GRADIENT
- //#define RGBLIGHT_EFFECT_RGB_TEST
- //#define RGBLIGHT_EFFECT_ALTERNATING
-#endif
\ No newline at end of file
+#define RGBLED_NUM 69 // Number of LEDs
+#define RGBLIGHT_SPLIT
+#define RGBLED_SPLIT { 48, 21 }
diff --git a/keyboards/naked48/keymaps/default_with_setta21/keymap.c b/keyboards/naked48/keymaps/default_with_setta21/keymap.c
index 32d56a508d4..26278b79b8d 100644
--- a/keyboards/naked48/keymaps/default_with_setta21/keymap.c
+++ b/keyboards/naked48/keymaps/default_with_setta21/keymap.c
@@ -21,114 +21,87 @@ enum layer_number {
};
enum custom_keycodes {
- LOWER = SAFE_RANGE,
- RAISE,
- ADJUST,
- KANJI,
- RGBRST,
+ RGB_RST = SAFE_RANGE,
SEND_SUM,
- SEND_AVERAGE,
- SEND_COUNTIF,
+ SEND_AVE,
+ SEND_CIF,
SEND_MAX,
SEND_MIN
};
// Fillers to make layering more clear
-#define _____ KC_TRNS
-#define XXXXX KC_NO
-
#define KC_SNUBS S(KC_NUBS)
#define KC_SNUHS S(KC_NUHS)
-#define KC_SSUM SEND_SUM
-#define KC_SAVE SEND_AVERAGE
-#define KC_SCOU SEND_COUNTIF
-#define KC_SMAX SEND_MAX
-#define KC_SMIN SEND_MIN
-
#define KC_RADO LT(_RAISE, KC_PDOT)
#define KC_LOP0 LT(_LOWER, KC_P0)
-#define KC_ADNL LT(_ADJUST, KC_NLCK)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_with_setta21(
//,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
- 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_LOP0, KC_P1, KC_P4, KC_P7,KC_ADNL, KC_ESC,
+ 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_LOP0, KC_P1, KC_P4, KC_P7,KC_NLCK, KC_ESC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
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_P2, KC_P5, KC_P8,KC_PSLS, KC_F2,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_RADO, KC_P3, KC_P6, KC_P9,KC_PAST, KC_EQL,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
- ADJUST,KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL
+ MO(_ADJUST),KC_LCTRL, KC_LALT, KC_LGUI,MO(_LOWER), KC_SPC, KC_SPC,MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL
//`------------------------------------------------------------------------------------------------------------' |-----------------------------------------------|
),
[_LOWER] = LAYOUT_with_setta21(
- //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN, KC_DEL, LOWER, XXXXX,KC_LEFT, XXXXX, XXXXX, KC_ESC,
- //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_DOWN,KC_DOWN, KC_UP,KC_PSLS, KC_F2,
- //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
- _____, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,KC_SNUHS,KC_SNUBS, _____, _____, _____, RAISE, XXXXX,KC_RIGHT, XXXXX,KC_PAST, KC_EQL,
- //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
- _____, _____, _____, _____, _____, _____, _____, _____, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL
- //`------------------------------------------------------------------------------------------------------------' |-----------------------------------------------|
+ //,-----------------------------------------------------| |-----------------------------------------------------. |------------------------------------------------|
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN, KC_DEL, MO(_LOWER),XXXXXXX,KC_LEFT, XXXXXXX,XXXXXXX, KC_ESC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+--------+-------+-------|
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_DOWN,KC_DOWN, KC_UP,KC_PSLS, KC_F2,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+--------+-------+-------|
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,KC_SNUHS,KC_SNUBS, _______, _______, _______, MO(_RAISE),XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST, KC_EQL,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |---------------+----------------+-------+-------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL
+ //`------------------------------------------------------------------------------------------------------------' |------------------------------------------------|
),
[_RAISE] = LAYOUT_with_setta21(
- //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
- KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, LOWER, KC_F11, KC_F4, KC_F7,KC_SMIN, KC_ESC,
- //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_F12, KC_F5, KC_F8,KC_SMAX, KC_F2,
- //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
- _____, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _____, _____, _____, RAISE, KC_F3, KC_F6, KC_F9,KC_SCOU, KC_EQL,
- //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
- _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, KC_RPRN, KC_SSUM,KC_SAVE, KC_DEL
- //`------------------------------------------------------------------------------------------------------------' |-----------------------------------------------|
+ //,-----------------------------------------------------| |-----------------------------------------------------. |------------------------------------------------|
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, _______, KC_F11, KC_F4, KC_F7,SEND_MIN, KC_ESC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+--------+-------|
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_F12, KC_F5, KC_F8,SEND_MAX, KC_F2,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+--------+-------|
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, _______, KC_F3, KC_F6, KC_F9,SEND_CIF, KC_EQL,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |---------------+---------------+--------+-------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RPRN, SEND_SUM,SEND_AVE, KC_DEL
+ //`------------------------------------------------------------------------------------------------------------' |------------------------------------------------|
),
[_ADJUST] = LAYOUT_with_setta21( /* Base */
//,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
- _____, RESET, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, _____, LOWER,RGB_VAD,RGB_HUD,RGB_SAD, ADJUST,RGB_TOG,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______,RGB_VAD,RGB_HUD,RGB_SAD,XXXXXXX,_______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
- _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, RGB_TOG, RGB_MOD, XXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR, RGB_VAI,RGB_HUI,RGB_SAI, XXXXX, _____,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR, RGB_VAI,RGB_HUI,RGB_SAI,XXXXXXX,_______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
- _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RAISE, XXXXX, XXXXX, XXXXX, XXXXX, _____,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
- _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, RGB_MOD, _____, _____, _____
+ _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______, RGB_MOD, RGB_TOG,_______,_______
//`------------------------------------------------------------------------------------------------------------' |-----------------------------------------------|
)
};
-static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
-
- pressed ? layer_on(layer1) : layer_off(layer1);
- IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
-}
-
int RGB_current_mode;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-
bool result = false;
switch (keycode) {
- case LOWER:
- update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
- break;
- case RAISE:
- update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
- break;
case SEND_SUM:
if (record->event.pressed) {
SEND_STRING("=SUM(");
}
break;
- case SEND_AVERAGE:
+ case SEND_AVE:
if (record->event.pressed) {
SEND_STRING("=AVERAGE(");
}
break;
- case SEND_COUNTIF:
+ case SEND_CIF:
if (record->event.pressed) {
SEND_STRING("=COUNTIF(");
}
@@ -151,7 +124,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
RGB_current_mode = rgblight_config.mode;
}
break;
- case RGBRST:
+ case RGB_RST:
if (record->event.pressed) {
eeconfig_update_rgblight_default();
rgblight_enable();
@@ -168,7 +141,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
void matrix_init_user(void) {
- #ifdef RGBLIGHT_ENABLE
- RGB_current_mode = rgblight_config.mode;
- #endif
+
}
diff --git a/keyboards/naked48/keymaps/default_with_setta21/readme.md b/keyboards/naked48/keymaps/default_with_setta21/readme.md
index 921c1e49500..365219739f4 100644
--- a/keyboards/naked48/keymaps/default_with_setta21/readme.md
+++ b/keyboards/naked48/keymaps/default_with_setta21/readme.md
@@ -2,46 +2,43 @@
Add Setta21 maps to the default layout.
-Default
- //|-----------------------------------------|
- Rai+0, 1, 4, 7,Ad+Num, ESC,
- //|------+------+------+------+------+------|
- 2, 5, 8, /, F2,
- //|------+------+------+------+------+------|
- Low+., 3, 6, 9, *, =,
- //|-------------+-------------+------+------|
- ENT, +, -, DEL
- //|-----------------------------------------|
+## Default
+| 1 | 2 | 3 | 4 |
+|:----:|:----:|:----:|:----:|
+| ESC| F2| =| DEL|
+|Ad+Num| /| *| -|
+| 7| 8| 9| |
+| 4| 5| 6| +|
+| 1| 2| 3| |
+| Rai+0| | LOW + .| ENT|
-Lower
- //|-----------------------------------------|
- RAISE, F11, F4, F7, "=MIN(", ESC,
- //|------+------+------+------+-----------+------|
- F12, F5, F8, "=MAX(", F2,
- //|------+------+------+------+-----------+------|
- LOWER, F3, F6, F9,"=COUNTIF(", =,
- //|-------------+-------------+-----------+------|
- ), "=SUM(","=AVERAGE(", DEL
- //|-----------------------------------------|
+## Lower
+| 1 | 2 | 3 | 4 |
+|:----:|:----:|:----:|:----:|
+| ESC| F2| =| DEL|
+| =MIN(| =MAX(|=COUNTIF(|=AVERAGE(|
+| F7| F8| F9| |
+| F4| F5| F6| =SUM(|
+| F11| F12| F3| |
+| RAISE| | LOWER| )|
-Raise
- //|-----------------------------------------|
- RAISE, XXXXX, LEFT, XXXXX, XXXXX, ESC,
- //|------+------+------+------+------+------|
- DOWN, DOWN, UP, /, F2,
- //|------+------+------+------+------+------|
- LOWER, XXXXX, RIGHT, XXXXX, *, =,
- //|-------------+-------------+------+------|
- ENT, +, -, DEL
- //|-----------------------------------------|
+## Raise
+| 1 | 2 | 3 | 4 |
+|:----:|:----:|:----:|:----:|
+| ESC| F2| =| DEL|
+| XXXXX| /| *| -|
+| XXXXX| UP| XXXXX| |
+| LEFT| DOWN| RIGHT| +|
+| XXXXX| DOWN| XXXXX| |
+| RAISE| | LOWER| ENT|
+
+## Adjust
+| 1 | 2 | 3 | 4 |
+|:----:|:----:|:----:|:----:|
+| ESC| F2| =| DEL|
+|ADJUST| XXXXX| XXXXX| -|
+|LED_SAD|LED_SAI| XXXXX| |
+|LED_HUD|LED_HUI| XXXXX| +|
+|LED_VAD|LED_VAI| XXXXX| |
+|LED_ON/Off| | XXXXX|LED_MOD|
-Adjust
- //|------------------------------------------------|
- LED ON/Off,LED VAD,LED HUD,LED SAD, ADJUST, ESC,
- //|--------+-------+-------+-------+-------+-------|
- LED VAI,LED HUI,LED SAI, XXXXX, F2,
- //|--------+-------+-------+-------+-------+-------|
- XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, =,
- //|----------------+---------------+-------+-------|
- LED MOD, +, -, DEL
- //|------------------------------------------------|
diff --git a/keyboards/naked48/keymaps/default_with_setta21/rules.mk b/keyboards/naked48/keymaps/default_with_setta21/rules.mk
index ee538432e90..e69de29bb2d 100644
--- a/keyboards/naked48/keymaps/default_with_setta21/rules.mk
+++ b/keyboards/naked48/keymaps/default_with_setta21/rules.mk
@@ -1,29 +0,0 @@
-
-# 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 = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-
-# If your custom naked48 pcb, you can rewrite to yes.
-LED_ANIMATIONS = yes # LED animations
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- # OPT_DEFS += -DRGBLIGHT_ANIMATIONS
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/naked48/keymaps/salicylic/config.h b/keyboards/naked48/keymaps/salicylic/config.h
index ad417f7f026..5eceec73b0c 100644
--- a/keyboards/naked48/keymaps/salicylic/config.h
+++ b/keyboards/naked48/keymaps/salicylic/config.h
@@ -18,24 +18,23 @@
/* Select hand configuration */
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-#define USE_SERIAL_PD2
-
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 180
-// Selection of RGBLIGHT MODE to use.
-#if defined(LED_ANIMATIONS)
- //#define RGBLIGHT_EFFECT_BREATHING
- #define RGBLIGHT_EFFECT_RAINBOW_MOOD
- #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
- //#define RGBLIGHT_EFFECT_SNAKE
- #define RGBLIGHT_EFFECT_KNIGHT
- //#define RGBLIGHT_EFFECT_CHRISTMAS
- #define RGBLIGHT_EFFECT_STATIC_GRADIENT
- //#define RGBLIGHT_EFFECT_RGB_TEST
- //#define RGBLIGHT_EFFECT_ALTERNATING
-#endif
\ No newline at end of file
+#define DRIVER_LED_TOTAL 48
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
+// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
+// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
+// # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
+# define RGB_MATRIX_HUE_STEP 8
+# define RGB_MATRIX_SAT_STEP 8
+# define RGB_MATRIX_LIMIT_VAL 50
+# define RGB_MATRIX_VAL_STEP 5
+# define RGB_MATRIX_SPD_STEP 10
+#endif
+
diff --git a/keyboards/naked48/keymaps/salicylic/keymap.c b/keyboards/naked48/keymaps/salicylic/keymap.c
index 99c95cb0215..995e8bd298d 100644
--- a/keyboards/naked48/keymaps/salicylic/keymap.c
+++ b/keyboards/naked48/keymaps/salicylic/keymap.c
@@ -3,10 +3,11 @@
extern keymap_config_t keymap_config;
-#ifdef RGBLIGHT_ENABLE
+//#ifdef RGB_MATRIX_ENABLE
//Following line allows macro to read current RGB settings
-extern rgblight_config_t rgblight_config;
-#endif
+//extern rgblight_config_t rgblight_config;
+
+//#endif
extern uint8_t is_master;
@@ -22,17 +23,10 @@ enum layer_number {
};
enum custom_keycodes {
- LOWER = SAFE_RANGE,
- RAISE,
- ADJUST,
- KANJI,
- RGBRST
+ RGB_RST = SAFE_RANGE
};
// Fillers to make layering more clear
-#define _____ KC_TRNS
-#define XXXXX KC_NO
-
#define KC_CT11 LCTL_T(KC_F11)
#define KC_SF12 SFT_T(KC_F12)
#define KC_LOEN LT(_LOWER, KC_ENT)
@@ -56,44 +50,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//,-----------------------------------------------------| |-----------------------------------------------------.
KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL,
+ JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _____, _____, _____, KC_ZKHK, LOWER, _____, _____, RAISE, KC_0, JP_DOT, _____, _____
+ _______, _______, _______, KC_ZKHK,MO(_LOWER),_______,_______,MO(_RAISE),JP_DOT, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
),
[_RAISE] = LAYOUT(
//,-----------------------------------------------------| |-----------------------------------------------------.
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXX, KC_UP, XXXXX, KC_PGUP, KC_DEL,
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, KC_DEL,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_CT11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT, KC_ENT,
+ KC_CT11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT, KC_ENT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_SF12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXX, XXXXX, XXXXX, XXXXX, KC_PGDN, XXXXX,
+ KC_SF12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
),
[_ADJUST] = LAYOUT( /* Base */
//,-----------------------------------------------------| |-----------------------------------------------------.
- _____, _____, _____, _____, _____, _____, _____, KC_7, KC_8, KC_9, KC_0, _____,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- _____, _____, _____, _____, _____, _____, RGB_TOG, RGB_MOD, XXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR,
+ KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- _____, _____, _____, _____, _____, _____, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI,
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____
+ _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
)
};
-static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
-
- pressed ? layer_on(layer1) : layer_off(layer1);
- IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}
int RGB_current_mode;
@@ -101,23 +93,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool result = false;
switch (keycode) {
- case LOWER:
- update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
- break;
- case RAISE:
- update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
- break;
- case KANJI:
- if (record->event.pressed) {
- if (keymap_config.swap_lalt_lgui == false) {
- register_code(KC_LANG2);
- } else {
- SEND_STRING(SS_LALT("`"));
- }
- } else {
- unregister_code(KC_LANG2);
- }
- break;
#ifdef RGBLIGHT_ENABLE
case RGB_MOD:
if (record->event.pressed) {
@@ -143,7 +118,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
void matrix_init_user(void) {
- #ifdef RGBLIGHT_ENABLE
- RGB_current_mode = rgblight_config.mode;
- #endif
+
}
+
diff --git a/keyboards/naked48/keymaps/salicylic/rules.mk b/keyboards/naked48/keymaps/salicylic/rules.mk
index ee538432e90..be8d10c9a64 100644
--- a/keyboards/naked48/keymaps/salicylic/rules.mk
+++ b/keyboards/naked48/keymaps/salicylic/rules.mk
@@ -1,29 +1,3 @@
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = WS2812
-# 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 = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-
-# If your custom naked48 pcb, you can rewrite to yes.
-LED_ANIMATIONS = yes # LED animations
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- # OPT_DEFS += -DRGBLIGHT_ANIMATIONS
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/naked48/keymaps/salicylic_with_nafuda/config.h b/keyboards/naked48/keymaps/salicylic_with_nafuda/config.h
index a55856b2403..a2ce42ea526 100644
--- a/keyboards/naked48/keymaps/salicylic_with_nafuda/config.h
+++ b/keyboards/naked48/keymaps/salicylic_with_nafuda/config.h
@@ -27,38 +27,7 @@
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 180
-// Selection of RGBLIGHT MODE to use.
-#if defined(LED_ANIMATIONS)
- //#define RGBLIGHT_EFFECT_BREATHING
- #define RGBLIGHT_EFFECT_RAINBOW_MOOD
- #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
- //#define RGBLIGHT_EFFECT_SNAKE
- #define RGBLIGHT_EFFECT_KNIGHT
- //#define RGBLIGHT_EFFECT_CHRISTMAS
- #define RGBLIGHT_EFFECT_STATIC_GRADIENT
- //#define RGBLIGHT_EFFECT_RGB_TEST
- //#define RGBLIGHT_EFFECT_ALTERNATING
-#endif
+#define RGBLED_NUM 55 // Number of LEDs
+#define RGBLIGHT_SPLIT
+#define RGBLED_SPLIT { 48, 7 }
-#define MK_3_SPEED
-
-#undef MOUSEKEY_INTERVAL
-#define MOUSEKEY_INTERVAL 0
-
-#undef MOUSEKEY_TIME_TO_MAX
-#define MOUSEKEY_TIME_TO_MAX 150
-
-#undef MOUSEKEY_MAX_SPEED
-#define MOUSEKEY_MAX_SPEED 3
-
-#undef MOUSEKEY_MOVE_DELTA
-#define MOUSEKEY_MOVE_DELTA 5
-
-#undef MOUSEKEY_DELAY
-#define MOUSEKEY_DELAY 0
-
-#undef MOUSEKEY_WHEEL_MAX_SPEED
-#define MOUSEKEY_WHEEL_MAX_SPEED 1
-
-#undef MOUSEKEY_WHEEL_TIME_TO_MAX
-#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
diff --git a/keyboards/naked48/keymaps/salicylic_with_nafuda/keymap.c b/keyboards/naked48/keymaps/salicylic_with_nafuda/keymap.c
index 1551b82631b..dbb1797cee2 100644
--- a/keyboards/naked48/keymaps/salicylic_with_nafuda/keymap.c
+++ b/keyboards/naked48/keymaps/salicylic_with_nafuda/keymap.c
@@ -24,43 +24,24 @@ enum layer_number {
};
enum custom_keycodes {
- MOUSE = SAFE_RANGE,
- BROWSER,
- LOWER,
- RAISE,
- ADJUST,
- KANJI,
- RGBRST
+ RGB_RST = SAFE_RANGE
};
// Fillers to make layering more clear
-#define _____ KC_TRNS
-#define XXXXX KC_NO
-
#define KC_CT11 LCTL_T(KC_F11)
#define KC_SF12 SFT_T(KC_F12)
-
#define KC_LOEN LT(_LOWER, KC_ENT)
#define KC_RASP LT(_RAISE, KC_SPC)
-#define KC_CAD LCA(KC_DEL)
-#define KC_APSCR LALT(KC_PSCR)
-#define KC_RTAB LCTL(KC_TAB)
-#define KC_LTAB LCTL(LSFT(KC_TAB))
-#define KC_CTAB LCTL(KC_W)
-#define KC_RETAB LCTL(LSFT(KC_T))
-
-#define KC_TGMO TG(_MOUSE)
-#define KC_TGBR TG(_BROWSER)
#define KC_BSAD LT(_ADJUST, KC_BSPC)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_with_nafuda(
//,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, KC_TGMO,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, TG(_MOUSE),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_RBRC, KC_BSAD, KC_UP, KC_TGBR,
+ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_RBRC, KC_BSAD, KC_UP,TG(_BROWSER),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_LEFT, KC_DOWN,KC_RIGHT,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------|
@@ -70,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MOUSE] = LAYOUT_with_nafuda(
//,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, KC_TGMO,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, TG(_MOUSE),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_RBRC, KC_BTN1, KC_MS_U, KC_BTN2,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
@@ -82,11 +63,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BROWSER] = LAYOUT_with_nafuda(
//,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, KC_CTAB,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, LCTL(KC_W),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_RBRC, KC_RETAB, KC_WH_U, KC_TGBR,
+ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_RBRC,LCTL(LSFT(KC_T)),KC_WH_U,TG(_BROWSER),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_LTAB, KC_WH_D, KC_RTAB,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS,LCTL(LSFT(KC_TAB)), KC_WH_D,LCTL(KC_TAB),
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------|
KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN, KC_LOEN, KC_BSPC, KC_DEL, KC_RASP, KC_HENK, KC_LALT, KC_DOWN, KC_UP
//`------------------------------------------------------------------------------------------------------------'
@@ -94,45 +75,43 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT_with_nafuda(
//,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
- KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, KC_TGMO,
+ KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, TG(_MOUSE),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, KC_BSAD, KC_UP, KC_TGBR,
+ JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, KC_BSAD, KC_UP,TG(_BROWSER),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT, KC_LEFT, KC_DOWN,KC_RIGHT,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------|
- _____, _____, _____, KC_ZKHK, LOWER, _____, _____, RAISE, KC_0, JP_DOT, _____, _____
+ _______, _______, _______, KC_ZKHK,MO(_LOWER),_______,_______,MO(_RAISE),JP_DOT, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
),
[_RAISE] = LAYOUT_with_nafuda(
//,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
- KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, KC_TGMO,
+ KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, TG(_MOUSE),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- KC_CT11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT, KC_ENT, KC_BSAD, KC_UP, KC_TGBR,
+ KC_CT11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT, KC_ENT, KC_BSAD, KC_UP,TG(_BROWSER),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- KC_SF12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXX, XXXXX, XXXXX, XXXXX, KC_PGDN, XXXXX, KC_LEFT, KC_DOWN,KC_RIGHT,
+ KC_SF12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------|
- _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
),
[_ADJUST] = LAYOUT_with_nafuda( /* Base */
//,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
- _____, _____, _____, _____, _____, _____, _____, KC_7, KC_8, KC_9, KC_0, _____, RGB_VAD,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_VAD,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- _____, _____, _____, _____, _____, _____, RGB_TOG, RGB_MOD, XXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR, ADJUST, RGB_SAD, RGB_VAI,
+ KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR, _ADJUST, RGB_SAD, RGB_VAI,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
- _____, _____, _____, _____, _____, _____, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_MOD, RGB_TOG, RGB_SAI,
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_MOD, RGB_TOG, RGB_SAI,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------|
- _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____
+ _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
)
};
-static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
-
- pressed ? layer_on(layer1) : layer_off(layer1);
- IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}
int RGB_current_mode;
@@ -140,23 +119,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool result = false;
switch (keycode) {
- case LOWER:
- update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
- break;
- case RAISE:
- update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
- break;
- case KANJI:
- if (record->event.pressed) {
- if (keymap_config.swap_lalt_lgui == false) {
- register_code(KC_LANG2);
- } else {
- SEND_STRING(SS_LALT("`"));
- }
- } else {
- unregister_code(KC_LANG2);
- }
- break;
#ifdef RGBLIGHT_ENABLE
case RGB_MOD:
if (record->event.pressed) {
@@ -165,7 +127,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
RGB_current_mode = rgblight_config.mode;
}
break;
- case RGBRST:
+ case RGB_RST:
if (record->event.pressed) {
eeconfig_update_rgblight_default();
rgblight_enable();
@@ -182,7 +144,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
void matrix_init_user(void) {
- #ifdef RGBLIGHT_ENABLE
- RGB_current_mode = rgblight_config.mode;
- #endif
+
}
diff --git a/keyboards/naked48/keymaps/salicylic_with_nafuda/readme.md b/keyboards/naked48/keymaps/salicylic_with_nafuda/readme.md
index 2f9f3802df0..15e34e188c7 100644
--- a/keyboards/naked48/keymaps/salicylic_with_nafuda/readme.md
+++ b/keyboards/naked48/keymaps/salicylic_with_nafuda/readme.md
@@ -2,38 +2,31 @@
Add Nafuda maps to the salicylic layout.
-Default
- //|--------------------|
- Mouse,
- //|------+------+------|
- BS + Ad, UP,Browser,
- //|------+------+------|
- LEFT, DOWN, RIGHT
- //|--------------------|
+## Default
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| | MOUSE| |
+| BS+Ad| UP|Browser|
+| LEFT| DOWN| RIGHT|
-Mouse
- //|--------------------|
- Default,
- //|------+------+------|
- BTN1, MS_U, BTN2,
- //|------+------+------|
- MS_L, MS_D, MS_R
- //|--------------------|
+## Mouse
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| |Default| |
+| BTN1| MS_U| BTN2|
+| MS_L| MS_D| MS_R|
-Browser
- //|--------------------|
- CloseTAB,
- //|------+------+------|
- ReOpenTAB, WH_U,Default,
- //|------+------+------|
- LTAB, WH_D, RTAB
- //|--------------------|
+## Browser
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| |CloseTAB| |
+|ReOpenTAB|WH_U|Default|
+| LTAB| WH_D| RTAB|
+
+## Adjust
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| |LED_VAD| |
+|Default|LED_HUD|LED_VAI|
+|LED_MOD|LED_ON/Off|LED_HUI|
-Adjust
- //|------------------------|
- LED VAD,
- //|------+----------+------|
- Default, LED HUD,LED VAI,
- //|------+----------+------|
- LED MOD,LED ON/Off,LED HUI
- //|------------------------|
diff --git a/keyboards/naked48/keymaps/salicylic_with_nafuda/rules.mk b/keyboards/naked48/keymaps/salicylic_with_nafuda/rules.mk
index dd471767a7f..f76b955efde 100644
--- a/keyboards/naked48/keymaps/salicylic_with_nafuda/rules.mk
+++ b/keyboards/naked48/keymaps/salicylic_with_nafuda/rules.mk
@@ -1,29 +1 @@
-
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-
-# If your custom naked48 pcb, you can rewrite to yes.
-LED_ANIMATIONS = yes # LED animations
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- # OPT_DEFS += -DRGBLIGHT_ANIMATIONS
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/naked48/keymaps/salicylic_with_setta21/config.h b/keyboards/naked48/keymaps/salicylic_with_setta21/config.h
index ad417f7f026..1e86c6bb729 100644
--- a/keyboards/naked48/keymaps/salicylic_with_setta21/config.h
+++ b/keyboards/naked48/keymaps/salicylic_with_setta21/config.h
@@ -21,21 +21,11 @@
#define MASTER_LEFT
// #define MASTER_RIGHT
// #define EE_HANDS
-
#define USE_SERIAL_PD2
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 180
-// Selection of RGBLIGHT MODE to use.
-#if defined(LED_ANIMATIONS)
- //#define RGBLIGHT_EFFECT_BREATHING
- #define RGBLIGHT_EFFECT_RAINBOW_MOOD
- #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
- //#define RGBLIGHT_EFFECT_SNAKE
- #define RGBLIGHT_EFFECT_KNIGHT
- //#define RGBLIGHT_EFFECT_CHRISTMAS
- #define RGBLIGHT_EFFECT_STATIC_GRADIENT
- //#define RGBLIGHT_EFFECT_RGB_TEST
- //#define RGBLIGHT_EFFECT_ALTERNATING
-#endif
\ No newline at end of file
+#define RGBLED_NUM 69 // Number of LEDs
+#define RGBLIGHT_SPLIT
+#define RGBLED_SPLIT { 48, 21 }
diff --git a/keyboards/naked48/keymaps/salicylic_with_setta21/keymap.c b/keyboards/naked48/keymaps/salicylic_with_setta21/keymap.c
index 18293e63eae..d04b53d7bab 100644
--- a/keyboards/naked48/keymaps/salicylic_with_setta21/keymap.c
+++ b/keyboards/naked48/keymaps/salicylic_with_setta21/keymap.c
@@ -22,41 +22,27 @@ enum layer_number {
};
enum custom_keycodes {
- LOWER = SAFE_RANGE,
- RAISE,
- ADJUST,
- KANJI,
- RGBRST,
+ RGB_RST = SAFE_RANGE,
SEND_SUM,
- SEND_AVERAGE,
- SEND_COUNTIF,
+ SEND_AVE,
+ SEND_CIF,
SEND_MAX,
SEND_MIN
};
// Fillers to make layering more clear
-#define _____ KC_TRNS
-#define XXXXX KC_NO
-
#define KC_CT11 LCTL_T(KC_F11)
#define KC_SF12 SFT_T(KC_F12)
#define KC_LOEN LT(_LOWER, KC_ENT)
#define KC_RASP LT(_RAISE, KC_SPC)
-#define KC_SSUM SEND_SUM
-#define KC_SAVE SEND_AVERAGE
-#define KC_SCOU SEND_COUNTIF
-#define KC_SMAX SEND_MAX
-#define KC_SMIN SEND_MIN
-
#define KC_RADO LT(_RAISE, KC_PDOT)
#define KC_LOP0 LT(_LOWER, KC_P0)
-#define KC_ADNL LT(_ADJUST, KC_NLCK)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_with_setta21(
//,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, KC_LOP0, KC_P1, KC_P4, KC_P7,KC_ADNL, KC_ESC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, KC_LOP0, KC_P1, KC_P4, KC_P7,KC_NLCK, KC_ESC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_RBRC, KC_P2, KC_P5, KC_P8,KC_PSLS, KC_F2,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
@@ -68,80 +54,60 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT_with_setta21(
//,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
- KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, LOWER, XXXXX,KC_LEFT, XXXXX, XXXXX, KC_ESC,
+ KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, MO(_LOWER),XXXXXXX,KC_LEFT,XXXXXXX,XXXXXXX, KC_ESC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
- JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, KC_DOWN,KC_DOWN, KC_UP,KC_PSLS, KC_F2,
+ JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, KC_DOWN,KC_DOWN, KC_UP,KC_PSLS, KC_F2,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
- JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT, RAISE, XXXXX,KC_RIGHT, XXXXX,KC_PAST, JP_EQL,
+ JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT, MO(_RAISE),XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST, JP_EQL,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
- _____, _____, _____, KC_ZKHK, LOWER, _____, _____, RAISE, KC_0, JP_DOT, _____, _____, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL
+ _______, _______, _______, KC_ZKHK,MO(_LOWER),_______,_______,MO(_RAISE),JP_DOT, _______, _______, _______, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL
//`------------------------------------------------------------------------------------------------------------' |-----------------------------------------------|
),
[_RAISE] = LAYOUT_with_setta21(
//,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXX, KC_UP, XXXXX, KC_PGUP, KC_DEL, LOWER, KC_F11, KC_F4, KC_F7,KC_SMIN, KC_ESC,
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, KC_DEL, _______, KC_F11, KC_F4, KC_F7,SEND_MIN, KC_ESC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
- KC_CT11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT, KC_ENT, KC_F12, KC_F5, KC_F8,KC_SMAX, KC_F2,
+ KC_CT11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT, KC_ENT, KC_F12, KC_F5, KC_F8,SEND_MAX, KC_F2,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
- KC_SF12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXX, XXXXX, XXXXX, XXXXX, KC_PGDN, XXXXX, RAISE, KC_F3, KC_F6, KC_F9,KC_SCOU, JP_EQL,
+ KC_SF12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, _______, KC_F3, KC_F6, KC_F9,SEND_CIF, JP_EQL,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
- _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, JP_RPRN, KC_SSUM,KC_SAVE, KC_DEL
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, JP_RPRN, SEND_SUM,SEND_AVE, KC_DEL
//`------------------------------------------------------------------------------------------------------------' |-----------------------------------------------|
),
[_ADJUST] = LAYOUT_with_setta21( /* Base */
//,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
- _____, _____, _____, _____, _____, _____, _____, KC_7, KC_8, KC_9, KC_0, _____, LOWER,RGB_VAD,RGB_HUD,RGB_SAD, ADJUST,RGB_TOG,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,RGB_VAD,RGB_HUD,RGB_SAD,XXXXXXX,_______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
- _____, _____, _____, _____, _____, _____, RGB_TOG, RGB_MOD, XXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR, RGB_VAI,RGB_HUI,RGB_SAI, XXXXX, _____,
+ KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR, RGB_VAI,RGB_HUI,RGB_SAI,XXXXXXX,_______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
- _____, _____, _____, _____, _____, _____, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RAISE, XXXXX, XXXXX, XXXXX, XXXXX, _____,
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
- _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, RGB_MOD, _____, _____, _____
+ _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______, RGB_MOD, RGB_TOG,_______,_______
//`------------------------------------------------------------------------------------------------------------' |-----------------------------------------------|
)
};
-static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
-
- pressed ? layer_on(layer1) : layer_off(layer1);
- IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}
int RGB_current_mode;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-
bool result = false;
switch (keycode) {
- case LOWER:
- update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
- break;
- case RAISE:
- update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
- break;
- case KANJI:
- if (record->event.pressed) {
- if (keymap_config.swap_lalt_lgui == false) {
- register_code(KC_LANG2);
- } else {
- SEND_STRING(SS_LALT("`"));
- }
- } else {
- unregister_code(KC_LANG2);
- }
- break;
case SEND_SUM:
if (record->event.pressed) {
SEND_STRING("_SUM*");
}
break;
- case SEND_AVERAGE:
+ case SEND_AVE:
if (record->event.pressed) {
SEND_STRING("_AVERAGE*");
}
break;
- case SEND_COUNTIF:
+ case SEND_CIF:
if (record->event.pressed) {
SEND_STRING("_COUNTIF*");
}
@@ -164,7 +130,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
RGB_current_mode = rgblight_config.mode;
}
break;
- case RGBRST:
+ case RGB_RST:
if (record->event.pressed) {
eeconfig_update_rgblight_default();
rgblight_enable();
@@ -181,7 +147,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
void matrix_init_user(void) {
- #ifdef RGBLIGHT_ENABLE
- RGB_current_mode = rgblight_config.mode;
- #endif
+
}
+
diff --git a/keyboards/naked48/keymaps/salicylic_with_setta21/rules.mk b/keyboards/naked48/keymaps/salicylic_with_setta21/rules.mk
index ee538432e90..e69de29bb2d 100644
--- a/keyboards/naked48/keymaps/salicylic_with_setta21/rules.mk
+++ b/keyboards/naked48/keymaps/salicylic_with_setta21/rules.mk
@@ -1,29 +0,0 @@
-
-# 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 = no # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-
-# If your custom naked48 pcb, you can rewrite to yes.
-LED_ANIMATIONS = yes # LED animations
-
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- # OPT_DEFS += -DRGBLIGHT_ANIMATIONS
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/naked48/naked48.c b/keyboards/naked48/naked48.c
index dbb77f21d61..dc516e98f4e 100644
--- a/keyboards/naked48/naked48.c
+++ b/keyboards/naked48/naked48.c
@@ -1 +1,6 @@
#include "naked48.h"
+
+// Optional override functions below.
+// You can leave any or all of these undefined.
+// These are only required if you want to perform custom actions.
+
diff --git a/keyboards/naked48/naked48.h b/keyboards/naked48/naked48.h
index 891f9301ee9..1c715eb24a2 100644
--- a/keyboards/naked48/naked48.h
+++ b/keyboards/naked48/naked48.h
@@ -1,12 +1,7 @@
#pragma once
+#include "quantum.h"
+
#ifdef KEYBOARD_naked48_rev1
#include "rev1.h"
#endif
-
-#include "quantum.h"
-
-#ifdef PROTOCOL_LUFA
-#include "lufa.h"
-#include "split_util.h"
-#endif
diff --git a/keyboards/naked48/readme.md b/keyboards/naked48/readme.md
index a6946d9093f..bb16571efde 100644
--- a/keyboards/naked48/readme.md
+++ b/keyboards/naked48/readme.md
@@ -5,8 +5,8 @@
This is 48 keys modification Ortholinear keyboard.
Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
-Hardware Supported: The PCBs, controllers supported
-Hardware Availability: links to where you can find this hardware
+Hardware Supported: Naked60BMP PCB, Pro Micro
+Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/PCB_Data), [Booth Shop](https://salicylic-acid3.booth.pm/items/1271568)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/naked48/rev1/config.h b/keyboards/naked48/rev1/config.h
index 5d1c28d090b..9afa87511b7 100644
--- a/keyboards/naked48/rev1/config.h
+++ b/keyboards/naked48/rev1/config.h
@@ -18,6 +18,8 @@ along with this program. If not, see .
#pragma once
+#include QMK_KEYBOARD_CONFIG_H
+
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x3060
@@ -26,57 +28,31 @@ along with this program. If not, see .
#define PRODUCT naked48
#define DESCRIPTION Ortholinear 48 Keys Keyboard
-/* Use I2C or Serial */
-//#define USE_I2C
-#define USE_SERIAL
-//#define USE_MATRIX_I2C
-
-/* Select hand configuration */
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-// OLED support
-// see ./rules.mk: OLED_ENABLE=yes or no
-#ifdef OLED_ENABLE
- #define SSD1306OLED
-#endif
-
/* key matrix size */
#define MATRIX_ROWS 8
-#define MATRIX_COLS 14
-
-// Rows are doubled-up
-#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
+#define MATRIX_COLS 12
// wiring of each half
+#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D7, E6, B4, B5 }
-// #define MATRIX_COL_PINS { B5, B4, E6, D7, D6, B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-/* number of backlight levels */
-// #define BACKLIGHT_LEVELS 3
+// When using Nafuda, comment out MATRIX_ROW_PINS_RIGHT and MATRIX_COL_PINS_RIGHT.
+#define MATRIX_ROW_PINS_RIGHT { D4, C6, D7, E6 }
+#define MATRIX_COL_PINS_RIGHT { F4, F5, F6, F7, B1, B3, B2, B6, B4, B5, B2, B2 }
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D2
+
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-//#define LOCKING_SUPPORT_ENABLE
+#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
-//#define LOCKING_RESYNC_ENABLE
+#define LOCKING_RESYNC_ENABLE
/* ws2812 RGB LED */
#define RGB_DI_PIN D3
-#define RGBLIGHT_TIMER
-#define ws2812_PORTREG PORTD
-#define ws2812_DDRREG DDRD
-
-// naked48 keyboard RGB LED support
-//#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no
-// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
-#define RGBLED_NUM 48
+#define RGBLIGHT_ANIMATIONS
#ifndef IOS_DEVICE_ENABLE
#define RGBLIGHT_LIMIT_VAL 180
@@ -88,6 +64,19 @@ along with this program. If not, see .
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
+// Selection of RGBLIGHT MODE to use.
+#if defined(LED_ANIMATIONS)
+ //#define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ //#define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ //#define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ //#define RGBLIGHT_EFFECT_RGB_TEST
+ //#define RGBLIGHT_EFFECT_ALTERNATING
+#endif
+
#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
// 120 RGBoff, OLEDoff
@@ -101,21 +90,3 @@ along with this program. If not, see .
// iOS device need lessthan 100
#define USB_MAX_POWER_CONSUMPTION 100
#endif
-
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-// #define NO_DEBUG
-
-/* disable print */
-// #define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
diff --git a/keyboards/naked48/rev1/rev1.c b/keyboards/naked48/rev1/rev1.c
index b5f6532b2e6..e127232d80e 100644
--- a/keyboards/naked48/rev1/rev1.c
+++ b/keyboards/naked48/rev1/rev1.c
@@ -1,15 +1,36 @@
#include "naked48.h"
-
-#ifdef SSD1306OLED
+/*#ifdef SSD1306OLED
void led_set_kb(uint8_t usb_led) {
- // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
- //led_set_user(usb_led);
+ // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+ //led_set_user(usb_led);
}
+#endif*/
+
+#ifdef RGB_MATRIX_ENABLE
+ led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { 0,47,42,41,36,35,30,29,24,23,18,17 },
+ { 1,46,43,40,37,34,31,28,25,22,19,16 },
+ { 2,45,44,39,38,33,32,27,26,21,20,15 },
+ { 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14 }
+ }, {
+ // LED Index to Physical Position
+ { 0, 0 }, { 0, 21 }, { 0, 43 }, { 17, 64 }, { 34, 64 },{ 52, 64 }, { 69, 64 }, { 86, 64 }, { 103, 64 }, { 121, 64 },
+ { 138, 64 }, { 155, 64 }, { 172, 64 }, { 190, 64 }, { 207, 64 },{ 224, 43 }, { 224, 21 }, { 224, 0 }, { 207, 0 }, { 207, 21 },
+ { 207, 43 }, { 190, 43 }, { 190, 21 }, { 190, 0 }, { 172, 0 },{ 172, 21 }, { 172, 43 }, { 155, 43 }, { 155, 21 }, { 155, 0 },
+ { 138, 0 }, { 138, 21 }, { 138, 43 }, { 86, 43 }, { 86, 21 },{ 86, 0 }, { 69, 0 }, { 69, 21 }, { 69, 43 }, { 52, 43 },
+ { 52, 21 }, { 52, 0 }, { 34, 0 }, { 34, 21 }, { 34, 43 },{ 17, 43 }, { 17, 21 }, { 17, 0 }
+ }, {
+ // LED Index to Flag
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4
+} };
#endif
void matrix_init_kb(void) {
-
matrix_init_user();
-};
-
+};
\ No newline at end of file
diff --git a/keyboards/naked48/rev1/rev1.h b/keyboards/naked48/rev1/rev1.h
index 914459a8a58..de58f8f924f 100644
--- a/keyboards/naked48/rev1/rev1.h
+++ b/keyboards/naked48/rev1/rev1.h
@@ -3,12 +3,19 @@
#include "naked48.h"
#include "quantum.h"
-
#ifdef RGBLIGHT_ENABLE
//rgb led driver
#include "ws2812.h"
#endif
+#ifdef USE_I2C
+#include
+#ifdef __AVR__
+ #include
+ #include
+#endif
+#endif
+
//////////////////////////////////////////////////////////////////////////////
// When only use Naked48.
//////////////////////////////////////////////////////////////////////////////
@@ -52,14 +59,14 @@
L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L3A, L3B, R30, R32, R34, R35 \
) \
{ \
- { L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, L0A, L0B,KC_NO,KC_NO }, \
- { L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L1A, L1B,KC_NO,KC_NO }, \
- { L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, L2A, L2B,KC_NO,KC_NO }, \
- { L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L3A, L3B,KC_NO,KC_NO }, \
- { R00, R01, R02, R03, R04, R05,KC_NO,KC_NO,KC_NO, R11, R12, R13, R14, R15 }, \
- { R20, R21, R22, R23, R24, R25,KC_NO,KC_NO, R30,KC_NO, R32,KC_NO, R34, R35 }, \
- {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
- {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO } \
+ { L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, L0A, L0B }, \
+ { L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L1A, L1B }, \
+ { L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, L2A, L2B }, \
+ { L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L3A, L3B }, \
+ { R00, R01, R02, R03, R04, R05,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ {KC_NO, R11, R12, R13, R14, R15,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ { R20, R21, R22, R23, R24, R25,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ { R30,KC_NO, R32,KC_NO, R34, R35,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO } \
}
//////////////////////////////////////////////////////////////////////////////
@@ -73,13 +80,13 @@
L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L3A, L3B \
) \
{ \
- { L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, L0A, L0B,KC_NO,KC_NO }, \
- { L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L1A, L1B,KC_NO,KC_NO }, \
- { L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, L2A, L2B,KC_NO,KC_NO }, \
- { L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L3A, L3B,KC_NO,KC_NO }, \
- {KC_NO, R01,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, R10, R11, R12,KC_NO,KC_NO,KC_NO }, \
- { R20, R21, R22,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
- {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
- {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO } \
+ { L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, L0A, L0B }, \
+ { L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L1A, L1B }, \
+ { L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, L2A, L2B }, \
+ { L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L3A, L3B }, \
+ {KC_NO, R01,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ { R10, R11, R12,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ { R20, R21, R22,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO } \
}
diff --git a/keyboards/naked48/rev1/rules.mk b/keyboards/naked48/rev1/rules.mk
index a7118103338..e69de29bb2d 100644
--- a/keyboards/naked48/rev1/rules.mk
+++ b/keyboards/naked48/rev1/rules.mk
@@ -1,3 +0,0 @@
-SRC += matrix.c \
- split_util.c \
- split_scomm.c
diff --git a/keyboards/naked48/rules.mk b/keyboards/naked48/rules.mk
index 53e2dfc21cc..4427284e7f3 100644
--- a/keyboards/naked48/rules.mk
+++ b/keyboards/naked48/rules.mk
@@ -1,46 +1,14 @@
-# SRC += i2c.c
-QUANTUM_LIB_SRC += serial.c
-# SRC += ssd1306.c
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = caterina
# Interrupt driven control endpoint task(+60)
@@ -51,22 +19,22 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# 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 = no # Audio control and System control(+450)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
+COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SUBPROJECT_rev1 = no
-USE_I2C = no
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+OLED_DRIVER_ENABLE = no
+# USE_I2C = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-CUSTOM_MATRIX = yes
+SPLIT_KEYBOARD = yes
DEFAULT_FOLDER = naked48/rev1
diff --git a/keyboards/naked60/config.h b/keyboards/naked60/config.h
new file mode 100644
index 00000000000..47f2a9aacf3
--- /dev/null
+++ b/keyboards/naked60/config.h
@@ -0,0 +1,43 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+// GCC include 'config.h" sequence in qmk_firmware/keyboards/naked60/
+// -include keyboards/naked60/config.h
+// -include keyboards/naked60/rev?/config.h
+// -include keyboards/naked60/rev?/keymaps/MAPNAME/config.h
+// XXXX.c
+
+#include
+
+// GCC include search path in qmk_firmare/keyboards/naked60/
+// #include "..." search starts here:
+// #include <...> search starts here:
+// keyboards/naked60/rev?/keymaps/MAPNAME
+// keyboards/naked60
+// keyboards/naked60/rev?
+// .
+// ./tmk_core
+// ......
+
+// MACRO and FUNCTION are features that are depreciated.
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/naked60/info.json b/keyboards/naked60/info.json
new file mode 100644
index 00000000000..bc353f659a0
--- /dev/null
+++ b/keyboards/naked60/info.json
@@ -0,0 +1,312 @@
+{
+ "keyboard_name": "Naked60",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "width": 14,
+ "height": 5,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "label":"ESC",
+ "x":0,
+ "y":0
+ },
+ {
+ "label":"1",
+ "x":1,
+ "y":0
+ },
+ {
+ "label":"2",
+ "x":2,
+ "y":0
+ },
+ {
+ "label":"3",
+ "x":3,
+ "y":0
+ },
+ {
+ "label":"4",
+ "x":4,
+ "y":0
+ },
+ {
+ "label":"5",
+ "x":5,
+ "y":0
+ },
+ {
+ "label":"6",
+ "x":8,
+ "y":0
+ },
+ {
+ "label":"7",
+ "x":9,
+ "y":0
+ },
+ {
+ "label":"8",
+ "x":10,
+ "y":0
+ },
+ {
+ "label":"9",
+ "x":11,
+ "y":0
+ },
+ {
+ "label":"0",
+ "x":12,
+ "y":0
+ },
+ {
+ "label":"Back Space",
+ "x":13,
+ "y":0
+ },
+ {
+ "label":"Tab",
+ "x":0,
+ "y":1
+ },
+ {
+ "label":"Q",
+ "x":1,
+ "y":1
+ },
+ {
+ "label":"W",
+ "x":2,
+ "y":1,
+ },
+ {
+ "label":"E",
+ "x":3,
+ "y":1,
+ },
+ {
+ "label":"R",
+ "x":4,
+ "y":1,
+ },
+ {
+ "label":"T",
+ "x":5,
+ "y":1,
+ },
+ {
+ "label":"Y",
+ "x":8,
+ "y":1,
+ },
+ {
+ "label":"U",
+ "x":9,
+ "y":1,
+ },
+ {
+ "label":"I",
+ "x":10,
+ "y":1,
+ },
+ {
+ "label":"O",
+ "x":11,
+ "y":1,
+ },
+ {
+ "label":"P",
+ "x":12,
+ "y":1,
+ },
+ {
+ "label":"\\",
+ "x":13,
+ "y":1,
+ },
+ {
+ "label":"Esc",
+ "x":0,
+ "y":2,
+ },
+ {
+ "label":"A",
+ "x":1,
+ "y":2,
+ },
+ {
+ "label":"S",
+ "x":2,
+ "y":2,
+ },
+ {
+ "label":"D",
+ "x":3,
+ "y":2,
+ },
+ {
+ "label":"F",
+ "x":4,
+ "y":2,
+ },
+ {
+ "label":"G",
+ "x":5,
+ "y":2,
+ },
+ {
+ "label":"H",
+ "x":8,
+ "y":2,
+ },
+ {
+ "label":"J",
+ "x":9,
+ "y":2,
+ },
+ {
+ "label":"K",
+ "x":10,
+ "y":2,
+ },
+ {
+ "label":"L",
+ "x":11,
+ "y":2,
+ },
+ {
+ "label":";",
+ "x":12,
+ "y":2,
+ },
+ {
+ "label":"'",
+ "x":13,
+ "y":2,
+ },
+ {
+ "label":"Shift",
+ "x":0,
+ "y":3,
+ },
+ {
+ "label":"Z",
+ "x":1,
+ "y":3,
+ },
+ {
+ "label":"X",
+ "x":2,
+ "y":3,
+ },
+ {
+ "label":"C",
+ "x":3,
+ "y":3,
+ },
+ {
+ "label":"V",
+ "x":4,
+ "y":3,
+ },
+ {
+ "label":"B",
+ "x":5,
+ "y":3,
+ },
+ {
+ "label":"N",
+ "x":8,
+ "y":3,
+ },
+ {
+ "label":"M",
+ "x":9,
+ "y":3,
+ },
+ {
+ "label":",
+ ",
+ "x":10,
+ "y":3,
+ },
+ {
+ "label":".",
+ "x":11,
+ "y":3,
+ },
+ {
+ "label":"/",
+ "x":12,
+ "y":3,
+ },
+ {
+ "label":"Enter",
+ "x":13,
+ "y":3,
+ },
+ {
+ "label":"Adjust",
+ "x":1,
+ "y":4,
+ },
+ {
+ "label":"Ctrl",
+ "x":2,
+ "y":4,
+ },
+ {
+ "label":"Alt",
+ "x":3,
+ "y":4,
+ },
+ {
+ "label":"GUI",
+ "x":4,
+ "y":4,
+ },
+ {
+ "label":"⇓",
+ "x":5,
+ "y":4,
+ },
+ {
+ "x":6,
+ "y":4,
+ },
+ {
+ "x":7,
+ "y":4,
+ },
+ {
+ "label":"⇑",
+ "x":8,
+ "y":4,
+ },
+ {
+ "label":"←",
+ "x":9,
+ "y":4,
+ },
+ {
+ "label":"↓",
+ "x":10,
+ "y":4,
+ },
+ {
+ "label":"↑",
+ "x":11,
+ "y":4,
+ },
+ {
+ "label":"→",
+ "x":12,
+ "y":4,
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/naked60/keymaps/default/config.h b/keyboards/naked60/keymaps/default/config.h
new file mode 100644
index 00000000000..140a79c772c
--- /dev/null
+++ b/keyboards/naked60/keymaps/default/config.h
@@ -0,0 +1,51 @@
+/* Copyright 2018 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
+
+#define MK_3_SPEED
+
+#undef MOUSEKEY_INTERVAL
+#define MOUSEKEY_INTERVAL 0
+
+#undef MOUSEKEY_TIME_TO_MAX
+#define MOUSEKEY_TIME_TO_MAX 150
+
+#undef MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_MAX_SPEED 3
+
+#undef MOUSEKEY_MOVE_DELTA
+#define MOUSEKEY_MOVE_DELTA 5
+
+#undef MOUSEKEY_DELAY
+#define MOUSEKEY_DELAY 0
+
+#undef MOUSEKEY_WHEEL_MAX_SPEED
+#define MOUSEKEY_WHEEL_MAX_SPEED 1
+
+#undef MOUSEKEY_WHEEL_TIME_TO_MAX
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
diff --git a/keyboards/naked60/keymaps/default/keymap.c b/keyboards/naked60/keymaps/default/keymap.c
new file mode 100644
index 00000000000..4b15e969de5
--- /dev/null
+++ b/keyboards/naked60/keymaps/default/keymap.c
@@ -0,0 +1,139 @@
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+extern uint8_t is_master;
+
+// 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.
+enum layer_number {
+ _QWERTY = 0,
+ _FLOCK,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ FLOCK = SAFE_RANGE,
+ ADJUST,
+ RGBRST
+};
+
+enum tapdances{
+ TD_ESFL = 0,
+ TD_ESQW,
+};
+
+// Layer Mode aliases
+
+#define KC_SNUBS S(KC_NUBS)
+#define KC_SNUHS S(KC_NUHS)
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //,-----------------------------------------------------| |-----------------------------------------------------.
+ TD(TD_ESFL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ ADJUST,KC_LCTRL, KC_LALT, KC_LGUI,MO(_LOWER),KC_SPC, KC_SPC,MO(_RAISE),KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+
+ [_FLOCK] = LAYOUT(
+ //,-----------------------------------------------------| |-----------------------------------------------------.
+ TD(TD_ESQW), KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+
+ [_LOWER] = LAYOUT(
+ //,-----------------------------------------------------| |-----------------------------------------------------.
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,KC_SNUHS,KC_SNUBS, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+
+ [_RAISE] = LAYOUT(
+ //,-----------------------------------------------------| |-----------------------------------------------------.
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+
+ [_ADJUST] = LAYOUT( /* Base */
+ //,-----------------------------------------------------| |-----------------------------------------------------.
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR),
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL),
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ )
+};
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ bool result = false;
+ switch (keycode) {
+ case ADJUST:
+ update_tri_layer_state(record->event.pressed, _ADJUST, _RAISE, _LOWER);
+ break;
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
\ No newline at end of file
diff --git a/keyboards/naked60/keymaps/default/readme.md b/keyboards/naked60/keymaps/default/readme.md
new file mode 100644
index 00000000000..87ce8b3a29b
--- /dev/null
+++ b/keyboards/naked60/keymaps/default/readme.md
@@ -0,0 +1,53 @@
+# The default keymap for naked60
+
+## Default
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ESC(FLock) | 1| 2| 3| 4| 5| | | 6| 7| 8| 9| 0| BSPC|
+| TAB | Q| W| E| R| T| | | Y| U| I| O| P| \ |
+| LSFT | A| S| D| F| G| | | H| J| K| L| ;| '|
+|LCTRL | Z| X| C| V| B| | | N| M| ,| .| /| ENT|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| SPC| SPC| RAISE| LEFT| DOWN| UP| RIGHT| |
+
+
+
+## FLock
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ESC(FLock)| F2| F3| F4| F5| F6| | | F7| F8| F9| F10| F11| BSPC|
+| TAB | Q| W| E| R| T| | | Y| U| I| O| P| BSLS|
+| LSFT | A| S| D| F| G| | | H| J| K| L| SCLN| QUOT|
+|LCTRL | Z| X| C| V| B| | | N| M| COMM| DOT| SLSH| ENT|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| SPC| SPC| RAISE| LEFT| DOWN| UP| RIGHT| |
+
+
+## Lower
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ESC| F2| F3| F4| F5| F6| | | F7| F8| F9| F10| F11| F12|
+| ~| !| @| #| $| %| | | ^| &| *| (| )| DEL|
+| _____| F1| F2| F3| F4| F5| | | F6| _| +| {| }| PIPE|
+| _____| F7| F8| F9| F10| F11| | | F12| SNUHS| SNUBS| ,| .| _____|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| SPC| SPC| RAISE| MNXT| VOLD| VOLU| MPLY| |
+
+
+## Raise
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ESC| F2| F3| F4| F5| F6| | | F7| F8| F9| F10| F11| F12|
+| ~| 1| 2| 3| 4| 5| | | 6| 7| 8| 9| 0| DEL|
+| _____| F1| F2| F3| F4| F5| | | F6| -| =| [| ]| BSLS|
+| _____| F7| F8| F9| F10| F11| | | F12| NUHS| NUBS| ,| .| _____|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| SPC| SPC| RAISE| MNXT| VOLD| VOLU| MPLY| |
+
+
+
+## Adjust
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ESC| F2| F3| F4| F5| F6| | | F7| F8| F9| F10| F11| F12|
+| TILD| RST| XXXXX| XXXXX| XXXXX| XXXXX| | | XXXXX| BTN1| MS_U| BTN2| XXXXX|Alt+PSCR|
+| LSFT| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| | | XXXXX| MS_L| MS_D| MS_R| XXXXX| PSCR|
+| LCTRL| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| | | XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| C+A+D|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| SPC| SPC| RAISE| MNXT| VOLD| VOLU| MPLY| |
+
diff --git a/keyboards/naked60/keymaps/default_with_nafuda/config.h b/keyboards/naked60/keymaps/default_with_nafuda/config.h
new file mode 100644
index 00000000000..e188262cf92
--- /dev/null
+++ b/keyboards/naked60/keymaps/default_with_nafuda/config.h
@@ -0,0 +1,90 @@
+/* Copyright 2018 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
+
+#define RGBLED_NUM 7
+
+#ifndef IOS_DEVICE_ENABLE
+ #define RGBLIGHT_LIMIT_VAL 180
+ #define RGBLIGHT_VAL_STEP 17
+#else
+ #define RGBLIGHT_LIMIT_VAL 50
+ #define RGBLIGHT_VAL_STEP 4
+#endif
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+
+#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
+// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
+// 120 RGBoff, OLEDoff
+// 120 OLED
+// 330 RGB 6
+// 300 RGB 32
+// 310 OLED & RGB 32
+ #define USB_MAX_POWER_CONSUMPTION 400
+#else
+ // fix iPhone and iPad power adapter issue
+ // iOS device need lessthan 100
+ #define USB_MAX_POWER_CONSUMPTION 100
+#endif
+
+// Selection of RGBLIGHT MODE to use.
+#if defined(LED_ANIMATIONS)
+ //#define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ //#define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ //#define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ //#define RGBLIGHT_EFFECT_RGB_TEST
+ //#define RGBLIGHT_EFFECT_ALTERNATING
+#endif
+
+#define MK_3_SPEED
+
+#undef MOUSEKEY_INTERVAL
+#define MOUSEKEY_INTERVAL 0
+
+#undef MOUSEKEY_TIME_TO_MAX
+#define MOUSEKEY_TIME_TO_MAX 150
+
+#undef MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_MAX_SPEED 3
+
+#undef MOUSEKEY_MOVE_DELTA
+#define MOUSEKEY_MOVE_DELTA 5
+
+#undef MOUSEKEY_DELAY
+#define MOUSEKEY_DELAY 0
+
+#undef MOUSEKEY_WHEEL_MAX_SPEED
+#define MOUSEKEY_WHEEL_MAX_SPEED 1
+
+#undef MOUSEKEY_WHEEL_TIME_TO_MAX
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
diff --git a/keyboards/naked60/keymaps/default_with_nafuda/keymap.c b/keyboards/naked60/keymaps/default_with_nafuda/keymap.c
new file mode 100644
index 00000000000..d50af530dae
--- /dev/null
+++ b/keyboards/naked60/keymaps/default_with_nafuda/keymap.c
@@ -0,0 +1,212 @@
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+extern uint8_t is_master;
+
+// 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.
+enum layer_number {
+ _QWERTY = 0,
+ _FLOCK,
+ _MOUSE,
+ _BROWSER,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ FLOCK = SAFE_RANGE,
+ MOUSE,
+ BROWSER,
+ LOWER,
+ RAISE,
+ ADJUST,
+ RGBRST
+};
+
+enum tapdances{
+ TD_ESFL = 0,
+ TD_ESQW,
+};
+
+// Fillers to make layering more clear
+
+#define KC_CAD LCA(KC_DEL)
+#define KC_APSCR LALT(KC_PSCR)
+
+#define KC_SNUBS S(KC_NUBS)
+#define KC_SNUHS S(KC_NUHS)
+
+#define KC_RTAB LCTL(KC_TAB)
+#define KC_LTAB LCTL(LSFT(KC_TAB))
+#define KC_CTAB LCTL(KC_W)
+#define KC_RETAB LCTL(LSFT(KC_T))
+
+#define KC_TGMO TG(_MOUSE)
+#define KC_TGBR TG(_BROWSER)
+#define KC_BSAD LT(_ADJUST, KC_BSPC)
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_with_nafuda(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ TD(TD_ESFL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TGMO,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_BSAD, KC_UP, KC_TGBR,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LEFT, KC_DOWN,KC_RIGHT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ ADJUST,KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_FLOCK] = LAYOUT_with_nafuda(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ TD(TD_ESQW), KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_MOUSE] = LAYOUT_with_nafuda(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ TD(TD_ESFL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TGMO,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_BROWSER] = LAYOUT_with_nafuda(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CTAB,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RETAB, KC_WH_U, KC_TGBR,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LTAB, KC_WH_D, KC_RTAB,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_LOWER] = LAYOUT_with_nafuda(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TGMO,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN, KC_DEL, KC_BSAD, KC_UP, KC_TGBR,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_LEFT, KC_DOWN,KC_RIGHT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,KC_SNUHS,KC_SNUBS, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_RAISE] = LAYOUT_with_nafuda(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TGMO,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSAD, KC_UP, KC_TGBR,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_LEFT, KC_DOWN,KC_RIGHT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_with_nafuda( /* Base */
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_VAD,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), ADJUST, RGB_SAD, RGB_VAI,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, RGB_MOD, RGB_TOG, RGB_SAI,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL),
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ )
+};
+
+static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+
+ pressed ? layer_on(layer1) : layer_off(layer1);
+ IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
+}
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ bool result = false;
+ switch (keycode) {
+ case LOWER:
+ update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
+ break;
+ case RAISE:
+ update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
+ break;
+ case ADJUST:
+ update_change_layer(record->event.pressed, _ADJUST, _RAISE, _LOWER);
+ break;
+ #ifdef RGBLIGHT_ENABLE
+ case RGB_MOD:
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
+ case RGBRST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
+ #endif
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
+
+void matrix_init_user(void) {
+ #ifdef RGBLIGHT_ENABLE
+ RGB_current_mode = rgblight_config.mode;
+ #endif
+}
diff --git a/keyboards/naked60/keymaps/default_with_nafuda/readme.md b/keyboards/naked60/keymaps/default_with_nafuda/readme.md
new file mode 100644
index 00000000000..574f90ffbda
--- /dev/null
+++ b/keyboards/naked60/keymaps/default_with_nafuda/readme.md
@@ -0,0 +1,31 @@
+# The default_with_nafuda keymap for naked60
+
+Add Nafuda maps to the default layout.
+
+## Default
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| | MOUSE| |
+| BS+Ad| UP|Browser|
+| LEFT| DOWN| RIGHT|
+
+## Mouse
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| |Default| |
+| BTN1| MS_U| BTN2|
+| MS_L| MS_D| MS_R|
+
+## Browser
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| |CloseTAB| |
+|ReOpenTAB|WH_U|Default|
+| LTAB| WH_D| RTAB|
+
+## Adjust
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| |LED_VAD| |
+|Default|LED_HUD|LED_VAI|
+|LED_MOD|LED_ON/Off|LED_HUI|
diff --git a/keyboards/naked60/keymaps/default_with_nafuda/rules.mk b/keyboards/naked60/keymaps/default_with_nafuda/rules.mk
new file mode 100644
index 00000000000..15a887e7813
--- /dev/null
+++ b/keyboards/naked60/keymaps/default_with_nafuda/rules.mk
@@ -0,0 +1,10 @@
+RGBLIGHT_ENABLE = yes
+
+# If your custom naked60 pcb, you can rewrite to yes.
+LED_ANIMATIONS = yes # LED animations
+
+ifeq ($(strip $(LED_ANIMATIONS)), yes)
+ # OPT_DEFS += -DRGBLIGHT_ANIMATIONS
+ OPT_DEFS += -DLED_ANIMATIONS
+endif
+
diff --git a/keyboards/naked60/keymaps/default_with_setta21/config.h b/keyboards/naked60/keymaps/default_with_setta21/config.h
new file mode 100644
index 00000000000..fe162510d0b
--- /dev/null
+++ b/keyboards/naked60/keymaps/default_with_setta21/config.h
@@ -0,0 +1,90 @@
+/* Copyright 2018 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
+
+#define RGBLED_NUM 21
+
+#ifndef IOS_DEVICE_ENABLE
+ #define RGBLIGHT_LIMIT_VAL 180
+ #define RGBLIGHT_VAL_STEP 17
+#else
+ #define RGBLIGHT_LIMIT_VAL 50
+ #define RGBLIGHT_VAL_STEP 4
+#endif
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+
+#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
+// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
+// 120 RGBoff, OLEDoff
+// 120 OLED
+// 330 RGB 6
+// 300 RGB 32
+// 310 OLED & RGB 32
+ #define USB_MAX_POWER_CONSUMPTION 400
+#else
+ // fix iPhone and iPad power adapter issue
+ // iOS device need lessthan 100
+ #define USB_MAX_POWER_CONSUMPTION 100
+#endif
+
+// Selection of RGBLIGHT MODE to use.
+#if defined(LED_ANIMATIONS)
+ //#define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ //#define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ //#define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ //#define RGBLIGHT_EFFECT_RGB_TEST
+ //#define RGBLIGHT_EFFECT_ALTERNATING
+#endif
+
+#define MK_3_SPEED
+
+#undef MOUSEKEY_INTERVAL
+#define MOUSEKEY_INTERVAL 0
+
+#undef MOUSEKEY_TIME_TO_MAX
+#define MOUSEKEY_TIME_TO_MAX 150
+
+#undef MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_MAX_SPEED 3
+
+#undef MOUSEKEY_MOVE_DELTA
+#define MOUSEKEY_MOVE_DELTA 5
+
+#undef MOUSEKEY_DELAY
+#define MOUSEKEY_DELAY 0
+
+#undef MOUSEKEY_WHEEL_MAX_SPEED
+#define MOUSEKEY_WHEEL_MAX_SPEED 1
+
+#undef MOUSEKEY_WHEEL_TIME_TO_MAX
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
diff --git a/keyboards/naked60/keymaps/default_with_setta21/keymap.c b/keyboards/naked60/keymaps/default_with_setta21/keymap.c
new file mode 100644
index 00000000000..06ea56501a1
--- /dev/null
+++ b/keyboards/naked60/keymaps/default_with_setta21/keymap.c
@@ -0,0 +1,207 @@
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+extern uint8_t is_master;
+
+// 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.
+enum layer_number {
+ _QWERTY = 0,
+ _FLOCK,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ FLOCK = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST,
+ KANJI,
+ RGBRST,
+ SEND_SUM,
+ SEND_AVERAGE,
+ SEND_COUNTIF,
+ SEND_MAX,
+ SEND_MIN
+};
+
+enum tapdances{
+ TD_ESFL = 0,
+ TD_ESQW,
+};
+
+// Fillers to make layering more clear
+#define KC_SNUBS S(KC_NUBS)
+#define KC_SNUHS S(KC_NUHS)
+
+#define KC_SSUM SEND_SUM
+#define KC_SAVE SEND_AVERAGE
+#define KC_SCOU SEND_COUNTIF
+#define KC_SMAX SEND_MAX
+#define KC_SMIN SEND_MIN
+
+#define KC_RADO LT(_RAISE, KC_PDOT)
+#define KC_LOP0 LT(_LOWER, KC_P0)
+#define KC_ADNL LT(_ADJUST, KC_NLCK)
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_with_setta21(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
+ TD(TD_ESFL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_LOP0, KC_P1, KC_P4, KC_P7,KC_ADNL, KC_ESC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_P2, KC_P5, KC_P8,KC_PSLS, KC_F2,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_RADO, KC_P3, KC_P6, KC_P9,KC_PAST, KC_EQL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
+ KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
+ ADJUST,KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_FLOCK] = LAYOUT_with_setta21(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
+ TD(TD_ESQW), KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______,_______,_______,_______,_______,_______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______,_______,_______,_______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______,_______,_______,_______,_______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______,_______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_LOWER] = LAYOUT_with_setta21(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LOWER,XXXXXXX,KC_LEFT,XXXXXXX,XXXXXXX, KC_ESC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN, KC_DEL, KC_DOWN,KC_DOWN, KC_UP,KC_PSLS, KC_F2,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, RAISE,XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST, KC_EQL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,KC_SNUHS,KC_SNUBS, _______, _______, _______, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_RAISE] = LAYOUT_with_setta21(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LOWER, KC_F11, KC_F4, KC_F7,KC_SMIN, KC_ESC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_F12, KC_F5, KC_F8,KC_SMAX, KC_F2,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, RAISE, KC_F3, KC_F6, KC_F9,KC_SCOU, KC_EQL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, KC_RPRN, KC_SSUM,KC_SAVE, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_with_setta21( /* Base */
+ //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LOWER,RGB_VAD,RGB_HUD,RGB_SAD, ADJUST,RGB_TOG,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ _______, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), RGB_VAI,RGB_HUI,RGB_SAI,XXXXXXX,_______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, RAISE,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), RGB_MOD, _______,_______,_______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ )
+};
+
+static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+
+ pressed ? layer_on(layer1) : layer_off(layer1);
+ IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
+}
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ bool result = false;
+ switch (keycode) {
+ case LOWER:
+ update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
+ break;
+ case RAISE:
+ update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
+ break;
+ case ADJUST:
+ update_change_layer(record->event.pressed, _ADJUST, _RAISE, _LOWER);
+ break;
+ case SEND_SUM:
+ if (record->event.pressed) {
+ SEND_STRING("=SUM(");
+ }
+ break;
+ case SEND_AVERAGE:
+ if (record->event.pressed) {
+ SEND_STRING("=AVERAGE(");
+ }
+ break;
+ case SEND_COUNTIF:
+ if (record->event.pressed) {
+ SEND_STRING("=COUNTIF(");
+ }
+ break;
+ case SEND_MAX:
+ if (record->event.pressed) {
+ SEND_STRING("=MAX(");
+ }
+ break;
+ case SEND_MIN:
+ if (record->event.pressed) {
+ SEND_STRING("=MIN(");
+ }
+ break;
+ #ifdef RGBLIGHT_ENABLE
+ case RGB_MOD:
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
+ case RGBRST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
+ #endif
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
+
+void matrix_init_user(void) {
+ #ifdef RGBLIGHT_ENABLE
+ RGB_current_mode = rgblight_config.mode;
+ #endif
+}
diff --git a/keyboards/naked60/keymaps/default_with_setta21/readme.md b/keyboards/naked60/keymaps/default_with_setta21/readme.md
new file mode 100644
index 00000000000..750a8b3508e
--- /dev/null
+++ b/keyboards/naked60/keymaps/default_with_setta21/readme.md
@@ -0,0 +1,44 @@
+# The default_with_setta21 keymap for naked60
+
+Add Setta21 maps to the default layout.
+
+## Default
+| 1 | 2 | 3 | 4 |
+|:----:|:----:|:----:|:----:|
+| ESC| F2| =| DEL|
+|Ad+Num| /| *| -|
+| 7| 8| 9| |
+| 4| 5| 6| +|
+| 1| 2| 3| |
+| Rai+0| | LOW + .| ENT|
+
+## Lower
+| 1 | 2 | 3 | 4 |
+|:----:|:----:|:----:|:----:|
+| ESC| F2| =| DEL|
+| =MIN(| =MAX(|=COUNTIF(|=AVERAGE(|
+| F7| F8| F9| |
+| F4| F5| F6| =SUM(|
+| F11| F12| F3| |
+| RAISE| | LOWER| )|
+
+## Raise
+| 1 | 2 | 3 | 4 |
+|:----:|:----:|:----:|:----:|
+| ESC| F2| =| DEL|
+| XXXXX| /| *| -|
+| XXXXX| UP| XXXXX| |
+| LEFT| DOWN| RIGHT| +|
+| XXXXX| DOWN| XXXXX| |
+| RAISE| | LOWER| ENT|
+
+## Adjust
+| 1 | 2 | 3 | 4 |
+|:----:|:----:|:----:|:----:|
+| ESC| F2| =| DEL|
+|ADJUST| XXXXX| XXXXX| -|
+|LED_SAD|LED_SAI| XXXXX| |
+|LED_HUD|LED_HUI| XXXXX| +|
+|LED_VAD|LED_VAI| XXXXX| |
+|LED_ON/Off| | XXXXX|LED_MOD|
+
diff --git a/keyboards/naked60/keymaps/default_with_setta21/rules.mk b/keyboards/naked60/keymaps/default_with_setta21/rules.mk
new file mode 100644
index 00000000000..b714c8f51f6
--- /dev/null
+++ b/keyboards/naked60/keymaps/default_with_setta21/rules.mk
@@ -0,0 +1,9 @@
+RGBLIGHT_ENABLE = yes
+
+# If your custom naked60 pcb, you can rewrite to yes.
+LED_ANIMATIONS = yes # LED animations
+
+ifeq ($(strip $(LED_ANIMATIONS)), yes)
+ # OPT_DEFS += -DRGBLIGHT_ANIMATIONS
+ OPT_DEFS += -DLED_ANIMATIONS
+endif
diff --git a/keyboards/naked60/keymaps/salicylic/config.h b/keyboards/naked60/keymaps/salicylic/config.h
new file mode 100644
index 00000000000..140a79c772c
--- /dev/null
+++ b/keyboards/naked60/keymaps/salicylic/config.h
@@ -0,0 +1,51 @@
+/* Copyright 2018 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
+
+#define MK_3_SPEED
+
+#undef MOUSEKEY_INTERVAL
+#define MOUSEKEY_INTERVAL 0
+
+#undef MOUSEKEY_TIME_TO_MAX
+#define MOUSEKEY_TIME_TO_MAX 150
+
+#undef MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_MAX_SPEED 3
+
+#undef MOUSEKEY_MOVE_DELTA
+#define MOUSEKEY_MOVE_DELTA 5
+
+#undef MOUSEKEY_DELAY
+#define MOUSEKEY_DELAY 0
+
+#undef MOUSEKEY_WHEEL_MAX_SPEED
+#define MOUSEKEY_WHEEL_MAX_SPEED 1
+
+#undef MOUSEKEY_WHEEL_TIME_TO_MAX
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
diff --git a/keyboards/naked60/keymaps/salicylic/keymap.c b/keyboards/naked60/keymaps/salicylic/keymap.c
new file mode 100644
index 00000000000..11d2e143105
--- /dev/null
+++ b/keyboards/naked60/keymaps/salicylic/keymap.c
@@ -0,0 +1,147 @@
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+
+extern keymap_config_t keymap_config;
+
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+extern uint8_t is_master;
+
+// 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.
+enum layer_number {
+ _QWERTY = 0,
+ _FLOCK,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ FLOCK = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST,
+ RGBRST
+};
+
+enum tapdances{
+ TD_ESFL = 0,
+ TD_ESQW,
+};
+
+// Fillers to make layering more clear
+#define KC_CT11 LCTL_T(KC_F11)
+#define KC_SF12 SFT_T(KC_F12)
+#define KC_LOEN LT(_LOWER, KC_ENT)
+#define KC_RASP LT(_RAISE, KC_SPC)
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //,-----------------------------------------------------| |-----------------------------------------------------.
+ TD(TD_ESFL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_RBRC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN, KC_LOEN, KC_BSPC, KC_DEL, KC_RASP, KC_HENK, KC_LALT, KC_DOWN, KC_UP
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+
+ [_FLOCK] = LAYOUT(
+ //,-----------------------------------------------------| |-----------------------------------------------------.
+ TD(TD_ESQW), KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+
+ [_LOWER] = LAYOUT(
+ //,-----------------------------------------------------| |-----------------------------------------------------.
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ JP_COLN, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, KC_ZKHK, LOWER, _______, _______, RAISE, KC_0, JP_DOT, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+
+ [_RAISE] = LAYOUT(
+ //,-----------------------------------------------------| |-----------------------------------------------------.
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_CT11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_SF12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT( /* Base */
+ //,-----------------------------------------------------| |-----------------------------------------------------.
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR),
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL),
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ )
+};
+
+static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+
+ pressed ? layer_on(layer1) : layer_off(layer1);
+ IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
+}
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ bool result = false;
+ switch (keycode) {
+ case LOWER:
+ update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
+ break;
+ case RAISE:
+ update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
+ break;
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
diff --git a/keyboards/naked60/keymaps/salicylic/readme.md b/keyboards/naked60/keymaps/salicylic/readme.md
new file mode 100644
index 00000000000..da212638167
--- /dev/null
+++ b/keyboards/naked60/keymaps/salicylic/readme.md
@@ -0,0 +1,53 @@
+# The salicylic keymap for naked60
+
+## Default
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ESC(FLock) | 1| 2| 3| 4| 5| | | 6| 7| 8| 9| 0| BSPC|
+| TAB | Q| W| E| R| T| | | Y| U| I| O| P| [|
+|LCTRL | A| S| D| F| G| | | H| J| K| L| -| ]|
+| LSFT | Z| X| C| V| B| | | N| M| ,| .| /| \ |
+| | LEFT| RIGHT| LGUI| MHEN|Low+Ent| BSPC| DEL|Rai+SPC| HENK| LALT| UP| DOWN| |
+
+
+
+## FLock
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ESC(FLock)|F2| F3| F4| F5| F6| | | F7| F8| F9| F10| F11| _____|
+| TAB | Q| W| E| R| T| | | Y| U| I| O| P| [|
+|LCTRL | A| S| D| F| G| | | H| J| K| L| -| ]|
+| LSFT | Z| X| C| V| B| | | N| M| ,| .| /| \ |
+| | LEFT| RIGHT| LGUI| MHEN|Low+Ent| BSPC| DEL|Rai+SPC| HENK| LALT| UP| DOWN| |
+
+
+## Lower
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ESC| F2| F3| F4| F5| F6| | | F7| F8| F9| F10| F11| F12|
+| :| !| ?| [| ]| ~| | | 6| 7| 8| 9| *| /|
+| '| #| "| (| )| @| | | XXXXX| 4| 5| 6| -| =|
+| ^| %| &| ;| :| PIPE| | | 0| 1| 2| 3| +| ENT|
+| | LEFT| RIGHT| LGUI| ZKHK| LOWER| BSPC| DEL| RAISE| 0| .| UP| DOWN| |
+
+
+## Raise
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ESC| F2| F3| F4| F5| F6| | | F7| F8| F9| F10| F11| F12|
+| ESC| 1| 2| 3| 4| 5| | | XXXXX| XXXXX| UP| XXXXX| PGUP| BSPC|
+|CtrlF11| F1| F2| F3| F4| F5| | | XXXXX| LEFT| DOWN| RIGHT| LSFT| ENT|
+|ShiftF12| F6| F7| F8| F9| F10| | | XXXXX| XXXXX| XXXXX| XXXXX| PGDN| XXXXX|
+| | LEFT| RIGHT| LGUI| ZKHK| LOWER| BSPC| DEL| RAISE| HENK| LALT| UP| DOWN| |
+
+
+
+## Adjust
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ESC| F2| F3| F4| F5| | | F6| F7| F8| F9| F10| F11| F12|
+| ESC| RST| XXXXX| XXXXX| XXXXX| XXXXX| | | XXXXX| BTN1| MS_U| BTN2| XXXXX|Alt+PSCR|
+| LCTRL| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| | | XXXXX| MS_L| MS_D| MS_R| XXXXX| PSCR|
+| LSFT| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| | | XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| C+A+D|
+| | LEFT| RIGHT| LGUI| ZKHK| LOWER| BSPC| DEL| RAISE| HENK| LALT| UP| DOWN| |
+
diff --git a/keyboards/naked60/keymaps/salicylic_with_nafuda/config.h b/keyboards/naked60/keymaps/salicylic_with_nafuda/config.h
new file mode 100644
index 00000000000..e188262cf92
--- /dev/null
+++ b/keyboards/naked60/keymaps/salicylic_with_nafuda/config.h
@@ -0,0 +1,90 @@
+/* Copyright 2018 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
+
+#define RGBLED_NUM 7
+
+#ifndef IOS_DEVICE_ENABLE
+ #define RGBLIGHT_LIMIT_VAL 180
+ #define RGBLIGHT_VAL_STEP 17
+#else
+ #define RGBLIGHT_LIMIT_VAL 50
+ #define RGBLIGHT_VAL_STEP 4
+#endif
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+
+#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
+// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
+// 120 RGBoff, OLEDoff
+// 120 OLED
+// 330 RGB 6
+// 300 RGB 32
+// 310 OLED & RGB 32
+ #define USB_MAX_POWER_CONSUMPTION 400
+#else
+ // fix iPhone and iPad power adapter issue
+ // iOS device need lessthan 100
+ #define USB_MAX_POWER_CONSUMPTION 100
+#endif
+
+// Selection of RGBLIGHT MODE to use.
+#if defined(LED_ANIMATIONS)
+ //#define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ //#define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ //#define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ //#define RGBLIGHT_EFFECT_RGB_TEST
+ //#define RGBLIGHT_EFFECT_ALTERNATING
+#endif
+
+#define MK_3_SPEED
+
+#undef MOUSEKEY_INTERVAL
+#define MOUSEKEY_INTERVAL 0
+
+#undef MOUSEKEY_TIME_TO_MAX
+#define MOUSEKEY_TIME_TO_MAX 150
+
+#undef MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_MAX_SPEED 3
+
+#undef MOUSEKEY_MOVE_DELTA
+#define MOUSEKEY_MOVE_DELTA 5
+
+#undef MOUSEKEY_DELAY
+#define MOUSEKEY_DELAY 0
+
+#undef MOUSEKEY_WHEEL_MAX_SPEED
+#define MOUSEKEY_WHEEL_MAX_SPEED 1
+
+#undef MOUSEKEY_WHEEL_TIME_TO_MAX
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
diff --git a/keyboards/naked60/keymaps/salicylic_with_nafuda/keymap.c b/keyboards/naked60/keymaps/salicylic_with_nafuda/keymap.c
new file mode 100644
index 00000000000..33ccdf603fb
--- /dev/null
+++ b/keyboards/naked60/keymaps/salicylic_with_nafuda/keymap.c
@@ -0,0 +1,207 @@
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+
+extern keymap_config_t keymap_config;
+
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+extern uint8_t is_master;
+
+// 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.
+enum layer_number {
+ _QWERTY = 0,
+ _FLOCK,
+ _MOUSE,
+ _BROWSER,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ FLOCK = SAFE_RANGE,
+ MOUSE,
+ BROWSER,
+ LOWER,
+ RAISE,
+ ADJUST,
+ RGBRST
+};
+
+enum tapdances{
+ TD_ESFL = 0,
+ TD_ESQW,
+};
+
+// Fillers to make layering more clear
+#define KC_CT11 LCTL_T(KC_F11)
+#define KC_SF12 SFT_T(KC_F12)
+#define KC_LOEN LT(_LOWER, KC_ENT)
+#define KC_RASP LT(_RAISE, KC_SPC)
+
+#define KC_RTAB LCTL(KC_TAB)
+#define KC_LTAB LCTL(LSFT(KC_TAB))
+#define KC_CTAB LCTL(KC_W)
+#define KC_RETAB LCTL(LSFT(KC_T))
+
+#define KC_TGMO TG(_MOUSE)
+#define KC_TGBR TG(_BROWSER)
+#define KC_BSAD LT(_ADJUST, KC_BSPC)
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_with_nafuda(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ TD(TD_ESFL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TGMO,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, KC_BSAD, KC_UP, KC_TGBR,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_RBRC, KC_LEFT, KC_DOWN,KC_RIGHT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN, KC_LOEN, KC_BSPC, KC_DEL, KC_RASP, KC_HENK, KC_LALT, KC_DOWN, KC_UP
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_FLOCK] = LAYOUT_with_nafuda(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ TD(TD_ESQW), KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_MOUSE] = LAYOUT_with_nafuda(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ TD(TD_ESFL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TGMO,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_BROWSER] = LAYOUT_with_nafuda(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CTAB,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RETAB, KC_WH_U, KC_TGBR,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LTAB, KC_WH_D, KC_RTAB,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_LOWER] = LAYOUT_with_nafuda(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TGMO,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ JP_COLN, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, KC_BSAD, KC_UP, KC_TGBR,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, KC_LEFT, KC_DOWN,KC_RIGHT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, KC_ZKHK, LOWER, _______, _______, RAISE, KC_0, JP_DOT, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_RAISE] = LAYOUT_with_nafuda(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TGMO,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, KC_DEL, KC_BSAD, KC_UP, KC_TGBR,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ KC_CT11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT, KC_ENT, KC_LEFT, KC_DOWN,KC_RIGHT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ KC_SF12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_with_nafuda( /* Base */
+ //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------|
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_VAD,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ _______, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), ADJUST, RGB_SAD, RGB_VAI,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
+ KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, RGB_MOD, RGB_TOG, RGB_SAI,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL),
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ )
+};
+
+static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+
+ pressed ? layer_on(layer1) : layer_off(layer1);
+ IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
+}
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ bool result = false;
+ switch (keycode) {
+ case LOWER:
+ update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
+ break;
+ case RAISE:
+ update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
+ break;
+ #ifdef RGBLIGHT_ENABLE
+ case RGB_MOD:
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
+ case RGBRST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
+ #endif
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
+
+void matrix_init_user(void) {
+ #ifdef RGBLIGHT_ENABLE
+ RGB_current_mode = rgblight_config.mode;
+ #endif
+}
diff --git a/keyboards/naked60/keymaps/salicylic_with_nafuda/readme.md b/keyboards/naked60/keymaps/salicylic_with_nafuda/readme.md
new file mode 100644
index 00000000000..8c83f7ea363
--- /dev/null
+++ b/keyboards/naked60/keymaps/salicylic_with_nafuda/readme.md
@@ -0,0 +1,32 @@
+# The salicylic_with_nafuda keymap for naked60
+
+Add Nafuda maps to the salicylic layout.
+
+## Default
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| | MOUSE| |
+| BS+Ad| UP|Browser|
+| LEFT| DOWN| RIGHT|
+
+## Mouse
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| |Default| |
+| BTN1| MS_U| BTN2|
+| MS_L| MS_D| MS_R|
+
+## Browser
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| |CloseTAB| |
+|ReOpenTAB|WH_U|Default|
+| LTAB| WH_D| RTAB|
+
+## Adjust
+| 1 | 2 | 3 |
+|:----:|:----:|:----:|
+| |LED_VAD| |
+|Default|LED_HUD|LED_VAI|
+|LED_MOD|LED_ON/Off|LED_HUI|
+
diff --git a/keyboards/naked60/keymaps/salicylic_with_nafuda/rules.mk b/keyboards/naked60/keymaps/salicylic_with_nafuda/rules.mk
new file mode 100644
index 00000000000..b714c8f51f6
--- /dev/null
+++ b/keyboards/naked60/keymaps/salicylic_with_nafuda/rules.mk
@@ -0,0 +1,9 @@
+RGBLIGHT_ENABLE = yes
+
+# If your custom naked60 pcb, you can rewrite to yes.
+LED_ANIMATIONS = yes # LED animations
+
+ifeq ($(strip $(LED_ANIMATIONS)), yes)
+ # OPT_DEFS += -DRGBLIGHT_ANIMATIONS
+ OPT_DEFS += -DLED_ANIMATIONS
+endif
diff --git a/keyboards/naked60/keymaps/salicylic_with_setta21/config.h b/keyboards/naked60/keymaps/salicylic_with_setta21/config.h
new file mode 100644
index 00000000000..fe162510d0b
--- /dev/null
+++ b/keyboards/naked60/keymaps/salicylic_with_setta21/config.h
@@ -0,0 +1,90 @@
+/* Copyright 2018 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
+
+#define RGBLED_NUM 21
+
+#ifndef IOS_DEVICE_ENABLE
+ #define RGBLIGHT_LIMIT_VAL 180
+ #define RGBLIGHT_VAL_STEP 17
+#else
+ #define RGBLIGHT_LIMIT_VAL 50
+ #define RGBLIGHT_VAL_STEP 4
+#endif
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+
+#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
+// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
+// 120 RGBoff, OLEDoff
+// 120 OLED
+// 330 RGB 6
+// 300 RGB 32
+// 310 OLED & RGB 32
+ #define USB_MAX_POWER_CONSUMPTION 400
+#else
+ // fix iPhone and iPad power adapter issue
+ // iOS device need lessthan 100
+ #define USB_MAX_POWER_CONSUMPTION 100
+#endif
+
+// Selection of RGBLIGHT MODE to use.
+#if defined(LED_ANIMATIONS)
+ //#define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ //#define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ //#define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ //#define RGBLIGHT_EFFECT_RGB_TEST
+ //#define RGBLIGHT_EFFECT_ALTERNATING
+#endif
+
+#define MK_3_SPEED
+
+#undef MOUSEKEY_INTERVAL
+#define MOUSEKEY_INTERVAL 0
+
+#undef MOUSEKEY_TIME_TO_MAX
+#define MOUSEKEY_TIME_TO_MAX 150
+
+#undef MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_MAX_SPEED 3
+
+#undef MOUSEKEY_MOVE_DELTA
+#define MOUSEKEY_MOVE_DELTA 5
+
+#undef MOUSEKEY_DELAY
+#define MOUSEKEY_DELAY 0
+
+#undef MOUSEKEY_WHEEL_MAX_SPEED
+#define MOUSEKEY_WHEEL_MAX_SPEED 1
+
+#undef MOUSEKEY_WHEEL_TIME_TO_MAX
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 0
diff --git a/keyboards/naked60/keymaps/salicylic_with_setta21/keymap.c b/keyboards/naked60/keymaps/salicylic_with_setta21/keymap.c
new file mode 100644
index 00000000000..4d2618c52db
--- /dev/null
+++ b/keyboards/naked60/keymaps/salicylic_with_setta21/keymap.c
@@ -0,0 +1,207 @@
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+
+extern keymap_config_t keymap_config;
+
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+extern uint8_t is_master;
+
+// 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.
+enum layer_number {
+ _QWERTY = 0,
+ _FLOCK,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ FLOCK = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST,
+ KANJI,
+ RGBRST,
+ SEND_SUM,
+ SEND_AVERAGE,
+ SEND_COUNTIF,
+ SEND_MAX,
+ SEND_MIN
+};
+
+enum tapdances{
+ TD_ESFL = 0,
+ TD_ESQW,
+};
+
+// Fillers to make layering more clear
+#define KC_CT11 LCTL_T(KC_F11)
+#define KC_SF12 SFT_T(KC_F12)
+#define KC_LOEN LT(_LOWER, KC_ENT)
+#define KC_RASP LT(_RAISE, KC_SPC)
+
+#define KC_SSUM SEND_SUM
+#define KC_SAVE SEND_AVERAGE
+#define KC_SCOU SEND_COUNTIF
+#define KC_SMAX SEND_MAX
+#define KC_SMIN SEND_MIN
+
+#define KC_RADO LT(_RAISE, KC_PDOT)
+#define KC_LOP0 LT(_LOWER, KC_P0)
+#define KC_ADNL LT(_ADJUST, KC_NLCK)
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_with_setta21(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
+ TD(TD_ESFL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_LOP0, KC_P1, KC_P4, KC_P7,KC_ADNL, KC_ESC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, KC_P2, KC_P5, KC_P8,KC_PSLS, KC_F2,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_RBRC, KC_RADO, KC_P3, KC_P6, KC_P9,KC_PAST, JP_EQL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
+ KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN, KC_LOEN, KC_BSPC, KC_DEL, KC_RASP, KC_HENK, KC_LALT, KC_DOWN, KC_UP
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_FLOCK] = LAYOUT_with_setta21(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
+ TD(TD_ESQW), KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,_______,_______,_______,_______,_______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______,_______,_______,_______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______,_______,_______,_______,_______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______,_______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_LOWER] = LAYOUT_with_setta21(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LOWER,XXXXXXX,KC_LEFT,XXXXXXX,XXXXXXX, KC_ESC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ JP_COLN, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, KC_DOWN,KC_DOWN, KC_UP,KC_PSLS, KC_F2,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, RAISE,XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST, JP_EQL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
+ JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
+ _______, _______, _______, KC_ZKHK, LOWER, _______, _______, RAISE, KC_0, JP_DOT, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_RAISE] = LAYOUT_with_setta21(
+ //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LOWER, KC_F11, KC_F4, KC_F7,KC_SMIN, KC_ESC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP, KC_DEL, KC_F12, KC_F5, KC_F8,KC_SMAX, KC_F2,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ KC_CT11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT, KC_ENT, RAISE, KC_F3, KC_F6, KC_F9,KC_SCOU, JP_EQL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
+ KC_SF12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, JP_RPRN, KC_SSUM,KC_SAVE, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_with_setta21( /* Base */
+ //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------|
+ KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LOWER,RGB_VAD,RGB_HUD,RGB_SAD, ADJUST,RGB_TOG,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ _______, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), RGB_VAI,RGB_HUI,RGB_SAI,XXXXXXX,_______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
+ KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, RAISE,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), RGB_MOD, _______,_______,_______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //`------------------------------------------------------------------------------------------------------------'
+ )
+};
+
+static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+
+ pressed ? layer_on(layer1) : layer_off(layer1);
+ IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
+}
+
+int RGB_current_mode;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ bool result = false;
+ switch (keycode) {
+ case LOWER:
+ update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
+ break;
+ case RAISE:
+ update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
+ break;
+ case SEND_SUM:
+ if (record->event.pressed) {
+ SEND_STRING("_SUM*");
+ }
+ break;
+ case SEND_AVERAGE:
+ if (record->event.pressed) {
+ SEND_STRING("_AVERAGE*");
+ }
+ break;
+ case SEND_COUNTIF:
+ if (record->event.pressed) {
+ SEND_STRING("_COUNTIF*");
+ }
+ break;
+ case SEND_MAX:
+ if (record->event.pressed) {
+ SEND_STRING("_MAX*");
+ }
+ break;
+ case SEND_MIN:
+ if (record->event.pressed) {
+ SEND_STRING("_MIN*");
+ }
+ break;
+ #ifdef RGBLIGHT_ENABLE
+ case RGB_MOD:
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
+ case RGBRST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ break;
+ #endif
+ default:
+ result = true;
+ break;
+ }
+
+ return result;
+}
+
+void matrix_init_user(void) {
+ #ifdef RGBLIGHT_ENABLE
+ RGB_current_mode = rgblight_config.mode;
+ #endif
+}
diff --git a/keyboards/naked60/keymaps/salicylic_with_setta21/readme.md b/keyboards/naked60/keymaps/salicylic_with_setta21/readme.md
new file mode 100644
index 00000000000..0912d5431a0
--- /dev/null
+++ b/keyboards/naked60/keymaps/salicylic_with_setta21/readme.md
@@ -0,0 +1,44 @@
+# The salicylic_with_setta21 keymap for naked60
+
+Add Setta21 maps to the salicylic layout.
+
+## Default
+| 1 | 2 | 3 | 4 |
+|:----:|:----:|:----:|:----:|
+| ESC| F2| =| DEL|
+|Ad+Num| /| *| -|
+| 7| 8| 9| |
+| 4| 5| 6| +|
+| 1| 2| 3| |
+| Rai+0| | LOW + .| ENT|
+
+## Lower
+| 1 | 2 | 3 | 4 |
+|:----:|:----:|:----:|:----:|
+| ESC| F2| =| DEL|
+| =MIN(| =MAX(|=COUNTIF(|=AVERAGE(|
+| F7| F8| F9| |
+| F4| F5| F6| =SUM(|
+| F11| F12| F3| |
+| RAISE| | LOWER| )|
+
+## Raise
+| 1 | 2 | 3 | 4 |
+|:----:|:----:|:----:|:----:|
+| ESC| F2| =| DEL|
+| XXXXX| /| *| -|
+| XXXXX| UP| XXXXX| |
+| LEFT| DOWN| RIGHT| +|
+| XXXXX| DOWN| XXXXX| |
+| RAISE| | LOWER| ENT|
+
+## Adjust
+| 1 | 2 | 3 | 4 |
+|:----:|:----:|:----:|:----:|
+| ESC| F2| =| DEL|
+|ADJUST| XXXXX| XXXXX| -|
+|LED_SAD|LED_SAI| XXXXX| |
+|LED_HUD|LED_HUI| XXXXX| +|
+|LED_VAD|LED_VAI| XXXXX| |
+|LED_ON/Off| | XXXXX|LED_MOD|
+
diff --git a/keyboards/naked60/keymaps/salicylic_with_setta21/rules.mk b/keyboards/naked60/keymaps/salicylic_with_setta21/rules.mk
new file mode 100644
index 00000000000..15a887e7813
--- /dev/null
+++ b/keyboards/naked60/keymaps/salicylic_with_setta21/rules.mk
@@ -0,0 +1,10 @@
+RGBLIGHT_ENABLE = yes
+
+# If your custom naked60 pcb, you can rewrite to yes.
+LED_ANIMATIONS = yes # LED animations
+
+ifeq ($(strip $(LED_ANIMATIONS)), yes)
+ # OPT_DEFS += -DRGBLIGHT_ANIMATIONS
+ OPT_DEFS += -DLED_ANIMATIONS
+endif
+
diff --git a/keyboards/naked60/naked60.c b/keyboards/naked60/naked60.c
new file mode 100644
index 00000000000..1ff159cdb41
--- /dev/null
+++ b/keyboards/naked60/naked60.c
@@ -0,0 +1 @@
+#include "naked60.h"
diff --git a/keyboards/naked60/naked60.h b/keyboards/naked60/naked60.h
new file mode 100644
index 00000000000..fde791c5ef8
--- /dev/null
+++ b/keyboards/naked60/naked60.h
@@ -0,0 +1,12 @@
+#pragma once
+
+#ifdef KEYBOARD_naked60_rev1
+ #include "rev1.h"
+#endif
+
+#include "quantum.h"
+
+#ifdef PROTOCOL_LUFA
+#include "lufa.h"
+#include "split_util.h"
+#endif
diff --git a/keyboards/naked60/readme.md b/keyboards/naked60/readme.md
new file mode 100644
index 00000000000..60bb1643772
--- /dev/null
+++ b/keyboards/naked60/readme.md
@@ -0,0 +1,18 @@
+# naked60
+
+
+
+This is 60 keys modification Ortholinear keyboard.
+
+Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
+Hardware Supported: Naked60BMP PCB, Pro Micro
+Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/PCB_Data), [Booth Shop](https://salicylic-acid3.booth.pm/items/1360780)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make naked60:default:avrdude
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+[Build guide](https://salicylic-acid3.hatenablog.com/entry/naked60bmp-build-guide)
+[Firmware](https://github.com/Salicylic-acid3/qmk_firmware/tree/master/keyboards/naked60)
diff --git a/keyboards/naked60/rev1/config.h b/keyboards/naked60/rev1/config.h
new file mode 100644
index 00000000000..1724ef060af
--- /dev/null
+++ b/keyboards/naked60/rev1/config.h
@@ -0,0 +1,119 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x3060
+#define DEVICE_VER 0x0002
+#define MANUFACTURER Salicylic_Acid
+#define PRODUCT naked60
+#define DESCRIPTION Ortholinear 60 Keys Keyboard
+
+/* Use I2C or Serial */
+//#define USE_I2C
+#define USE_SERIAL
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+// OLED support
+// see ./rules.mk: OLED_ENABLE=yes or no
+#ifdef OLED_ENABLE
+ #define SSD1306OLED
+#endif
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 14
+
+// Rows are doubled-up
+#define MATRIX_ROW_PINS { B6, D1, D0, D4, C6 }
+
+// wiring of each half
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, D7, E6, B4, B5, D3 }
+// #define MATRIX_COL_PINS { D3, B5, B4, E6, D7, B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+//#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+//#define LOCKING_RESYNC_ENABLE
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+#define RGBLIGHT_TIMER
+
+// naked60 keyboard RGB LED support
+//#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no
+// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
+//#define RGBLED_NUM 21
+
+#ifndef IOS_DEVICE_ENABLE
+ #define RGBLIGHT_LIMIT_VAL 180
+ #define RGBLIGHT_VAL_STEP 17
+#else
+ #define RGBLIGHT_LIMIT_VAL 50
+ #define RGBLIGHT_VAL_STEP 4
+#endif
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+
+#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
+// USB_MAX_POWER_CONSUMPTION value for naked60 keyboard
+// 120 RGBoff, OLEDoff
+// 120 OLED
+// 330 RGB 6
+// 300 RGB 32
+// 310 OLED & RGB 32
+ #define USB_MAX_POWER_CONSUMPTION 400
+#else
+ // fix iPhone and iPad power adapter issue
+ // iOS device need lessthan 100
+ #define USB_MAX_POWER_CONSUMPTION 100
+#endif
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+// #define NO_DEBUG
+
+/* disable print */
+// #define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/naked48/rev1/matrix.c b/keyboards/naked60/rev1/matrix.c
similarity index 100%
rename from keyboards/naked48/rev1/matrix.c
rename to keyboards/naked60/rev1/matrix.c
diff --git a/keyboards/naked60/rev1/rev1.c b/keyboards/naked60/rev1/rev1.c
new file mode 100644
index 00000000000..520a869e57b
--- /dev/null
+++ b/keyboards/naked60/rev1/rev1.c
@@ -0,0 +1 @@
+#include "rev1.h"
diff --git a/keyboards/naked60/rev1/rev1.h b/keyboards/naked60/rev1/rev1.h
new file mode 100644
index 00000000000..38e355cfcf0
--- /dev/null
+++ b/keyboards/naked60/rev1/rev1.h
@@ -0,0 +1,97 @@
+#pragma once
+
+#include "naked60.h"
+
+#include "quantum.h"
+
+#ifdef RGBLIGHT_ENABLE
+//rgb led driver
+#include "ws2812.h"
+#endif
+
+
+//////////////////////////////////////////////////////////////////////////////
+// When only use naked60.
+//////////////////////////////////////////////////////////////////////////////
+/*
+ * ,------------------------------------ ------------------------------------.
+ * | L00 | L01 | L02 | L03 | L04 | L05 | | L06 | L07 | L08 | L09 | L0A | L0B |
+ * |------------------------------------ ------------------------------------+
+ * | L10 | L11 | L12 | L13 | L14 | L15 | | L16 | L17 | L18 | L19 | L1A | L1B |
+ * |------------------------------------ ------------------------------------+
+ * | L20 | L21 | L22 | L23 | L24 | L25 | | L26 | L17 | L28 | L29 | L2A | L2B |
+ * |------------------------------------ ------------------------------------+
+ * | L30 | L31 | L32 | L33 | L34 | L35 | | L36 | L37 | L38 | L39 | L3A | L3B |
+ * |-----------------------------------------------------------------------'
+ * | L40 | L41 | L42 | L43 | L44 | L45 | L46 | L47 | L48 | L49 | L4A | L4B |
+ * |-----------------------------------------------------------------------'
+ */
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, L0A, L0B, \
+ L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L1A, L1B, \
+ L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, L2A, L2B, \
+ L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L3A, L3B, \
+ L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, L4A, L4B \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, L0A, L0B }, \
+ { L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L1A, L1B }, \
+ { L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, L2A, L2B }, \
+ { L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L3A, L3B }, \
+ { L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, L4A, L4B }, \
+ {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO } \
+ }
+
+//////////////////////////////////////////////////////////////////////////////
+// When connecting Setta21 to naked60.
+//////////////////////////////////////////////////////////////////////////////
+
+#define LAYOUT_with_setta21( \
+ L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, L0A, L0B, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L1A, L1B, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, L2A, L2B, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L3A, L3B, R30, R32, R34, R35, \
+ L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, L4A, L4B \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, L0A, L0B,KC_NO,KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L1A, L1B,KC_NO,KC_NO }, \
+ { L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, L2A, L2B,KC_NO,KC_NO }, \
+ { L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L3A, L3B,KC_NO,KC_NO }, \
+ { L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, L4A, L4B,KC_NO,KC_NO }, \
+ { R00, R01, R02, R03, R04, R05,KC_NO,KC_NO,KC_NO, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25,KC_NO,KC_NO, R30,KC_NO, R32,KC_NO, R34, R35 }, \
+ {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO } \
+ }
+
+//////////////////////////////////////////////////////////////////////////////
+// When connecting Nafuda to naked60.
+//////////////////////////////////////////////////////////////////////////////
+
+#define LAYOUT_with_nafuda( \
+ L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, L0A, L0B, R01, \
+ L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L1A, L1B, R10, R11, R12, \
+ L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, L2A, L2B, R20, R21, R22, \
+ L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L3A, L3B, \
+ L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, L4A, L4B \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, L0A, L0B,KC_NO,KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L1A, L1B,KC_NO,KC_NO }, \
+ { L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, L2A, L2B,KC_NO,KC_NO }, \
+ { L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L3A, L3B,KC_NO,KC_NO }, \
+ { L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, L4A, L4B,KC_NO,KC_NO }, \
+ {KC_NO, R01,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, R10, R11, R12,KC_NO,KC_NO,KC_NO }, \
+ { R20, R21, R22,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO }, \
+ {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO } \
+ }
+
diff --git a/keyboards/naked60/rev1/rules.mk b/keyboards/naked60/rev1/rules.mk
new file mode 100644
index 00000000000..a7118103338
--- /dev/null
+++ b/keyboards/naked60/rev1/rules.mk
@@ -0,0 +1,3 @@
+SRC += matrix.c \
+ split_util.c \
+ split_scomm.c
diff --git a/keyboards/helix/rev2/serial_config.h b/keyboards/naked60/rev1/serial_config.h
similarity index 100%
rename from keyboards/helix/rev2/serial_config.h
rename to keyboards/naked60/rev1/serial_config.h
diff --git a/keyboards/naked48/rev1/serial_config_simpleapi.h b/keyboards/naked60/rev1/serial_config_simpleapi.h
similarity index 100%
rename from keyboards/naked48/rev1/serial_config_simpleapi.h
rename to keyboards/naked60/rev1/serial_config_simpleapi.h
diff --git a/keyboards/naked48/rev1/split_scomm.c b/keyboards/naked60/rev1/split_scomm.c
similarity index 100%
rename from keyboards/naked48/rev1/split_scomm.c
rename to keyboards/naked60/rev1/split_scomm.c
diff --git a/keyboards/naked48/rev1/split_scomm.h b/keyboards/naked60/rev1/split_scomm.h
similarity index 100%
rename from keyboards/naked48/rev1/split_scomm.h
rename to keyboards/naked60/rev1/split_scomm.h
diff --git a/keyboards/naked48/rev1/split_util.c b/keyboards/naked60/rev1/split_util.c
similarity index 100%
rename from keyboards/naked48/rev1/split_util.c
rename to keyboards/naked60/rev1/split_util.c
diff --git a/keyboards/naked48/rev1/split_util.h b/keyboards/naked60/rev1/split_util.h
similarity index 100%
rename from keyboards/naked48/rev1/split_util.h
rename to keyboards/naked60/rev1/split_util.h
diff --git a/keyboards/naked60/rules.mk b/keyboards/naked60/rules.mk
new file mode 100644
index 00000000000..fc2fe303204
--- /dev/null
+++ b/keyboards/naked60/rules.mk
@@ -0,0 +1,40 @@
+QUANTUM_LIB_SRC += serial.c
+
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+TAP_DANCE_ENABLE = yes
+SUBPROJECT_rev1 = no
+USE_I2C = no
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+CUSTOM_MATRIX = yes
+
+DEFAULT_FOLDER = naked60/rev1
diff --git a/keyboards/naked48/serial.c b/keyboards/naked60/serial.c
similarity index 100%
rename from keyboards/naked48/serial.c
rename to keyboards/naked60/serial.c
diff --git a/keyboards/naked48/serial.h b/keyboards/naked60/serial.h
similarity index 100%
rename from keyboards/naked48/serial.h
rename to keyboards/naked60/serial.h
diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c
index f0ba47b2a9b..47394378c58 100644
--- a/keyboards/planck/keymaps/default/keymap.c
+++ b/keyboards/planck/keymaps/default/keymap.c
@@ -209,12 +209,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
backlight_step();
#endif
#ifdef KEYBOARD_planck_rev5
- PORTE &= ~(1<<6);
+ writePinLow(E6);
#endif
} else {
unregister_code(KC_RSFT);
#ifdef KEYBOARD_planck_rev5
- PORTE |= (1<<6);
+ writePinHigh(E6);
#endif
}
return false;
diff --git a/keyboards/planck/keymaps/smittey/config.h b/keyboards/planck/keymaps/smittey/config.h
new file mode 100644
index 00000000000..17ffcca383d
--- /dev/null
+++ b/keyboards/planck/keymaps/smittey/config.h
@@ -0,0 +1,16 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+#define MIDI_BASIC
+
+// Most tactile encoders have detents every 4 stages
+#define ENCODER_RESOLUTION 4
diff --git a/keyboards/planck/keymaps/smittey/keymap.c b/keyboards/planck/keymaps/smittey/keymap.c
new file mode 100644
index 00000000000..fd5e91fb913
--- /dev/null
+++ b/keyboards/planck/keymaps/smittey/keymap.c
@@ -0,0 +1,375 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _PLOVER,
+ _ADJUST,
+ _FN,
+ _SPACE_FN
+};
+
+enum planck_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ DVORAK,
+ PLOVER,
+ BACKLIT,
+ EXT_PLV
+};
+
+// Fillers to make layering more clear
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define FN MO(_FN)
+#define SPACE_FN LT(_SPACE_FN, KC_SPC)
+
+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 | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | FN | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_QWERTY] = LAYOUT_planck_grid(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_LSFT, KC_ENT),
+ KC_LCTL, FN, KC_LALT, KC_LGUI, LOWER, SPACE_FN, SPACE_FN, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+
+ /* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | * | 4 | 5 | 6 | - | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | / | 1 | 2 | 3 | + |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | Space | | 0 | . | = | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_LOWER] = LAYOUT_planck_grid(
+ XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ASTR, KC_4, KC_5, KC_6, KC_MINS, XXXXXXX,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLSH, KC_1, KC_2, KC_3, KC_PLUS, MT(MOD_LSFT, KC_ENT),
+ _______, XXXXXXX, _______, _______, _______, KC_SPC, KC_SPC, _______, KC_0, KC_DOT, KC_EQL, XXXXXXX
+ ),
+
+ /* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | ! | " | £ | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | ~ | # | / | { | [ | ] | } | \ | - | = | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | _ | + |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | Space | | Home | PgDn | PgUp | End |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_RAISE] = LAYOUT_planck_grid(
+ KC_GRV, KC_EXLM, KC_DQUO, LALT(KC_4), KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ XXXXXXX, KC_TILD, KC_NUHS, KC_SLSH, KC_LCBR, KC_LBRC, KC_RBRC, KC_RCBR, KC_BSLS, KC_MINS, KC_EQL, KC_PIPE,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, MT(MOD_LSFT, KC_ENT),
+ _______, XXXXXXX, _______, _______, _______, KC_SPC, KC_SPC, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+ ),
+
+
+ /* fn
+ * ,-----------------------------------------------------------------------------------.
+ * |DelWrd| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | F11 | F12 | | | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | | | Enter|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | Space | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_FN] = LAYOUT_planck_grid(
+ LALT(KC_BSPC), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ XXXXXXX, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+
+
+ /* Space fn
+ * ,-----------------------------------------------------------------------------------.
+ * |PRNT SC| | UP | | | | | | | | |SLEEP |
+ * |-------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | LEFT | DOWN | RIGHT| | | | LEFT | DOWN | UP | RIGHT| |
+ * |-------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |-------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | MUTE |VOLDWN|VOL UP| |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_SPACE_FN] = LAYOUT_planck_grid(
+ KC_PSCR, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP,
+ XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, KC__MUTE, KC__VOLDOWN, KC__VOLUP, XXXXXXX
+ ),
+
+
+ /* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | Reset|Qwerty| | | | | | | |MIDIof|MIDIon| Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Dvorak| |AGnorm|AGswap| | |Audoff|Aud on| |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | |Colemk| | | | | |Musoff|Mus on| |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Plover| | | | | | | |Voice-|Voice+| |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_ADJUST] = LAYOUT_planck_grid(
+ RESET, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MI_OFF, MI_ON, KC_DEL,
+ XXXXXXX, XXXXXXX, XXXXXXX, DVORAK, XXXXXXX, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, AU_OFF, AU_ON, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, TERM_ON, TERM_OFF, MU_OFF, MU_ON, XXXXXXX,
+ PLOVER, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, MUV_DE, MUV_IN, XXXXXXX
+ ),
+
+
+ /* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_COLEMAK] = LAYOUT_planck_grid(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_LSFT, KC_ENT),
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+
+ /* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S | / |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_DVORAK] = LAYOUT_planck_grid(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MT(MOD_LSFT, KC_ENT),
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+
+ /* Plover layer (http://opensteno.org)
+ * ,-----------------------------------------------------------------------------------.
+ * | # | # | # | # | # | # | # | # | # | # | # | # |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | S | T | P | H | * | * | F | P | L | T | D |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | S | K | W | R | * | * | R | B | G | S | Z |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Exit | | | A | O | | E | U | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+ [_PLOVER] = LAYOUT_planck_grid(
+ KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1,
+ XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+};
+
+#ifdef AUDIO_ENABLE
+ float plover_song[][2] = SONG(PLOVER_SOUND);
+ float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
+#endif
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return true;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return true;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return true;
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ #ifdef KEYBOARD_planck_rev5
+ writePinLow(E6);
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ #ifdef KEYBOARD_planck_rev5
+ writePinHigh(E6);
+ #endif
+ }
+ return true;
+ case PLOVER:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ PLAY_SONG(plover_song);
+ #endif
+ layer_off(_RAISE);
+ layer_off(_LOWER);
+ layer_off(_ADJUST);
+ layer_on(_PLOVER);
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+ }
+ return true;
+ case EXT_PLV:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_gb_song);
+ #endif
+ layer_off(_PLOVER);
+ }
+ return true;
+ }
+ return true;
+}
+
+bool muse_mode = false;
+uint8_t last_muse_note = 0;
+uint16_t muse_counter = 0;
+uint8_t muse_offset = 70;
+uint16_t muse_tempo = 50;
+
+void encoder_update(bool clockwise) {
+ if (muse_mode) {
+ if (IS_LAYER_ON(_RAISE)) {
+ if (clockwise) {
+ muse_offset++;
+ } else {
+ muse_offset--;
+ }
+ } else {
+ if (clockwise) {
+ muse_tempo+=1;
+ } else {
+ muse_tempo-=1;
+ }
+ }
+ } else {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+}
+
+void dip_update(uint8_t index, bool active) {
+ switch (index) {
+ case 0:
+ if (active) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_song);
+ #endif
+ layer_on(_ADJUST);
+ } else {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_gb_song);
+ #endif
+ layer_off(_ADJUST);
+ }
+ break;
+ case 1:
+ if (active) {
+ muse_mode = true;
+ } else {
+ muse_mode = false;
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ #endif
+ }
+ }
+}
+
+void matrix_scan_user(void) {
+ #ifdef AUDIO_ENABLE
+ if (muse_mode) {
+ if (muse_counter == 0) {
+ uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+ if (muse_note != last_muse_note) {
+ stop_note(compute_freq_for_midi_note(last_muse_note));
+ play_note(compute_freq_for_midi_note(muse_note), 0xF);
+ last_muse_note = muse_note;
+ }
+ }
+ muse_counter = (muse_counter + 1) % muse_tempo;
+ }
+ #endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/planck/keymaps/smittey/readme.md b/keyboards/planck/keymaps/smittey/readme.md
new file mode 100644
index 00000000000..28084765509
--- /dev/null
+++ b/keyboards/planck/keymaps/smittey/readme.md
@@ -0,0 +1,28 @@
+# Planck Layout created by [Smittey](https://github.com/smittey)
+
+A layout with a focus around coding, utilising the home row for symbols. There is an additional FN layer and Space function layer
+
+Main - Qwerty with ctrl swapped around and enter changed to be shift on hold
+Lower - Numbers and calculations
+Raise - Symbols
+Adjust - Keyboard settings and layout changers
+FN - Function keys
+Space FN - Navigation and media
+
+## Main
+
+
+## Lower
+
+
+## Raise
+
+
+## Adjust
+
+
+## FN
+
+
+## Space Function
+
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/smittey/rules.mk b/keyboards/planck/keymaps/smittey/rules.mk
new file mode 100644
index 00000000000..acf0896a321
--- /dev/null
+++ b/keyboards/planck/keymaps/smittey/rules.mk
@@ -0,0 +1 @@
+SRC += muse.c
\ No newline at end of file
diff --git a/keyboards/planck/planck.c b/keyboards/planck/planck.c
index d9e3f00f2b8..5a65d5e5f3e 100644
--- a/keyboards/planck/planck.c
+++ b/keyboards/planck/planck.c
@@ -14,8 +14,8 @@ __attribute__ ((weak))
void matrix_init_kb(void) {
// Turn status LED on
#ifdef __AVR__
- DDRE |= (1<<6);
- PORTE |= (1<<6);
+ setPinOutput(E6);
+ writePinHigh(E6);
#endif
matrix_init_user();
@@ -26,4 +26,4 @@ const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_planck_grid(
24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
-);
\ No newline at end of file
+);
diff --git a/keyboards/preonic/keymaps/cranium/config.h b/keyboards/preonic/keymaps/cranium/config.h
new file mode 100644
index 00000000000..6d73958adf8
--- /dev/null
+++ b/keyboards/preonic/keymaps/cranium/config.h
@@ -0,0 +1,38 @@
+#pragma once
+
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PREONIC_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+#define MUSIC_MASK (keycode != KC_NO)
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
diff --git a/keyboards/preonic/keymaps/cranium/keymap.c b/keyboards/preonic/keymaps/cranium/keymap.c
new file mode 100644
index 00000000000..d640ff84943
--- /dev/null
+++ b/keyboards/preonic/keymaps/cranium/keymap.c
@@ -0,0 +1,224 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+
+enum preonic_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+enum preonic_keycodes {
+ LOWER = SAFE_RANGE,
+ RAISE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty (base layer)
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Esc |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Bksp | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | F12 | GUI | Alt |Lower | Space |Raise |AltGr | [ | ] |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_preonic_grid(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ESC,
+ KC_BSPC, 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_BSLS,
+ KC_LCTL, KC_F12, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_RALT, KC_LBRC, KC_RBRC, KC_ENT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | + | = | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | LGUI | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | 4 | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | _ | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_preonic_grid(
+ KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_PLUS, KC_EQL, _______, _______,
+ KC_LGUI, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, KC_4, _______,
+ _______, _______, _______, _______, _______, KC_UNDS, KC_UNDS, _______, _______, _______, _______, _______
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | Up | Down | Left |Right | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | Home | End | | | Shift|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | _ | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_preonic_grid(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UP, KC_DOWN, KC_LEFT, KC_RIGHT,_______,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_END, _______, _______, KC_RSFT,
+ _______, _______, _______, _______, _______, KC_UNDS, KC_UNDS, _______, _______, _______, _______, _______
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | Sleep|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Reset| Debug| | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|AudOff|AGnorm|AGswap| Vol+ | Vol- | Prev | Next | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | Play | | | | | PrScr|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_preonic_grid(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLEP,
+ _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, _______,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_VOLU, KC_VOLD, KC_MPRV, KC_MNXT, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, _______, _______, _______, KC_PSCR
+)
+
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ }
+ return true;
+};
+
+bool muse_mode = false;
+uint8_t last_muse_note = 0;
+uint16_t muse_counter = 0;
+uint8_t muse_offset = 70;
+uint16_t muse_tempo = 50;
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (muse_mode) {
+ if (IS_LAYER_ON(_RAISE)) {
+ if (clockwise) {
+ muse_offset++;
+ } else {
+ muse_offset--;
+ }
+ } else {
+ if (clockwise) {
+ muse_tempo+=1;
+ } else {
+ muse_tempo-=1;
+ }
+ }
+ } else {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+}
+
+void dip_update(uint8_t index, bool active) {
+ switch (index) {
+ case 0:
+ if (active) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ break;
+ case 1:
+ if (active) {
+ muse_mode = true;
+ } else {
+ muse_mode = false;
+ }
+ }
+}
+
+void matrix_scan_user(void) {
+ #ifdef AUDIO_ENABLE
+ if (muse_mode) {
+ if (muse_counter == 0) {
+ uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+ if (muse_note != last_muse_note) {
+ stop_note(compute_freq_for_midi_note(last_muse_note));
+ play_note(compute_freq_for_midi_note(muse_note), 0xF);
+ last_muse_note = muse_note;
+ }
+ }
+ muse_counter = (muse_counter + 1) % muse_tempo;
+ } else {
+ if (muse_counter) {
+ stop_all_notes();
+ muse_counter = 0;
+ }
+ }
+ #endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/preonic/keymaps/cranium/readme.md b/keyboards/preonic/keymaps/cranium/readme.md
new file mode 100644
index 00000000000..0f1d99598c9
--- /dev/null
+++ b/keyboards/preonic/keymaps/cranium/readme.md
@@ -0,0 +1,72 @@
+# Cranium's Preonic layout
+
+This layout is based on the Preonic default with some changes I find interesting to share.
+
+## Default layer
+```
+ ,-----------------------------------------------------------------------------------.
+ | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc |
+ |------|------|------|------|------|------|------|------|------|------|------|------|
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | Esc |
+ |------|------|------|------|------|-------------|------|------|------|------|------|
+ | Bksp | A | S | D | F | G | H | J | K | L | ; | " |
+ |------|------|------|------|------|------|------|------|------|------|------|------|
+ | Shift| Z | X | C | V | B | N | M | , | . | / | | |
+ |------|------|------|------|------|------|------|------|------|------|------|------|
+ | Ctrl | F12 | GUI | Alt |Lower | Space |Raise |AltGr | [ | ] |Enter |
+ `-----------------------------------------------------------------------------------'
+```
+- As a Colemak user, Capslock was rebound to Backspace.
+- Escape was moved to the top-right of the keyboard
+- Enter was moved to the bottom-right of the keyboard. It's now easy to hit and can even be activated with the palm.
+- An F12 was put next to the left CTRL => it's the shortcut I use to toggle the Guake terminal.
+- I don't really use the key below my Escape (top-right, 2nd row), so I'll consider any ideas for the moment.
+
+
+## Lower
+```
+ ,-----------------------------------------------------------------------------------.
+ | ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 |
+ |------|------|------|------|------|-------------|------|------|------|------|------|
+ | | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
+ |------|------|------|------|------|-------------|------|------|------|------|------|
+ | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | + | = | | |
+ |------|------|------|------|------|------|------|------|------|------|------|------|
+ | LGUI | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | 4 | |
+ |------|------|------|------|------|------|------|------|------|------|------|------|
+ | | | | | | _ | | | | | |
+ `-----------------------------------------------------------------------------------'
+```
+- Not much changes here
+
+## Raise
+```
+ ,-----------------------------------------------------------------------------------.
+ | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ |------|------|------|------|------|------|------|------|------|------|------|------|
+ | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ |------|------|------|------|------|-------------|------|------|------|------|------|
+ | Del | F1 | F2 | F3 | F4 | F5 | F6 | Up | Down | Left |Right | |
+ |------|------|------|------|------|------|------|------|------|------|------|------|
+ | | F7 | F8 | F9 | F10 | F11 | F12 | Home | End | | | Shift|
+ |------|------|------|------|------|------|------|------|------|------|------|------|
+ | | | | | | _ | | | | | |
+ `-----------------------------------------------------------------------------------'
+```
+- Perhaps one of the most interesting change: the arrow keys were moved to the right-hand home row, activated with the Raise layer. It means I can use the arrow keys without moving my hand from the home row, by activating the Raise layer with my thumb. It took a while to adapt but it was totally worth it. To note, I also put Home/End on the same layer but one row below, with I also find really useful.
+
+## Adjust
+```
+ ,-----------------------------------------------------------------------------------.
+ | | | | | | | | | | | | Sleep|
+ |------|------|------|------|------|------|------|------|------|------|------|------|
+ | | Reset| Debug| | | | | | | | | |
+ |------|------|------|------|------|-------------|------|------|------|------|------|
+ | | | |Aud on|AudOff|AGnorm|AGswap| Vol+ | Vol- | Prev | Next | |
+ |------|------|------|------|------|------|------|------|------|------|------|------|
+ | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
+ |------|------|------|------|------|------|------|------|------|------|------|------|
+ | | | | | | Play | | | | | PrScr|
+ `-----------------------------------------------------------------------------------'
+```
+- The "arrow" keys act as Vol+/Vol-/Previous/Next on the Adjust layer (which is quite a natural mapping for these media keys).
diff --git a/keyboards/preonic/keymaps/cranium/rules.mk b/keyboards/preonic/keymaps/cranium/rules.mk
new file mode 100644
index 00000000000..dcf16bef399
--- /dev/null
+++ b/keyboards/preonic/keymaps/cranium/rules.mk
@@ -0,0 +1 @@
+SRC += muse.c
diff --git a/keyboards/preonic/keymaps/default/keymap.c b/keyboards/preonic/keymaps/default/keymap.c
index 49cc64dc959..d8bb2d5f754 100644
--- a/keyboards/preonic/keymaps/default/keymap.c
+++ b/keyboards/preonic/keymaps/default/keymap.c
@@ -213,12 +213,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
backlight_step();
#endif
#ifdef __AVR__
- PORTE &= ~(1<<6);
+ writePinLow(E6);
#endif
} else {
unregister_code(KC_RSFT);
#ifdef __AVR__
- PORTE |= (1<<6);
+ writePinHigh(E6);
#endif
}
return false;
diff --git a/keyboards/preonic/keymaps/laurentlaurent/config.h b/keyboards/preonic/keymaps/laurentlaurent/config.h
new file mode 100644
index 00000000000..36944e9c686
--- /dev/null
+++ b/keyboards/preonic/keymaps/laurentlaurent/config.h
@@ -0,0 +1,41 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PREONIC_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+#define MUSIC_MASK (keycode != KC_NO)
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+// Fix Home Row mod keys
+#define IGNORE_MOD_TAP_INTERRUPT
+//#define RETRO_TAPPING
\ No newline at end of file
diff --git a/keyboards/preonic/keymaps/laurentlaurent/keymap.c b/keyboards/preonic/keymaps/laurentlaurent/keymap.c
new file mode 100644
index 00000000000..c113bcaf64e
--- /dev/null
+++ b/keyboards/preonic/keymaps/laurentlaurent/keymap.c
@@ -0,0 +1,603 @@
+/* Laurent's Preonic Layout
+ */
+
+// For IntelliSense
+ #ifdef __INTELLISENSE__
+ #include "../../rev3/config.h"
+ #include "../../rev3/rev3.h"
+ enum dynamic_macro_keycodes {
+ DYN_REC_START1 = DYNAMIC_MACRO_RANGE,
+ DYN_REC_START2,
+ DYN_REC_STOP,
+ DYN_MACRO_PLAY1,
+ DYN_MACRO_PLAY2,
+ };
+ #define QMK_KEYBOARD_H "rev3.h"
+ #endif
+
+ #include QMK_KEYBOARD_H
+ #include "muse.h"
+
+// ==== These keys allows usage of the home row as modifiers (when held) ====
+// Very bad for gaming, switch to gaming layout
+
+ // For _QWERTY_MAC
+ // S and L into Ctrl
+ #define LCT_S LCTL_T(KC_S)
+ #define LCT_L LCTL_T(KC_L)
+ // F, J and Z into CMD
+ #define LWN_F LGUI_T(KC_F)
+ #define LWN_Z LGUI_T(KC_Z)
+ #define LWN_J LGUI_T(KC_J)
+
+ // For _QWERTY_WIN
+ // S and L into WIN
+ #define LWN_S LGUI_T(KC_S)
+ #define LWN_L LGUI_T(KC_L)
+ // F, J and Z into Ctrl
+ #define LCT_F LCTL_T(KC_F)
+ #define LCT_Z LCTL_T(KC_Z)
+ #define LCT_J LCTL_T(KC_J)
+
+// ============================================================================
+
+// ==== For All ====
+
+ // Layout helper
+ #define __LYB__ KC_TRANSPARENT
+
+ // Mod Tap
+ // Changing K and D into Alt
+ #define LAT_D LALT_T(KC_D)
+ #define LAT_K LALT_T(KC_K)
+ // Equal into Ctrl+Alt+Cmd
+ #define LCAGEQ LCAG_T(KC_EQUAL)
+ // Esc into Meh
+ #define LMHESC MEH_T(KC_ESC)
+ // Space into Shift
+ #define LSHFSP SFT_T(KC_SPACE)
+ // Backspace into Shift
+ #define LSHFBK SFT_T(KC_BSPACE)
+
+ // Switching layers
+ #define LTO_BS TO(_QWERTY_MAC) // Go to Base Layer
+ // Go to _NAV
+ #define LLY_SC LT(_NAV, KC_SCLN) // From ;
+ #define LLY_A LT(_NAV, KC_A) // From A
+ // Go to _PUNC
+ #define LLY_TB LT(_PUNC, KC_TAB) // From Tab
+ #define LLY_BK LT(_PUNC, KC_BSPACE) // From Backspace
+ #define LLY_BS LT(_PUNC, KC_BSLASH) // From Backslash
+ // Others
+ #define LLY_GR LT(_ONEHD, KC_GRV) // Go to _ONEHD from `
+ #define LLY_ET LT(_EXTRA, KC_ENT) // Go to _EXTRA from Enter
+ #define LLSWIT MO(_LYSWT) // Layer Switcher
+ #define LLY_DL LT(_NUM, KC_DEL) // Go to _NUM from Delete
+
+ // Shortcuts
+ // Mac Windows Resizing
+ #define LMW_L3 LCA(KC_E) // Resize to 2/3 and move to the left
+ #define LMW_FS LCA(KC_ENTER) // Resize to full screen
+ #define LMW_R3 LCA(KC_T) // Resize to 2/3 and move to the right
+ #define LMW_L1 LCA(KC_D) // Resize to 1/3 and move to the left
+ #define LMW_M1 LCA(KC_F) // Resize to 1/3 and move to middle
+ #define LMW_R1 LCA(KC_G) // Resize to 1/3 and move to right
+ #define LMW_TL LCA(KC_U) // Fit on Top Left corner
+ #define LMW_TR LCA(KC_I) // Fit on Top Left corner
+ #define LMW_BL LCA(KC_J) // Fit on Top Left corner
+ #define LMW_BR LCA(KC_K) // Fit on Top Left corner
+ #define LMW_LT LCA(KC_LEFT) // Resize to 1/2 horizontally and move to the left
+ #define LMW_BT LCA(KC_DOWN) // Resize to 1/2 vertically and move to the bottom
+ #define LMW_TP LCA(KC_UP) // Resize to 1/2 vertically and move to the top
+ #define LMW_RT LCA(KC_RIGHT) // Resize to 1/2 horizontally and move to the right
+
+// ==== Audio ====
+ #ifdef AUDIO_ENABLE
+ #include "audio.h"
+ float tone_macro1_record[][2] = SONG(CAPS_LOCK_ON_SOUND);
+ float tone_macro2_record[][2] = SONG(SCROLL_LOCK_ON_SOUND);
+ float tone_macro_record_stop[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
+ #endif
+
+enum preonic_layers {
+ _QWERTY_MAC,
+ _QWERTY_WIN,
+ _GAMING,
+ _MUSIC,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+ _PUNC,
+ _EXTRA,
+ _NUM,
+ _NAV,
+ _ONEHD,
+ _LYSWT };
+
+enum preonic_keycodes {
+ QWERTY = SAFE_RANGE,
+ QWWIN,
+ // COLEMAK,
+ // DVORAK,
+ LOWER,
+ RAISE,
+ BACKLIT,
+ DYNAMIC_MACRO_RANGE,
+};
+
+#include "dynamic_macro.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Qwerty for Mac
+ * ,-----------------------------------------------------------------------------------.
+ * | CAG= | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | LY|TB| Q | W | E | R | T | Y | U | I | O | P | LY|\ |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Hyper| LY|A | CT/S | AT/D | WN/F | G | H | WN/J | AT/K | CT/L | LY|; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| WN/Z | X | C | V | B | N | M | , | . | / | Sh/Bk|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | LY|` |ESCMEH| LY|DL|LW|Bkp|LY|Bkp| Shift/Space |LY|ENT|RS|Bkp| [ | ] |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ * LY|` -> To _NUM
+ * LY|; -> To _NAV
+ * LY|A -> To _NAV
+ * LY|TB -> To _PUNC
+ * LY|\ -> To _PUNC
+ * LY|Bkp -> To _PUNC
+ * LY|ENT -> To_EXTRA
+ */
+ [_QWERTY_MAC] = LAYOUT_preonic_grid( \
+ LCAGEQ, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
+ LLY_TB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, LLY_BS,
+ KC_HYPR, LLY_A, LCT_S, LAT_D, LWN_F, KC_G, KC_H, LWN_J, LAT_K, LCT_L, LLY_SC, KC_QUOT,
+ KC_LSFT, LWN_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, LSHFBK,
+ LLY_GR, LMHESC, LLY_DL, LOWER, LLY_BK, LSHFSP, LSHFSP, LLY_ET, RAISE, KC_LBRC, KC_RBRC, LLSWIT
+ ),
+
+ /* Qwerty for Windows
+ * ,-----------------------------------------------------------------------------------.
+ * | CAG= | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | LY|TB| Q | W | E | R | T | Y | U | I | O | P | LY|\ |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Hyper| LY|A | WN/S | AT/D | CT/F | G | H | CT/J | AT/K | WN/L | LY/; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| CT/Z | X | C | V | B | N | M | , | . | / | Sh/Bk|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | LY|` |MH/ESC| LY|DL|LW|Bkp|LY|Bk | Space |LY|ENT|RS|Bkp| [ | ] |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_QWERTY_WIN] = LAYOUT_preonic_grid( \
+ LCAGEQ, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
+ LLY_TB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, LLY_BS,
+ KC_HYPR, LLY_A, LWN_S, LAT_D, LCT_F, KC_G, KC_H, LCT_J, LAT_K, LWN_L, LLY_SC, KC_QUOT,
+ KC_LSFT, LCT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, LSHFBK,
+ LLY_GR, LMHESC, LLY_DL, LOWER, LLY_BK, LSHFSP, LSHFSP, LLY_ET, RAISE, KC_LBRC, KC_RBRC, LLSWIT
+ ),
+
+ /* Gaming
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | \ |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Ctrl | A | S | D | F | G | H | J | K | L | LY|; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / | = |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | ESC | Alt |LW|Bkp|LY|Bk | Space |LY|ENT|RS|Bkp| [ | ] |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_GAMING] = LAYOUT_preonic_grid( \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LLY_SC, 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_EQUAL,
+ KC_LCTL, KC_ESC, KC_LALT, LOWER, LLY_BK, KC_SPC, KC_SPC, LLY_ET, RAISE, KC_LBRC, KC_RBRC, LLSWIT
+ ),
+
+ /* Music Layer (Switch to this layer if want to use music mode)
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CTRL | ALT | CMD | | XXXX | Space | XXXX | | XXXX | XXXX |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_MUSIC] = LAYOUT_preonic_grid( \
+ KC_ESC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_LCTL, KC_LALT, KC_LGUI, _______, XXXXXXX, KC_SPC, KC_SPC, XXXXXXX, _______, XXXXXXX, XXXXXXX, LLSWIT
+ ),
+
+ /* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | Home | Up | End | PGUP | XXXX | XXXX | XXXX | PrSc | Home | PGUP | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | " | Left | Down | Right|PGDWN | XXXX | XXXX | XXXX | Pause| End |PGDWN | F12 |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | CTRL | Alt | CMD | XXXX | XXXX | XXXX | XXXX | Prev | Play | Next | INS |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CTRL | Alt | CMD | !!!! | Bksp | Space | Enter| | Vol- | Vol+ |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_LOWER] = LAYOUT_preonic_grid( \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TAB, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_HOME, KC_PGUP, KC_DEL,
+ KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAUS, KC_END, KC_PGDN, KC_F12,
+ _______, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, KC_INS,
+ KC_LCTL, KC_LALT, KC_LGUI, __LYB__, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, _______, KC_VOLD, KC_VOLU, LLSWIT\
+ ),
+
+ /* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ESC | F1 | F2 | F3 | F4 | F5 | SCLK | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | F7 | F8 | F9 | F10 | F11 | XXXX | & | * | { | } | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Caps | F1 | F2 | F3 | F4 | F5 | XXXX | - | = | [ | ] | XXXX |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | XXXX |ISO # |ISO \ | MRC1 | MRC2 | MRSP |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CTRL | Alt | CMD | | Bksp | Space | Enter| !!!! | MPL1 | MPL2 |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_RAISE] = LAYOUT_preonic_grid( \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_SLCK, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_TAB, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, KC_AMPR, KC_ASTR, KC_LCBR, KC_RCBR, KC_DEL,
+ KC_CLCK, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, XXXXXXX,
+ _______, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX, KC_NUHS, KC_NUBS, DYN_REC_START1, DYN_REC_START2, DYN_REC_STOP,
+ KC_LCTL, KC_LALT, KC_LGUI, _______, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, __LYB__, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, LLSWIT
+ ),
+
+ /* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Reset| | | | | | | | | | XXXX |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|AudOff|QWmac |QWwin |QWmac |QWin | | | F12 |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_ADJUST] = LAYOUT_preonic_grid( \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TAB, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, XXXXXXX,
+ /*_______, _______, MU_MOD, AU_ON, AU_OFF, QWERTY, QWWIN, QWERTY, COLEMAK, DVORAK, _______, _______, \ Remove this if adding Colemak and Dvorak*/
+ _______, _______, MU_MOD, AU_ON, AU_OFF, QWERTY, QWWIN, QWERTY, QWWIN, _______, _______, KC_F12,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LLSWIT
+ ),
+
+ /* Punctuation Layer
+ * ,-----------------------------------------------------------------------------------.
+ * | + | ! | @ | # | $ | % | ^ | & | * | ( | ) | _ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | !!!! | & | | | { | } | - | - | XXXX | XXXX | { | } | |(!)|
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | " | / | * | ( | ) | + | + | XXXX | XXXX | [ | ] | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | \ | % | [ | ] | = | = | XXXX | < | > | ? | INS |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ~ | _ | ^ | Del | !!!! | Space | Enter| XXXX | [ | ] |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_PUNC] = LAYOUT_preonic_grid( \
+ KC_PLUS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS,
+ __LYB__, KC_AMPR, KC_PIPE, KC_LCBR, KC_RCBR, KC_MINS, KC_MINS, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_DQUO, KC_SLSH, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS, KC_PLUS, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_DQUO,
+ _______, KC_BSLS, KC_PERC, KC_LBRC, KC_RBRC, KC_EQL, KC_EQL, XXXXXXX, KC_LABK, KC_RABK, KC_QUES, KC_INS,
+ KC_TILDE, KC_UNDS, KC_CIRC, KC_DEL, __LYB__, KC_SPC, KC_SPC, KC_ENT, XXXXXXX, KC_LBRC, KC_RBRC, LLSWIT
+ ),
+
+ /* Extra Layer
+ * ,-----------------------------------------------------------------------------------.
+ * | ESC | | | | | | SCLK | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | | | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Caps | | | | | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | MRC1 | MRC2 | MRSP | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CTRL | ALT | CMD | Del | Bksp | Space | !!!! | | MPL1 | MPL2 |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_EXTRA] = LAYOUT_preonic_grid( \
+ KC_ESC, _______, _______, _______, _______, KC_SLCK, _______, _______, _______, _______, _______, _______,
+ KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ KC_CLCK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, DYN_REC_START1, DYN_REC_START2, DYN_REC_STOP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_DEL, KC_BSPC, KC_SPC, KC_SPC, __LYB__, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, LLSWIT
+ ),
+
+ /* Numeric Pad
+ * ,-----------------------------------------------------------------------------------.
+ * | ESC | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | NMLK | NUM/ | NUM* | NUM- | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Home | Up | End | PGUP | XXXX | XXXX | NUM7 | NUM8 | NUM9 | NUM+ | XXXX |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | XXXX | Left | Down | Right| PGDWN| XXXX | XXXX | NUM4 | NUM5 | NUM6 | NUM+ | XXXX |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | CTRL | ALT | CMD | XXXX | XXXX | XXXX | NUM1 | NUM2 | NUM3 | NENT | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | XXXX | !!!! | XXXX | Bksp | Space | NUM0 | NUM0 | NUM. | NENT | QMAC |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_NUM] = LAYOUT_preonic_grid( \
+ KC_ESC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, XXXXXXX,
+ _______, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PPLS, XXXXXXX,
+ KC_DQUO, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PPLS, XXXXXXX,
+ _______, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, KC_P1, KC_P2, KC_P3, KC_PENT, KC_BSPC,
+ _______, XXXXXXX, __LYB__, XXXXXXX, KC_BSPC, KC_SPC, KC_SPC, KC_P0, KC_P0, KC_PDOT, KC_PENT, LTO_BS
+ ),
+
+ /* NAV
+ * ,-----------------------------------------------------------------------------------.
+ * | ESC | | | MOB3 | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | A | MOB2 | MOUP | MOB1 | MOSU | PGUP | Home | Up | End | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | !!!! | MOLF | MODN | MORT | MOSD | PGDN | Left | Down | Right| !!!! | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | MOB4 | MOB5 | MOSL | MOSR | MOA2 | MOA0 | MPRV | MPLY | MNXT | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CTRL | ALT | CMD | | Bksp | Space | Enter| VILM | VOLD | VOLU | QMAC |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_NAV] = LAYOUT_preonic_grid( \
+ KC_ESC, _______, _______, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_A, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, KC_DEL,
+ _______, __LYB__, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, __LYB__, _______,
+ _______, _______, KC_BTN4, KC_BTN5, KC_WH_L, KC_WH_R, KC_ACL2, KC_ACL0, KC_MPRV, KC_MPLY, KC_MNXT, _______,
+ KC_LCTL, KC_LALT, KC_LGUI, _______, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_MUTE, KC_VOLD, KC_VOLU, LTO_BS
+ ),
+
+ /* One-Handed
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | 6 | 7 | 8 | 9 | 0 | - | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Y | U | I | O | P | MWL3 | MWFS | MWR3 | MWTL | MWTR | XXXX |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | H | J | K | L | : | MWL1 | MWM1 | MWR1 | MWBL | MWBR | XXXX |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | N | M | , | . | / | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | !!!! | Esc | Del | Ent | Bksp | | MWLT | MWBT | MWUP | MWRT |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_ONEHD] = LAYOUT_preonic_grid( \
+ KC_ESC , KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, KC_Y, KC_U, KC_I, KC_O, KC_P, LMW_L3, LMW_FS, LMW_R3, LMW_TL, LMW_TR, XXXXXXX,
+ _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, LMW_L1, LMW_M1, LMW_R1, LMW_BL, LMW_BR, XXXXXXX,
+ _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ __LYB__, KC_ESC, KC_DEL, KC_ENT, KC_BSPACE, KC_SPC, KC_SPC, LMW_LT, LMW_BT, LMW_TP, LMW_RT, LLSWIT
+ ),
+
+ /* Layer Switcher
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Brite | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | XXXX | XXXX | XXXX | XXXX | XXXX | GAME | XXXX | XXXX | XXXX | XXXX | NAV | XXXX |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | XXXX | XXXX | XXXX | XXXX | QMAC | XXXX | MUSC | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | XXXX | XXXX | NUM | XXXX | XXXX | XXXXX | XXXX | XXXX | XXXX | XXXX | !!!! |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_LYSWT] = LAYOUT_preonic_grid( \
+ KC_ESC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ BACKLIT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TO(_GAMING), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TO(_NAV), XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LTO_BS, XXXXXXX, TO(_MUSIC), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, TO(_NUM), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______
+ ) //, //Don't forget to add the comma if going to add more layers here
+};
+
+static uint16_t key_timer;
+static uint16_t timer_thresh = 200;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // For dynamic macros
+ if (!process_record_dynamic_macro(keycode, record)) {
+// Play sound on Macro stop
+#ifdef AUDIO_ENABLE
+ switch (keycode) {
+ case DYN_REC_STOP:
+ if (record->event.pressed) {
+ PLAY_SONG(tone_macro_record_stop);
+ }
+ return false;
+ break;
+ }
+#endif
+ return false;
+ }
+
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY_MAC);
+ }
+ return false;
+ break;
+ case QWWIN:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY_WIN);
+ }
+ return false;
+ break;
+ // Reinstate these cases if COLEMAK, DVORAK are included in the layouts
+ /*case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ break;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ break;
+ */
+ case LOWER:
+ if (record->event.pressed) {
+ key_timer = timer_read(); // For Backspace on tap
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ // Backspace on tap
+ if (timer_elapsed(key_timer) < timer_thresh) {
+ tap_code(KC_BSPC);
+ }
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ key_timer = timer_read(); // For Backspace on tap
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ // Backspace on tap
+ if (timer_elapsed(key_timer) < timer_thresh) {
+ tap_code(KC_BSPC);
+ }
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+#ifdef BACKLIGHT_ENABLE
+ backlight_step();
+#endif
+#ifdef __AVR__
+ PORTE &= ~(1 << 6);
+#endif
+ } else {
+ unregister_code(KC_RSFT);
+#ifdef __AVR__
+ PORTE |= (1 << 6);
+#endif
+ }
+ return false;
+ break;
+#ifdef AUDIO_ENABLE
+ // Play sound on Macro record start
+ case DYN_REC_START1:
+ if (record->event.pressed) {
+ PLAY_SONG(tone_macro1_record);
+ }
+ return false;
+ break;
+ case DYN_REC_START2:
+ if (record->event.pressed) {
+ PLAY_SONG(tone_macro2_record);
+ }
+ return false;
+ break;
+#endif
+ }
+ return true;
+};
+
+bool muse_mode = false;
+uint8_t last_muse_note = 0;
+uint16_t muse_counter = 0;
+uint8_t muse_offset = 70;
+uint16_t muse_tempo = 50;
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (muse_mode) {
+ if (IS_LAYER_ON(_RAISE)) {
+ if (clockwise) {
+ muse_offset++;
+ } else {
+ muse_offset--;
+ }
+ } else {
+ if (clockwise) {
+ muse_tempo += 1;
+ } else {
+ muse_tempo -= 1;
+ }
+ }
+ } else {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+}
+
+void dip_switch_update_user(uint8_t index, bool active) {
+ switch (index) {
+ case 0:
+ if (active) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ break;
+ case 1:
+ if (active) {
+ muse_mode = true;
+ } else {
+ muse_mode = false;
+ }
+ }
+}
+
+void matrix_scan_user(void) {
+#ifdef AUDIO_ENABLE
+ if (muse_mode) {
+ if (muse_counter == 0) {
+ uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+ if (muse_note != last_muse_note) {
+ stop_note(compute_freq_for_midi_note(last_muse_note));
+ play_note(compute_freq_for_midi_note(muse_note), 0xF);
+ last_muse_note = muse_note;
+ }
+ }
+ muse_counter = (muse_counter + 1) % muse_tempo;
+ } else {
+ if (muse_counter) {
+ stop_all_notes();
+ muse_counter = 0;
+ }
+ }
+#endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/preonic/keymaps/laurentlaurent/readme.md b/keyboards/preonic/keymaps/laurentlaurent/readme.md
new file mode 100644
index 00000000000..b1909f8e1ea
--- /dev/null
+++ b/keyboards/preonic/keymaps/laurentlaurent/readme.md
@@ -0,0 +1,252 @@
+# laurentlaurent's Preonic keyboard
+Largely similar to his [ErgoDox EZ](https://configure.ergodox-ez.com/ergodox-ez/layouts/jZpmo/latest/0)'s layout
+
+## Features
+
+### Special Modifiers for Global Shortcuts
+* Hyper key (Ctrl+Alt+Cmd+Shift)
+* CAG key (Ctrl+Alt+Cmd)
+* Meh key (Ctrl+Alt+Shift)
+
+### Home Row modifiers
+* Home Row modifiers (hold F/J to use CMD/Ctrl, D/L for Alt, ... )
+* Separate layers for Mac and Windows keyboard to improve muscle memory linked to Home Row modifiers (CMD is mapped to F and J on Mac, CTRL for Windows)
+* Extra CMD/CTRL key mapped to Z for one-handed CMD+F/CTRL+F
+
+### Qwerty Layout improvements
+* Backspace and Enter are on bottom row (next to Space bar)
+* = is where Esc would be expected to be
+* "-" is where Backspace would be expected to be
+* Grave is where LCTRL would be expected to be
+* Esc is where Alt (on Mac)/Win (on PC) would be expected to be
+* Del is where CMD (on Mac)/Alt (on PC) would be expected to be
+* Hyper key replaces Caps Lock
+
+### Mod taps
+* Home Row modifiers
+* Lower and Raise are Backspace on tap
+* Holding = is CAG (CTRL+ALT+CMD)
+* Holding Esc is MEH (Ctrl+Shift+Alt)
+* Right Shift is bound to RShift on hold, Backspace on tap
+* Spacebar acts like a LShift on hold, Spacebar on tap
+* In instances where repeated keys is needed:
+ * Tap then tap-hold repeats the key
+ * Lower, Raise (and most other layers) turns off mod-tap on most keys
+* Music layer disables all key mappings, Gaming layer disables modtaps
+
+### Layer Switching
+* Layer switcher key, used to switch layout (allows use of _NAV, _NUM layout without holding their layer keys)
+* **Punctuation layer** accessible by holding Tab, Backslash or Backspace
+* Grave switches to **One-Handed layer** on hold
+* **Mouse and arrow key layer** accessible by holding ; or A
+* Del switches to **Numpad** on hold
+* Enter switches to **Extra layer** on hold
+ * Extra layer will be used for applications shortcuts
+
+## Layers
+
+### Mac Qwerty
+```
+,-----------------------------------------------------------------------------------.
+| CAG/=| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| LY|TB| Q | W | E | R | T | Y | U | I | O | P | LY|\ |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Hyper| LY|A | CT/S | AT/D | WN/F | G | H | WN/J | AT/K | CT/L | LY|; | " |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| Shift| WN/Z | X | C | V | B | N | M | , | . | / | Sh/Bk|
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| LY|` |MH/ESC| LY|DL|LW|Bkp|LY|Bkp| Shift/Space |LY|ENT|RS|Bkp| [ | ] |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+* Hold Tab (LY|TB), Backspace (LY|Bkp) or Backslash (LY|\ ) for **Punctuation Layer**
+* Hold Grave (LY|`) for **One-Handed Layer**
+* Hold Del (LY|DL) for **Numpad Layer**
+* Hold A or ; for **Navigation/Mouse Layer**
+* Hold Enter (LY|ENT) for **Extra layer**
+
+### Win Qwerty
+```
+,-----------------------------------------------------------------------------------.
+| CAG= | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| LY|TB| Q | W | E | R | T | Y | U | I | O | P | LY|\ |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Hyper| LY|A | WN/S | AT/D | CT/F | G | H | CT/J | AT/K | WN/L | LY/; | " |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| Shift| CT/Z | X | C | V | B | N | M | , | . | / | Sh/Bk|
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| LY|` |ESCMEH| LY|DL|LW|Bkp|LY|Bk | Space |LY|ENT|RS|Bkp| [ | ] |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+* Hold Tab (LY|TB), Backspace (LY|Bkp) or Backslash (LY|\ ) for **Punctuation Layer**
+* Hold Grave (LY|`) for **One-Handed Layer**
+* Hold Del (LY|DL) for **Numpad Layer**
+* Hold A or ; for **Navigation/Mouse Layer**
+* Hold Enter (LY|ENT) for **Extra layer**
+
+### Gaming Qwerty
+```
+,-----------------------------------------------------------------------------------.
+| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Tab | Q | W | E | R | T | Y | U | I | O | P | \ |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Ctrl | A | S | D | F | G | H | J | K | L | LY|; | " |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| Shift| Z | X | C | V | B | N | M | , | . | / | = |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Ctrl | ESC | Alt |LW|Bkp|LY|Bk | Space |LY|ENT|RS|Bkp| [ | ] |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Music Layer
+```
+,-----------------------------------------------------------------------------------.
+| Esc | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| CTRL | ALT | CMD | | XXXX | Space | XXXX | | XXXX | XXXX |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Lower Layer
+```
+,-----------------------------------------------------------------------------------.
+| ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Tab | Home | Up | End | PGUP | XXXX | XXXX | XXXX | PrSc | Home | PGUP | Del |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| " | Left | Down | Right|PGDWN | XXXX | XXXX | XXXX | Pause| End |PGDWN | F12 |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| | CTRL | Alt | CMD | XXXX | XXXX | XXXX | XXXX | Prev | Play | Next | INS |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| CTRL | Alt | CMD | !!!! | Bksp | Space | Enter| | Vol- | Vol+ |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Raise Layer
+```
+,-----------------------------------------------------------------------------------.
+| ESC | F1 | F2 | F3 | F4 | F5 | SCLK | & | * | ( | ) | Bksp |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Tab | F7 | F8 | F9 | F10 | F11 | XXXX | & | * | { | } | Del |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Caps | F1 | F2 | F3 | F4 | F5 | XXXX | - | = | [ | ] | XXXX |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| | F7 | F8 | F9 | F10 | F11 | XXXX |ISO # |ISO \ | MRC1 | MRC2 | MRSP |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| CTRL | Alt | CMD | | Bksp | Space | Enter| !!!! | MPL1 | MPL2 |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Adjust Layer
+```
+,-----------------------------------------------------------------------------------.
+| | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Tab | Reset| | | | | | | | | | XXXX |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| | | |Aud on|AudOff|QWmac |QWwin |QWmac |QWin | | | F12 |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | | | | | | | | | |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Punctuation Layer
+```
+,-----------------------------------------------------------------------------------.
+| + | ! | @ | # | $ | % | ^ | & | * | ( | ) | _ |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| !!!! | & | | | { | } | - | - | XXXX | XXXX | { | } | |(!)|
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| " | / | * | ( | ) | + | + | XXXX | XXXX | [ | ] | " |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| | \ | % | [ | ] | = | = | XXXX | < | > | ? | INS |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| ~ | _ | ^ | Del | !!!! | Space | Enter| XXXX | [ | ] |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Extra Layer
+```
+,-----------------------------------------------------------------------------------.
+| ESC | | | | | | SCLK | | | | | |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Tab | | | | | | | | | | | Del |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Caps | | | | | | | | | | | |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| | | | | | | | | | MRC1 | MRC2 | MRSP |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| CTRL | ALT | CMD | Del | Bksp | Space | !!!! | | MPL1 | MPL2 |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Numeric Pad Layer
+```
+,-----------------------------------------------------------------------------------.
+| ESC | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | NMLK | NUM/ | NUM* | NUM- | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | Home | Up | End | PGUP | XXXX | XXXX | NUM7 | NUM8 | NUM9 | NUM+ | XXXX |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| XXXX | Left | Down | Right| PGDWN| XXXX | XXXX | NUM4 | NUM5 | NUM6 | NUM+ | XXXX |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| | CTRL | ALT | CMD | XXXX | XXXX | XXXX | NUM1 | NUM2 | NUM3 | NENT | Bksp |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | XXXX | !!!! | XXXX | Bksp | Space | NUM0 | NUM0 | NUM. | NENT | QMAC |
+`-----------------------------------------------------------------------------------'
+```
+
+### Navigation Layer
+```
+,-----------------------------------------------------------------------------------.
+| ESC | | | MOB3 | | | | | | | | |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | A | MOB2 | MOUP | MOB1 | MOSU | PGUP | Home | Up | End | | Del |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| | !!!! | MOLF | MODN | MORT | MOSD | PGDN | Left | Down | Right| !!!! | |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| | | MOB4 | MOB5 | MOSL | MOSR | MOA2 | MOA0 | MPRV | MPLY | MNXT | |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| CTRL | ALT | CMD | | Bksp | Space | Enter| VILM | VOLD | VOLU | QMAC |
+`-----------------------------------------------------------------------------------'
+```
+
+### One-Handed Layer
+```
+,-----------------------------------------------------------------------------------.
+| Esc | 6 | 7 | 8 | 9 | 0 | - | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | Y | U | I | O | P | MWL3 | MWFS | MWR3 | MWTL | MWTR | XXXX |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| | H | J | K | L | : | MWL1 | MWM1 | MWR1 | MWBL | MWBR | XXXX |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| | N | M | , | . | / | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| !!!! | Esc | Del | Ent | Bksp | | MWLT | MWBT | MWUP | MWRT |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+The right hand side of the keyboard contains shortcuts for moving windows on Mac (using Magnet)
+
+### Layer Switcher
+```
+,-----------------------------------------------------------------------------------.
+| Esc | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+|Brite | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| XXXX | XXXX | XXXX | XXXX | XXXX | GAME | XXXX | XXXX | XXXX | XXXX | NAV | XXXX |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| | XXXX | XXXX | XXXX | XXXX | QMAC | XXXX | MUSC | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| XXXX | XXXX | NUM | XXXX | XXXX | XXXXX | XXXX | XXXX | XXXX | XXXX | !!!! |
+`-----------------------------------------------------------------------------------'
+```
diff --git a/keyboards/preonic/keymaps/laurentlaurent/rules.mk b/keyboards/preonic/keymaps/laurentlaurent/rules.mk
new file mode 100644
index 00000000000..3a551bd429b
--- /dev/null
+++ b/keyboards/preonic/keymaps/laurentlaurent/rules.mk
@@ -0,0 +1,2 @@
+SRC += muse.c
+MOUSEKEY_ENABLE = yes
diff --git a/keyboards/preonic/keymaps/laurentlaurent/templates.c b/keyboards/preonic/keymaps/laurentlaurent/templates.c
new file mode 100644
index 00000000000..0056e088f77
--- /dev/null
+++ b/keyboards/preonic/keymaps/laurentlaurent/templates.c
@@ -0,0 +1,89 @@
+// Templates for Preonic Keyboard
+
+/* BLANK Pass through
+ * ,-----------------------------------------------------------------------------------.
+ * | ESC | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CTRL | ALT | CMD | | | | | | | |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_BLANK] = LAYOUT_preonic_grid( \
+ KC_ESC , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ KC_LCTL, KC_LALT, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______, LLSWIT \
+),
+
+/* BLANK No Pass through
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CTRL | ALT | CMD | | XXXX | | XXXX | | XXXX | XXXX |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_BLANK] = LAYOUT_preonic_grid( \
+ KC_ESC , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ KC_LCTL, KC_LALT, KC_LGUI, _______, XXXXXXX, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, LLSWIT \
+),
+
+
+//===== From default preonic layouts
+// if you add this, make sure to add _COLEMAK and _DVORAK in the enum
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | XXXX | XXXX | XXXX |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT_preonic_grid( \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, LLSWIT \
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | " | , | . | P | Y | F | G | C | R | L | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S | / |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | XXXX | XXXX | XXXX |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = LAYOUT_preonic_grid( \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, \
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, LLSWIT \
+),
diff --git a/keyboards/preonic/rev1/rev1.c b/keyboards/preonic/rev1/rev1.c
index 4e877960811..fd09d7f2d84 100644
--- a/keyboards/preonic/rev1/rev1.c
+++ b/keyboards/preonic/rev1/rev1.c
@@ -18,8 +18,8 @@
void matrix_init_kb(void) {
// Turn status LED on
- DDRE |= (1<<6);
- PORTE |= (1<<6);
+ setPinOutput(E6);
+ writePinHigh(E6);
matrix_init_user();
};
diff --git a/keyboards/preonic/rev2/rev2.c b/keyboards/preonic/rev2/rev2.c
index 30e3110e46e..785ac3310b9 100644
--- a/keyboards/preonic/rev2/rev2.c
+++ b/keyboards/preonic/rev2/rev2.c
@@ -18,8 +18,8 @@
void matrix_init_kb(void) {
// Turn status LED on
- DDRE |= (1<<6);
- PORTE |= (1<<6);
+ setPinOutput(E6);
+ writePinHigh(E6);
matrix_init_user();
};
diff --git a/keyboards/projectkb/alice/keymaps/devinceble/keymap.c b/keyboards/projectkb/alice/keymaps/devinceble/keymap.c
new file mode 100644
index 00000000000..bf46aa95b65
--- /dev/null
+++ b/keyboards/projectkb/alice/keymaps/devinceble/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2019 Devinceble AKA Vimwarrior
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_default(
+ KC_INS, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_PGDN, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LALT, KC_LGUI, KC_SPC, MO(2), KC_SPC, KC_RALT, KC_RCTL
+ ),
+ [1] = LAYOUT_default(
+ KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_default(
+ RGB_TOG, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
+ RGB_MOD, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAI, RGB_HUI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_RMOD, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, RGB_SAD, RGB_HUD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, BL_INC, BL_DEC, BL_TOGG, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET
+ ),
+};
diff --git a/keyboards/projectkb/alice/keymaps/devinceble/readme.md b/keyboards/projectkb/alice/keymaps/devinceble/readme.md
new file mode 100644
index 00000000000..dfb0392e3d5
--- /dev/null
+++ b/keyboards/projectkb/alice/keymaps/devinceble/readme.md
@@ -0,0 +1,9 @@
+# Devinceble AKA Vimwarrior ProjectKeyboard Alice
+
+Build Hex File:
+
+ make projectkb/alice:devinceble
+
+Flash Keyboard
+
+ make projectkb/alice:devinceble:flash
diff --git a/keyboards/projectkb/alice/keymaps/devinceble/rules.mk b/keyboards/projectkb/alice/keymaps/devinceble/rules.mk
new file mode 100644
index 00000000000..522abf46b15
--- /dev/null
+++ b/keyboards/projectkb/alice/keymaps/devinceble/rules.mk
@@ -0,0 +1 @@
+MOUSEKEY_ENABLE = yes
diff --git a/keyboards/projectkb/alice/keymaps/madhatter/keymap.c b/keyboards/projectkb/alice/keymaps/madhatter/keymap.c
index 0f63a607abe..bac44f0b3e4 100644
--- a/keyboards/projectkb/alice/keymaps/madhatter/keymap.c
+++ b/keyboards/projectkb/alice/keymaps/madhatter/keymap.c
@@ -16,28 +16,40 @@ along with this program. If not, see .
*/
#include QMK_KEYBOARD_H
-enum layer_names {
+enum my_layers {
_QWERTY,
- _FNM
+ _FNMS,
+ _NAVMED
};
-#define FNM MO(_FNM)
+#define FNMS MO(_FNMS)
+#define SPCNAV LT(_NAVMED, KC_SPC)
+#define CAPSTL CTL_T(KC_CAPS)
+#define CMDENT CMD_T(KC_ENT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_default(
- KC_ESC, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
+ KC_GESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_PGDN, KC_GRV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FNM,
- KC_LCTL, KC_LCMD, KC_ENT, FNM, KC_SPC, KC_RCMD, KC_RCTL
+ KC_PGDN, CAPSTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FNMS,
+ KC_LCTL, KC_LALT, CMDENT, FNMS, SPCNAV, KC_RALT, KC_RCTL
),
- [_FNM] = LAYOUT_default(
- RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
- RGB_MOD, _______, _______, _______, _______, _______, _______, RGB_SAI, RGB_HUI, RGB_VAI, RGB_SAD, RGB_HUD, RGB_VAD, _______, RESET,
- VLK_TOG, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, EEP_RST,
- _______, BL_INC, BL_DEC, BL_TOGG, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______
+ [_FNMS] = LAYOUT_default(
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, _______, RESET,
+ VLK_TOG, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN2, _______, _______,
+ _______, BL_INC, BL_DEC, BL_TOGG, BL_BRTG, _______, RGB_SAI, RGB_HUI, RGB_VAI, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_NAVMED] = LAYOUT_default(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, _______, KC_UP, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, KC_VOLU, KC_VOLD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, EEP_RST,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/projectkb/alice/keymaps/madhatter/readme.md b/keyboards/projectkb/alice/keymaps/madhatter/readme.md
new file mode 100644
index 00000000000..03c20e2fb05
--- /dev/null
+++ b/keyboards/projectkb/alice/keymaps/madhatter/readme.md
@@ -0,0 +1,8 @@
+# The madhatter keymap
+
+- A layer for all functions and mouse keys
+- A layer for arrows and media
+- Arrows on IJKL
+- Caps and control on caps lock - wonderful
+- Velocikey on the map
+- Things to reduce my finger travel just about everywhere
diff --git a/keyboards/redox/keymaps/KL1RL/config.h b/keyboards/redox/keymaps/KL1RL/config.h
new file mode 100644
index 00000000000..ea7525b388f
--- /dev/null
+++ b/keyboards/redox/keymaps/KL1RL/config.h
@@ -0,0 +1,34 @@
+/*
+Copyright 2018 Mattia Dal Ben
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+/* Use I2C or Serial, not both */
+// #define USE_SERIAL
+#define USE_I2C
+
+/* Select hand configuration */
+//#define MASTER_LEFT
+//#define MASTER_RIGHT
+#define EE_HANDS
+
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 14
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/redox/keymaps/KL1RL/keymap.c b/keyboards/redox/keymaps/KL1RL/keymap.c
new file mode 100644
index 00000000000..2986a51ceb1
--- /dev/null
+++ b/keyboards/redox/keymaps/KL1RL/keymap.c
@@ -0,0 +1,90 @@
+#include QMK_KEYBOARD_H
+
+// 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 _SYMB 1
+#define _NAV 2
+#define _ADJUST 3
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ SYMB,
+ NAV,
+ ADJUST,
+};
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+
+#define KC_ALAS LALT_T(KC_PAST)
+#define KC_CTES LCTL_T(KC_ESC)
+#define KC_CTQU RCTL_T(KC_QUOT)
+
+#define KC_NAGR LT(_NAV, KC_GRV)
+#define KC_NAMI LT(_NAV, KC_MINS)
+
+#define KC_ADEN LT(_ADJUST, KC_END)
+#define KC_ADPU LT(_ADJUST, KC_PGUP)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_NAGR ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_NAMI ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,SYM_L , SYM_L ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_EQL ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_CTES ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_LBRC , KC_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOTE ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
+ KC_BSLS ,KC_PPLS ,KC_PMNS ,KC_ALAS , KC_LGUI , KC_BSPC ,KC_DEL , KC_ENT ,KC_SPC , KC_RALT , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
+ //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,KC_F6 , KC_F7 ,XXXXXXX ,KC_KP_7 ,KC_KP_8 ,KC_KP_9 ,XXXXXXX ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_HASH ,KC_DLR ,KC_LBRC ,KC_RBRC ,KC_GRV ,_______ , _______ ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_PERC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,KC_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_KP_0 , KC_KP_0 ,KC_PDOT ,XXXXXXX ,XXXXXXX
+ //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
+ ),
+
+ [_NAV] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,KC_WH_U ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,KC_MS_L ,KC_MS_D ,KC_MS_U ,KC_MS_R ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_WH_D ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
+ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,KC_BTN3 , KC_BTN3 ,KC_BTN2 , KC_BTN1 , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
+ //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
+ ),
+
+ [_ADJUST] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ XXXXXXX ,RESET ,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,KC_F12 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
+ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_MUTE , KC_VOLD ,KC_VOLU , KC_BRID ,KC_BRIU , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
+ //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
+ )
+
+};
diff --git a/keyboards/redox/keymaps/KL1RL/readme.md b/keyboards/redox/keymaps/KL1RL/readme.md
new file mode 100644
index 00000000000..520d0048131
--- /dev/null
+++ b/keyboards/redox/keymaps/KL1RL/readme.md
@@ -0,0 +1,22 @@
+# A tweaked keymap for Redox
+
+I copied fculpo's layout and made a few modifcations more suited for my own needs. In general it seems to be a fairly straight foward adaptation
+of a standard QWERTY full size keyboard. At least for me.
+
+
+
+## Changes to the default keymap
+
+Keymap changes from the default keymap are:
+
+- Move `GUI` (`SUPER`) key to where default left `CTRL` is
+- Move `/?` into usual location next to right `SHIFT` - the default flash from Falbatech put `\|` here (might not be the Redox default?), which felt unintuitive
+- Put `\|` into bottom-left spot where `GUI` (`SUPER`) was - had to go somewhere and this bottom-left placement sort of balances with the almost bottom-right `/?`
+- Change default `ESC` into `ESC` on tap, `CTRL` on hold - for the love of the UNIX-ey `CTRL` key location and to keep `ESC` in the original position
+- Add `F11` and `F12` keys to two layers - needed on macOS if you want to control volume up and down from your keyboard (not shown, on a different layer)S
+- Access ADJUST layer by holding either `END` or `PAGEUP` off default layer.
+
+Changes by KL1RL are:
+- Remove the right hand `CTRL` combo key, it was bugging me.
+- Add Brightness Up and Brightness Down on the right hand thumb cluster on the ADJUST layer.
+- Add Mute, Vol Down and Vol Up on LH thumb cluster also on the ADJUST layer.
diff --git a/keyboards/redox/keymaps/KL1RL/rules.mk b/keyboards/redox/keymaps/KL1RL/rules.mk
new file mode 100644
index 00000000000..a81250cdf6d
--- /dev/null
+++ b/keyboards/redox/keymaps/KL1RL/rules.mk
@@ -0,0 +1,2 @@
+RGBLIGHT_ENABLE = yes
+
diff --git a/keyboards/snagpad/config.h b/keyboards/snagpad/config.h
index cd32a3d8c26..a4ab9d5e26a 100644
--- a/keyboards/snagpad/config.h
+++ b/keyboards/snagpad/config.h
@@ -48,9 +48,6 @@
#define RGBLIGHT_VAL_STEP 8
#endif
-// Does not use WT_MONO_BACKLIGHT
-// #define WT_MONO_BACKLIGHT
-
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
// EEPROM usage
diff --git a/keyboards/tada68/keymaps/mekberg/config.h b/keyboards/tada68/keymaps/mekberg/config.h
new file mode 100644
index 00000000000..d29180a5aff
--- /dev/null
+++ b/keyboards/tada68/keymaps/mekberg/config.h
@@ -0,0 +1,5 @@
+#pragma once
+
+// Define some configuration for modtap behavior
+// #define TAPPING_TERM 150
+#define PERMISSIVE_HOLD
diff --git a/keyboards/tada68/keymaps/mekberg/keymap.c b/keyboards/tada68/keymaps/mekberg/keymap.c
new file mode 100755
index 00000000000..1acbf2c48a0
--- /dev/null
+++ b/keyboards/tada68/keymaps/mekberg/keymap.c
@@ -0,0 +1,100 @@
+#include QMK_KEYBOARD_H
+
+// Fillers to make layering more clear
+// The default names have been swapped to make the keymap more readable.
+#define XXXXXX KC_TRNS
+#define ______ KC_NO
+
+// ISO keycodes with Swedish layout names
+#define SE_PLUS KC_MINS // +
+#define SE_TCK KC_EQL // Fronttick (´)
+#define SE_DASH KC_SLSH // -
+#define SE_UML KC_RBRC // Umlaut (¨)
+#define SE_QUT KC_NUHS // Singlequote (')
+#define SE_AUML KC_QUOT // Ä
+#define SE_ARNG KC_LBRC // Å
+#define SE_OUML KC_SCLN // Ö
+#define SE_LT KC_NUBS // <
+
+// My common shortcuts
+#define MY_PREV KC_MRWD // Media: Previous
+#define MY_NEXT KC_MFFD // Media: Next
+#define MY_PLAY KC_MPLY // Media: Play/Pause
+#define MY_LOCK C(A(KC_L)) // Mac: Lock
+
+
+/*
+TADA68 ISO physical layout
+1u == 8chars
+,----------------------------------------------------------------------------------------------------------------------------------------------.
+| | | | | | | | | | | | | | 2u | |
+|----------------------------------------------------------------------------------------------------------------------------------------------|
+| 1,5u | | | | | | | | | | | | | 1,5u | |
+|--------------------------------------------------------------------------------------------------------------------------| |--------|
+| 1,75u | | | | | | | | | | | | | 1,25u | |
+|----------------------------------------------------------------------------------------------------------------------------------------------|
+| 1,25u | | | | | | | | | | | | 1,75u | | |
+|----------------------------------------------------------------------------------------------------------------------------------------------|
+| 1,25u | 1,25u | 1,25u | | | | | | | |
+`----------------------------------------------------------------------------------------------------------------------------------------------'
+*/
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_iso(
+// ,----------------------------------------------------------------------------------------------------------------------------------------------.
+// | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | + | ´ | Backspace | Home |
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS, SE_TCK, KC_BSPC, KC_HOME,
+// |----------------------------------------------------------------------------------------------------------------------------------------------|
+// | Tab | Q | W | E | R | T | Y | U | I | O | P | Å | ¨ | | End |
+ LT(2,KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_ARNG, SE_UML, KC_END,
+// |--------------------------------------------------------------------------------------------------------------------------| |--------|
+// | LCtrl | A | S | D | F | G | H | J | K | L | Ö | Ä | ' | Enter | PgUp |
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_OUML, SE_AUML, SE_QUT, KC_ENT, KC_PGUP,
+// |----------------------------------------------------------------------------------------------------------------------------------------------|
+// | LShift | <> | Z | X | C | V | B | N | M | , | . | - | RShift | Up | PgDn |
+ KC_LSFT, SE_LT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SE_DASH, KC_RSFT, KC_UP, KC_PGDN,
+// |----------------------------------------------------------------------------------------------------------------------------------------------|
+// | LCtrl | LAlt | Command | Space |Command | RAlt | Fn | Left | Down | Right |
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_LGUI, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+// `----------------------------------------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [1] = LAYOUT_iso(
+// ,----------------------------------------------------------------------------------------------------------------------------------------------.
+// | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete | Ins |
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+// |----------------------------------------------------------------------------------------------------------------------------------------------|
+// | | | Up | | | | | | | | | | | | Mute |
+ ______, ______, KC_UP, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC__MUTE,
+// |--------------------------------------------------------------------------------------------------------------------------| Lock |--------|
+// | Caps Lock | Left | Down | Right | BLight | | | | | | | | | Screen | VolUp |
+ KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, BL_BRTG, ______, ______, ______, ______, ______, ______, ______, ______, MY_LOCK, KC_VOLU,
+// |----------------------------------------------------------------------------------------------------------------------------------------------|
+// | | | | | Bl- |BLtoggle | Bl+ | | | | | | | Stop | VolDn |
+ ______, ______, ______, ______, BL_DEC, BL_TOGG, BL_INC, ______, ______, ______, ______, ______, ______, KC_MSTP, KC_VOLD,
+// |----------------------------------------------------------------------------------------------------------------------------------------------|
+// | | | | Sleep | | | | Prev | Play | Fwd |
+ ______, ______, ______, KC_SLEP, ______, ______, XXXXXX, MY_PREV, MY_PLAY, MY_NEXT
+// `----------------------------------------------------------------------------------------------------------------------------------------------'
+ ),
+
+ [2] = LAYOUT_iso(
+// ,----------------------------------------------------------------------------------------------------------------------------------------------.
+// | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete | |
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, ______,
+// |----------------------------------------------------------------------------------------------------------------------------------------------|
+// | | | Up | | | | | | | | | | | | Mute |
+ XXXXXX, ______, KC_UP, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC__MUTE,
+// |--------------------------------------------------------------------------------------------------------------------------| |--------|
+// | | Left | Down | Right | | | Left | Down | Up | Right | | | | | VolUp |
+ ______, KC_LEFT, KC_DOWN, KC_RGHT, ______, ______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, ______, ______, ______, ______, KC_VOLU,
+// |----------------------------------------------------------------------------------------------------------------------------------------------|
+// | | | | | | | | | | | | | | Stop | VolDn |
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_MSTP, KC_VOLD,
+// |----------------------------------------------------------------------------------------------------------------------------------------------|
+// | | | | | | | | Prev | Play | Fwd |
+ ______, ______, ______, ______, ______, ______, ______, MY_PREV, MY_PLAY, MY_NEXT
+// `----------------------------------------------------------------------------------------------------------------------------------------------'
+ )
+};
diff --git a/keyboards/tada68/keymaps/mekberg/readme.md b/keyboards/tada68/keymaps/mekberg/readme.md
new file mode 100644
index 00000000000..be578e95726
--- /dev/null
+++ b/keyboards/tada68/keymaps/mekberg/readme.md
@@ -0,0 +1,58 @@
+# Mekberg's TADA68 layout
+
+More or less a standard Swedish ISO layout, with Mac-centric key positions. All keys not assigned on non-default layers are set to KC_NO
+as I don't want them to pass through when activating a layer.
+
+# Layers
+
+### Base Layer
+
+```
+,----------------------------------------------------------------------------------------------------------------------------------------------.
+| Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | + | ´ | Backspace | Home |
+|----------------------------------------------------------------------------------------------------------------------------------------------|
+| Tab | Q | W | E | R | T | Y | U | I | O | P | Å | ¨ | | End |
+|--------------------------------------------------------------------------------------------------------------------------| |--------|
+| LCtrl | A | S | D | F | G | H | J | K | L | Ö | Ä | ' | Enter | PgUp |
+|----------------------------------------------------------------------------------------------------------------------------------------------|
+| LShift | <> | Z | X | C | V | B | N | M | , | . | - | RShift | Up | PgDn |
+|----------------------------------------------------------------------------------------------------------------------------------------------|
+| LCtrl | LAlt | Command | Space |Command | RAlt | Fn | Left | Down | Right |
+`----------------------------------------------------------------------------------------------------------------------------------------------'
+```
+
+### Fn Layer (layer 1)
+
+```
+,----------------------------------------------------------------------------------------------------------------------------------------------.
+| | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete | Ins |
+|----------------------------------------------------------------------------------------------------------------------------------------------|
+| | | Up | | | | | | | | | | | | Mute |
+|--------------------------------------------------------------------------------------------------------------------------| |--------|
+| Caps Lock | Left | Down | Right | BLight | | | | | | | | | | VolUp |
+|----------------------------------------------------------------------------------------------------------------------------------------------|
+| | | | | Bl- |BLtoggle | Bl+ | | | | | | | Stop | VolDn |
+|----------------------------------------------------------------------------------------------------------------------------------------------|
+| | | | | | | | Prev | Play | Fwd |
+`----------------------------------------------------------------------------------------------------------------------------------------------'
+```
+
+Mainly used for media keys and F-keys, as well as a nav cluster on WASD. Also has backlight keys, that are rarely used.
+
+### Modtap Tab Layer (layer 2)
+
+```
+,----------------------------------------------------------------------------------------------------------------------------------------------.
+| Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete | |
+|----------------------------------------------------------------------------------------------------------------------------------------------|
+| | | Up | | | | | | | | | | | | Mute |
+|--------------------------------------------------------------------------------------------------------------------------| |--------|
+| | Left | Down | Right | | | Left | Down | Up | Right | | | | | VolUp |
+|----------------------------------------------------------------------------------------------------------------------------------------------|
+| | | | | | | | | | | | | | Stop | VolDn |
+|----------------------------------------------------------------------------------------------------------------------------------------------|
+| | | | | | | | Prev | Play | Fwd |
+`----------------------------------------------------------------------------------------------------------------------------------------------'
+```
+
+Tab acts as Tab when tapped, and as Layer 2 when held. Used for HJKL nav keys and Delete.
diff --git a/keyboards/tada68/keymaps/mekberg/rules.mk b/keyboards/tada68/keymaps/mekberg/rules.mk
new file mode 100644
index 00000000000..dbaa9045e7b
--- /dev/null
+++ b/keyboards/tada68/keymaps/mekberg/rules.mk
@@ -0,0 +1,5 @@
+# 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
+#
+CONSOLE_ENABLE = no # Console for debug(+400)
diff --git a/keyboards/thevankeyboards/minivan/keymaps/tominabox1/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/tominabox1/keymap.c
new file mode 100644
index 00000000000..a465da3bdfd
--- /dev/null
+++ b/keyboards/thevankeyboards/minivan/keymaps/tominabox1/keymap.c
@@ -0,0 +1,74 @@
+#include QMK_KEYBOARD_H
+#include "tominabox1.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * |GESC| Q | W | F | P | G | J | L | U | Y | ; | BSPC |
+ * | TAB | A | R | S | T | D | H | N | E | I | O | ' |
+ * |SHIFT | Z | X | C | V | B | K | M | , | UP | . | / |
+ * |CTRL | WIN | ALT | ENTR | SPACE | LFT |DOWN|RGHT|FKEY|
+ */
+
+ [_BASE] = LAYOUT_arrow_wrapper(
+ __________________MINIVAN1_________________,
+ __________________MINIVAN2_________________,
+ __________________MINIVAN3_________________,
+ __________________MINIVAN4_________________
+ ),
+
+ /*
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | DEL |
+ * | | | | | | | | _ | + | { | } | PIPE|
+ * |SHIFT | | | | | | | |PGDN| UP | ? | / |
+ * |CTRL | WIN | ALT | ENTR | SPACE | LFT |DOWN|RGHT|FKEY|
+ */
+
+ [_LOWER] = LAYOUT_arrow_wrapper(
+ _________________LOWER_1___________________,
+ _________________LOWER_2___________________,
+ __________________MININUM3_________________,
+ __________________MININUM4_________________
+ ),
+
+ /*
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BSPC |
+ * | INS | | | | | | | - | = | [ | ] | \ |
+ * | | | | | | | | | | | / | |
+ * |CTRL | WIN | ALT | ENTR | SPACE | LFT |DOWN|RGHT|FKEY|
+ */
+
+ [_RAISE] = LAYOUT_arrow_wrapper(
+ ___________________RAISE1__________________,
+ ___________________RAISE2__________________,
+ ___________________RVAN_3__________________,
+ ___________________RVAN_4__________________
+ ),
+
+ /*
+ * |REST|EERS| | | | | | | | | | |
+ * | | | | | | | | | | | | |
+ * | | | | | | | | | | | | |
+ * | | | | ENTR | SPACE | | | | |
+ */
+
+ [_ADJUST] = LAYOUT_arrow_wrapper(
+ ___________________ADJST1__________________,
+ ___________________ADJST2__________________,
+ ___________________ADJVAN3_________________,
+ ___________________ADJVAN4_________________
+ ),
+
+ /*
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10| |
+ * | | | | | | | | | |F11 | F12| |
+ * | | | | | | | | | | | | |
+ * | | | | | | FKEY | | | |
+ */
+
+ [_FKEY] = LAYOUT_arrow_wrapper(
+ ___________________FKEY1___________________,
+ ___________________FKEY2___________________,
+ ___________________FVAN_3__________________,
+ ___________________FVAN_4__________________
+ ),
+ };
diff --git a/keyboards/uzu42/config.h b/keyboards/uzu42/config.h
new file mode 100644
index 00000000000..45f497d7821
--- /dev/null
+++ b/keyboards/uzu42/config.h
@@ -0,0 +1,29 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#ifndef SOFT_SERIAL_PIN
+#define SOFT_SERIAL_PIN D2
+#define SERIAL_USE_MULTI_TRANSACTION
+#endif
+
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/uzu42/keymaps/default/config.h b/keyboards/uzu42/keymaps/default/config.h
new file mode 100644
index 00000000000..bc7897f5010
--- /dev/null
+++ b/keyboards/uzu42/keymaps/default/config.h
@@ -0,0 +1,47 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define SSD1306OLED
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 200
+
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 54
+#define RGBLIGHT_LIMIT_VAL 120
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+// Use the lily version to get the uzu42 logo instead of the qmk logo
+#define OLED_FONT_H "keymaps/default/glcdfont_uzu42.c"
diff --git a/keyboards/uzu42/keymaps/default/glcdfont_uzu42.c b/keyboards/uzu42/keymaps/default/glcdfont_uzu42.c
new file mode 100644
index 00000000000..f5524ec7371
--- /dev/null
+++ b/keyboards/uzu42/keymaps/default/glcdfont_uzu42.c
@@ -0,0 +1,243 @@
+// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
+// See gfxfont.h for newer custom bitmap font info.
+
+#ifndef FONT5X7_H
+#define FONT5X7_H
+
+#ifdef __AVR__
+ #include
+ #include
+#elif defined(ESP8266)
+ #include
+#else
+ #define PROGMEM
+#endif
+
+// Standard ASCII 5x7 font
+const unsigned char font[] PROGMEM = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+0x00, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
+0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70,
+0x38, 0x18, 0x18, 0x0C, 0x0C, 0x0C,
+0x0E, 0x06, 0x06, 0x06, 0x06, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00,
+0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
+0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
+0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
+0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
+0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
+0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
+0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
+0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x03, 0x07, 0x2E,
+0x6C, 0xD8, 0xD8, 0xF8, 0xB0, 0xB0,
+0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0,
+0xB0, 0xB0, 0xF8, 0xD8, 0xD8, 0x6C,
+0x2E, 0x07, 0x03, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+0x01, 0x01, 0x81, 0xC1, 0xE1, 0x79,
+0x3D, 0x0F, 0x07, 0x03, 0x01, 0x00,
+0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
+0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
+0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
+0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
+0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
+0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
+0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x02, 0x06, 0x17, 0x3D,
+0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D,
+0x3D, 0x17, 0x06, 0x02, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x01, 0x03,
+0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+0x07, 0x03, 0x01, 0x00, 0x00, 0x00,
+0x06, 0x07, 0x07, 0x07, 0x07, 0x07,
+0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+0x00, 0x00, 0x00, 0x01, 0x03, 0x07,
+0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+#endif // FONT5X7_H
diff --git a/keyboards/uzu42/keymaps/default/keymap.c b/keyboards/uzu42/keymaps/default/keymap.c
new file mode 100644
index 00000000000..bb439971dc5
--- /dev/null
+++ b/keyboards/uzu42/keymaps/default/keymap.c
@@ -0,0 +1,292 @@
+#include QMK_KEYBOARD_H
+#include "uzu42.h"
+#ifdef PROTOCOL_LUFA
+ #include "lufa.h"
+ #include "split_util.h"
+#endif
+#ifdef SSD1306OLED
+ #include "ssd1306.h"
+#endif
+
+extern keymap_config_t keymap_config;
+
+#ifdef RGBLIGHT_ENABLE
+#include
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#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.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST,
+ RGBRST
+};
+
+#define KC_CTES CTL_T(KC_ESC)
+#define KC_SFSP SFT_T(KC_SPC)
+#define KC_ALBS ALT_T(KC_BSPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT( \
+ //,---------------------------------------. ,---------------------------------------.
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,\
+ //|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,\
+ //|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,\
+ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ KC_LSFT, KC_SPC,KC_LALT,KC_LGUI, LOWER,KC_CTES, KC_SFSP, RAISE,KC_ALBS,KC_RCTL,KC_LGUI,XXXXXXX \
+ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ ),
+
+ [_LOWER] = LAYOUT( \
+ //,---------------------------------------. ,---------------------------------------.
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,\
+ //|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ KC_TAB,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_LEFT,KC_DOWN, KC_UP,KC_RGHT, KC_ENT,\
+ //|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ KC_LCTL, KC_SPC,KC_LSFT,KC_LALT, KC_DEL, KC_BSPC,KC_HOME, KC_END,XXXXXXX,XXXXXXX,\
+ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______ \
+ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ ),
+
+ [_RAISE] = LAYOUT( \
+ //,---------------------------------------. ,---------------------------------------.
+ KC_EXLM, KC_AT,KC_HASH, KC_DLR,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,\
+ //|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ KC_TAB,KC_UNDS,KC_PLUS,KC_PIPE,KC_TILD, KC_COLN,KC_DQUO, KC_GT,KC_LCBR,KC_RCBR,\
+ //|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ KC_LCTL,KC_MINS, KC_EQL,KC_BSLS, KC_GRV, KC_SCLN,KC_QUOT, KC_LT,KC_LBRC,KC_RBRC,\
+ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______ \
+ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ ),
+
+ [_ADJUST] = LAYOUT( \
+ //,---------------------------------------. ,---------------------------------------.
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,\
+ //|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ KC_F11, KC_F12, RESET,KC_PSCR, KC_INS, RGB_TOG,RGB_HUI,RGB_SAI,RGB_VAI,XXXXXXX,\
+ //|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, RGB_MOD,RGB_HUD,RGB_SAD,RGB_VAD,RGBRST,\
+ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______ \
+ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ )
+};
+
+int RGB_current_mode;
+
+// Setting ADJUST layer RGB back to default
+void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+ if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
+ layer_on(layer3);
+ } else {
+ layer_off(layer3);
+ }
+}
+
+void matrix_init_user(void) {
+ #ifdef RGBLIGHT_ENABLE
+ RGB_current_mode = rgblight_config.mode;
+ #endif
+}
+
+//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk
+#ifdef OLED_DRIVER_ENABLE
+
+#define L_BASE 0
+#define L_LOWER (1 << 1)
+#define L_RAISE (1 << 2)
+#define L_ADJUST (1 << 3)
+#define L_ADJUST_TRI (L_ADJUST | L_RAISE | L_LOWER)
+
+char layer_state_str[24];
+
+const char *read_layer_state(void) {
+ switch (layer_state)
+ {
+ case L_BASE:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Default");
+ break;
+ case L_RAISE:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise");
+ break;
+ case L_LOWER:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower");
+ break;
+ case L_ADJUST:
+ case L_ADJUST_TRI:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust");
+ break;
+ default:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state);
+ }
+
+ return layer_state_str;
+}
+
+const char *read_logo(void) {
+ static char logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+ 0};
+ return logo;
+}
+
+char keylog_str[24] = {};
+char keylogs_str[21] = {};
+int keylogs_str_idx = 0;
+
+const char code_to_name[60] = {
+ ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
+ 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
+ 'R', 'E', 'B', 'T', ' ', ' ', ' ', ' ', ' ', ' ',
+ ' ', ';', '\'', ' ', ',', '.', '/', ' ', ' ', ' '};
+
+void set_keylog(uint16_t keycode, keyrecord_t *record) {
+ char name = ' ';
+ if (keycode < 60) {
+ name = code_to_name[keycode];
+ }
+
+ // update keylog
+ snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
+ record->event.key.row, record->event.key.col,
+ keycode, name);
+
+ // update keylogs
+ if (keylogs_str_idx == sizeof(keylogs_str) - 1) {
+ keylogs_str_idx = 0;
+ for (int i = 0; i < sizeof(keylogs_str) - 1; i++) {
+ keylogs_str[i] = ' ';
+ }
+ }
+
+ keylogs_str[keylogs_str_idx] = name;
+ keylogs_str_idx++;
+}
+
+const char *read_keylog(void) {
+ return keylog_str;
+}
+
+const char *read_keylogs(void) {
+ return keylogs_str;
+}
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (!is_keyboard_master())
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ return rotation;
+}
+
+void oled_task_user(void) {
+ if (is_keyboard_master()) {
+ // If you want to change the display of OLED, you need to change here
+ oled_write_ln(read_layer_state(), false);
+ oled_write_ln(read_keylog(), false);
+ oled_write_ln(read_keylogs(), false);
+ //oled_write_ln(read_mode_icon(keymap_config.swap_lalt_lgui), false);
+ //oled_write_ln(read_host_led_state(), false);
+ //oled_write_ln(read_timelog(), false);
+ } else {
+ oled_write(read_logo(), false);
+ }
+}
+#endif // OLED_DRIVER_ENABLE
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+#ifdef OLED_DRIVER_ENABLE
+ set_keylog(keycode, record);
+#endif
+ // set_timelog();
+ }
+
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ break;
+ case RGB_MOD:
+ #ifdef RGBLIGHT_ENABLE
+ if (record->event.pressed) {
+ rgblight_mode(RGB_current_mode);
+ rgblight_step();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ #endif
+ return false;
+ break;
+ case RGBRST:
+ #ifdef RGBLIGHT_ENABLE
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ RGB_current_mode = rgblight_config.mode;
+ }
+ #endif
+ break;
+ }
+ return true;
+}
+
+#ifdef RGBLIGHT_ENABLE
+
+char rbf_info_str[24];
+const char *read_rgb_info(void) {
+
+ snprintf(rbf_info_str, sizeof(rbf_info_str), "%s %2d h%3d s%3d v%3d",
+ rgblight_config.enable ? "on" : "- ", rgblight_config.mode,
+ rgblight_config.hue, rgblight_config.sat, rgblight_config.val);
+ return rbf_info_str;
+}
+#endif
diff --git a/keyboards/uzu42/readme.md b/keyboards/uzu42/readme.md
new file mode 100644
index 00000000000..9e287931b9b
--- /dev/null
+++ b/keyboards/uzu42/readme.md
@@ -0,0 +1,15 @@
+# uzu42
+
+[](https://imgur.com/gallery/aKOKBgq)
+
+A split keyboard with 4x5 vertically staggered keys and 1 thumb keys.
+
+Keyboard Maintainer: [nrtkbb](https://github.com/nrtkbb/) [@nrtkbb](https://twitter.com/nrtkbb)
+Hardware Supported: uzu42 PCB, Pro Micro
+Hardware Availability: https://nrtkbb.booth.pm/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make uzu42:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/uzu42/rev1/config.h b/keyboards/uzu42/rev1/config.h
new file mode 100644
index 00000000000..8f86d22bf15
--- /dev/null
+++ b/keyboards/uzu42/rev1/config.h
@@ -0,0 +1,77 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x3060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER nrtkbb
+#define PRODUCT uzu42
+#define DESCRIPTION A split keyboard with 4x5 vertically staggered keys and 1 thumb keys
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
+
+// wiring of each half
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
+// #define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+//#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+//#define LOCKING_RESYNC_ENABLE
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+#ifdef RGBLIGHT_ENABLE
+# define RGBLED_NUM 54 // Number of LEDs
+# define RGBLED_SPLIT { 27, 27 }
+#endif
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+// #define NO_DEBUG
+
+/* disable print */
+// #define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/uzu42/rev1/rev1.c b/keyboards/uzu42/rev1/rev1.c
new file mode 100644
index 00000000000..0bfac6bd935
--- /dev/null
+++ b/keyboards/uzu42/rev1/rev1.c
@@ -0,0 +1,2 @@
+#include "uzu42.h"
+
diff --git a/keyboards/uzu42/rev1/rev1.h b/keyboards/uzu42/rev1/rev1.h
new file mode 100644
index 00000000000..7b9c7d59911
--- /dev/null
+++ b/keyboards/uzu42/rev1/rev1.h
@@ -0,0 +1,36 @@
+#pragma once
+
+#include "../uzu42.h"
+
+#include "quantum.h"
+
+#ifdef RGBLIGHT_ENABLE
+//rgb led driver
+#include "ws2812.h"
+#endif
+
+#ifdef USE_I2C
+#include
+#ifdef __AVR__
+ #include
+ #include
+#endif
+#endif
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { R04, R03, R02, R01, R00 }, \
+ { R14, R13, R12, R11, R10 }, \
+ { R24, R23, R22, R21, R20 }, \
+ { R35, R34, R33, R32, R31, R30 } \
+ }
+
diff --git a/keyboards/uzu42/rev1/rules.mk b/keyboards/uzu42/rev1/rules.mk
new file mode 100644
index 00000000000..9d0da7e0f86
--- /dev/null
+++ b/keyboards/uzu42/rev1/rules.mk
@@ -0,0 +1,20 @@
+# 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 = no # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/naked48/rev1/serial_config.h b/keyboards/uzu42/rev1/serial_config.h
similarity index 61%
rename from keyboards/naked48/rev1/serial_config.h
rename to keyboards/uzu42/rev1/serial_config.h
index 37135213d55..4fab8e8ddfc 100644
--- a/keyboards/naked48/rev1/serial_config.h
+++ b/keyboards/uzu42/rev1/serial_config.h
@@ -1,8 +1,4 @@
-//// #error rev2 serial config
-
#ifndef SOFT_SERIAL_PIN
-/* Soft Serial defines */
#define SOFT_SERIAL_PIN D2
-
#define SERIAL_USE_MULTI_TRANSACTION
#endif
diff --git a/keyboards/uzu42/rev1/serial_config_simpleapi.h b/keyboards/uzu42/rev1/serial_config_simpleapi.h
new file mode 100644
index 00000000000..0e1dd9e4acb
--- /dev/null
+++ b/keyboards/uzu42/rev1/serial_config_simpleapi.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#undef SERIAL_USE_MULTI_TRANSACTION
+#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
+#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2
diff --git a/keyboards/uzu42/rules.mk b/keyboards/uzu42/rules.mk
new file mode 100644
index 00000000000..ff69431d439
--- /dev/null
+++ b/keyboards/uzu42/rules.mk
@@ -0,0 +1,40 @@
+# if firmware size over limit, try this option
+# CFLAGS += -flto
+
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = caterina
+
+# Use split_common libraries
+SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = uzu42/rev1
+
+# 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 = no # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+OLED_DRIVER_ENABLE = no # OLED display
diff --git a/keyboards/uzu42/uzu42.c b/keyboards/uzu42/uzu42.c
new file mode 100644
index 00000000000..0eb8c5f3aa3
--- /dev/null
+++ b/keyboards/uzu42/uzu42.c
@@ -0,0 +1,5 @@
+#include "uzu42.h"
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ return process_record_user(keycode, record);
+}
diff --git a/keyboards/uzu42/uzu42.h b/keyboards/uzu42/uzu42.h
new file mode 100644
index 00000000000..dd944e37506
--- /dev/null
+++ b/keyboards/uzu42/uzu42.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#ifdef KEYBOARD_uzu42_rev1
+ #include "rev1.h"
+#endif
diff --git a/keyboards/vitamins_included/i2c.c b/keyboards/vitamins_included/i2c.c
deleted file mode 100644
index 49ada214336..00000000000
--- a/keyboards/vitamins_included/i2c.c
+++ /dev/null
@@ -1,163 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include "i2c.h"
-
-#ifdef USE_I2C
-
-// Limits the amount of we wait for any one i2c transaction.
-// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is
-// 9 bits, a single transaction will take around 90μs to complete.
-//
-// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit
-// poll loop takes at least 8 clock cycles to execute
-#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8
-
-#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE)
-
-volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-static volatile uint8_t slave_buffer_pos;
-static volatile bool slave_has_register_set = false;
-
-// Wait for an i2c operation to finish
-inline static
-void i2c_delay(void) {
- uint16_t lim = 0;
- while(!(TWCR & (1<10.
- // Check datasheets for more info.
- TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
-}
-
-// Start a transaction with the given i2c slave address. The direction of the
-// transfer is set with I2C_READ and I2C_WRITE.
-// returns: 0 => success
-// 1 => error
-uint8_t i2c_master_start(uint8_t address) {
- TWCR = (1< slave ACK
-// 1 => slave NACK
-uint8_t i2c_master_write(uint8_t data) {
- TWDR = data;
- TWCR = (1<= SLAVE_BUFFER_SIZE ) {
- ack = 0;
- slave_buffer_pos = 0;
- }
- slave_has_register_set = true;
- } else {
- i2c_slave_buffer[slave_buffer_pos] = TWDR;
- BUFFER_POS_INC();
- }
- break;
-
- case TW_ST_SLA_ACK:
- case TW_ST_DATA_ACK:
- // master has addressed this device as a slave transmitter and is
- // requesting data.
- TWDR = i2c_slave_buffer[slave_buffer_pos];
- BUFFER_POS_INC();
- break;
-
- case TW_BUS_ERROR: // something went wrong, reset twi state
- TWCR = 0;
- default:
- break;
- }
- // Reset everything, so we are ready for the next TWI interrupt
- TWCR |= (1<
-#include "split_util.h"
-
-#ifndef F_CPU
-#define F_CPU 16000000UL
-#endif
-
-#define I2C_READ 1
-#define I2C_WRITE 0
-
-#define I2C_ACK 1
-#define I2C_NACK 0
-
-#define SLAVE_BUFFER_SIZE 0x10
-
-// i2c SCL clock frequency
-#define SCL_CLOCK 100000UL
-
-extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-void i2c_master_init(void);
-uint8_t i2c_master_start(uint8_t address);
-void i2c_master_stop(void);
-uint8_t i2c_master_write(uint8_t data);
-uint8_t i2c_master_read(int);
-void i2c_reset_state(void);
-void i2c_slave_init(uint8_t address);
-
-
-static inline unsigned char i2c_start_read(unsigned char addr) {
- return i2c_master_start((addr << 1) | I2C_READ);
-}
-
-static inline unsigned char i2c_start_write(unsigned char addr) {
- return i2c_master_start((addr << 1) | I2C_WRITE);
-}
-
-// from SSD1306 scrips
-extern unsigned char i2c_rep_start(unsigned char addr);
-extern void i2c_start_wait(unsigned char addr);
-extern unsigned char i2c_readAck(void);
-extern unsigned char i2c_readNak(void);
-extern unsigned char i2c_read(unsigned char ack);
-
-#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-#endif
diff --git a/keyboards/vitamins_included/matrix.c b/keyboards/vitamins_included/matrix.c
deleted file mode 100644
index df3e86985bb..00000000000
--- a/keyboards/vitamins_included/matrix.c
+++ /dev/null
@@ -1,503 +0,0 @@
-/*
-Copyright 2012 Jun Wako
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-*/
-
-/*
- * scan matrix
- */
-#include
-#include
-#include
-#include
-#include
-#include "wait.h"
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-#include "split_util.h"
-#include "pro_micro.h"
-#include "config.h"
-#include "timer.h"
-#include
-
-#if (defined(RGB_MIDI) | defined(RGBLIGHT_ANIMATIONS)) & defined(RGBLIGHT_ENABLE)
- #include "rgblight.h"
-#endif
-
-
-#ifdef USE_I2C
-# include "i2c.h"
-#else // USE_SERIAL
-# include "serial.h"
-#endif
-
-#ifndef DEBOUNCE
-# define DEBOUNCE 5
-#endif
-
-#if (DEBOUNCE > 0)
- static uint16_t debouncing_time;
- static bool debouncing = false;
-#endif
-
-#if (MATRIX_COLS <= 8)
-# define print_matrix_header() print("\nr/c 01234567\n")
-# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
-# define matrix_bitpop(i) bitpop(matrix[i])
-# define ROW_SHIFTER ((uint8_t)1)
-#else
-# error "Currently only supports 8 COLS"
-#endif
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-#define ERROR_DISCONNECT_COUNT 5
-
-#define ROWS_PER_HAND (MATRIX_ROWS/2)
-
-static uint8_t error_count = 0;
-
-static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-#if (DIODE_DIRECTION == COL2ROW)
- static void init_cols(void);
- static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row);
- static void unselect_rows(void);
- static void select_row(uint8_t row);
- static void unselect_row(uint8_t row);
-#elif (DIODE_DIRECTION == ROW2COL)
- static void init_rows(void);
- static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col);
- static void unselect_cols(void);
- static void unselect_col(uint8_t col);
- static void select_col(uint8_t col);
-#endif
-
-
-__attribute__ ((weak))
-void matrix_init_quantum(void) {
- matrix_init_kb();
-}
-
-__attribute__ ((weak))
-void matrix_scan_quantum(void) {
- matrix_scan_kb();
-}
-
-__attribute__ ((weak))
-void matrix_init_kb(void) {
- matrix_init_user();
-}
-
-__attribute__ ((weak))
-void matrix_scan_kb(void) {
- matrix_scan_user();
-}
-
-__attribute__ ((weak))
-void matrix_init_user(void) {
-}
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {
-}
-
-inline
-uint8_t matrix_rows(void) {
- return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void) {
- return MATRIX_COLS;
-}
-
-bool has_usb(void) {
- return UDADDR & _BV(ADDEN); // This will return true if a USB connection has been established
-}
-
-void matrix_init(void)
-{
- // initialize row and col
-#if (DIODE_DIRECTION == COL2ROW)
- unselect_rows();
- init_cols();
-#elif (DIODE_DIRECTION == ROW2COL)
- unselect_cols();
- init_rows();
-#endif
-
- TX_RX_LED_INIT;
-
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- matrix[i] = 0;
- matrix_debouncing[i] = 0;
- }
-
- #ifdef RGBLIGHT_ENABLE
- rgblight_init();
- #endif
-
- timer_init();
- #ifdef USE_I2C
- i2c_slave_init(SLAVE_I2C_ADDRESS);
- #else
- serial_slave_init();
- #endif
-
- sei();
-
- matrix_init_quantum();
- while(!has_usb() || contacted_by_master){
- matrix_slave_scan();
- }
-
- // Set up as master
- #ifdef USE_I2C
- i2c_reset_state();
- i2c_master_init();
- #else
- serial_master_init();
- #endif
-}
-
-uint8_t _matrix_scan(void)
-{
- int offset = isLeftHand ? 0 : (ROWS_PER_HAND);
-#if (DIODE_DIRECTION == COL2ROW)
- // Set row, read cols
- for (uint8_t current_row = 0; current_row < ROWS_PER_HAND; current_row++) {
-# if (DEBOUNCE > 0)
- bool matrix_changed = read_cols_on_row(matrix_debouncing+offset, current_row);
-
- if (matrix_changed) {
- debouncing = true;
- debouncing_time = timer_read();
- }
-
-# else
- read_cols_on_row(matrix+offset, current_row);
-# endif
-
- }
-
-#elif (DIODE_DIRECTION == ROW2COL)
- // Set col, read rows
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
-# if (DEBOUNCE > 0)
- bool matrix_changed = read_rows_on_col(matrix_debouncing+offset, current_col);
- if (matrix_changed) {
- debouncing = true;
- debouncing_time = timer_read();
- }
-# else
- read_rows_on_col(matrix+offset, current_col);
-# endif
-
- }
-#endif
-
-# if (DEBOUNCE > 0)
- if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCE)) {
- for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
- matrix[i+offset] = matrix_debouncing[i+offset];
- }
- debouncing = false;
- }
-# endif
-
- return 1;
-}
-
-#ifdef USE_I2C
-
-// Get rows from other half over i2c
-int i2c_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-
- int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE);
- if (err) goto i2c_error;
-
- // start of matrix stored at 0x00
- err = i2c_master_write(0x00);
- if (err) goto i2c_error;
-
- // Start read
- err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ);
- if (err) goto i2c_error;
-
- if (!err) {
- int i;
- for (i = 0; i < ROWS_PER_HAND-1; ++i) {
- matrix[slaveOffset+i] = i2c_master_read(I2C_ACK);
- }
- matrix[slaveOffset+i] = i2c_master_read(I2C_NACK);
- i2c_master_stop();
- } else {
-i2c_error: // the cable is disconnceted, or something else went wrong
- i2c_reset_state();
- return err;
- }
-
- return 0;
-}
-
-#else // USE_SERIAL
-
-int serial_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-
- if (serial_update_buffers()) {
- return 1;
- }
-
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[slaveOffset+i] = serial_slave_buffer[i];
- }
- return 0;
-}
-#endif
-
-uint8_t matrix_scan(void)
-{
- uint8_t ret = _matrix_scan();
-
-#ifdef USE_I2C
- if( i2c_transaction() ) {
-#else // USE_SERIAL
- if( serial_transaction() ) {
-#endif
- // turn on the indicator led when halves are disconnected
- TXLED1;
-
- error_count++;
-
- if (error_count > ERROR_DISCONNECT_COUNT) {
- // reset other half if disconnected
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[slaveOffset+i] = 0;
- }
- }
- } else {
- // turn off the indicator led on no error
- TXLED0;
- error_count = 0;
- }
- matrix_scan_quantum();
- return ret;
-}
-
-void matrix_slave_scan(void) {
- #if defined(RGBLIGHT_ANIMATIONS) & defined(RGBLIGHT_ENABLE)
- rgblight_task();
- #endif
- _matrix_scan();
-
- int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
-
-#ifdef USE_I2C
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- i2c_slave_buffer[i] = matrix[offset+i];
- }
-#else // USE_SERIAL
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- serial_slave_buffer[i] = matrix[offset+i];
- }
-#endif
-}
-
-bool matrix_is_modified(void)
-{
- if (debouncing) return false;
- return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
- return (matrix[row] & ((matrix_row_t)1<> 4) + 1) &= ~_BV(pin & 0xF); // IN
- _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
- }
-}
-
-static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
-{
- // Store last value of row prior to reading
- matrix_row_t last_row_value = current_matrix[current_row];
-
- // Clear data in matrix row
- current_matrix[current_row] = 0;
-
- // Select row and wait for row selecton to stabilize
- select_row(current_row);
- wait_us(30);
-
- // For each col...
- for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
-
- // Select the col pin to read (active low)
- uint8_t pin = col_pins[col_index];
- uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
-
- // Populate the matrix row with the state of the col pin
- current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index);
- }
-
- // Unselect row
- unselect_row(current_row);
-
- return (last_row_value != current_matrix[current_row]);
-}
-
-static void select_row(uint8_t row)
-{
- uint8_t pin = row_pins[row];
- _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
- _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
-}
-
-static void unselect_row(uint8_t row)
-{
- uint8_t pin = row_pins[row];
- _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
- _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
-}
-
-static void unselect_rows(void)
-{
- for(uint8_t x = 0; x < ROWS_PER_HAND; x++) {
- uint8_t pin = row_pins[x];
- _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
- _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
- }
-}
-
-#elif (DIODE_DIRECTION == ROW2COL)
-
-static void init_rows(void)
-{
- for(uint8_t x = 0; x < ROWS_PER_HAND; x++) {
- uint8_t pin = row_pins[x];
- _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
- _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
- }
-}
-
-static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
-{
- bool matrix_changed = false;
-
- // Select col and wait for col selecton to stabilize
- select_col(current_col);
- wait_us(30);
-
- // For each row...
- for(uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++)
- {
-
- // Store last value of row prior to reading
- matrix_row_t last_row_value = current_matrix[row_index];
-
- // Check row pin state
- if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0)
- {
- // Pin LO, set col bit
- current_matrix[row_index] |= (ROW_SHIFTER << current_col);
- }
- else
- {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~(ROW_SHIFTER << current_col);
- }
-
- // Determine if the matrix changed state
- if ((last_row_value != current_matrix[row_index]) && !(matrix_changed))
- {
- matrix_changed = true;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
-
- return matrix_changed;
-}
-
-static void select_col(uint8_t col)
-{
- uint8_t pin = col_pins[col];
- _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
- _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
-}
-
-static void unselect_col(uint8_t col)
-{
- uint8_t pin = col_pins[col];
- _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
- _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
-}
-
-static void unselect_cols(void)
-{
- for(uint8_t x = 0; x < MATRIX_COLS; x++) {
- uint8_t pin = col_pins[x];
- _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
- _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
- }
-}
-
-#endif
diff --git a/keyboards/vitamins_included/rev1/config.h b/keyboards/vitamins_included/rev1/config.h
index 39b6a9ff401..c4881db01b3 100644
--- a/keyboards/vitamins_included/rev1/config.h
+++ b/keyboards/vitamins_included/rev1/config.h
@@ -20,7 +20,10 @@ along with this program. If not, see .
#include "config_common.h"
+#define SPLIT_USB_DETECT
+
#define EE_HANDS
+#define SOFT_SERIAL_PIN D0
/* USB Device descriptor parameters */
#define DEVICE_VER 0x0001
diff --git a/keyboards/vitamins_included/rev1/rules.mk b/keyboards/vitamins_included/rev1/rules.mk
index b500c8f278b..4b1454e1550 100644
--- a/keyboards/vitamins_included/rev1/rules.mk
+++ b/keyboards/vitamins_included/rev1/rules.mk
@@ -1,9 +1,2 @@
-SRC += matrix.c \
- split_util.c \
- ssd1306.c
-
-QUANTUM_LIB_SRC += i2c.c \
- serial.c \
-
-CUSTOM_MATRIX = yes
+SPLIT_KEYBOARD = yes
BOOTLOADER = caterina
diff --git a/keyboards/vitamins_included/serial.c b/keyboards/vitamins_included/serial.c
deleted file mode 100644
index 4d37eeb8d30..00000000000
--- a/keyboards/vitamins_included/serial.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * WARNING: be careful changing this code, it is very timing dependent
- */
-
-#ifndef F_CPU
-#define F_CPU 16000000
-#endif
-
-#include
-#include
-#include
-#include
-#include "serial.h"
-
-#ifndef USE_I2C
-
-// Serial pulse period in microseconds. Its probably a bad idea to lower this
-// value.
-#define SERIAL_DELAY 24
-
-uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0};
-uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0};
-
-#define SLAVE_DATA_CORRUPT (1<<0)
-volatile uint8_t status = 0;
-
-inline static
-void serial_delay(void) {
- _delay_us(SERIAL_DELAY);
-}
-
-inline static
-void serial_output(void) {
- SERIAL_PIN_DDR |= SERIAL_PIN_MASK;
-}
-
-// make the serial pin an input with pull-up resistor
-inline static
-void serial_input(void) {
- SERIAL_PIN_DDR &= ~SERIAL_PIN_MASK;
- SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
-}
-
-inline static
-uint8_t serial_read_pin(void) {
- return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK);
-}
-
-inline static
-void serial_low(void) {
- SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK;
-}
-
-inline static
-void serial_high(void) {
- SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
-}
-
-void serial_master_init(void) {
- serial_output();
- serial_high();
-}
-
-void serial_slave_init(void) {
- serial_input();
-
- // Enable INT0
- EIMSK |= _BV(INT0);
- // Trigger on falling edge of INT0
- EICRA &= ~(_BV(ISC00) | _BV(ISC01));
-}
-
-// Used by the master to synchronize timing with the slave.
-static
-void sync_recv(void) {
- serial_input();
- // This shouldn't hang if the slave disconnects because the
- // serial line will float to high if the slave does disconnect.
- while (!serial_read_pin());
- serial_delay();
-}
-
-// Used by the slave to send a synchronization signal to the master.
-static
-void sync_send(void) {
- serial_output();
-
- serial_low();
- serial_delay();
-
- serial_high();
-}
-
-// Reads a byte from the serial line
-static
-uint8_t serial_read_byte(void) {
- uint8_t byte = 0;
- serial_input();
- for ( uint8_t i = 0; i < 8; ++i) {
- byte = (byte << 1) | serial_read_pin();
- serial_delay();
- _delay_us(1);
- }
-
- return byte;
-}
-
-// Sends a byte with MSB ordering
-static
-void serial_write_byte(uint8_t data) {
- uint8_t b = 8;
- serial_output();
- while( b-- ) {
- if(data & (1 << b)) {
- serial_high();
- } else {
- serial_low();
- }
- serial_delay();
- }
-}
-
-// interrupt handle to be used by the slave device
-ISR(SERIAL_PIN_INTERRUPT) {
- sync_send();
-
- uint8_t checksum = 0;
- for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
- serial_write_byte(serial_slave_buffer[i]);
- sync_send();
- checksum += serial_slave_buffer[i];
- }
- serial_write_byte(checksum);
- sync_send();
-
- // wait for the sync to finish sending
- serial_delay();
-
- // read the middle of pulses
- _delay_us(SERIAL_DELAY/2);
-
- uint8_t checksum_computed = 0;
- for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
- serial_master_buffer[i] = serial_read_byte();
- sync_send();
- checksum_computed += serial_master_buffer[i];
- }
- uint8_t checksum_received = serial_read_byte();
- sync_send();
-
- serial_input(); // end transaction
-
- if ( checksum_computed != checksum_received ) {
- status |= SLAVE_DATA_CORRUPT;
- } else {
- status &= ~SLAVE_DATA_CORRUPT;
- }
- contacted_by_master = true;
-}
-
-inline
-bool serial_slave_DATA_CORRUPT(void) {
- return status & SLAVE_DATA_CORRUPT;
-}
-
-// Copies the serial_slave_buffer to the master and sends the
-// serial_master_buffer to the slave.
-//
-// Returns:
-// 0 => no error
-// 1 => slave did not respond
-int serial_update_buffers(void) {
- // this code is very time dependent, so we need to disable interrupts
- cli();
-
- // signal to the slave that we want to start a transaction
- serial_output();
- serial_low();
- _delay_us(1);
-
- // wait for the slaves response
- serial_input();
- serial_high();
- _delay_us(SERIAL_DELAY);
-
- // check if the slave is present
- if (serial_read_pin()) {
- // slave failed to pull the line low, assume not present
- sei();
- return 1;
- }
-
- // if the slave is present syncronize with it
- sync_recv();
-
- uint8_t checksum_computed = 0;
- // receive data from the slave
- for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) {
- serial_slave_buffer[i] = serial_read_byte();
- sync_recv();
- checksum_computed += serial_slave_buffer[i];
- }
- uint8_t checksum_received = serial_read_byte();
- sync_recv();
-
- if (checksum_computed != checksum_received) {
- sei();
- return 1;
- }
-
- uint8_t checksum = 0;
- // send data to the slave
- for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) {
- serial_write_byte(serial_master_buffer[i]);
- sync_recv();
- checksum += serial_master_buffer[i];
- }
- serial_write_byte(checksum);
- sync_recv();
-
- // always, release the line when not in use
- serial_output();
- serial_high();
-
- sei();
- return 0;
-}
-
-#endif
diff --git a/keyboards/vitamins_included/serial.h b/keyboards/vitamins_included/serial.h
deleted file mode 100644
index 53b3a3bf0bf..00000000000
--- a/keyboards/vitamins_included/serial.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-
-#include "config.h"
-#include
-#include "split_util.h"
-
-/* TODO: some defines for interrupt setup */
-#define SERIAL_PIN_DDR DDRD
-#define SERIAL_PIN_PORT PORTD
-#define SERIAL_PIN_INPUT PIND
-#define SERIAL_PIN_MASK _BV(PD0)
-#define SERIAL_PIN_INTERRUPT INT0_vect
-
-#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-#define SERIAL_MASTER_BUFFER_LENGTH 1
-
-// Buffers for master - slave communication
-extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
-extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
-
-void serial_master_init(void);
-void serial_slave_init(void);
-int serial_update_buffers(void);
-bool serial_slave_data_corrupt(void);
-
diff --git a/keyboards/vitamins_included/split_util.c b/keyboards/vitamins_included/split_util.c
deleted file mode 100644
index 4a898cd7ba7..00000000000
--- a/keyboards/vitamins_included/split_util.c
+++ /dev/null
@@ -1,28 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include "split_util.h"
-#include "matrix.h"
-#include "keyboard.h"
-#include "config.h"
-#include "timer.h"
-#include "debug.h"
-
-volatile bool isLeftHand = true;
-volatile bool contacted_by_master = false;
-
-bool is_rev2(void) // Input with pullup, if rev2, pin is pulled down with 220R resistor.
-{
- setPinInputHigh(B5);
- bool rev2 = !readPin(B5);
- setPinInput(B5);
- return rev2;
-}
-
-// this code runs before the usb and keyboard is initialized
-void matrix_setup(void) {
- isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
-}
diff --git a/keyboards/vitamins_included/split_util.h b/keyboards/vitamins_included/split_util.h
deleted file mode 100644
index da7be515596..00000000000
--- a/keyboards/vitamins_included/split_util.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-#include
-#include "eeconfig.h"
-#include "quantum.h"
-
-#define SLAVE_I2C_ADDRESS 0x32
-
-extern volatile bool isLeftHand;
-extern volatile bool contacted_by_master;
-
-bool has_usb(void);
-bool is_rev2(void);
-
-// slave version of matix scan, defined in matrix.c
-void matrix_slave_scan(void);
diff --git a/keyboards/wilba_tech/rama_works_koyu/rules.mk b/keyboards/wilba_tech/rama_works_koyu/rules.mk
index 9839602247b..ebcb6a455f7 100644
--- a/keyboards/wilba_tech/rama_works_koyu/rules.mk
+++ b/keyboards/wilba_tech/rama_works_koyu/rules.mk
@@ -1,5 +1,3 @@
-
-
# project specific files
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
@@ -10,42 +8,14 @@ SRC = keyboards/wilba_tech/wt_main.c \
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
# Do not put the microcontroller into power saving mode
diff --git a/keyboards/wilba_tech/rama_works_m10_b/config.h b/keyboards/wilba_tech/rama_works_m10_b/config.h
index 6901309a08b..f72ecae85c2 100644
--- a/keyboards/wilba_tech/rama_works_m10_b/config.h
+++ b/keyboards/wilba_tech/rama_works_m10_b/config.h
@@ -181,8 +181,6 @@ along with this program. If not, see .
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
-//#define WT_MONO_BACKLIGHT
-
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
// EEPROM usage
diff --git a/keyboards/wilba_tech/rama_works_m10_b/rules.mk b/keyboards/wilba_tech/rama_works_m10_b/rules.mk
index 70258b9ead6..99330021f24 100644
--- a/keyboards/wilba_tech/rama_works_m10_b/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m10_b/rules.mk
@@ -4,44 +4,14 @@ SRC = keyboards/wilba_tech/wt_main.c
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
diff --git a/keyboards/wilba_tech/rama_works_m60_a/rules.mk b/keyboards/wilba_tech/rama_works_m60_a/rules.mk
index 3b2287333c4..4ce5dc54cb9 100644
--- a/keyboards/wilba_tech/rama_works_m60_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m60_a/rules.mk
@@ -10,42 +10,14 @@ SRC = keyboards/wilba_tech/wt_main.c \
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
# Do not put the microcontroller into power saving mode
diff --git a/keyboards/wilba_tech/rama_works_m6_a/rules.mk b/keyboards/wilba_tech/rama_works_m6_a/rules.mk
index 4270e7090c0..32f0e25de8e 100644
--- a/keyboards/wilba_tech/rama_works_m6_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m6_a/rules.mk
@@ -4,43 +4,14 @@ SRC = keyboards/wilba_tech/wt_main.c
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
# Do not put the microcontroller into power saving mode
diff --git a/keyboards/wilba_tech/rama_works_m6_b/rules.mk b/keyboards/wilba_tech/rama_works_m6_b/rules.mk
index 6b7b3a63d85..c016fa344f5 100644
--- a/keyboards/wilba_tech/rama_works_m6_b/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m6_b/rules.mk
@@ -5,47 +5,17 @@ SRC = keyboards/wilba_tech/wt_main.c \
drivers/issi/is31fl3218.c \
drivers/avr/i2c_master.c
-
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
# Do not put the microcontroller into power saving mode
diff --git a/keyboards/wilba_tech/rama_works_u80_a/config.h b/keyboards/wilba_tech/rama_works_u80_a/config.h
index 348b124b90b..d0bf0ed1e3b 100644
--- a/keyboards/wilba_tech/rama_works_u80_a/config.h
+++ b/keyboards/wilba_tech/rama_works_u80_a/config.h
@@ -179,8 +179,6 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
-//#define WT_MONO_BACKLIGHT
-
// IS31FL3731 driver
#define DRIVER_COUNT 3
#define DRIVER_LED_TOTAL 108
diff --git a/keyboards/wilba_tech/rama_works_u80_a/rules.mk b/keyboards/wilba_tech/rama_works_u80_a/rules.mk
index 6079ad8932d..caecaecbb7d 100644
--- a/keyboards/wilba_tech/rama_works_u80_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_u80_a/rules.mk
@@ -8,44 +8,14 @@ SRC = keyboards/wilba_tech/wt_main.c \
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
diff --git a/keyboards/wilba_tech/wt60_a/config.h b/keyboards/wilba_tech/wt60_a/config.h
index 3ac8ea6fc04..6e1e0e81cc8 100644
--- a/keyboards/wilba_tech/wt60_a/config.h
+++ b/keyboards/wilba_tech/wt60_a/config.h
@@ -179,14 +179,33 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
-#define WT_MONO_BACKLIGHT
+// enable the mono backlight
+#define MONO_BACKLIGHT_ENABLED 1
+
+// enable the RGB indicator for WT75-A
+#define MONO_BACKLIGHT_WT75_A
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define MONO_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+#define MONO_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect
+#define MONO_BACKLIGHT_EFFECT 1
+
+// the default effect speed (0-3)
+#define MONO_BACKLIGHT_EFFECT_SPEED 0
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
// EEPROM usage
// TODO: refactor with new user EEPROM code (coming soon)
-#define EEPROM_MAGIC 0x451F
+#define EEPROM_MAGIC 0x4520
#define EEPROM_MAGIC_ADDR 34
// Bump this every time we change what we store
// This will automatically reset the EEPROM with defaults
@@ -194,9 +213,11 @@
#define EEPROM_VERSION 0x08
#define EEPROM_VERSION_ADDR 36
-// Dynamic keymap starts after EEPROM version
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 37
-// Dynamic macro starts after dynamic keymaps (37+(4*5*14*2)) = (37+560)
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 597
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 427
+// Backlight config starts after EEPROM version
+#define MONO_BACKLIGHT_CONFIG_EEPROM_ADDR 37
+// Dynamic keymap starts after backlight config (37+7)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 44
+// Dynamic macro starts after dynamic keymaps (44+(4*5*14*2)) = (44+560)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 604
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 420
#define DYNAMIC_KEYMAP_MACRO_COUNT 16
diff --git a/keyboards/wilba_tech/wt60_a/keymaps/via/rules.mk b/keyboards/wilba_tech/wt60_a/keymaps/via/rules.mk
index 76a07d7a44a..8834bf0c8e5 100644
--- a/keyboards/wilba_tech/wt60_a/keymaps/via/rules.mk
+++ b/keyboards/wilba_tech/wt60_a/keymaps/via/rules.mk
@@ -1,71 +1,2 @@
-# project specific files
-SRC = drivers/issi/is31fl3736.c \
- drivers/avr/i2c_master.c \
- keyboards/wilba_tech/wt_mono_backlight.c \
- keyboards/wilba_tech/wt_main.c
-
-# MCU name
-MCU = atmega32u4
-
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
-BOOTLOADER = atmel-dfu
-
-
-# Build Options
-# change yes to no to disable
-#
-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 = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE = no # Audio output on port C6
-FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-
RAW_ENABLE = yes
DYNAMIC_KEYMAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt60_a/rules.mk b/keyboards/wilba_tech/wt60_a/rules.mk
index e41f2186b3a..4f702fab498 100644
--- a/keyboards/wilba_tech/wt60_a/rules.mk
+++ b/keyboards/wilba_tech/wt60_a/rules.mk
@@ -1,6 +1,7 @@
# project specific files
SRC = drivers/issi/is31fl3736.c \
drivers/avr/i2c_master.c \
+ quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
diff --git a/keyboards/wilba_tech/wt60_d/keymaps/via/rules.mk b/keyboards/wilba_tech/wt60_d/keymaps/via/rules.mk
index f072c67198c..8834bf0c8e5 100644
--- a/keyboards/wilba_tech/wt60_d/keymaps/via/rules.mk
+++ b/keyboards/wilba_tech/wt60_d/keymaps/via/rules.mk
@@ -1,68 +1,2 @@
-# project specific files
-SRC = keyboards/wilba_tech/wt_main.c
-
-# MCU name
-MCU = atmega32u4
-
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
-BOOTLOADER = atmel-dfu
-
-
-# Build Options
-# change yes to no to disable
-#
-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 = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE = no # Audio output on port C6
-FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-
RAW_ENABLE = yes
DYNAMIC_KEYMAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt60_d/rules.mk b/keyboards/wilba_tech/wt60_d/rules.mk
index f072c67198c..7ba0b9223b2 100644
--- a/keyboards/wilba_tech/wt60_d/rules.mk
+++ b/keyboards/wilba_tech/wt60_d/rules.mk
@@ -1,50 +1,19 @@
# project specific files
SRC = keyboards/wilba_tech/wt_main.c
-
+
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/wilba_tech/wt65_a/config.h b/keyboards/wilba_tech/wt65_a/config.h
index f1bcb990aab..9d67c317b28 100644
--- a/keyboards/wilba_tech/wt65_a/config.h
+++ b/keyboards/wilba_tech/wt65_a/config.h
@@ -179,14 +179,30 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
-#define WT_MONO_BACKLIGHT
+// enable the mono backlight
+#define MONO_BACKLIGHT_ENABLED 1
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define MONO_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+#define MONO_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect
+#define MONO_BACKLIGHT_EFFECT 1
+
+// the default effect speed (0-3)
+#define MONO_BACKLIGHT_EFFECT_SPEED 0
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
// EEPROM usage
// TODO: refactor with new user EEPROM code (coming soon)
-#define EEPROM_MAGIC 0x451F
+#define EEPROM_MAGIC 0x4520
#define EEPROM_MAGIC_ADDR 34
// Bump this every time we change what we store
// This will automatically reset the EEPROM with defaults
@@ -194,9 +210,11 @@
#define EEPROM_VERSION 0x08
#define EEPROM_VERSION_ADDR 36
-// Dynamic keymap starts after EEPROM version
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 37
-// Dynamic macro starts after dynamic keymaps (37+(4*5*15*2)) = (37+600)
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 637
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 387
+// Backlight config starts after EEPROM version
+#define MONO_BACKLIGHT_CONFIG_EEPROM_ADDR 37
+// Dynamic keymap starts after backlight config (37+7)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 44
+// Dynamic macro starts after dynamic keymaps (44+(4*5*15*2)) = (44+600)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 644
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 380
#define DYNAMIC_KEYMAP_MACRO_COUNT 16
diff --git a/keyboards/wilba_tech/wt65_a/keymaps/via/rules.mk b/keyboards/wilba_tech/wt65_a/keymaps/via/rules.mk
index 76a07d7a44a..8834bf0c8e5 100644
--- a/keyboards/wilba_tech/wt65_a/keymaps/via/rules.mk
+++ b/keyboards/wilba_tech/wt65_a/keymaps/via/rules.mk
@@ -1,71 +1,2 @@
-# project specific files
-SRC = drivers/issi/is31fl3736.c \
- drivers/avr/i2c_master.c \
- keyboards/wilba_tech/wt_mono_backlight.c \
- keyboards/wilba_tech/wt_main.c
-
-# MCU name
-MCU = atmega32u4
-
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
-BOOTLOADER = atmel-dfu
-
-
-# Build Options
-# change yes to no to disable
-#
-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 = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE = no # Audio output on port C6
-FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-
RAW_ENABLE = yes
DYNAMIC_KEYMAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_a/rules.mk b/keyboards/wilba_tech/wt65_a/rules.mk
index e41f2186b3a..9b5bd1e7f9b 100644
--- a/keyboards/wilba_tech/wt65_a/rules.mk
+++ b/keyboards/wilba_tech/wt65_a/rules.mk
@@ -1,50 +1,21 @@
# project specific files
SRC = drivers/issi/is31fl3736.c \
drivers/avr/i2c_master.c \
+ quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
diff --git a/keyboards/wilba_tech/wt65_b/config.h b/keyboards/wilba_tech/wt65_b/config.h
index 765ed8ee1d0..8b2437fc92a 100644
--- a/keyboards/wilba_tech/wt65_b/config.h
+++ b/keyboards/wilba_tech/wt65_b/config.h
@@ -179,14 +179,30 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
-#define WT_MONO_BACKLIGHT
+// enable the mono backlight
+#define MONO_BACKLIGHT_ENABLED 1
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define MONO_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+#define MONO_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect
+#define MONO_BACKLIGHT_EFFECT 1
+
+// the default effect speed (0-3)
+#define MONO_BACKLIGHT_EFFECT_SPEED 0
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
// EEPROM usage
// TODO: refactor with new user EEPROM code (coming soon)
-#define EEPROM_MAGIC 0x451F
+#define EEPROM_MAGIC 0x4520
#define EEPROM_MAGIC_ADDR 34
// Bump this every time we change what we store
// This will automatically reset the EEPROM with defaults
@@ -194,9 +210,11 @@
#define EEPROM_VERSION 0x08
#define EEPROM_VERSION_ADDR 36
-// Dynamic keymap starts after EEPROM version
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 37
-// Dynamic macro starts after dynamic keymaps (37+(4*5*15*2)) = (37+600)
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 637
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 387
+// Backlight config starts after EEPROM version
+#define MONO_BACKLIGHT_CONFIG_EEPROM_ADDR 37
+// Dynamic keymap starts after backlight config (37+7)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 44
+// Dynamic macro starts after dynamic keymaps (44+(4*5*15*2)) = (44+600)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 644
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 380
#define DYNAMIC_KEYMAP_MACRO_COUNT 16
diff --git a/keyboards/wilba_tech/wt65_b/keymaps/via/rules.mk b/keyboards/wilba_tech/wt65_b/keymaps/via/rules.mk
index 76a07d7a44a..8834bf0c8e5 100644
--- a/keyboards/wilba_tech/wt65_b/keymaps/via/rules.mk
+++ b/keyboards/wilba_tech/wt65_b/keymaps/via/rules.mk
@@ -1,71 +1,2 @@
-# project specific files
-SRC = drivers/issi/is31fl3736.c \
- drivers/avr/i2c_master.c \
- keyboards/wilba_tech/wt_mono_backlight.c \
- keyboards/wilba_tech/wt_main.c
-
-# MCU name
-MCU = atmega32u4
-
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
-BOOTLOADER = atmel-dfu
-
-
-# Build Options
-# change yes to no to disable
-#
-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 = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE = no # Audio output on port C6
-FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-
RAW_ENABLE = yes
DYNAMIC_KEYMAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_b/rules.mk b/keyboards/wilba_tech/wt65_b/rules.mk
index e41f2186b3a..9b5bd1e7f9b 100644
--- a/keyboards/wilba_tech/wt65_b/rules.mk
+++ b/keyboards/wilba_tech/wt65_b/rules.mk
@@ -1,50 +1,21 @@
# project specific files
SRC = drivers/issi/is31fl3736.c \
drivers/avr/i2c_master.c \
+ quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
diff --git a/keyboards/wilba_tech/wt69_a/keymaps/via/rules.mk b/keyboards/wilba_tech/wt69_a/keymaps/via/rules.mk
index f072c67198c..8834bf0c8e5 100644
--- a/keyboards/wilba_tech/wt69_a/keymaps/via/rules.mk
+++ b/keyboards/wilba_tech/wt69_a/keymaps/via/rules.mk
@@ -1,68 +1,2 @@
-# project specific files
-SRC = keyboards/wilba_tech/wt_main.c
-
-# MCU name
-MCU = atmega32u4
-
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
-BOOTLOADER = atmel-dfu
-
-
-# Build Options
-# change yes to no to disable
-#
-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 = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE = no # Audio output on port C6
-FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-
RAW_ENABLE = yes
DYNAMIC_KEYMAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt69_a/rules.mk b/keyboards/wilba_tech/wt69_a/rules.mk
index f1c632289cc..f349608cd98 100644
--- a/keyboards/wilba_tech/wt69_a/rules.mk
+++ b/keyboards/wilba_tech/wt69_a/rules.mk
@@ -1,47 +1,17 @@
# project specific files
SRC = keyboards/wilba_tech/wt_main.c
-
+
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
diff --git a/keyboards/wilba_tech/wt75_a/config.h b/keyboards/wilba_tech/wt75_a/config.h
index 024370d54d8..f63bbf69c7a 100644
--- a/keyboards/wilba_tech/wt75_a/config.h
+++ b/keyboards/wilba_tech/wt75_a/config.h
@@ -179,14 +179,33 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
-#define WT_MONO_BACKLIGHT
+// enable the mono backlight
+#define MONO_BACKLIGHT_ENABLED 1
+
+// enable the RGB indicator for WT75-A
+#define MONO_BACKLIGHT_WT75_A
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define MONO_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+#define MONO_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect
+#define MONO_BACKLIGHT_EFFECT 1
+
+// the default effect speed (0-3)
+#define MONO_BACKLIGHT_EFFECT_SPEED 0
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
// EEPROM usage
// TODO: refactor with new user EEPROM code (coming soon)
-#define EEPROM_MAGIC 0x451F
+#define EEPROM_MAGIC 0x4520
#define EEPROM_MAGIC_ADDR 34
// Bump this every time we change what we store
// This will automatically reset the EEPROM with defaults
@@ -194,9 +213,11 @@
#define EEPROM_VERSION 0x08
#define EEPROM_VERSION_ADDR 36
-// Dynamic keymap starts after EEPROM version
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 37
-// Dynamic macro starts after dynamic keymaps (37+(4*6*15*2)) = (37+720)
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 757
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 267
+// Backlight config starts after EEPROM version
+#define MONO_BACKLIGHT_CONFIG_EEPROM_ADDR 37
+// Dynamic keymap starts after backlight config (37+7)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 44
+// Dynamic macro starts after dynamic keymaps (44+(4*6*15*2)) = (44+720)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 764
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 260
#define DYNAMIC_KEYMAP_MACRO_COUNT 16
diff --git a/keyboards/wilba_tech/wt75_a/keymaps/via/rules.mk b/keyboards/wilba_tech/wt75_a/keymaps/via/rules.mk
index 76a07d7a44a..8834bf0c8e5 100644
--- a/keyboards/wilba_tech/wt75_a/keymaps/via/rules.mk
+++ b/keyboards/wilba_tech/wt75_a/keymaps/via/rules.mk
@@ -1,71 +1,2 @@
-# project specific files
-SRC = drivers/issi/is31fl3736.c \
- drivers/avr/i2c_master.c \
- keyboards/wilba_tech/wt_mono_backlight.c \
- keyboards/wilba_tech/wt_main.c
-
-# MCU name
-MCU = atmega32u4
-
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
-BOOTLOADER = atmel-dfu
-
-
-# Build Options
-# change yes to no to disable
-#
-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 = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE = no # Audio output on port C6
-FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-
RAW_ENABLE = yes
DYNAMIC_KEYMAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt75_a/rules.mk b/keyboards/wilba_tech/wt75_a/rules.mk
index e41f2186b3a..9b5bd1e7f9b 100644
--- a/keyboards/wilba_tech/wt75_a/rules.mk
+++ b/keyboards/wilba_tech/wt75_a/rules.mk
@@ -1,50 +1,21 @@
# project specific files
SRC = drivers/issi/is31fl3736.c \
drivers/avr/i2c_master.c \
+ quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
diff --git a/keyboards/wilba_tech/wt75_b/config.h b/keyboards/wilba_tech/wt75_b/config.h
index b8ada14e8f2..b173b024174 100644
--- a/keyboards/wilba_tech/wt75_b/config.h
+++ b/keyboards/wilba_tech/wt75_b/config.h
@@ -179,14 +179,33 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
-#define WT_MONO_BACKLIGHT
+// enable the mono backlight
+#define MONO_BACKLIGHT_ENABLED 1
+
+// enable the RGB indicator for WT75-A
+#define MONO_BACKLIGHT_WT75_A
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define MONO_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+#define MONO_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect
+#define MONO_BACKLIGHT_EFFECT 1
+
+// the default effect speed (0-3)
+#define MONO_BACKLIGHT_EFFECT_SPEED 0
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
// EEPROM usage
// TODO: refactor with new user EEPROM code (coming soon)
-#define EEPROM_MAGIC 0x451F
+#define EEPROM_MAGIC 0x4520
#define EEPROM_MAGIC_ADDR 34
// Bump this every time we change what we store
// This will automatically reset the EEPROM with defaults
@@ -194,9 +213,11 @@
#define EEPROM_VERSION 0x08
#define EEPROM_VERSION_ADDR 36
-// Dynamic keymap starts after EEPROM version
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 37
-// Dynamic macro starts after dynamic keymaps (37+(4*6*16*2)) = (37+768)
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 805
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 219
+// Backlight config starts after EEPROM version
+#define MONO_BACKLIGHT_CONFIG_EEPROM_ADDR 37
+// Dynamic keymap starts after backlight config (37+7)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 44
+// Dynamic macro starts after dynamic keymaps (44+(4*6*16*2)) = (44+768)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 812
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 212
#define DYNAMIC_KEYMAP_MACRO_COUNT 16
diff --git a/keyboards/wilba_tech/wt75_b/keymaps/via/rules.mk b/keyboards/wilba_tech/wt75_b/keymaps/via/rules.mk
index 76a07d7a44a..8834bf0c8e5 100644
--- a/keyboards/wilba_tech/wt75_b/keymaps/via/rules.mk
+++ b/keyboards/wilba_tech/wt75_b/keymaps/via/rules.mk
@@ -1,71 +1,2 @@
-# project specific files
-SRC = drivers/issi/is31fl3736.c \
- drivers/avr/i2c_master.c \
- keyboards/wilba_tech/wt_mono_backlight.c \
- keyboards/wilba_tech/wt_main.c
-
-# MCU name
-MCU = atmega32u4
-
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
-BOOTLOADER = atmel-dfu
-
-
-# Build Options
-# change yes to no to disable
-#
-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 = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE = no # Audio output on port C6
-FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-
RAW_ENABLE = yes
DYNAMIC_KEYMAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt75_b/rules.mk b/keyboards/wilba_tech/wt75_b/rules.mk
index e41f2186b3a..9b5bd1e7f9b 100644
--- a/keyboards/wilba_tech/wt75_b/rules.mk
+++ b/keyboards/wilba_tech/wt75_b/rules.mk
@@ -1,50 +1,21 @@
# project specific files
SRC = drivers/issi/is31fl3736.c \
drivers/avr/i2c_master.c \
+ quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
diff --git a/keyboards/wilba_tech/wt75_c/config.h b/keyboards/wilba_tech/wt75_c/config.h
new file mode 100644
index 00000000000..71059987744
--- /dev/null
+++ b/keyboards/wilba_tech/wt75_c/config.h
@@ -0,0 +1,223 @@
+/* Copyright 2018 Jason Williams (Wilba)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6582 // wilba.tech
+#define PRODUCT_ID 0x075C // 75-C
+#define DEVICE_VER 0x0001
+#define MANUFACTURER wilba.tech
+#define PRODUCT wilba.tech WT75-C
+#define DESCRIPTION wilba.tech WT75-C
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 16
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { F1, F0, E6, F4, F6, F7 }
+#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, B7, D4 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP1 H
+//#define MAGIC_KEY_HELP2 SLASH
+//#define MAGIC_KEY_DEBUG D
+//#define MAGIC_KEY_DEBUG_MATRIX X
+//#define MAGIC_KEY_DEBUG_KBD K
+//#define MAGIC_KEY_DEBUG_MOUSE M
+//#define MAGIC_KEY_VERSION V
+//#define MAGIC_KEY_STATUS S
+//#define MAGIC_KEY_CONSOLE C
+//#define MAGIC_KEY_LAYER0_ALT1 ESC
+//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
+//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER1 1
+//#define MAGIC_KEY_LAYER2 2
+//#define MAGIC_KEY_LAYER3 3
+//#define MAGIC_KEY_LAYER4 4
+//#define MAGIC_KEY_LAYER5 5
+//#define MAGIC_KEY_LAYER6 6
+//#define MAGIC_KEY_LAYER7 7
+//#define MAGIC_KEY_LAYER8 8
+//#define MAGIC_KEY_LAYER9 9
+//#define MAGIC_KEY_BOOTLOADER PAUSE
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+//#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+// enable the mono backlight
+#define MONO_BACKLIGHT_ENABLED 1
+
+// enable the RGB indicator for WT75-A
+#define MONO_BACKLIGHT_WT75_A
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define MONO_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+#define MONO_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect
+#define MONO_BACKLIGHT_EFFECT 1
+
+// the default effect speed (0-3)
+#define MONO_BACKLIGHT_EFFECT_SPEED 0
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+// EEPROM usage
+
+// TODO: refactor with new user EEPROM code (coming soon)
+#define EEPROM_MAGIC 0x4520
+#define EEPROM_MAGIC_ADDR 34
+// Bump this every time we change what we store
+// This will automatically reset the EEPROM with defaults
+// and avoid loading invalid data from the EEPROM
+#define EEPROM_VERSION 0x08
+#define EEPROM_VERSION_ADDR 36
+
+// Backlight config starts after EEPROM version
+#define MONO_BACKLIGHT_CONFIG_EEPROM_ADDR 37
+// Dynamic keymap starts after backlight config (37+7)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 44
+// Dynamic macro starts after dynamic keymaps (44+(4*6*16*2)) = (44+768)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 812
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 212
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16
diff --git a/keyboards/wilba_tech/wt75_c/info.json b/keyboards/wilba_tech/wt75_c/info.json
new file mode 100644
index 00000000000..bf63b2d00fa
--- /dev/null
+++ b/keyboards/wilba_tech/wt75_c/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "wilba.tech WT75-A",
+ "url": "https://wilba.tech",
+ "maintainer": "Wilba",
+ "width": 16.25,
+ "height": 6.5,
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"0", "x":0, "y":0}, {"label":"1", "x":1.25, "y":0}, {"label":"2", "x":2.25, "y":0}, {"label":"3", "x":3.25, "y":0}, {"label":"4", "x":4.25, "y":0}, {"label":"5", "x":5.5, "y":0}, {"label":"6", "x":6.5, "y":0}, {"label":"7", "x":7.5, "y":0}, {"label":"8", "x":8.5, "y":0}, {"label":"9", "x":9.75, "y":0}, {"label":"10", "x":10.75, "y":0}, {"label":"11", "x":11.75, "y":0}, {"label":"12", "x":12.75, "y":0}, {"label":"13", "x":14, "y":0}, {"label":"14", "x":0, "y":1.25}, {"label":"15", "x":1, "y":1.25}, {"label":"16", "x":2, "y":1.25}, {"label":"17", "x":3, "y":1.25}, {"label":"18", "x":4, "y":1.25}, {"label":"19", "x":5, "y":1.25}, {"label":"20", "x":6, "y":1.25}, {"label":"21", "x":7, "y":1.25}, {"label":"22", "x":8, "y":1.25}, {"label":"23", "x":9, "y":1.25}, {"label":"24", "x":10, "y":1.25}, {"label":"25", "x":11, "y":1.25}, {"label":"26", "x":12, "y":1.25}, {"label":"27", "x":13, "y":1.25}, {"label":"28", "x":14, "y":1.25}, {"label":"29", "x":15.25, "y":1.25}, {"label":"30", "x":0, "y":2.25, "w":1.5}, {"label":"31", "x":1.5, "y":2.25}, {"label":"32", "x":2.5, "y":2.25}, {"label":"33", "x":3.5, "y":2.25}, {"label":"34", "x":4.5, "y":2.25}, {"label":"35", "x":5.5, "y":2.25}, {"label":"36", "x":6.5, "y":2.25}, {"label":"37", "x":7.5, "y":2.25}, {"label":"38", "x":8.5, "y":2.25}, {"label":"39", "x":9.5, "y":2.25}, {"label":"40", "x":10.5, "y":2.25}, {"label":"41", "x":11.5, "y":2.25}, {"label":"42", "x":12.5, "y":2.25}, {"label":"43", "x":13.5, "y":2.25, "w":1.5}, {"label":"44", "x":15.25, "y":2.25}, {"label":"45", "x":0, "y":3.25, "w":1.75}, {"label":"46", "x":1.75, "y":3.25}, {"label":"47", "x":2.75, "y":3.25}, {"label":"48", "x":3.75, "y":3.25}, {"label":"49", "x":4.75, "y":3.25}, {"label":"50", "x":5.75, "y":3.25}, {"label":"51", "x":6.75, "y":3.25}, {"label":"52", "x":7.75, "y":3.25}, {"label":"53", "x":8.75, "y":3.25}, {"label":"54", "x":9.75, "y":3.25}, {"label":"55", "x":10.75, "y":3.25}, {"label":"56", "x":11.75, "y":3.25}, {"label":"57", "x":12.75, "y":3.25, "w":2.25}, {"label":"58", "x":15.25, "y":3.25}, {"label":"59", "x":0, "y":4.25, "w":2.25}, {"label":"60", "x":2.25, "y":4.25}, {"label":"61", "x":3.25, "y":4.25}, {"label":"62", "x":4.25, "y":4.25}, {"label":"63", "x":5.25, "y":4.25}, {"label":"64", "x":6.25, "y":4.25}, {"label":"65", "x":7.25, "y":4.25}, {"label":"66", "x":8.25, "y":4.25}, {"label":"67", "x":9.25, "y":4.25}, {"label":"68", "x":10.25, "y":4.25}, {"label":"69", "x":11.25, "y":4.25}, {"label":"70", "x":12.25, "y":4.25, "w":1.75}, {"label":"71", "x":14.25, "y":4.5}, {"label":"72", "x":0, "y":5.25, "w":1.5}, {"label":"73", "x":1.5, "y":5.25}, {"label":"74", "x":2.5, "y":5.25, "w":1.5}, {"label":"75", "x":4, "y":5.25, "w":6}, {"label":"76", "x":10, "y":5.25, "w":1.5}, {"label":"77", "x":11.5, "y":5.25, "w":1.5}, {"label":"78", "x":13.25, "y":5.5}, {"label":"79", "x":14.25, "y":5.5}, {"label":"80", "x":15.25, "y":5.5}]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt75_c/keymaps/default/keymap.c b/keyboards/wilba_tech/wt75_c/keymaps/default/keymap.c
new file mode 100644
index 00000000000..0eedd4cb10c
--- /dev/null
+++ b/keyboards/wilba_tech/wt75_c/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // Default layer
+ [0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ 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_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ // Fn1 Layer
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ // Fn2 Layer
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ // Fn3 Layer
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
diff --git a/keyboards/wilba_tech/wt75_c/keymaps/via/keymap.c b/keyboards/wilba_tech/wt75_c/keymaps/via/keymap.c
new file mode 100644
index 00000000000..0eedd4cb10c
--- /dev/null
+++ b/keyboards/wilba_tech/wt75_c/keymaps/via/keymap.c
@@ -0,0 +1,41 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // Default layer
+ [0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ 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_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ // Fn1 Layer
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ // Fn2 Layer
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ // Fn3 Layer
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
diff --git a/keyboards/wilba_tech/wt75_c/keymaps/via/rules.mk b/keyboards/wilba_tech/wt75_c/keymaps/via/rules.mk
new file mode 100644
index 00000000000..8834bf0c8e5
--- /dev/null
+++ b/keyboards/wilba_tech/wt75_c/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+RAW_ENABLE = yes
+DYNAMIC_KEYMAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt75_c/readme.md b/keyboards/wilba_tech/wt75_c/readme.md
new file mode 100644
index 00000000000..7bcef19003e
--- /dev/null
+++ b/keyboards/wilba_tech/wt75_c/readme.md
@@ -0,0 +1,13 @@
+# wilba.tech WT75-C
+
+WT75-C is a keyboard PCB supporting 75% layout with offset arrow keys. [More info at wilba.tech](https://wilba.tech/)
+
+Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
+Hardware Supported: wilba.tech WT75-C
+Hardware Availability: Custom keyboard group buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wilba_tech/wt75_c:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt75_c/rules.mk b/keyboards/wilba_tech/wt75_c/rules.mk
new file mode 100644
index 00000000000..9b5bd1e7f9b
--- /dev/null
+++ b/keyboards/wilba_tech/wt75_c/rules.mk
@@ -0,0 +1,39 @@
+# project specific files
+SRC = drivers/issi/is31fl3736.c \
+ drivers/avr/i2c_master.c \
+ quantum/color.c \
+ keyboards/wilba_tech/wt_mono_backlight.c \
+ keyboards/wilba_tech/wt_main.c
+
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+
+# Build Options
+# change yes to no to disable
+#
+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 = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
diff --git a/keyboards/wilba_tech/wt75_c/wt75_c.c b/keyboards/wilba_tech/wt75_c/wt75_c.c
new file mode 100644
index 00000000000..ccff6d62c94
--- /dev/null
+++ b/keyboards/wilba_tech/wt75_c/wt75_c.c
@@ -0,0 +1,17 @@
+/* Copyright 2018 Jason Williams (Wilba)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Nothing to see here, move along... ;-)
diff --git a/keyboards/wilba_tech/wt75_c/wt75_c.h b/keyboards/wilba_tech/wt75_c/wt75_c.h
new file mode 100644
index 00000000000..4c74bb117c1
--- /dev/null
+++ b/keyboards/wilba_tech/wt75_c/wt75_c.h
@@ -0,0 +1,46 @@
+/* Copyright 2018 Jason Williams (Wilba)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ____ KC_NO
+
+// Right switch of split backspace is at 2,13 and is the only switch
+// whose physical position doesn't match switch matrix position :-(
+// However, it also makes no sense to view the physical as 16 columns,
+// so the numbering goes 00 to 14. Deal with it.
+//
+// 0,15 exists on PCB but is blocked by the 7V blocker so until someone
+// designs a case that uses it, we can just forget it exists.
+
+#define LAYOUT_all( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K315, \
+ K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \
+ K500, K501, K502, K506, K510, K511, K512, K513, K515 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, ____, K014, ____ }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____, ____, K315 }, \
+ { K400, ____, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, ____, ____ }, \
+ { K500, K501, K502, ____, ____, ____, K506, ____, ____, ____, K510, K511, K512, K513, ____, K515 } \
+}
+
diff --git a/keyboards/wilba_tech/wt80_a/config.h b/keyboards/wilba_tech/wt80_a/config.h
index 3ba90230b58..15dac9047fe 100644
--- a/keyboards/wilba_tech/wt80_a/config.h
+++ b/keyboards/wilba_tech/wt80_a/config.h
@@ -179,14 +179,30 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1
-#define WT_MONO_BACKLIGHT
+// enable the mono backlight
+#define MONO_BACKLIGHT_ENABLED 1
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define MONO_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+#define MONO_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect
+#define MONO_BACKLIGHT_EFFECT 1
+
+// the default effect speed (0-3)
+#define MONO_BACKLIGHT_EFFECT_SPEED 0
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
// EEPROM usage
// TODO: refactor with new user EEPROM code (coming soon)
-#define EEPROM_MAGIC 0x451F
+#define EEPROM_MAGIC 0x4520
#define EEPROM_MAGIC_ADDR 34
// Bump this every time we change what we store
// This will automatically reset the EEPROM with defaults
@@ -194,9 +210,11 @@
#define EEPROM_VERSION 0x08
#define EEPROM_VERSION_ADDR 36
-// Dynamic keymap starts after EEPROM version
-#define DYNAMIC_KEYMAP_EEPROM_ADDR 37
-// Dynamic macro starts after dynamic keymaps (37+(4*6*17*2)) = (37+816)
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 853
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 171
+// Backlight config starts after EEPROM version
+#define MONO_BACKLIGHT_CONFIG_EEPROM_ADDR 37
+// Dynamic keymap starts after backlight config (37+7)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 44
+// Dynamic macro starts after dynamic keymaps (44+(4*6*17*2)) = (44+816)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 860
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 164
#define DYNAMIC_KEYMAP_MACRO_COUNT 16
diff --git a/keyboards/wilba_tech/wt80_a/keymaps/via/rules.mk b/keyboards/wilba_tech/wt80_a/keymaps/via/rules.mk
index 76a07d7a44a..8834bf0c8e5 100644
--- a/keyboards/wilba_tech/wt80_a/keymaps/via/rules.mk
+++ b/keyboards/wilba_tech/wt80_a/keymaps/via/rules.mk
@@ -1,71 +1,2 @@
-# project specific files
-SRC = drivers/issi/is31fl3736.c \
- drivers/avr/i2c_master.c \
- keyboards/wilba_tech/wt_mono_backlight.c \
- keyboards/wilba_tech/wt_main.c
-
-# MCU name
-MCU = atmega32u4
-
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
-BOOTLOADER = atmel-dfu
-
-
-# Build Options
-# change yes to no to disable
-#
-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 = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE = no # Audio output on port C6
-FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-
RAW_ENABLE = yes
DYNAMIC_KEYMAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt80_a/rules.mk b/keyboards/wilba_tech/wt80_a/rules.mk
index e41f2186b3a..9b5bd1e7f9b 100644
--- a/keyboards/wilba_tech/wt80_a/rules.mk
+++ b/keyboards/wilba_tech/wt80_a/rules.mk
@@ -1,50 +1,21 @@
# project specific files
SRC = drivers/issi/is31fl3736.c \
drivers/avr/i2c_master.c \
+ quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
diff --git a/keyboards/wilba_tech/wt8_a/rules.mk b/keyboards/wilba_tech/wt8_a/rules.mk
index f1c632289cc..5e87a299592 100644
--- a/keyboards/wilba_tech/wt8_a/rules.mk
+++ b/keyboards/wilba_tech/wt8_a/rules.mk
@@ -1,50 +1,19 @@
# project specific files
SRC = keyboards/wilba_tech/wt_main.c
-
+
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/wilba_tech/wt_main.c b/keyboards/wilba_tech/wt_main.c
index e6ea4a21bd1..32fc6f9e441 100644
--- a/keyboards/wilba_tech/wt_main.c
+++ b/keyboards/wilba_tech/wt_main.c
@@ -20,9 +20,9 @@
#if RGB_BACKLIGHT_ENABLED
#include "keyboards/wilba_tech/wt_rgb_backlight.h"
#endif // RGB_BACKLIGHT_ENABLED
-#ifdef WT_MONO_BACKLIGHT
+#if MONO_BACKLIGHT_ENABLED
#include "keyboards/wilba_tech/wt_mono_backlight.h"
-#endif // WT_MONO_BACKLIGHT
+#endif // MONO_BACKLIGHT_ENABLED
#include "keyboards/wilba_tech/via_api.h" // Temporary hack
#include "keyboards/wilba_tech/via_keycodes.h" // Temporary hack
@@ -150,7 +150,7 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
break;
}
#endif // DYNAMIC_KEYMAP_ENABLE
-#if RGB_BACKLIGHT_ENABLED
+#if RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
case id_backlight_config_set_value:
{
backlight_config_set_value(command_data);
@@ -166,7 +166,7 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
backlight_config_save();
break;
}
-#endif // RGB_BACKLIGHT_ENABLED
+#endif // RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
case id_eeprom_reset:
{
eeprom_reset();
@@ -202,16 +202,16 @@ void main_init(void)
// If the EEPROM has the magic, the data is good.
// OK to load from EEPROM.
if (eeprom_is_valid()) {
-#if RGB_BACKLIGHT_ENABLED
+#if RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
backlight_config_load();
-#endif // RGB_BACKLIGHT_ENABLED
+#endif // RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
} else {
-#if RGB_BACKLIGHT_ENABLED
+#if RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
// If the EEPROM has not been saved before, or is out of date,
// save the default values to the EEPROM. Default values
- // come from construction of the zeal_backlight_config instance.
+ // come from construction of the backlight_config instance.
backlight_config_save();
-#endif // RGB_BACKLIGHT_ENABLED
+#endif // RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
#ifdef DYNAMIC_KEYMAP_ENABLE
// This resets the keymaps in EEPROM to what is in flash.
dynamic_keymap_reset();
@@ -222,20 +222,13 @@ void main_init(void)
eeprom_set_valid(true);
}
-#if RGB_BACKLIGHT_ENABLED
+#if RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
// Initialize LED drivers for backlight.
backlight_init_drivers();
backlight_timer_init();
backlight_timer_enable();
-#endif // RGB_BACKLIGHT_ENABLED
-#ifdef WT_MONO_BACKLIGHT
- // Initialize LED drivers for backlight.
- backlight_init_drivers();
-
- backlight_timer_init();
- backlight_timer_enable();
-#endif // WT_MONO_BACKLIGHT
+#endif // RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
}
void bootmagic_lite(void)
@@ -267,22 +260,18 @@ void matrix_init_kb(void)
void matrix_scan_kb(void)
{
-#if RGB_BACKLIGHT_ENABLED
+#if RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
// This only updates the LED driver buffers if something has changed.
backlight_update_pwm_buffers();
-#endif // RGB_BACKLIGHT_ENABLED
-#ifdef WT_MONO_BACKLIGHT
- // This only updates the LED driver buffers if something has changed.
- backlight_update_pwm_buffers();
-#endif
+#endif // RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
matrix_scan_user();
}
bool process_record_kb(uint16_t keycode, keyrecord_t *record)
{
-#if RGB_BACKLIGHT_ENABLED
+#if RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
process_record_backlight(keycode, record);
-#endif // RGB_BACKLIGHT_ENABLED
+#endif // RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
switch(keycode) {
case FN_MO13:
@@ -372,22 +361,23 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
void led_set_kb(uint8_t usb_led)
{
-#if RGB_BACKLIGHT_ENABLED
+#if RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
backlight_set_indicator_state(usb_led);
-#endif // RGB_BACKLIGHT_ENABLED
+#endif // RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
+ led_set_user(usb_led);
}
void suspend_power_down_kb(void)
{
-#if RGB_BACKLIGHT_ENABLED
+#if RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
backlight_set_suspend_state(true);
-#endif // RGB_BACKLIGHT_ENABLED
+#endif // RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
}
void suspend_wakeup_init_kb(void)
{
-#if RGB_BACKLIGHT_ENABLED
+#if RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
backlight_set_suspend_state(false);
-#endif // RGB_BACKLIGHT_ENABLED
+#endif // RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
}
diff --git a/keyboards/wilba_tech/wt_mono_backlight.c b/keyboards/wilba_tech/wt_mono_backlight.c
index bf485bce1f2..69d82e582ac 100644
--- a/keyboards/wilba_tech/wt_mono_backlight.c
+++ b/keyboards/wilba_tech/wt_mono_backlight.c
@@ -14,20 +14,43 @@
* along with this program. If not, see .
*/
+#include "quantum.h"
#include "wt_mono_backlight.h"
+#include "wt_rgb_backlight_api.h" // reuse these for now
+#include "wt_rgb_backlight_keycodes.h" // reuse these for now
+
#include "drivers/avr/i2c_master.h"
#include "drivers/issi/is31fl3736.h"
-
#include
+#include "progmem.h"
+#include "quantum/color.h"
+
#define ISSI_ADDR_DEFAULT 0x50
+#define BACKLIGHT_EFFECT_MAX 3
+
+#ifndef MONO_BACKLIGHT_COLOR_1
+#define MONO_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
+#endif
+
+backlight_config g_config = {
+ .disable_when_usb_suspended = MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED,
+ .disable_after_timeout = MONO_BACKLIGHT_DISABLE_AFTER_TIMEOUT,
+ .brightness = MONO_BACKLIGHT_BRIGHTNESS,
+ .effect = MONO_BACKLIGHT_EFFECT,
+ .effect_speed = MONO_BACKLIGHT_EFFECT_SPEED,
+ .color_1 = MONO_BACKLIGHT_COLOR_1,
+};
+
bool g_suspend_state = false;
+uint8_t g_indicator_state = 0;
// Global tick at 20 Hz
uint32_t g_tick = 0;
-uint8_t g_config_effect_speed = 0;
-uint8_t g_config_brightness = 255;
+
+// Ticks since any key was last hit.
+uint32_t g_any_key_hit = 0;
void backlight_init_drivers(void)
{
@@ -41,6 +64,10 @@ void backlight_init_drivers(void)
IS31FL3736_update_led_control_registers( ISSI_ADDR_DEFAULT, 0x00 );
}
+void backlight_set_key_hit(uint8_t row, uint8_t column)
+{
+ g_any_key_hit = 0;
+}
// This is (F_CPU/1024) / 20 Hz
// = 15625 Hz / 20 Hz
@@ -82,13 +109,63 @@ void backlight_set_suspend_state(bool state)
g_suspend_state = state;
}
+void backlight_set_indicator_state(uint8_t state)
+{
+ g_indicator_state = state;
+}
+
+void backlight_set_brightness_all( uint8_t value )
+{
+ IS31FL3736_mono_set_brightness_all( value );
+}
+
+void backlight_effect_all_off(void)
+{
+ IS31FL3736_mono_set_brightness_all( 0 );
+}
+
+void backlight_effect_all_on(void)
+{
+ IS31FL3736_mono_set_brightness_all( g_config.brightness );
+}
+
+void backlight_effect_raindrops(bool initialize)
+{
+ // Change one LED every tick
+ uint8_t led_to_change = ( g_tick & 0x000 ) == 0 ? rand() % 96 : 255;
+
+ for ( int i=0; i<96; i++ )
+ {
+ // If initialize, all get set to random brightness
+ // If not, all but one will stay the same as before.
+ if ( initialize || i == led_to_change )
+ {
+ IS31FL3736_mono_set_brightness(i, rand() & 0xFF );
+ }
+ }
+}
+
void backlight_effect_cycle_all(void)
{
- uint8_t offset = ( g_tick << g_config_effect_speed ) & 0xFF;
+ uint8_t offset = ( g_tick << g_config.effect_speed ) & 0xFF;
backlight_set_brightness_all( offset );
}
+// This runs after another backlight effect and replaces
+// colors already set
+void backlight_effect_indicators(void)
+{
+#if defined(MONO_BACKLIGHT_WT75_A)
+ HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
+ RGB rgb = hsv_to_rgb( hsv );
+ // G8, H8, I8 -> (6*8+7) (7*8+7), (8*8+7)
+ IS31FL3736_mono_set_brightness(55, rgb.r);
+ IS31FL3736_mono_set_brightness(63, rgb.g);
+ IS31FL3736_mono_set_brightness(71, rgb.b);
+#endif // MONO_BACKLIGHT_WT75_A
+}
+
ISR(TIMER3_COMPA_vect)
{
// delay 1 second before driving LEDs or doing anything else
@@ -100,8 +177,154 @@ ISR(TIMER3_COMPA_vect)
g_tick++;
- //backlight_effect_cycle_all();
- backlight_set_brightness_all( 255 );
+ if ( g_any_key_hit < 0xFFFFFFFF )
+ {
+ g_any_key_hit++;
+ }
+
+ // Ideally we would also stop sending zeros to the LED driver PWM buffers
+ // while suspended and just do a software shutdown. This is a cheap hack for now.
+ bool suspend_backlight = ((g_suspend_state && g_config.disable_when_usb_suspended) ||
+ (g_config.disable_after_timeout > 0 && g_any_key_hit > g_config.disable_after_timeout * 60 * 20));
+ uint8_t effect = suspend_backlight ? 0 : g_config.effect;
+
+ // Keep track of the effect used last time,
+ // detect change in effect, so each effect can
+ // have an optional initialization.
+ static uint8_t effect_last = 255;
+ bool initialize = effect != effect_last;
+ effect_last = effect;
+
+ // this gets ticked at 20 Hz.
+ // each effect can opt to do calculations
+ // and/or request PWM buffer updates.
+ switch ( effect )
+ {
+ case 0:
+ backlight_effect_all_off();
+ break;
+ case 1:
+ backlight_effect_all_on();;
+ break;
+ case 2:
+ backlight_effect_raindrops(initialize);
+ break;
+ default:
+ backlight_effect_all_off();
+ break;
+ }
+
+ if ( ! suspend_backlight )
+ {
+ backlight_effect_indicators();
+ }
+}
+
+// Some helpers for setting/getting HSV
+void _set_color( HS *color, uint8_t *data )
+{
+ color->h = data[0];
+ color->s = data[1];
+}
+
+void _get_color( HS *color, uint8_t *data )
+{
+ data[0] = color->h;
+ data[1] = color->s;
+}
+
+void backlight_config_set_value( uint8_t *data )
+{
+ bool reinitialize = false;
+ uint8_t *value_id = &(data[0]);
+ uint8_t *value_data = &(data[1]);
+ switch ( *value_id )
+ {
+ case id_disable_when_usb_suspended:
+ {
+ g_config.disable_when_usb_suspended = (bool)*value_data;
+ break;
+ }
+ case id_disable_after_timeout:
+ {
+ g_config.disable_after_timeout = *value_data;
+ break;
+ }
+ case id_brightness:
+ {
+ g_config.brightness = *value_data;
+ break;
+ }
+ case id_effect:
+ {
+ g_config.effect = *value_data;
+ break;
+ }
+ case id_effect_speed:
+ {
+ g_config.effect_speed = *value_data;
+ break;
+ }
+ case id_color_1:
+ {
+ _set_color( &(g_config.color_1), value_data );
+ break;
+ }
+ }
+
+ if ( reinitialize )
+ {
+ backlight_init_drivers();
+ }
+}
+
+void backlight_config_get_value( uint8_t *data )
+{
+ uint8_t *value_id = &(data[0]);
+ uint8_t *value_data = &(data[1]);
+ switch ( *value_id )
+ {
+ case id_disable_when_usb_suspended:
+ {
+ *value_data = ( g_config.disable_when_usb_suspended ? 1 : 0 );
+ break;
+ }
+ case id_disable_after_timeout:
+ {
+ *value_data = g_config.disable_after_timeout;
+ break;
+ }
+ case id_brightness:
+ {
+ *value_data = g_config.brightness;
+ break;
+ }
+ case id_effect:
+ {
+ *value_data = g_config.effect;
+ break;
+ }
+ case id_effect_speed:
+ {
+ *value_data = g_config.effect_speed;
+ break;
+ }
+ case id_color_1:
+ {
+ _get_color( &(g_config.color_1), value_data );
+ break;
+ }
+ }
+}
+
+void backlight_config_load(void)
+{
+ eeprom_read_block( &g_config, ((void*)MONO_BACKLIGHT_CONFIG_EEPROM_ADDR), sizeof(backlight_config) );
+}
+
+void backlight_config_save(void)
+{
+ eeprom_update_block( &g_config, ((void*)MONO_BACKLIGHT_CONFIG_EEPROM_ADDR), sizeof(backlight_config) );
}
void backlight_update_pwm_buffers(void)
@@ -109,8 +332,110 @@ void backlight_update_pwm_buffers(void)
IS31FL3736_update_pwm_buffers(ISSI_ADDR_DEFAULT,0x00);
}
-void backlight_set_brightness_all( uint8_t value )
+bool process_record_backlight(uint16_t keycode, keyrecord_t *record)
{
- IS31FL3736_mono_set_brightness_all( value );
+ // Record keypresses for backlight effects
+ if ( record->event.pressed )
+ {
+ backlight_set_key_hit( record->event.key.row, record->event.key.col );
+ }
+
+ switch(keycode)
+ {
+ case BR_INC:
+ if (record->event.pressed)
+ {
+ backlight_brightness_increase();
+ }
+ return false;
+ break;
+ case BR_DEC:
+ if (record->event.pressed)
+ {
+ backlight_brightness_decrease();
+ }
+ return false;
+ break;
+ case EF_INC:
+ if (record->event.pressed)
+ {
+ backlight_effect_increase();
+ }
+ return false;
+ break;
+ case EF_DEC:
+ if (record->event.pressed)
+ {
+ backlight_effect_decrease();
+ }
+ return false;
+ break;
+ case ES_INC:
+ if (record->event.pressed)
+ {
+ backlight_effect_speed_increase();
+ }
+ return false;
+ break;
+ case ES_DEC:
+ if (record->event.pressed)
+ {
+ backlight_effect_speed_decrease();
+ }
+ return false;
+ break;
+ }
+
+ return true;
}
+// Deals with the messy details of incrementing an integer
+uint8_t increment( uint8_t value, uint8_t step, uint8_t min, uint8_t max )
+{
+ int16_t new_value = value;
+ new_value += step;
+ return MIN( MAX( new_value, min ), max );
+}
+
+uint8_t decrement( uint8_t value, uint8_t step, uint8_t min, uint8_t max )
+{
+ int16_t new_value = value;
+ new_value -= step;
+ return MIN( MAX( new_value, min ), max );
+}
+
+void backlight_effect_increase(void)
+{
+ g_config.effect = increment( g_config.effect, 1, 0, BACKLIGHT_EFFECT_MAX );
+ backlight_config_save();
+}
+
+void backlight_effect_decrease(void)
+{
+ g_config.effect = decrement( g_config.effect, 1, 0, BACKLIGHT_EFFECT_MAX );
+ backlight_config_save();
+}
+
+void backlight_effect_speed_increase(void)
+{
+ g_config.effect_speed = increment( g_config.effect_speed, 1, 0, 3 );
+ backlight_config_save();
+}
+
+void backlight_effect_speed_decrease(void)
+{
+ g_config.effect_speed = decrement( g_config.effect_speed, 1, 0, 3 );
+ backlight_config_save();
+}
+
+void backlight_brightness_increase(void)
+{
+ g_config.brightness = increment( g_config.brightness, 8, 0, 255 );
+ backlight_config_save();
+}
+
+void backlight_brightness_decrease(void)
+{
+ g_config.brightness = decrement( g_config.brightness, 8, 0, 255 );
+ backlight_config_save();
+}
diff --git a/keyboards/wilba_tech/wt_mono_backlight.h b/keyboards/wilba_tech/wt_mono_backlight.h
index 70031bedc74..2f913d2cb61 100644
--- a/keyboards/wilba_tech/wt_mono_backlight.h
+++ b/keyboards/wilba_tech/wt_mono_backlight.h
@@ -19,6 +19,36 @@
#include
#include
+#include "quantum/color.h"
+
+typedef struct PACKED
+{
+ uint8_t h;
+ uint8_t s;
+} HS;
+
+typedef struct
+{
+ bool disable_when_usb_suspended:1; // |
+ bool __pad1:1; // |
+ bool __pad2:1; // |
+ bool __pad3:1; // |
+ bool __pad4:1; // |
+ bool __pad5:1; // |
+ bool __pad6:1; // |
+ bool __pad7:1; // 1 byte
+ uint8_t disable_after_timeout; // 1 byte
+ uint8_t brightness; // 1 byte
+ uint8_t effect; // 1 byte
+ uint8_t effect_speed; // 1 byte
+ HS color_1; // 2 bytes (Indicator Color for Xeno)
+} backlight_config; // = 7 bytes
+
+void backlight_config_load(void);
+void backlight_config_save(void);
+void backlight_config_set_value( uint8_t *data );
+void backlight_config_get_value( uint8_t *data );
+
void backlight_init_drivers(void);
void backlight_timer_init(void);
@@ -26,8 +56,24 @@ void backlight_timer_enable(void);
void backlight_timer_disable(void);
void backlight_set_suspend_state(bool state);
+void backlight_set_indicator_state(uint8_t state);
+// This should not be called from an interrupt
+// (eg. from a timer interrupt).
+// Call this while idle (in between matrix scans).
+// If the buffer is dirty, it will update the driver with the buffer.
void backlight_update_pwm_buffers(void);
-void backlight_set_brightness_all( uint8_t value );
+// Handle backlight specific keycodes
+bool process_record_backlight(uint16_t keycode, keyrecord_t *record);
+
+void backlight_set_key_hit(uint8_t row, uint8_t col);
+
+void backlight_effect_increase(void);
+void backlight_effect_decrease(void);
+void backlight_effect_speed_increase(void);
+void backlight_effect_speed_decrease(void);
+
+void backlight_brightness_increase(void);
+void backlight_brightness_decrease(void);
diff --git a/keyboards/wilba_tech/zeal60/rules.mk b/keyboards/wilba_tech/zeal60/rules.mk
index 5d20659f831..b8d63050c69 100644
--- a/keyboards/wilba_tech/zeal60/rules.mk
+++ b/keyboards/wilba_tech/zeal60/rules.mk
@@ -1,5 +1,3 @@
-
-
# project specific files
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
@@ -10,42 +8,14 @@ SRC = keyboards/wilba_tech/wt_main.c \
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
# Do not put the microcontroller into power saving mode
diff --git a/keyboards/wilba_tech/zeal65/rules.mk b/keyboards/wilba_tech/zeal65/rules.mk
index a1cd32aad5b..f0df9965614 100644
--- a/keyboards/wilba_tech/zeal65/rules.mk
+++ b/keyboards/wilba_tech/zeal65/rules.mk
@@ -1,5 +1,3 @@
-
-
# project specific files
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
@@ -10,42 +8,14 @@ SRC = keyboards/wilba_tech/wt_main.c \
# MCU name
MCU = atmega32u4
-# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
-F_CPU = 16000000
-
-#
-# LUFA specific
-#
-# Target architecture (see library "Board Types" documentation).
-ARCH = AVR8
-
-# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
-F_USB = $(F_CPU)
-
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-# Boot Section
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
BOOTLOADER = atmel-dfu
# Do not put the microcontroller into power saving mode
diff --git a/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c b/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c
index 0029401e81a..cd13f626250 100644
--- a/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c
+++ b/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c
@@ -6,10 +6,7 @@ enum layer {
LAYER_ADJUST,
};
-/* Switch to function layer when held. */
#define LY_FUNC MO(LAYER_FUNCTION)
-
-/* Switch to adjust layer when held. */
#define LY_ADJST MO(LAYER_ADJUST)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -17,26 +14,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_DEFAULT] = LAYOUT_60_ansi_split_bs_rshift(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 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, LY_FUNC,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LY_ADJST, KC_APP, KC_RCTL
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 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, LY_FUNC,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LY_ADJST, KC_APP, KC_RCTL
),
/* Function layer: http://www.keyboard-layout-editor.com/#/gists/c7a55e75285d474b6301140eaf53f915 */
[LAYER_FUNCTION] = LAYOUT_60_ansi_split_bs_rshift(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
KC_CAPS, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______,
- _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
- _______, _______, KC_MUTE, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______
+ _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
+ _______, _______, KC_MUTE, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
/* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/6e1068e4f91bbacccaf5ac0acbeec79c */
[LAYER_ADJUST] = LAYOUT_60_ansi_split_bs_rshift(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, EEP_RST, RESET, _______, _______, _______, RGB_VAI, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_TOG,
- _______, _______, _______, _______, _______, BL_BRTG, BL_DEC, BL_INC, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_TOG,
+ _______, _______, _______, _______, _______, BL_BRTG, BL_DEC, BL_INC, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/layouts/community/60_ansi_split_bs_rshift/bcat/readme.md b/layouts/community/60_ansi_split_bs_rshift/bcat/readme.md
index 7a5dea7c4b5..f0db6417c07 100644
--- a/layouts/community/60_ansi_split_bs_rshift/bcat/readme.md
+++ b/layouts/community/60_ansi_split_bs_rshift/bcat/readme.md
@@ -11,10 +11,16 @@ key on the bottom row activates an adjust layer to control RGB underglow.

+([KLE](http://www.keyboard-layout-editor.com/#/gists/327b41b5a933b3d44bf60ca9822e85dc))
+
## Function layer
-
+
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/c7a55e75285d474b6301140eaf53f915))
## Adjust layer

+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/6e1068e4f91bbacccaf5ac0acbeec79c))
diff --git a/layouts/community/60_tsangan_hhkb/bcat/keymap.c b/layouts/community/60_tsangan_hhkb/bcat/keymap.c
index 778a2ee54ce..bcc76292ea4 100644
--- a/layouts/community/60_tsangan_hhkb/bcat/keymap.c
+++ b/layouts/community/60_tsangan_hhkb/bcat/keymap.c
@@ -6,10 +6,7 @@ enum layer {
LAYER_ADJUST,
};
-/* Switch to function layer when held. */
#define LY_FUNC MO(LAYER_FUNCTION)
-
-/* Switch to adjust layer when held; send menu key when tapped. */
#define LY_ADJST LT(LAYER_ADJUST, KC_APP)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -17,26 +14,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_DEFAULT] = LAYOUT_60_tsangan_hhkb(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 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, LY_FUNC,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LY_ADJST, KC_RCTL
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 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, LY_FUNC,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LY_ADJST, KC_RCTL
),
/* Function layer: http://www.keyboard-layout-editor.com/#/gists/f6311fd7e315de781143b80eb040a551 */
[LAYER_FUNCTION] = LAYOUT_60_tsangan_hhkb(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
KC_CAPS, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______,
- _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
- _______, _______, KC_MUTE, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
- _______, _______, _______, _______, _______, _______, _______
+ _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
+ _______, _______, KC_MUTE, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
),
/* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/65ac939caec878401603bc36290852d4 */
[LAYER_ADJUST] = LAYOUT_60_tsangan_hhkb(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, EEP_RST, RESET, _______, _______, _______, RGB_VAI, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_TOG,
- _______, _______, _______, _______, _______, BL_BRTG, BL_DEC, BL_INC, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,
- _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_TOG,
+ _______, _______, _______, _______, _______, BL_BRTG, BL_DEC, BL_INC, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/layouts/community/60_tsangan_hhkb/bcat/readme.md b/layouts/community/60_tsangan_hhkb/bcat/readme.md
index 75f0dd550f4..2c1979365de 100644
--- a/layouts/community/60_tsangan_hhkb/bcat/readme.md
+++ b/layouts/community/60_tsangan_hhkb/bcat/readme.md
@@ -7,12 +7,18 @@ key on the bottom row actives an adjust layer to control RGB underglow.
## Default layer
-
+
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/86b33d75aa6f56d8781ab3d8475f4e77))
## Function layer
-
+
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/f6311fd7e315de781143b80eb040a551))
## Adjust layer

+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/65ac939caec878401603bc36290852d4))
diff --git a/layouts/community/ergodox/drashna/config.h b/layouts/community/ergodox/drashna/config.h
index 0ccf10c31c2..4943832990e 100644
--- a/layouts/community/ergodox/drashna/config.h
+++ b/layouts/community/ergodox/drashna/config.h
@@ -13,6 +13,6 @@
#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Shine
#undef DEBOUNCE
-#define DEBOUNCE 15
+#define DEBOUNCE 30
#define TAPPING_TERM_PER_KEY
diff --git a/layouts/community/ergodox/drashna/rules.mk b/layouts/community/ergodox/drashna/rules.mk
index f14353f4c6a..f9f9ea2bab6 100644
--- a/layouts/community/ergodox/drashna/rules.mk
+++ b/layouts/community/ergodox/drashna/rules.mk
@@ -2,9 +2,9 @@ TAP_DANCE_ENABLE = yes
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
COMMAND_ENABLE = no # Commands for debug and configuration
SPACE_CADET_ENABLE = no
-ifneq (,$(findstring ergodox_ez,$(KEYBOARD)))
- RGBLIGHT_ENABLE = yes
- RGB_MATRIX_ENABLE = no
+ifeq ($(strip $(KEYBOARD)), ergodox_ez)
+ RGBLIGHT_ENABLE = yes
+ RGB_MATRIX_ENABLE = no
endif
CONSOLE_ENABLE = no
BOOTMAGIC_ENABLE = yes
diff --git a/layouts/community/ergodox/drashna_glow/config.h b/layouts/community/ergodox/drashna_glow/config.h
index 28bed20e087..6431cb4ff8d 100644
--- a/layouts/community/ergodox/drashna_glow/config.h
+++ b/layouts/community/ergodox/drashna_glow/config.h
@@ -4,3 +4,6 @@
#undef PRODUCT
#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Glow
+
+#undef RGB_MATRIX_LED_PROCESS_LIMIT
+#undef RGB_MATRIX_LED_FLUSH_LIMIT
diff --git a/layouts/community/ergodox/drashna_glow/rules.mk b/layouts/community/ergodox/drashna_glow/rules.mk
index e1da86443fa..45addc7c224 100644
--- a/layouts/community/ergodox/drashna_glow/rules.mk
+++ b/layouts/community/ergodox/drashna_glow/rules.mk
@@ -6,8 +6,8 @@ SRC += $(CORRECTED_LAYOUT)/keymap.c
-include $(CORRECTED_LAYOUT)/rules.mk
-ifneq (,$(findstring ergodox_ez,$(KEYBOARD)))
- RGBLIGHT_ENABLE = no
- RGB_MATRIX_ENABLE = yes
+ifeq ($(strip $(KEYBOARD)), ergodox_ez)
+ RGBLIGHT_ENABLE = no
+ RGB_MATRIX_ENABLE = yes
# TAP_DANCE_ENABLE = no
endif
diff --git a/layouts/community/ortho_4x12/drashna/config.h b/layouts/community/ortho_4x12/drashna/config.h
index 9f3d2b82d6c..d8ac5e6d115 100644
--- a/layouts/community/ortho_4x12/drashna/config.h
+++ b/layouts/community/ortho_4x12/drashna/config.h
@@ -1,7 +1,7 @@
#pragma once
#if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
-# define RGB_DI_PIN B3
+# define RGB_DI_PIN A0
# define RGBLED_NUM 13 // Number of LEDs
# define RGBLIGHT_ANIMATIONS
# define RGBLIGHT_HUE_STEP 12
@@ -17,10 +17,12 @@
#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
// #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+# undef RGB_MATRIX_LED_PROCESS_LIMIT
+# undef RGB_MATRIX_LED_FLUSH_LIMIT
#endif
#if defined(KEYBOARD_lets_split_rev2)
@@ -32,7 +34,17 @@
#if !defined(KEYBOARD_planck_light)
# ifdef RGBLIGHT_ENABLE
# define NO_MUSIC_MODE
-# endif // RGBLIGHT_ENABLE
+# endif // RGBLIGHT_ENABLE
+#else
+# undef QMK_ESC_OUTPUT
+# define QMK_ESC_OUTPUT E6 // usually COL
+# undef QMK_ESC_INPUT
+# define QMK_ESC_INPUT B0 // usually ROW
+# undef QMK_LED
+# define QMK_LED D6
+# undef QMK_SPEAKER
+# define QMK_SPEAKER B5
+# define SOLENOID_PIN A1
#endif // KEYBOARD_planck_light
#if defined(KEYBOARD_planck)
@@ -69,3 +81,50 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#define FB_ERM_LRA 1 /* For ERM:0 or LRA:1*/
+#define FB_BRAKEFACTOR 6 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */
+#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */
+
+/* default 3V ERM vibration motor voltage and library*/
+#if FB_ERM_LRA == 0
+#define RATED_VOLTAGE 3
+#define V_RMS 2.3
+#define V_PEAK 3.30
+/* Library Selection */
+#define LIB_SELECTION 4 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */
+
+/* default 2V LRA voltage and library */
+#elif FB_ERM_LRA == 1
+#define RATED_VOLTAGE 2
+#define V_RMS 2.0
+#define V_PEAK 2.85
+#define F_LRA 200
+/* Library Selection */
+#define LIB_SELECTION 6 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */
+
+#endif
+
+/* Control 1 register settings */
+#define DRIVE_TIME 25
+#define AC_COUPLE 0
+#define STARTUP_BOOST 1
+
+/* Control 2 Settings */
+#define BIDIR_INPUT 1
+#define BRAKE_STAB 1 /* Loopgain is reduced when braking is almost complete to improve stability */
+#define SAMPLE_TIME 3
+#define BLANKING_TIME 1
+#define IDISS_TIME 1
+
+/* Control 3 settings */
+#define NG_THRESH 2
+#define ERM_OPEN_LOOP 1
+#define SUPPLY_COMP_DIS 0
+#define DATA_FORMAT_RTO 0
+#define LRA_DRIVE_MODE 0
+#define N_PWM_ANALOG 0
+#define LRA_OPEN_LOOP 0
+/* Control 4 settings */
+#define ZC_DET_TIME 0
+#define AUTO_CAL_TIME 3
diff --git a/layouts/community/ortho_4x12/drashna/keymap.c b/layouts/community/ortho_4x12/drashna/keymap.c
index 26f611c0889..1c894c7649c 100644
--- a/layouts/community/ortho_4x12/drashna/keymap.c
+++ b/layouts/community/ortho_4x12/drashna/keymap.c
@@ -24,7 +24,9 @@ extern rgblight_config_t rgblight_config;
#ifdef BACKLIGHT_ENABLE
enum planck_keycodes {
BACKLIT = NEW_SAFE_RANGE,
+ TH_LVL,
};
+
#else
# define BACKLIT OSM(MOD_LSFT)
enum planck_keycodes {
@@ -134,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST,
VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
TH_LVL, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL,
- _______, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, TG_MODS
+ HPT_TOG, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, TG_MODS
)
};
@@ -298,6 +300,9 @@ void rgb_matrix_indicators_user(void) {
}
void matrix_init_keymap(void) {
+# ifdef KEYBOARD_planck_light
+ writePinLow(D6);
+# endif
// rgblight_mode(RGB_MATRIX_MULTISPLASH);
}
#else // RGB_MATRIX_INIT
diff --git a/layouts/community/ortho_4x12/drashna/rules.mk b/layouts/community/ortho_4x12/drashna/rules.mk
index 55f3acd70ec..d4726b7a84d 100644
--- a/layouts/community/ortho_4x12/drashna/rules.mk
+++ b/layouts/community/ortho_4x12/drashna/rules.mk
@@ -7,29 +7,30 @@ TAP_DANCE_ENABLE = no
AUDIO_ENABLE = yes
SPACE_CADET_ENABLE = no
-ifeq (,$(findstring planck/rev6,$(KEYBOARD))) # Make sure it's NOT the Planck Rev6
- RGBLIGHT_ENABLE = yes
- INDICATOR_LIGHTS = yes
- RGBLIGHT_TWINKLE = yes
- RGBLIGHT_STARTUP_ANIMATION = yes
+ifneq ($(strip $(KEYBOARD)), planck/rev6)
+ RGBLIGHT_ENABLE = yes
+ INDICATOR_LIGHTS = yes
+ RGBLIGHT_TWINKLE = yes
+ RGBLIGHT_STARTUP_ANIMATION = yes
endif
-ifneq (,$(findstring planck/light,$(KEYBOARD))) # Make sure it IS the Planck Light
- RGB_MATRIX_ENABLE = yes
- RGBLIGHT_ENABLE = no
- RGBLIGHT_STARTUP_ANIMATION = no
+ifeq ($(strip $(KEYBOARD)), planck/light)
+ RGB_MATRIX_ENABLE = yes
+ RGBLIGHT_ENABLE = no
+ RGBLIGHT_STARTUP_ANIMATION = no
+ HAPTIC_ENABLE += SOLENOID
endif
-ifneq (,$(findstring planck/ez,$(KEYBOARD))) # Make sure it IS the Planck Light
- RGBLIGHT_ENABLE = no
- # SERIAL_LINK_ENABLE = yes
- ENCODER_ENABLE = yes
- RGB_MATRIX_ENABLE = IS31FL3737
- INDICATOR_LIGHTS = yes
- RGBLIGHT_TWINKLE = yes
- RGBLIGHT_STARTUP_ANIMATION = yes
+ifeq ($(strip $(KEYBOARD)), planck/ez)
+ RGBLIGHT_ENABLE = no
+ # SERIAL_LINK_ENABLE = yes
+ ENCODER_ENABLE = yes
+ RGB_MATRIX_ENABLE = IS31FL3737
+ INDICATOR_LIGHTS = yes
+ RGBLIGHT_TWINKLE = yes
+ RGBLIGHT_STARTUP_ANIMATION = yes
endif
ifeq ($(strip $(PROTOCOL)), VUSB)
-NKRO_ENABLE = no
+ NKRO_ENABLE = no
else
-NKRO_ENABLE = yes
+ NKRO_ENABLE = yes
endif
diff --git a/layouts/community/ortho_5x12/drashna/rules.mk b/layouts/community/ortho_5x12/drashna/rules.mk
index 0606f3e5225..75affedd120 100644
--- a/layouts/community/ortho_5x12/drashna/rules.mk
+++ b/layouts/community/ortho_5x12/drashna/rules.mk
@@ -5,12 +5,12 @@ CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
TAP_DANCE_ENABLE = no
AUDIO_ENABLE = yes
-ifneq (,$(findstring fractal,$(KEYBOARD))) # Make sure it IS the Planck Light
- RGB_MATRIX_ENABLE = no
- AUDIO_ENABLE = yes
- RGBLIGHT_ENABLE = yes
- RGBLIGHT_TWINKLE = yes
- BOOTLOADER = qmk-dfu
+ifeq ($(strip $(KEYBOARD)), fractal)
+ RGB_MATRIX_ENABLE = no
+ AUDIO_ENABLE = yes
+ RGBLIGHT_ENABLE = yes
+ RGBLIGHT_TWINKLE = yes
+ BOOTLOADER = qmk-dfu
endif
ifeq ($(strip $(PROTOCOL)), VUSB)
diff --git a/layouts/community/ortho_5x14/yet-another-developer/config.h b/layouts/community/ortho_5x14/yet-another-developer/config.h
new file mode 100644
index 00000000000..7504338fff4
--- /dev/null
+++ b/layouts/community/ortho_5x14/yet-another-developer/config.h
@@ -0,0 +1,22 @@
+#pragma once
+
+/* ws2812 RGB LED */
+#if defined(KEYBOARD_fractal)
+# define RGB_DI_PIN D2
+# undef RGBLED_NUM
+# define RGBLIGHT_ANIMATIONS
+# define RGBLED_NUM 29 // Number of LEDs
+# undef RGBLIGHT_HUE_STEP
+# define RGBLIGHT_HUE_STEP 8
+# undef RGBLIGHT_SAT_STEP
+# define RGBLIGHT_SAT_STEP 8
+# undef RGBLIGHT_VAL_STEP
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 175
+# define RGBLIGHT_SLEEP
+
+# define RGBLIGHT_EFFECT_KNIGHT_OFFSET 3
+# define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 14
+# define B7_AUDIO
+# define NO_MUSIC_MODE
+#endif
diff --git a/layouts/community/ortho_5x14/yet-another-developer/keymap.c b/layouts/community/ortho_5x14/yet-another-developer/keymap.c
new file mode 100644
index 00000000000..aea50508d3f
--- /dev/null
+++ b/layouts/community/ortho_5x14/yet-another-developer/keymap.c
@@ -0,0 +1,208 @@
+#include QMK_KEYBOARD_H
+#include "yet-another-developer.h"
+
+// clang-format off
+
+/* ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- */
+#define LAYOUT_ergodash_pretty( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, R43, R44, R45, R46 \
+ L36, R30, \
+ L44, L45, L46, R40, R41, R42, \
+ ) \
+ /* matrix positions */ \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 }, \
+ { R46, R45, R44, R43, R42, R41, R40 } \
+ }
+
+#define LAYOUT_ergodash_pretty_wrapper(...) LAYOUT_ergodash_pretty(__VA_ARGS__)
+
+#define LAYOUT_ergodash_pretty_base( \
+ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
+ ) \
+ LAYOUT_ergodox_pretty_wrapper( \
+ KC_ESC, ________________NUMBER_LEFT________________, KC_LBRC, KC_RBRC, ________________NUMBER_RIGHT_______________, KC_PSCR, \
+ KC_GRV, K01, K02, K03, K04, K05, KC_MINS, KC_EQL, K06, K07, K08, K09, K0A, KC_BSLS, \
+ KC_TAB, ALT_T(K11), K12, K13, K14, K15, KC_DEL, KC_BSPC, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
+ KC_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF, \
+ KC_LCTL, KC_LGUI, KC_LALT, EISU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ LT(_LOWER, KC_SPC), LT(_RAISE, KC_ENT), \
+ OS_LGUI,LT(_LOWER, KC_SPC),KC_DEL, KC_BSPC, LT(_RAISE, KC_ENT), OS_RGUI \
+ )
+
+#define LAYOUT_ergodash_pretty_base_wrapper(...) LAYOUT_ergodash_pretty_base(__VA_ARGS__)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: QWERTY Layer
+ *
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | = + | 1 ! | 2 @ | 3 # | 4 $ | 5 % | TG(4)| | TG(4)| 6 ^ | 7 & | 8 * | 9 ( | 0 ) | - _ |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | TAB | Q | W | E | R | T | TG(3)| |TG(3) | Y | U | I | O | P | \ | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | Bksp | A | S | D | F | G |------| |------| H | J | K | L | ; | ' " |
+ * |--------+------+------+------+------+------| TG(2)| | TG(2)|------+------+------+------+------+--------|
+ * | Shift | Z | X | C | V | B | | | | N | M | , < | . > | ? / | Shift |
+ * |--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------|
+ * | `/SYM | MEH | LGUI | [ { | | LEFT | DOWN | UP |RIGHT | SYMB |
+ * `-----------------------------' `------------------------------------'
+ * ,--------------. ,--------------.
+ * |Alt/Ap| Win | | Alt |Ctl/Esc|
+ * ,------|------|-------| |------+-------+------.
+ * | | | Home | | PgUp | | |
+ * `---------------------' `---------------------'
+ */
+ [_QWERTY] = LAYOUT_ergodash_pretty_base_wrapper(
+ _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
+ _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
+ _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
+ ),
+/* Keymap 0: COLEMAK layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Del | Q | W | F | P | G | L1 | | L1 | J | L | U | Y | ; | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | BkSp | A | R | S | T | D |------| |------| H | N | E | I |O / L2| ' |
+ * |--------+------+------+------+------+------| OVER | | Meh |------+------+------+------+------+--------|
+ * | LShift |Z/Ctrl| X | C | V | B | | | | K | M | , | . |//Ctrl| RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | `/SYM | MEH | LGUI | [ { | | LEFT | DOWN | UP |RIGHT | SYMB |
+ * `-----------------------------' `------------------------------------'
+ * ,--------------. ,--------------.
+ * |Alt/Ap| Win | | Alt |Ctl/Esc|
+ * ,------|------|-------| |------+-------+------.
+ * | | | Home | | PgUp | | |
+ * `---------------------' `---------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+ [_COLEMAK] = LAYOUT_ergodash_pretty_base_wrapper(
+ _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
+ _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
+ _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
+ ),
+
+// Reverts OSM(Shift) to normal Shifts. However, may not need since we fixed the issue with RDP (LOCAL RESOURCES)
+ [_MODS] = LAYOUT_ergodash_pretty_wrapper(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+
+/* Keymap 4: Customized Overwatch Layout
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ESC | | | | | | | | | F9 | F10 | F11 | F12 | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | F1 | K | Q | W | E | R | T | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | TAB | G | A | S | D | F |------| |------| | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | LCTR | LSHFT| Z | X | C | V | | | | N | M | | | | |
+ * |--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------|
+ * | `/SYM | MEH | LGUI | [ { | | LEFT | DOWN | UP |RIGHT | SYMB |
+ * `-----------------------------' `------------------------------------'
+ * ,--------------. ,--------------.
+ * |Alt/Ap| Win | | Alt |Ctl/Esc|
+ * ,------|------|-------| |------+-------+------.
+ * | | | Home | | PgUp | | |
+ * `---------------------' `---------------------'
+ */
+ [_GAMEPAD] = LAYOUT_ergodash_pretty_wrapper(
+ KC_ESC, KC_NO, KC_1, KC_2, KC_3, HYPR(KC_Q), HYPR(KC_GRV), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
+ KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_TRNS, TG(_GAMEPAD), KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
+ KC_O, KC_P, MAGIC_TOGGLE_NKRO, LALT(KC_PSCR),
+ KC_LGUI, KC_HYPR,
+ KC_V, KC_SPC, KC_H, KC_NO, KC_NO, KC_SWAP_NUM
+ ),
+
+/* Keymap 3:
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ESC | V | D | ALT | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | TAB | S | I | F | M | T | | | | | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | Q | 1 | 2 | 3 | 4 | G |------| |------| | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | NUMLOCK| NUM1 | NUM2 | NUM3 | NUM4 | Z | | | | | | | | | |
+ * |--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | `/SYM | MEH | LGUI | [ { | | LEFT | DOWN | UP |RIGHT | SYMB |
+ * `-----------------------------' `------------------------------------'
+ * ,--------------. ,--------------.
+ * |Alt/Ap| Win | | Alt |Ctl/Esc|
+ * ,------|------|-------| |------+-------+------.
+ * | | | Home | | PgUp | | |
+ * `---------------------' `---------------------'
+ */
+ [_DIABLO] = LAYOUT_ergodash_pretty_wrapper(
+ KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
+ KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_NO, KC_NO, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_L, KC_J, KC_NO, KC_NO,
+ KC_F, KC_NO,
+ SFT_T(KC_SPACE), ALT_T(KC_Q), KC_DIABLO_CLEAR, KC_PGDN, KC_DEL, KC_ENT
+ ),
+
+ [_LOWER] = LAYOUT_ergodash_pretty_wrapper(
+ KC_F12, _________________FUNC_LEFT_________________, _______, _______, _________________FUNC_RIGHT________________, KC_F11,
+ KC_TILD, _________________LOWER_L1__________________, _______, _______, _________________LOWER_R1__________________, KC_PIPE,
+ _______, ___________________BLANK___________________, _________________LOWER_R2__________________, KC_DQUO,
+ _______, ___________________BLANK___________________, _______, _______, _________________LOWER_R3__________________, KC_PSCR,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS,
+ _______, _______, _______, _______,
+ _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_ergodash_pretty_wrapper(
+ KC_F12, _________________FUNC_LEFT_________________, _______, _______, _________________FUNC_RIGHT________________, KC_F11,
+ KC_GRV, _________________RAISE_L1__________________, _______, _______, _________________RAISE_R1__________________, KC_BSLS,
+ _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_QUOT,
+ _______, _________________RAISE_L3__________________, _______, _______, _________________RAISE_R3__________________, KC_PSCR,
+ _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_SLCK,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [_ADJUST] = LAYOUT_ergodash_pretty_wrapper(
+ KC_MAKE, _______, _______, _______, _______, _______, _______, KC_NUKE, _________________ADJUST_R1_________________, KC_RST,
+ VRSN, _________________ADJUST_L1_________________, _______, _______, _______, _______, _______, _______, _______, EEP_RST,
+ _______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, RGB_IDL,
+ _______, _________________ADJUST_L3_________________, _______, _______, _________________ADJUST_R3_________________, TG(_MODS),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+};
+// clang-format on
diff --git a/layouts/community/ortho_5x14/yet-another-developer/rules.mk b/layouts/community/ortho_5x14/yet-another-developer/rules.mk
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/layouts/community/ortho_5x14/yet-another-developer/rules.mk
@@ -0,0 +1 @@
+
diff --git a/lib/python/qmk/cli/docs.py b/lib/python/qmk/cli/docs.py
index a0888ec3889..b4198913966 100644
--- a/lib/python/qmk/cli/docs.py
+++ b/lib/python/qmk/cli/docs.py
@@ -19,4 +19,9 @@ def docs(cli):
cli.log.info("Serving QMK docs at http://localhost:%d/", cli.config.docs.port)
cli.log.info("Press Control+C to exit.")
- httpd.serve_forever()
+ try:
+ httpd.serve_forever()
+ except KeyboardInterrupt:
+ cli.log.info("Stopping HTTP server...")
+ finally:
+ httpd.shutdown()
diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py
index 2b6a03e443a..309de0c6712 100755
--- a/lib/python/qmk/cli/doctor.py
+++ b/lib/python/qmk/cli/doctor.py
@@ -52,10 +52,10 @@ def doctor(cli):
if shutil.which('systemctl'):
mm_check = subprocess.run(['systemctl', 'list-unit-files'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=10, universal_newlines=True)
if mm_check.returncode == 0:
- mm = True
+ mm = False
for line in mm_check.stdout.split('\n'):
if 'ModemManager' in line and 'enabled' in line:
- mm = False
+ mm = True
if mm:
cli.log.warn("{bg_yellow}Detected ModemManager. Please disable it if you are using a Pro-Micro.")
diff --git a/quantum/backlight/backlight.c b/quantum/backlight/backlight.c
index e26de86bf95..708022f68f6 100644
--- a/quantum/backlight/backlight.c
+++ b/quantum/backlight/backlight.c
@@ -1 +1,193 @@
-// TODO: Add common code here, for example cie_lightness implementation
+/*
+Copyright 2013 Mathias Andersson
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include "backlight.h"
+#include "eeconfig.h"
+#include "debug.h"
+
+backlight_config_t backlight_config;
+
+/** \brief Backlight initialization
+ *
+ * FIXME: needs doc
+ */
+void backlight_init(void) {
+ /* check signature */
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+ backlight_config.raw = eeconfig_read_backlight();
+ if (backlight_config.level > BACKLIGHT_LEVELS) {
+ backlight_config.level = BACKLIGHT_LEVELS;
+ }
+ backlight_set(backlight_config.enable ? backlight_config.level : 0);
+}
+
+/** \brief Backlight increase
+ *
+ * FIXME: needs doc
+ */
+void backlight_increase(void) {
+ if (backlight_config.level < BACKLIGHT_LEVELS) {
+ backlight_config.level++;
+ }
+ backlight_config.enable = 1;
+ eeconfig_update_backlight(backlight_config.raw);
+ dprintf("backlight increase: %u\n", backlight_config.level);
+ backlight_set(backlight_config.level);
+}
+
+/** \brief Backlight decrease
+ *
+ * FIXME: needs doc
+ */
+void backlight_decrease(void) {
+ if (backlight_config.level > 0) {
+ backlight_config.level--;
+ backlight_config.enable = !!backlight_config.level;
+ eeconfig_update_backlight(backlight_config.raw);
+ }
+ dprintf("backlight decrease: %u\n", backlight_config.level);
+ backlight_set(backlight_config.level);
+}
+
+/** \brief Backlight toggle
+ *
+ * FIXME: needs doc
+ */
+void backlight_toggle(void) {
+ bool enabled = backlight_config.enable;
+ dprintf("backlight toggle: %u\n", enabled);
+ if (enabled)
+ backlight_disable();
+ else
+ backlight_enable();
+}
+
+/** \brief Enable backlight
+ *
+ * FIXME: needs doc
+ */
+void backlight_enable(void) {
+ if (backlight_config.enable) return; // do nothing if backlight is already on
+
+ backlight_config.enable = true;
+ if (backlight_config.raw == 1) // enabled but level == 0
+ backlight_config.level = 1;
+ eeconfig_update_backlight(backlight_config.raw);
+ dprintf("backlight enable\n");
+ backlight_set(backlight_config.level);
+}
+
+/** \brief Disable backlight
+ *
+ * FIXME: needs doc
+ */
+void backlight_disable(void) {
+ if (!backlight_config.enable) return; // do nothing if backlight is already off
+
+ backlight_config.enable = false;
+ eeconfig_update_backlight(backlight_config.raw);
+ dprintf("backlight disable\n");
+ backlight_set(0);
+}
+
+/** /brief Get the backlight status
+ *
+ * FIXME: needs doc
+ */
+bool is_backlight_enabled(void) { return backlight_config.enable; }
+
+/** \brief Backlight step through levels
+ *
+ * FIXME: needs doc
+ */
+void backlight_step(void) {
+ backlight_config.level++;
+ if (backlight_config.level > BACKLIGHT_LEVELS) {
+ backlight_config.level = 0;
+ }
+ backlight_config.enable = !!backlight_config.level;
+ eeconfig_update_backlight(backlight_config.raw);
+ dprintf("backlight step: %u\n", backlight_config.level);
+ backlight_set(backlight_config.level);
+}
+
+/** \brief Backlight set level
+ *
+ * FIXME: needs doc
+ */
+void backlight_level(uint8_t level) {
+ if (level > BACKLIGHT_LEVELS) level = BACKLIGHT_LEVELS;
+ backlight_config.level = level;
+ backlight_config.enable = !!backlight_config.level;
+ eeconfig_update_backlight(backlight_config.raw);
+ backlight_set(backlight_config.level);
+}
+
+/** \brief Get backlight level
+ *
+ * FIXME: needs doc
+ */
+uint8_t get_backlight_level(void) { return backlight_config.level; }
+
+#ifdef BACKLIGHT_BREATHING
+/** \brief Backlight breathing toggle
+ *
+ * FIXME: needs doc
+ */
+void backlight_toggle_breathing(void) {
+ bool breathing = backlight_config.breathing;
+ dprintf("backlight breathing toggle: %u\n", breathing);
+ if (breathing)
+ backlight_disable_breathing();
+ else
+ backlight_enable_breathing();
+}
+
+/** \brief Enable backlight breathing
+ *
+ * FIXME: needs doc
+ */
+void backlight_enable_breathing(void) {
+ if (backlight_config.breathing) return; // do nothing if breathing is already on
+
+ backlight_config.breathing = true;
+ eeconfig_update_backlight(backlight_config.raw);
+ dprintf("backlight breathing enable\n");
+ breathing_enable();
+}
+
+/** \brief Disable backlight breathing
+ *
+ * FIXME: needs doc
+ */
+void backlight_disable_breathing(void) {
+ if (!backlight_config.breathing) return; // do nothing if breathing is already off
+
+ backlight_config.breathing = false;
+ eeconfig_update_backlight(backlight_config.raw);
+ dprintf("backlight breathing disable\n");
+ breathing_disable();
+}
+
+/** \brief Get the backlight breathing status
+ *
+ * FIXME: needs doc
+ */
+bool is_backlight_breathing(void) { return backlight_config.breathing; }
+#endif
diff --git a/tmk_core/common/backlight.h b/quantum/backlight/backlight.h
similarity index 100%
rename from tmk_core/common/backlight.h
rename to quantum/backlight/backlight.h
diff --git a/quantum/config_common.h b/quantum/config_common.h
index 80715f2fcd2..f42df6357d6 100644
--- a/quantum/config_common.h
+++ b/quantum/config_common.h
@@ -303,6 +303,25 @@
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
sei(); \
} while (0)
+# elif (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__))
+# define SERIAL_UART_BAUD 115200
+# define SERIAL_UART_DATA UDR1
+ /* UBRR should result in ~16 and set UCSR1A = _BV(U2X1) as per rn42 documentation. HC05 needs baudrate configured accordingly */
+# define SERIAL_UART_UBRR (F_CPU / (8UL * SERIAL_UART_BAUD) - 1)
+# define SERIAL_UART_RXD_VECT USART1_RX_vect
+# define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
+# define SERIAL_UART_INIT() do { \
+ UCSR1A = _BV(U2X1); \
+ /* baud rate */ \
+ UBRR1L = SERIAL_UART_UBRR; \
+ /* baud rate */ \
+ UBRR1H = SERIAL_UART_UBRR >> 8; \
+ /* enable TX */ \
+ UCSR1B = _BV(TXEN1); \
+ /* 8-bit data */ \
+ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \
+ sei(); \
+ } while(0)
# else
# error "USART configuration is needed."
# endif
diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c
index 9af9510081e..4fa45ac37b2 100644
--- a/quantum/keymap_common.c
+++ b/quantum/keymap_common.c
@@ -26,9 +26,12 @@ along with this program. If not, see .
#include "action.h"
#include "action_macro.h"
#include "debug.h"
-#include "backlight.h"
#include "quantum.h"
+#ifdef BACKLIGHT_ENABLE
+# include "backlight.h"
+#endif
+
#ifdef MIDI_ENABLE
# include "process_midi.h"
#endif
diff --git a/quantum/quantum.c b/quantum/quantum.c
index f4999456e33..2020770ea5c 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -24,8 +24,10 @@
# include "outputselect.h"
#endif
-#include "backlight.h"
-extern backlight_config_t backlight_config;
+#ifdef BACKLIGHT_ENABLE
+# include "backlight.h"
+ extern backlight_config_t backlight_config;
+#endif
#ifdef FAUXCLICKY_ENABLE
# include "fauxclicky.h"
@@ -85,44 +87,28 @@ static void do_code16(uint16_t code, void (*f)(uint8_t)) {
return;
}
- if (code & QK_LCTL) f(KC_LCTL);
- if (code & QK_LSFT) f(KC_LSFT);
- if (code & QK_LALT) f(KC_LALT);
- if (code & QK_LGUI) f(KC_LGUI);
+ uint8_t mods_to_send = 0;
- if (code < QK_RMODS_MIN) return;
+ if (code & QK_RMODS_MIN) { // Right mod flag is set
+ if (code & QK_LCTL) mods_to_send |= MOD_BIT(KC_RCTL);
+ if (code & QK_LSFT) mods_to_send |= MOD_BIT(KC_RSFT);
+ if (code & QK_LALT) mods_to_send |= MOD_BIT(KC_RALT);
+ if (code & QK_LGUI) mods_to_send |= MOD_BIT(KC_RGUI);
+ } else {
+ if (code & QK_LCTL) mods_to_send |= MOD_BIT(KC_LCTL);
+ if (code & QK_LSFT) mods_to_send |= MOD_BIT(KC_LSFT);
+ if (code & QK_LALT) mods_to_send |= MOD_BIT(KC_LALT);
+ if (code & QK_LGUI) mods_to_send |= MOD_BIT(KC_LGUI);
+ }
- if (code & QK_RCTL) f(KC_RCTL);
- if (code & QK_RSFT) f(KC_RSFT);
- if (code & QK_RALT) f(KC_RALT);
- if (code & QK_RGUI) f(KC_RGUI);
-}
-
-static inline void qk_register_weak_mods(uint8_t kc) {
- add_weak_mods(MOD_BIT(kc));
- send_keyboard_report();
-}
-
-static inline void qk_unregister_weak_mods(uint8_t kc) {
- del_weak_mods(MOD_BIT(kc));
- send_keyboard_report();
-}
-
-static inline void qk_register_mods(uint8_t kc) {
- add_weak_mods(MOD_BIT(kc));
- send_keyboard_report();
-}
-
-static inline void qk_unregister_mods(uint8_t kc) {
- del_weak_mods(MOD_BIT(kc));
- send_keyboard_report();
+ f(mods_to_send);
}
void register_code16(uint16_t code) {
if (IS_MOD(code) || code == KC_NO) {
- do_code16(code, qk_register_mods);
+ do_code16(code, register_mods);
} else {
- do_code16(code, qk_register_weak_mods);
+ do_code16(code, register_weak_mods);
}
register_code(code);
}
@@ -130,9 +116,9 @@ void register_code16(uint16_t code) {
void unregister_code16(uint16_t code) {
unregister_code(code);
if (IS_MOD(code) || code == KC_NO) {
- do_code16(code, qk_unregister_mods);
+ do_code16(code, unregister_mods);
} else {
- do_code16(code, qk_unregister_weak_mods);
+ do_code16(code, unregister_weak_mods);
}
}
diff --git a/quantum/rgblight.c b/quantum/rgblight.c
index a094863fe9b..1c197827f29 100644
--- a/quantum/rgblight.c
+++ b/quantum/rgblight.c
@@ -910,6 +910,9 @@ void rgblight_effect_snake(animation_status_t *anim) {
ledp->b = 0;
for (j = 0; j < RGBLIGHT_EFFECT_SNAKE_LENGTH; j++) {
k = pos + j * increment;
+ if (k > RGBLED_NUM) {
+ k = k % RGBLED_NUM;
+ }
if (k < 0) {
k = k + effect_num_leds;
}
diff --git a/quantum/split_common/matrix.c b/quantum/split_common/matrix.c
index 313f7830b64..7176d0cc4f3 100644
--- a/quantum/split_common/matrix.c
+++ b/quantum/split_common/matrix.c
@@ -246,9 +246,7 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
#endif
void matrix_init(void) {
- debug_enable = true;
- debug_matrix = true;
- debug_mouse = true;
+ keyboard_split_setup();
// Set pinout for right half if pinout for that half is defined
if (!isLeftHand) {
diff --git a/quantum/split_common/split_util.c b/quantum/split_common/split_util.c
index d16a989770a..5c548de059e 100644
--- a/quantum/split_common/split_util.c
+++ b/quantum/split_common/split_util.c
@@ -14,8 +14,33 @@
# include "rgblight.h"
#endif
+#ifndef SPLIT_USB_TIMEOUT
+# define SPLIT_USB_TIMEOUT 2500
+#endif
+
volatile bool isLeftHand = true;
+bool waitForUsb(void) {
+ for (uint8_t i = 0; i < (SPLIT_USB_TIMEOUT / 100); i++) {
+ // This will return true of a USB connection has been established
+#if defined(__AVR__)
+ if (UDADDR & _BV(ADDEN)) {
+#else
+ if (usbGetDriverStateI(&USBD1) == USB_ACTIVE) {
+#endif
+ return true;
+ }
+ wait_ms(100);
+ }
+
+#if defined(__AVR__)
+ // Avoid NO_USB_STARTUP_CHECK - Disable USB as the previous checks seem to enable it somehow
+ (USBCON &= ~(_BV(USBE) | _BV(OTGPADE)));
+#endif
+
+ return false;
+}
+
__attribute__((weak)) bool is_keyboard_left(void) {
#if defined(SPLIT_HAND_PIN)
// Test pin SPLIT_HAND_PIN for High/Low, if low it's right hand
@@ -31,21 +56,23 @@ __attribute__((weak)) bool is_keyboard_left(void) {
}
__attribute__((weak)) bool is_keyboard_master(void) {
-#ifdef __AVR__
static enum { UNKNOWN, MASTER, SLAVE } usbstate = UNKNOWN;
// only check once, as this is called often
if (usbstate == UNKNOWN) {
+#if defined(SPLIT_USB_DETECT) || defined(PROTOCOL_CHIBIOS)
+ usbstate = waitForUsb() ? MASTER : SLAVE;
+#elif defined(__AVR__)
USBCON |= (1 << OTGPADE); // enables VBUS pad
wait_us(5);
usbstate = (USBSTA & (1 << VBUS)) ? MASTER : SLAVE; // checks state of VBUS
+#else
+ usbstate = MASTER;
+#endif
}
return (usbstate == MASTER);
-#else
- return true;
-#endif
}
static void keyboard_master_setup(void) {
@@ -59,8 +86,8 @@ static void keyboard_master_setup(void) {
static void keyboard_slave_setup(void) { transport_slave_init(); }
-// this code runs before the usb and keyboard is initialized
-void matrix_setup(void) {
+// this code runs before the keyboard is fully initialized
+void keyboard_split_setup(void) {
isLeftHand = is_keyboard_left();
#if defined(RGBLIGHT_ENABLE) && defined(RGBLED_SPLIT)
diff --git a/quantum/split_common/split_util.h b/quantum/split_common/split_util.h
index f41c77605b1..5d9c523400e 100644
--- a/quantum/split_common/split_util.h
+++ b/quantum/split_common/split_util.h
@@ -8,3 +8,4 @@
extern volatile bool isLeftHand;
void matrix_master_OLED_init(void);
+void keyboard_split_setup(void);
diff --git a/quantum/template/avr/rules.mk b/quantum/template/avr/rules.mk
index 0ed05e71b54..bb2bd14f9fa 100644
--- a/quantum/template/avr/rules.mk
+++ b/quantum/template/avr/rules.mk
@@ -23,10 +23,10 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
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 = no # Breathing sleep LED during USB suspend
@@ -34,9 +34,8 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
-UNICODE_ENABLE = no # Unicode
+MIDI_ENABLE = no # MIDI support
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/quantum/template/ps2avrgb/readme.md b/quantum/template/ps2avrgb/readme.md
index 9d3ca0006fb..3dce0e95057 100644
--- a/quantum/template/ps2avrgb/readme.md
+++ b/quantum/template/ps2avrgb/readme.md
@@ -12,7 +12,7 @@ Make example for this keyboard (after setting up your build environment):
make %KEYBOARD%:default
-Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](flashing_bootloadhid.md))
+Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make %KEYBOARD%:default:flash
diff --git a/tmk_core/common.mk b/tmk_core/common.mk
index 22168875551..db553534652 100644
--- a/tmk_core/common.mk
+++ b/tmk_core/common.mk
@@ -153,11 +153,6 @@ ifeq ($(strip $(NO_SUSPEND_POWER_DOWN)), yes)
TMK_COMMON_DEFS += -DNO_SUSPEND_POWER_DOWN
endif
-ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
- TMK_COMMON_SRC += $(COMMON_DIR)/backlight.c
- TMK_COMMON_DEFS += -DBACKLIGHT_ENABLE
-endif
-
ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
TMK_COMMON_DEFS += -DNO_USB_STARTUP_CHECK
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c
index 1ba38a285ed..bd6aeba4f84 100644
--- a/tmk_core/common/action.c
+++ b/tmk_core/common/action.c
@@ -20,7 +20,6 @@ along with this program. If not, see .
#include "mousekey.h"
#include "command.h"
#include "led.h"
-#include "backlight.h"
#include "action_layer.h"
#include "action_tapping.h"
#include "action_macro.h"
@@ -28,6 +27,10 @@ along with this program. If not, see .
#include "action.h"
#include "wait.h"
+#ifdef BACKLIGHT_ENABLE
+# include "backlight.h"
+#endif
+
#ifdef DEBUG_ACTION
# include "debug.h"
#else
@@ -868,9 +871,9 @@ void tap_code(uint8_t code) {
unregister_code(code);
}
-/** \brief Utilities for actions. (FIXME: Needs better description)
+/** \brief Adds the given physically pressed modifiers and sends a keyboard report immediately.
*
- * FIXME: Needs documentation.
+ * \param mods A bitfield of modifiers to unregister.
*/
void register_mods(uint8_t mods) {
if (mods) {
@@ -879,9 +882,9 @@ void register_mods(uint8_t mods) {
}
}
-/** \brief Utilities for actions. (FIXME: Needs better description)
+/** \brief Removes the given physically pressed modifiers and sends a keyboard report immediately.
*
- * FIXME: Needs documentation.
+ * \param mods A bitfield of modifiers to unregister.
*/
void unregister_mods(uint8_t mods) {
if (mods) {
@@ -890,6 +893,28 @@ void unregister_mods(uint8_t mods) {
}
}
+/** \brief Adds the given weak modifiers and sends a keyboard report immediately.
+ *
+ * \param mods A bitfield of modifiers to register.
+ */
+void register_weak_mods(uint8_t mods) {
+ if (mods) {
+ add_weak_mods(mods);
+ send_keyboard_report();
+ }
+}
+
+/** \brief Removes the given weak modifiers and sends a keyboard report immediately.
+ *
+ * \param mods A bitfield of modifiers to unregister.
+ */
+void unregister_weak_mods(uint8_t mods) {
+ if (mods) {
+ del_weak_mods(mods);
+ send_keyboard_report();
+ }
+}
+
/** \brief Utilities for actions. (FIXME: Needs better description)
*
* FIXME: Needs documentation.
diff --git a/tmk_core/common/action.h b/tmk_core/common/action.h
index 633cedb06bb..15f4ce15c04 100644
--- a/tmk_core/common/action.h
+++ b/tmk_core/common/action.h
@@ -90,6 +90,8 @@ void unregister_code(uint8_t code);
void tap_code(uint8_t code);
void register_mods(uint8_t mods);
void unregister_mods(uint8_t mods);
+void register_weak_mods(uint8_t mods);
+void unregister_weak_mods(uint8_t mods);
// void set_mods(uint8_t mods);
void clear_keyboard(void);
void clear_keyboard_but_mods(void);
diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c
index 574000fcd8f..c59c1968800 100644
--- a/tmk_core/common/avr/suspend.c
+++ b/tmk_core/common/avr/suspend.c
@@ -4,7 +4,6 @@
#include
#include "matrix.h"
#include "action.h"
-#include "backlight.h"
#include "suspend_avr.h"
#include "suspend.h"
#include "timer.h"
@@ -16,6 +15,10 @@
# include "lufa.h"
#endif
+#ifdef BACKLIGHT_ENABLE
+# include "backlight.h"
+#endif
+
#ifdef AUDIO_ENABLE
# include "audio.h"
#endif /* AUDIO_ENABLE */
diff --git a/tmk_core/common/backlight.c b/tmk_core/common/backlight.c
deleted file mode 100644
index 708022f68f6..00000000000
--- a/tmk_core/common/backlight.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
-Copyright 2013 Mathias Andersson
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-*/
-
-#include "backlight.h"
-#include "eeconfig.h"
-#include "debug.h"
-
-backlight_config_t backlight_config;
-
-/** \brief Backlight initialization
- *
- * FIXME: needs doc
- */
-void backlight_init(void) {
- /* check signature */
- if (!eeconfig_is_enabled()) {
- eeconfig_init();
- }
- backlight_config.raw = eeconfig_read_backlight();
- if (backlight_config.level > BACKLIGHT_LEVELS) {
- backlight_config.level = BACKLIGHT_LEVELS;
- }
- backlight_set(backlight_config.enable ? backlight_config.level : 0);
-}
-
-/** \brief Backlight increase
- *
- * FIXME: needs doc
- */
-void backlight_increase(void) {
- if (backlight_config.level < BACKLIGHT_LEVELS) {
- backlight_config.level++;
- }
- backlight_config.enable = 1;
- eeconfig_update_backlight(backlight_config.raw);
- dprintf("backlight increase: %u\n", backlight_config.level);
- backlight_set(backlight_config.level);
-}
-
-/** \brief Backlight decrease
- *
- * FIXME: needs doc
- */
-void backlight_decrease(void) {
- if (backlight_config.level > 0) {
- backlight_config.level--;
- backlight_config.enable = !!backlight_config.level;
- eeconfig_update_backlight(backlight_config.raw);
- }
- dprintf("backlight decrease: %u\n", backlight_config.level);
- backlight_set(backlight_config.level);
-}
-
-/** \brief Backlight toggle
- *
- * FIXME: needs doc
- */
-void backlight_toggle(void) {
- bool enabled = backlight_config.enable;
- dprintf("backlight toggle: %u\n", enabled);
- if (enabled)
- backlight_disable();
- else
- backlight_enable();
-}
-
-/** \brief Enable backlight
- *
- * FIXME: needs doc
- */
-void backlight_enable(void) {
- if (backlight_config.enable) return; // do nothing if backlight is already on
-
- backlight_config.enable = true;
- if (backlight_config.raw == 1) // enabled but level == 0
- backlight_config.level = 1;
- eeconfig_update_backlight(backlight_config.raw);
- dprintf("backlight enable\n");
- backlight_set(backlight_config.level);
-}
-
-/** \brief Disable backlight
- *
- * FIXME: needs doc
- */
-void backlight_disable(void) {
- if (!backlight_config.enable) return; // do nothing if backlight is already off
-
- backlight_config.enable = false;
- eeconfig_update_backlight(backlight_config.raw);
- dprintf("backlight disable\n");
- backlight_set(0);
-}
-
-/** /brief Get the backlight status
- *
- * FIXME: needs doc
- */
-bool is_backlight_enabled(void) { return backlight_config.enable; }
-
-/** \brief Backlight step through levels
- *
- * FIXME: needs doc
- */
-void backlight_step(void) {
- backlight_config.level++;
- if (backlight_config.level > BACKLIGHT_LEVELS) {
- backlight_config.level = 0;
- }
- backlight_config.enable = !!backlight_config.level;
- eeconfig_update_backlight(backlight_config.raw);
- dprintf("backlight step: %u\n", backlight_config.level);
- backlight_set(backlight_config.level);
-}
-
-/** \brief Backlight set level
- *
- * FIXME: needs doc
- */
-void backlight_level(uint8_t level) {
- if (level > BACKLIGHT_LEVELS) level = BACKLIGHT_LEVELS;
- backlight_config.level = level;
- backlight_config.enable = !!backlight_config.level;
- eeconfig_update_backlight(backlight_config.raw);
- backlight_set(backlight_config.level);
-}
-
-/** \brief Get backlight level
- *
- * FIXME: needs doc
- */
-uint8_t get_backlight_level(void) { return backlight_config.level; }
-
-#ifdef BACKLIGHT_BREATHING
-/** \brief Backlight breathing toggle
- *
- * FIXME: needs doc
- */
-void backlight_toggle_breathing(void) {
- bool breathing = backlight_config.breathing;
- dprintf("backlight breathing toggle: %u\n", breathing);
- if (breathing)
- backlight_disable_breathing();
- else
- backlight_enable_breathing();
-}
-
-/** \brief Enable backlight breathing
- *
- * FIXME: needs doc
- */
-void backlight_enable_breathing(void) {
- if (backlight_config.breathing) return; // do nothing if breathing is already on
-
- backlight_config.breathing = true;
- eeconfig_update_backlight(backlight_config.raw);
- dprintf("backlight breathing enable\n");
- breathing_enable();
-}
-
-/** \brief Disable backlight breathing
- *
- * FIXME: needs doc
- */
-void backlight_disable_breathing(void) {
- if (!backlight_config.breathing) return; // do nothing if breathing is already off
-
- backlight_config.breathing = false;
- eeconfig_update_backlight(backlight_config.raw);
- dprintf("backlight breathing disable\n");
- breathing_disable();
-}
-
-/** \brief Get the backlight breathing status
- *
- * FIXME: needs doc
- */
-bool is_backlight_breathing(void) { return backlight_config.breathing; }
-#endif
diff --git a/tmk_core/common/chibios/printf.c b/tmk_core/common/chibios/printf.c
index dbd059448c1..dcf33f35f8a 100644
--- a/tmk_core/common/chibios/printf.c
+++ b/tmk_core/common/chibios/printf.c
@@ -186,6 +186,15 @@ void tfp_format(void* putp, putcf putf, char* fmt, va_list va) {
case 's':
putchw(putp, putf, w, 0, va_arg(va, char*));
break;
+ case 'b':
+#ifdef PRINTF_LONG_SUPPORT
+ if (lng)
+ uli2a(va_arg(va, unsigned long int), 2, 0, bf);
+ else
+#endif
+ ui2a(va_arg(va, unsigned int), 2, 0, bf);
+ putchw(putp, putf, w, lz, bf);
+ break;
case '%':
putf(putp, ch);
default:
diff --git a/tmk_core/common/chibios/suspend.c b/tmk_core/common/chibios/suspend.c
index ae1c6f53e2e..c0f9c28d443 100644
--- a/tmk_core/common/chibios/suspend.c
+++ b/tmk_core/common/chibios/suspend.c
@@ -8,10 +8,13 @@
#include "action_util.h"
#include "mousekey.h"
#include "host.h"
-#include "backlight.h"
#include "suspend.h"
#include "wait.h"
+#ifdef BACKLIGHT_ENABLE
+# include "backlight.h"
+#endif
+
/** \brief suspend idle
*
* FIXME: needs doc
diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c
index 8bf72ef2582..82cd8060913 100644
--- a/tmk_core/common/command.c
+++ b/tmk_core/common/command.c
@@ -32,10 +32,13 @@ along with this program. If not, see .
#include "sleep_led.h"
#include "led.h"
#include "command.h"
-#include "backlight.h"
#include "quantum.h"
#include "version.h"
+#ifdef BACKLIGHT_ENABLE
+# include "backlight.h"
+#endif
+
#ifdef MOUSEKEY_ENABLE
# include "mousekey.h"
#endif
diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c
index f4d2cd73893..63ace9793cf 100644
--- a/tmk_core/common/keyboard.c
+++ b/tmk_core/common/keyboard.c
@@ -29,8 +29,10 @@ along with this program. If not, see .
#include "util.h"
#include "sendchar.h"
#include "eeconfig.h"
-#include "backlight.h"
#include "action_layer.h"
+#ifdef BACKLIGHT_ENABLE
+# include "backlight.h"
+#endif
#ifdef BOOTMAGIC_ENABLE
# include "bootmagic.h"
#else
@@ -82,6 +84,26 @@ along with this program. If not, see .
# include "velocikey.h"
#endif
+// Only enable this if console is enabled to print to
+#if defined(DEBUG_MATRIX_SCAN_RATE) && defined(CONSOLE_ENABLE)
+static uint32_t matrix_timer = 0;
+static uint32_t matrix_scan_count = 0;
+
+void matrix_scan_perf_task(void) {
+ matrix_scan_count++;
+
+ uint32_t timer_now = timer_read32();
+ if (TIMER_DIFF_32(timer_now, matrix_timer) > 1000) {
+ dprintf("matrix scan frequency: %d\n", matrix_scan_count);
+
+ matrix_timer = timer_now;
+ matrix_scan_count = 0;
+ }
+}
+#else
+# define matrix_scan_perf_task()
+#endif
+
#ifdef MATRIX_HAS_GHOST
extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
static matrix_row_t get_real_keys(uint8_t row, matrix_row_t rowdata) {
@@ -301,6 +323,10 @@ void keyboard_task(void) {
MATRIX_LOOP_END:
+#ifdef DEBUG_MATRIX_SCAN_RATE
+ matrix_scan_perf_task();
+#endif
+
#ifdef QWIIC_ENABLE
qwiic_task();
#endif
diff --git a/users/bcat/config.h b/users/bcat/config.h
index a0942e9f4f5..5f49a4ed376 100644
--- a/users/bcat/config.h
+++ b/users/bcat/config.h
@@ -8,64 +8,78 @@
#define TAPPING_TERM 250
+/*
+ * Treat mod-tap keys as holds even if the mod-tap key and the key being
+ * modified are both relased within TAPPING_TERM. This assumes the mod-tap key
+ * isn't usually pressed in quick succession with other tapped keys, which is
+ * good when the tap keycode is something like KC_ESC rather than a letter.
+ */
+#define PERMISSIVE_HOLD
+
+/*
+ * Turn off key repeat support of the tap keycode for tap-hold keys, enabling
+ * holds to work correctly in quick succession after taps.
+ */
+#define TAPPING_FORCE_HOLD
+
#if defined(RGBLIGHT_ENABLE)
- /* Turn off RGB underglow when the host goes to sleep. */
- #define RGBLIGHT_SLEEP
+ /* Turn off RGB underglow when the host goes to sleep. */
+ #define RGBLIGHT_SLEEP
- /* Keep RGB underglow level increments consistent across keyboards. */
- #undef RGBLIGHT_HUE_STEP
- #undef RGBLIGHT_SAT_STEP
- #undef RGBLIGHT_VAL_STEP
+ /* Keep RGB underglow level increments consistent across keyboards. */
+ #undef RGBLIGHT_HUE_STEP
+ #undef RGBLIGHT_SAT_STEP
+ #undef RGBLIGHT_VAL_STEP
- #define RGBLIGHT_HUE_STEP 8
- #define RGBLIGHT_SAT_STEP 17
- #define RGBLIGHT_VAL_STEP 17
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
#endif
#if defined(BACKLIGHT_ENABLE)
- /* Enable backlight breathing across the board. */
- #define BACKLIGHT_BREATHING
+ /* Enable backlight breathing across the board. */
+ #define BACKLIGHT_BREATHING
- /* Keep backlight level increments consistent across keyboards. */
- #undef BACKLIGHT_LEVELS
+ /* Keep backlight level increments consistent across keyboards. */
+ #undef BACKLIGHT_LEVELS
- #define BACKLIGHT_LEVELS 7
+ #define BACKLIGHT_LEVELS 7
#endif
#if defined(MOUSEKEY_ENABLE)
- /* Make mouse operation smoother. */
- #undef MOUSEKEY_DELAY
- #undef MOUSEKEY_INTERVAL
+ /* Make mouse operation smoother. */
+ #undef MOUSEKEY_DELAY
+ #undef MOUSEKEY_INTERVAL
- #define MOUSEKEY_DELAY 0
- #define MOUSEKEY_INTERVAL 16
+ #define MOUSEKEY_DELAY 0
+ #define MOUSEKEY_INTERVAL 16
- /* Lower mouse speed to adjust for reduced MOUSEKEY_INTERVAL. */
- #undef MOUSEKEY_MAX_SPEED
- #undef MOUSEKEY_TIME_TO_MAX
- #undef MOUSEKEY_WHEEL_MAX_SPEED
- #undef MOUSEKEY_WHEEL_TIME_TO_MAX
+ /* Lower mouse speed to adjust for reduced MOUSEKEY_INTERVAL. */
+ #undef MOUSEKEY_MAX_SPEED
+ #undef MOUSEKEY_TIME_TO_MAX
+ #undef MOUSEKEY_WHEEL_MAX_SPEED
+ #undef MOUSEKEY_WHEEL_TIME_TO_MAX
- #define MOUSEKEY_MAX_SPEED 7
- #define MOUSEKEY_TIME_TO_MAX 150
- #define MOUSEKEY_WHEEL_MAX_SPEED 3
- #define MOUSEKEY_WHEEL_TIME_TO_MAX 150
+ #define MOUSEKEY_MAX_SPEED 7
+ #define MOUSEKEY_TIME_TO_MAX 150
+ #define MOUSEKEY_WHEEL_MAX_SPEED 3
+ #define MOUSEKEY_WHEEL_TIME_TO_MAX 150
#endif
#if defined(KEYBOARD_cannonkeys_instant60)
- /*
- * Work around EEPROM incompatibility with VIA:
- * https://github.com/qmk/qmk_firmware/issues/6589#issuecomment-524042457.
- */
- #undef EEPROM_MAGIC_ADDR
- #undef EEPROM_VERSION_ADDR
- #undef DYNAMIC_KEYMAP_EEPROM_ADDR
- #undef EEPROM_CUSTOM_BACKLIGHT
- #undef DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR
+ /*
+ * Work around EEPROM incompatibility with VIA:
+ * https://github.com/qmk/qmk_firmware/issues/6589#issuecomment-524042457.
+ */
+ #undef EEPROM_MAGIC_ADDR
+ #undef EEPROM_VERSION_ADDR
+ #undef DYNAMIC_KEYMAP_EEPROM_ADDR
+ #undef EEPROM_CUSTOM_BACKLIGHT
+ #undef DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR
- #define EEPROM_MAGIC_ADDR 34
- #define EEPROM_VERSION_ADDR 36
- #define DYNAMIC_KEYMAP_EEPROM_ADDR 37
- #define EEPROM_CUSTOM_BACKLIGHT 637
- #define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 638
+ #define EEPROM_MAGIC_ADDR 34
+ #define EEPROM_VERSION_ADDR 36
+ #define DYNAMIC_KEYMAP_EEPROM_ADDR 37
+ #define EEPROM_CUSTOM_BACKLIGHT 637
+ #define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 638
#endif
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index 6a436e0af0e..b48d837d00d 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -219,3 +219,10 @@ void eeconfig_init_user(void) {
eeconfig_init_keymap();
keyboard_init();
}
+
+bool hasAllBitsInMask(uint8_t value, uint8_t mask) {
+ value &= 0xF;
+ mask &= 0xF;
+
+ return (value & mask) == mask;
+}
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index e3edf811241..0ccb7614fa1 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -60,6 +60,7 @@ layer_state_t layer_state_set_keymap(layer_state_t state);
layer_state_t default_layer_state_set_keymap(layer_state_t state);
void led_set_keymap(uint8_t usb_led);
void eeconfig_init_keymap(void);
+bool hasAllBitsInMask(uint8_t value, uint8_t mask);
typedef union {
uint32_t raw;
diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h
index 0ae468a04ed..cb7ec3ec401 100644
--- a/users/drashna/process_records.h
+++ b/users/drashna/process_records.h
@@ -14,21 +14,21 @@ enum userspace_custom_keycodes {
KC_DVORAK, // Sets default layer to DVORAK
KC_WORKMAN, // Sets default layer to WORKMAN
KC_DIABLO_CLEAR, // Clears all Diablo Timers
- KC_MAKE, // Run keyboard's customized make command
- KC_RGB_T, // Toggles RGB Layer Indication mode
- RGB_IDL, // RGB Idling animations
- KC_SECRET_1, // test1
- KC_SECRET_2, // test2
- KC_SECRET_3, // test3
- KC_SECRET_4, // test4
- KC_SECRET_5, // test5
- KC_CCCV, // Hold to copy, tap to paste
- KC_NUKE, // NUCLEAR LAUNCH DETECTED!!!
- UC_FLIP, // (ಠ痊ಠ)┻━┻
- UC_TABL, // ┬─┬ノ( º _ ºノ)
- UC_SHRG, // ¯\_(ツ)_/¯
- UC_DISA, // ಠ_ಠ
- NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes
+ KC_MAKE, // Run keyboard's customized make command
+ KC_RGB_T, // Toggles RGB Layer Indication mode
+ RGB_IDL, // RGB Idling animations
+ KC_SECRET_1, // test1
+ KC_SECRET_2, // test2
+ KC_SECRET_3, // test3
+ KC_SECRET_4, // test4
+ KC_SECRET_5, // test5
+ KC_CCCV, // Hold to copy, tap to paste
+ KC_NUKE, // NUCLEAR LAUNCH DETECTED!!!
+ UC_FLIP, // (ಠ痊ಠ)┻━┻
+ UC_TABL, // ┬─┬ノ( º _ ºノ)
+ UC_SHRG, // ¯\_(ツ)_/¯
+ UC_DISA, // ಠ_ಠ
+ NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes
};
bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
@@ -57,9 +57,11 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
#define KC_RST KC_RESET
#ifdef SWAP_HANDS_ENABLE
-# define KC_C1R3 SH_TT
+# define KC_C1R3 SH_T(KC_TAB)
+#elif defined(DRASHNA_LP)
+# define KC_C1R3 TG(_GAMEPAD)
#else // SWAP_HANDS_ENABLE
-# define KC_C1R3 KC_BSPC
+# define KC_C1R3 KC_TAB
#endif // SWAP_HANDS_ENABLE
#define BK_LWER LT(_LOWER, KC_BSPC)
@@ -79,7 +81,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
#define OS_RCTL OSM(MOD_RCTL)
#define OS_LALT OSM(MOD_LALT)
#define OS_RALT OSM(MOD_RALT)
-#define OS_MEH OSM(MOD_MEH)
+#define OS_MEH OSM(MOD_MEH)
#define OS_HYPR OSM(MOD_HYPR)
#define ALT_APP ALT_T(KC_APP)
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index 7b77a51d963..1b5a8638502 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -4,8 +4,13 @@ SRC += drashna.c \
LINK_TIME_OPTIMIZATION_ENABLE = yes
SPACE_CADET_ENABLE = no
-ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
- SRC += secrets.c
+ifneq ($(strip $(NO_SECRETS)), yes)
+ ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
+ SRC += secrets.c
+ endif
+ ifeq ($(strip $(NO_SECRETS)), lite)
+ OPT_DEFS += -DNO_SECRETS
+ endif
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
@@ -14,9 +19,7 @@ endif
-ifeq ($(strip $(NO_SECRETS)), yes)
- OPT_DEFS += -DNO_SECRETS
-endif
+
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
SRC += rgb_stuff.c
diff --git a/users/hvp/hvp.c b/users/hvp/hvp.c
new file mode 100644
index 00000000000..7e484535c87
--- /dev/null
+++ b/users/hvp/hvp.c
@@ -0,0 +1,2 @@
+
+#include "hvp.h"
diff --git a/users/hvp/hvp.h b/users/hvp/hvp.h
new file mode 100644
index 00000000000..2b2210f873f
--- /dev/null
+++ b/users/hvp/hvp.h
@@ -0,0 +1,6 @@
+#pragma once
+
+#ifdef TAP_DANCE_ENABLE
+# include "tap_dances.h"
+#endif
+#include "quantum.h"
diff --git a/users/hvp/readme.md b/users/hvp/readme.md
new file mode 100644
index 00000000000..2d8f9d85977
--- /dev/null
+++ b/users/hvp/readme.md
@@ -0,0 +1 @@
+Personal user space for hvpcode / cablegore at discord
diff --git a/users/hvp/rules.mk b/users/hvp/rules.mk
new file mode 100644
index 00000000000..0a7e679631d
--- /dev/null
+++ b/users/hvp/rules.mk
@@ -0,0 +1,4 @@
+SRC += hvp.c
+ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
+ SRC += tap_dances.c
+endif
\ No newline at end of file
diff --git a/users/hvp/tap_dances.c b/users/hvp/tap_dances.c
new file mode 100644
index 00000000000..bb102b30abf
--- /dev/null
+++ b/users/hvp/tap_dances.c
@@ -0,0 +1,75 @@
+#include "tap_dances.h"
+
+// Tap dance function for enable swedish characters on first layer. Unregister to not let tap bleed over to next keypress.
+// Tap dance 1
+void dance_1_finished(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 2) {
+ tap_code(KC_SCLN);
+ } else {
+ register_code(KC_RALT);
+ register_code(KC_O);
+ unregister_code(KC_RALT);
+ unregister_code(KC_O);
+ }
+}
+
+void dance_1_reset(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 2) {
+ unregister_code(KC_SCLN);
+ } else {
+ unregister_code(KC_RALT);
+ unregister_code(KC_O);
+ }
+}
+
+// Tap dance 2
+void dance_2_finished(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 2) {
+ tap_code(KC_QUOT);
+ } else {
+ register_code(KC_RALT);
+ register_code(KC_A);
+ unregister_code(KC_RALT);
+ unregister_code(KC_A);
+ }
+}
+
+void dance_2_reset(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 2) {
+ unregister_code(KC_QUOT);
+ } else {
+ unregister_code(KC_RALT);
+ unregister_code(KC_A);
+ }
+}
+
+// Tap dance 3
+void dance_3_finished(qk_tap_dance_state_t *state, void *user_data) {
+ // if (state->count == 2)
+ if (state->count == 2) {
+ tap_code(KC_SLSH);
+ } else {
+ register_code(KC_RALT);
+ register_code(KC_W);
+ unregister_code(KC_RALT);
+ unregister_code(KC_W);
+ }
+}
+
+void dance_3_reset(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 2) {
+ unregister_code(KC_SLSH);
+ } else {
+ unregister_code(KC_RALT);
+ unregister_code(KC_W);
+ }
+}
+
+// Tap Dance Definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+ // simple tap dance
+ [TD1] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_1_finished, dance_1_reset),
+
+ [TD2] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_2_finished, dance_2_reset),
+
+ [TD3] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_3_finished, dance_3_reset)};
\ No newline at end of file
diff --git a/users/hvp/tap_dances.h b/users/hvp/tap_dances.h
new file mode 100644
index 00000000000..705985faac5
--- /dev/null
+++ b/users/hvp/tap_dances.h
@@ -0,0 +1,10 @@
+#pragma once
+#include "hvp.h"
+
+// Tap Dance Declarations
+enum tapdance_id
+{
+ TD1 = 0,
+ TD2,
+ TD3
+};
diff --git a/users/tominabox1/.gitignore b/users/tominabox1/.gitignore
new file mode 100644
index 00000000000..62a86669822
--- /dev/null
+++ b/users/tominabox1/.gitignore
@@ -0,0 +1,2 @@
+*.bmp
+*.py
diff --git a/users/tominabox1/config.h b/users/tominabox1/config.h
new file mode 100644
index 00000000000..2a8c1e943db
--- /dev/null
+++ b/users/tominabox1/config.h
@@ -0,0 +1,80 @@
+#pragma once
+
+// Tapping term settings
+#define TAPPING_TERM_PER_KEY
+#define TAP_HOLD_CAPS_DELAY 350
+#define BOOTMAGIC_KEY_SALT KC_BSPACE
+#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q
+
+// OLED settings
+#define OLED_FONT_H "users/tominabox1/doug.c"
+#define OLED_DISABLE_TIMEOUT
+
+#define DEBOUNCE 5
+
+// Setup RGB settings for the Dimple.
+#ifdef KEYBOARD_lazydesigners_dimple
+ #ifdef RGBLIGHT_ENABLE
+ #undef RGBLED_NUM
+ #define RGBLED_NUM 50
+ #define RGBLIGHT_ANIMATIONS
+ #define RGBLIGHT_SLEEP
+ #endif // RGBLIGHT_ENABLE
+
+ #ifdef RGB_MATRIX_ENABLE
+ #undef RGBLED_NUM
+ #define RGBLED_NUM 50
+ #define DRIVER_LED_TOTAL RGBLED_NUM
+ #endif // RGBL_MATRIX_ENABLE
+#endif // KEYBOARD_lazydesigners_dimple
+
+// RGB_Matrix settings
+#ifdef RGB_MATRIX_ENABLE
+ #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+ #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
+ #define RGB_MATRIX_HUE_STEP 8
+ #define RGB_MATRIX_SAT_STEP 8
+ #define RGB_MATRIX_VAL_STEP 8
+ #define RGB_MATRIX_SPD_STEP 10
+ #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+ /* Disable the animations you don't want/need. You will need to disable a good number of these
+ because they take up a lot of space. Disable until you can successfully compile your firmware. */
+ // #define DISABLE_RGB_MATRIX_ALPHAS_MODS
+ // #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+ #define DISABLE_RGB_MATRIX_BREATHING
+ // #define DISABLE_RGB_MATRIX_CYCLE_ALL
+ // #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+ // #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
+ // #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
+ // #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+ #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+ #define DISABLE_RGB_MATRIX_DUAL_BEACON
+ #define DISABLE_RGB_MATRIX_RAINBOW_BEACON
+ #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+ // #define DISABLE_RGB_MATRIX_RAINDROPS
+ #define DISABLE_RGB_MATRIX_JELLYBEN_RAINDROPS
+ // # define DISABLE_RGB_MATRIX_TYPING_HEATMAP
+ #define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+ // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+ // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+ // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+ #define DISABLE_RGB_MATRIX_SPLASH
+ #define DISABLE_RGB_MATRIX_MULTISPLASH
+ #define DISABLE_RGB_MATRIX_SOLID_SPLASH
+ #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif //RGB_MATRIX_ENABLE
+
+// Hex size reduction options
+#ifndef NO_DEBUG
+ #define NO_DEBUG
+#endif // !NO_DEBUG
+#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
+ #define NO_PRINT
+#endif // !NO_PRINT
+#define NO_ACTION_ONESHOT
diff --git a/users/tominabox1/dimple_rgb.c b/users/tominabox1/dimple_rgb.c
new file mode 100644
index 00000000000..49d95eb43a9
--- /dev/null
+++ b/users/tominabox1/dimple_rgb.c
@@ -0,0 +1,433 @@
+#include "dz60rgb.h"
+#include "config.h"
+#if defined (dzrgb60_iso)
+const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, K_14, J_14, L_14},
+ {0, K_13, J_13, L_13},
+ {0, K_12, J_12, L_12},
+ {0, K_11, J_11, L_11},
+ {0, K_10, J_10, L_10},
+ {0, K_9, J_9, L_9},
+ {0, K_8, J_8, L_8},
+ {0, K_7, J_7, L_7},
+ {0, K_6, J_6, L_6},
+ {0, K_5, J_5, L_5},
+ {0, K_4, J_4, L_4},
+ {0, K_3, J_3, L_3},
+ {0, K_2, J_2, L_2},
+ {0, K_1, J_1, L_1},
+ {0, H_15, G_15, I_15},
+ {0, H_13, G_13, I_13},
+ {0, H_12, G_12, I_12},
+ {0, H_11, G_11, I_11},
+ {0, H_10, G_10, I_10},
+ {0, H_9, G_9, I_9},
+ {0, H_8, G_8, I_8},
+ {0, H_7, G_7, I_7},
+ {0, H_6, G_6, I_6},
+ {0, H_5, G_5, I_5},
+ {0, H_4, G_4, I_4},
+ {0, H_3, G_3, I_3},
+ {0, H_2, G_2, I_2},
+ {0, H_1, G_1, I_1},
+ {0, B_14, A_14, C_14},
+ {0, E_12, D_12, F_12},
+ {0, E_11, D_11, F_11},
+ {0, E_10, D_10, F_10},
+ {0, E_9, D_9, F_9},
+ {0, E_8, D_8, F_8},
+ {0, E_7, D_7, F_7},
+ {0, E_6, D_6, F_6},
+ {0, E_5, D_5, F_5},
+ {0, E_4, D_4, F_4},
+ {0, E_3, D_3, F_3},
+ {0, E_2, D_2, F_2},
+ {0, E_1, D_1, F_1},
+ {0, B_13, A_13, C_13},
+ {0, B_11, A_11, C_11},
+ {0, B_10, A_10, C_10},
+ {0, B_9, A_9, C_9},
+ {0, B_8, A_8, C_8},
+ {0, B_7, A_7, C_7},
+ {0, B_6, A_6, C_6},
+ {0, B_5, A_5, C_5},
+ {0, B_4, A_4, C_4},
+ {0, B_3, A_3, C_3},
+ {0, B_2, A_2, C_2},
+ {0, B_1, A_1, C_1},
+ {0, B_15, A_15, C_15},
+ {0, E_13, D_13, F_13},
+ {0, B_12, A_12, C_12},
+ {0, E_15, D_15, F_15},
+ {0, B_16, A_16, C_16},
+ {0, E_16, D_16, F_16},
+ {0, H_16, G_16, I_16},
+ {0, K_16, J_16, L_16},
+};
+
+led_config_t g_led_config = { {
+ { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 },
+ { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 28 },
+ { 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, NO_LED, 14 },
+ { 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED, NO_LED },
+ { 60, 59, 58, NO_LED, NO_LED, 57, NO_LED, NO_LED, NO_LED, 56, 55, 54, NO_LED, 53 }
+}, {
+ { 216, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 }, { 0, 0 },
+ { 220, 24 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 }, { 4, 16 },
+ { 204, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 }, { 210, 48 },
+ { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, { 222, 64 }, { 202, 64 }, { 182, 64 },
+ { 162, 64 }, { 102, 64 }, { 42, 64 }, { 22, 64 }, { 2, 64 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 1, 1, 1
+} };
+
+#elif defined (dzrgb60_hhkb)
+const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, H_15, G_15, I_15},
+ {0, K_14, J_14, L_14},
+ {0, K_13, J_13, L_13},
+ {0, K_12, J_12, L_12},
+ {0, K_11, J_11, L_11},
+ {0, K_10, J_10, L_10},
+ {0, K_9, J_9, L_9},
+ {0, K_8, J_8, L_8},
+ {0, K_7, J_7, L_7},
+ {0, K_6, J_6, L_6},
+ {0, K_5, J_5, L_5},
+ {0, K_4, J_4, L_4},
+ {0, K_3, J_3, L_3},
+ {0, K_2, J_2, L_2},
+ {0, K_1, J_1, L_1},
+ {0, H_14, G_14, I_14},
+ {0, H_13, G_13, I_13},
+ {0, H_12, G_12, I_12},
+ {0, H_11, G_11, I_11},
+ {0, H_10, G_10, I_10},
+ {0, H_9, G_9, I_9},
+ {0, H_8, G_8, I_8},
+ {0, H_7, G_7, I_7},
+ {0, H_6, G_6, I_6},
+ {0, H_5, G_5, I_5},
+ {0, H_4, G_4, I_4},
+ {0, H_3, G_3, I_3},
+ {0, H_2, G_2, I_2},
+ {0, H_1, G_1, I_1},
+ {0, E_14, D_14, F_14},
+ {0, E_12, D_12, F_12},
+ {0, E_11, D_11, F_11},
+ {0, E_10, D_10, F_10},
+ {0, E_9, D_9, F_9},
+ {0, E_8, D_8, F_8},
+ {0, E_7, D_7, F_7},
+ {0, E_6, D_6, F_6},
+ {0, E_5, D_5, F_5},
+ {0, E_4, D_4, F_4},
+ {0, E_3, D_3, F_3},
+ {0, E_2, D_2, F_2},
+ {0, E_1, D_1, F_1},
+ {0, B_14, A_14, C_14},
+ {0, B_13, A_13, C_13},
+ {0, B_11, A_11, C_11},
+ {0, B_10, A_10, C_10},
+ {0, B_9, A_9, C_9},
+ {0, B_8, A_8, C_8},
+ {0, B_7, A_7, C_7},
+ {0, B_6, A_6, C_6},
+ {0, B_5, A_5, C_5},
+ {0, B_4, A_4, C_4},
+ {0, B_3, A_3, C_3},
+ {0, B_2, A_2, C_2},
+ {0, B_1, A_1, C_1},
+ {0, B_15, A_15, C_15},
+ {0, E_13, D_13, F_13},
+ {0, B_12, A_12, C_12},
+ {0, B_16, A_16, C_16},
+ {0, E_16, D_16, F_16},
+ {0, H_16, G_16, I_16},
+ {0, K_16, J_16, L_16},
+};
+
+led_config_t g_led_config = { {
+ { 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 },
+ { 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15 },
+ { 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 0, 29 },
+ { 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, NO_LED, 42 },
+ { 61, 60, 59, NO_LED, NO_LED, 58, NO_LED, NO_LED, NO_LED, NO_LED, 57, 56, NO_LED, 55 }
+}, {
+ { 224, 0 }, { 208, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 },
+ { 0, 0 }, { 220, 16 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 },
+ { 4, 16 }, { 204, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 },
+ { 224, 48 }, { 202, 48 }, { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, { 218, 64 },
+ { 198, 64 }, { 178, 64 }, { 112, 64 }, { 46, 64 }, { 26, 64 }, { 6, 64 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 4, 1, 1, 1
+} };
+
+#elif defined (dzrgb60_hhkb_iso)
+const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, H_15, G_15, I_15},
+ {0, K_14, J_14, L_14},
+ {0, K_13, J_13, L_13},
+ {0, K_12, J_12, L_12},
+ {0, K_11, J_11, L_11},
+ {0, K_10, J_10, L_10},
+ {0, K_9, J_9, L_9},
+ {0, K_8, J_8, L_8},
+ {0, K_7, J_7, L_7},
+ {0, K_6, J_6, L_6},
+ {0, K_5, J_5, L_5},
+ {0, K_4, J_4, L_4},
+ {0, K_3, J_3, L_3},
+ {0, K_2, J_2, L_2},
+ {0, K_1, J_1, L_1},
+ {0, K_15, J_15, L_15},
+ {0, H_13, G_13, I_13},
+ {0, H_12, G_12, I_12},
+ {0, H_11, G_11, I_11},
+ {0, H_10, G_10, I_10},
+ {0, H_9, G_9, I_9},
+ {0, H_8, G_8, I_8},
+ {0, H_7, G_7, I_7},
+ {0, H_6, G_6, I_6},
+ {0, H_5, G_5, I_5},
+ {0, H_4, G_4, I_4},
+ {0, H_3, G_3, I_3},
+ {0, H_2, G_2, I_2},
+ {0, H_1, G_1, I_1},
+ {0, E_15, D_15, F_15},
+ {0, E_12, D_12, F_12},
+ {0, E_11, D_11, F_11},
+ {0, E_10, D_10, F_10},
+ {0, E_9, D_9, F_9},
+ {0, E_8, D_8, F_8},
+ {0, E_7, D_7, F_7},
+ {0, E_6, D_6, F_6},
+ {0, E_5, D_5, F_5},
+ {0, E_4, D_4, F_4},
+ {0, E_3, D_3, F_3},
+ {0, E_2, D_2, F_2},
+ {0, E_1, D_1, F_1},
+ {0, B_14, A_14, C_14},
+ {0, B_13, A_13, C_13},
+ {0, B_11, A_11, C_11},
+ {0, B_10, A_10, C_10},
+ {0, B_9, A_9, C_9},
+ {0, B_8, A_8, C_8},
+ {0, B_7, A_7, C_7},
+ {0, B_6, A_6, C_6},
+ {0, B_5, A_5, C_5},
+ {0, B_4, A_4, C_4},
+ {0, B_3, A_3, C_3},
+ {0, B_2, A_2, C_2},
+ {0, B_1, A_1, C_1},
+ {0, B_15, A_15, C_15},
+ {0, E_13, D_13, F_13},
+ {0, B_12, A_12, C_12},
+ {0, B_16, A_16, C_16},
+ {0, E_16, D_16, F_16},
+ {0, H_16, G_16, I_16},
+ {0, K_16, J_16, L_16},
+};
+
+led_config_t g_led_config = { {
+ { 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 },
+ { 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 29 },
+ { 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 0, 15 },
+ { 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, NO_LED, 42 },
+ { 61, 60, 59, NO_LED, NO_LED, 58, NO_LED, NO_LED, NO_LED, NO_LED, 57, 56, NO_LED, 55 }
+}, {
+ { 224, 0 }, { 208, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 },
+ { 0, 0 }, { 220, 24 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 },
+ { 4, 16 }, { 204, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 },
+ { 224, 48 }, { 202, 48 }, { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, { 218, 64 },
+ { 198, 64 }, { 178, 64 }, { 112, 64 }, { 46, 64 }, { 26, 64 }, { 6, 64 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 4, 1, 1, 1
+} };
+
+#elif defined (dzrgb60_ansi)
+const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, K_14, J_14, L_14},
+ {0, K_13, J_13, L_13},
+ {0, K_12, J_12, L_12},
+ {0, K_11, J_11, L_11},
+ {0, K_10, J_10, L_10},
+ {0, K_9, J_9, L_9},
+ {0, K_8, J_8, L_8},
+ {0, K_7, J_7, L_7},
+ {0, K_6, J_6, L_6},
+ {0, K_5, J_5, L_5},
+ {0, K_4, J_4, L_4},
+ {0, K_3, J_3, L_3},
+ {0, K_2, J_2, L_2},
+ {0, K_1, J_1, L_1},
+ {0, H_14, G_14, I_14},
+ {0, H_13, G_13, I_13},
+ {0, H_12, G_12, I_12},
+ {0, H_11, G_11, I_11},
+ {0, H_10, G_10, I_10},
+ {0, H_9, G_9, I_9},
+ {0, H_8, G_8, I_8},
+ {0, H_7, G_7, I_7},
+ {0, H_6, G_6, I_6},
+ {0, H_5, G_5, I_5},
+ {0, H_4, G_4, I_4},
+ {0, H_3, G_3, I_3},
+ {0, H_2, G_2, I_2},
+ {0, H_1, G_1, I_1},
+ {0, E_14, D_14, F_14},
+ {0, E_12, D_12, F_12},
+ {0, E_11, D_11, F_11},
+ {0, E_10, D_10, F_10},
+ {0, E_9, D_9, F_9},
+ {0, E_8, D_8, F_8},
+ {0, E_7, D_7, F_7},
+ {0, E_6, D_6, F_6},
+ {0, E_5, D_5, F_5},
+ {0, E_4, D_4, F_4},
+ {0, E_3, D_3, F_3},
+ {0, E_2, D_2, F_2},
+ {0, E_1, D_1, F_1},
+ {0, B_13, A_13, C_13},
+ {0, B_11, A_11, C_11},
+ {0, B_10, A_10, C_10},
+ {0, B_9, A_9, C_9},
+ {0, B_8, A_8, C_8},
+ {0, B_7, A_7, C_7},
+ {0, B_6, A_6, C_6},
+ {0, B_5, A_5, C_5},
+ {0, B_4, A_4, C_4},
+ {0, B_3, A_3, C_3},
+ {0, B_2, A_2, C_2},
+ {0, B_1, A_1, C_1},
+ {0, B_15, A_15, C_15},
+ {0, E_13, D_13, F_13},
+ {0, B_12, A_12, C_12},
+ {0, E_15, D_15, F_15},
+ {0, B_16, A_16, C_16},
+ {0, E_16, D_16, F_16},
+ {0, H_16, G_16, I_16},
+ {0, K_16, J_16, L_16},
+};
+
+led_config_t g_led_config = { {
+ { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 },
+ { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 },
+ { 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, NO_LED, 28 },
+ { 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED, NO_LED },
+ { 60, 59, 58, NO_LED, NO_LED, 57, NO_LED, NO_LED, NO_LED, 56, 55, 54, NO_LED, 53 }
+}, {
+ { 216, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 }, { 0, 0 },
+ { 220, 16 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 }, { 4, 16 },
+ { 214, 24 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 }, { 210, 48 },
+ { 180, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 20, 48 }, { 10, 48 }, { 222, 64 }, { 202, 64 }, { 182, 64 },
+ { 162, 64 }, { 102, 64 }, { 42, 64 }, { 22, 64 }, { 2, 64 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 1, 1, 1
+} };
+
+#else
+const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, K_14, J_14, L_14},
+ {0, K_13, J_13, L_13},
+ {0, K_12, J_12, L_12},
+ {0, K_11, J_11, L_11},
+ {0, K_10, J_10, L_10},
+ {0, K_9, J_9, L_9},
+ {0, K_8, J_8, L_8},
+ {0, K_7, J_7, L_7},
+ {0, K_6, J_6, L_6},
+ {0, K_5, J_5, L_5},
+ {0, K_4, J_4, L_4},
+ {0, K_3, J_3, L_3},
+ {0, K_2, J_2, L_2},
+ {0, K_1, J_1, L_1},
+ {0, H_14, G_14, I_14},
+ {0, H_13, G_13, I_13},
+ {0, H_12, G_12, I_12},
+ {0, H_11, G_11, I_11},
+ {0, H_10, G_10, I_10},
+ {0, H_9, G_9, I_9},
+ {0, H_8, G_8, I_8},
+ {0, H_7, G_7, I_7},
+ {0, H_6, G_6, I_6},
+ {0, H_5, G_5, I_5},
+ {0, H_4, G_4, I_4},
+ {0, H_3, G_3, I_3},
+ {0, H_2, G_2, I_2},
+ {0, H_1, G_1, I_1},
+ {0, E_14, D_14, F_14},
+ {0, E_12, D_12, F_12},
+ {0, E_11, D_11, F_11},
+ {0, E_10, D_10, F_10},
+ {0, E_9, D_9, F_9},
+ {0, E_8, D_8, F_8},
+ {0, E_7, D_7, F_7},
+ {0, E_6, D_6, F_6},
+ {0, E_5, D_5, F_5},
+ {0, E_4, D_4, F_4},
+ {0, E_3, D_3, F_3},
+ {0, E_2, D_2, F_2},
+ {0, E_1, D_1, F_1},
+ {0, B_14, A_14, C_14},
+ {0, B_13, A_13, C_13},
+ {0, B_11, A_11, C_11},
+ {0, B_10, A_10, C_10},
+ {0, B_9, A_9, C_9},
+ {0, B_8, A_8, C_8},
+ {0, B_7, A_7, C_7},
+ {0, B_6, A_6, C_6},
+ {0, B_5, A_5, C_5},
+ {0, B_4, A_4, C_4},
+ {0, B_3, A_3, C_3},
+ {0, B_2, A_2, C_2},
+ {0, B_1, A_1, C_1},
+ {0, B_15, A_15, C_15},
+ {0, E_13, D_13, F_13},
+ {0, B_12, A_12, C_12},
+ {0, E_15, D_15, F_15},
+ {0, H_15, G_15, I_15},
+ {0, B_16, A_16, C_16},
+ {0, E_16, D_16, F_16},
+ {0, H_16, G_16, I_16},
+ {0, K_16, J_16, L_16},
+};
+
+led_config_t g_led_config = { {
+ { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 },
+ { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 },
+ { 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, NO_LED, 28 },
+ { 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, NO_LED, 41 },
+ { 62, 61, 60, NO_LED, NO_LED, 59, NO_LED, NO_LED, 58, 57, 56, 55, NO_LED, 54 }
+}, {
+ { 216, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 }, { 0, 0 },
+ { 220, 16 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 }, { 4, 16 },
+ { 214, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 }, { 224, 48 },
+ { 208, 48 }, { 186, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 36, 48 }, { 9, 48 }, { 224, 64 }, { 208, 64 },
+ { 192, 64 }, { 176, 64 }, { 160, 64 }, { 102, 64 }, { 42, 64 }, { 22, 64 }, { 2, 64 }
+}, {
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1
+} };
+
+
+#endif
diff --git a/users/tominabox1/doug.c b/users/tominabox1/doug.c
new file mode 100644
index 00000000000..d1f92ecf30f
--- /dev/null
+++ b/users/tominabox1/doug.c
@@ -0,0 +1,243 @@
+// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
+// See gfxfont.h for newer custom bitmap font info.
+
+#ifndef FONT5X7_H
+#define FONT5X7_H
+
+#ifdef __AVR__
+ #include
+ #include
+#elif defined(ESP8266)
+ #include
+#else
+ #define PROGMEM
+#endif
+
+// Standard ASCII 5x7 font
+const unsigned char font[] PROGMEM = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00,
+0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
+0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
+0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+0x00, 0x2C, 0x2C, 0x2C, 0x34, 0x34,
+0x34, 0x24, 0x2C, 0x2C, 0x2C, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x18, 0x14,
+0x14, 0x3C, 0x20, 0x00, 0x00, 0x04,
+0x0C, 0x00, 0x00, 0x20, 0x00, 0xC0,
+0x00, 0x00, 0x00, 0xA0, 0x20, 0x30,
+0x7C, 0x78, 0x0C, 0x0C, 0x18, 0x18,
+0x18, 0x14, 0x14, 0x14, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x5C, 0x5C, 0x24, 0x20,
+0xA0, 0xA0, 0xA0, 0x20, 0x60, 0x20,
+0xBC, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x14, 0x94, 0x94,
+0x14, 0x94, 0x94, 0x94, 0x94, 0x14,
+0x1C, 0x1C, 0x1C, 0x88, 0x08, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x18, 0x08,
+0x84, 0x84, 0x84, 0x84, 0x80, 0x98,
+0x80, 0x9C, 0x9C, 0x90, 0x80, 0x00,
+0x10, 0x1C, 0x1C, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x10, 0x10, 0x00,
+0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
+0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
+0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
+0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
+0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
+0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
+0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
+0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x80, 0x80, 0x40, 0x00, 0x80, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x50, 0xA0, 0x40, 0x80, 0x80, 0x40,
+0xA0, 0x50, 0x00, 0x00, 0xF0, 0x00,
+0x01, 0x08, 0x08, 0x88, 0x08, 0x08,
+0x00, 0x00, 0x00, 0x00, 0x0A, 0x0C,
+0x0E, 0x0A, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x02, 0x82, 0x80, 0x80,
+0x00, 0x00, 0x80, 0x80, 0x00, 0x00,
+0x00, 0xC0, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x40, 0x00, 0x40,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
+0x01, 0x01, 0x01, 0x60, 0x60, 0x40,
+0xF1, 0xB3, 0x03, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x90, 0x90, 0xD0, 0xC0,
+0xE0, 0xE0, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x90, 0xA0, 0xA0, 0x63, 0x60,
+0x40, 0x40, 0xC0, 0x00, 0x00, 0x00,
+0x00, 0x02, 0x02, 0x02, 0x03, 0x00,
+0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
+0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
+0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
+0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
+0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
+0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
+0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x07, 0x06, 0x00, 0x70, 0x10, 0x10,
+0x31, 0x11, 0x16, 0x06, 0x07, 0x01,
+0x00, 0x08, 0x08, 0x08, 0x70, 0x70,
+0x40, 0x40, 0x41, 0x46, 0x46, 0x41,
+0x40, 0x40, 0x00, 0x00, 0x07, 0x00,
+0x00, 0x00, 0x00, 0x75, 0x75, 0x15,
+0x77, 0x77, 0x35, 0x15, 0x75, 0x75,
+0x75, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x70, 0x70, 0x56, 0x56, 0x56,
+0x51, 0x11, 0x26, 0x00, 0x00, 0x00,
+0x00, 0x17, 0x10, 0x10, 0x70, 0x00,
+0x00, 0x00, 0x30, 0x20, 0x27, 0x77,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xE0, 0xE0, 0xA0, 0xA0, 0xA0, 0xA0,
+0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x90, 0x90, 0x90, 0x90,
+0x90, 0xF0, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x20, 0x40,
+0xF0, 0x30, 0x10, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+#endif // FONT5X7_H
diff --git a/users/tominabox1/readme.md b/users/tominabox1/readme.md
new file mode 100644
index 00000000000..99a3542bc30
--- /dev/null
+++ b/users/tominabox1/readme.md
@@ -0,0 +1,5 @@
+# Overview
+
+My user-space code covers the [Minivan](../../keyboards/thevankeyboards/minivan/keymaps/tominabox1/keymap.c), [Dimple](../../keyboards/lazydesigners/dimple/keymaps/tominabox1/keymap.c), [CRKBD](../../keyboards/crkbd/keymaps/tominabox1/keymap.c), and [Teensy based HHKB converter](../../keyboards/hhkb/keymaps/tominabox1/). My code makes extensive use of @Drashna's code and much love and praise goes to him for figuring a lot of this stuff out!
+
+My usercode utilizes the layout wrappers contained in [wrappers.h](wrappers.h). All of the keymaps are derivative of the Dimple keymap and utilize its wrappers in the definition of additional wrappers.
diff --git a/users/tominabox1/rules.mk b/users/tominabox1/rules.mk
new file mode 100644
index 00000000000..b70b128cf3e
--- /dev/null
+++ b/users/tominabox1/rules.mk
@@ -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
+#
+CONSOLE_ENABLE = no
+TAP_DANCE_ENABLE = yes
+NKRO_ENABLE = yes
+BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
+
+ifeq ($(strip $(KEYBOARD)), crkbd/rev1)
+RGB_MATRIX_ENABLE = WS2812
+EXTRAFLAGS += -flto
+BOOTLOADER = qmk-dfu
+OLED_DRIVER_ENABLE = yes
+endif
+
+ifeq ($(strip $(KEYBOARD)), lazydesigners/dimple)
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+# RGB_MATRIX_ENABLE = WS2812
+endif
+
+
+SRC += tominabox1.c
diff --git a/users/tominabox1/tominabox1.c b/users/tominabox1/tominabox1.c
new file mode 100644
index 00000000000..95e6ee78033
--- /dev/null
+++ b/users/tominabox1/tominabox1.c
@@ -0,0 +1,281 @@
+#include "tominabox1.h"
+
+#ifdef KEYBOARD_lazydesigners_dimple
+#ifdef RGBLIGHT_ENABLE
+__attribute__ ((weak))
+void keyboard_post_init_keymap(void) {}
+
+void keyboard_post_init_user(void) { // sets the backlighting to come on upon successful load then turn off
+ rgblight_enable_noeeprom();
+ rgblight_sethsv_noeeprom(RGB_RED);
+ rgblight_mode_noeeprom(0);
+ wait_ms(700);
+ rgblight_disable_noeeprom();
+}
+#endif // RGBLIGHT
+#endif // Dimple
+
+
+#ifdef RGB_MATRIX_ENABLE
+void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type);
+static bool is_suspended;
+static bool rgb_matrix_enabled;
+
+__attribute__ ((weak))
+void suspend_power_down_keymap(void) {}
+
+void suspend_power_down_user(void) {
+ rgb_matrix_set_suspend_state(true);
+ if (!is_suspended) {
+ is_suspended = true;
+ rgb_matrix_enabled = (bool)rgb_matrix_config.enable;
+ rgb_matrix_disable_noeeprom();
+ }
+}
+
+__attribute__ ((weak))
+void suspend_wakeup_init_keymap(void) {}
+
+void suspend_wakeup_init_user(void) {
+ rgb_matrix_set_suspend_state(false);
+ is_suspended = false;
+ if (rgb_matrix_enabled) {
+ rgb_matrix_enable_noeeprom();
+ }
+}
+
+# include "lib/lib8tion/lib8tion.h"
+extern led_config_t g_led_config;
+void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type) {
+ HSV hsv = {hue, sat, val};
+ if (hsv.v > rgb_matrix_config.hsv.v) {
+ hsv.v = rgb_matrix_config.hsv.v;
+ }
+
+ switch (mode) {
+ case 1: // breathing
+ {
+ uint16_t time = scale16by8(g_rgb_counters.tick, speed / 8);
+ hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
+ RGB rgb = hsv_to_rgb(hsv);
+ for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
+ if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ }
+ }
+ break;
+ }
+ default: // Solid Color
+ {
+ RGB rgb = hsv_to_rgb(hsv);
+ for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
+ if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ }
+ }
+ break;
+ }
+ }
+}
+#endif //RGB_MATRIX_ENABLE
+
+void dance_cln_finished (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ register_code16(S(KC_2));
+ } else {
+ SEND_STRING("tom.campie@gmail.com");
+ }
+}
+
+void dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ unregister_code16(S(KC_2));
+ } else {
+ }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [KC_EMAIL] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cln_finished, dance_cln_reset),
+ [TD_SFT_CPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
+};
+
+#define TAPPING_TERM 200
+#define IGNORE_MOD_TAP_INTERRUPT
+
+#ifdef KEYBOARD_crkbd_rev1
+
+#endif // CRKBD
+
+uint16_t get_tapping_term(uint16_t keycode) {
+ switch (keycode) {
+ case LSFT_T(KC_CAPS):
+ return 250;
+ case KC_ENT_LOW:
+ return 150;
+ case KC_SPC_RSE:
+ return(250);
+ case LCTL_T(KC_TAB):
+ return 300;
+ default:
+ return TAPPING_TERM;
+ }
+};
+
+__attribute__ ((weak))
+layer_state_t layer_state_set_keymap (layer_state_t state) {
+ return state;
+}
+
+uint32_t layer_state_set_user(uint32_t state) {
+ state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+ switch (biton32(state)) {
+ case _LOWER:
+ break;
+ case _RAISE:
+ break;
+ case _ADJUST:
+ break;
+ default:
+ break;
+ }
+ return state;
+}
+
+#ifdef KEYBOARD_crkbd_rev1
+
+__attribute__((weak))
+void matrix_scan_keymap(void) {}
+
+extern bool oled_initialized;
+void matrix_scan_user(void) {
+ if(!oled_initialized) {
+ wait_ms(200);
+ oled_init(0);
+ return;
+ }
+ matrix_scan_keymap();
+ }
+
+extern uint8_t is_master;
+#endif // CRKBD
+
+uint16_t oled_timer;
+
+__attribute__ ((weak))
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ #ifdef CONSOLE_ENABLE
+ uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
+ #endif
+
+ if (record->event.pressed) {
+ #ifdef OLED_DRIVER_ENABLE
+ oled_timer = timer_read();
+ oled_on();
+ #endif // OLED_DRIVER_ENABLE
+ switch (keycode) {
+ case KC_BBB:
+ if (record->event.pressed) {
+ SEND_STRING(":b:");
+ } else {}
+ break;
+ case KC_BEPIS:
+ if (record->event.pressed) {
+ SEND_STRING("BEPIS");
+ } else {}
+ break;
+ }
+ }
+ return true;
+
+}
+#ifdef KEYBOARD_crkbd_rev1
+#ifdef OLED_DRIVER_ENABLE
+void render_logo(void) {
+ static const char PROGMEM logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+ 0};
+ oled_write_P(logo, false);
+}
+
+void render_status_main(void) {
+ // Host Keyboard USB Status
+ oled_write_P(PSTR("USB: "), false);
+ switch (USB_DeviceState) {
+ case DEVICE_STATE_Unattached:
+ oled_write_P(PSTR("Unattached\n"), false);
+ break;
+ case DEVICE_STATE_Suspended:
+ oled_write_P(PSTR("Suspended\n"), false);
+ break;
+ case DEVICE_STATE_Configured:
+ oled_write_P(PSTR("Connected\n"), false);
+ break;
+ case DEVICE_STATE_Powered:
+ oled_write_P(PSTR("Powered\n"), false);
+ break;
+ case DEVICE_STATE_Default:
+ oled_write_P(PSTR("Default\n"), false);
+ break;
+ case DEVICE_STATE_Addressed:
+ oled_write_P(PSTR("Addressed\n"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Invalid\n"), false);
+ }
+
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+ switch (biton32(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Colemak\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("Numbers\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("Symbols\n"), false);
+ break;
+ case _ADJUST:
+ oled_write_P(PSTR("Adjust\n"), false);
+ break;
+ case _ARROW:
+ oled_write_P(PSTR("Navigation\n"), false);
+ break;
+ case _FKEY:
+ oled_write_P(PSTR("Function\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+
+ oled_write_ln_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("Caps Lock\n") : PSTR(" \n"), false);
+}
+__attribute__ ((weak))
+void oled_task_keymap(void) {}
+
+void oled_task_user(void) {
+
+ if (timer_elapsed(oled_timer) > 20000) {
+ oled_off();
+ return;
+ }
+ if (is_master) {
+ render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
+ } else {
+ render_logo();
+ oled_scroll_left();
+ }
+ oled_task_keymap();
+ }
+
+#endif // OLED_Driver
+#endif // crkbd
diff --git a/users/tominabox1/tominabox1.h b/users/tominabox1/tominabox1.h
new file mode 100644
index 00000000000..00f8e65162d
--- /dev/null
+++ b/users/tominabox1/tominabox1.h
@@ -0,0 +1,56 @@
+#pragma once
+#include "quantum.h"
+#include "action.h"
+#include "version.h"
+#include "wrappers.h"
+
+// #define KC_SFT_CPS MT(MOD_LSFT, KC_CAPS) // Act as Shift on hold and as CapsLock on tap
+#define SPC_LOW LT(_LOWER, KC_ENT) // Left space on tap, LOWER on hold
+#define SPC_UPR LT(_RAISE, KC_SPC) // Left space on tap, UPPER on hold
+
+extern keymap_config_t keymap_config;
+
+enum layers {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+ _ARROW,
+ _FKEY
+};
+
+enum custom_keycodes {
+ BASE = SAFE_RANGE,
+ KC_BEPIS,
+ KC_BBB,
+ LOWER,
+ RAISE,
+ ADJUST,
+ ARROW,
+ FKEY,
+ KC_LFT_NUM_F,
+ RGBRST,
+ KC_PASTA
+};
+
+enum tap_dance_indexes {
+ KC_EMAIL,
+ TD_SFT_CPS,
+};
+
+#define KC_ARROW MO(4)
+#define KC_LTOG RGB_TOG
+#define KC_LHUI RGB_HUI
+#define KC_LHUD RGB_HUD
+#define KC_LSAI RGB_SAI
+#define KC_LSAD RGB_SAD
+#define KC_LVAI RGB_VAI
+#define KC_LVAD RGB_VAD
+#define KC_LMOD RGB_MOD
+#define KC_CTLTB CTL_T(KC_TAB) // Tab on tap, ctrl on hold
+#define KC_SFT_CPS TD(TD_SFT_CPS) // Hold for shift, double tap for caps
+#define KC_ENT_LOW LT(_LOWER, KC_ENT) // Return on tap, Lower on hold
+#define KC_SPC_RSE LT(_RAISE, KC_SPC) // Space on tap, raise on hold
+#define KC_EML TD(KC_EMAIL) // Double tap @ for email macro
+#define KC_FKEY LT(_FKEY, KC_ENT) // Return on tap, Fkey on hold
+#define KC_NUMF TD(KC_LFT_NUM_F)
diff --git a/users/tominabox1/wrappers.h b/users/tominabox1/wrappers.h
new file mode 100644
index 00000000000..032fad273f5
--- /dev/null
+++ b/users/tominabox1/wrappers.h
@@ -0,0 +1,142 @@
+#pragma once
+#include "tominabox1.h"
+/*
+Since our quirky block definitions are basically a list of comma separated
+arguments, we need a wrapper in order for these definitions to be
+expanded before being used as arguments to the LAYOUT_xxx macro.
+*/
+#if (!defined(LAYOUT) && defined(KEYMAP))
+# define LAYOUT KEYMAP
+#endif
+
+// clang-format off
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+#define LAYOUT_arrow_wrapper(...) LAYOUT_arrow(__VA_ARGS__)
+
+/*
+ _____ _ _
+ | __ \(_) | |
+ | | | |_ _ __ ___ _ __ | | ___
+ | | | | | '_ ` _ \| '_ \| |/ _ \
+ | |__| | | | | | | | |_) | | __/
+ |_____/|_|_| |_| |_| .__/|_|\___|
+ | |
+ |_|
+*/
+// Dimple Base layer
+#define __________________DIMPLE1__________________ KC_GESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC
+#define __________________DIMPLE2__________________ LCTL_T(KC_TAB), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT
+#define __________________DIMPLE3L_________________ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B
+#define __________________DIMPLE3R_________________ KC_K, KC_M, KC_COMM, KC_UP, LT(_FKEY,KC_DOT)
+#define __________________DIMPLE4__________________ KC_LCTL, KC_LGUI, KC_LALT, KC_ENT_LOW, KC_SPC_RSE, KC_LEFT, KC_DOWN, KC_RGHT
+
+// Dimple Symbol Layer
+#define _________________LOWER_1___________________ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC
+#define _________________LOWER_2___________________ KC_DEL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE
+#define _________________LOWER_3___________________ KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_QUES
+#define _________________LOWER_4___________________ LCA(KC_DEL), KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_END
+
+// Dimple Number layer
+#define ___________________RAISE1__________________ KC_TILD, KC_EXLM, TD(KC_EMAIL), KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL
+#define ___________________RAISE2__________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS
+#define ___________________RAISE3__________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DOT, KC_SLSH
+#define ___________________RAISE4__________________ KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO
+
+// Dimple F-key layer
+#define ___________________FKEY1___________________ KC_PASTA, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO
+#define ___________________FKEY2___________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F11, KC_F12, KC_NO
+#define ___________________FKEY3___________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+#define ___________________FKEY4___________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO
+
+// Dimple Adjust layer
+#define ___________________ADJST1__________________ RESET,RGBRST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+#define ___________________ADJST2__________________ RGB_M_P, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+#define ___________________ADJST3__________________ RGB_MOD, RGB_HUI, RGB_HUD, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+#define ___________________ADJST4__________________ RGB_VAD, RGB_TOG, RGB_VAI, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO
+
+/*
+__ __ _ _
+| \/ (_) (_)
+| \ / |_ _ __ ___ ____ _ _ __
+| |\/| | | '_ \| \ \ / / _` | '_ \
+| | | | | | | | |\ V / (_| | | | |
+|_| |_|_|_| |_|_| \_/ \__,_|_| |_|
+*/
+
+
+// Minivan Base Layer
+#define __________________MINIVAN1_________________ __________________DIMPLE1__________________
+#define __________________MINIVAN2_________________ __________________DIMPLE2__________________
+#define __________________MINIVAN3_________________ __________________DIMPLE3L_________________, __________________DIMPLE3R_________________, KC_RSFT
+#define __________________MINIVAN4_________________ KC_LCTL, KC_LGUI, KC_LALT, KC_ENT_LOW, KC_SPC_RSE, KC_LEFT, KC_DOWN, KC_RGHT, MO(_FKEY)
+
+/* Minivan Symbol Layer
+#define _________________LOWER_1___________________
+#define _________________LOWER_2___________________ */
+#define __________________MININUM3_________________ _________________LOWER_3___________________, KC_SLSH
+#define __________________MININUM4_________________ _________________LOWER_4___________________, KC_END
+
+/* Minvian Number Layer
+#define ___________________RAISE1__________________
+#define ___________________RAISE2__________________ */
+#define ___________________RVAN_3__________________ ___________________RAISE3__________________, KC_NO
+#define ___________________RVAN_4__________________ ___________________RAISE4__________________, KC_NO
+
+/* Minvian F-key layer
+#define ___________________FKEY1___________________
+#define ___________________FKEY2___________________ */
+#define ___________________FVAN_3__________________ ___________________FKEY3___________________, KC_NO
+#define ___________________FVAN_4__________________ ___________________FKEY4___________________, KC_TRNS
+
+/* Minivan Adjust Layer
+#define ___________________ADJST1__________________
+#define ___________________ADJST2__________________ */
+#define ___________________ADJVAN3_________________ ___________________ADJST3__________________, KC_NO
+#define ___________________ADJVAN4_________________ ___________________ADJST4__________________, KC_TRNS
+
+/*
+ _____ _____ _ ______ _____
+ / ____| __ \| |/ / _ \| __ \
+| | | |__) | ' /| |_) | | | |
+| | | _ /| < | _ <| | | |
+| |____| | \ \| . \| |_) | |__| |
+ \_____|_| \_\_|\_\____/|_____/
+*/
+
+// CRKBD Base Layer
+#define ___________________CRKBD1__________________ __________________DIMPLE1__________________
+#define ___________________CRKBD2__________________ __________________DIMPLE2__________________
+#define ___________________CRKBD3__________________ __________________DIMPLE3L_________________, KC_K, KC_M,KC_COMM, KC_DOT, KC_SLSH, KC_BBB
+#define ___________________CRKBD4__________________ KC_LGUI, KC_LALT,KC_ENT_LOW, KC_SPC_RSE, KC_ARROW, KC_FKEY
+
+/* CRKBD Number layer
+#define ___________________RAISE1__________________
+#define ___________________RAISE1__________________ */
+#define ___________________CRKBD_RAISE3____________ ___________________RVAN_3__________________
+#define ___________________CRKBD_RAISE4____________ ___________________CRKBD4__________________
+
+/* CRKBD Symbol Layer
+#define _________________LOWER_1___________________
+#define _________________LOWER_2___________________ */
+#define ___________________CRKBD_LOW3______________ __________________MININUM3_________________
+#define ___________________CRKBD_LOW4______________ ___________________CRKBD4__________________
+
+/* CRKBD F-key layer
+#define ___________________FKEY1___________________
+#define ___________________FKEY2___________________ */
+#define ___________________CRKBD_FKEY3_____________ ___________________FVAN_3__________________
+#define ___________________CRKBD_FKEY4_____________ ___________________CRKBD4__________________
+
+/* CRKBD adjust layer
+#define ___________________ADJST1__________________ */
+#define ___________________CRKBD_ADJST2____________ KC_LTOG,KC_LHUI,KC_LSAI,KC_LVAI,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+#define ___________________CRKBD_ADJST3____________ KC_LMOD, KC_LHUD, KC_LSAD, KC_LVAD, KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+#define ___________________CRKBD_ADJST4____________ ___________________CRKBD4__________________
+
+// CRKBD arrow layer
+#define ___________________ARROW1__________________ KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGDN, KC_UP, KC_PGUP, KC_NO, KC_NO
+#define ___________________ARROW2__________________ KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_NO,KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO
+#define ___________________ARROW3__________________ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+#define ___________________ARROW4__________________ ___________________CRKBD4__________________
+
+// clang-format on
diff --git a/users/yet-another-developer/.gitignore b/users/yet-another-developer/.gitignore
new file mode 100644
index 00000000000..d815569141f
--- /dev/null
+++ b/users/yet-another-developer/.gitignore
@@ -0,0 +1,2 @@
+secrets.c
+secrets.h
\ No newline at end of file
diff --git a/users/yet-another-developer/README.md b/users/yet-another-developer/README.md
new file mode 100644
index 00000000000..3e528bcf5d3
--- /dev/null
+++ b/users/yet-another-developer/README.md
@@ -0,0 +1,7 @@
+# User Space for yet-another-developer
+
+
+## Reference / Inspiration
+ - /u/kuchosauronad0
+ - /u/drashna
+ - /u/not-quite-neo
\ No newline at end of file
diff --git a/users/yet-another-developer/combo.c b/users/yet-another-developer/combo.c
new file mode 100644
index 00000000000..b4e8e84ae51
--- /dev/null
+++ b/users/yet-another-developer/combo.c
@@ -0,0 +1,27 @@
+#include "combo.h"
+
+void process_combo_event(uint8_t combo_index, bool pressed){
+ switch(combo_index) {
+ case ZV_COPY:
+ if (pressed) {
+ tap_code16(LCTL(KC_C));
+ }
+ break;
+ case XV_CUT:
+ if (pressed) {
+ tap_code16(LCTL(KC_X));
+ }
+ break;
+
+ case CV_PASTE:
+ if (pressed) {
+ tap_code16(LCTL(KC_V));
+ }
+ break;
+ case QP_SLEEP:
+ if (pressed) {
+ tap_code16(KC_SYSTEM_SLEEP);
+ }
+ break;
+ }
+}
diff --git a/users/yet-another-developer/combo.h b/users/yet-another-developer/combo.h
new file mode 100644
index 00000000000..e2ff09ab5a0
--- /dev/null
+++ b/users/yet-another-developer/combo.h
@@ -0,0 +1,21 @@
+#pragma once
+#include "quantum.h"
+enum combo_events {
+ ZV_COPY,
+ XV_CUT,
+ CV_PASTE,
+ QP_SLEEP
+};
+
+const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_V, COMBO_END};
+const uint16_t PROGMEM cut_combo[] = {KC_X, KC_V, COMBO_END};
+const uint16_t PROGMEM paste_combo[] = {KC_C, KC_V, COMBO_END};
+const uint16_t PROGMEM sleep_combo[] = {KC_Q, KC_P, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ [ZV_COPY] = COMBO_ACTION(copy_combo),
+ [XV_CUT] = COMBO_ACTION(cut_combo),
+ [CV_PASTE] = COMBO_ACTION(paste_combo),
+ [QP_SLEEP] = COMBO_ACTION(sleep_combo),
+};
+
diff --git a/users/yet-another-developer/config.h b/users/yet-another-developer/config.h
new file mode 100644
index 00000000000..d46d487fe32
--- /dev/null
+++ b/users/yet-another-developer/config.h
@@ -0,0 +1,56 @@
+#pragma once
+
+/* Set Polling rate to 1000Hz */
+#define USB_POLLING_INTERVAL_MS 1
+
+#ifndef ONESHOT_TAP_TOGGLE
+ #define ONESHOT_TAP_TOGGLE 2
+#endif // !ONESHOT_TAP_TOGGLE
+
+#ifndef ONESHOT_TIMEOUT
+ #define ONESHOT_TIMEOUT 2000
+#endif // !ONESHOT_TIMEOUT
+
+#ifndef QMK_KEYS_PER_SCAN
+ #define QMK_KEYS_PER_SCAN 4
+#endif // !QMK_KEYS_PER_SCAN
+
+#if defined(LEADER_ENABLE)
+ #define LEADER_PER_KEY_TIMING
+ #define LEADER_TIMEOUT 250
+#endif // !LEADER_ENABLE
+
+#if defined(COMBO_ENABLE)
+ #define COMBO_COUNT 4
+ #define COMBO_TERM 150
+#endif // !COMBO_ENABLE
+
+#if defined(NKRO_ENABLE)
+ #define FORCE_NKRO
+#endif // !NKRO_ENABLE
+
+// this makes it possible to do rolling combos (zx) with keys that
+// convert to other keys on hold (z becomes ctrl when you hold it,
+// and when this option isn't enabled, z rapidly followed by x
+// actually sends Ctrl-x. That's bad.)
+#define IGNORE_MOD_TAP_INTERRUPT
+#undef PERMISSIVE_HOLD
+//#define TAPPING_FORCE_HOLD
+//#define RETRO_TAPPING
+
+#ifndef TAPPING_TOGGLE
+ #define TAPPING_TOGGLE 1
+#endif
+
+#ifdef TAPPING_TERM
+# undef TAPPING_TERM
+#endif // !TAPPING_TERM
+#if defined(KEYBOARD_ergodash)
+ #define TAPPING_TERM 240
+#else
+ #define TAPPING_TERM 200
+#endif
+
+#define TAP_CODE_DELAY 5 //DEFAULT: 100
+
+#define MACRO_TIMER 5
diff --git a/users/yet-another-developer/leader.c b/users/yet-another-developer/leader.c
new file mode 100644
index 00000000000..3cbbf8d70ee
--- /dev/null
+++ b/users/yet-another-developer/leader.c
@@ -0,0 +1,46 @@
+#include "leader.h"
+
+LEADER_EXTERNS();
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void){
+
+#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
+// run_diablo_macro_check();
+#endif // TAP_DANCE_ENABLE
+
+#ifdef RGBLIGHT_ENABLE
+ matrix_scan_rgb();
+#endif // RGBLIGHT_ENABLE
+
+ LEADER_DICTIONARY() {
+ leading = false;
+ leader_end();
+
+ SEQ_TWO_KEYS(KC_V, KC_Z){
+ // vim: Zoom pane
+ tap_code16(LCTL(KC_W));
+ tap_code16(LSFT(KC_BSLS));
+ }
+
+ SEQ_TWO_KEYS(KC_V, KC_R) {
+ // vim: Substitute and place cursor
+ SEND_STRING(":%s///g" SS_TAP(X_LEFT));
+ tap_code(KC_LEFT);
+ tap_code(KC_LEFT);
+ }
+
+ SEQ_TWO_KEYS(KC_V, KC_T) {
+ // vim: move current pane to new tab
+ tap_code16(LCTL(KC_W));
+ tap_code16(LSFT(KC_T));
+ }
+
+ SEQ_THREE_KEYS(KC_BSPC, KC_BSPC, KC_BSPC){
+ // Reset the keyboard
+ reset_keyboard();
+ }
+ }
+
+ matrix_scan_keymap();
+}
diff --git a/users/yet-another-developer/leader.h b/users/yet-another-developer/leader.h
new file mode 100644
index 00000000000..7ed6c8a82c5
--- /dev/null
+++ b/users/yet-another-developer/leader.h
@@ -0,0 +1,6 @@
+#pragma once
+#include "yet-another-developer.h"
+
+#include "leader.h"
+
+void matrix_scan_user(void);
diff --git a/users/yet-another-developer/process_records.c b/users/yet-another-developer/process_records.c
new file mode 100644
index 00000000000..c7dbd704a0a
--- /dev/null
+++ b/users/yet-another-developer/process_records.c
@@ -0,0 +1,193 @@
+#include "yet-another-developer.h"
+
+uint16_t copy_paste_timer;
+
+__attribute__ ((weak))
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+__attribute__ ((weak))
+bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+// Defines actions for my global custom keycodes. Defined in yet-another-developer.h file
+// Then runs the _keymap's record handier if not processed here
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ // If console is enabled, it will print the matrix position and status of each key pressed
+#ifdef KEYLOGGER_ENABLE
+ #if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_keebio_iris_rev2)
+ xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.row, record->event.key.col, record->event.pressed);
+ #else
+ xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
+ #endif
+#endif //KEYLOGGER_ENABLE
+
+ switch (keycode) {
+ case KC_QWERTY ... KC_UNICODE:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(keycode - KC_QWERTY);
+ }
+ break;
+
+ case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
+ if (!record->event.pressed) {
+ clear_mods();
+ clear_oneshot_mods();
+ send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
+ {
+ send_string_with_delay_P(PSTR(":flash"), TAP_CODE_DELAY);
+ }
+ }
+ break;
+
+ /* Tap Dance */
+ case MC_QT1: // ""
+ if(record->event.pressed){
+ SEND_STRING("\"\"");
+ tap_code(KC_LEFT);
+ }
+ break;
+ case MC_QT2: // ''
+ if(record->event.pressed){
+ SEND_STRING("''");
+ tap_code(KC_LEFT);
+ }
+ break;
+ case MC_QT3: // `'
+ if(record->event.pressed){
+ SEND_STRING("`'");
+ tap_code(KC_LEFT);
+ }
+ break;
+ case MC_PAR: // Parenthesis
+ if(record->event.pressed){
+ SEND_STRING("()");
+ tap_code(KC_LEFT);
+ }
+ break;
+ case MC_CUR: // Curly bracket
+ if(record->event.pressed){
+ SEND_STRING("{}");
+ tap_code(KC_LEFT);
+ }
+ break;
+ case MC_SQR: // Square bracket
+ if(record->event.pressed){
+ SEND_STRING("[]");
+ tap_code(KC_LEFT);
+ }
+ break;
+ case MC_ABR: // Angle bracket
+ if(record->event.pressed){
+ SEND_STRING("<>");
+ tap_code(KC_LEFT);
+ }
+ break;
+ case MCT_NEW: // New Tmux Session
+ if(record->event.pressed){
+ SEND_STRING(":neww");
+ tap_code(KC_ENT);
+ }
+ break;
+ case MCT_SH: // Tmux horizontal split
+ if(record->event.pressed){
+ SEND_STRING("%");
+ }
+ break;
+ case MCT_SV: // Tmux vertical split
+ if(record->event.pressed){
+ SEND_STRING("\"");
+ }
+ break;
+ case MCT_ZM: // Tmux zoom
+ if(record->event.pressed){
+ tap_code(KC_Z);
+ }
+ break;
+ case MCT_SCR: // Tmux scroll mode
+ if(record->event.pressed){
+ tap_code(KC_PGUP);
+ }
+ break;
+ case MCT_UP: // Tmux up
+ break;
+ case MCT_DW: // Tmux down
+ break;
+ case MCT_LFT: // Tmux left
+ break;
+ case MCT_RGT: // Tmux right
+ tap_code(KC_RIGHT);
+ break;
+ case MCV_B: // Vim begin of line
+ if(record->event.pressed){
+ tap_code(KC_0);
+ }
+ break;
+ case MCV_E: // Vim end of line
+ if(record->event.pressed){
+ SEND_STRING(":vsplit");
+ tap_code(KC_ENT);
+ }
+ break;
+ case MCT_F: // Vim for loop
+ if(record->event.pressed){
+ SEND_STRING(":help");
+ tap_code(KC_ENT);
+ }
+ break;
+
+ case VRSN: // Prints firmware version
+ if (record->event.pressed) {
+ send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
+ }
+ break;
+
+
+ case KC_CCCV: // One key copy/paste
+ if (record->event.pressed) {
+ copy_paste_timer = timer_read();
+ } else {
+ if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
+ register_code(KC_LCTL);
+ tap_code(KC_C);
+ unregister_code(KC_LCTL);
+ } else { // Tap, paste
+ register_code(KC_LCTL);
+ tap_code(KC_V);
+ unregister_code(KC_LCTL);
+ }
+ }
+ break;
+#ifdef UNICODE_ENABLE
+ case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
+ if (record->event.pressed) {
+ send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
+ }
+ break;
+ case UC_TABL: // ┬─┬ノ( º _ ºノ)
+ if (record->event.pressed) {
+ send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029");
+ }
+ break;
+ case UC_SHRG: // ¯\_(ツ)_/¯
+ if (record->event.pressed) {
+ send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
+ }
+ break;
+ case UC_DISA: // ಠ_ಠ
+ if (record->event.pressed) {
+ send_unicode_hex_string("0CA0 005F 0CA0");
+ }
+ break;
+#endif // UNICODE_ENABLE
+ }
+
+ return process_record_keymap(keycode, record) &&
+#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
+ process_record_user_rgb(keycode, record) &&
+#endif // RGBLIGHT_ENABLE
+ process_record_secrets(keycode, record);
+}
diff --git a/users/yet-another-developer/process_records.h b/users/yet-another-developer/process_records.h
new file mode 100644
index 00000000000..d4576f541e0
--- /dev/null
+++ b/users/yet-another-developer/process_records.h
@@ -0,0 +1,109 @@
+#pragma once
+#include "yet-another-developer.h"
+
+#if defined(KEYMAP_SAFE_RANGE)
+# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
+#else
+# define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
+#endif
+
+enum userspace_custom_keycodes {
+ VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info
+ KC_QWERTY, // Sets default layer to QWERTY
+ KC_COLEMAK, // Sets default layer to COLEMAK
+ KC_DVORAK, // Sets default layer to DVORAK
+ KC_WORKMAN, // Sets default layer to WORKMAN
+ KC_UNICODE, // Sets default layer to UNICOD
+
+ KC_MAKE, // Run keyboard's customized make command
+ KC_SECRET_1, // test1
+ KC_SECRET_2, // test2
+ KC_SECRET_3, // test3
+ KC_SECRET_4, // test4
+ KC_SECRET_5, // test5
+ KC_CCCV, // Hold to copy, tap to paste
+ KC_NUKE, // NUCLEAR LAUNCH DETECTED!!!
+ UC_FLIP, // (ಠ痊ಠ)┻━┻
+ UC_TABL, // ┬─┬ノ( º _ ºノ)
+ UC_SHRG, // ¯\_(ツ)_/¯
+ UC_DISA, // ಠ_ಠ
+
+ MC_QT1, // ""
+ MC_QT2, // ''
+ MC_QT3, // `'
+ MC_PAR, // Parenthesis
+ MC_CUR, // Curly bracket
+ MC_SQR, // Square bracket
+ MC_ABR, // Angle bracket
+ MCT_NEW, // New Tmux Session
+ MCT_SH, // Tmux horizontal split
+ MCT_SV, // Tmux vertical split
+ MCT_ZM, // Tmux zoom
+ MCT_SCR, // Tmux scroll mode
+ MCT_UP, // Tmux up
+ MCT_DW, // Tmux down
+ MCT_LFT, // Tmux left
+ MCT_RGT, // Tmux right
+ MCV_B, // Vim begin of line
+ MCV_E, // Vim end of line
+ MCT_F, // Vim for loop
+ MCG_A, // Git add
+ MCG_C, // Git commit
+ MCG_P, // Git push
+ MCG_R, // Git revert
+ MCG_L, // Git log
+ MCG_S, // Git status
+
+ NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes
+};
+
+bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
+bool process_record_keymap( uint16_t keycode, keyrecord_t *record);
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define ADJUST MO(_ADJUST)
+#define TG_MODS TG(_MODS)
+#define OS_LWR OSL(_LOWER)
+#define OS_RSE OSL(_RAISE)
+#define OS_UNI OSL(_UNICODE)
+
+#define KC_SEC1 KC_SECRET_1
+#define KC_SEC2 KC_SECRET_2
+#define KC_SEC3 KC_SECRET_3
+#define KC_SEC4 KC_SECRET_4
+#define KC_SEC5 KC_SECRET_5
+
+#define QWERTY KC_QWERTY
+#define DVORAK KC_DVORAK
+#define COLEMAK KC_COLEMAK
+#define WORKMAN KC_WORKMAN
+#define UNICODE KC_UNICODE
+
+#define KC_RESET RESET
+#define KC_RST KC_RESET
+
+#define BK_LWER LT(_LOWER, KC_BSPC)
+#define SP_LWER LT(_LOWER, KC_SPC)
+#define DL_RAIS LT(_RAISE, KC_DEL)
+#define ET_RAIS LT(_RAISE, KC_ENTER)
+
+/* OSM keycodes, to keep things clean and easy to change */
+#define KC_MLSF OSM(MOD_LSFT)
+#define KC_MRSF OSM(MOD_RSFT)
+
+#define OS_LGUI OSM(MOD_LGUI)
+#define OS_RGUI OSM(MOD_RGUI)
+#define OS_LSFT OSM(MOD_LSFT)
+#define OS_RSFT OSM(MOD_RSFT)
+#define OS_LCTL OSM(MOD_LCTL)
+#define OS_RCTL OSM(MOD_RCTL)
+#define OS_LALT OSM(MOD_LALT)
+#define OS_RALT OSM(MOD_RALT)
+#define OS_MEH OSM(MOD_MEH)
+#define OS_HYPR OSM(MOD_HYPR)
+
+#define ALT_APP ALT_T(KC_APP)
+
+#define UC_IRNY UC(0x2E2E)
+#define UC_CLUE UC(0x203D)
diff --git a/users/yet-another-developer/rules.mk b/users/yet-another-developer/rules.mk
new file mode 100644
index 00000000000..597df6d0b93
--- /dev/null
+++ b/users/yet-another-developer/rules.mk
@@ -0,0 +1,50 @@
+SRC += yet-another-developer.c \
+ process_records.c
+
+LINK_TIME_OPTIMIZATION_ENABLE = yes
+SPACE_CADET_ENABLE = no
+
+ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
+ SRC += tap_dances.c
+endif
+
+ifeq ($(strip $(COMBO_ENABLE)), yes)
+ SRC += combo.c
+endif
+
+
+ifeq ($(strip $(LEADER_ENABLE)), yes)
+ SRC += leader.c
+endif
+
+
+ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
+ SRC += secrets.c
+endif
+
+
+ifeq ($(strip $(NO_SECRETS)), yes)
+ OPT_DEFS += -DNO_SECRETS
+endif
+
+
+ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
+ SRC += unicode.c
+endif
+
+
+ifeq ($(strip $(MACROS_ENABLED)), yes)
+ OPT_DEFS += -DMACROS_ENABLED
+endif
+
+
+ifdef CONSOLE_ENABLE
+ ifeq ($(strip $(KEYLOGGER_ENABLE)), yes)
+ OPT_DEFS += -DKEYLOGGER_ENABLE
+ endif
+endif
+
+
+ifeq ($(strip $(MAKE_BOOTLOADER)), yes)
+ OPT_DEFS += -DMAKE_BOOTLOADER
+endif
diff --git a/users/yet-another-developer/tap_dances.c b/users/yet-another-developer/tap_dances.c
new file mode 100644
index 00000000000..66dcc60fa5b
--- /dev/null
+++ b/users/yet-another-developer/tap_dances.c
@@ -0,0 +1,55 @@
+#include "tap_dances.h"
+
+void td_parenthesis (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+// SEND_STRING ("\(");
+ tap_code(KC_QUOT);
+ reset_tap_dance (state);
+ }
+ else if (state->count == 2) {
+ SEND_STRING("()" SS_TAP(X_LEFT));
+ reset_tap_dance (state);
+ }
+ else if (state->count == 3) {
+ SEND_STRING("[]" SS_TAP(X_LEFT));
+ reset_tap_dance (state);
+ }
+ else if (state->count == 4) {
+ SEND_STRING("{}" SS_TAP(X_LEFT));
+ reset_tap_dance (state);
+ }
+ else if (state->count >= 5) {
+ SEND_STRING("<>" SS_TAP(X_LEFT));
+ reset_tap_dance (state);
+ }
+}
+
+void safe_reset(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count >= 3) {
+ // Reset the keyboard if you tap the key more than three times
+ reset_keyboard();
+ reset_tap_dance(state);
+ }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_RESET] = ACTION_TAP_DANCE_FN(safe_reset),
+ [TD_NUM1] = ACTION_TAP_DANCE_DOUBLE(KC_1, KC_4),
+ [TD_NUM2] = ACTION_TAP_DANCE_DOUBLE(KC_2, KC_5),
+ [TD_NUM3] = ACTION_TAP_DANCE_DOUBLE(KC_3, KC_6),
+ [TD_QT1] = ACTION_TAP_DANCE_DOUBLE(KC_QUOT, MC_QT1),
+ [TD_QT2] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_QUOT), MC_QT2),
+ [TD_QT3] = ACTION_TAP_DANCE_DOUBLE(KC_GRV, MC_QT3),
+
+ [TD_EOL] = ACTION_TAP_DANCE_DOUBLE(KC_E, MC_EOL), // end of line
+ [TD_BOL] = ACTION_TAP_DANCE_DOUBLE(KC_A, MC_BOL), // beginning of line
+ [TD_NW] = ACTION_TAP_DANCE_DOUBLE(KC_F, MC_NW), // next word
+ [TD_PW] = ACTION_TAP_DANCE_DOUBLE(KC_B, MC_PW), // pevious word
+ [TD_DW] = ACTION_TAP_DANCE_DOUBLE(KC_W, MC_DW), // pevious word
+
+ [TD_SPC] = ACTION_TAP_DANCE_FN(td_parenthesis), // \(, (), [], {}, <>
+ [TD_PAR] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, MC_PAR), // ()
+ [TD_SQR] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, MC_SQR), // []
+ [TD_CUR] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_LCBR), MC_CUR),// {}
+ [TD_ABR] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_COMM), MC_ABR),//
+};
diff --git a/users/yet-another-developer/tap_dances.h b/users/yet-another-developer/tap_dances.h
new file mode 100644
index 00000000000..8afda817cb4
--- /dev/null
+++ b/users/yet-another-developer/tap_dances.h
@@ -0,0 +1,26 @@
+#pragma once
+#include "yet-another-developer.h"
+
+#ifdef TAP_DANCE_ENABLE
+enum {
+ TD_RESET = 0,
+ TD_SPC, // for special function td_parenthesis testing
+ TD_NUM1, // compact gaming numpad
+ TD_NUM2, //
+ TD_NUM3, //
+ TD_TMX, // tmux control sequence
+ TD_EOL, // end of line
+ TD_BOL, // beginning of line
+ TD_NW, // next word
+ TD_PW, // pevious word
+ TD_DW, // delete word
+ TD_QT1, // single double quote for '
+ TD_QT2, // single double quote for "
+ TD_QT3, // single double quote for `
+ TD_PAR, // single double parenthesis
+ TD_CUR, // single double curly braces
+ TD_SQR, // single double square brackets
+ TD_ABR // single double angle brackets
+};
+#endif // TAP_DANCE_ENABLE
+void td_parenthesis (qk_tap_dance_state_t *state, void *user_data);
diff --git a/users/yet-another-developer/unicode.c b/users/yet-another-developer/unicode.c
new file mode 100644
index 00000000000..8b312deb661
--- /dev/null
+++ b/users/yet-another-developer/unicode.c
@@ -0,0 +1,62 @@
+#include "unicode.h"
+
+//#ifdef UNICODEMAP_ENABLE
+const uint32_t PROGMEM unicode_map[] = {
+ [BANG] = 0x0203D,// ‽
+ [IRONY] = 0x02E2E,// ⸮
+ [DEGREE] = 0x000B0,// °
+ [THINK] = 0x1F914,// 🤔
+ [GRIN] = 0x1F600,// �
+ [MONOCL] = 0x1F9D0,// 🧐
+ [DRUG0] = 0x1F92A,// 🤪
+ [DRUG1] = 0x1F974,// 🥴
+ [CLOWN] = 0x1F921,// 🤡
+ [MNDBLWN] = 0x1F92F,// 🤯
+ [MONEY] = 0x1F911,// 🤑
+ [SHTUP] = 0x1F910,// 🤐
+ [PARTY] = 0x1F973,// 🥳
+ [SMRK] = 0x1F60F,// 😏
+ [WEARY] = 0x1F629,// 😩
+ [UNAMU] = 0x1F612,// 😒
+ [SPY] = 0x1F575,//🕵
+ [DAFUQ] = 0x1F47A,// 👺
+ [FIST0] = 0x1F91B,// 🤛
+ [FIST1] = 0x1F91C,// 🤜
+ [FIST2] = 0x270A, // ✊
+ [FIST3] = 0x1F44A,// 👊
+ [WIFIHAND] = 0x1F44B,// 👋
+ [OKOK] = 0x1F44C,// 👌
+ [EFFU] = 0x1F595,// 🖕
+ [SPOCK] = 0x1F596,// 🖖
+ [INUP] = 0x1F446,// 👆
+ [THDN] = 0x1F44E,// 👎
+ [THUP] = 0x1F44D,// 👍
+ [TUMBLER] = 0x1F943,// 🥃
+ [DRAGON0] = 0x1F409,// 🐉
+ [DRAGON1] = 0x1F432,// 🐲
+ [TIGER0] = 0x1F405,// 🐅
+ [TIGER1] = 0x1F42F,// 🐯
+ [COOL] = 0x1F192,// 🆒
+ [UCHART] = 0x1F4C8,// 📈
+ [DCHART] = 0x1F4C9,// 📉
+ [BCHART] = 0x1F4CA,// 📊
+ [NOPRCY] = 0x1F572,// 🕲
+ [PRCY] = 0x1F571,// 🕱
+ [BBB] = 0x1F171,// 🅱
+ [POO] = 0x1F4A9,// 💩
+ [HUNDR] = 0x1F4AF,// 💯
+ [EGGPL] = 0x1F346,// 🍆
+ [WATER] = 0x1F4A6,// 💦
+ [LIT] = 0x1F525,// 🔥
+ [SNEK] = 0x1F40D,// 🐍
+ [PENGUIN] = 0x1F427,// 🐧
+ [BOAR] = 0x1F417,// 🐗
+ [MONKEY] = 0x1F412,// 🐒
+ [CHICK] = 0x1F425,// 🐥
+ [DASH] = 0x1F4A8,// 💨
+ [DIZZY] = 0x1F4AB,// 💫
+ [KEEB] = 0x1F5AE,// 🖮
+ [HOLE] = 0x1F573,// 🕳
+ [SAUCER] = 0x1F6F8// 🛸
+ };
+//#endif // UNICODEMAP_ENABLE
diff --git a/users/yet-another-developer/unicode.h b/users/yet-another-developer/unicode.h
new file mode 100644
index 00000000000..cb550243eea
--- /dev/null
+++ b/users/yet-another-developer/unicode.h
@@ -0,0 +1,67 @@
+#pragma once
+
+#include "quantum.h"
+
+void send_unicode_hex_string(const char* str);
+
+/* use X(n) to call the */
+#ifdef UNICODEMAP_ENABLE
+enum unicode_name {
+OKOK, //
+BANG, // ‽
+IRONY, // ⸮
+DEGREE, // °
+THINK, // 🤔
+GRIN, // �
+MONOCL, // 🧐
+DRUG0, // 🤪
+DRUG1, // 🥴
+CLOWN, // 🤡
+MNDBLWN, // 🤯
+MONEY, // 🤑
+SHTUP, // 🤐
+PARTY, // 🥳
+SMRK, // 😏
+WEARY, // 😩
+UNAMU, // 😒
+SPY, // 🕵
+DAFUQ, // 👺
+FIST0, // 🤛
+FIST1, // 🤜
+FIST2, // ✊
+FIST3, // 👊
+WIFIHAND, // 👌
+EFFU, // 🖕
+SPOCK, // 🖖
+INUP, // 👆
+THDN, // 👎
+THUP, // 👍
+TUMBLER, // 🥃
+DRAGON0, // 🐉
+DRAGON1, // 🐅
+TIGER0, // 🐅
+TIGER1, // 🐯
+COOL, // 🆒
+UCHART, // 📈
+DCHART, // 📉
+BCHART, // 📊
+NOPRCY, // 🕲
+PRCY, // 🕱
+BBB, // 🅱
+POO, // 💩
+HUNDR, // 💯
+EGGPL, // 🍆
+WATER, // 💦
+LIT, // 🔥
+SNEK, // 🐍
+PENGUIN, // 🐧
+BOAR, // 🐗
+MONKEY, // 🐒
+CHICK, // 🐥
+DASH, // 💨
+DIZZY, // 💫
+KEEB, // 🖮
+HOLE, // 🕳
+SAUCER // 🛸
+};
+#endif
diff --git a/users/yet-another-developer/wrappers.h b/users/yet-another-developer/wrappers.h
new file mode 100644
index 00000000000..cd21032a4ec
--- /dev/null
+++ b/users/yet-another-developer/wrappers.h
@@ -0,0 +1,166 @@
+#pragma once
+#include "yet-another-developer.h"
+
+/*
+Since our quirky block definitions are basically a list of comma separated
+arguments, we need a wrapper in order for these definitions to be
+expanded before being used as arguments to the LAYOUT_xxx macro.
+*/
+#if (!defined(LAYOUT) && defined(KEYMAP))
+# define LAYOUT KEYMAP
+#endif
+
+// clang-format off
+
+#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+#define LAYOUT_ortho_5x14_wrapper(...) LAYOUT_ortho_5x14(__VA_ARGS__)
+
+/* ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- */
+#define LAYOUT_ergodash_pretty( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, R43, R44, R45, R46, \
+ L36, R30, \
+ L44, L45, L46, R40, R41, R42 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 }, \
+ { R46, R45, R44, R43, R42, R41, R40 } \
+ }
+
+/*
+Blocks for each of the four major keyboard layouts
+Organized so we can quickly adapt and modify all of them
+at once, rather than for each keyboard, one at a time.
+And this allows for much cleaner blocks in the keymaps.
+For instance Tap/Hold for Control on all of the layouts
+
+NOTE: These are all the same length. If you do a search/replace
+ then you need to add/remove underscores to keep the
+ lengths consistent.
+*/
+
+#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T
+#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G
+#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P
+#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN
+#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH
+
+
+#ifdef TAP_DANCE_ENABLE
+ #define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G
+ #define _________________COLEMAK_L2________________ KC_BOL, KC_R, KC_S, KC_T, KC_D
+ #define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+ #define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
+ #define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O
+ #define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH
+#else
+ #define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G
+ #define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D
+ #define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+ #define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
+ #define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O
+ #define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH
+#endif
+
+
+
+
+#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
+#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I
+#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
+
+#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L
+#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S
+#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z
+
+
+#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B
+#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G
+#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V
+
+#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN
+#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I
+#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH
+
+// #define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT
+// #define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B
+// #define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q
+
+// #define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U
+// #define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O // KC_I
+// #define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z
+
+
+#ifdef UNICODE_ENABLE
+#define _______________UNICODE_L1__________________ UC_DISA,UC_DISA, UC_DISA, UC_DISA, UC_DISA
+#define _______________UNICODE_L2__________________ UC_DISA,UC_DISA, UC_DISA, UC_DISA, UC_DISA
+#define _______________UNICODE_L3__________________ UC_DISA,UC_DISA, UC_DISA, UC_DISA, UC_DISA
+
+#define _______________UNICODE_R1__________________ UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG
+#define _______________UNICODE_R2__________________ UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG
+#define _______________UNICODE_R3__________________ UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG
+#endif
+
+#ifdef UNICODEMAP_ENABLE
+#define _______________UNICODE_L1__________________ X(SMRK), X(THINK), X(CLOWN), X(HUNDR), X(BANG)
+#define _______________UNICODE_L2__________________ X(GRIN), X(MONKEY), X(OKOK), X(EGGPL), X(LIT)
+#define _______________UNICODE_L3__________________ X(WEARY), X(UNAMU), X(EFFU), X(MONOCL), X(IRONY)
+
+#define _______________UNICODE_R1__________________ X(DRUG0), X(THUP), X(INUP), X(DIZZY), X(COOL)
+#define _______________UNICODE_R2__________________ X(FIST0), X(FIST2),X(FIST3),X(FIST1), X(OKOK)
+#define _______________UNICODE_R3__________________ X(MNDBLWN), X(THDN), X(SPOCK),X(HOLE), X(DASH)
+#endif
+
+#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5
+#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0
+#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
+#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
+
+#define ___________________BLANK___________________ _______, _______, _______, _______, _______
+
+
+#define _________________LOWER_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
+#define _________________LOWER_L2__________________ _________________FUNC_LEFT_________________
+#define _________________LOWER_L3__________________ _________________FUNC_RIGHT________________
+
+#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
+#define _________________LOWER_R2__________________ OS_UNI, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR
+#define _________________LOWER_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+
+
+
+#define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________
+#define _________________RAISE_L2__________________ ___________________BLANK___________________
+#define _________________RAISE_L3__________________ ___________________BLANK___________________
+
+#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________
+#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC
+#define _________________RAISE_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+
+
+
+#define _________________ADJUST_L1_________________ ___________________BLANK___________________
+#define _________________ADJUST_L2_________________ _________________FUNC_LEFT_________________
+#define _________________ADJUST_L3_________________ _______, QWERTY, COLEMAK, DVORAK, WORKMAN
+
+#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5
+#define _________________ADJUST_R2_________________ _________________FUNC_RIGHT________________
+#define _________________ADJUST_R3_________________ KC_MUTE, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT
+
+// clang-format on
diff --git a/users/yet-another-developer/yet-another-developer.c b/users/yet-another-developer/yet-another-developer.c
new file mode 100644
index 00000000000..b729c062194
--- /dev/null
+++ b/users/yet-another-developer/yet-another-developer.c
@@ -0,0 +1,160 @@
+#include "quantum.h"
+#include "yet-another-developer.h"
+
+userspace_config_t userspace_config;
+
+#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
+ #define YAD_UNICODE_MODE UC_WIN
+#else
+// set to 2 for UC_WIN, set to 4 for UC_WINC
+ #define YAD_UNICODE_MODE 2
+#endif
+
+
+bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed) {
+ static uint16_t this_timer;
+ if (pressed) {
+ this_timer = timer_read();
+ } else {
+ if (timer_elapsed(this_timer) < TAPPING_TERM) {
+ tap_code(code);
+ } else {
+ register_code(mod_code);
+ tap_code(code);
+ unregister_code(mod_code);
+ }
+ }
+ return false;
+}
+
+bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer) {
+ if (pressed) {
+ this_timer = timer_read();
+ } else {
+ if (timer_elapsed(this_timer) < TAPPING_TERM) {
+ tap_code(code);
+ } else {
+ register_code(mod_code);
+ tap_code(code);
+ unregister_code(mod_code);
+ }
+ }
+ return false;
+}
+
+// Add reconfigurable functions here, for keymap customization
+// This allows for a global, userspace functions, and continued
+// customization of the keymap. Use _keymap instead of _user
+// functions in the keymaps
+__attribute__ ((weak))
+void matrix_init_keymap(void) {}
+
+// Call user matrix init, set default RGB colors and then
+// call the keymap's init function
+void matrix_init_user(void) {
+ userspace_config.raw = eeconfig_read_user();
+
+ #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
+ set_unicode_input_mode(YAD_UNICODE_MODE);
+ get_unicode_input_mode();
+ #endif //UNICODE_ENABLE
+
+ matrix_init_keymap();
+}
+
+__attribute__((weak))
+void keyboard_post_init_keymap(void) {}
+
+void keyboard_post_init_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ keyboard_post_init_rgb();
+#endif
+ keyboard_post_init_keymap();
+}
+
+__attribute__((weak))
+void suspend_power_down_keymap(void) {}
+
+void suspend_power_down_user(void) {
+ suspend_power_down_keymap();
+}
+
+__attribute__((weak))
+void suspend_wakeup_init_keymap(void) {}
+
+void suspend_wakeup_init_user(void) {
+ suspend_wakeup_init_keymap();
+}
+
+__attribute__((weak))
+void matrix_scan_keymap(void) {}
+
+__attribute__ ((weak))
+void matrix_scan_user(void){
+
+#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
+// run_diablo_macro_check();
+#endif // TAP_DANCE_ENABLE
+
+#ifdef RGBLIGHT_ENABLE
+ matrix_scan_rgb();
+#endif // RGBLIGHT_ENABLE
+
+ matrix_scan_keymap();
+}
+
+__attribute__((weak))
+layer_state_t layer_state_set_keymap(layer_state_t state) {
+ return state;
+}
+
+// on layer change, no matter where the change was initiated
+// Then runs keymap's layer change check
+layer_state_t layer_state_set_user(layer_state_t state) {
+ state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
+#ifdef RGBLIGHT_ENABLE
+ state = layer_state_set_rgb(state);
+#endif // RGBLIGHT_ENABLE
+ return layer_state_set_keymap(state);
+}
+
+__attribute__((weak))
+layer_state_t default_layer_state_set_keymap(layer_state_t state) {
+ return state;
+}
+
+// Runs state check and changes underglow color and animation
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ state = default_layer_state_set_keymap(state);
+#if 0
+#ifdef RGBLIGHT_ENABLE
+ state = default_layer_state_set_rgb(state);
+#endif // RGBLIGHT_ENABLE
+#endif
+ return state;
+}
+
+__attribute__ ((weak))
+void led_set_keymap(uint8_t usb_led) {}
+
+// Any custom LED code goes here.
+// So far, I only have keyboard specific code,
+// So nothing goes here.
+void led_set_user(uint8_t usb_led) {
+ led_set_keymap(usb_led);
+}
+
+__attribute__ ((weak))
+void eeconfig_init_keymap(void) {}
+
+void eeconfig_init_user(void) {
+ userspace_config.raw = 0;
+ userspace_config.rgb_layer_change = true;
+ eeconfig_update_user(userspace_config.raw);
+ #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
+ set_unicode_input_mode(YAD_UNICODE_MODE);
+ get_unicode_input_mode();
+ #else
+ eeprom_update_byte(EECONFIG_UNICODEMODE, YAD_UNICODE_MODE);
+ #endif
+}
diff --git a/users/yet-another-developer/yet-another-developer.h b/users/yet-another-developer/yet-another-developer.h
new file mode 100644
index 00000000000..e0d02f707f9
--- /dev/null
+++ b/users/yet-another-developer/yet-another-developer.h
@@ -0,0 +1,87 @@
+#pragma once
+#include "quantum.h"
+#include "version.h"
+#include "eeprom.h"
+#include "wrappers.h"
+#include "process_records.h"
+
+#ifdef TAP_DANCE_ENABLE
+ #include "tap_dances.h"
+ #define KC_TMX TD(TD_TMX) // tap1: 't' tap2: +b
+ #define KC_EOL TD(TD_EOL) // tap1: 'e' tap2: +e
+ #define KC_BOL TD(TD_BOL) // tap1: 'a' tap2: +a
+ #define KC_NW TD(TD_NW) // tap1: 'f' tap2: +f
+ #define KC_PW TD(TD_PW) // tap1: 'b' tap2: +b
+ #define KC_DW TD(TD_DW) // tap1: 'w' tap2: +w
+#endif //!TAP_DANCE_ENABLE
+#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
+ #include "rgb_stuff.h"
+#endif
+#if defined(UNICODEMAP_ENABLE) || defined(UNICODE_ENABLE)
+ #include "unicode.h"
+#endif //!UNICODE_ENABLE
+
+#define MC_BOL LCTL(KC_A) // jump to beginning of line
+#define MC_EOL LCTL(KC_E) // jump to end of line
+#define MC_NW LALT(KC_F) // next word
+#define MC_PW LALT(KC_B) // previous word
+#define MC_DW LCTL(KC_W) // delete word
+
+/* Define layer names */
+enum userspace_layers {
+ _QWERTY = 0,
+ _NUMLOCK = 0,
+ _COLEMAK,
+ _DVORAK,
+ _WORKMAN,
+ _UNICODE,
+ _MODS, /* layer 8 */
+ _MACROS,
+ _MEDIA,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed);
+bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer);
+void matrix_init_keymap(void);
+void suspend_power_down_keymap(void);
+void suspend_wakeup_init_keymap(void);
+void matrix_scan_keymap(void);
+layer_state_t layer_state_set_keymap(layer_state_t state);
+layer_state_t default_layer_state_set_keymap(layer_state_t state);
+void led_set_keymap(uint8_t usb_led);
+void eeconfig_init_keymap(void);
+
+typedef union {
+ uint32_t raw;
+ struct {
+ bool rgb_layer_change :1;
+ bool is_overwatch :1;
+ bool nuke_switch :1;
+ uint8_t unicode_mod :4;
+ bool swapped_numbers :1;
+ };
+} userspace_config_t;
+
+extern userspace_config_t userspace_config;
+
+/*
+Custom Keycodes for Diablo 3 layer
+But since TD() doesn't work when tap dance is disabled
+We use custom codes here, so we can substitute the right stuff
+*/
+#ifdef TAP_DANCE_ENABLE
+#define KC_D3_1 TD(TD_D3_1)
+#define KC_D3_2 TD(TD_D3_2)
+#define KC_D3_3 TD(TD_D3_3)
+#define KC_D3_4 TD(TD_D3_4)
+#else // TAP_DANCE_ENABLE
+#define KC_D3_1 KC_1
+#define KC_D3_2 KC_2
+#define KC_D3_3 KC_3
+#define KC_D3_4 KC_4
+#endif // TAP_DANCE_ENABLE
+
+
diff --git a/util/linux_install.sh b/util/linux_install.sh
index dca0110a5de..c54a8062341 100755
--- a/util/linux_install.sh
+++ b/util/linux_install.sh
@@ -77,6 +77,7 @@ elif grep ID /etc/os-release | grep -q 'arch\|manjaro'; then
gcc \
git \
python \
+ python-pip \
unzip \
wget \
zip
@@ -213,4 +214,4 @@ else
fi
# Global install tasks
-pip3 install -r ${util_dir}/../requirements.txt
+pip3 install --user -r ${util_dir}/../requirements.txt
diff --git a/util/rules_cleaner.sh b/util/rules_cleaner.sh
new file mode 100755
index 00000000000..ac27c2b09ba
--- /dev/null
+++ b/util/rules_cleaner.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# This script finds all rules.mk files in keyboards/ subdirectories,
+# and deletes the build option filesize impacts from them.
+
+# Print an error message with the word "ERROR" in red.
+echo_error() {
+ echo -e "[\033[0;91mERROR\033[m]: $1"
+}
+
+# If we've been started from util/, we want to be in qmk_firmware/
+[[ "$PWD" == *util ]] && cd ..
+
+# The root qmk_firmware/ directory should have a subdirectory called quantum/
+if [ ! -d "quantum" ]; then
+ echo_error "Could not detect the QMK firmware directory!"
+ echo_error "Are you sure you're in the right place?"
+ exit 1
+fi
+
+# Set the inplace editing parameter for sed.
+# macOS/BSD sed expects a file extension immediately following -i.
+set_sed_i() {
+ sed_i=(-i)
+
+ case $(uname -a) in
+ *Darwin*) sed_i=(-i "")
+ esac
+}
+set_sed_i
+
+# Exclude keyamps/ directories
+files=$(find keyboards -type f -name 'rules.mk' -not \( -path '*/keymaps*' -prune \))
+
+# Edit rules.mk files
+for file in $files; do
+ sed "${sed_i[@]}" -e "s/(+[0-9].*)$//g" "$file"
+done
+
+echo "Cleaned up rules.mk files."
diff --git a/util/travis_build.sh b/util/travis_build.sh
index 2bc1ccd62f1..225c8548f52 100755
--- a/util/travis_build.sh
+++ b/util/travis_build.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-# if docker is installed - call make within the qmk docker image
+# if docker is installed - patch calls to within the qmk docker image
if command -v docker >/dev/null; then
function make() {
docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@"
@@ -52,14 +52,6 @@ if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then
fi
done
fi
- # Check and run python tests if necessary
- PFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -E -e '^(lib/python/)' -e '^(bin/qmk)' | wc -l)
- if [ $PFM -gt 0 -o "$BRANCH" = "master" ]; then
- echo
- echo "Running python tests."
- docker run --rm -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container 'bin/qmk pytest'
- : $((exit_code = $exit_code + $?))
- fi
fi
exit $exit_code
fi
diff --git a/util/travis_test.sh b/util/travis_test.sh
index e6a50ac1658..9b7402c2824 100644
--- a/util/travis_test.sh
+++ b/util/travis_test.sh
@@ -1,29 +1,45 @@
#!/bin/bash
+# if docker is installed - patch calls to within the qmk docker image
+if command -v docker >/dev/null; then
+ function make() {
+ docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@"
+ }
+ function qmk() {
+ docker run --rm -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container bin/qmk "$@"
+ }
+fi
+
TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}"
TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}"
# test force push
#TRAVIS_COMMIT_RANGE="c287f1bfc5c8...81f62atc4c1d"
-NUM_IMPACTING_CHANGES=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ecv '^(docs/)')
BRANCH=$(git rev-parse --abbrev-ref HEAD)
+CHANGES=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE})
+
+NUM_CORE_CHANGES=$(echo "$CHANGES" | grep -Ecv -e '^(docs/)' -e '^(keyboards/)' -e '^(layouts/)')
+NUM_PY_CHANGES=$(echo "$CHANGES" | grep -Ec -e '^(lib/python/)' -e '^(bin/qmk)')
if [[ "$TRAVIS_COMMIT_MESSAGE" == *"[skip test]"* ]]; then
echo "Skipping due to commit message"
exit 0
fi
-if [ "$BRANCH" != "master" ] && [ "$NUM_IMPACTING_CHANGES" == "0" ]; then
- echo "Skipping due to changes not impacting tests"
- exit 0
+exit_code=0
+
+if [ "$BRANCH" == "master" ] || [ "$NUM_CORE_CHANGES" != "0" ]; then
+ echo "Running tests."
+ make test:all
+ : $((exit_code = $exit_code + $?))
+
fi
-# if docker is installed - call make within the qmk docker image
-if command -v docker >/dev/null; then
- function make() {
- docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@"
- }
+if [ "$BRANCH" == "master" ] || [ "$NUM_PY_CHANGES" != "0" ]; then
+ echo "Running python tests."
+ qmk pytest
+ : $((exit_code = $exit_code + $?))
fi
-make test:all
+exit $exit_code