diff --git a/bin/qmk b/bin/qmk
index c34365bed43..dfd31e20068 100755
--- a/bin/qmk
+++ b/bin/qmk
@@ -38,7 +38,7 @@ with open('requirements.txt', 'r') as fd:
# Figure out our version
command = ['git', 'describe', '--abbrev=6', '--dirty', '--always', '--tags']
-result = subprocess.run(command, text=True, capture_output=True)
+result = subprocess.run(command, universal_newlines=True, capture_output=True)
if result.returncode == 0:
os.environ['QMK_VERSION'] = 'QMK ' + result.stdout.strip()
diff --git a/docs/config_options.md b/docs/config_options.md
index 3012dcdcff5..3be294db894 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -89,7 +89,7 @@ This is a C header file that is one of the first things included, and will persi
* mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
* `#define LOCKING_RESYNC_ENABLE`
* tries to keep switch state consistent with keyboard LED state
-* `#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))`
+* `#define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)`
* key combination that allows the use of magic commands (useful for debugging)
* `#define USB_MAX_POWER_CONSUMPTION`
* sets the maximum power (in mA) over USB for the device (default: 500)
@@ -248,6 +248,9 @@ There are a few different ways to set handedness for split keyboards (listed in
* `#define MATRIX_COL_PINS_RIGHT {
}`
* If you want to specify a different pinout for the right half than the left half, you can define `MATRIX_ROW_PINS_RIGHT`/`MATRIX_COL_PINS_RIGHT`. Currently, the size of `MATRIX_ROW_PINS` must be the same as `MATRIX_ROW_PINS_RIGHT` and likewise for the definition of columns.
+* `#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }`
+ * If you want to specify a different direct pinout for the right half than the left half, you can define `DIRECT_PINS_RIGHT`. Currently, the size of `DIRECT_PINS` must be the same as `DIRECT_PINS_RIGHT`.
+
* `#define RGBLED_SPLIT { 6, 6 }`
* See [RGB Light Configuration](#rgb-light-configuration)
diff --git a/docs/faq_build.md b/docs/faq_build.md
index 23d6a67021a..3fe358edaf2 100644
--- a/docs/faq_build.md
+++ b/docs/faq_build.md
@@ -19,7 +19,11 @@ Note that running `make` with `sudo` is generally ***not*** a good idea, and you
### Linux `udev` Rules
On Linux, you'll need proper privileges to access the MCU. You can either use
-`sudo` when flashing firmware, or place these files in `/etc/udev/rules.d/`.
+`sudo` when flashing firmware, or place these files in `/etc/udev/rules.d/`. Once added run the following:
+```console
+sudo udevadm control --reload-rules
+sudo udevadm trigger
+```
**/etc/udev/rules.d/50-atmel-dfu.rules:**
```
@@ -43,21 +47,41 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", MODE:="0666"
```
+**/etc/udev/rules.d/55-catalina.rules:**
+```
+# ModemManager should ignore the following devices
+ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"
+```
+
+**Note:** ModemManager filtering only works when not in strict mode, the following commands can update that settings:
+```console
+sudo sed -i 's/--filter-policy=strict/--filter-policy=default/' /lib/systemd/system/ModemManager.service
+sudo systemctl daemon-reload
+sudo systemctl restart ModemManager
+```
+
+**/etc/udev/rules.d/56-dfu-util.rules:**
+```
+# stm32duino
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", MODE:="0666"
+# Generic stm32
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666"
+```
+
### Serial device is not detected in bootloader mode on Linux
Make sure your kernel has appropriate support for your device. If your device uses USB ACM, such as
Pro Micro (Atmega32u4), make sure to include `CONFIG_USB_ACM=y`. Other devices may require `USB_SERIAL` and any of its sub options.
## Unknown Device for DFU Bootloader
-If you're using Windows to flash your keyboard, and you are running into issues, check the Device Manager. If you see an "Unknown Device" when the keyboard is in "bootloader mode", then you may have a driver issue.
+Issues encountered when flashing keyboards on Windows are most often due to having the wrong drivers installed for the bootloader.
-Re-running the installation script for MSYS2 may help (eg run `./util/qmk_install.sh` from MSYS2/WSL) or reinstalling the QMK Toolbox may fix the issue.
+Re-running the installation script for MSYS2 may help (eg run `util/qmk_install.sh` from MSYS2/WSL) or reinstalling the QMK Toolbox may fix the issue. Alternatively, you can download and run the [`qmk_driver_installer`](https://github.com/qmk/qmk_driver_installer) package.
-If that doesn't work, then you may need to grab the [Zadig Utility](https://zadig.akeo.ie/). Download this, find the device in question, and select the `WinUSB` option, and hit "Reinstall driver". Once you've done that, try flashing your board, again. If that doesn't work, try all of the options, until one works.
+If that doesn't work, then you may need to grab the [Zadig Utility](https://zadig.akeo.ie/). Download this, and run it on the system. Then, you will need to reset your board into bootloader mode. After that, locate the device in question. If the device doesn't show up in the list (or nothing shows up in the list), you may need to enable the `List all devices` option in the `Options` menu.
-?> There isn't a best option for which driver should be used here. Some options work better on some systems than others. libUSB and WinUSB seem to be the best options here.
-
-If the bootloader doesn't show up in the list for devices, you may need to enable the "List all devices" option in the `Options` menu, and then find the bootloader in question.
+From here, you will need to know what type of controller the board is using. You may see it listed in the Device Manager as `ATmega32U4` device (which is an AVR board), or an `STM32` device (Which is an ARM board). For AVR boards, use `libusb-win32` for the driver. For ARM boards, use the `WinUSB` driver. Once the correct driver type has been selected, click on the `Replace Driver` button, unplug your board, plug it back in, and reset it again.
## WINAVR is Obsolete
diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md
index 26a5078ca09..64c663076ba 100644
--- a/docs/feature_backlight.md
+++ b/docs/feature_backlight.md
@@ -73,8 +73,10 @@ To change the behaviour of the backlighting, `#define` these in your `config.h`:
## Backlight On State
-Most backlight circuits are driven by an N-channel MOSFET or NPN transistor. This means that to turn the transistor *on* and light the LEDs, you must drive the backlight pin, connected to the gate or base, *low*.
-Sometimes, however, a P-channel MOSFET, or a PNP transistor is used. In this case you must `#define BACKLIGHT_ON_STATE 1`, so that when the transistor is on, the pin is driven *high* instead.
+Most backlight circuits are driven by an N-channel MOSFET or NPN transistor. This means that to turn the transistor *on* and light the LEDs, you must drive the backlight pin, connected to the gate or base, *high*.
+Sometimes, however, a P-channel MOSFET, or a PNP transistor is used. In this case, when the transistor is on, the pin is driven *low* instead.
+
+This functionality is configured at the keyboard level with the `BACKLIGHT_ON_STATE` define.
## Multiple backlight pins
diff --git a/docs/feature_command.md b/docs/feature_command.md
index deabedc1c3f..a4ce3f5aea0 100644
--- a/docs/feature_command.md
+++ b/docs/feature_command.md
@@ -16,36 +16,36 @@ To use Command, hold down the key combination defined by the `IS_COMMAND()` macr
If you would like to change the key assignments for Command, `#define` these in your `config.h` at either the keyboard or keymap level. All keycode assignments here must omit the `KC_` prefix.
-|Define |Default |Description |
-|------------------------------------|---------------------------------------------------------------------------|------------------------------------------------|
-|`IS_COMMAND()` |(get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
|The key combination to activate Command |
-|`MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS` |`true` |Set default layer with the Function row |
-|`MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS` |`true` |Set default layer with the number keys |
-|`MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM`|`false` |Set default layer with `MAGIC_KEY_LAYER0..9` |
-|`MAGIC_KEY_DEBUG` |`D` |Toggle debugging over serial |
-|`MAGIC_KEY_DEBUG_MATRIX` |`X` |Toggle key matrix debugging |
-|`MAGIC_KEY_DEBUG_KBD` |`K` |Toggle keyboard debugging |
-|`MAGIC_KEY_DEBUG_MOUSE` |`M` |Toggle mouse debugging |
-|`MAGIC_KEY_CONSOLE` |`C` |Enable the Command console |
-|`MAGIC_KEY_VERSION` |`V` |Print the running QMK version to the console |
-|`MAGIC_KEY_STATUS` |`S` |Print the current keyboard status to the console|
-|`MAGIC_KEY_HELP` |`H` |Print Command help to the console |
-|`MAGIC_KEY_HELP_ALT` |`SLASH` |Print Command help to the console (alternate) |
-|`MAGIC_KEY_LAYER0` |`0` |Make layer 0 the default layer |
-|`MAGIC_KEY_LAYER0_ALT` |`GRAVE` |Make layer 0 the default layer (alternate) |
-|`MAGIC_KEY_LAYER1` |`1` |Make layer 1 the default layer |
-|`MAGIC_KEY_LAYER2` |`2` |Make layer 2 the default layer |
-|`MAGIC_KEY_LAYER3` |`3` |Make layer 3 the default layer |
-|`MAGIC_KEY_LAYER4` |`4` |Make layer 4 the default layer |
-|`MAGIC_KEY_LAYER5` |`5` |Make layer 5 the default layer |
-|`MAGIC_KEY_LAYER6` |`6` |Make layer 6 the default layer |
-|`MAGIC_KEY_LAYER7` |`7` |Make layer 7 the default layer |
-|`MAGIC_KEY_LAYER8` |`8` |Make layer 8 the default layer |
-|`MAGIC_KEY_LAYER9` |`9` |Make layer 9 the default layer |
-|`MAGIC_KEY_BOOTLOADER` |`B` |Jump to bootloader |
-|`MAGIC_KEY_BOOTLOADER_ALT` |`ESC` |Jump to bootloader (alternate) |
-|`MAGIC_KEY_LOCK` |`CAPS` |Lock the keyboard so nothing can be typed |
-|`MAGIC_KEY_EEPROM` |`E` |Print stored EEPROM config to the console |
-|`MAGIC_KEY_EEPROM_CLEAR` |`BSPACE` |Clear the EEPROM |
-|`MAGIC_KEY_NKRO` |`N` |Toggle N-Key Rollover (NKRO) |
-|`MAGIC_KEY_SLEEP_LED` |`Z` |Toggle LED when computer is sleeping |
+|Define |Default |Description |
+|------------------------------------|--------------------------------|------------------------------------------------|
+|`IS_COMMAND()` |`(get_mods() == MOD_MASK_SHIFT)`|The key combination to activate Command |
+|`MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS` |`true` |Set default layer with the Function row |
+|`MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS` |`true` |Set default layer with the number keys |
+|`MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM`|`false` |Set default layer with `MAGIC_KEY_LAYER0..9` |
+|`MAGIC_KEY_DEBUG` |`D` |Toggle debugging over serial |
+|`MAGIC_KEY_DEBUG_MATRIX` |`X` |Toggle key matrix debugging |
+|`MAGIC_KEY_DEBUG_KBD` |`K` |Toggle keyboard debugging |
+|`MAGIC_KEY_DEBUG_MOUSE` |`M` |Toggle mouse debugging |
+|`MAGIC_KEY_CONSOLE` |`C` |Enable the Command console |
+|`MAGIC_KEY_VERSION` |`V` |Print the running QMK version to the console |
+|`MAGIC_KEY_STATUS` |`S` |Print the current keyboard status to the console|
+|`MAGIC_KEY_HELP` |`H` |Print Command help to the console |
+|`MAGIC_KEY_HELP_ALT` |`SLASH` |Print Command help to the console (alternate) |
+|`MAGIC_KEY_LAYER0` |`0` |Make layer 0 the default layer |
+|`MAGIC_KEY_LAYER0_ALT` |`GRAVE` |Make layer 0 the default layer (alternate) |
+|`MAGIC_KEY_LAYER1` |`1` |Make layer 1 the default layer |
+|`MAGIC_KEY_LAYER2` |`2` |Make layer 2 the default layer |
+|`MAGIC_KEY_LAYER3` |`3` |Make layer 3 the default layer |
+|`MAGIC_KEY_LAYER4` |`4` |Make layer 4 the default layer |
+|`MAGIC_KEY_LAYER5` |`5` |Make layer 5 the default layer |
+|`MAGIC_KEY_LAYER6` |`6` |Make layer 6 the default layer |
+|`MAGIC_KEY_LAYER7` |`7` |Make layer 7 the default layer |
+|`MAGIC_KEY_LAYER8` |`8` |Make layer 8 the default layer |
+|`MAGIC_KEY_LAYER9` |`9` |Make layer 9 the default layer |
+|`MAGIC_KEY_BOOTLOADER` |`B` |Jump to bootloader |
+|`MAGIC_KEY_BOOTLOADER_ALT` |`ESC` |Jump to bootloader (alternate) |
+|`MAGIC_KEY_LOCK` |`CAPS` |Lock the keyboard so nothing can be typed |
+|`MAGIC_KEY_EEPROM` |`E` |Print stored EEPROM config to the console |
+|`MAGIC_KEY_EEPROM_CLEAR` |`BSPACE` |Clear the EEPROM |
+|`MAGIC_KEY_NKRO` |`N` |Toggle N-Key Rollover (NKRO) |
+|`MAGIC_KEY_SLEEP_LED` |`Z` |Toggle LED when computer is sleeping |
diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md
index 95aceab2238..4addb1bfd0f 100644
--- a/docs/feature_split_keyboard.md
+++ b/docs/feature_split_keyboard.md
@@ -160,6 +160,11 @@ There are some settings that you may need to configure, based on how the hardwar
This allows you to specify a different set of pins for the matrix on the right side. This is useful if you have a board with differently-shaped halves that requires a different configuration (such as Keebio's Quefrency).
+```c
+#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }
+```
+
+This allows you to specify a different set of direct pins for the right side.
```c
#define RGBLIGHT_SPLIT
diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md
index b5e5218b093..73e0471a012 100644
--- a/docs/feature_tap_dance.md
+++ b/docs/feature_tap_dance.md
@@ -1,22 +1,33 @@
# Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things
-
-
+## Introduction
Hit the semicolon key once, send a semicolon. Hit it twice, rapidly -- send a colon. Hit it three times, and your keyboard's LEDs do a wild dance. That's just one example of what Tap Dance can do. It's one of the nicest community-contributed features in the firmware, conceived and created by [algernon](https://github.com/algernon) in [#451](https://github.com/qmk/qmk_firmware/pull/451). Here's how algernon describes the feature:
With this feature one can specify keys that behave differently, based on the amount of times they have been tapped, and when interrupted, they get handled before the interrupter.
-To make it clear how this is different from `ACTION_FUNCTION_TAP`, let's explore a certain setup! We want one key to send `Space` on single tap, but `Enter` on double-tap.
+## Explanatory Comparison with `ACTION_FUNCTION_TAP`
+`ACTION_FUNCTION_TAP` can offer similar functionality to Tap Dance, but it's worth noting some important differences. To do this, let's explore a certain setup! We want one key to send `Space` on single-tap, but `Enter` on double-tap.
-With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be sent first. Thus, `SPC a` will result in `a SPC` being sent, if they are typed within `TAPPING_TERM`. With the tap dance feature, that'll come out as `SPC a`, correctly.
+With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be sent first. Thus, `SPC a` will result in `a SPC` being sent, if `SPC` and `a` are both typed within `TAPPING_TERM`. With the Tap Dance feature, that'll come out correctly as `SPC a` (even if both `SPC` and `a` are typed within the `TAPPING_TERM`.
-The implementation hooks into two parts of the system, to achieve this: into `process_record_quantum()`, and the matrix scan. We need the latter to be able to time out a tap sequence even when a key is not being pressed, so `SPC` alone will time out and register after `TAPPING_TERM` time.
+To achieve this correct handling of interrupts, the implementation of Tap Dance hooks into two parts of the system: `process_record_quantum()`, and the matrix scan. These two parts are explained below, but for now the point to note is that we need the latter to be able to time out a tap sequence even when a key is not being pressed. That way, `SPC` alone will time out and register after `TAPPING_TERM` time.
-But lets start with how to use it, first!
+## How to Use Tap Dance
+But enough of the generalities; lets look at how to actually use Tap Dance!
-First, you will need `TAP_DANCE_ENABLE=yes` in your `rules.mk`, because the feature is disabled by default. This adds a little less than 1k to the firmware size. Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that - similar to `F()`, takes a number, which will later be used as an index into the `tap_dance_actions` array.
+First, you will need `TAP_DANCE_ENABLE=yes` in your `rules.mk`, because the feature is disabled by default. This adds a little less than 1k to the firmware size.
-This array specifies what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options:
+Optionally, you might want to set a custom `TAPPING_TERM` time by adding something like this in you `config.h`:
+
+```
+#define TAPPING_TERM 175
+```
+
+The `TAPPING_TERM` time is the maximum time allowed between taps of your Tap Dance key, and is measured in milliseconds. For example, if you used the above `#define` statement and set up a Tap Dance key that sends `Space` on single-tap and `Enter` on double-tap, then this key will send `ENT` only if you tap this key twice in less than 175ms. If you tap the key, wait more than 175ms, and tap the key again you'll end up sending `SPC SPC` instead.
+
+Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that - similar to `F()` - takes a number, which will later be used as an index into the `tap_dance_actions` array.
+
+After this, you'll want to use the `tap_dance_actions` array to specify what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options:
* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held.
* `ACTION_TAP_DANCE_DUAL_ROLE(kc, layer)`: Sends the `kc` keycode when tapped once, or moves to `layer`. (this functions like the `TO` layer keycode).
@@ -24,17 +35,22 @@ This array specifies what actions shall be taken when a tap-dance key is in acti
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
* `ACTION_TAP_DANCE_FN_ADVANCED_TIME(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn, tap_specific_tapping_term)`: This functions identically to the `ACTION_TAP_DANCE_FN_ADVANCED` function, but uses a custom tapping term for it, instead of the predefined `TAPPING_TERM`.
-The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
+The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
!> Keep in mind that only [basic keycodes](keycodes_basic.md) are supported here. Custom keycodes are not supported.
-And that's the bulk of it!
+Similar to the first option, the second option is good for simple layer-switching cases.
-And now, on to the explanation of how it works!
+For more complicated cases, use the third or fourth options (examples of each are listed below).
-The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and the timer.
+Finally, the fifth option is particularly useful if your non-Tap-Dance keys start behaving weirdly after adding the code for your Tap Dance keys. The likely problem is that you changed the `TAPPING_TERM` time to make your Tap Dance keys easier for you to use, and that this has changed the way your other keys handle interrupts.
-This means that you have `TAPPING_TERM` time to tap the key again, you do not have to input all the taps within that timeframe. This allows for longer tap counts, with minimal impact on responsiveness.
+## Implementation Details
+Well, that's the bulk of it! You should now be able to work through the examples below, and to develop your own Tap Dance functionality. But if you want a deeper understanding of what's going on behind the scenes, then read on for the explanation of how it all works!
+
+The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and reset the timer.
+
+This means that you have `TAPPING_TERM` time to tap the key again; you do not have to input all the taps within a single `TAPPING_TERM` timeframe. This allows for longer tap counts, with minimal impact on responsiveness.
Our next stop is `matrix_scan_tap_dance()`. This handles the timeout of tap-dance keys.
@@ -397,3 +413,111 @@ qk_tap_dance_action_t tap_dance_actions[] = {
```
Wrap each tapdance keycode in `TD()` when including it in your keymap, e.g. `TD(ALT_LP)`.
+
+### Example 6: Using tap dance for momentary-layer-switch and layer-toggle keys
+
+Tap Dance can be used to mimic MO(layer) and TG(layer) functionality. For this example, we will set up a key to function as `KC_QUOT` on single-tap, as `MO(_MY_LAYER)` on single-hold, and `TG(_MY_LAYER)` on double-tap.
+
+The first step is to include the following code towards the beginning of your `keymap.c`:
+
+```
+typedef struct {
+ bool is_press_action;
+ int state;
+} tap;
+
+//Define a type for as many tap dance states as you need
+enum {
+ SINGLE_TAP = 1,
+ SINGLE_HOLD = 2,
+ DOUBLE_TAP = 3
+};
+
+enum {
+ QUOT_LAYR = 0 //Our custom tap dance key; add any other tap dance keys to this enum
+};
+
+//Declare the functions to be used with your tap dance key(s)
+
+//Function associated with all tap dances
+int cur_dance (qk_tap_dance_state_t *state);
+
+//Functions associated with individual tap dances
+void ql_finished (qk_tap_dance_state_t *state, void *user_data);
+void ql_reset (qk_tap_dance_state_t *state, void *user_data);
+
+//Declare variable to track which layer is active
+int active_layer;
+```
+
+The above code is similar to that used in previous examples. The one point to note is that you need to declare a variable to keep track of what layer is currently the active layer. We'll see why shortly.
+
+Towards the bottom of your `keymap.c`, include the following code:
+
+```
+//Update active_layer
+uint32_t layer_state_set_user(uint32_t state) {
+ switch (biton32(state)) {
+ case 1:
+ active_layer = 1;
+ break;
+ case 2:
+ active_layer = 2;
+ break;
+ case 3:
+ active_layer = 3;
+ break;
+ default:
+ active_layer = 0;
+ break;
+ }
+ return state;
+}
+
+//Determine the current tap dance state
+int cur_dance (qk_tap_dance_state_t *state) {
+ if (state->count == 1) {
+ if (!state->pressed) {return SINGLE_TAP;}
+ else return SINGLE_HOLD;
+ } else if (state->count == 2) {return DOUBLE_TAP;}
+ else return 8;
+}
+
+//Initialize tap structure associated with example tap dance key
+static tap ql_tap_state = {
+ .is_press_action = true,
+ .state = 0
+};
+
+//Functions that control what our tap dance key does
+void ql_finished (qk_tap_dance_state_t *state, void *user_data) {
+ ql_tap_state.state = cur_dance(state);
+ switch (ql_tap_state.state) {
+ case SINGLE_TAP: tap_code(KC_QUOT); break;
+ case SINGLE_HOLD: layer_on(_MY_LAYER); break;
+ case DOUBLE_TAP:
+ if (active_layer==_MY_LAYER) {layer_off(_MY_LAYER);}
+ else layer_on(_MY_LAYER);
+ }
+}
+
+void ql_reset (qk_tap_dance_state_t *state, void *user_data) {
+ if (ql_tap_state.state==SINGLE_HOLD) {layer_off(_MY_LAYER);}
+ ql_tap_state.state = 0;
+}
+
+//Associate our tap dance key with its functionality
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [QUOT_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275)
+};
+```
+
+The is where the real logic of our tap dance key gets worked out. Since `layer_state_set_user()` is called on any layer switch, we use it to update `active_layer`. Our example is assuming that your `keymap.c` includes 4 layers, so adjust the switch statement here to fit your actual number of layers.
+
+The use of `cur_dance()` and `ql_tap_state` mirrors the above examples.
+
+The `case:SINGLE_TAP` in `ql_finished` is similar to the above examples. The `case:SINGLE_HOLD` works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `case:DOUBLE_TAP` works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`.
+
+`tap_dance_actions[]` works similar to the above examples. Note that I used `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` instead of `ACTION_TAP_DANCE_FN_ADVANCED()`. This is because I like my `TAPPING_TERM` to be short (~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here.
+
+Finally, to get this tap dance key working, be sure to include `TD(QUOT_LAYR)` in your `keymaps[]`.
diff --git a/docs/newbs_building_firmware_configurator.md b/docs/newbs_building_firmware_configurator.md
index 0ad609304a4..becceb6693e 100644
--- a/docs/newbs_building_firmware_configurator.md
+++ b/docs/newbs_building_firmware_configurator.md
@@ -4,7 +4,7 @@ The [QMK Configurator](https://config.qmk.fm) is an online graphical user interf
?> **Please follow these steps in order.**
-Watch the [Video Tutorial](https://youtu.be/7RH-1pAbjvw)
+Watch the [Video Tutorial](https://youtu.be/tx54jkRC9ZY)
The QMK Configurator works best with Chrome/Firefox.
diff --git a/docs/newbs_flashing.md b/docs/newbs_flashing.md
index fa0a5e2ba5b..c8a30dba05b 100644
--- a/docs/newbs_flashing.md
+++ b/docs/newbs_flashing.md
@@ -223,7 +223,7 @@ For the PJRC devices (Teensy's), when you're ready to compile and flash your fir
For example, if your keymap is named "xyverz" and you're building a keymap for an Ergodox or Ergodox EZ, you'll use this command:
- make erdogox_ez:xyverz:teensy
+ make ergodox_ez:xyverz:teensy
Once the firmware finishes compiling, it will output something like this:
diff --git a/drivers/issi/is31fl3731.c b/drivers/issi/is31fl3731.c
index c9155f5a373..30c7dd0530c 100644
--- a/drivers/issi/is31fl3731.c
+++ b/drivers/issi/is31fl3731.c
@@ -71,10 +71,10 @@ uint8_t g_twi_transfer_buffer[20];
// buffers and the transfers in IS31FL3731_write_pwm_buffer() but it's
// probably not worth the extra complexity.
uint8_t g_pwm_buffer[DRIVER_COUNT][144];
-bool g_pwm_buffer_update_required = false;
+bool g_pwm_buffer_update_required[DRIVER_COUNT] = { false };
uint8_t g_led_control_registers[DRIVER_COUNT][18] = { { 0 }, { 0 } };
-bool g_led_control_registers_update_required = false;
+bool g_led_control_registers_update_required[DRIVER_COUNT] = { false };
// This is the bit pattern in the LED control registers
// (for matrix A, add one to register for matrix B)
@@ -204,7 +204,7 @@ void IS31FL3731_set_color( int index, uint8_t red, uint8_t green, uint8_t blue )
g_pwm_buffer[led.driver][led.r - 0x24] = red;
g_pwm_buffer[led.driver][led.g - 0x24] = green;
g_pwm_buffer[led.driver][led.b - 0x24] = blue;
- g_pwm_buffer_update_required = true;
+ g_pwm_buffer_update_required[led.driver] = true;
}
}
@@ -220,12 +220,12 @@ void IS31FL3731_set_led_control_register( uint8_t index, bool red, bool green, b
{
is31_led led = g_is31_leds[index];
- uint8_t control_register_r = (led.r - 0x24) / 8;
- uint8_t control_register_g = (led.g - 0x24) / 8;
- uint8_t control_register_b = (led.b - 0x24) / 8;
- uint8_t bit_r = (led.r - 0x24) % 8;
- uint8_t bit_g = (led.g - 0x24) % 8;
- uint8_t bit_b = (led.b - 0x24) % 8;
+ uint8_t control_register_r = (led.r - 0x24) / 8;
+ uint8_t control_register_g = (led.g - 0x24) / 8;
+ uint8_t control_register_b = (led.b - 0x24) / 8;
+ uint8_t bit_r = (led.r - 0x24) % 8;
+ uint8_t bit_g = (led.g - 0x24) % 8;
+ uint8_t bit_b = (led.b - 0x24) % 8;
if ( red ) {
g_led_control_registers[led.driver][control_register_r] |= (1 << bit_r);
@@ -243,28 +243,26 @@ void IS31FL3731_set_led_control_register( uint8_t index, bool red, bool green, b
g_led_control_registers[led.driver][control_register_b] &= ~(1 << bit_b);
}
- g_led_control_registers_update_required = true;
+ g_led_control_registers_update_required[led.driver] = true;
}
-void IS31FL3731_update_pwm_buffers( uint8_t addr1, uint8_t addr2 )
+void IS31FL3731_update_pwm_buffers( uint8_t addr, uint8_t index )
{
- if ( g_pwm_buffer_update_required )
+ if ( g_pwm_buffer_update_required[index] )
{
- IS31FL3731_write_pwm_buffer( addr1, g_pwm_buffer[0] );
- IS31FL3731_write_pwm_buffer( addr2, g_pwm_buffer[1] );
+ IS31FL3731_write_pwm_buffer( addr, g_pwm_buffer[index] );
}
- g_pwm_buffer_update_required = false;
+ g_pwm_buffer_update_required[index] = false;
}
-void IS31FL3731_update_led_control_registers( uint8_t addr1, uint8_t addr2 )
+void IS31FL3731_update_led_control_registers( uint8_t addr, uint8_t index )
{
- if ( g_led_control_registers_update_required )
+ if ( g_led_control_registers_update_required[index] )
{
for ( int i=0; i<18; i++ )
{
- IS31FL3731_write_register(addr1, i, g_led_control_registers[0][i] );
- IS31FL3731_write_register(addr2, i, g_led_control_registers[1][i] );
+ IS31FL3731_write_register( addr, i, g_led_control_registers[index][i] );
}
}
}
diff --git a/drivers/issi/is31fl3731.h b/drivers/issi/is31fl3731.h
index f354a12db2b..968638f86af 100644
--- a/drivers/issi/is31fl3731.h
+++ b/drivers/issi/is31fl3731.h
@@ -44,8 +44,8 @@ void IS31FL3731_set_led_control_register( uint8_t index, bool red, bool green, b
// (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 IS31FL3731_update_pwm_buffers( uint8_t addr1, uint8_t addr2 );
-void IS31FL3731_update_led_control_registers( uint8_t addr1, uint8_t addr2 );
+void IS31FL3731_update_pwm_buffers( uint8_t addr, uint8_t index );
+void IS31FL3731_update_led_control_registers( uint8_t addr, uint8_t index );
#define C1_1 0x24
#define C1_2 0x25
diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c
index a54f5fadc3b..2b3dd7ff2fc 100644
--- a/drivers/oled/oled_driver.c
+++ b/drivers/oled/oled_driver.c
@@ -321,7 +321,7 @@ void oled_render(void) {
// Send render data chunk after rotating
if (I2C_WRITE_REG(I2C_DATA, &temp_buffer[0], OLED_BLOCK_SIZE) != I2C_STATUS_SUCCESS) {
- print("oled_render data failed\n");
+ print("oled_render90 data failed\n");
return;
}
}
@@ -393,6 +393,11 @@ void oled_write_char(const char data, bool invert) {
return;
}
+ if (data == '\r') {
+ oled_advance_page(false);
+ return;
+ }
+
// copy the current render buffer to check for dirty after
static uint8_t oled_temp_buffer[OLED_FONT_WIDTH];
memcpy(&oled_temp_buffer, oled_cursor, OLED_FONT_WIDTH);
diff --git a/keyboards/1upkeyboards/1up60hse/keymaps/default/keymap.c b/keyboards/1upkeyboards/1up60hse/keymaps/default/keymap.c
index 39473f60673..97bece94b32 100644
--- a/keyboards/1upkeyboards/1up60hse/keymaps/default/keymap.c
+++ b/keyboards/1upkeyboards/1up60hse/keymaps/default/keymap.c
@@ -17,6 +17,19 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Qwerty
+ * ,-----------------------------------------------------------------------------------------.
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace |
+ * |-----------------------------------------------------------------------------------------+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
+ * |-----------------------------------------------------------------------------------------+
+ * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
+ * |-----------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift |
+ * |-----------------------------------------------------------------------------------------+
+ * | Ctrl | GUI | Alt | Space | Alt | GUI | L1 | Ctrl |
+ * `-----------------------------------------------------------------------------------------'
+ */
[0] = LAYOUT_60_ansi(
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_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,
@@ -25,6 +38,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
),
+ /* Function
+ * ,-----------------------------------------------------------------------------------------.
+ * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Del |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | Up | | | | | | | |PrtSc|ScrLk|Pause| |
+ * |-----------------------------------------------------------------------------------------+
+ * | |Left |Down |Right| | | | | | Ins |Home |PgUp | |
+ * |-----------------------------------------------------------------------------------------+
+ * | |VolUp|VolDn|VolMu| | | | | | End |PgDn | |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | | | L2 | | |
+ * `-----------------------------------------------------------------------------------------'
+ */
[1] = LAYOUT_60_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_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
@@ -33,6 +59,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS
),
+ /* RGB
+ * ,-----------------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | Reset |
+ * |-----------------------------------------------------------------------------------------+
+ * | BL Tog |BLInc|BLDec|BLStp| | | | | | | | | | |
+ * |-----------------------------------------------------------------------------------------+
+ * | RGB Tog |Mode |Hue I|Sat I|Val I|Spd I|Plain|Breat|Rnbow|Swirl| | | |
+ * |-----------------------------------------------------------------------------------------+
+ * | |RMode|Hue D|Sat D|Val D|Spd D|Snake|Knigh|Xmas |Gradi| | |
+ * |-----------------------------------------------------------------------------------------+
+ * | | | | | | | | |
+ * `-----------------------------------------------------------------------------------------'
+ */
[2] = LAYOUT_60_ansi(
KC_TRNS, 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,
BL_TOGG, BL_INC, BL_DEC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/config.h b/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/config.h
new file mode 100644
index 00000000000..65293382cf6
--- /dev/null
+++ b/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2018 Chuck "@vosechu" Lauer Vose
+ *
+ * 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/1upkeyboards/1up60hse/keymaps/vosechu/keymap.c b/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/keymap.c
new file mode 100644
index 00000000000..d5b9f901a48
--- /dev/null
+++ b/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/keymap.c
@@ -0,0 +1,46 @@
+/* Copyright 2018 Chuck "@vosechu" Lauer Vose
+ *
+ * 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 SPACEFN LT(1, KC_SPC)
+#define CTL_GRV CTL_T(KC_GRV)
+#define ALT_TAB ALT_T(KC_TAB)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_ansi(
+ 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_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_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 ,
+ CTL_GRV , ALT_TAB , KC_LGUI , SPACEFN , KC_RALT , KC_RGUI , MO(1) , KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_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_TRNS , KC_TRNS , KC_UP , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_PSCR , KC_SLCK , KC_PAUS , KC_TRNS ,
+ KC_TRNS , KC_LEFT , KC_DOWN , KC_RGHT , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_INS , KC_HOME , KC_PGUP , KC_TRNS ,
+ KC_TRNS , KC_VOLU , KC_VOLD , KC_MUTE , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_END , KC_PGDN , KC_TRNS ,
+ KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , MO(2) , KC_TRNS , KC_TRNS
+ ),
+
+ [2] = LAYOUT_60_ansi(
+ KC_TRNS , 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 ,
+ BL_TOGG , BL_INC , BL_DEC , BL_STEP , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
+ RGB_TOG , RGB_MOD , RGB_HUI , RGB_SAI , RGB_VAI , RGB_SPI , RGB_M_P , RGB_M_B , RGB_M_R , RGB_M_SW , KC_TRNS , KC_TRNS , KC_TRNS ,
+ KC_TRNS , RGB_RMOD , RGB_HUD , RGB_SAD , RGB_VAD , RGB_SPD , RGB_M_SN , RGB_M_K , RGB_M_X , RGB_M_G , KC_TRNS , KC_TRNS ,
+ KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
+ )
+};
diff --git a/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/readme.md b/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/readme.md
new file mode 100644
index 00000000000..97e9453b7c9
--- /dev/null
+++ b/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/readme.md
@@ -0,0 +1,6 @@
+# 1up60hse keymap made by vosechu
+
+Tweaks from default
+
+* Add in SpaceFN so arrows are reachable with just left hand (leaving right free for mousing).
+* Also add tab/grv under the alt/ctrl keys to make those easier to reach.
diff --git a/keyboards/2_milk/2_milk.c b/keyboards/2_milk/2_milk.c
new file mode 100644
index 00000000000..36d50e9c7cc
--- /dev/null
+++ b/keyboards/2_milk/2_milk.c
@@ -0,0 +1,16 @@
+/* Copyright 2019 Sebastian Williams
+ *
+ * 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 "2_milk.h"
diff --git a/keyboards/2_milk/2_milk.h b/keyboards/2_milk/2_milk.h
new file mode 100644
index 00000000000..8f294817f91
--- /dev/null
+++ b/keyboards/2_milk/2_milk.h
@@ -0,0 +1,26 @@
+/* Copyright 2019 Sebastian Williams
+ *
+ * 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 \
+) { \
+ { K00 }, \
+ { K01 } \
+}
diff --git a/keyboards/2_milk/config.h b/keyboards/2_milk/config.h
new file mode 100644
index 00000000000..9e7228b17e5
--- /dev/null
+++ b/keyboards/2_milk/config.h
@@ -0,0 +1,41 @@
+/* Copyright 2019 Sebastian Williams
+ *
+ * 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 0xB195
+#define DEVICE_VER 0x0001
+#define MANUFACTURER rionlion100
+#define PRODUCT 2% Milk
+#define DESCRIPTION A milk themed 2% Keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 2
+#define MATRIX_COLS 1
+
+/* Milk default pinout */
+#define DIRECT_PINS { \
+ {D4}, \
+ {C6} \
+}
+#define UNUSED_PINS
+
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN B6
+#define RGBLED_NUM 1
+#endif
diff --git a/keyboards/2_milk/info.json b/keyboards/2_milk/info.json
new file mode 100644
index 00000000000..0acf002f96e
--- /dev/null
+++ b/keyboards/2_milk/info.json
@@ -0,0 +1,15 @@
+{
+ "keyboard_name": "2% Milk",
+ "keyboard_folder": "2_milk",
+ "url": "",
+ "maintainer": "rionlion100",
+ "width": 1,
+ "height": 2,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 2,
+ "layout": [ {"x": 0, "y": 0 }, {"x": 0, "y": 1 }]
+ }
+ }
+}
+
diff --git a/keyboards/2_milk/keymaps/binary/keymap.c b/keyboards/2_milk/keymaps/binary/keymap.c
new file mode 100644
index 00000000000..c8df8e9ff02
--- /dev/null
+++ b/keyboards/2_milk/keymaps/binary/keymap.c
@@ -0,0 +1,8 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_P0,
+ KC_P1
+ )
+};
diff --git a/keyboards/2_milk/keymaps/binary/readme.md b/keyboards/2_milk/keymaps/binary/readme.md
new file mode 100644
index 00000000000..5ebcbd3e587
--- /dev/null
+++ b/keyboards/2_milk/keymaps/binary/readme.md
@@ -0,0 +1,2 @@
+# Binary keymap
+0 and 1 that's it
diff --git a/keyboards/2_milk/keymaps/copypasta/keymap.c b/keyboards/2_milk/keymaps/copypasta/keymap.c
new file mode 100644
index 00000000000..b9b8005a0f0
--- /dev/null
+++ b/keyboards/2_milk/keymaps/copypasta/keymap.c
@@ -0,0 +1,9 @@
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ RCTL(KC_C),
+ RCTL(KC_V)
+ )
+};
diff --git a/keyboards/2_milk/keymaps/copypasta/readme.md b/keyboards/2_milk/keymaps/copypasta/readme.md
new file mode 100644
index 00000000000..6c2f4e8fbf8
--- /dev/null
+++ b/keyboards/2_milk/keymaps/copypasta/readme.md
@@ -0,0 +1,2 @@
+# Copy/Paste Keymap
+
diff --git a/keyboards/2_milk/keymaps/default/keymap.c b/keyboards/2_milk/keymaps/default/keymap.c
new file mode 100644
index 00000000000..1f327eee9ab
--- /dev/null
+++ b/keyboards/2_milk/keymaps/default/keymap.c
@@ -0,0 +1,8 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_Z,
+ KC_X
+ )
+};
diff --git a/keyboards/2_milk/keymaps/default/readme.md b/keyboards/2_milk/keymaps/default/readme.md
new file mode 100644
index 00000000000..4482bce34a0
--- /dev/null
+++ b/keyboards/2_milk/keymaps/default/readme.md
@@ -0,0 +1,2 @@
+# Default keymap for 2% Milk
+
diff --git a/keyboards/2_milk/keymaps/emoji/keymap.c b/keyboards/2_milk/keymaps/emoji/keymap.c
new file mode 100644
index 00000000000..9b84df5c2c5
--- /dev/null
+++ b/keyboards/2_milk/keymaps/emoji/keymap.c
@@ -0,0 +1,31 @@
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ DISSA,
+ SHRUG
+};
+
+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;
+};
diff --git a/keyboards/2_milk/keymaps/emoji/readme.md b/keyboards/2_milk/keymaps/emoji/readme.md
new file mode 100644
index 00000000000..980be7dd5c3
--- /dev/null
+++ b/keyboards/2_milk/keymaps/emoji/readme.md
@@ -0,0 +1,2 @@
+# Emoji Keymap
+
diff --git a/keyboards/2_milk/keymaps/excessbread/keymap.c b/keyboards/2_milk/keymaps/excessbread/keymap.c
new file mode 100644
index 00000000000..a01b47f271d
--- /dev/null
+++ b/keyboards/2_milk/keymaps/excessbread/keymap.c
@@ -0,0 +1,8 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_LGUI,
+ KC_F11
+ )
+};
diff --git a/keyboards/2_milk/keymaps/excessbread/readme.md b/keyboards/2_milk/keymaps/excessbread/readme.md
new file mode 100644
index 00000000000..a6535e62cf7
--- /dev/null
+++ b/keyboards/2_milk/keymaps/excessbread/readme.md
@@ -0,0 +1,2 @@
+# ExcessBread's keymap
+requested by excessbread
diff --git a/keyboards/2_milk/keymaps/mouse/keymap.c b/keyboards/2_milk/keymaps/mouse/keymap.c
new file mode 100644
index 00000000000..a8ba44fb46c
--- /dev/null
+++ b/keyboards/2_milk/keymaps/mouse/keymap.c
@@ -0,0 +1,8 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_BTN1,
+ KC_BTN2
+ )
+};
diff --git a/keyboards/2_milk/keymaps/mouse/readme.md b/keyboards/2_milk/keymaps/mouse/readme.md
new file mode 100644
index 00000000000..8ecb99eddbb
--- /dev/null
+++ b/keyboards/2_milk/keymaps/mouse/readme.md
@@ -0,0 +1,2 @@
+# left and right mouse buttons
+requested by WanderingVagrant
diff --git a/keyboards/2_milk/readme.md b/keyboards/2_milk/readme.md
new file mode 100644
index 00000000000..ce0f216bba8
--- /dev/null
+++ b/keyboards/2_milk/readme.md
@@ -0,0 +1,19 @@
+# 2% Milk
+
+
+
+A 2% Meme board themed around a milk carton
+
+Keyboard Maintainer: [Rionlion100](https://github.com/rionlion100)
+Hardware Availability: [Open Source](https://github.com/Rionlion100/Spaceboards/tree/master/Keyboards/2%25%20Milk)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make 2_milk: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).
+
+### Credits
++ Case design by Soft
++ PCB by PyroL
++ Name by jetpacktuxedo
diff --git a/keyboards/2_milk/rules.mk b/keyboards/2_milk/rules.mk
new file mode 100644
index 00000000000..73f55f95385
--- /dev/null
+++ b/keyboards/2_milk/rules.mk
@@ -0,0 +1,34 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+F_USB = $(F_CPU)
+
+# Bootloader
+BOOTLOADER = caterina
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# Build Options
+# comment out to disable the options.
+#
+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 = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled
+AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
+RGBLIGHT_ENABLE = yes # This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/40percentclub/luddite/keymaps/default/keymap.c b/keyboards/40percentclub/luddite/keymaps/default/keymap.c
index 4d6ae0d524e..fa3a83ba878 100644
--- a/keyboards/40percentclub/luddite/keymaps/default/keymap.c
+++ b/keyboards/40percentclub/luddite/keymaps/default/keymap.c
@@ -1,7 +1,5 @@
#include QMK_KEYBOARD_H
-extern keymap_config_t keymap_config;
-
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
@@ -15,18 +13,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_60_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_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_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL , KC_LGUI , KC_LALT , KC_SPC , KC_RALT , KC_RGUI , MO(_FN1) , KC_RCTL
+ 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_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_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT , KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL
),
[_FN1] = LAYOUT_60_ansi(
- KC_GESC, 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_BSPC, \
- RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
- BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- KC_GRV, _______, _______, _______, _______, _______, _______, _______
+ KC_GESC, 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_BSPC,
+ RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_GRV, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/40percentclub/luddite/keymaps/tzarc/config.h b/keyboards/40percentclub/luddite/keymaps/tzarc/config.h
new file mode 100644
index 00000000000..f8feb798d42
--- /dev/null
+++ b/keyboards/40percentclub/luddite/keymaps/tzarc/config.h
@@ -0,0 +1,6 @@
+#undef RGBLED_NUM
+#define RGBLED_NUM 16
+
+#define QMK_ESC_OUTPUT F4
+#define QMK_ESC_INPUT D3
+#define QMK_LED B0
diff --git a/keyboards/40percentclub/luddite/keymaps/tzarc/keymap.c b/keyboards/40percentclub/luddite/keymaps/tzarc/keymap.c
new file mode 100644
index 00000000000..dfa1c499c29
--- /dev/null
+++ b/keyboards/40percentclub/luddite/keymaps/tzarc/keymap.c
@@ -0,0 +1,30 @@
+#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 _BASE 0
+#define _FN1 1
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_60_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_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_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT , KC_SPC, KC_RALT, KC_APP, MO(_FN1), KC_RCTL
+ ),
+
+ [_FN1] = LAYOUT_60_ansi(
+ KC_GESC, 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_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_GRV, _______, _______, _______, _______, KC_RGUI, _______, _______
+ )
+};
diff --git a/keyboards/40percentclub/luddite/keymaps/tzarc/rules.mk b/keyboards/40percentclub/luddite/keymaps/tzarc/rules.mk
new file mode 100644
index 00000000000..0613ea8667c
--- /dev/null
+++ b/keyboards/40percentclub/luddite/keymaps/tzarc/rules.mk
@@ -0,0 +1 @@
+BOOTLOADER = qmk-dfu
diff --git a/keyboards/40percentclub/luddite/luddite.h b/keyboards/40percentclub/luddite/luddite.h
index 1ba743e9e77..5b8b95fea46 100644
--- a/keyboards/40percentclub/luddite/luddite.h
+++ b/keyboards/40percentclub/luddite/luddite.h
@@ -3,7 +3,7 @@
#include "quantum.h"
#define LAYOUT_60_ansi( \
- K00, K01, K02, K03, K04, K05, K06, K07, K10, K11, K12, K13, K14, K15, \
+ K00, K01, K02, K03, K04, K05, K06, K07, K10, K11, K12, K13, K14, K15, \
K16, K17, K20, K21, K22, K23, K24, K25, K26, K27, K30, K31, K32, K33, \
K34, K35, K36, K37, K40, K41, K42, K43, K44, K45, K46, K47, K50, \
K51, K52, K53, K54, K55, K56, K57, K60, K61, K62, K63, K64, \
@@ -18,4 +18,3 @@
{ K60, K61, K62, K63, K64, K65, K66, K67 }, \
{ K70, K71, K72, K73, K74 }, \
}
-
diff --git a/keyboards/ai03/lunar/keymaps/muzfuz/keymap.c b/keyboards/ai03/lunar/keymaps/muzfuz/keymap.c
new file mode 100644
index 00000000000..4bbea42af0e
--- /dev/null
+++ b/keyboards/ai03/lunar/keymaps/muzfuz/keymap.c
@@ -0,0 +1,52 @@
+#include QMK_KEYBOARD_H
+
+// Helpful defines
+#define ESC_CTL CTL_T(KC_ESCAPE) // Tap for Esc, hold for Ctrl
+#define FL_KCF LT(1,KC_F)
+#define FL_KCJ LT(1,KC_J)
+#define CMD_ENT LGUI(LSFT(KC_ENT))
+
+enum custom_keycodes {
+ HASHRKT = SAFE_RANGE,
+ CLNEQLS,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT( /* Base */
+ 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_BSLS, KC_BSLS, LGUI(KC_C),
+ 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, LGUI(KC_V),
+ ESC_CTL, KC_A, KC_S, KC_D, FL_KCF, KC_G, KC_H, FL_KCJ, 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, KC_LSFT, KC_UP, KC_PGDN,
+ CMD_ENT, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, MO(2), KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT( /* FL */
+ 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, KC_DEL, KC_VOLU,
+ _______, HASHRKT, _______, KC_LCBR, KC_RCBR, _______, _______, KC_UNDS, KC_PLUS, KC_PIPE, _______, _______, _______, _______, KC_VOLD,
+ _______, CLNEQLS, _______, KC_LBRC, KC_RBRC, _______, _______, KC_MINS, KC_EQL, KC_BSLS, KC_TILD, KC_GRV, _______, KC_HOME,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT( /* FN */
+ RESET, 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_DEL, _______,
+ KC_CAPS, _______, KC_UP, _______, _______, _______, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_VOLD, KC_VOLU, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______,
+ _______, KC_RCTL, KC_RGUI, KC_RALT, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch(keycode) {
+ case HASHRKT:
+ if (record->event.pressed) {
+ SEND_STRING("=>");
+ }
+ break;
+ case CLNEQLS:
+ if (record->event.pressed) {
+ SEND_STRING(":=");
+ }
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/ai03/lunar/keymaps/muzfuz/readme.md b/keyboards/ai03/lunar/keymaps/muzfuz/readme.md
new file mode 100644
index 00000000000..f0fef092352
--- /dev/null
+++ b/keyboards/ai03/lunar/keymaps/muzfuz/readme.md
@@ -0,0 +1,5 @@
+# muzfuz's keymap for Lunar
+
+```shell
+make ai03/lunar:muzfuz:dfu
+```
diff --git a/keyboards/akb/raine/config.h b/keyboards/akb/raine/config.h
index a28fceef2a5..f5a8b84b6ca 100644
--- a/keyboards/akb/raine/config.h
+++ b/keyboards/akb/raine/config.h
@@ -23,8 +23,8 @@ along with this program. If not, see .
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER AKB
-#define PRODUCT Raine M3
-#define DESCRIPTION Raine M3
+#define PRODUCT Raine
+#define DESCRIPTION Raine
/* key matrix size */
#define MATRIX_ROWS 5
diff --git a/keyboards/akb/raine/info.json b/keyboards/akb/raine/info.json
index 0992f86d060..fc699e4774a 100644
--- a/keyboards/akb/raine/info.json
+++ b/keyboards/akb/raine/info.json
@@ -68,10 +68,12 @@
{ "label": "2", "x": 14.25, "y": 3 },
{ "label": "3", "x": 15.25, "y": 3 },
{ "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4},
{ "label": "Alt", "x": 2.25, "y": 4, "w": 1.25 },
{ "label": "SPLEFT", "x": 3.5, "y": 4, "w": 2.25 },
{ "label": "7U", "x": 5.75, "y": 4 },
{ "label": "SPRIGHT", "x": 6.75, "y": 4, "w": 1.75 },
+ { "label": "alt", "x": 8.5, "y": 4},
{ "label": "Menu", "x": 9.5, "y": 4, "w": 1.25 },
{ "x": 11, "y": 4.25 },
{ "x": 12, "y": 4.25 },
diff --git a/keyboards/akb/raine/keymaps/default/keymap.c b/keyboards/akb/raine/keymaps/default/keymap.c
index 80e52528b47..1eecbb041f1 100644
--- a/keyboards/akb/raine/keymaps/default/keymap.c
+++ b/keyboards/akb/raine/keymaps/default/keymap.c
@@ -17,16 +17,16 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- 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_BSPC, KC_NLCK, KC_SLCK, 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_BSPC, KC_PSLS, KC_PAST, KC_PPLS,
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_P7, KC_P8, KC_P9,
- MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_HASH, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_SLSH, KC_LSFT, KC_UP, KC_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_DEL),
+ CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[1] = LAYOUT( /* Second */
- 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_LBRC, KC_RBRC, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET),
+ 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_DEL, KC_NLCK, KC_PSCR, KC_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, KC_HOME, KC_UP, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, _______, _______, KC_LEFT, KC_SLCK, KC_RGHT,
+ _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, _______, _______, _______, KC_END, KC_DOWN, KC_PGDN,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET),
};
diff --git a/keyboards/akb/raine/raine.h b/keyboards/akb/raine/raine.h
index fb5cd48cbe5..ec72a605828 100644
--- a/keyboards/akb/raine/raine.h
+++ b/keyboards/akb/raine/raine.h
@@ -23,11 +23,11 @@ along with this program. If not, see .
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K113, K114, K115, \
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K311, K312, K313, K314, K315, \
- K400, K402, K404, K405, K407, K409, K410, K412, K413, K414, K415 \
+ K400, K401, K402, K404, K405, K407, K408, K409, K410, K412, K413, K414, K415 \
) { \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, KC_NO, K113, K114, K115 }, \
{ K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K311, KC_NO, K312, K313, K314, K315 }, \
- { K400, KC_NO, K402, KC_NO, K404, K405, KC_NO, K407, KC_NO, K409, K410, KC_NO, K412, K413, K414, K415 } \
+ { K400, K401, K402, KC_NO, K404, K405, KC_NO, K407, K408, K409, K410, KC_NO, K412, K413, K414, K415 } \
}
diff --git a/keyboards/alf/x11/info.json b/keyboards/alf/x11/info.json
index ca794f56ce7..54f2da66d12 100644
--- a/keyboards/alf/x11/info.json
+++ b/keyboards/alf/x11/info.json
@@ -1,103 +1,112 @@
{
- "keyboard_name": "QMK80",
- "url": "",
- "maintainer": "qmk",
- "width": 18.25,
- "height": 6.5,
- "layouts": {
- "LAYOUT": {
- "key_count": 88,
- "layout": [
- {"label":"K00", "x":0, "y":0},
- {"label":"K01", "x":2, "y":0},
- {"label":"K02", "x":3, "y":0},
- {"label":"K03", "x":4, "y":0},
- {"label":"K04", "x":5, "y":0},
- {"label":"K05", "x":6.5, "y":0},
- {"label":"K06", "x":7.5, "y":0},
- {"label":"K07", "x":8.5, "y":0},
- {"label":"K08", "x":9.5, "y":0},
- {"label":"K09", "x":11, "y":0},
- {"label":"K0A", "x":12, "y":0},
- {"label":"K0B", "x":13, "y":0},
- {"label":"K0C", "x":14, "y":0},
- {"label":"K60", "x":15.25, "y":0},
- {"label":"K61", "x":16.25, "y":0},
- {"label":"K62", "x":17.25, "y":0},
- {"label":"K10", "x":0, "y":1.5},
- {"label":"K11", "x":1, "y":1.5},
- {"label":"K12", "x":2, "y":1.5},
- {"label":"K13", "x":3, "y":1.5},
- {"label":"K14", "x":4, "y":1.5},
- {"label":"K15", "x":5, "y":1.5},
- {"label":"K16", "x":6, "y":1.5},
- {"label":"K17", "x":7, "y":1.5},
- {"label":"K18", "x":8, "y":1.5},
- {"label":"K19", "x":9, "y":1.5},
- {"label":"K1A", "x":10, "y":1.5},
- {"label":"K1B", "x":11, "y":1.5},
- {"label":"K1C", "x":12, "y":1.5},
- {"label":"K5A", "x":13, "y":1.5, "w":2},
- {"label":"K63", "x":15.25, "y":1.5},
- {"label":"K65", "x":16.25, "y":1.5},
- {"label":"K67", "x":17.25, "y":1.5},
- {"label":"K20", "x":0, "y":2.5, "w":1.5},
- {"label":"K21", "x":1.5, "y":2.5},
- {"label":"K22", "x":2.5, "y":2.5},
- {"label":"K23", "x":3.5, "y":2.5},
- {"label":"K24", "x":4.5, "y":2.5},
- {"label":"K25", "x":5.5, "y":2.5},
- {"label":"K26", "x":6.5, "y":2.5},
- {"label":"K27", "x":7.5, "y":2.5},
- {"label":"K28", "x":8.5, "y":2.5},
- {"label":"K29", "x":9.5, "y":2.5},
- {"label":"K2A", "x":10.5, "y":2.5},
- {"label":"K2B", "x":11.5, "y":2.5},
- {"label":"K2C", "x":12.5, "y":2.5},
- {"label":"K4C", "x":13.5, "y":2.5, "w":1.5},
- {"label":"K64", "x":15.25, "y":2.5},
- {"label":"K66", "x":16.25, "y":2.5},
- {"label":"K68", "x":17.25, "y":2.5},
- {"label":"K30", "x":0, "y":3.5, "w":1.75},
- {"label":"K31", "x":1.75, "y":3.5},
- {"label":"K32", "x":2.75, "y":3.5},
- {"label":"K33", "x":3.75, "y":3.5},
- {"label":"K34", "x":4.75, "y":3.5},
- {"label":"K35", "x":5.75, "y":3.5},
- {"label":"K36", "x":6.75, "y":3.5},
- {"label":"K37", "x":7.75, "y":3.5},
- {"label":"K38", "x":8.75, "y":3.5},
- {"label":"K39", "x":9.75, "y":3.5},
- {"label":"K3A", "x":10.75, "y":3.5},
- {"label":"K3B", "x":11.75, "y":3.5},
- {"label":"K3C", "x":12.75, "y":3.5, "w":2.25},
- {"label":"K40", "x":0, "y":4.5, "w":2.25},
- {"label":"K41", "x":2.25, "y":4.5},
- {"label":"K42", "x":3.25, "y":4.5},
- {"label":"K43", "x":4.25, "y":4.5},
- {"label":"K44", "x":5.25, "y":4.5},
- {"label":"K45", "x":6.25, "y":4.5},
- {"label":"K46", "x":7.25, "y":4.5},
- {"label":"K47", "x":8.25, "y":4.5},
- {"label":"K48", "x":9.25, "y":4.5},
- {"label":"K49", "x":10.25, "y":4.5},
- {"label":"K4A", "x":11.25, "y":4.5},
- {"label":"K4B", "x":12.25, "y":4.5, "w":1.75},
- {"label":"K69", "x":14, "y":4.5},
- {"label":"K58", "x":16.25, "y":4.5},
- {"label":"K50", "x":0, "y":5.5, "w":1.25},
- {"label":"K51", "x":1.25, "y":5.5, "w":1.25},
- {"label":"K52", "x":2.5, "y":5.5, "w":1.25},
- {"label":"K53", "x":3.75, "y":5.5, "w":6.25},
- {"label":"K54", "x":10, "y":5.5, "w":1.25},
- {"label":"K55", "x":11.25, "y":5.5, "w":1.25},
- {"label":"K56", "x":12.5, "y":5.5, "w":1.25},
- {"label":"K57", "x":13.75, "y":5.5, "w":1.25},
- {"label":"K6A", "x":15.25, "y":5.5},
- {"label":"K59", "x":16.25, "y":5.5},
- {"label":"K6B", "x":17.25, "y":5.5}
- ]
- }
+ "keyboard_name": "x11",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 18.25,
+ "height": 6.5,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 88,
+ "layout": [
+ {"label":"K00", "x":0, "y":0},
+ {"label":"K01", "x":2, "y":0},
+ {"label":"K02", "x":3, "y":0},
+ {"label":"K03", "x":4, "y":0},
+ {"label":"K04", "x":5, "y":0},
+ {"label":"K05", "x":6.5, "y":0},
+ {"label":"K06", "x":7.5, "y":0},
+ {"label":"K07", "x":8.5, "y":0},
+ {"label":"K08", "x":9.5, "y":0},
+ {"label":"K09", "x":11, "y":0},
+ {"label":"K0A", "x":12, "y":0},
+ {"label":"K0B", "x":13, "y":0},
+ {"label":"K0C", "x":14, "y":0},
+
+ {"label":"K62", "x":15.25, "y":0},
+ {"label":"K61", "x":16.25, "y":0},
+ {"label":"K60", "x":17.25, "y":0},
+
+ {"label":"K10", "x":0, "y":1.5},
+ {"label":"K11", "x":1, "y":1.5},
+ {"label":"K12", "x":2, "y":1.5},
+ {"label":"K13", "x":3, "y":1.5},
+ {"label":"K14", "x":4, "y":1.5},
+ {"label":"K15", "x":5, "y":1.5},
+ {"label":"K16", "x":6, "y":1.5},
+ {"label":"K17", "x":7, "y":1.5},
+ {"label":"K18", "x":8, "y":1.5},
+ {"label":"K19", "x":9, "y":1.5},
+ {"label":"K1A", "x":10, "y":1.5},
+ {"label":"K1B", "x":11, "y":1.5},
+ {"label":"K1C", "x":12, "y":1.5},
+ {"label":"K5A", "x":13, "y":1.5, "w":2},
+
+ {"label":"K63", "x":15.25, "y":1.5},
+ {"label":"K65", "x":16.25, "y":1.5},
+ {"label":"K67", "x":17.25, "y":1.5},
+
+ {"label":"K20", "x":0, "y":2.5, "w":1.5},
+ {"label":"K21", "x":1.5, "y":2.5},
+ {"label":"K22", "x":2.5, "y":2.5},
+ {"label":"K23", "x":3.5, "y":2.5},
+ {"label":"K24", "x":4.5, "y":2.5},
+ {"label":"K25", "x":5.5, "y":2.5},
+ {"label":"K26", "x":6.5, "y":2.5},
+ {"label":"K27", "x":7.5, "y":2.5},
+ {"label":"K28", "x":8.5, "y":2.5},
+ {"label":"K29", "x":9.5, "y":2.5},
+ {"label":"K2A", "x":10.5, "y":2.5},
+ {"label":"K2B", "x":11.5, "y":2.5},
+ {"label":"K2C", "x":12.5, "y":2.5},
+ {"label":"K4C", "x":13.5, "y":2.5, "w":1.5},
+
+ {"label":"K64", "x":15.25, "y":2.5},
+ {"label":"K66", "x":16.25, "y":2.5},
+ {"label":"K68", "x":17.25, "y":2.5},
+
+ {"label":"K30", "x":0, "y":3.5, "w":1.75},
+ {"label":"K31", "x":1.75, "y":3.5},
+ {"label":"K32", "x":2.75, "y":3.5},
+ {"label":"K33", "x":3.75, "y":3.5},
+ {"label":"K34", "x":4.75, "y":3.5},
+ {"label":"K35", "x":5.75, "y":3.5},
+ {"label":"K36", "x":6.75, "y":3.5},
+ {"label":"K37", "x":7.75, "y":3.5},
+ {"label":"K38", "x":8.75, "y":3.5},
+ {"label":"K39", "x":9.75, "y":3.5},
+ {"label":"K3A", "x":10.75, "y":3.5},
+ {"label":"K3B", "x":11.75, "y":3.5},
+ {"label":"K3C", "x":12.75, "y":3.5, "w":2.25},
+
+ {"label":"K40", "x":0, "y":4.5, "w":2.25},
+ {"label":"K41", "x":2.25, "y":4.5},
+ {"label":"K42", "x":3.25, "y":4.5},
+ {"label":"K43", "x":4.25, "y":4.5},
+ {"label":"K44", "x":5.25, "y":4.5},
+ {"label":"K45", "x":6.25, "y":4.5},
+ {"label":"K46", "x":7.25, "y":4.5},
+ {"label":"K47", "x":8.25, "y":4.5},
+ {"label":"K48", "x":9.25, "y":4.5},
+ {"label":"K49", "x":10.25, "y":4.5},
+ {"label":"K4A", "x":11.25, "y":4.5},
+ {"label":"K4B", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"K69", "x":14, "y":4.5},
+
+ {"label":"K58", "x":16.25, "y":4.5},
+
+ {"label":"K50", "x":0, "y":5.5, "w":1.25},
+ {"label":"K51", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"K52", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"K53", "x":3.75, "y":5.5, "w":6.25},
+ {"label":"K54", "x":10, "y":5.5, "w":1.25},
+ {"label":"K55", "x":11.25, "y":5.5, "w":1.25},
+ {"label":"K56", "x":12.5, "y":5.5, "w":1.25},
+ {"label":"K57", "x":13.75, "y":5.5, "w":1.25},
+
+ {"label":"K6A", "x":15.25, "y":5.5},
+ {"label":"K59", "x":16.25, "y":5.5},
+ {"label":"K6B", "x":17.25, "y":5.5}
+ ]
}
}
-
\ No newline at end of file
+}
diff --git a/keyboards/alf/x11/keymaps/default/keymap.c b/keyboards/alf/x11/keymaps/default/keymap.c
index cd97dd0a2b4..f0747d34505 100644
--- a/keyboards/alf/x11/keymaps/default/keymap.c
+++ b/keyboards/alf/x11/keymaps/default/keymap.c
@@ -15,64 +15,23 @@
*/
#include QMK_KEYBOARD_H
-// Defines the keycodes used by our macros in process_record_user
-enum custom_keycodes {
- QMKBEST = SAFE_RANGE,
- QMKURL
-};
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = 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_PSCR, KC_SLCK, KC_PAUS, 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_INS, KC_HOME, 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_DEL, KC_END, KC_PGDN, 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_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), KC_UP, KC_LCTL, \
- KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
- ),
- [1] = LAYOUT( \
- KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_MPLY, KC_MSTP, RGB_TOG, RGB_MOD, \
- RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_VAD, RGB_SAD \
- ),
+ [0] = 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_PSCR, KC_SLCK, KC_PAUS,
+ 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_INS, KC_HOME, 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_DEL, KC_END, KC_PGDN,
+ 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_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), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_DEC, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_MPLY, KC_MSTP,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case QMKBEST:
- if (record->event.pressed) {
- // when keycode QMKBEST is pressed
- SEND_STRING("QMK is the best thing ever!");
- } else {
- // when keycode QMKBEST is released
- }
- break;
- case QMKURL:
- if (record->event.pressed) {
- // when keycode QMKURL is pressed
- SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
- } else {
- // when keycode QMKURL is released
- }
- break;
- }
- return true;
-}
-
-void matrix_init_user(void) {
-
-}
-
-void matrix_scan_user(void) {
-
-}
-
-void led_set_user(uint8_t usb_led) {
-
-}
diff --git a/keyboards/alf/x11/x11.c b/keyboards/alf/x11/x11.c
index b91de016e28..9699918d5b2 100644
--- a/keyboards/alf/x11/x11.c
+++ b/keyboards/alf/x11/x11.c
@@ -16,48 +16,49 @@
#include "x11.h"
void matrix_init_kb(void) {
- // put your keyboard start-up code here
- // runs once when the firmware starts up
- setPinOutput(C6);
- setPinOutput(E6);
- setPinOutput(C7);
- matrix_init_user();
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+
+ setPinOutput(C6);
+ setPinOutput(E6);
+ setPinOutput(C7);
+ matrix_init_user();
}
void matrix_scan_kb(void) {
- // put your looping keyboard code here
- // runs every cycle (a lot)
+ // put your looping keyboard code here
+ // runs every cycle (a lot)
- matrix_scan_user();
+ 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
+ // put your per-action keyboard code here
+ // runs for every action, just before processing by the firmware
- return process_record_user(keycode, record);
+ 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
+ // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
- if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
- writePinLow(C6);
- } else {
- writePinHigh(C6);
- }
+ if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+ writePinLow(C6);
+ } else {
+ writePinHigh(C6);
+ }
- if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
- writePinLow(E6);
- } else {
- writePinHigh(E6);
- }
+ if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
+ writePinLow(E6);
+ } else {
+ writePinHigh(E6);
+ }
- if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
- writePinLow(C7);
- } else {
- writePinHigh(C7);
- }
+ if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
+ writePinLow(C7);
+ } else {
+ writePinHigh(C7);
+ }
- led_set_user(usb_led);
+ led_set_user(usb_led);
}
diff --git a/keyboards/alf/x11/x11.h b/keyboards/alf/x11/x11.h
index 53f3a3e34d1..2a1d886fddd 100644
--- a/keyboards/alf/x11/x11.h
+++ b/keyboards/alf/x11/x11.h
@@ -26,18 +26,18 @@
* represents the switch matrix.
*/
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K60, K61, K62, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K5A, K63, K65, K67, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K4C, K64, K66, K68, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
- K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K69, K58, \
- K50, K51, K52, K53, K54, K55, K56, K57, K6A, K59, K6B \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K62, K61, K60, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K5A, K63, K65, K67, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K4C, K64, K66, K68, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K69, K58, \
+ K50, K51, K52, K53, K54, K55, K56, K57, K6A, K59, K6B \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C }, \
- { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
- { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, KC_NO, KC_NO }, \
- { K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, KC_NO }, \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, KC_NO, KC_NO }, \
+ { K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, KC_NO }, \
}
diff --git a/keyboards/alice/readme.md b/keyboards/alice/readme.md
deleted file mode 100644
index 8e901ae7e44..00000000000
--- a/keyboards/alice/readme.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# TGR Alice
-
-
-
-An ergonomic 60% keyboard.
-
-Keyboard Maintainer: [Felipe Coury](https://github.com/fcoury)
-Hardware Supported: TGR Alice
-Hardware Availability: Group buy finished
-
-Make example for this keyboard (after setting up your build environment):
-
- make alice:default
-
-See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
-
-
-ps2avrGB keyboard firmware
-==========================
-
-This keyboard uses the port of the QMK firmware for boards that are based on the
-ps2avrGB firmware.
-
-Note that this is a complete replacement for the firmware, so you won't be
-using Bootmapper Client to change any keyboard settings, since not all the
-USB report options are supported.
-
-## Installing
-
-First, install the requirements. These commands are for OSX, but all you
-need is the AVR toolchain and `bootloadHID` for flashing:
-
-```
-$ brew cask install crosspack-avr
-$ brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
-$ pip install pyusb
-```
-
-Then, with the keyboard plugged in, simply run this command from the
-`qmk_firmware` directory:
-
-```
-$ make alice
-$ bootloadHID -r alice_default.hex
-```
-
-## Setting the board to bootloader mode
-
-Hold the ESC key (the one before the 1! key, in case you remaped it).
-
-## Troubleshooting
-
-From my experience, it's really hard to brick these boards. But these
-tricks have been useful when it got stuck in a weird scenario.
-
-1. Try plugging the board in while holding the bootloader key. This will force
- it to boot only the bootloader without loading the firmware. Once this is
- done, just reflash the board with the original firmware.
-2. Sometimes USB hubs can act weird, so try connecting the board directly
- to your computer or plugging/unplugging the USB hub.
diff --git a/keyboards/amjkeyboard/amj66/amj66.c b/keyboards/amjkeyboard/amj66/amj66.c
new file mode 100644
index 00000000000..05e29975b66
--- /dev/null
+++ b/keyboards/amjkeyboard/amj66/amj66.c
@@ -0,0 +1,43 @@
+/* Copyright 2018 Alex Peters
+ *
+ * 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 "amj66.h"
+
+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/amjkeyboard/amj66/amj66.h b/keyboards/amjkeyboard/amj66/amj66.h
new file mode 100644
index 00000000000..e2315f5e9fd
--- /dev/null
+++ b/keyboards/amjkeyboard/amj66/amj66.h
@@ -0,0 +1,79 @@
+/* Copyright 2018 Alex Peters
+ *
+ * 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"
+
+// This a shortcut to help you visually see your layout.
+
+/* LAYOUT_all
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0F │ ISO Enter
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┤ ┌─────┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │1E │ │2C │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┘ ┌──┴┐ │
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ │1D │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┬─┴─┐ └───┴────┘
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │
+ * ├────┴┬──┴─┬─┴──┬┴───┴───┴─┬─┴───┴───┴┬──┴─┬─┴──┬┴────┼───┼───┼───┐
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │
+ * └─────┴────┴────┴──────────┴──────────┴────┴────┴─────┴───┴───┴───┘
+ * 2u Backspace = k0D
+ * ISO # = k1D
+ * 2.25u Right Shift = k3C
+ * 6.25u Space = k44
+ */
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, KC_NO }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, KC_NO, KC_NO, KC_NO }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, KC_NO }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_66_ansi( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, \
+ k40, k41, k42, k44, k45, k46, k47, k48, k49, k4A \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, KC_NO, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, KC_NO }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, KC_NO, KC_NO, KC_NO }, \
+ { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, KC_NO, k3E, KC_NO }, \
+ { k40, k41, k42, KC_NO, k44, k45, k46, k47, k48, k49, k4A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_66_iso( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2C, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, \
+ k40, k41, k42, k44, k45, k46, k47, k48, k49, k4A \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, KC_NO, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, KC_NO }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, KC_NO, KC_NO, KC_NO }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, KC_NO, k3E, KC_NO }, \
+ { k40, k41, k42, KC_NO, k44, k45, k46, k47, k48, k49, k4A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/amjkeyboard/amj66/config.h b/keyboards/amjkeyboard/amj66/config.h
new file mode 100644
index 00000000000..5569bcd919e
--- /dev/null
+++ b/keyboards/amjkeyboard/amj66/config.h
@@ -0,0 +1,55 @@
+/*
+Copyright 2018 Alex Peters
+
+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 0xBD66
+#define DEVICE_VER 0x0001
+#define MANUFACTURER AMJKeyboard
+#define PRODUCT AMJ66
+#define DESCRIPTION QMK keyboard firmware for AMJ66
+
+/* Key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+/* Keyboard Matrix Assignments */
+#define MATRIX_ROW_PINS { F7, F6, F5, F4, F1 }
+#define MATRIX_COL_PINS { F0, B3, B2, B1, B0, B7, D0, D1, D2, D3, D5, D6, D7, B4, B5, B6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 3
+#define BACKLIGHT_BREATHING
+#define BREATHING_PERIOD 6
+#define BACKLIGHT_ON_STATE 1
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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
diff --git a/keyboards/amjkeyboard/amj66/info.json b/keyboards/amjkeyboard/amj66/info.json
new file mode 100644
index 00000000000..93656c44524
--- /dev/null
+++ b/keyboards/amjkeyboard/amj66/info.json
@@ -0,0 +1,227 @@
+{
+ "keyboard_name": "AMJ66",
+ "url": "",
+ "maintainer": "FSund, qmk",
+ "width": 16.5,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_all": {
+ "key_count": 70,
+ "layout": [
+ {"label":"~", "x":0, "y":0},
+ {"label":"!", "x":1, "y":0},
+ {"label":"@", "x":2, "y":0},
+ {"label":"#", "x":3, "y":0},
+ {"label":"$", "x":4, "y":0},
+ {"label":"%", "x":5, "y":0},
+ {"label":"^", "x":6, "y":0},
+ {"label":"&", "x":7, "y":0},
+ {"label":"*", "x":8, "y":0},
+ {"label":"(", "x":9, "y":0},
+ {"label":")", "x":10, "y":0},
+ {"label":"_", "x":11, "y":0},
+ {"label":"+", "x":12, "y":0},
+ {"label":"|", "x":13, "y":0},
+ {"label":"~", "x":14, "y":0},
+ {"label":"Insert", "x":15.5, "y":0},
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"{", "x":11.5, "y":1},
+ {"label":"}", "x":12.5, "y":1},
+ {"label":"Backspace", "x":13.5, "y":1, "w":1.5},
+ {"label":"Delete", "x":15.5, "y":1},
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":":", "x":10.75, "y":2},
+ {"label":"\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"ISO Backslash", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":"<", "x":9.25, "y":3},
+ {"label":">", "x":10.25, "y":3},
+ {"label":"?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.25},
+ {"label":"HHKB Fn", "x":13.5, "y":3},
+ {"label":"Up", "x":14.5, "y":3},
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.5},
+ {"label":"Space", "x":4, "y":4, "w":2.75},
+ {"label":"Space", "x":6.75, "y":4, "w":2.75},
+ {"label":"Alt", "x":9.5, "y":4, "w":1.5},
+ {"label":"GUI", "x":11, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":12.25, "y":4, "w":1.25},
+ {"label":"Left", "x":13.5, "y":4},
+ {"label":"Down", "x":14.5, "y":4},
+ {"label":"Right", "x":15.5, "y":4}
+ ]
+ },
+ "LAYOUT_66_ansi": {
+ "key_count": 66,
+ "layout": [
+ {"label":"~", "x":0, "y":0},
+ {"label":"!", "x":1, "y":0},
+ {"label":"@", "x":2, "y":0},
+ {"label":"#", "x":3, "y":0},
+ {"label":"$", "x":4, "y":0},
+ {"label":"%", "x":5, "y":0},
+ {"label":"^", "x":6, "y":0},
+ {"label":"&", "x":7, "y":0},
+ {"label":"*", "x":8, "y":0},
+ {"label":"(", "x":9, "y":0},
+ {"label":")", "x":10, "y":0},
+ {"label":"_", "x":11, "y":0},
+ {"label":"+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Insert", "x":15.5, "y":0},
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"{", "x":11.5, "y":1},
+ {"label":"}", "x":12.5, "y":1},
+ {"label":"|", "x":13.5, "y":1, "w":1.5},
+ {"label":"Delete", "x":15.5, "y":1},
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":":", "x":10.75, "y":2},
+ {"label":"\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":"<", "x":9.25, "y":3},
+ {"label":">", "x":10.25, "y":3},
+ {"label":"?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":2.25},
+ {"label":"Up", "x":14.5, "y":3},
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4},
+ {"label":"Ctrl", "x":12.25, "y":4, "w":1.25},
+ {"label":"Left", "x":13.5, "y":4},
+ {"label":"Down", "x":14.5, "y":4},
+ {"label":"Right", "x":15.5, "y":4}
+ ]
+ },
+ "LAYOUT_66_iso": {
+ "key_count": 67,
+ "layout": [
+ {"label":"\u00ac", "x":0, "y":0},
+ {"label":"!", "x":1, "y":0},
+ {"label":"\"", "x":2, "y":0},
+ {"label":"\u00a3", "x":3, "y":0},
+ {"label":"$", "x":4, "y":0},
+ {"label":"%", "x":5, "y":0},
+ {"label":"^", "x":6, "y":0},
+ {"label":"&", "x":7, "y":0},
+ {"label":"*", "x":8, "y":0},
+ {"label":"(", "x":9, "y":0},
+ {"label":")", "x":10, "y":0},
+ {"label":"_", "x":11, "y":0},
+ {"label":"+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Insert", "x":15.5, "y":0},
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"{", "x":11.5, "y":1},
+ {"label":"}", "x":12.5, "y":1},
+ {"label":"Delete", "x":15.5, "y":1},
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":":", "x":10.75, "y":2},
+ {"label":"@", "x":11.75, "y":2},
+ {"label":"~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":"<", "x":9.25, "y":3},
+ {"label":">", "x":10.25, "y":3},
+ {"label":"?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":2.25},
+ {"label":"Up", "x":14.5, "y":3},
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"AltGr", "x":10, "y":4, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":4},
+ {"label":"Ctrl", "x":12.25, "y":4, "w":1.25},
+ {"label":"Left", "x":13.5, "y":4},
+ {"label":"Down", "x":14.5, "y":4},
+ {"label":"Right", "x":15.5, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/amjkeyboard/amj66/keymaps/default/config.h b/keyboards/amjkeyboard/amj66/keymaps/default/config.h
new file mode 100644
index 00000000000..6d42fc568a1
--- /dev/null
+++ b/keyboards/amjkeyboard/amj66/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2018 Alex Peters
+ *
+ * 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/amjkeyboard/amj66/keymaps/default/keymap.c b/keyboards/amjkeyboard/amj66/keymaps/default/keymap.c
new file mode 100644
index 00000000000..cce05a7fe4c
--- /dev/null
+++ b/keyboards/amjkeyboard/amj66/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2018 Alex Peters
+ *
+ * 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_all(
+ 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_GRV, KC_BSPC, KC_INS,
+ 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_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_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, MO(1), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ 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_BSPC, KC_BSPC, KC_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_DEL,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_BRTG, BL_STEP, KC_SLEP, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+};
diff --git a/keyboards/amjkeyboard/amj66/keymaps/default/readme.md b/keyboards/amjkeyboard/amj66/keymaps/default/readme.md
new file mode 100644
index 00000000000..c250695efd5
--- /dev/null
+++ b/keyboards/amjkeyboard/amj66/keymaps/default/readme.md
@@ -0,0 +1,12 @@
+# The default keymap for AMJ66
+
+
+
+This is a fairly universal layout that supports standard ANSI, split backspace,
+split left shift, and split right shift.
+Cycle backlight: Fn + .
+Backlight breathing: Fn + ,
+Volume Up/Down: Fn + [ and Fn + ]
+Mute: Fn + \
+Sleep: Fn + /
+Bootloader Mode: Fn + CapsLock
\ No newline at end of file
diff --git a/keyboards/amjkeyboard/amj66/readme.md b/keyboards/amjkeyboard/amj66/readme.md
new file mode 100644
index 00000000000..37a1f27ea6a
--- /dev/null
+++ b/keyboards/amjkeyboard/amj66/readme.md
@@ -0,0 +1,15 @@
+# AMJ66
+
+
+
+A 66% keyboard formerly sold by Massdrop and KBDFans.
+
+Keyboard Maintainer: [FSund](https://github.com/fsund), [The QMK Community](https://github.com/qmk)
+Hardware Supported: AMJ66, ATmega32U4
+Hardware Availability: [Drop.com](https://drop.com/buy/kbd66-mechanical-keyboard-kit?mode=guest_open)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make amjkeyboard/amj66: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/amjkeyboard/amj66/rules.mk b/keyboards/amjkeyboard/amj66/rules.mk
new file mode 100644
index 00000000000..80734a99044
--- /dev/null
+++ b/keyboards/amjkeyboard/amj66/rules.mk
@@ -0,0 +1,70 @@
+# 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
+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 = yes # 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
+
+LAYOUTS = 66_ansi 66_iso
diff --git a/keyboards/angel64/config.h b/keyboards/angel64/config.h
index 2289d666708..fb683bc1532 100644
--- a/keyboards/angel64/config.h
+++ b/keyboards/angel64/config.h
@@ -48,16 +48,16 @@ along with this program. If not, see .
// #define BACKLIGHT_BREATHING
// #define BACKLIGHT_LEVELS 3
-// #define RGB_DI_PIN E2
-// #ifdef RGB_DI_PIN
-// #define RGBLED_NUM 64
-// #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
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 64
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 25 /* 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
@@ -74,7 +74,7 @@ along with this program. If not, see .
// /*==== use exp() and sin() ====*/
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
-// #endif
+#endif
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/angel64/rules.mk b/keyboards/angel64/rules.mk
index b1ef9b76544..06169e8df92 100644
--- a/keyboards/angel64/rules.mk
+++ b/keyboards/angel64/rules.mk
@@ -61,17 +61,17 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+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)
-COMMAND_ENABLE = yes # Commands for debug and configuration
+EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+RGBLIGHT_ENABLE = yes # 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
diff --git a/keyboards/ares/config.h b/keyboards/ares/config.h
index cca26aab3ee..dd01d156594 100644
--- a/keyboards/ares/config.h
+++ b/keyboards/ares/config.h
@@ -36,7 +36,6 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define NO_BACKLIGHT_CLOCK
#define BACKLIGHT_LEVELS 1
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/bfake/config.h b/keyboards/bfake/config.h
index 235181d0954..8a43aacd9b8 100644
--- a/keyboards/bfake/config.h
+++ b/keyboards/bfake/config.h
@@ -37,7 +37,6 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define NO_BACKLIGHT_CLOCK
#define BACKLIGHT_LEVELS 1
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/business_card/alpha/info.json b/keyboards/business_card/alpha/info.json
new file mode 100644
index 00000000000..f0cd04efa28
--- /dev/null
+++ b/keyboards/business_card/alpha/info.json
@@ -0,0 +1,19 @@
+{
+ "keyboard_name": "business_card alpha",
+ "url": "",
+ "maintainer": "kakunpc",
+ "width": 3,
+ "height": 2,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"1", "x":0, "y":0},
+ {"label":"2", "x":1, "y":0},
+ {"label":"3", "x":2, "y":0},
+ {"label":"4", "x":0, "y":1},
+ {"label":"5", "x":1, "y":1},
+ {"label":"6", "x":2, "y":1}
+ ]
+ }
+ }
+}
diff --git a/keyboards/business_card/beta/info.json b/keyboards/business_card/beta/info.json
new file mode 100644
index 00000000000..62f2797a75e
--- /dev/null
+++ b/keyboards/business_card/beta/info.json
@@ -0,0 +1,19 @@
+{
+ "keyboard_name": "business_card beta",
+ "url": "",
+ "maintainer": "kakunpc",
+ "width": 2,
+ "height": 3,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"1", "x":0, "y":0},
+ {"label":"2", "x":1, "y":0},
+ {"label":"3", "x":0, "y":1},
+ {"label":"4", "x":1, "y":1},
+ {"label":"5", "x":0, "y":2},
+ {"label":"6", "x":1, "y":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/butterstick/keymaps/default/keymap.c b/keyboards/butterstick/keymaps/default/keymap.c
index e4d1ea91f3e..749e9ba0713 100644
--- a/keyboards/butterstick/keymaps/default/keymap.c
+++ b/keyboards/butterstick/keymaps/default/keymap.c
@@ -45,21 +45,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
uint32_t processQwerty(bool lookup) {
// SECRET AGENT CHORDS
P( LSU | LK | RS | RD, SEND_STRING(VERSION); SEND_STRING(__DATE__));
- P( LR | ST2| RR | RB, SEND(KC_BSPC));
+ P( LR | ST2| RR | RB, SEND(KC_BSPC));
P( LSD | RZ, SEND(KC_SPC));
// Dual chords
P( LP | LH, CLICK_MOUSE(KC_MS_BTN2));
P( ST1 | RF, CLICK_MOUSE(KC_MS_BTN1));
- P( LSU | LFT, SEND(KC_ESC));
- P( LSD | LK, SEND(KC_LSFT));
- P( RZ | RS, SEND(KC_LSFT));
- P( ST2 | RR, SEND(KC_SPC));
+ P( LSU | LFT, SEND(KC_ESC));
+ P( LSD | LK, SEND(KC_LSFT));
+ P( RZ | RS, SEND(KC_LSFT));
+ P( ST2 | RR, SEND(KC_SPC));
P( RP | RL, SEND(KC_LGUI));
P( RT | RD, SEND(KC_LCTL));
P( RL | RT, SEND(KC_LALT));
- P( LSU | LSD | LFT | LK, SEND(KC_LCTL));
- P( RS | RT | RD | RZ, SEND(KC_ENT));
+ P( LSU | LSD | LFT | LK, SEND(KC_LCTL));
+ P( RS | RT | RD | RZ, SEND(KC_ENT));
// Function Layer
P( FUNCT | RF, SEND(KC_F1));
@@ -179,6 +179,5 @@ uint32_t processQwerty(bool lookup) {
return 0;
}
-
// Don't fuck with this, thanks.
size_t keymapsCount = sizeof(keymaps)/sizeof(keymaps[0]);
diff --git a/keyboards/butterstick/sten.c b/keyboards/butterstick/sten.c
index a239e388421..197abaf92f5 100644
--- a/keyboards/butterstick/sten.c
+++ b/keyboards/butterstick/sten.c
@@ -11,6 +11,18 @@ uint32_t pChord = 0; // Previous Chord
int pChordIndex = 0; // Keys in previousachord
uint32_t pChordState[32]; // Previous chord sate
uint32_t stickyBits = 0; // Or'd with every incoming press
+#ifndef NO_DEBUG
+char debugMsg[32];
+#endif
+
+// StenoLayer
+uint32_t releasedChord = 0; // Keys released from current chord
+uint32_t tChord = 0; // Protects state of cChord
+
+#ifndef STENOLAYERS
+uint32_t stenoLayers[] = { PWR };
+size_t stenoLayerCount = sizeof(stenoLayers)/sizeof(stenoLayers[0]);
+#endif
// Mode state
enum MODE { STENO = 0, QWERTY, COMMAND };
@@ -39,7 +51,6 @@ bool inMouse = false;
int8_t mousePress;
// All processing done at chordUp goes through here
-// Note, this is a gutted version of the Georgi sten.h
bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[6]) {
// Check for mousekeys, this is release
#ifdef MOUSEKEY_ENABLE
@@ -50,8 +61,21 @@ bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[6]) {
}
#endif
+ // Toggle Serial/QWERTY steno
+ if (cChord == (PWR | FN | ST1 | ST2)) {
+#ifndef NO_DEBUG
+ uprintf("Fallback Toggle\n");
+#endif
+ QWERSTENO = !QWERSTENO;
+
+ goto out;
+ }
+
// handle command mode
- if (cChord == (LSU | LSD | RD | RZ)) {
+ if (cChord == (PWR | FN | RD | RZ)) {
+#ifndef NO_DEBUG
+ uprintf("COMMAND Toggle\n");
+#endif
if (cMode != COMMAND) { // Entering Command Mode
CMDLEN = 0;
pMode = cMode;
@@ -70,7 +94,7 @@ bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[6]) {
}
// Handle Gaming Toggle,
- if (cChord == (LSU | LSD | LFT | LK | RT | RS | RD | RZ) && keymapsCount > 1) {
+ if (cChord == (PWR | FN | ST4 | ST3) && keymapsCount > 1) {
#ifndef NO_DEBUG
uprintf("Switching to QMK\n");
#endif
@@ -78,11 +102,38 @@ bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[6]) {
goto out;
}
+ // Lone FN press, toggle QWERTY
+#ifndef ONLYQWERTY
+ if (cChord == FN) {
+ (cMode == STENO) ? (cMode = QWERTY) : (cMode = STENO);
+ goto out;
+ }
+#endif
+
+ // Check for Plover momentary
+ if (cMode == QWERTY && (cChord & FN)) {
+ cChord ^= FN;
+ goto steno;
+ }
+
// Do QWERTY and Momentary QWERTY
- if (cMode == QWERTY || (cMode == COMMAND)) {
+ if (cMode == QWERTY || (cMode == COMMAND) || (cChord & (FN | PWR))) {
processChord(false);
goto out;
- }
+ }
+
+ // Fallback NKRO Steno
+ if (cMode == STENO && QWERSTENO) {
+ processChord(true);
+ goto out;
+ }
+
+steno:
+ // Hey that's a steno chord!
+ inChord = false;
+ chordIndex = 0;
+ cChord = 0;
+ return true;
out:
cChord = 0;
diff --git a/keyboards/butterstick/sten.h b/keyboards/butterstick/sten.h
index 5a9771d9a02..84635a554c1 100644
--- a/keyboards/butterstick/sten.h
+++ b/keyboards/butterstick/sten.h
@@ -13,11 +13,14 @@
extern size_t keymapsCount; // Total keymaps
extern uint32_t cChord; // Current Chord
+extern uint32_t stenoLayers[]; // Chords that simulate QMK layers
+extern size_t stenoLayerCount; // Number of simulated layers
+uint32_t refChord; // Reference chord for PC macro
// Function defs
void processChord(bool useFakeSteno);
-uint32_t processQwerty(bool lookup);
-uint32_t processFakeSteno(bool lookup);
+uint32_t processQwerty(bool lookup);
+uint32_t processFakeSteno(bool lookup);
void saveState(uint32_t cChord);
void restoreState(void);
@@ -30,6 +33,11 @@ void CLICK_MOUSE(uint8_t);
// Keymap helper
#define P(chord, act) if (cChord == (chord)) { if (!lookup) {act;} return chord;}
+#define PC(chord, act) if (cChord == (chord)) { if (!lookup) {act;} return chord;} \
+ for(int i = 0; i < stenoLayerCount; i++) { \
+ refChord = stenoLayers[i] | chord; \
+ if (cChord == (refChord)) { if (!lookup) {act;} return refChord;}; \
+}
// Shift to internal representation
// i.e) S(teno)R(ight)F
diff --git a/keyboards/cannonkeys/ortho75/rules.mk b/keyboards/cannonkeys/ortho75/rules.mk
index db155867e5d..113fff5554d 100644
--- a/keyboards/cannonkeys/ortho75/rules.mk
+++ b/keyboards/cannonkeys/ortho75/rules.mk
@@ -54,4 +54,4 @@ BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
ENCODER_ENABLE = yes
-LAYOUTS = LAYOUT_ortho_5x15
+LAYOUTS = ortho_5x15
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction75.c b/keyboards/cannonkeys/satisfaction75/satisfaction75.c
index 0e788b29b78..531bf047466 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction75.c
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.c
@@ -17,8 +17,8 @@
#include "tmk_core/common/eeprom.h"
// HACK
-#include "keyboards/zeal60/zeal60_api.h" // Temporary hack
-#include "keyboards/zeal60/zeal60_keycodes.h" // Temporary hack
+#include "keyboards/wilba_tech/via_api.h" // Temporary hack
+#include "keyboards/wilba_tech/via_keycodes.h" // Temporary hack
/* Artificial delay added to get media keys to work in the encoder*/
@@ -72,7 +72,7 @@ void eeprom_set_valid(bool valid)
void eeprom_reset(void)
{
- // Set the Zeal60 specific EEPROM state as invalid.
+ // Set the VIA specific EEPROM state as invalid.
eeprom_set_valid(false);
// Set the TMK/QMK EEPROM state as invalid.
eeconfig_disable();
diff --git a/keyboards/cannonkeys/stm32f072/keyboard.c b/keyboards/cannonkeys/stm32f072/keyboard.c
index c0c3a74fb9b..9520398d05f 100644
--- a/keyboards/cannonkeys/stm32f072/keyboard.c
+++ b/keyboards/cannonkeys/stm32f072/keyboard.c
@@ -12,8 +12,8 @@
#include "tmk_core/common/eeprom.h"
// HACK
-#include "keyboards/zeal60/zeal60_api.h" // Temporary hack
-#include "keyboards/zeal60/zeal60_keycodes.h" // Temporary hack
+#include "keyboards/wilba_tech/via_api.h" // Temporary hack
+#include "keyboards/wilba_tech/via_keycodes.h" // Temporary hack
backlight_config_t kb_backlight_config = {
diff --git a/keyboards/canoe/config.h b/keyboards/canoe/config.h
index cddb749dc1c..45581b54932 100644
--- a/keyboards/canoe/config.h
+++ b/keyboards/canoe/config.h
@@ -37,7 +37,6 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define NO_BACKLIGHT_CLOCK
#define BACKLIGHT_LEVELS 1
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/choco60/choco60.c b/keyboards/choco60/choco60.c
new file mode 100644
index 00000000000..e38f335c1c5
--- /dev/null
+++ b/keyboards/choco60/choco60.c
@@ -0,0 +1,51 @@
+/* Copyright 2019 Naoto Takai
+ *
+ * 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 "choco60.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/choco60/choco60.h b/keyboards/choco60/choco60.h
new file mode 100644
index 00000000000..fedcf942bfd
--- /dev/null
+++ b/keyboards/choco60/choco60.h
@@ -0,0 +1,46 @@
+/* Copyright 2019 Naoto Takai
+ *
+ * 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"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, R06, R07, R08, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L43, R40, R41, R43, R44 \
+) \
+{ \
+ { L00, L01, L02, L03, L04, L05, KC_NO, KC_NO, KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, KC_NO, KC_NO, KC_NO }, \
+ { L20, L21, L22, L23, L24, L25, KC_NO, KC_NO, KC_NO }, \
+ { L30, L31, L32, L33, L34, L35, KC_NO, KC_NO, KC_NO }, \
+ { L40, L41, KC_NO, L43, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07, R08 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17, KC_NO }, \
+ { R20, R21, R22, R23, R24, R25, R26, KC_NO, KC_NO }, \
+ { R30, R31, R32, R33, R34, R35, R36, KC_NO, KC_NO }, \
+ { R40, R41, KC_NO, R43, R44, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/choco60/config.h b/keyboards/choco60/config.h
new file mode 100644
index 00000000000..97d7c61acdb
--- /dev/null
+++ b/keyboards/choco60/config.h
@@ -0,0 +1,55 @@
+/*
+Copyright 2019 Naoto Takai
+
+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 0xC0C0
+#define PRODUCT_ID 0x6000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Naoto Takai
+#define PRODUCT choco60
+#define DESCRIPTION A 60% split keyboard for programmers.
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 9
+
+/*
+ * 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 { C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D1 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D3 // or D1, D2, D3, E6
+#define SPLIT_HAND_PIN D0
diff --git a/keyboards/choco60/info.json b/keyboards/choco60/info.json
new file mode 100644
index 00000000000..3918dcb5f01
--- /dev/null
+++ b/keyboards/choco60/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "Choco60",
+ "url": "https://keys.recompile.net/projects/choco60/",
+ "maintainer": "Naoto Takai",
+ "width": 16,
+ "height": 5,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":7, "y":0}, {"label":"&", "x":8, "y":0}, {"label":"*", "x":9, "y":0}, {"label":"(", "x":10, "y":0}, {"label":")", "x":11, "y":0}, {"label":"_", "x":12, "y":0}, {"label":"+", "x":13, "y":0}, {"label":"|", "x":14, "y":0}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":7.5, "y":1}, {"label":"U", "x":8.5, "y":1}, {"label":"I", "x":9.5, "y":1}, {"label":"O", "x":10.5, "y":1}, {"label":"P", "x":11.5, "y":1}, {"label":"{", "x":12.5, "y":1}, {"label":"}", "x":13.5, "y":1}, {"label":"Delete", "x":14.5, "y":1, "w":1.5}, {"label":"Control", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":7.75, "y":2}, {"label":"J", "x":8.75, "y":2}, {"label":"K", "x":9.75, "y":2}, {"label":"L", "x":10.75, "y":2}, {"label":":", "x":11.75, "y":2}, {"label":"\"", "x":12.75, "y":2}, {"label":"Return", "x":13.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":8.25, "y":3}, {"label":"M", "x":9.25, "y":3}, {"label":"<", "x":10.25, "y":3}, {"label":">", "x":11.25, "y":3}, {"label":"?", "x":12.25, "y":3}, {"label":"Shift", "x":13.25, "y":3, "w":1.75}, {"label":"Fn", "x":15, "y":3}, {"label":"Opt", "x":1.5, "y":4}, {"label":"\u2318", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":2.75}, {"label":"Opt", "x":7.75, "y":4}, {"x":8.75, "y":4, "w":2.25}, {"label":"\u2318", "x":11, "y":4, "w":1.5}, {"label":"Ctrl", "x":12.5, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/choco60/keymaps/default/config.h b/keyboards/choco60/keymaps/default/config.h
new file mode 100644
index 00000000000..cf4c8bcbe6e
--- /dev/null
+++ b/keyboards/choco60/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 Naoto Takai
+ *
+ * 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/choco60/keymaps/default/keymap.c b/keyboards/choco60/keymaps/default/keymap.c
new file mode 100644
index 00000000000..ab3f2c6a2bc
--- /dev/null
+++ b/keyboards/choco60/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2019 Naoto Takai
+ *
+ * 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
+
+enum layer_names {
+ _BASE,
+ _FN,
+};
+
+#define KC_FN MO(_FN)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSLASH, KC_GRAVE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRACKET, KC_RBRACKET, KC_BSPACE,
+ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, KC_ENTER,
+ KC_LSHIFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSHIFT, KC_FN,
+ KC_LALT, KC_LGUI, KC_SPACE, KC_SPACE, KC_SPACE, KC_RGUI, KC_RALT
+ ),
+ [_FN] = 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_INSERT, KC_DELETE,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCREEN, KC_SCROLLLOCK, KC_PAUSE, KC_UP, KC_RBRACKET, KC_BSPACE,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_ENTER,
+ RESET, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDOWN, KC_DOWN, KC_RSHIFT, KC_FN,
+ _______, _______, _______, _______, _______, KC_STOP, _______
+ )
+};
diff --git a/keyboards/choco60/keymaps/default/readme.md b/keyboards/choco60/keymaps/default/readme.md
new file mode 100644
index 00000000000..f55e392c391
--- /dev/null
+++ b/keyboards/choco60/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for choco60
diff --git a/keyboards/choco60/readme.md b/keyboards/choco60/readme.md
new file mode 100644
index 00000000000..ca309fdcbca
--- /dev/null
+++ b/keyboards/choco60/readme.md
@@ -0,0 +1,15 @@
+# choco60
+
+
+
+A 60% split keyboard for programmers.
+
+Keyboard Maintainer: [Naoto Takai](https://github.com/takai)
+Hardware Supported: The Choco60 PCBs, Pro Micro supported
+Hardware Availability: https://keys.recompile.net/projects/choco60/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make choco60: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/choco60/rules.mk b/keyboards/choco60/rules.mk
new file mode 100644
index 00000000000..343469db2b3
--- /dev/null
+++ b/keyboards/choco60/rules.mk
@@ -0,0 +1,82 @@
+# 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
+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
+#
+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 = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+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)
+
+SPLIT_KEYBOARD = yes # Enable split keyboard
diff --git a/keyboards/ckeys/readme.md b/keyboards/ckeys/readme.md
index bdcf5b34d84..f04626cd337 100644
--- a/keyboards/ckeys/readme.md
+++ b/keyboards/ckeys/readme.md
@@ -1,10 +1,11 @@
# cKeys.org
-[cKeys](https://ckeys.org/) is a mechanical keyboard-based nonprofit organization located in Seattle, Washington.
+[cKeys](https://ckeys.org/) is an all volunteer run 501c3 nonprofit organization located in Seattle, Washington.
-In addition, to hosting the [Seattle Mechanical Keyboard Meetups](https://ckeys.org/events/), they have [soldering workshops](https://ckeys.org/workshops/) featuring hardware hosted in this repository.
+In addition to hosting the [Seattle Mechanical Keyboard Meetups](https://ckeys.org/events/), we teach [soldering workshops](https://ckeys.org/workshops/) featuring hardware hosted in this repository.
* Supported Hardware
* The Obelus - 4x4 Macropad
* naKey - Through hole numpad
* Handwire 101 - Handwired 4x4 (Proton C or Pro Micro)
+ * The Dora Board - 4x5 with rotary encoder and Proton C pinouts
diff --git a/keyboards/ckeys/thedora/config.h b/keyboards/ckeys/thedora/config.h
new file mode 100755
index 00000000000..f2b93ee70e4
--- /dev/null
+++ b/keyboards/ckeys/thedora/config.h
@@ -0,0 +1,188 @@
+/* Copyright 2019 Branden Byers
+ *
+ * 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 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER ckeys
+#define PRODUCT thedora
+#define DESCRIPTION A board for keyboard exploration.
+
+#define ENCODERS_PAD_A { B13 }
+#define ENCODERS_PAD_B { B15 }
+#define ENCODER_RESOLUTION 4
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 6
+
+#define MATRIX_ROW_PINS { A2, A1, A0, B8 }
+#define MATRIX_COL_PINS { B5, B4, B3, B2, B1, B0 }
+
+// #define UNUSED_PINS { B14 }
+
+/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+#define DIODE_DIRECTION COL2ROW
+
+//#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
+
+#define AUDIO_CLICKY
+
+#define DAC_SAMPLE_MAX 65535U
+
+/*
+ * 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
+
+/*
+ * 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
+
+// Audio Click
+
+// Music Mode Polyphony
+// NOTE: Must change polyphony_rate to a number higher than 0 in voices.c
+#define AUDIO_VOICES
+#define PITCH_STANDARD_A 880.0f
+
+// Mouse keys
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_MAX_SPEED 2
+#define MOUSEKEY_TIME_TO_MAX 5
+#define MOUSEKEY_WHEEL_DELAY 0
+
+/*
+ * 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/ckeys/thedora/info.json b/keyboards/ckeys/thedora/info.json
new file mode 100644
index 00000000000..06e1037f7d2
--- /dev/null
+++ b/keyboards/ckeys/thedora/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "The Dora Board.",
+ "url": "https://ckeys.org/slides/exboard",
+ "maintainer": "brandenbyers",
+ "width": 4,
+ "height": 4,
+ "layouts": {
+ "LAYOUT_ortho_4x5": {
+ "key_count": 20,
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x": 4, "y":0},
+ {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1},
+ {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2},
+ {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/ckeys/thedora/keymaps/default/config.h b/keyboards/ckeys/thedora/keymaps/default/config.h
new file mode 100755
index 00000000000..507a9ccdcae
--- /dev/null
+++ b/keyboards/ckeys/thedora/keymaps/default/config.h
@@ -0,0 +1,3 @@
+#pragma once
+
+// Add overrides here
diff --git a/keyboards/ckeys/thedora/keymaps/default/keymap.c b/keyboards/ckeys/thedora/keymaps/default/keymap.c
new file mode 100755
index 00000000000..c407fbe2640
--- /dev/null
+++ b/keyboards/ckeys/thedora/keymaps/default/keymap.c
@@ -0,0 +1,155 @@
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _BASE, // base layer
+ _MUSIC, // music mode
+ _MIDI, // midi mode
+ _MOUSE, // mouse keys
+ _ADMIN // admin duties
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// ┌─────────┬─────────┬─────────┬─────────┬─────────┐
+// │ │ │ │ │ │
+// │ 7 │ 8 │ 9 │ / │ ADMIN │
+// ROTORY │ │ │ │ │ │
+// RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
+// VOL UP │ │ │ │ │ │
+// │ 4 │ 5 │ 6 │ * │ MOUSE │
+// ROTORY │ │ │ │ │ │
+// LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
+// VOL DOWN │ │ │ │ │ │
+// │ 1 │ 2 │ 3 │ - │ MIDI │
+// │ │ │ │ │ │
+// ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
+// │ TOGGLE │ │ │ │ │ │
+// │ MUSIC │ 0 │ . │ = │ + │ MUSIC │
+// │ │ │ │ │ │ │
+// └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
+
+ [_BASE] = LAYOUT(
+ KC_KP_7, KC_KP_8, KC_KP_9, KC_PSLS, MO(_ADMIN), MU_TOG,
+ KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST, TG(_MOUSE),
+ KC_KP_1, KC_KP_2, KC_KP_3, KC_PMNS, TG(_MIDI),
+ KC_KP_0, KC_KP_DOT, KC_KP_EQUAL, KC_PPLS, MO(_MUSIC)
+ ),
+
+// MUSIC LAYER
+ // ┌─────────┬─────────┬─────────┬─────────┬─────────┐
+ // │ │ │ │ │ │
+ // │ │ │ │ │ │
+ // ROTORY │ │ │ │ │ │
+ // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
+ // PAGE UP │ │ │ │ │ │
+ // │ │ │ │ │ │
+ // ROTORY │ │ │ │ │ │
+ // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
+ // PAGE DOWN│ │ │ │ │ │
+ // │ │ │ │ MODE │ │
+ // │ │ │ │ │ │
+ //┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
+ //│ │ │ │ │ │ │
+ //│ │ RECORD │ STOP │ │ PLAY │ │
+ //│ │ │ │ │ │ │
+ //└─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
+
+ [_MUSIC] = LAYOUT(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, MU_MOD,
+ KC_LCTL, KC_LALT, _______, KC_LGUI, _______
+ ),
+
+// MIDI LAYER
+// ┌─────────┬─────────┬─────────┬─────────┬─────────┐
+// │ │ │ │ │ │
+// │ D♯ │ E │ F │ F♯ │ G │
+// ROTORY │ │ │ │ │ │
+// RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
+// PAGE UP │ │ │ │ │ │
+// │ A♯ │ B │ C │ C♯ │ D │
+// ROTORY │ │ │ │ │ │
+// LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
+// PAGE DOWN│ │ │ │ │ │
+// │ F │ F♯ │ G │ G♯ │ A │
+// │ │ │ │ │ │
+// ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
+// │ │ │ │ │ │ │
+// │ │ C │ C♯ │ D │ D♯ │ E │
+// │ │ │ │ │ │ │
+// └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
+
+ [_MIDI] = LAYOUT(
+ MI_Ds_3, MI_E_3, MI_F_3, MI_Fs_3, MI_G_3, _______,
+ MI_As_2, MI_B_2, MI_C_3, MI_Cs_3, MI_D_3,
+ MI_F_2, MI_Fs_2, MI_G_2, MI_Gs_2, TG(_MIDI),
+ MI_C_2, MI_Cs_2, MI_D_2, MI_Ds_2, MI_E_2
+ ),
+
+// MOUSE LAYER
+// ┌─────────┬─────────┬─────────┬─────────┬─────────┐
+// │ │ │ │ │ │
+// │ BTN 5 │ │ WHEEL │ │ │
+// ROTORY │ │ │ UP │ │ │
+// RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
+// PAGE DOWN│ │ │ │ │ │
+// │ │ LEFT │ MOUSE │ RIGHT │ │
+// ROTORY │ │ CLICK │ UP │ CLICK │ │
+// LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
+// PAGE UP │ │ │ │ │ │
+// │ BTN 4 │ MOUSE │ MOUSE │ MOUSE │ │
+// │ │ LEFT │ DOWN │ RIGHT │ │
+// ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
+// │ │ │ │ │ │ │
+// │ │ BTN 3 │ WHEEL │ WHEEL │ WHEEL │ │
+// │ │ │ LEFT │ DOWN │ RIGHT │ │
+// └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
+
+ [_MOUSE] = LAYOUT(
+ KC_MS_BTN5, _______, KC_MS_WH_UP, _______, _______, _______,
+ _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, TG(_MOUSE),
+ KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______,
+ KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, _______
+ ),
+
+// ADMIN LAYER
+// ┌─────────┬─────────┬─────────┬─────────┬─────────┐
+// │ │ │ │ │ │
+// │ RESET │ │ │ │ │
+// ROTORY │ │ │ │ │ │
+// RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
+// PAGE UP │ │ │ │ │ │
+// │ 4 │ 5 │ 6 │ * │ │
+// ROTORY │ │ │ │ │ │
+// LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
+// PAGE DOWN│ │ │ │ │ │
+// │ 1 │ 2 │ 3 │ │ │
+// │ │ │ │ │ │
+// ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
+// │ │ │ │ │ │ │
+// │ │ 0 │ . │ = │ │ │
+// │ │ │ │ │ │ │
+// └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
+
+ [_ADMIN] = LAYOUT(
+ RESET, _______, _______, _______, TG(_ADMIN), _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+}
diff --git a/keyboards/ckeys/thedora/keymaps/default/readme.md b/keyboards/ckeys/thedora/keymaps/default/readme.md
new file mode 100755
index 00000000000..4594bdfe317
--- /dev/null
+++ b/keyboards/ckeys/thedora/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for the cKeys Handwire 101 4x4 keyboard.
\ No newline at end of file
diff --git a/keyboards/ckeys/thedora/readme.md b/keyboards/ckeys/thedora/readme.md
new file mode 100755
index 00000000000..920162075ba
--- /dev/null
+++ b/keyboards/ckeys/thedora/readme.md
@@ -0,0 +1,57 @@
+# theDora Board
+
+
+
+A 4x5 keyboard with rotary encoder, QWIIC connector, and header pinouts for easy access to all pins on the Proton C. This keyboard was built for QMK exploration big and small. What will you discover next?
+
+Keyboard Maintainer: [brandenbyers](https://github.com/brandenbyers)
+Hardware Supported: theDora
+Hardware Availability: [cKeys.org](https://ckeys.org)
+
+Make example for this keyboard (after setting up your build environment):
+
+`make ckeys/thedora: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](Complete Newbs Guide).
+
+---
+
+## Slides
+
+Slides can be found at: https://ckeys.org/slides/exboard/
+
+## Case Design
+
+The acrylic laser cutter file is coming soon!
+
+## PCB Design
+
+All cKeys PCBs are open source. However, this one has not been posted yet because it needs to be cleaned up a bit! Coming soon!
+
+## Firmware
+
+If you want to reflash the pre-installed firmware, use the `.bin` file for Proton C. Flash with the QMK Toolbox or via the command line.
+
+Building for Proton C: `make ckeys/thedora:default`
+
+## Default Layout
+
+You can find the default layout in `thedora/keymaps/default/keymap.c`
+
+## Rotary Encoder
+
+This is the bit of code at the end of `keymap.c` that needs to changed if you want to change the behavior of the rotary encoder.
+
+```
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_PGDN); // What the rotary encoder repeatedly does when turned right.
+ } else {
+ tap_code(KC_PGUP); // What it does when turned to the left.
+ }
+ }
+}
+```
+
+
diff --git a/keyboards/ckeys/thedora/rules.mk b/keyboards/ckeys/thedora/rules.mk
new file mode 100755
index 00000000000..11adbdacd41
--- /dev/null
+++ b/keyboards/ckeys/thedora/rules.mk
@@ -0,0 +1,19 @@
+MCU = STM32F303
+
+# Build Options
+# comment out to disable the options.
+#
+BACKLIGHT_ENABLE = no
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes # USB Nkey Rollover
+AUDIO_ENABLE = yes
+MIDI_ENABLE = yes # MIDI controls
+RGBLIGHT_ENABLE = no
+ENCODER_ENABLE = yes
+# SERIAL_LINK_ENABLE = yes
diff --git a/keyboards/ckeys/thedora/thedora.c b/keyboards/ckeys/thedora/thedora.c
new file mode 100755
index 00000000000..438320ef1c6
--- /dev/null
+++ b/keyboards/ckeys/thedora/thedora.c
@@ -0,0 +1,28 @@
+#include "thedora.h"
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ // Turn status LED on
+ //DDRD |= (1<<6);
+ //PORTD |= (1<<6);
+
+ 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/ckeys/thedora/thedora.h b/keyboards/ckeys/thedora/thedora.h
new file mode 100755
index 00000000000..2c4443c3ad4
--- /dev/null
+++ b/keyboards/ckeys/thedora/thedora.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "quantum.h"
+
+// This a shortcut to help you visually see your layout.
+// The following is an example using the Planck MIT layout
+// The first section contains all of the arguements
+// The second converts the arguments into a two-dimensional array
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, \
+ k06, k07, k08, k09, k10, \
+ k11, k12, k13, k14, k15, \
+ k16, k17, k18, k19, k20 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, }, \
+ { k06, k07, k08, k09, k10 }, \
+ { k11, k12, k13, k14, k15 }, \
+ { k16, k17, k18, k19, k20 } \
+}
+
diff --git a/keyboards/cocoa40/cocoa40.c b/keyboards/cocoa40/cocoa40.c
new file mode 100644
index 00000000000..22d19828d6a
--- /dev/null
+++ b/keyboards/cocoa40/cocoa40.c
@@ -0,0 +1,43 @@
+/* Copyright 2019 'Naoto Takai'
+ *
+ * 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 "cocoa40.h"
+
+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/cocoa40/cocoa40.h b/keyboards/cocoa40/cocoa40.h
new file mode 100644
index 00000000000..a468a75ef2c
--- /dev/null
+++ b/keyboards/cocoa40/cocoa40.h
@@ -0,0 +1,44 @@
+/* Copyright 2019 'Naoto Takai'
+ *
+ * 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"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, R06, R07, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, \
+ L31, L32, L33, R30, R32, R33 \
+) \
+{ \
+ { L00, L01, L02, L03, L04, L05, KC_NO, KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, KC_NO, KC_NO }, \
+ { L20, L21, L22, L23, L24, L25, KC_NO, KC_NO }, \
+ { KC_NO, L31, L32, L33, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, KC_NO }, \
+ { R20, R21, R22, R23, R24, R25, R26, KC_NO }, \
+ { R30, KC_NO, R32, R33, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/cocoa40/config.h b/keyboards/cocoa40/config.h
new file mode 100644
index 00000000000..0dfa02aa672
--- /dev/null
+++ b/keyboards/cocoa40/config.h
@@ -0,0 +1,55 @@
+/*
+Copyright 2019 'Naoto Takai'
+
+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 0xC0C0
+#define PRODUCT_ID 0x4000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER recompile keys
+#define PRODUCT cocoa40
+#define DESCRIPTION A 40% keyboard for programmers.
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+
+/*
+ * 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 { F4, F5, F6, F7 }
+#define MATRIX_COL_PINS { B5, B4, E6, D7, C6, D4, D0, D1 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6
+#define SPLIT_HAND_PIN D3
diff --git a/keyboards/cocoa40/info.json b/keyboards/cocoa40/info.json
new file mode 100644
index 00000000000..d359c0ddb6b
--- /dev/null
+++ b/keyboards/cocoa40/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "Cocoa40",
+ "url": "https://keys.recompile.net/projects/cocoa40/",
+ "maintainer": "Naoto Takai",
+ "width": 15.25,
+ "height": 4,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":7.25, "y":0}, {"label":"U", "x":8.25, "y":0}, {"label":"I", "x":9.25, "y":0}, {"label":"O", "x":10.25, "y":0}, {"label":"P", "x":11.25, "y":0}, {"label":"{", "x":12.25, "y":0}, {"label":"}", "x":13.25, "y":0}, {"label":"Back
Space", "x":14.25, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":7.5, "y":1}, {"label":"J", "x":8.5, "y":1}, {"label":"K", "x":9.5, "y":1}, {"label":"L", "x":10.5, "y":1}, {"label":":", "x":11.5, "y":1}, {"label":"\"", "x":12.5, "y":1}, {"label":"Enter", "x":13.5, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":8, "y":2}, {"label":"M", "x":9, "y":2}, {"label":"<", "x":10, "y":2}, {"label":">", "x":11, "y":2}, {"label":"?", "x":12, "y":2}, {"label":"Shift", "x":13, "y":2, "w":1.25}, {"label":"Fn", "x":14.25, "y":2}, {"label":"Opt", "x":1.5, "y":3}, {"label":"Command", "x":2.5, "y":3, "w":1.5}, {"label":"", "x":4, "y":3, "w":2.25}, {"label":"", "x":7.5, "y":3, "w":2.75}, {"label":"Command", "x":10.25, "y":3, "w":1.5}, {"label":"Opt", "x":11.75, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/cocoa40/keymaps/default/config.h b/keyboards/cocoa40/keymaps/default/config.h
new file mode 100644
index 00000000000..01232ff92f2
--- /dev/null
+++ b/keyboards/cocoa40/keymaps/default/config.h
@@ -0,0 +1,20 @@
+/* Copyright 2019 'Naoto Takai'
+ *
+ * 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/cocoa40/keymaps/default/keymap.c b/keyboards/cocoa40/keymaps/default/keymap.c
new file mode 100644
index 00000000000..320f918a9e2
--- /dev/null
+++ b/keyboards/cocoa40/keymaps/default/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2019 'Naoto Takai'
+ *
+ * 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
+
+enum layer_names {
+ _BASE,
+ _NUMS,
+ _SYMS,
+ _FN,
+};
+
+#define KC_NUMS LT(_NUMS, KC_SPACE)
+#define KC_SYMS LT(_SYMS, KC_SPACE)
+#define KC_FN MO(_FN)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRACKET, KC_RBRACKET, KC_BSPACE,
+ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, KC_ENTER,
+ KC_LSHIFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSHIFT, KC_FN,
+ KC_LALT, KC_LGUI, KC_NUMS, KC_SYMS, KC_RGUI, KC_RALT
+ ),
+ [_NUMS] = LAYOUT(
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSLASH,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+ [_SYMS] = LAYOUT(
+ KC_TILDE, KC_EXCLAIM, KC_AT, KC_HASH, KC_DOLLAR, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_MINUS, KC_PLUS, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+ [_FN] = 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_DELETE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/cocoa40/keymaps/default/readme.md b/keyboards/cocoa40/keymaps/default/readme.md
new file mode 100644
index 00000000000..9e530faff07
--- /dev/null
+++ b/keyboards/cocoa40/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for cocoa40
diff --git a/keyboards/cocoa40/keymaps/default/rules.mk b/keyboards/cocoa40/keymaps/default/rules.mk
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/keyboards/cocoa40/keymaps/default/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cocoa40/readme.md b/keyboards/cocoa40/readme.md
new file mode 100644
index 00000000000..e05caaba9c1
--- /dev/null
+++ b/keyboards/cocoa40/readme.md
@@ -0,0 +1,15 @@
+# cocoa40
+
+
+
+A 40% split keyboard for programmers.
+
+Keyboard Maintainer: [Naoto Takai](https://github.com/takai)
+Hardware Supported: The Cocoa40 PCBs, Pro Micro supported
+Hardware Availability: https://keys.recompile.net/projects/cocoa40/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cocoa40: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/cocoa40/rules.mk b/keyboards/cocoa40/rules.mk
new file mode 100644
index 00000000000..f7e529a4b2f
--- /dev/null
+++ b/keyboards/cocoa40/rules.mk
@@ -0,0 +1,81 @@
+# 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
+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
+#
+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 = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+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)
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/converter/usb_usb/custom_matrix.cpp b/keyboards/converter/usb_usb/custom_matrix.cpp
index 6f381aabf40..296f7fcd026 100644
--- a/keyboards/converter/usb_usb/custom_matrix.cpp
+++ b/keyboards/converter/usb_usb/custom_matrix.cpp
@@ -74,8 +74,6 @@ static bool matrix_is_mod = false;
* This supports two cascaded hubs and four keyboards
*/
USB usb_host;
-USBHub hub1(&usb_host);
-USBHub hub2(&usb_host);
HIDBoot kbd1(&usb_host);
HIDBoot kbd2(&usb_host);
HIDBoot kbd3(&usb_host);
@@ -84,6 +82,8 @@ KBDReportParser kbd_parser1;
KBDReportParser kbd_parser2;
KBDReportParser kbd_parser3;
KBDReportParser kbd_parser4;
+USBHub hub1(&usb_host);
+USBHub hub2(&usb_host);
extern "C"
@@ -252,10 +252,10 @@ extern "C"
void led_set(uint8_t usb_led)
{
- kbd1.SetReport(0, 0, 2, 0, 1, &usb_led);
- kbd2.SetReport(0, 0, 2, 0, 1, &usb_led);
- kbd3.SetReport(0, 0, 2, 0, 1, &usb_led);
- kbd4.SetReport(0, 0, 2, 0, 1, &usb_led);
+ if (kbd1.isReady()) kbd1.SetReport(0, 0, 2, 0, 1, &usb_led);
+ if (kbd2.isReady()) kbd2.SetReport(0, 0, 2, 0, 1, &usb_led);
+ if (kbd3.isReady()) kbd3.SetReport(0, 0, 2, 0, 1, &usb_led);
+ if (kbd4.isReady()) kbd4.SetReport(0, 0, 2, 0, 1, &usb_led);
led_set_kb(usb_led);
}
diff --git a/keyboards/coseyfannitutti/discipline/config.h b/keyboards/coseyfannitutti/discipline/config.h
new file mode 100644
index 00000000000..b3386f94d8f
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/config.h
@@ -0,0 +1,247 @@
+/*Copyright 2019 coseyfannitutti
+
+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"
+
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6869
+#define DEVICE_VER 0x0001
+#define MANUFACTURER coseyfannitutti
+#define PRODUCT DISCIPLINE
+#define DESCRIPTION 65% keyboard that can be assembled with only through hole components
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * 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 { B2, A1, B1, A0, B0 }
+#define MATRIX_COL_PINS { A2, B3, A3, B4, A4, D5, D6, C6, C5, C4, C3, C2, C1, C0, D7 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define NO_UART 1
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+// #define RGB_DI_PIN E2
+// #ifdef RGB_DI_PIN
+// #define RGBLED_NUM 16
+// #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
+
+/* 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.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
+
+/* 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_HELP H
+//#define MAGIC_KEY_HELP_ALT 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 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#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 B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#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
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#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_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
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
diff --git a/keyboards/coseyfannitutti/discipline/discipline.c b/keyboards/coseyfannitutti/discipline/discipline.c
new file mode 100644
index 00000000000..6a788ce0e8f
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/discipline.c
@@ -0,0 +1,24 @@
+/* Copyright 2019 coseyfannitutti
+ *
+ * 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 "discipline.h"
+
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+
+ matrix_init_user();
+}
diff --git a/keyboards/coseyfannitutti/discipline/discipline.h b/keyboards/coseyfannitutti/discipline/discipline.h
new file mode 100644
index 00000000000..1703a61284d
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/discipline.h
@@ -0,0 +1,78 @@
+/* Copyright 2019 coseyfannitutti
+ *
+ * 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 _x_ KC_NO
+
+#include "quantum.h"
+
+#define LAYOUT_65_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K49, K4A, K4B, K4C, K4D, K4E \
+) { \
+{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, _x_, K2D, K2E }, \
+{ K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+{ K40, K41, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \
+}
+
+#define LAYOUT_65_ansi_2_right_mods( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K49, K4A, K4C, K4D, K4E \
+) { \
+{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, _x_, K2D, K2E }, \
+{ K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+{ K40, K41, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, _x_, K4C, K4D, K4E} \
+}
+
+#define LAYOUT_wkl_ansi_2_right_mods( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K42, K46, K49, K4A, K4C, K4D, K4E \
+) { \
+{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, _x_, K2D, K2E }, \
+{ K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+{ K40, _x_, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, _x_, K4C, K4D, K4E} \
+}
+
+#define LAYOUT_wkl_ansi_3_right_mods( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K42, K46, K49, K4A, K4B, K4C, K4D, K4E \
+) { \
+{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, _x_, K2D, K2E }, \
+{ K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+{ K40, _x_, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \
+}
+
diff --git a/keyboards/coseyfannitutti/discipline/info.json b/keyboards/coseyfannitutti/discipline/info.json
new file mode 100644
index 00000000000..522e8006789
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/info.json
@@ -0,0 +1,21 @@
+{
+ "keyboard_name": "DISCIPLINE",
+ "url": "https://github.com/coseyfannitutti/discipline",
+ "maintainer": "coseyfannitutti",
+ "width": 16,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_65_ansi": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
+ },
+ "LAYOUT_65_ansi_2_right_mods": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.5}, {"label":"Fn", "x":11.5, "y":4, "w":1.5}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
+ },
+ "LAYOUT_wkl_ansi_2_right_mods": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":1.5, "y":4, "w":1.5}, {"x":3, "y":4, "w":7}, {"label":"Alt", "x":10, "y":4, "w":1.5}, {"label":"Fn", "x":11.5, "y":4, "w":1.5}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
+ },
+ "LAYOUT_wkl_ansi_3_right_mods": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":1.5, "y":4, "w":1.5}, {"x":3, "y":4, "w":7}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/coseyfannitutti/discipline/keymaps/67_ansi/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/67_ansi/keymap.c
new file mode 100644
index 00000000000..34410d54af9
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/keymaps/67_ansi/keymap.c
@@ -0,0 +1,68 @@
+/* Copyright 2019 COSEYFANNITUTTI
+ *
+ * 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 _BL 0
+#define _FL 1
+
+ /* Qwerty
+ * .---------------------------------------------------------------------------------------------.
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc | Ins |
+ * |---------------------------------------------------------------------------------------------+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Del |
+ * |---------------------------------------------------------------------------------------------+
+ * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | PgUp|
+ * |---------------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | U | Pgdn|
+ * |---------------------------------------------------------------------------------------------+
+ * | Ctrl | Win | Alt | Space | RAlt | FN ||||||| L | D | R |
+ * '---------------------------------------------------------------------------------------------'
+ */
+
+ /* FnLayer
+ * .---------------------------------------------------------------------------------------------.
+ * | ` ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DELETE |PNTSC|
+ * |---------------------------------------------------------------------------------------------+
+ * | Tab | | | |RESET| | | | | | |PAUSE| | \ | |
+ * |---------------------------------------------------------------------------------------------+
+ * | Caps | | | | | | | | | | | INS | Enter | HOME|
+ * |---------------------------------------------------------------------------------------------+
+ * | Shift | | | | | | | | | | | Shift |VOLUP| END |
+ * |---------------------------------------------------------------------------------------------+
+ * | Ctrl | Win | Alt | | RAlt| FN ||||||| L |VOLDN| R |
+ * '---------------------------------------------------------------------------------------------'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BL] = LAYOUT_65_ansi_2_right_mods(
+ 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_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_BSLS, KC_DEL,
+ 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, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ [_FL] = LAYOUT_65_ansi_2_right_mods(
+ /* esc 1 2 3 4 5 6 7 8 9 0 - = bkspc `~ */
+ 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,
+ /* tab Q W E R T Y U I O P [ ] \ delete*/
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS, KC_TRNS,
+ /* caps A S D F G H J K L ; ' enter pg up*/
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME,
+ /* shift Z X C V B N M , . / shift up pg dn*/
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_VOLU, KC_END,
+ /* ctrl win alt space alt fn ctrl left down right*/
+ KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_RALT, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS)
+};
diff --git a/keyboards/coseyfannitutti/discipline/keymaps/coseyfannitutti/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/coseyfannitutti/keymap.c
new file mode 100644
index 00000000000..cb14d23f103
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/keymaps/coseyfannitutti/keymap.c
@@ -0,0 +1,69 @@
+/* Copyright 2019 COSEYFANNITUTTI
+ *
+ * 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 _BL 0
+#define _FL 1
+
+ /* Qwerty
+ * .---------------------------------------------------------------------------------------------.
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc | Ins |
+ * |---------------------------------------------------------------------------------------------+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Del |
+ * |---------------------------------------------------------------------------------------------+
+ * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | PgUp|
+ * |---------------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | U | Pgdn|
+ * |---------------------------------------------------------------------------------------------+
+ * | Ctrl | Win | Alt | Space | RAlt | FN ||||||| L | D | R |
+ * '---------------------------------------------------------------------------------------------'
+ */
+
+ /* FnLayer
+ * .---------------------------------------------------------------------------------------------.
+ * | ` ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DELETE |PNTSC|
+ * |---------------------------------------------------------------------------------------------+
+ * | Tab | | | |RESET| | | | | | |PAUSE| | \ | |
+ * |---------------------------------------------------------------------------------------------+
+ * | Caps | | | | | | | | | | | INS | Enter | HOME|
+ * |---------------------------------------------------------------------------------------------+
+ * | Shift | | | | | | | | | | | Shift |VOLUP| END |
+ * |---------------------------------------------------------------------------------------------+
+ * | Ctrl | Win | Alt | | RAlt| FN ||||||| L |VOLDN| R |
+ * '---------------------------------------------------------------------------------------------'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BL] = LAYOUT_65_ansi_2_right_mods(
+ 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_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, MO(_FL),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ [_FL] = LAYOUT_65_ansi_2_right_mods(
+ /* esc 1 2 3 4 5 6 7 8 9 0 - = bkspc `~ */
+ 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,
+ /* tab Q W E R T Y U I O P [ ] \ delete*/
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS, KC_TRNS,
+ /* caps A S D F G H J K L ; ' enter pg up*/
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME,
+ /* shift Z X C V B N M , . / shift up pg dn*/
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_VOLU, KC_END,
+ /* ctrl win alt space alt fn left down right*/
+ KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_RALT, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS)
+};
+
diff --git a/keyboards/coseyfannitutti/discipline/keymaps/default/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/default/keymap.c
new file mode 100644
index 00000000000..da433c1a6b3
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/keymaps/default/keymap.c
@@ -0,0 +1,68 @@
+/* Copyright 2019 COSEYFANNITUTTI
+ *
+ * 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 _BL 0
+#define _FL 1
+
+ /* Qwerty
+ * .---------------------------------------------------------------------------------------------.
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc | Ins |
+ * |---------------------------------------------------------------------------------------------+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Del |
+ * |---------------------------------------------------------------------------------------------+
+ * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | PgUp|
+ * |---------------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | U | Pgdn|
+ * |---------------------------------------------------------------------------------------------+
+ * | Ctrl | Win | Alt | Space | RAlt | FN |RCtrl| L | D | R |
+ * '---------------------------------------------------------------------------------------------'
+ */
+
+ /* FnLayer
+ * .---------------------------------------------------------------------------------------------.
+ * | ` ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DELETE |PNTSC|
+ * |---------------------------------------------------------------------------------------------+
+ * | Tab | | | |RESET| | | | | | |PAUSE| | \ | |
+ * |---------------------------------------------------------------------------------------------+
+ * | Caps | | | | | | | | | | | INS | Enter | HOME|
+ * |---------------------------------------------------------------------------------------------+
+ * | Shift | | | | | | | | | | | Shift |VOLUP| END |
+ * |---------------------------------------------------------------------------------------------+
+ * | Ctrl | Win | Alt | | RAlt| FN |RCtrl| L |VOLDN| R |
+ * '---------------------------------------------------------------------------------------------'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BL] = 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_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_BSLS, KC_DEL,
+ 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, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ [_FL] = LAYOUT_65_ansi(
+ /* esc 1 2 3 4 5 6 7 8 9 0 - = bkspc `~ */
+ 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,
+ /* tab Q W E R T Y U I O P [ ] \ delete*/
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS, KC_TRNS,
+ /* caps A S D F G H J K L ; ' enter pg up*/
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME,
+ /* shift Z X C V B N M , . / shift up pg dn*/
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_VOLU, KC_END,
+ /* ctrl win alt space alt fn ctrl left down right*/
+ KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_RALT, KC_TRNS, KC_RCTL, KC_TRNS, KC_VOLD, KC_TRNS)
+};
diff --git a/keyboards/coseyfannitutti/discipline/keymaps/wkl_ansi_2_right_mods/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/wkl_ansi_2_right_mods/keymap.c
new file mode 100644
index 00000000000..01b1e21f110
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/keymaps/wkl_ansi_2_right_mods/keymap.c
@@ -0,0 +1,68 @@
+/* Copyright 2019 COSEYFANNITUTTI
+ *
+ * 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 _BL 0
+#define _FL 1
+
+ /* Qwerty
+ * .---------------------------------------------------------------------------------------------.
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc | Ins |
+ * |---------------------------------------------------------------------------------------------+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Del |
+ * |---------------------------------------------------------------------------------------------+
+ * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | PgUp|
+ * |---------------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | U | Pgdn|
+ * |---------------------------------------------------------------------------------------------+
+ * | Ctrl | Alt | Space | RAlt | FN | L | D | R |
+ * '---------------------------------------------------------------------------------------------'
+ */
+
+ /* FnLayer
+ * .---------------------------------------------------------------------------------------------.
+ * | ` ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DELETE |PNTSC|
+ * |---------------------------------------------------------------------------------------------+
+ * | Tab | | | |RESET| | | | | | |PAUSE| | \ | |
+ * |---------------------------------------------------------------------------------------------+
+ * | Caps | | | | | | | | | | | INS | Enter | HOME|
+ * |---------------------------------------------------------------------------------------------+
+ * | Shift | | | | | | | | | | | Shift |VOLUP| END |
+ * |---------------------------------------------------------------------------------------------+
+ * | Ctrl | Alt | | RAlt | FN | L |VOLDN| R |
+ * '---------------------------------------------------------------------------------------------'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BL] = LAYOUT_wkl_ansi_2_right_mods(
+ 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_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_BSLS, KC_DEL,
+ 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, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ [_FL] = LAYOUT_wkl_ansi_2_right_mods(
+ /* esc 1 2 3 4 5 6 7 8 9 0 - = bkspc `~ */
+ 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,
+ /* tab Q W E R T Y U I O P [ ] \ delete*/
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS, KC_TRNS,
+ /* caps A S D F G H J K L ; ' enter pg up*/
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME,
+ /* shift Z X C V B N M , . / shift up pg dn*/
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_VOLU, KC_END,
+ /* ctrl alt space alt fn left down right*/
+ KC_LCTL, KC_LALT, KC_TRNS, KC_RALT, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS)
+};
diff --git a/keyboards/coseyfannitutti/discipline/keymaps/wkl_ansi_3_right_mods/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/wkl_ansi_3_right_mods/keymap.c
new file mode 100644
index 00000000000..05f8810e6cf
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/keymaps/wkl_ansi_3_right_mods/keymap.c
@@ -0,0 +1,68 @@
+/* Copyright 2019 COSEYFANNITUTTI
+ *
+ * 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 _BL 0
+#define _FL 1
+
+ /* Qwerty
+ * .---------------------------------------------------------------------------------------------.
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc | Ins |
+ * |---------------------------------------------------------------------------------------------+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Del |
+ * |---------------------------------------------------------------------------------------------+
+ * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | PgUp|
+ * |---------------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | U | Pgdn|
+ * |---------------------------------------------------------------------------------------------+
+ * | Ctrl | Alt | Space | RAlt | FN |RCtrl| L | D | R |
+ * '---------------------------------------------------------------------------------------------'
+ */
+
+ /* FnLayer
+ * .---------------------------------------------------------------------------------------------.
+ * | ` ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DELETE |PNTSC|
+ * |---------------------------------------------------------------------------------------------+
+ * | Tab |STATC|BRTHE|RNBOW|RESET| | | | | | |PAUSE| | \ | |
+ * |---------------------------------------------------------------------------------------------+
+ * | Caps |RGBH+|RGBS+|RGBB+| | | | | | | | INS | Enter | HOME|
+ * |---------------------------------------------------------------------------------------------+
+ * | Shift |RGBH-|RGBS-|RGBB-| | | | |RGBM-|RGBM+|RGBTG| Shift |VOLUP| END |
+ * |---------------------------------------------------------------------------------------------+
+ * | Ctrl | Alt | | RAlt| FN |RCtrl| L |VOLDN| R |
+ * '---------------------------------------------------------------------------------------------'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BL] = LAYOUT_wkl_ansi_3_right_mods(
+ 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_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_BSLS, KC_DEL,
+ 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, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ [_FL] = LAYOUT_wkl_ansi_3_right_mods(
+ /* esc 1 2 3 4 5 6 7 8 9 0 - = bkspc `~ */
+ 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,
+ /* tab Q W E R T Y U I O P [ ] \ delete*/
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS, KC_TRNS,
+ /* caps A S D F G H J K L ; ' enter pg up*/
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME,
+ /* shift Z X C V B N M , . / shift up pg dn*/
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_VOLU, KC_END,
+ /* ctrl alt space alt fn ctrl left down right*/
+ KC_LCTL, KC_LALT, KC_TRNS, KC_RALT, KC_TRNS, KC_RCTL, KC_TRNS, KC_VOLD, KC_TRNS)
+};
diff --git a/keyboards/coseyfannitutti/discipline/readme.md b/keyboards/coseyfannitutti/discipline/readme.md
new file mode 100644
index 00000000000..d11f1724f65
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/readme.md
@@ -0,0 +1,15 @@
+# DISCIPLINE
+
+
+
+A 65% keyboard that can be assembled with only through hole components, including usb type-c
+
+Keyboard Maintainer: [coseyfannitutti](https://github.com/coseyfannitutti)
+Hardware Supported: DISCIPLINE, atmega32a
+Hardware Availability: [cftkb.com](http://www.cftkb.com), [GitHub](https://github.com/coseyfannitutti/discipline)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make coseyfannitutti/discipline: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/coseyfannitutti/discipline/rules.mk b/keyboards/coseyfannitutti/discipline/rules.mk
new file mode 100644
index 00000000000..bc81342de27
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/rules.mk
@@ -0,0 +1,91 @@
+# MCU name
+MCU = atmega32a
+PROTOCOL = VUSB
+
+# 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
+#
+# This uses usbaspbootloader
+BOOTLOADER = USBasp
+
+# 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
+
+# Flash program via avrdude, but default command is not suitable.
+# You can use plaid:default:program
+PROGRAM_CMD = avrdude -c usbasp -p m32 -U flash:w:$(BUILD_DIR)/$(TARGET).hex
+
+# disable debug code
+OPT_DEFS = -DDEBUG_LEVEL=0
+
+# 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 = 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 = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+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)
+
+# unsupported features for now
+NO_UART = yes
+NO_SUSPEND_POWER_DOWN = yes
+
+LAYOUTS = 65_ansi
diff --git a/keyboards/coseyfannitutti/discipline/usbconfig.h b/keyboards/coseyfannitutti/discipline/usbconfig.h
new file mode 100644
index 00000000000..f20ad2f9c7e
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/usbconfig.h
@@ -0,0 +1,397 @@
+/* Name: usbconfig.h
+ * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers
+ * Author: Christian Starkjohann
+ * Creation Date: 2005-04-01
+ * Tabsize: 4
+ * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH
+ * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
+ * This Revision: $Id: usbconfig-prototype.h 785 2010-05-30 17:57:07Z cs $
+ */
+
+#ifndef __usbconfig_h_included__
+#define __usbconfig_h_included__
+
+#include "config.h"
+
+/*
+General Description:
+This file is an example configuration (with inline documentation) for the USB
+driver. It configures V-USB for USB D+ connected to Port D bit 2 (which is
+also hardware interrupt 0 on many devices) and USB D- to Port D bit 4. You may
+wire the lines to any other port, as long as D+ is also wired to INT0 (or any
+other hardware interrupt, as long as it is the highest level interrupt, see
+section at the end of this file).
+*/
+
+/* ---------------------------- Hardware Config ---------------------------- */
+
+#define USB_CFG_IOPORTNAME D
+/* This is the port where the USB bus is connected. When you configure it to
+ * "B", the registers PORTB, PINB and DDRB will be used.
+ */
+#define USB_CFG_DMINUS_BIT 3
+/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
+ * This may be any bit in the port.
+ */
+#define USB_CFG_DPLUS_BIT 2
+/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
+ * This may be any bit in the port. Please note that D+ must also be connected
+ * to interrupt pin INT0! [You can also use other interrupts, see section
+ * "Optional MCU Description" below, or you can connect D- to the interrupt, as
+ * it is required if you use the USB_COUNT_SOF feature. If you use D- for the
+ * interrupt, the USB interrupt will also be triggered at Start-Of-Frame
+ * markers every millisecond.]
+ */
+#define USB_CFG_CLOCK_KHZ (F_CPU/1000)
+/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000,
+ * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code
+ * require no crystal, they tolerate +/- 1% deviation from the nominal
+ * frequency. All other rates require a precision of 2000 ppm and thus a
+ * crystal!
+ * Since F_CPU should be defined to your actual clock rate anyway, you should
+ * not need to modify this setting.
+ */
+#define USB_CFG_CHECK_CRC 0
+/* Define this to 1 if you want that the driver checks integrity of incoming
+ * data packets (CRC checks). CRC checks cost quite a bit of code size and are
+ * currently only available for 18 MHz crystal clock. You must choose
+ * USB_CFG_CLOCK_KHZ = 18000 if you enable this option.
+ */
+
+/* ----------------------- Optional Hardware Config ------------------------ */
+
+/* #define USB_CFG_PULLUP_IOPORTNAME D */
+/* If you connect the 1.5k pullup resistor from D- to a port pin instead of
+ * V+, you can connect and disconnect the device from firmware by calling
+ * the macros usbDeviceConnect() and usbDeviceDisconnect() (see usbdrv.h).
+ * This constant defines the port on which the pullup resistor is connected.
+ */
+/* #define USB_CFG_PULLUP_BIT 4 */
+/* This constant defines the bit number in USB_CFG_PULLUP_IOPORT (defined
+ * above) where the 1.5k pullup resistor is connected. See description
+ * above for details.
+ */
+
+/* --------------------------- Functional Range ---------------------------- */
+
+#define USB_CFG_HAVE_INTRIN_ENDPOINT 1
+/* Define this to 1 if you want to compile a version with two endpoints: The
+ * default control endpoint 0 and an interrupt-in endpoint (any other endpoint
+ * number).
+ */
+#define USB_CFG_HAVE_INTRIN_ENDPOINT3 1
+/* Define this to 1 if you want to compile a version with three endpoints: The
+ * default control endpoint 0, an interrupt-in endpoint 3 (or the number
+ * configured below) and a catch-all default interrupt-in endpoint as above.
+ * You must also define USB_CFG_HAVE_INTRIN_ENDPOINT to 1 for this feature.
+ */
+#define USB_CFG_EP3_NUMBER 3
+/* If the so-called endpoint 3 is used, it can now be configured to any other
+ * endpoint number (except 0) with this macro. Default if undefined is 3.
+ */
+/* #define USB_INITIAL_DATATOKEN USBPID_DATA1 */
+/* The above macro defines the startup condition for data toggling on the
+ * interrupt/bulk endpoints 1 and 3. Defaults to USBPID_DATA1.
+ * Since the token is toggled BEFORE sending any data, the first packet is
+ * sent with the oposite value of this configuration!
+ */
+#define USB_CFG_IMPLEMENT_HALT 0
+/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature
+ * for endpoint 1 (interrupt endpoint). Although you may not need this feature,
+ * it is required by the standard. We have made it a config option because it
+ * bloats the code considerably.
+ */
+#define USB_CFG_SUPPRESS_INTR_CODE 0
+/* Define this to 1 if you want to declare interrupt-in endpoints, but don't
+ * want to send any data over them. If this macro is defined to 1, functions
+ * usbSetInterrupt() and usbSetInterrupt3() are omitted. This is useful if
+ * you need the interrupt-in endpoints in order to comply to an interface
+ * (e.g. HID), but never want to send any data. This option saves a couple
+ * of bytes in flash memory and the transmit buffers in RAM.
+ */
+#define USB_CFG_INTR_POLL_INTERVAL 1
+/* If you compile a version with endpoint 1 (interrupt-in), this is the poll
+ * interval. The value is in milliseconds and must not be less than 10 ms for
+ * low speed devices.
+ */
+#define USB_CFG_IS_SELF_POWERED 0
+/* Define this to 1 if the device has its own power supply. Set it to 0 if the
+ * device is powered from the USB bus.
+ */
+// max power draw with maxed white underglow measured at 120 mA (peaks)
+#define USB_CFG_MAX_BUS_POWER 100
+/* Set this variable to the maximum USB bus power consumption of your device.
+ * The value is in milliamperes. [It will be divided by two since USB
+ * communicates power requirements in units of 2 mA.]
+ */
+#define USB_CFG_IMPLEMENT_FN_WRITE 1
+/* Set this to 1 if you want usbFunctionWrite() to be called for control-out
+ * transfers. Set it to 0 if you don't need it and want to save a couple of
+ * bytes.
+ */
+#define USB_CFG_IMPLEMENT_FN_READ 0
+/* Set this to 1 if you need to send control replies which are generated
+ * "on the fly" when usbFunctionRead() is called. If you only want to send
+ * data from a static buffer, set it to 0 and return the data from
+ * usbFunctionSetup(). This saves a couple of bytes.
+ */
+#define USB_CFG_IMPLEMENT_FN_WRITEOUT 0
+/* Define this to 1 if you want to use interrupt-out (or bulk out) endpoints.
+ * You must implement the function usbFunctionWriteOut() which receives all
+ * interrupt/bulk data sent to any endpoint other than 0. The endpoint number
+ * can be found in 'usbRxToken'.
+ */
+#define USB_CFG_HAVE_FLOWCONTROL 0
+/* Define this to 1 if you want flowcontrol over USB data. See the definition
+ * of the macros usbDisableAllRequests() and usbEnableAllRequests() in
+ * usbdrv.h.
+ */
+#define USB_CFG_DRIVER_FLASH_PAGE 0
+/* If the device has more than 64 kBytes of flash, define this to the 64 k page
+ * where the driver's constants (descriptors) are located. Or in other words:
+ * Define this to 1 for boot loaders on the ATMega128.
+ */
+#define USB_CFG_LONG_TRANSFERS 0
+/* Define this to 1 if you want to send/receive blocks of more than 254 bytes
+ * in a single control-in or control-out transfer. Note that the capability
+ * for long transfers increases the driver size.
+ */
+/* #define USB_RX_USER_HOOK(data, len) if(usbRxToken == (uchar)USBPID_SETUP) blinkLED(); */
+/* This macro is a hook if you want to do unconventional things. If it is
+ * defined, it's inserted at the beginning of received message processing.
+ * If you eat the received message and don't want default processing to
+ * proceed, do a return after doing your things. One possible application
+ * (besides debugging) is to flash a status LED on each packet.
+ */
+/* #define USB_RESET_HOOK(resetStarts) if(!resetStarts){hadUsbReset();} */
+/* This macro is a hook if you need to know when an USB RESET occurs. It has
+ * one parameter which distinguishes between the start of RESET state and its
+ * end.
+ */
+/* #define USB_SET_ADDRESS_HOOK() hadAddressAssigned(); */
+/* This macro (if defined) is executed when a USB SET_ADDRESS request was
+ * received.
+ */
+#define USB_COUNT_SOF 0
+/* define this macro to 1 if you need the global variable "usbSofCount" which
+ * counts SOF packets. This feature requires that the hardware interrupt is
+ * connected to D- instead of D+.
+ */
+/* #ifdef __ASSEMBLER__
+ * macro myAssemblerMacro
+ * in YL, TCNT0
+ * sts timer0Snapshot, YL
+ * endm
+ * #endif
+ * #define USB_SOF_HOOK myAssemblerMacro
+ * This macro (if defined) is executed in the assembler module when a
+ * Start Of Frame condition is detected. It is recommended to define it to
+ * the name of an assembler macro which is defined here as well so that more
+ * than one assembler instruction can be used. The macro may use the register
+ * YL and modify SREG. If it lasts longer than a couple of cycles, USB messages
+ * immediately after an SOF pulse may be lost and must be retried by the host.
+ * What can you do with this hook? Since the SOF signal occurs exactly every
+ * 1 ms (unless the host is in sleep mode), you can use it to tune OSCCAL in
+ * designs running on the internal RC oscillator.
+ * Please note that Start Of Frame detection works only if D- is wired to the
+ * interrupt, not D+. THIS IS DIFFERENT THAN MOST EXAMPLES!
+ */
+#define USB_CFG_CHECK_DATA_TOGGLING 0
+/* define this macro to 1 if you want to filter out duplicate data packets
+ * sent by the host. Duplicates occur only as a consequence of communication
+ * errors, when the host does not receive an ACK. Please note that you need to
+ * implement the filtering yourself in usbFunctionWriteOut() and
+ * usbFunctionWrite(). Use the global usbCurrentDataToken and a static variable
+ * for each control- and out-endpoint to check for duplicate packets.
+ */
+#define USB_CFG_HAVE_MEASURE_FRAME_LENGTH 0
+/* define this macro to 1 if you want the function usbMeasureFrameLength()
+ * compiled in. This function can be used to calibrate the AVR's RC oscillator.
+ */
+#define USB_USE_FAST_CRC 0
+/* The assembler module has two implementations for the CRC algorithm. One is
+ * faster, the other is smaller. This CRC routine is only used for transmitted
+ * messages where timing is not critical. The faster routine needs 31 cycles
+ * per byte while the smaller one needs 61 to 69 cycles. The faster routine
+ * may be worth the 32 bytes bigger code size if you transmit lots of data and
+ * run the AVR close to its limit.
+ */
+
+/* -------------------------- Device Description --------------------------- */
+
+#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+/* USB vendor ID for the device, low byte first. If you have registered your
+ * own Vendor ID, define it here. Otherwise you may use one of obdev's free
+ * shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
+ * *** IMPORTANT NOTE ***
+ * This template uses obdev's shared VID/PID pair for Vendor Class devices
+ * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
+ * the implications!
+ */
+#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+/* This is the ID of the product, low byte first. It is interpreted in the
+ * scope of the vendor ID. If you have registered your own VID with usb.org
+ * or if you have licensed a PID from somebody else, define it here. Otherwise
+ * you may use one of obdev's free shared VID/PID pairs. See the file
+ * USB-IDs-for-free.txt for details!
+ * *** IMPORTANT NOTE ***
+ * This template uses obdev's shared VID/PID pair for Vendor Class devices
+ * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
+ * the implications!
+ */
+#define USB_CFG_DEVICE_VERSION 0x01, 0x00
+/* Version number of the device: Minor number first, then major number.
+ */
+#define USB_CFG_VENDOR_NAME 'c','o','s','e','y','f','a','n','n','i','t','u','t','t','i'
+#define USB_CFG_VENDOR_NAME_LEN 15
+/* These two values define the vendor name returned by the USB device. The name
+ * must be given as a list of characters under single quotes. The characters
+ * are interpreted as Unicode (UTF-16) entities.
+ * If you don't want a vendor name string, undefine these macros.
+ * ALWAYS define a vendor name containing your Internet domain name if you use
+ * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
+ * details.
+ */
+#define USB_CFG_DEVICE_NAME 'D','I','S','C','I','P','L','I','N','E'
+#define USB_CFG_DEVICE_NAME_LEN 10
+/* Same as above for the device name. If you don't want a device name, undefine
+ * the macros. See the file USB-IDs-for-free.txt before you assign a name if
+ * you use a shared VID/PID.
+ */
+#define USB_CFG_SERIAL_NUMBER '0'
+#define USB_CFG_SERIAL_NUMBER_LEN 1
+/* Same as above for the serial number. If you don't want a serial number,
+ * undefine the macros.
+ * It may be useful to provide the serial number through other means than at
+ * compile time. See the section about descriptor properties below for how
+ * to fine tune control over USB descriptors such as the string descriptor
+ * for the serial number.
+ */
+#define USB_CFG_DEVICE_CLASS 0
+#define USB_CFG_DEVICE_SUBCLASS 0
+/* See USB specification if you want to conform to an existing device class.
+ * Class 0xff is "vendor specific".
+ */
+#define USB_CFG_INTERFACE_CLASS 3 /* HID */
+#define USB_CFG_INTERFACE_SUBCLASS 1 /* Boot */
+#define USB_CFG_INTERFACE_PROTOCOL 1 /* Keyboard */
+/* See USB specification if you want to conform to an existing device class or
+ * protocol. The following classes must be set at interface level:
+ * HID class is 3, no subclass and protocol required (but may be useful!)
+ * CDC class is 2, use subclass 2 and protocol 1 for ACM
+ */
+#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0
+/* Define this to the length of the HID report descriptor, if you implement
+ * an HID device. Otherwise don't define it or define it to 0.
+ * If you use this define, you must add a PROGMEM character array named
+ * "usbHidReportDescriptor" to your code which contains the report descriptor.
+ * Don't forget to keep the array and this define in sync!
+ */
+
+/* #define USB_PUBLIC static */
+/* Use the define above if you #include usbdrv.c instead of linking against it.
+ * This technique saves a couple of bytes in flash memory.
+ */
+
+/* ------------------- Fine Control over USB Descriptors ------------------- */
+/* If you don't want to use the driver's default USB descriptors, you can
+ * provide our own. These can be provided as (1) fixed length static data in
+ * flash memory, (2) fixed length static data in RAM or (3) dynamically at
+ * runtime in the function usbFunctionDescriptor(). See usbdrv.h for more
+ * information about this function.
+ * Descriptor handling is configured through the descriptor's properties. If
+ * no properties are defined or if they are 0, the default descriptor is used.
+ * Possible properties are:
+ * + USB_PROP_IS_DYNAMIC: The data for the descriptor should be fetched
+ * at runtime via usbFunctionDescriptor(). If the usbMsgPtr mechanism is
+ * used, the data is in FLASH by default. Add property USB_PROP_IS_RAM if
+ * you want RAM pointers.
+ * + USB_PROP_IS_RAM: The data returned by usbFunctionDescriptor() or found
+ * in static memory is in RAM, not in flash memory.
+ * + USB_PROP_LENGTH(len): If the data is in static memory (RAM or flash),
+ * the driver must know the descriptor's length. The descriptor itself is
+ * found at the address of a well known identifier (see below).
+ * List of static descriptor names (must be declared PROGMEM if in flash):
+ * char usbDescriptorDevice[];
+ * char usbDescriptorConfiguration[];
+ * char usbDescriptorHidReport[];
+ * char usbDescriptorString0[];
+ * int usbDescriptorStringVendor[];
+ * int usbDescriptorStringDevice[];
+ * int usbDescriptorStringSerialNumber[];
+ * Other descriptors can't be provided statically, they must be provided
+ * dynamically at runtime.
+ *
+ * Descriptor properties are or-ed or added together, e.g.:
+ * #define USB_CFG_DESCR_PROPS_DEVICE (USB_PROP_IS_RAM | USB_PROP_LENGTH(18))
+ *
+ * The following descriptors are defined:
+ * USB_CFG_DESCR_PROPS_DEVICE
+ * USB_CFG_DESCR_PROPS_CONFIGURATION
+ * USB_CFG_DESCR_PROPS_STRINGS
+ * USB_CFG_DESCR_PROPS_STRING_0
+ * USB_CFG_DESCR_PROPS_STRING_VENDOR
+ * USB_CFG_DESCR_PROPS_STRING_PRODUCT
+ * USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER
+ * USB_CFG_DESCR_PROPS_HID
+ * USB_CFG_DESCR_PROPS_HID_REPORT
+ * USB_CFG_DESCR_PROPS_UNKNOWN (for all descriptors not handled by the driver)
+ *
+ * Note about string descriptors: String descriptors are not just strings, they
+ * are Unicode strings prefixed with a 2 byte header. Example:
+ * int serialNumberDescriptor[] = {
+ * USB_STRING_DESCRIPTOR_HEADER(6),
+ * 'S', 'e', 'r', 'i', 'a', 'l'
+ * };
+ */
+
+#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
+#define USB_CFG_DESCR_PROPS_STRINGS 0
+#define USB_CFG_DESCR_PROPS_STRING_0 0
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_HID 0
+#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
+#define USB_CFG_DESCR_PROPS_UNKNOWN 0
+
+#define usbMsgPtr_t unsigned short
+/* If usbMsgPtr_t is not defined, it defaults to 'uchar *'. We define it to
+ * a scalar type here because gcc generates slightly shorter code for scalar
+ * arithmetics than for pointer arithmetics. Remove this define for backward
+ * type compatibility or define it to an 8 bit type if you use data in RAM only
+ * and all RAM is below 256 bytes (tiny memory model in IAR CC).
+ */
+
+/* ----------------------- Optional MCU Description ------------------------ */
+
+/* The following configurations have working defaults in usbdrv.h. You
+ * usually don't need to set them explicitly. Only if you want to run
+ * the driver on a device which is not yet supported or with a compiler
+ * which is not fully supported (such as IAR C) or if you use a differnt
+ * interrupt than INT0, you may have to define some of these.
+ */
+/* #define USB_INTR_CFG MCUCR */
+/* #define USB_INTR_CFG_SET ((1 << ISC00) | (1 << ISC01)) */
+/* #define USB_INTR_CFG_CLR 0 */
+/* #define USB_INTR_ENABLE GIMSK */
+/* #define USB_INTR_ENABLE_BIT INT0 */
+/* #define USB_INTR_PENDING GIFR */
+/* #define USB_INTR_PENDING_BIT INTF0 */
+/* #define USB_INTR_VECTOR INT0_vect */
+
+/* Set INT1 for D- falling edge to count SOF */
+/* #define USB_INTR_CFG EICRA */
+// #define USB_INTR_CFG_SET ((1 << ISC11) | (0 << ISC10))
+// /* #define USB_INTR_CFG_CLR 0 */
+// /* #define USB_INTR_ENABLE EIMSK */
+// #define USB_INTR_ENABLE_BIT INT1
+// /* #define USB_INTR_PENDING EIFR */
+// #define USB_INTR_PENDING_BIT INTF1
+// #define USB_INTR_VECTOR INT1_vect
+
+#endif /* __usbconfig_h_included__ */
diff --git a/keyboards/crkbd/keymaps/default/config.h b/keyboards/crkbd/keymaps/default/config.h
index 8daf1b00dd0..899fde008de 100644
--- a/keyboards/crkbd/keymaps/default/config.h
+++ b/keyboards/crkbd/keymaps/default/config.h
@@ -36,11 +36,11 @@ along with this program. If not, see .
#define TAPPING_TERM 100
#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
+ #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/default/keymap.c b/keyboards/crkbd/keymaps/default/keymap.c
index 26055cf69ad..40bf9b65863 100644
--- a/keyboards/crkbd/keymaps/default/keymap.c
+++ b/keyboards/crkbd/keymaps/default/keymap.c
@@ -31,70 +31,52 @@ enum macro_keycodes {
KC_SAMPLEMACRO,
};
-#define KC______ KC_TRNS
-#define KC_XXXXX KC_NO
-#define KC_LOWER LOWER
-#define KC_RAISE RAISE
-#define KC_RST RESET
-#define KC_LRST RGBRST
-#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)
-#define KC_GUIEI GUI_T(KC_LANG2)
-#define KC_ALTKN ALT_T(KC_LANG1)
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT_kc( \
+ [_QWERTY] = LAYOUT( \
//,-----------------------------------------. ,-----------------------------------------.
- ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC,\
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_BSPC,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- CTLTB, A, S, D, F, G, H, J, K, L, SCLN, QUOT,\
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT,\
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,\
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
+ KC_LGUI, LOWER,KC_SPC, KC_ENT, RAISE,KC_RALT \
//`--------------------' `--------------------'
),
- [_LOWER] = LAYOUT_kc( \
+ [_LOWER] = LAYOUT( \
//,-----------------------------------------. ,-----------------------------------------.
- ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC,\
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_BSPC,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- CTLTB, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, XXXXX,\
+ KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT,KC_NO,KC_NO,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- LSFT, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, XXXXX,\
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
+ KC_LGUI, LOWER,KC_SPC, KC_ENT, RAISE,KC_RALT \
//`--------------------' `--------------------'
),
- [_RAISE] = LAYOUT_kc( \
+ [_RAISE] = LAYOUT( \
//,-----------------------------------------. ,-----------------------------------------.
- ESC, EXLM, AT, HASH, DLR, PERC, CIRC, AMPR, ASTR, LPRN, RPRN, BSPC,\
+ KC_ESC,KC_EXLM,KC_AT,KC_HASH,KC_DLR,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSPC,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- CTLTB, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, MINS, EQL, LCBR, RCBR, PIPE, GRV,\
+ KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS,KC_EQL,KC_LCBR,KC_RCBR,KC_PIPE,KC_GRV,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- LSFT, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, UNDS, PLUS, LBRC, RBRC, BSLS, TILD,\
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS,KC_TILD,\
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
+ KC_LGUI, LOWER,KC_SPC, KC_ENT, RAISE,KC_RALT \
//`--------------------' `--------------------'
),
- [_ADJUST] = LAYOUT_kc( \
+ [_ADJUST] = LAYOUT( \
//,-----------------------------------------. ,-----------------------------------------.
- RST, LRST, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
+ RESET,RGBRST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
+ RGB_TOG,RGB_HUI,RGB_SAI,RGB_VAI,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- LMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
+ RGB_MOD,RGB_HUD,RGB_SAD,RGB_VAD,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
+ KC_LGUI, LOWER,KC_SPC, KC_ENT, RAISE,KC_RALT \
//`--------------------' `--------------------'
)
};
@@ -149,7 +131,7 @@ void matrix_render_user(struct CharacterMatrix *matrix) {
// 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_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());
@@ -187,7 +169,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
persistent_default_layer_set(1UL<<_QWERTY);
}
return false;
- break;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
@@ -197,7 +178,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
}
return false;
- break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
@@ -207,7 +187,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
}
return false;
- break;
case ADJUST:
if (record->event.pressed) {
layer_on(_ADJUST);
@@ -215,7 +194,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
layer_off(_ADJUST);
}
return false;
- break;
case RGB_MOD:
#ifdef RGBLIGHT_ENABLE
if (record->event.pressed) {
@@ -225,7 +203,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
#endif
return false;
- break;
case RGBRST:
#ifdef RGBLIGHT_ENABLE
if (record->event.pressed) {
diff --git a/keyboards/crkbd/keymaps/drashna/config.h b/keyboards/crkbd/keymaps/drashna/config.h
index 724d52c38c1..d35f723dac7 100644
--- a/keyboards/crkbd/keymaps/drashna/config.h
+++ b/keyboards/crkbd/keymaps/drashna/config.h
@@ -20,7 +20,6 @@ along with this program. If not, see .
#pragma once
-
/* Select hand configuration */
// #define MASTER_LEFT
@@ -36,52 +35,31 @@ along with this program. If not, see .
// #define TAPPING_TERM 100
#ifdef RGBLIGHT_ENABLE
-# undef RGBLED_NUM
-# define RGBLED_NUM 27
+# undef RGBLED_NUM
+# define RGBLED_NUM 27
-# define RGBLIGHT_HUE_STEP 8
-# define RGBLIGHT_SAT_STEP 8
-# define RGBLIGHT_VAL_STEP 8
-# define RGBLIGHT_LIMIT_VAL 100
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 5
+# define RGBLIGHT_LIMIT_VAL 150
#endif
#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_FRAMEBUFFER_EFFECTS
-
-// # 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_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
+# 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_VAL_STEP 5
+# define RGB_MATRIX_SPD_STEP 10
#endif
#ifdef AUDIO_ENABLE
-# define B6_AUDIO
+# define B6_AUDIO
// #define NO_MUSIC_MODE
#endif
@@ -92,4 +70,5 @@ along with this program. If not, see .
// #define OLED_FONT_WIDTH 5
// #define OLED_FONT_HEIGHT 7
+#define OLED_DISABLE_TIMEOUT
#define TAPPING_TERM_PER_KEY
diff --git a/keyboards/crkbd/keymaps/drashna/keymap.c b/keyboards/crkbd/keymaps/drashna/keymap.c
index af0bc0d9a74..693c53b1675 100644
--- a/keyboards/crkbd/keymaps/drashna/keymap.c
+++ b/keyboards/crkbd/keymaps/drashna/keymap.c
@@ -2,17 +2,16 @@
#include "drashna.h"
extern keymap_config_t keymap_config;
-extern uint8_t is_master;
+extern uint8_t is_master;
#ifdef RGBLIGHT_ENABLE
-//Following line allows macro to read current RGB settings
+// Following line allows macro to read current RGB settings
extern rgblight_config_t rgblight_config;
#endif
-enum crkbd_keycodes {
- RGBRST = NEW_SAFE_RANGE
-};
+enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE };
+// clang-format off
#define LAYOUT_crkbd_base( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
@@ -103,60 +102,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_NUKE, _______, _______, TG_MODS, _______
)
};
-
-void matrix_init_keymap(void) {
-#ifndef CONVERT_TO_PROTON_C
- setPinOutput(D5);
- writePinHigh(D5);
-
- setPinOutput(B0);
- writePinHigh(B0);
-#endif
-}
-
+// clang-format on
#ifdef OLED_DRIVER_ENABLE
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- if (is_master) {
- return OLED_ROTATION_270;
- } else {
- return rotation;
- }
-}
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
+uint16_t oled_timer;
-void render_crkbd_logo(void) {
- static const char PROGMEM crkbd_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(crkbd_logo, false);
-}
+char keylog_str[5] = {};
+uint8_t keylogs_str_idx = 0;
+uint16_t log_timer = 0;
-#define KEYLOG_LEN (int)(32 / OLED_FONT_WIDTH)
-char keylog_str[KEYLOG_LEN] = {};
-uint8_t keylogs_str_idx = 0;
-uint16_t log_timer = 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', '_', '-', '=', '[', ']', '\\',
- '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
+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 add_keylog(uint16_t keycode) {
- if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
- (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
+ keycode = keycode & 0xFF;
+ }
- for (uint8_t i = KEYLOG_LEN - 1; i > 0; i--) {
+ 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];
}
- keylog_str[KEYLOG_LEN] = 0;
+ keylog_str[5] = 0;
log_timer = timer_read();
}
@@ -167,94 +136,153 @@ void update_log(void) {
}
}
-
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) { add_keylog(keycode); }
+ if (record->event.pressed) {
+ add_keylog(keycode);
+ oled_timer = timer_read();
+ }
return true;
}
-void render_status(void) {
+void render_rgb_status(void) {
+ oled_write_ln("RGB:", false);
+ static char temp[20] = {0};
+ snprintf(temp, sizeof(temp) + 1, "M:%3dH:%3dS:%3dV:%3d", rgb_matrix_config.mode, rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v);
+ oled_write(temp, false);
+}
- oled_write_P(PSTR("Layer"), false);
- switch (biton32(layer_state)) {
- case 0:
- oled_write_P(PSTR("Base "), false);
- break;
- case _RAISE:
- oled_write_P(PSTR("Raise"), false);
- break;
- case _LOWER:
- oled_write_P(PSTR("Lower"), false);
- break;
- case _ADJUST:
- oled_write_P(PSTR("Adjst"), false);
- break;
- default:
- oled_write_P(PSTR("Unkn "), false);
- break;
- }
- oled_write_P(PSTR("Lyout"), false);
+void render_status_main(void) {
+ /* Show Keyboard Layout */
+ oled_write("Lyout", false);
switch (biton32(default_layer_state)) {
case _QWERTY:
- oled_write_P(PSTR("QWRTY"), false);
+ oled_write(" QRTY", false);
break;
case _COLEMAK:
- oled_write_P(PSTR("COLMK"), false);
+ oled_write(" COLE", false);
break;
case _DVORAK:
- oled_write_P(PSTR("DVRAK"), false);
+ oled_write(" DVRK", false);
break;
case _WORKMAN:
- oled_write_P(PSTR("WRKMN"), false);
+ oled_write(" WKMN", false);
break;
case _NORMAN:
- oled_write_P(PSTR("NORMN"), false);
+ oled_write(" NORM", false);
break;
case _MALTRON:
- oled_write_P(PSTR("MLTRN"), false);
+ oled_write(" MLTN", false);
break;
case _EUCALYN:
- oled_write_P(PSTR("ECLYN"), false);
+ oled_write(" ECLN", false);
break;
case _CARPLAX:
- oled_write_P(PSTR("CRPLX"), false);
+ oled_write(" CRPX", false);
break;
}
- uint8_t modifiers = get_mods();
- uint8_t one_shot = get_oneshot_mods();
-
- oled_write_P(PSTR("Mods:"), false);
- oled_write_P( (modifiers & MOD_MASK_SHIFT || one_shot & MOD_MASK_SHIFT) ? PSTR(" SFT ") : PSTR(" "), false);
- oled_write_P( (modifiers & MOD_MASK_CTRL || one_shot & MOD_MASK_CTRL ) ? PSTR(" CTL ") : PSTR(" "), false);
- oled_write_P( (modifiers & MOD_MASK_ALT || one_shot & MOD_MASK_ALT ) ? PSTR(" ALT ") : PSTR(" "), false);
- oled_write_P( (modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI ) ? PSTR(" GUI ") : PSTR(" "), false);
-
-
- oled_write_P(PSTR("BTMGK"), false);
-
- if (keymap_config.swap_lalt_lgui) {
- oled_write_P(PSTR(" Mac "), false);
- } else {
- oled_write_P(PSTR(" Win "), false);
- }
-
+ /* Show Lock Status (only work on master side) */
uint8_t led_usb_state = host_keyboard_leds();
- oled_write_P(PSTR("Lock:"), false);
- oled_write_P(led_usb_state & (1< 60000) {
+ oled_off();
+ return;
+ }
if (is_master) {
- render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
+ render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
} else {
- render_crkbd_logo();
- oled_scroll_left(); // Turns on scrolling
+ render_status_secondary();
}
}
@@ -272,57 +300,82 @@ uint16_t get_tapping_term(uint16_t keycode) {
#ifdef RGB_MATRIX_ENABLE
+static bool is_suspended;
+static bool rgb_matrix_enabled;
+
void suspend_power_down_keymap(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();
+ }
}
void suspend_wakeup_init_keymap(void) {
rgb_matrix_set_suspend_state(false);
+ is_suspended = false;
+ if (rgb_matrix_enabled) {
+ rgb_matrix_enable_noeeprom();
+ }
}
-
void rgb_matrix_indicators_user(void) {
- if ( userspace_config.rgb_layer_change &&
-#ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
+ if (userspace_config.rgb_layer_change &&
+# ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
!g_suspend_state &&
-#endif
-#if defined(RGBLIGHT_ENABLE)
+# endif
+# if defined(RGBLIGHT_ENABLE)
(!rgblight_config.enable && rgb_matrix_config.enable)
-#else
+# else
rgb_matrix_config.enable
-#endif
+# endif
) {
switch (biton32(layer_state)) {
- case _MODS:
- rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, LED_FLAG_UNDERGLOW); break;
case _GAMEPAD:
- rgb_matrix_layer_helper(0xFF, 0x80, 0x00, LED_FLAG_UNDERGLOW); break;
+ rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
case _DIABLO:
- rgb_matrix_layer_helper(0xFF, 0x00, 0x00, LED_FLAG_UNDERGLOW); break;
+ rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
case _RAISE:
- rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, LED_FLAG_UNDERGLOW); break;
+ rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
case _LOWER:
- rgb_matrix_layer_helper(0x00, 0xFF, 0x00, LED_FLAG_UNDERGLOW); break;
+ rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
case _ADJUST:
- rgb_matrix_layer_helper(0xFF, 0x00, 0x00, LED_FLAG_UNDERGLOW); break;
- default:
+ rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
+ default: {
+ bool mods_enabled = IS_LAYER_ON(_MODS);
switch (biton32(default_layer_state)) {
case _QWERTY:
- rgb_matrix_layer_helper(0x00, 0xFF, 0xFF, LED_FLAG_UNDERGLOW); break;
+ rgb_matrix_layer_helper(HSV_CYAN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
case _COLEMAK:
- rgb_matrix_layer_helper(0xFF, 0x00, 0xFF, LED_FLAG_UNDERGLOW); break;
+ rgb_matrix_layer_helper(HSV_MAGENTA, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
case _DVORAK:
- rgb_matrix_layer_helper(0x00, 0xFF, 0x00, LED_FLAG_UNDERGLOW); break;
+ rgb_matrix_layer_helper(HSV_SPRINGGREEN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
case _WORKMAN:
- rgb_matrix_layer_helper(0xD9, 0xA5, 0x21, LED_FLAG_UNDERGLOW); break;
+ rgb_matrix_layer_helper(HSV_GOLDENROD, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
case _NORMAN:
- rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D, LED_FLAG_UNDERGLOW); break;
+ rgb_matrix_layer_helper(HSV_CORAL, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
case _MALTRON:
- rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, LED_FLAG_UNDERGLOW); break;
+ rgb_matrix_layer_helper(HSV_YELLOW, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
case _EUCALYN:
- rgb_matrix_layer_helper(0xFF, 0x80, 0xBF, LED_FLAG_UNDERGLOW); break;
+ rgb_matrix_layer_helper(HSV_PINK, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
case _CARPLAX:
- rgb_matrix_layer_helper(0x00, 0x00, 0xFF, LED_FLAG_UNDERGLOW); break;
+ rgb_matrix_layer_helper(HSV_BLUE, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
+ break;
}
+ break;
+ }
}
}
}
diff --git a/keyboards/crkbd/keymaps/drashna/rules.mk b/keyboards/crkbd/keymaps/drashna/rules.mk
index 39b48f9447c..af340459716 100644
--- a/keyboards/crkbd/keymaps/drashna/rules.mk
+++ b/keyboards/crkbd/keymaps/drashna/rules.mk
@@ -16,7 +16,6 @@ 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
-RGBLIGHT_STARTUP_ANIMATION = yes
RGB_MATRIX_ENABLE = WS2812
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
@@ -25,7 +24,3 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BOOTLOADER = qmk-dfu
OLED_DRIVER_ENABLE = yes
-
-ifneq ($(strip $(OLED_DRIVER_ENABLE)), yes)
- RGB_MATRIX_SPLIT_RIGHT=yes
-endif
diff --git a/keyboards/crkbd/keymaps/foostan/config.h b/keyboards/crkbd/keymaps/foostan/config.h
new file mode 100644
index 00000000000..644e8136509
--- /dev/null
+++ b/keyboards/crkbd/keymaps/foostan/config.h
@@ -0,0 +1,44 @@
+/*
+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
+
+#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
diff --git a/keyboards/crkbd/keymaps/foostan/keymap.c b/keyboards/crkbd/keymaps/foostan/keymap.c
new file mode 100644
index 00000000000..5235b783637
--- /dev/null
+++ b/keyboards/crkbd/keymaps/foostan/keymap.c
@@ -0,0 +1,241 @@
+#include QMK_KEYBOARD_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
+//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,
+ BACKLIT,
+ RGBRST
+};
+
+enum macro_keycodes {
+ KC_SAMPLEMACRO,
+};
+
+#define KC______ KC_TRNS
+#define KC_XXXXX KC_NO
+#define KC_LOWER LOWER
+#define KC_RAISE RAISE
+#define KC_RST RESET
+#define KC_LRST RGBRST
+#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_GUIEI GUI_T(KC_LANG2)
+#define KC_ALTKN ALT_T(KC_LANG1)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_kc( \
+ //,-----------------------------------------. ,-----------------------------------------.
+ TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ESC,\
+ //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
+ //`--------------------' `--------------------'
+ ),
+
+ [_LOWER] = LAYOUT_kc( \
+ //,-----------------------------------------. ,-----------------------------------------.
+ TAB, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ LCTL, F1, F2, F3, F4, F5, LEFT, DOWN, UP, RIGHT, XXXXX, XXXXX,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ LSFT, F6, F7, F8, F9, F10, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
+ //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
+ //`--------------------' `--------------------'
+ ),
+
+ [_RAISE] = LAYOUT_kc( \
+ //,-----------------------------------------. ,-----------------------------------------.
+ TAB, EXLM, AT, HASH, DLR, PERC, CIRC, AMPR, ASTR, LPRN, RPRN, BSPC,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ LCTL, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, MINS, EQL, LCBR, RCBR, PIPE, GRV,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ LSFT, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, UNDS, PLUS, LBRC, RBRC, BSLS, TILD,\
+ //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
+ //`--------------------' `--------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_kc( \
+ //,-----------------------------------------. ,-----------------------------------------.
+ RST, LRST, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
+ //|------+------+------+------+------+------| |------+------+------+------+------+------|
+ LMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
+ //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
+ //`--------------------' `--------------------'
+ )
+};
+
+int RGB_current_mode;
+
+void persistent_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
+
+// 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 QWERTY:
+ if (record->event.pressed) {
+ persistent_default_layer_set(1UL<<_QWERTY);
+ }
+ return false;
+ 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 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;
+ 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;
+}
diff --git a/keyboards/crkbd/keymaps/foostan/rules.mk b/keyboards/crkbd/keymaps/foostan/rules.mk
new file mode 100644
index 00000000000..f84e5b2af86
--- /dev/null
+++ b/keyboards/crkbd/keymaps/foostan/rules.mk
@@ -0,0 +1,10 @@
+
+# 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 \
diff --git a/keyboards/crkbd/readme.md b/keyboards/crkbd/readme.md
index 591fdfe0da9..2f599544a56 100644
--- a/keyboards/crkbd/readme.md
+++ b/keyboards/crkbd/readme.md
@@ -1,5 +1,6 @@
-Crkbd
-===
+# Corne Keyboard (CRKBD)
+
+Also known (incorrectly) as the `HeliDox`.

@@ -13,6 +14,80 @@ Hardware Availability: [PCB & Case Data](https://github.com/foostan/crkbd)
Make example for this keyboard (after setting up your build environment):
- make crkbd:default
+```sh
+make crkbd: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).
+
+## RGB Matrix
+The Corne Keyboard also supports using the RGB Matrix feature, in place of RGB Light. This provids a better experience when using the keyboard, as it supports a number of per key effects properly. If you're not using the in switch LEDs, then you may want to pass on doing this.
+
+In your keymap's `rules.mk` file, add the following:
+
+```make
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = WS2812
+```
+
+And in your `config.h` file, add the following:
+
+```c
+
+#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_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_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
+```
+
+However, to properly handle the LED matrix, two LED maps had to be used. One for the left half, and one for the right half. For the left, you don't need to do anything. That's the default setup. But for the right side, you need to add `RGB_MATRIX_SPLIT_RIGHT=yes` needs to be added to the command.
+
+First, compile and flash the left half. Then when that's done, recompile with the setting above. It should look something like:
+
+```sh
+make crkbd:default RGB_MATRIX_SPLIT_RIGHT=yes
+```
+And then flash this new firmware image.
+
+After this is done, you should be able to use the normal RGB keycodes, but you'll see the RGB Matrix effects in use, giving a much better experience.
diff --git a/keyboards/crkbd/rev1/rev1.h b/keyboards/crkbd/rev1/rev1.h
index ef69f150e6a..9023248e28f 100644
--- a/keyboards/crkbd/rev1/rev1.h
+++ b/keyboards/crkbd/rev1/rev1.h
@@ -2,26 +2,27 @@
#include "crkbd.h"
-//void promicro_bootloader_jmp(bool program);
+// void promicro_bootloader_jmp(bool program);
#include "quantum.h"
#ifdef PROTOCOL_LUFA
- #include "lufa.h"
- #include "split_util.h"
+ #include "lufa.h"
+ #include "split_util.h"
#endif
#ifdef SSD1306OLED
- #include "ssd1306.h"
+ #include "ssd1306.h"
#endif
#ifdef USE_I2C
-#include
-#ifdef __AVR__
- #include
- #include
-#endif
+ #include
+ #ifdef __AVR__
+ #include
+ #include
+ #endif
#endif
+// clang-format off
//void promicro_bootloader_jmp(bool program);
#define LAYOUT( \
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
@@ -52,3 +53,4 @@
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_##R30, KC_##R31, KC_##R32 \
)
+// clang-format on
diff --git a/keyboards/donutcables/budget96/config.h b/keyboards/donutcables/budget96/config.h
index 75aacb4d4fe..b8772fc8656 100644
--- a/keyboards/donutcables/budget96/config.h
+++ b/keyboards/donutcables/budget96/config.h
@@ -36,6 +36,5 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define NO_BACKLIGHT_CLOCK
#define BACKLIGHT_LEVELS 1
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/dumbpad/config.h b/keyboards/dumbpad/config.h
new file mode 100644
index 00000000000..a7d4e7b3c8c
--- /dev/null
+++ b/keyboards/dumbpad/config.h
@@ -0,0 +1,259 @@
+/*
+Copyright 2019 imchipwood
+
+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 0xDEAF
+#define PRODUCT_ID 0x0913
+#define DEVICE_VER 0x0001
+#define MANUFACTURER imchipwood
+#define PRODUCT dumbpad
+#define DESCRIPTION 4x4 macro/numpad with rotary encoder
+
+
+/*
+ * 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_ROWS 4
+#define MATRIX_COLS 5
+#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
+#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Rotary encoder */
+#define ENCODERS_PAD_A { D0 }
+#define ENCODERS_PAD_B { D4 }
+
+/* Bootmagic - hold down rotary encoder pushbutton while plugging in to enter bootloader */
+#define BOOTMAGIC_LITE_ROW 3
+#define BOOTMAGIC_LITE_COLUMN 0
+
+
+/* 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
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+// #define RGB_DI_PIN E2
+// #ifdef RGB_DI_PIN
+// #define RGBLED_NUM 16
+// #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
+// /*== customize breathing effect ==*/
+// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+// /*==== use exp() and sin() ====*/
+// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+// #endif
+
+/* 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.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
+
+/* 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_HELP H
+//#define MAGIC_KEY_HELP_ALT 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 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#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 B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#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
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#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_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
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/dumbpad/dumbpad.c b/keyboards/dumbpad/dumbpad.c
new file mode 100644
index 00000000000..b53856237c0
--- /dev/null
+++ b/keyboards/dumbpad/dumbpad.c
@@ -0,0 +1,51 @@
+/* Copyright 2019 Chip
+ *
+ * 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 "dumbpad.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/dumbpad/dumbpad.h b/keyboards/dumbpad/dumbpad.h
new file mode 100644
index 00000000000..b7c7694e30b
--- /dev/null
+++ b/keyboards/dumbpad/dumbpad.h
@@ -0,0 +1,39 @@
+/* Copyright 2019 Chip
+ *
+ * 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"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k01, k02, k03, k04, \
+ k11, k12, k13, k14, \
+ k21, k22, k23, k24, \
+ k30, k31, k32, k33, k34 \
+) \
+{ \
+ { KC_NO, k01, k02, k03, k04 }, \
+ { KC_NO, k11, k12, k13, k14 }, \
+ { KC_NO, k21, k22, k23, k24 }, \
+ { k30, k31, k32, k33, k34 }, \
+}
diff --git a/keyboards/dumbpad/info.json b/keyboards/dumbpad/info.json
new file mode 100644
index 00000000000..8b6a8116e3c
--- /dev/null
+++ b/keyboards/dumbpad/info.json
@@ -0,0 +1,30 @@
+{
+ "keyboard_name": "dumbpad",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 5,
+ "height": 4,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"7", "x":1, "y":0},
+ {"label":"8", "x":2, "y":0},
+ {"label":"9", "x":3, "y":0},
+ {"label":"BSPC", "x":4, "y":0},
+ {"label":"4", "x":1, "y":1},
+ {"label":"5", "x":2, "y":1},
+ {"label":"6", "x":3, "y":1},
+ {"label":"ESC", "x":4, "y":1},
+ {"label":"1", "x":1, "y":2},
+ {"label":"2", "x":2, "y":2},
+ {"label":"3", "x":3, "y":2},
+ {"label":"TAB", "x":4, "y":2},
+ {"label":"LMOUSE", "x":0, "y":3},
+ {"label":"TT(2)", "x":1, "y":3},
+ {"label":"0", "x":2, "y":3},
+ {"label":".", "x":3, "y":3},
+ {"label":"ENT", "x":4, "y":3}
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/dumbpad/keymaps/default/keymap.c b/keyboards/dumbpad/keymaps/default/keymap.c
new file mode 100644
index 00000000000..061215a61bc
--- /dev/null
+++ b/keyboards/dumbpad/keymaps/default/keymap.c
@@ -0,0 +1,106 @@
+/* Copyright 2019 imchipwood
+ *
+ * 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 _BASE 0
+#define _SUB 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ BASE LAYER
+ /-----------------------------------------------------`
+ | | 7 | 8 | 9 | Bkspc |
+ | |---------|---------|---------|---------|
+ | | 4 | 5 | 6 | Esc |
+ | |---------|---------|---------|---------|
+ | | 1 | 2 | 3 | Tab |
+ |-------------|---------|---------|---------|---------|
+ | Left mouse | MO(SUB) | 0 | . | Enter |
+ \-----------------------------------------------------'
+ */
+ [_BASE] = LAYOUT( /* Base */
+ KC_7, KC_8, KC_9, KC_BSPC,
+ KC_4, KC_5, KC_6, KC_ESC,
+ KC_1, KC_2, KC_3, KC_TAB,
+ KC_BTN1, MO(_SUB), KC_0, KC_DOT, KC_ENTER
+ ),
+ /*
+ SUB LAYER
+ /-----------------------------------------------------`
+ | | | | | Reset |
+ | |---------|---------|---------|---------|
+ | | | | | + |
+ | |---------|---------|---------|---------|
+ | | | | | - |
+ |-------------|---------|---------|---------|---------|
+ | LOCK | | | | = |
+ \-----------------------------------------------------'
+ */
+ [_SUB] = LAYOUT(
+ _______, _______, _______, RESET,
+ _______, _______, _______, KC_KP_PLUS,
+ _______, _______, _______, KC_KP_MINUS,
+ KC_LOCK, _______, _______, _______, KC_EQL
+ ),
+};
+
+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 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
+*/
+ return true;
+}
+
+void keyboard_post_init_user(void) {
+ // Customise these values to desired behaviour
+ //debug_enable = true;
+ //debug_matrix = true;
+ //debug_keyboard = true;
+ //debug_mouse = true;
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (layer_state && 0x1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else {
+ if (clockwise) {
+ tap_code(KC_MS_R);
+ } else {
+ tap_code(KC_MS_L);
+ }
+ }
+ }
+}
diff --git a/keyboards/dumbpad/readme.md b/keyboards/dumbpad/readme.md
new file mode 100644
index 00000000000..8f3789bcb31
--- /dev/null
+++ b/keyboards/dumbpad/readme.md
@@ -0,0 +1,19 @@
+# dumbpad
+
+
+
+A 4x4 macro/numpad with rotary encoder.
+
+Keyboard Maintainer: [imchipwood](https://github.com/imchipwood)
+
+PCB repository: https://github.com/imchipwood/dumbpad
+
+Make example for this keyboard (after setting up your build environment):
+
+ make dumbpad:default
+
+Program with:
+
+ make dumbpad: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).
diff --git a/keyboards/dumbpad/rules.mk b/keyboards/dumbpad/rules.mk
new file mode 100644
index 00000000000..5d585c65be6
--- /dev/null
+++ b/keyboards/dumbpad/rules.mk
@@ -0,0 +1,84 @@
+# 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
+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
+#
+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 on B7 by default
+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)
+
+ENCODER_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+KEY_LOCK_ENABLE = yes
diff --git a/keyboards/ergo42/rev1/config.h b/keyboards/ergo42/rev1/config.h
index 68a5e2bbe5f..f8fae93cf40 100644
--- a/keyboards/ergo42/rev1/config.h
+++ b/keyboards/ergo42/rev1/config.h
@@ -40,8 +40,6 @@ along with this program. If not, see .
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6 } //uncomment this line and comment line above if you need to reverse left-to-right key order
-#define CATERINA_BOOTLOADER
-
/* define tapping term */
#define TAPPING_TERM 100
diff --git a/keyboards/ergo42/rules.mk b/keyboards/ergo42/rules.mk
index 286c5fccb50..d8544d9ba05 100644
--- a/keyboards/ergo42/rules.mk
+++ b/keyboards/ergo42/rules.mk
@@ -43,13 +43,15 @@ F_USB = $(F_CPU)
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
+BOOTLOADER = caterina
+
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
diff --git a/keyboards/ergodash/rev1/info.json b/keyboards/ergodash/rev1/info.json
index bcfbda6d33b..de8b0c070e0 100644
--- a/keyboards/ergodash/rev1/info.json
+++ b/keyboards/ergodash/rev1/info.json
@@ -1,13 +1,366 @@
{
- "keyboard_name": "ErgoDash rev2",
- "url": "",
- "maintainer": "qmk",
- "width": 18,
- "height": 6.25,
- "layouts": {
- "LAYOUT": {
- "key_count": 70,
- "layout": [{"label":"L00", "x":0, "y":0.375}, {"label":"L01", "x":1, "y":0.375}, {"label":"L02", "x":2, "y":0.125}, {"label":"L03", "x":3, "y":0}, {"label":"L04", "x":4, "y":0.125}, {"label":"L05", "x":5, "y":0.25}, {"label":"L06", "x":6, "y":0.75}, {"label":"R00", "x":11, "y":0.75}, {"label":"R01", "x":12, "y":0.25}, {"label":"R02", "x":13, "y":0.125}, {"label":"R03", "x":14, "y":0}, {"label":"R04", "x":15, "y":0.125}, {"label":"R05", "x":16, "y":0.375}, {"label":"R06", "x":17, "y":0.375}, {"label":"L10", "x":0, "y":1.375}, {"label":"L11", "x":1, "y":1.375}, {"label":"L12", "x":2, "y":1.125}, {"label":"L13", "x":3, "y":1}, {"label":"L14", "x":4, "y":1.125}, {"label":"L15", "x":5, "y":1.25}, {"label":"L16", "x":6, "y":1.75}, {"label":"R10", "x":11, "y":1.75}, {"label":"R11", "x":12, "y":1.25}, {"label":"R12", "x":13, "y":1.125}, {"label":"R13", "x":14, "y":1}, {"label":"R14", "x":15, "y":1.125}, {"label":"R15", "x":16, "y":1.375}, {"label":"R16", "x":17, "y":1.375}, {"label":"L20", "x":0, "y":2.375}, {"label":"L21", "x":1, "y":2.375}, {"label":"L22", "x":2, "y":2.125}, {"label":"L23", "x":3, "y":2}, {"label":"L24", "x":4, "y":2.125}, {"label":"L25", "x":5, "y":2.25}, {"label":"L26", "x":6, "y":2.75}, {"label":"R20", "x":11, "y":2.75}, {"label":"R21", "x":12, "y":2.25}, {"label":"R22", "x":13, "y":2.125}, {"label":"R23", "x":14, "y":2}, {"label":"R24", "x":15, "y":2.125}, {"label":"R25", "x":16, "y":2.375}, {"label":"R26", "x":17, "y":2.375}, {"label":"L30", "x":0, "y":3.375}, {"label":"L31", "x":1, "y":3.375}, {"label":"L32", "x":2, "y":3.125}, {"label":"L33", "x":3, "y":3}, {"label":"L34", "x":4, "y":3.125}, {"label":"L35", "x":5, "y":3.25}, {"label":"L36", "x":6.5, "y":4.25}, {"label":"R30", "x":10.5, "y":4.25}, {"label":"R31", "x":12, "y":3.25}, {"label":"R32", "x":13, "y":3.125}, {"label":"R33", "x":14, "y":3}, {"label":"R34", "x":15, "y":3.125}, {"label":"R35", "x":16, "y":3.375}, {"label":"R36", "x":17, "y":3.375}, {"label":"L40", "x":0, "y":4.375}, {"label":"L41", "x":1, "y":4.375}, {"label":"L42", "x":2, "y":4.125}, {"label":"L43", "x":3, "y":4}, {"label":"L44", "x":5.5, "y":5.25}, {"label":"L45", "x":6.5, "y":5.25}, {"label":"L46", "x":7.5, "y":4.25, "h":2}, {"label":"R40", "x":9.5, "y":4.25, "h":2}, {"label":"R41", "x":10.5, "y":5.25}, {"label":"R42", "x":11.5, "y":5.25}, {"label":"R43", "x":14, "y":4}, {"label":"R44", "x":15, "y":4.125}, {"label":"R45", "x":16, "y":4.375}, {"label":"R46", "x":17, "y":4.375}]
+ "keyboard_name": "ErgoDash rev1.2",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 19,
+ "height": 8.375,
+ "layouts": {
+ "LAYOUT_4key": {
+ "layout": [
+ {"y": 0.375, "x": 0.5, "label": "L00"},
+ {"y": 0.375, "x": 1.5, "label": "L01"},
+ {"y": 0.125, "x": 2.5, "label": "L02"},
+ {"y": 0, "x": 3.5, "label": "L03"},
+ {"y": 0.125, "x": 4.5, "label": "L04"},
+ {"y": 0.25, "x": 5.5, "label": "L05"},
+ {"y": 0.75, "x": 6.5, "label": "L06"},
+ {"y": 0.75, "x": 12, "label": "R00"},
+ {"y": 0.25, "x": 13, "label": "R01"},
+ {"y": 0.125, "x": 14, "label": "R02"},
+ {"y": 0, "x": 15, "label": "R03"},
+ {"y": 0.125, "x": 16, "label": "R04"},
+ {"y": 0.375, "x": 17, "label": "R05"},
+ {"y": 0.375, "x": 18, "label": "R06"},
+ {"y": 1.375, "x": 0.5, "label": "L10"},
+ {"y": 1.375, "x": 1.5, "label": "L11"},
+ {"y": 1.125, "x": 2.5, "label": "L12"},
+ {"y": 1, "x": 3.5, "label": "L13"},
+ {"y": 1.125, "x": 4.5, "label": "L14"},
+ {"y": 1.25, "x": 5.5, "label": "L15"},
+ {"y": 1.75, "x": 6.5, "label": "L16"},
+ {"y": 1.75, "x": 12, "label": "R10"},
+ {"y": 1.25, "x": 13, "label": "R11"},
+ {"y": 1.125, "x": 14, "label": "R12"},
+ {"y": 1, "x": 15, "label": "R13"},
+ {"y": 1.125, "x": 16, "label": "R14"},
+ {"y": 1.375, "x": 17, "label": "R15"},
+ {"y": 1.375, "x": 18, "label": "R16"},
+ {"y": 2.375, "x": 0.5, "label": "L20"},
+ {"y": 2.375, "x": 1.5, "label": "L21"},
+ {"y": 2.125, "x": 2.5, "label": "L22"},
+ {"y": 2, "x": 3.5, "label": "L23"},
+ {"y": 2.125, "x": 4.5, "label": "L24"},
+ {"y": 2.25, "x": 5.5, "label": "L25"},
+ {"y": 2.75, "x": 6.5, "label": "L26"},
+ {"y": 2.75, "x": 12, "label": "R20"},
+ {"y": 2.25, "x": 13, "label": "R21"},
+ {"y": 2.125, "x": 14, "label": "R22"},
+ {"y": 2, "x": 15, "label": "R23"},
+ {"y": 2.125, "x": 16, "label": "R24"},
+ {"y": 2.375, "x": 17, "label": "R25"},
+ {"y": 2.375, "x": 18, "label": "R26"},
+ {"y": 3.375, "x": 0.5, "label": "L30"},
+ {"y": 3.375, "x": 1.5, "label": "L31"},
+ {"y": 3.125, "x": 2.5, "label": "L32"},
+ {"y": 3, "x": 3.5, "label": "L33"},
+ {"y": 3.125, "x": 4.5, "label": "L34"},
+ {"y": 3.25, "x": 5.5, "label": "L35"},
+ {"y": 4, "x": 6.5, "label": "L36"},
+ {"y": 4, "x": 12, "label": "R30"},
+ {"y": 3.25, "x": 13, "label": "R31"},
+ {"y": 3.125, "x": 14, "label": "R32"},
+ {"y": 3, "x": 15, "label": "R33"},
+ {"y": 3.125, "x": 16, "label": "R34"},
+ {"y": 3.375, "x": 17, "label": "R35"},
+ {"y": 3.375, "x": 18, "label": "R36"},
+ {"y": 4.375, "x": 0.5, "label": "L40"},
+ {"y": 4.375, "x": 1.5, "label": "L41"},
+ {"y": 4.125, "x": 2.5, "label": "L42"},
+ {"y": 4, "x": 3.5, "label": "L43"},
+ {"y": 5, "x": 5.5, "label": "L44"},
+ {"y": 5, "x": 6.5, "label": "L45"},
+ {"h": 2, "y": 4, "x": 7.5, "label": "L46"},
+ {"h": 2, "y": 4, "x": 11, "label": "R40"},
+ {"y": 5, "x": 12, "label": "R41"},
+ {"y": 5, "x": 13, "label": "R42"},
+ {"y": 4, "x": 15, "label": "R43"},
+ {"y": 4.125, "x": 16, "label": "R44"},
+ {"y": 4.375, "x": 17, "label": "R45"},
+ {"y": 4.375, "x": 18, "label": "R46"}]
+ },
+ "LAYOUT_4key_2u_inner": {
+ "layout": [
+ {"y": 0.375, "x": 0.5, "label": "L00"},
+ {"y": 0.375, "x": 1.5, "label": "L01"},
+ {"y": 0.125, "x": 2.5, "label": "L02"},
+ {"y": 0, "x": 3.5, "label": "L03"},
+ {"y": 0.125, "x": 4.5, "label": "L04"},
+ {"y": 0.25, "x": 5.5, "label": "L05"},
+ {"y": 0.75, "x": 6.5, "label": "L06"},
+ {"y": 0.75, "x": 12, "label": "R00"},
+ {"y": 0.25, "x": 13, "label": "R01"},
+ {"y": 0.125, "x": 14, "label": "R02"},
+ {"y": 0, "x": 15, "label": "R03"},
+ {"y": 0.125, "x": 16, "label": "R04"},
+ {"y": 0.375, "x": 17, "label": "R05"},
+ {"y": 0.375, "x": 18, "label": "R06"},
+ {"y": 1.375, "x": 0.5, "label": "L10"},
+ {"y": 1.375, "x": 1.5, "label": "L11"},
+ {"y": 1.125, "x": 2.5, "label": "L12"},
+ {"y": 1, "x": 3.5, "label": "L13"},
+ {"y": 1.125, "x": 4.5, "label": "L14"},
+ {"y": 1.25, "x": 5.5, "label": "L15"},
+ {"y": 1.75, "x": 6.5, "label": "L16"},
+ {"y": 1.75, "x": 12, "label": "R10"},
+ {"y": 1.25, "x": 13, "label": "R11"},
+ {"y": 1.125, "x": 14, "label": "R12"},
+ {"y": 1, "x": 15, "label": "R13"},
+ {"y": 1.125, "x": 16, "label": "R14"},
+ {"y": 1.375, "x": 17, "label": "R15"},
+ {"y": 1.375, "x": 18, "label": "R16"},
+ {"y": 2.375, "x": 0.5, "label": "L20"},
+ {"y": 2.375, "x": 1.5, "label": "L21"},
+ {"y": 2.125, "x": 2.5, "label": "L22"},
+ {"y": 2, "x": 3.5, "label": "L23"},
+ {"y": 2.125, "x": 4.5, "label": "L24"},
+ {"y": 2.25, "x": 5.5, "label": "L25"},
+ {"y": 2.75, "x": 6.5, "label": "L26"},
+ {"y": 2.75, "x": 12, "label": "R20"},
+ {"y": 2.25, "x": 13, "label": "R21"},
+ {"y": 2.125, "x": 14, "label": "R22"},
+ {"y": 2, "x": 15, "label": "R23"},
+ {"y": 2.125, "x": 16, "label": "R24"},
+ {"y": 2.375, "x": 17, "label": "R25"},
+ {"y": 2.375, "x": 18, "label": "R26"},
+ {"y": 3.375, "x": 0.5, "label": "L30"},
+ {"y": 3.375, "x": 1.5, "label": "L31"},
+ {"y": 3.125, "x": 2.5, "label": "L32"},
+ {"y": 3, "x": 3.5, "label": "L33"},
+ {"y": 3.125, "x": 4.5, "label": "L34"},
+ {"y": 3.25, "x": 5.5, "label": "L35"},
+ {"y": 4, "x": 7.5, "label": "L36"},
+ {"y": 4, "x": 11, "label": "R30"},
+ {"y": 3.25, "x": 13, "label": "R31"},
+ {"y": 3.125, "x": 14, "label": "R32"},
+ {"y": 3, "x": 15, "label": "R33"},
+ {"y": 3.125, "x": 16, "label": "R34"},
+ {"y": 3.375, "x": 17, "label": "R35"},
+ {"y": 3.375, "x": 18, "label": "R36"},
+ {"y": 4.375, "x": 0.5, "label": "L40"},
+ {"y": 4.375, "x": 1.5, "label": "L41"},
+ {"y": 4.125, "x": 2.5, "label": "L42"},
+ {"y": 4, "x": 3.5, "label": "L43"},
+ {"y": 5, "x": 5.5, "label": "L44"},
+ {"h": 2, "y": 4, "x": 6.5, "label": "L45"},
+ {"y": 5, "x": 7.5, "label": "L46"},
+ {"y": 5, "x": 11, "label": "R40"},
+ {"h": 2, "y": 4, "x": 12, "label": "R41"},
+ {"y": 5, "x": 13, "label": "R42"},
+ {"y": 4, "x": 15, "label": "R43"},
+ {"y": 4.125, "x": 16, "label": "R44"},
+ {"y": 4.375, "x": 17, "label": "R45"},
+ {"y": 4.375, "x": 18, "label": "R46"}]
+ },
+ "LAYOUT_3key_2us": {
+ "layout": [
+ {"y": 0.375, "x": 0.5, "label": "L00"},
+ {"y": 0.375, "x": 1.5, "label": "L01"},
+ {"y": 0.125, "x": 2.5, "label": "L02"},
+ {"y": 0, "x": 3.5, "label": "L03"},
+ {"y": 0.125, "x": 4.5, "label": "L04"},
+ {"y": 0.25, "x": 5.5, "label": "L05"},
+ {"y": 0.75, "x": 6.5, "label": "L06"},
+ {"y": 0.75, "x": 12, "label": "R00"},
+ {"y": 0.25, "x": 13, "label": "R01"},
+ {"y": 0.125, "x": 14, "label": "R02"},
+ {"y": 0, "x": 15, "label": "R03"},
+ {"y": 0.125, "x": 16, "label": "R04"},
+ {"y": 0.375, "x": 17, "label": "R05"},
+ {"y": 0.375, "x": 18, "label": "R06"},
+ {"y": 1.375, "x": 0.5, "label": "L10"},
+ {"y": 1.375, "x": 1.5, "label": "L11"},
+ {"y": 1.125, "x": 2.5, "label": "L12"},
+ {"y": 1, "x": 3.5, "label": "L13"},
+ {"y": 1.125, "x": 4.5, "label": "L14"},
+ {"y": 1.25, "x": 5.5, "label": "L15"},
+ {"y": 1.75, "x": 6.5, "label": "L16"},
+ {"y": 1.75, "x": 12, "label": "R10"},
+ {"y": 1.25, "x": 13, "label": "R11"},
+ {"y": 1.125, "x": 14, "label": "R12"},
+ {"y": 1, "x": 15, "label": "R13"},
+ {"y": 1.125, "x": 16, "label": "R14"},
+ {"y": 1.375, "x": 17, "label": "R15"},
+ {"y": 1.375, "x": 18, "label": "R16"},
+ {"y": 2.375, "x": 0.5, "label": "L20"},
+ {"y": 2.375, "x": 1.5, "label": "L21"},
+ {"y": 2.125, "x": 2.5, "label": "L22"},
+ {"y": 2, "x": 3.5, "label": "L23"},
+ {"y": 2.125, "x": 4.5, "label": "L24"},
+ {"y": 2.25, "x": 5.5, "label": "L25"},
+ {"y": 2.75, "x": 6.5, "label": "L26"},
+ {"y": 2.75, "x": 12, "label": "R20"},
+ {"y": 2.25, "x": 13, "label": "R21"},
+ {"y": 2.125, "x": 14, "label": "R22"},
+ {"y": 2, "x": 15, "label": "R23"},
+ {"y": 2.125, "x": 16, "label": "R24"},
+ {"y": 2.375, "x": 17, "label": "R25"},
+ {"y": 2.375, "x": 18, "label": "R26"},
+ {"y": 3.375, "x": 0.5, "label": "L30"},
+ {"y": 3.375, "x": 1.5, "label": "L31"},
+ {"y": 3.125, "x": 2.5, "label": "L32"},
+ {"y": 3, "x": 3.5, "label": "L33"},
+ {"y": 3.125, "x": 4.5, "label": "L34"},
+ {"y": 3.25, "x": 5.5, "label": "L35"},
+ {"y": 3.25, "x": 13, "label": "R31"},
+ {"y": 3.125, "x": 14, "label": "R32"},
+ {"y": 3, "x": 15, "label": "R33"},
+ {"y": 3.125, "x": 16, "label": "R34"},
+ {"y": 3.375, "x": 17, "label": "R35"},
+ {"y": 3.375, "x": 18, "label": "R36"},
+ {"y": 4.375, "x": 0.5, "label": "L40"},
+ {"y": 4.375, "x": 1.5, "label": "L41"},
+ {"y": 4.125, "x": 2.5, "label": "L42"},
+ {"y": 4, "x": 3.5, "label": "L43"},
+ {"y": 5, "x": 5.5, "label": "L44"},
+ {"h": 2, "y": 4, "x": 6.5, "label": "L45"},
+ {"h": 2, "y": 4, "x": 7.5, "label": "L46"},
+ {"h": 2, "y": 4, "x": 11, "label": "R40"},
+ {"h": 2, "y": 4, "x": 12, "label": "R41"},
+ {"y": 5, "x": 13, "label": "R42"},
+ {"y": 4, "x": 15, "label": "R43"},
+ {"y": 4.125, "x": 16, "label": "R44"},
+ {"y": 4.375, "x": 17, "label": "R45"},
+ {"y": 4.375, "x": 18, "label": "R46"}]
+ },
+ "LAYOUT_3key_1us": {
+ "layout": [
+ {"y": 0.375, "x": 0.5, "label": "L00"},
+ {"y": 0.375, "x": 1.5, "label": "L01"},
+ {"y": 0.125, "x": 2.5, "label": "L02"},
+ {"y": 0, "x": 3.5, "label": "L03"},
+ {"y": 0.125, "x": 4.5, "label": "L04"},
+ {"y": 0.25, "x": 5.5, "label": "L05"},
+ {"y": 0.75, "x": 6.5, "label": "L06"},
+ {"y": 0.75, "x": 12, "label": "R00"},
+ {"y": 0.25, "x": 13, "label": "R01"},
+ {"y": 0.125, "x": 14, "label": "R02"},
+ {"y": 0, "x": 15, "label": "R03"},
+ {"y": 0.125, "x": 16, "label": "R04"},
+ {"y": 0.375, "x": 17, "label": "R05"},
+ {"y": 0.375, "x": 18, "label": "R06"},
+ {"y": 1.375, "x": 0.5, "label": "L10"},
+ {"y": 1.375, "x": 1.5, "label": "L11"},
+ {"y": 1.125, "x": 2.5, "label": "L12"},
+ {"y": 1, "x": 3.5, "label": "L13"},
+ {"y": 1.125, "x": 4.5, "label": "L14"},
+ {"y": 1.25, "x": 5.5, "label": "L15"},
+ {"y": 1.75, "x": 6.5, "label": "L16"},
+ {"y": 1.75, "x": 12, "label": "R10"},
+ {"y": 1.25, "x": 13, "label": "R11"},
+ {"y": 1.125, "x": 14, "label": "R12"},
+ {"y": 1, "x": 15, "label": "R13"},
+ {"y": 1.125, "x": 16, "label": "R14"},
+ {"y": 1.375, "x": 17, "label": "R15"},
+ {"y": 1.375, "x": 18, "label": "R16"},
+ {"y": 2.375, "x": 0.5, "label": "L20"},
+ {"y": 2.375, "x": 1.5, "label": "L21"},
+ {"y": 2.125, "x": 2.5, "label": "L22"},
+ {"y": 2, "x": 3.5, "label": "L23"},
+ {"y": 2.125, "x": 4.5, "label": "L24"},
+ {"y": 2.25, "x": 5.5, "label": "L25"},
+ {"y": 2.75, "x": 6.5, "label": "L26"},
+ {"y": 2.75, "x": 12, "label": "R20"},
+ {"y": 2.25, "x": 13, "label": "R21"},
+ {"y": 2.125, "x": 14, "label": "R22"},
+ {"y": 2, "x": 15, "label": "R23"},
+ {"y": 2.125, "x": 16, "label": "R24"},
+ {"y": 2.375, "x": 17, "label": "R25"},
+ {"y": 2.375, "x": 18, "label": "R26"},
+ {"y": 3.375, "x": 0.5, "label": "L30"},
+ {"y": 3.375, "x": 1.5, "label": "L31"},
+ {"y": 3.125, "x": 2.5, "label": "L32"},
+ {"y": 3, "x": 3.5, "label": "L33"},
+ {"y": 3.125, "x": 4.5, "label": "L34"},
+ {"y": 3.25, "x": 5.5, "label": "L35"},
+ {"y": 4, "x": 6.5, "label": "L36"},
+ {"y": 4, "x": 12, "label": "R30"},
+ {"y": 3.25, "x": 13, "label": "R31"},
+ {"y": 3.125, "x": 14, "label": "R32"},
+ {"y": 3, "x": 15, "label": "R33"},
+ {"y": 3.125, "x": 16, "label": "R34"},
+ {"y": 3.375, "x": 17, "label": "R35"},
+ {"y": 3.375, "x": 18, "label": "R36"},
+ {"y": 4.375, "x": 0.5, "label": "L40"},
+ {"y": 4.375, "x": 1.5, "label": "L41"},
+ {"y": 4.125, "x": 2.5, "label": "L42"},
+ {"y": 4, "x": 3.5, "label": "L43"},
+ {"y": 5, "x": 5.5, "label": "L44"},
+ {"y": 5, "x": 6.5, "label": "L45"},
+ {"y": 5, "x": 12, "label": "R41"},
+ {"y": 5, "x": 13, "label": "R42"},
+ {"y": 4, "x": 15, "label": "R43"},
+ {"y": 4.125, "x": 16, "label": "R44"},
+ {"y": 4.375, "x": 17, "label": "R45"},
+ {"y": 4.375, "x": 18, "label": "R46"}]
+ },
+ "LAYOUT_2key": {
+ "layout": [
+ {"y": 0.375, "x": 0.5, "label": "L00"},
+ {"y": 0.375, "x": 1.5, "label": "L01"},
+ {"y": 0.125, "x": 2.5, "label": "L02"},
+ {"y": 0, "x": 3.5, "label": "L03"},
+ {"y": 0.125, "x": 4.5, "label": "L04"},
+ {"y": 0.25, "x": 5.5, "label": "L05"},
+ {"y": 0.75, "x": 6.5, "label": "L06"},
+ {"y": 0.75, "x": 12, "label": "R00"},
+ {"y": 0.25, "x": 13, "label": "R01"},
+ {"y": 0.125, "x": 14, "label": "R02"},
+ {"y": 0, "x": 15, "label": "R03"},
+ {"y": 0.125, "x": 16, "label": "R04"},
+ {"y": 0.375, "x": 17, "label": "R05"},
+ {"y": 0.375, "x": 18, "label": "R06"},
+ {"y": 1.375, "x": 0.5, "label": "L10"},
+ {"y": 1.375, "x": 1.5, "label": "L11"},
+ {"y": 1.125, "x": 2.5, "label": "L12"},
+ {"y": 1, "x": 3.5, "label": "L13"},
+ {"y": 1.125, "x": 4.5, "label": "L14"},
+ {"y": 1.25, "x": 5.5, "label": "L15"},
+ {"y": 1.75, "x": 6.5, "label": "L16"},
+ {"y": 1.75, "x": 12, "label": "R10"},
+ {"y": 1.25, "x": 13, "label": "R11"},
+ {"y": 1.125, "x": 14, "label": "R12"},
+ {"y": 1, "x": 15, "label": "R13"},
+ {"y": 1.125, "x": 16, "label": "R14"},
+ {"y": 1.375, "x": 17, "label": "R15"},
+ {"y": 1.375, "x": 18, "label": "R16"},
+ {"y": 2.375, "x": 0.5, "label": "L20"},
+ {"y": 2.375, "x": 1.5, "label": "L21"},
+ {"y": 2.125, "x": 2.5, "label": "L22"},
+ {"y": 2, "x": 3.5, "label": "L23"},
+ {"y": 2.125, "x": 4.5, "label": "L24"},
+ {"y": 2.25, "x": 5.5, "label": "L25"},
+ {"y": 2.75, "x": 6.5, "label": "L26"},
+ {"y": 2.75, "x": 12, "label": "R20"},
+ {"y": 2.25, "x": 13, "label": "R21"},
+ {"y": 2.125, "x": 14, "label": "R22"},
+ {"y": 2, "x": 15, "label": "R23"},
+ {"y": 2.125, "x": 16, "label": "R24"},
+ {"y": 2.375, "x": 17, "label": "R25"},
+ {"y": 2.375, "x": 18, "label": "R26"},
+ {"y": 3.375, "x": 0.5, "label": "L30"},
+ {"y": 3.375, "x": 1.5, "label": "L31"},
+ {"y": 3.125, "x": 2.5, "label": "L32"},
+ {"y": 3, "x": 3.5, "label": "L33"},
+ {"y": 3.125, "x": 4.5, "label": "L34"},
+ {"y": 3.25, "x": 5.5, "label": "L35"},
+ {"y": 3.25, "x": 13, "label": "R31"},
+ {"y": 3.125, "x": 14, "label": "R32"},
+ {"y": 3, "x": 15, "label": "R33"},
+ {"y": 3.125, "x": 16, "label": "R34"},
+ {"y": 3.375, "x": 17, "label": "R35"},
+ {"y": 3.375, "x": 18, "label": "R36"},
+ {"y": 4.375, "x": 0.5, "label": "L40"},
+ {"y": 4.375, "x": 1.5, "label": "L41"},
+ {"y": 4.125, "x": 2.5, "label": "L42"},
+ {"y": 4, "x": 3.5, "label": "L43"},
+ {"y": 5, "x": 5.5, "label": "L44"},
+ {"h": 2, "y": 4, "x": 6.5, "label": "L45"},
+ {"h": 2, "y": 4, "x": 12, "label": "R41"},
+ {"y": 5, "x": 13, "label": "R42"},
+ {"y": 4, "x": 15, "label": "R43"},
+ {"y": 4.125, "x": 16, "label": "R44"},
+ {"y": 4.375, "x": 17, "label": "R45"},
+ {"y": 4.375, "x": 18, "label": "R46"}]
+ }
}
- }
}
diff --git a/keyboards/ergodash/rev1/rev1.h b/keyboards/ergodash/rev1/rev1.h
index 55135adca6d..f494a3558a7 100644
--- a/keyboards/ergodash/rev1/rev1.h
+++ b/keyboards/ergodash/rev1/rev1.h
@@ -10,8 +10,8 @@
#ifdef USE_I2C
#include
#ifdef __AVR__
- #include
- #include
+ #include
+ #include
#endif
#endif
@@ -20,47 +20,132 @@
#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)
-#define LAYOUT( \
- 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, L36, R30, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { 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_4key( \
+ 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, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+ ) \
+ { \
+ { 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 } \
+ }
+
+// Just defined for configurator support, the matrix is identical to LAYOUT_4key
+#define LAYOUT_4key_2u_inner( \
+ 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, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+ ) \
+ { \
+ { 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_3key_2us( \
+ 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, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+ ) \
+ { \
+ { 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, KC_NO }, \
+ { 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, KC_NO }, \
+ { R46, R45, R44, R43, R42, R41, R40 } \
+ }
+
+
+#define LAYOUT_3key_1us( \
+ 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, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, R41, R42, R43, R44, R45, R46 \
+ ) \
+ { \
+ { 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, KC_NO }, \
+ { 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, KC_NO } \
+ }
+
+#define LAYOUT_2key( \
+ 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, L44, L45, R41, R42, R43, R44, R45, R46 \
+ ) \
+ { \
+ { 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, KC_NO }, \
+ { L40, L41, L42, L43, L44, L45, KC_NO }, \
+ { 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, KC_NO }, \
+ { R46, R45, R44, R43, R42, R41, KC_NO } \
+ }
+
+#define LAYOUT LAYOUT_4key
+
#else
// Keymap with right side flipped
// (TRRS jack on both halves are to the right)
#define LAYOUT( \
- 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, L36, R30, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { 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 }, \
- { R00, R01, R02, R03, R04, R05, R06 }, \
- { R10, R11, R12, R13, R14, R15, R16 }, \
- { R20, R21, R22, R23, R24, R25, R26 }, \
- { R30, R31, R32, R33, R34, R35, R36 }, \
- { R40, R41, R42, R43, R44, R45, R46 } \
- }
+ 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, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+ ) \
+ { \
+ { 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 }, \
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 } \
+ }
#endif
#endif
diff --git a/keyboards/ergodox_ez/keymaps/colemak_es_osx/config.h b/keyboards/ergodox_ez/keymaps/colemak_es_osx/config.h
new file mode 100644
index 00000000000..a1e4d79768b
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/colemak_es_osx/config.h
@@ -0,0 +1,20 @@
+#pragma once
+
+// Sets good default for the speed of the mouse.
+#undef MOUSEKEY_INTERVAL
+#undef MOUSEKEY_DELAY
+#undef MOUSEKEY_TIME_TO_MAX
+#undef MOUSEKEY_MAX_SPEED
+
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_DELAY 100
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+
+#undef MOUSEKEY_WHEEL_MAX_SPEED
+#undef MOUSEKEY_WHEEL_TIME_TO_MAX
+#undef MOUSEKEY_WHEEL_DELAY
+
+#define MOUSEKEY_WHEEL_MAX_SPEED 5
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 60
+#define MOUSEKEY_WHEEL_DELAY 100
\ No newline at end of file
diff --git a/keyboards/ergodox_ez/keymaps/colemak_es_osx/keymap.c b/keyboards/ergodox_ez/keymaps/colemak_es_osx/keymap.c
new file mode 100644
index 00000000000..0abd028a018
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/colemak_es_osx/keymap.c
@@ -0,0 +1,397 @@
+/*
+ Copyright 2019 Mario Arias
+
+ 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 "version.h"
+
+#include "keymap_spanish.h"
+
+enum layers {
+ BASE = 0, //Colemak
+ QWERTY, //Qwerty
+ FN, //Colemak but FN1 to FN12 instead of numbers
+ NUM, //Numpad
+ MOUSE, //Mouse and media controls
+ IDEA //Shortcuts for IDEA / Other tools
+};
+
+//Special paste
+#define S_PASTE LSFT(LGUI(KC_V))
+//tmux prefix
+#define T_PREFIX LCTL(KC_B)
+// Column mode
+#define I_COLUMN ALGR(LCTL(LGUI(ES_MINS)))
+// Terminal
+#define I_TERM ALGR(KC_F12)
+// Line comment
+#define I_LN_COM LCTL(LGUI(KC_7))
+// Block comment
+#define I_BK_COM LCTL(LGUI(KC_8))
+// Reformat code
+#define I_REFORM LALT(LGUI(KC_L))
+// Rename
+#define I_RENAME LSFT(KC_F6)
+// Find usages
+#define I_FUSAGE LALT(KC_F7)
+// Code for Packt
+#define P_CODE LCTL(ALGR(KC_X))
+// Search
+#define I_SEARCH LCTL(LSFT(KC_F))
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Colemak MacOS Spanish layer
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | Esc | 1 ! | 2 " | 3 · | 4 $ | 5 % | º \ | | ¡ ¿ | 6 & | 7 / | 8 ( | 9 ) | 0 = | Backsp |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | TAB | Q | W | F | P | G | Home | | End | J | L | U | Y | Ñ | ' ? |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | CAPS | A | R | S | T | D |------| |------| H | N | E | I | O | ENT |
+ * |--------+------+------+------+------+------| <> | | -_ |------+------+------+------+------+--------|
+ * | Shift | Z | X | C | V | B | | | | K | M | , ; | . : | UP | Shift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | Del | PgUp |Ctl/PD|Alt/[ |Cmd/] | |Cmd/{ |Alt/} | LEFT | DOWN | RIGHT|
+ * `----------------------------------' `----------------------------------'
+ * ,--------------. ,--------------.
+ * | Num | Mouse | | Qwer | Ctrl |
+ * ,------|------|-------| |------+-------+------.
+ * | | | FN | |SPaste| | |
+ * |LShift|Backsp|-------| |------| ENT |Space |
+ * | | | IDEA | | T-pre| | |
+ * `---------------------' `---------------------'
+ */
+[BASE] = LAYOUT_ergodox(
+// left hand
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, ES_LESS,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_HOME,
+ KC_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV,
+ KC_DEL, KC_PGUP, CTL_T(KC_PGDN), ALT_T(ES_GRV), GUI_T(ES_PLUS),
+
+ DF(NUM), DF(MOUSE),
+ DF(FN),
+ KC_LSFT, KC_BSPC, MO(IDEA),
+
+// right hand
+ ES_IEXL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_END, KC_J, KC_L, KC_U, KC_Y, ES_NTIL, ES_APOS,
+ KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT,
+ ES_MINS, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ GUI_T(ES_ACUT), ALT_T(KC_BSLS), KC_LEFT, KC_DOWN, KC_RIGHT,
+
+ DF(QWERTY), KC_RCTL,
+ S_PASTE,
+ T_PREFIX, KC_ENT, KC_SPC
+),
+/* Keymap 1: Spanish QWERTY layer (games) //Will probably change it for a Linux/Windows Colemak layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | Q | W | E | R | T | | | | Y | U | I | O | P | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | A | S | D | F | G |------| |------| H | J | K | L | Ñ | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | Z | X | C | V | B | | | | N | M | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | Base | |
+ * ,------|------|------| |------+--------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `----------------------'
+ */
+[QWERTY] = LAYOUT_ergodox(
+ // left hand
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_Q, KC_W, KC_E, KC_R, KC_T, _______,
+ _______, KC_A, KC_S, KC_D, KC_F, KC_G,
+ _______, KC_Z, KC_X, KC_C, KC_V, KC_B, _______,
+ _______, _______, _______, _______, _______,
+
+ _______, _______,
+ _______,
+ _______, _______, _______,
+
+// right hand
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_Y, KC_U, KC_I, KC_O, KC_P, _______,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, _______,
+ _______, KC_N, KC_M, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ DF(BASE), _______,
+ _______,
+ _______, _______, _______
+),
+/* Keymap 2: Function Layer
+*
+* ,--------------------------------------------------. ,--------------------------------------------------.
+* | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
+* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+* | | | | | | | | | | | | | | | |
+* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+* | | | | | | |------| |------| | | | | | |
+* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+* | | | | | | | | | | | | | | | |
+* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+* | | | | | | | | | | | |
+* `----------------------------------' `----------------------------------'
+* ,-------------. ,-------------.
+* | | | | | |
+* ,------|------|------| |------+------+------.
+* | | | Base | | | | |
+* | | |------| |------| | |
+* | | | | | | | |
+* `--------------------' `--------------------'
+*/
+[FN] = LAYOUT_ergodox(
+ // left hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+
+ _______, _______,
+ DF(BASE),
+ _______, _______, _______,
+
+// right hand
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+
+ _______, _______,
+ _______,
+ _______, _______, _______
+),
+/* Mouse and media controls
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | Esc | | | | | | Play | | Vol+ | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | Ms U | | | | | | | | Wh U | | | |
+ * |--------+------+------+------+------+------| Rwd | | Vol- |------+------+------+------+------+--------|
+ * | | | Ms L | Ms D | Ms R | |------| |------| | Wh L | Wh D | Wh R | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | Acc0 | Acc1 | Acc2 | | Fwd | | Mute | | Btn1 | Btn2 | Btn3 | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | Num | Base | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------ |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+[MOUSE] = LAYOUT_ergodox(
+// left hand
+ KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPLY,
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, KC_MRWD,
+ XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX,
+ XXXXXXX, XXXXXXX, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, KC_MFFD,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ DF(NUM), DF(BASE),
+ XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX,
+
+// right hand
+ KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_VOLD, XXXXXXX, XXXXXXX, KC_WH_U, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, KC_WH_L, KC_WH_D, KC_WH_R, XXXXXXX, XXXXXXX,
+ KC_MUTE, XXXXXXX, KC_BTN1, KC_BTN2, KC_BTN3, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ XXXXXXX, XXXXXXX,
+ XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX
+),
+/* Num pad
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | | | | ( | ) | = | / | * | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | Up | | | | | | | 7 | 8 | 9 | - | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | Left | Down |Right | |------| |------| | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | | 1 | 2 | 3 |Enter | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | 0 | 0 | , |Enter | . |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | Base | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------ |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+[NUM] = LAYOUT_ergodox(
+// left hand
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_UP, _______, _______, _______,
+ _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+
+ DF(BASE), _______,
+ _______,
+ _______, _______, _______,
+
+// right hand
+ _______, LSFT(KC_8), LSFT(KC_9), KC_PEQL, KC_PSLS, KC_PAST, _______,
+ _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______,
+ _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______,
+ _______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT, KC_DOT,
+
+ _______, _______,
+ _______,
+ _______, _______, _______
+),
+/* IDEA
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | | | | | | Renm | | Usag | | LnCm | BkCm | | Term | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | |Search| | | | | | | Refm | | | | |
+ * |--------+------+------+------+------+------| | | Col |------+------+------+------+------+--------|
+ * | | | | | | |------| |------| | | | | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | Code | | | | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------ |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+[IDEA] = LAYOUT_ergodox(
+
+//Left hand
+ _______, _______, _______, _______, _______, _______, I_RENAME,
+ _______, _______, _______, I_SEARCH, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, P_CODE, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+
+ _______, DF(BASE),
+ _______,
+ _______, _______, _______,
+
+// right hand
+ I_FUSAGE, _______, I_LN_COM, I_BK_COM, _______, I_TERM, _______,
+ I_COLUMN, _______, I_REFORM, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+
+ _______, _______,
+ _______,
+ _______, _______, _______
+)
+};
+
+
+void led_1_off(void) {
+ ergodox_right_led_1_off();
+}
+
+void led_2_off(void) {
+ ergodox_right_led_2_off();
+}
+
+void led_3_off(void) {
+ ergodox_right_led_3_off();
+}
+
+//Runs just one time when the keyboard initializes
+void matrix_init_use(void) {
+ led_1_off();
+ led_2_off();
+ led_3_off();
+}
+
+// Value to use to switch LEDs on. The default value of 255 is far too bright.
+static const uint8_t max_led_value = 20;
+
+
+void led_1_on(void) {
+ ergodox_right_led_1_on();
+ ergodox_right_led_1_set(max_led_value);
+}
+
+void led_2_on(void) {
+ ergodox_right_led_2_on();
+ ergodox_right_led_2_set(max_led_value);
+}
+
+void led_3_on(void) {
+ ergodox_right_led_3_on();
+ ergodox_right_led_3_set(max_led_value);
+}
+
+uint32_t layer_state_set_user(uint32_t state) {
+
+ if(layer_state_cmp(state ,IDEA)) {
+ led_1_on();
+ led_3_on();
+ } else {
+ led_1_off();
+ led_3_off();
+ }
+
+ return state;
+};
+
+void matrix_scan_user(void) {
+
+ ergodox_board_led_off();
+ led_1_off();
+ led_2_off();
+ led_3_off();
+
+ if(layer_state_cmp(default_layer_state, QWERTY)) {
+ led_3_on();
+ }
+
+ if(layer_state_cmp(default_layer_state, FN)) {
+ led_2_on();
+ }
+
+ if(layer_state_cmp(default_layer_state, NUM)) {
+ led_2_on();
+ led_3_on();
+ }
+
+ if(layer_state_cmp(default_layer_state, MOUSE)) {
+ led_1_on();
+ }
+};
diff --git a/keyboards/ergodox_ez/keymaps/colemak_es_osx/readme.md b/keyboards/ergodox_ez/keymaps/colemak_es_osx/readme.md
new file mode 100644
index 00000000000..b17ae015aaa
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/colemak_es_osx/readme.md
@@ -0,0 +1,67 @@
+# ErgoDox EZ Spanish Colemak configuration
+
+## Description
+
+A Colemak keymap adapted for Spanish.
+
+### Base Layer - Spanish Colemak
+
+The Base Layer is a Colemak keymap with an additional "ñ" next to the "y" key. The arrow cluster has a proper T inverted shape.
+
+It includes almost all Spanish Symbols from a normal 100% keyboard thanks to the use of tap keys
+
+
+| Pressed | Tap | Shift | Alt |
+|---|---|---|---|
+|Left Ctrl|PgDn|||
+|Left Alt|`|ˆ|[|
+|Left Cmd|+|*|]|
+|Right Cmd|´|¨|{|
+|Right Alt|ç|Ç|}|
+
+For example, if you want to type ```[]```, you keep pressing the "Left Alt" (To modify) and tap "Right Alt" and "Right Cmd" to send "[" and "]"
+
+### Qwerty Layer
+
+A Qwerty layer for gaming and maybe some VIM commands. It just modifies the few keys that are different between Colemak and Qwerty and keep all the others keys
+
+### Fn Layer
+
+A layer to change the number row including "º" and "¡" for "Fn1" to "Fn12". The rest is just the same as the Base layer
+
+### Mouse and media controls
+
+Mouse movement on the left hand, wheel and buttons on the right hand. "Play/Pause", "Rewind", "Forward" in the Left inner column. "Volume Up", "Volume Down" and "Mute" in the Right inner column
+
+### Numpad
+
+A complete numpad in the right hand, plus and Arrow cluster on the left hand
+
+### IDEA (JetBrains IDEs)
+
+A momentary layer for IDEA shortcuts that require more than two fingers or any Fn key
+
+## How to build it
+
+If you already have all the dependencies (Check QMK's documentation), you can run the command:
+
+```bash
+make ergodox_ez:colemak_es_osx
+```
+
+On MacOS, if you're using MacPorts you can install the following dependencies:
+
+```bash
+port install avr-binutils
+port install avr-gcc
+port install avr-libc
+```
+
+This isn't an exhaustive list and maybe there other dependencies that are technically necessary
+
+## Changelog
+
+* Jul 2019:
+ * Initial version for the new QMK version
+
+
\ No newline at end of file
diff --git a/keyboards/facew/config.h b/keyboards/facew/config.h
index 239783f8ba2..62ba98be59d 100644
--- a/keyboards/facew/config.h
+++ b/keyboards/facew/config.h
@@ -36,6 +36,5 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define NO_BACKLIGHT_CLOCK
#define BACKLIGHT_LEVELS 1
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/fc660c/keymaps/siroleo/README.md b/keyboards/fc660c/keymaps/siroleo/README.md
index 91dd9ed3b1b..f174c7f3ebd 100644
--- a/keyboards/fc660c/keymaps/siroleo/README.md
+++ b/keyboards/fc660c/keymaps/siroleo/README.md
@@ -6,3 +6,4 @@ Emulates original keymap with modifications for:
- Grave key(s)
- Reset on the function layer
- Mouse keys ala Tada68
+- A layer for playing with Colemak
diff --git a/keyboards/fc660c/keymaps/siroleo/keymap.c b/keyboards/fc660c/keymaps/siroleo/keymap.c
index a2d859f152d..37113367132 100644
--- a/keyboards/fc660c/keymaps/siroleo/keymap.c
+++ b/keyboards/fc660c/keymaps/siroleo/keymap.c
@@ -16,6 +16,21 @@ along with this program. If not, see .
*/
#include QMK_KEYBOARD_H
+enum siroleo_layers
+{
+ _QWERTY,
+ _COLEMAK,
+ _FNM
+};
+
+enum siroleo_keycodes
+{
+ QWERTY = SAFE_RANGE,
+ COLEMAK
+};
+
+#define FNM MO(_FNM)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* BASE layer: Default Layer
* ,--------------------------------------------------------------------------------------------------.
@@ -30,12 +45,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | Alt | Gui | Space | Fn | Ctrl | Alt | Left| Down|Right|
* `--------------------------------------------------------------------------------------------------´
*/
- [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_BSPC, 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_BSLS, KC_DEL,
- 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_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, KC_UP,
- KC_LCTL,KC_LALT,KC_LGUI, KC_SPC, MO(1),KC_RCTL,KC_RALT, KC_LEFT,KC_DOWN,KC_RGHT
+ [_QWERTY] = 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_BSPC, 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_BSLS, KC_DEL,
+ 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_N, KC_M, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT,KC_LGUI, KC_SPC, FNM,KC_RCTL,KC_RALT, KC_LEFT,KC_DOWN,KC_RGHT
+ ),
+ /* Colemak Layer
+ * ,--------------------------------------------------------------------------------------------------.
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace | | ` |
+ * |-----------------------------------------------------------------------------------------+ +-----+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | | Del |
+ * |-----------------------------------------------------------------------------------------+ +-----+
+ * | ` | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
+ * |--------------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Up |
+ * +--------------------------------------------------------------------------------------------+-----+
+ * | Ctrl | Alt | Gui | Space | Fn | Ctrl | Alt | Left| Down|Right|
+ * `--------------------------------------------------------------------------------------------------´
+ */
+ [_COLEMAK] = 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_BSPC, KC_GRV,
+ 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_BSLS, KC_DEL,
+ KC_GRV , KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O ,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT,KC_LGUI, KC_SPC, FNM,KC_RCTL,KC_RALT, KC_LEFT,KC_DOWN,KC_RGHT
),
/* FN layer
* ,--------------------------------------------------------------------------------------------------.
@@ -50,11 +85,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | Reset | | | | | | MsL | MsD | MsR |
* `--------------------------------------------------------------------------------------------------´
*/
- [1] = LAYOUT(
+ [_FNM] = 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_MUTE, KC_VOLU,
- _______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS,_______,_______,_______, KC_VOLD,
- _______,_______,_______,_______,_______,_______,_______,_______,KC_HOME,KC_PGUP,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS,_______,_______, RESET, KC_VOLD,
+ _______,_______,_______, QWERTY,COLEMAK,_______,_______,_______,KC_HOME,KC_PGUP,_______,_______, _______,
_______,_______,_______,_______,_______,_______,_______,_______,KC_END, KC_PGDN,_______,KC_BTN1, KC_MS_U,
- _______, RESET,_______, _______, MO(1), _______,_______, KC_MS_L,KC_MS_D,KC_MS_R
+ _______,_______,_______, _______, _______,_______,_______, KC_MS_L,KC_MS_D,KC_MS_R
)
};
+
+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 false;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ }
+ return true;
+}
\ No newline at end of file
diff --git a/keyboards/foxlab/leaf60/universal/universal.h b/keyboards/foxlab/leaf60/universal/universal.h
index ab3f388a496..8d8f836185f 100644
--- a/keyboards/foxlab/leaf60/universal/universal.h
+++ b/keyboards/foxlab/leaf60/universal/universal.h
@@ -40,13 +40,13 @@
}
#define LAYOUT_60_ansi( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, \
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
K400, K401, K402, K406, K410, K411, K412, K413 \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, KC_NO }, \
{ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO }, \
diff --git a/keyboards/ft/mars80/config.h b/keyboards/ft/mars80/config.h
index b56adb11462..1bf93928725 100644
--- a/keyboards/ft/mars80/config.h
+++ b/keyboards/ft/mars80/config.h
@@ -38,7 +38,6 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define NO_BACKLIGHT_CLOCK
#define BACKLIGHT_LEVELS 1
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/gergo/config.h b/keyboards/gergo/config.h
index e4c61ecb07c..f8738f09566 100644
--- a/keyboards/gergo/config.h
+++ b/keyboards/gergo/config.h
@@ -21,6 +21,9 @@ along with this program. If not, see .
#pragma once
#include "config_common.h"
+#define BOOTMAGIC_LITE_ROW 13
+#define BOOTMAGIC_LITE_COLUMN 2
+
/* Defaults */
#ifndef BALLSTEP
#define BALLSTEP 20
diff --git a/keyboards/gergo/keymaps/drashna/keymap.c b/keyboards/gergo/keymaps/drashna/keymap.c
index ffa23462eef..2843b332a5f 100644
--- a/keyboards/gergo/keymaps/drashna/keymap.c
+++ b/keyboards/gergo/keymaps/drashna/keymap.c
@@ -9,7 +9,7 @@
#include QMK_KEYBOARD_H
#include "drashna.h"
-
+// clang-format off
#define LAYOUT_gergo_base( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
@@ -111,3 +111,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
*/
+// clang-format on
diff --git a/keyboards/gergo/keymaps/oled/config.h b/keyboards/gergo/keymaps/oled/config.h
new file mode 100644
index 00000000000..b1860806813
--- /dev/null
+++ b/keyboards/gergo/keymaps/oled/config.h
@@ -0,0 +1,4 @@
+#pragma once
+
+#define IGNORE_MOD_TAP_INTERRUPT
+#define OLED_FONT_H "keyboards/gergo/keymaps/oled/glcdfont.c"
diff --git a/keyboards/gergo/keymaps/oled/glcdfont.c b/keyboards/gergo/keymaps/oled/glcdfont.c
new file mode 100644
index 00000000000..cf189e6e5a6
--- /dev/null
+++ b/keyboards/gergo/keymaps/oled/glcdfont.c
@@ -0,0 +1,232 @@
+// 'loveLain', 128x32px
+
+#include
+#include
+
+static 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, 0x00, 0x00, 0x00, 0x40, 0x28,
+0x00, 0x48, 0xC2, 0x24, 0x10, 0x12,
+0x24, 0x10, 0x12, 0x29, 0x10, 0x22,
+0x58, 0x44, 0x90, 0x20, 0x80, 0x00,
+0x00, 0x04, 0x10, 0x88, 0x40, 0x20,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xE8,
+0x00, 0x20, 0x00, 0x10, 0x08, 0x08,
+0x00, 0x08, 0x10, 0x00, 0x10, 0x20,
+0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x14, 0x42, 0x01, 0x00, 0x01,
+0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+0x40, 0x40, 0x00, 0x40, 0x40, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+0x10, 0x08, 0x00, 0x00, 0x00, 0x40,
+0x10, 0x80, 0x50, 0x22, 0xA4, 0x10,
+0x52, 0x24, 0x10, 0x32, 0x08, 0x44,
+0x64, 0x20, 0x90, 0x80, 0x40, 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, 0x82, 0x11, 0x48, 0x00,
+0x37, 0xC0, 0x00, 0x00, 0x08, 0x10,
+0x02, 0x48, 0x14, 0x00, 0x00, 0x00,
+0x41, 0x42, 0xA2, 0x81, 0x42, 0x61,
+0x04, 0x22, 0x00, 0x40, 0x82, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xDE,
+0x00, 0x49, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x02, 0x04,
+0x08, 0x00, 0x08, 0x15, 0x20, 0x40,
+0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x2C, 0x03, 0x60, 0x20, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
+0x85, 0x20, 0x00, 0x42, 0x42, 0x42,
+0x85, 0x44, 0xC2, 0x01, 0x00, 0x00,
+0x48, 0x10, 0x04, 0x48, 0x10, 0x00,
+0x00, 0x01, 0xA0, 0x5E, 0x00, 0xA2,
+0x14, 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, 0x01, 0x00, 0x09,
+0x12, 0x20, 0x89, 0x12, 0x42, 0x24,
+0x04, 0x48, 0x0C, 0x90, 0x06, 0x21,
+0x4A, 0x05, 0x84, 0x00, 0x02, 0x00,
+0x00, 0x00, 0x08, 0x04, 0x00, 0x02,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xAD,
+0x00, 0x2A, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x20, 0x00, 0x20,
+0x00, 0x40, 0x00, 0x00, 0x40, 0x00,
+0x40, 0x00, 0x40, 0x40, 0x00, 0x40,
+0x00, 0x40, 0x20, 0x00, 0x90, 0x48,
+0x03, 0x10, 0x08, 0x03, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x02, 0x09,
+0x10, 0x20, 0x08, 0x00, 0x00, 0x02,
+0x00, 0x02, 0x48, 0x15, 0x02, 0xA4,
+0x08, 0x44, 0x88, 0x24, 0x48, 0x04,
+0xA2, 0x15, 0x00, 0x0A, 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,
+};
+static const unsigned int fontLen = 512;
diff --git a/keyboards/gergo/keymaps/oled/keymap.c b/keyboards/gergo/keymaps/oled/keymap.c
new file mode 100644
index 00000000000..c348a2b96d5
--- /dev/null
+++ b/keyboards/gergo/keymaps/oled/keymap.c
@@ -0,0 +1,145 @@
+/* Good on you for modifying your layout! if you don't have
+ * time to read the QMK docs, a list of keycodes can be found at
+ *
+ * https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
+ *
+ * There's also a template for adding new layers at the bottom of this file!
+ */
+
+#include QMK_KEYBOARD_H
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define NUMB 2 // numbers/motion
+
+// Blank template at the bottom
+enum customKeycodes {
+ URL = 1
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | L1/ESC | Q | W | E | R | T | | Y | U | I | O | P | | \ |
+ * |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
+ * |Ctrl/BS | A | S | D | F | G | RMB | | | H | J | K | L | ; : | ' " |
+ * |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
+ * | LShift | Z | X | C | V | B | LMB | | | N | M | , < | . > | / ? | - _ |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * .----------. .-------. .------. .-----.
+ * | Super/Del| |Ent/ALT| | Tab | |BKSP |
+ * '----------' '-------' `------. '-----'
+ * ,-------. ,-------.
+ * | MMB | | PgDn |
+ * ,------|-------| |-------|------.
+ * | SYMB | NUMB | | SYMB | NUMB |
+ * | Space| Escape| | Mod |Space |
+ * | | | | | |
+ * `--------------' `--------------'
+ */
+[BASE] = LAYOUT_gergo(
+ LT(NUMB, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE,
+ MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_BTN2, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BTN1, KC_BTN3, KC_PGDN, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
+ MT(MOD_LGUI, KC_DEL), MT(MOD_LALT, KC_ENT), LT(SYMB, KC_SPC), LT(NUMB, KC_ESC), LT(SYMB, KC_ENT), LT(NUMB, KC_SPC), KC_TAB, KC_BSPC
+ ),
+/* Keymap 1: Symbols layer
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | ! | @ | { | } | | | | | | | | | \ | |
+ * |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` | | | | + | - | / | * | % | ' " |
+ * |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | & | = | , | . | / ? | - _ |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * .------. .------. .------. .-----.
+ * | | | | | | | DEL |
+ * '------' '------' `------. '-----'
+ * ,-------. ,-------.
+ * | | | PgUp |
+ * ,------|-------| |-------|------.
+ * | | | | | |
+ * | ; | = | | = | ; |
+ * | | | | | |
+ * `--------------' `--------------'
+ */
+[SYMB] = LAYOUT_gergo(
+ KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS,
+ KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_TRNS, KC_TRNS, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT,
+ KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
+ KC_TRNS, KC_TRNS, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, KC_PGUP, KC_DEL
+ ),
+/* Keymap 2: Pad/Function layer
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
+ * |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
+ * | F1 | F2 | F3 | F4 | F5 | F6 | BTN1 | | | LEFT | DOWN | UP | RIGHT|VolDn | VolUp |
+ * |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
+ * | F7 | F8 | F9 | F10 | F11 | F12 | BTN2 | | | MLFT | MDWN | MUP | MRGHT|Ply/Pa| Skip |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * .------. .------. .------. .-----.
+ * | | | | | | | |
+ * '------' '------' `------. '-----'
+ * ,-------. ,-------.
+ * | | | PgUp |
+ * ,------|-------| |-------|------.
+ * | | | | | |
+ * | | | | | |
+ * | | | | | |
+ * `--------------' `--------------'
+ */
+[NUMB] = LAYOUT_gergo(
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLD, KC_VOLU,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_MPLY, KC_MNXT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
+/* Keymap template
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+------|------. .------|------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+------|------| |------|------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * .------. .------. .------. .-----.
+ * | | | | | | | |
+ * '------' '------' `------. '-----'
+ * ,-------. ,-------.
+ * | | | |
+ * ,------|-------| |-------|------.
+ * | | | | | |
+ * | | | | | |
+ * | | | | | |
+ * `--------------' `--------------'
+[SYMB] = LAYOUT_gergo(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+ */
+
+#ifdef OLED_DRIVER_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+
+void oled_task_user(void) {
+ static const char PROGMEM font_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(font_logo, false);
+
+}
+ //for (int i = 0; i < fontLen; i++) {
+ //oled_write_char(pgm_read_byte(lain+i), false);
+ //oled_write_char((char)i, false);
+ //}
+#endif
diff --git a/keyboards/gergo/keymaps/oled/readme.md b/keyboards/gergo/keymaps/oled/readme.md
new file mode 100644
index 00000000000..471a20fbdff
--- /dev/null
+++ b/keyboards/gergo/keymaps/oled/readme.md
@@ -0,0 +1,10 @@
+# [Gergo! By g Heavy Industries](http://gboards.ca)
+
+
+
+This is the default keymap for Gergo, it's based heavily off of the naps62 ErgoDox layout and is aimed at a programmer friendly keymap.
+
+## Settings
+To edit various settings, enable the 1u trackball and whatnot please modify /keyboards/gergo/keymaps/default/rules.mk
+
+Ideally you should copy this directory and make your changes there. If you come up with a good layout submit a PR!
diff --git a/keyboards/gergo/keymaps/oled/rules.mk b/keyboards/gergo/keymaps/oled/rules.mk
new file mode 100644
index 00000000000..fae936effb3
--- /dev/null
+++ b/keyboards/gergo/keymaps/oled/rules.mk
@@ -0,0 +1,38 @@
+#----------------------------------------------------------------------------
+# make gergo:germ:dfu
+# Make sure you have dfu-programmer installed!
+#----------------------------------------------------------------------------
+# Firmware options
+BALLER = no # Enable to ball out
+BALLSTEP = 20 # Multiple in px to move, multiplied by layer number
+SCROLLSTEP = 1 # Lines to scroll with ball
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700), needed for baller
+OLED_DRIVER_ENABLE = yes
+LOCAL_GLCDFONT = yes
+
+#Debug options
+VERBOSE = yes
+DEBUG_MATRIX_SCAN_RATE = no
+DEBUG_BALLER = no
+DEBUG_MATRIX = yes
+
+# A bunch of stuff that you shouldn't touch unless you
+# know what you're doing.
+#
+# No touchy, capiche?
+ifneq ($(strip $(BALLSTEP)),)
+ OPT_DEFS += -DTRKSTEP=$(strip $(BALLSTEP))
+endif
+ifneq ($(strip $(SCROLLSTEP)),)
+ OPT_DEFS += -DSCROLLSTEP=$(strip $(SCROLLSTEP))
+endif
+ifeq ($(strip $(BALLER)), yes)
+ POINTING_DEVICE_ENABLE = yes
+ OPT_DEFS += -DBALLER
+endif
+ifeq ($(strip $(DEBUG_BALLER)), yes)
+ OPT_DEFS += -DDEBUG_BALLER
+endif
+ifeq ($(strip $(DEBUG_MATRIX)), yes)
+ OPT_DEFS += -DDEBUG_MATRIX
+endif
diff --git a/keyboards/gergo/rules.mk b/keyboards/gergo/rules.mk
index a33bfcec8df..2b5d62988ea 100644
--- a/keyboards/gergo/rules.mk
+++ b/keyboards/gergo/rules.mk
@@ -4,7 +4,8 @@
# Do not edit this file! Make a copy of keymaps/default and modify that!
#----------------------------------------------------------------------------
# Source includes
-SRC += matrix.c i2c_master.c
+SRC += matrix.c
+QUANTUM_LIB_SRC += i2c_master.c
# Hardware info
MCU = atmega32u4
@@ -17,5 +18,6 @@ CUSTOM_MATRIX = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = lite
DEBOUNCE_TYPE = eager_pr
diff --git a/keyboards/gh60/config.h b/keyboards/gh60/revc/config.h
similarity index 99%
rename from keyboards/gh60/config.h
rename to keyboards/gh60/revc/config.h
index 8b7391faf13..e0cfa7268d3 100644
--- a/keyboards/gh60/config.h
+++ b/keyboards/gh60/revc/config.h
@@ -14,10 +14,6 @@ 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 .
*/
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
#include "config_common.h"
/* USB Device descriptor parameter */
@@ -152,5 +148,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/gh60/info.json b/keyboards/gh60/revc/info.json
similarity index 100%
rename from keyboards/gh60/info.json
rename to keyboards/gh60/revc/info.json
diff --git a/keyboards/gh60/keymaps/bluezio/keymap.c b/keyboards/gh60/revc/keymaps/bluezio/keymap.c
similarity index 100%
rename from keyboards/gh60/keymaps/bluezio/keymap.c
rename to keyboards/gh60/revc/keymaps/bluezio/keymap.c
diff --git a/keyboards/gh60/keymaps/bluezio/rules.mk b/keyboards/gh60/revc/keymaps/bluezio/rules.mk
similarity index 100%
rename from keyboards/gh60/keymaps/bluezio/rules.mk
rename to keyboards/gh60/revc/keymaps/bluezio/rules.mk
diff --git a/keyboards/gh60/keymaps/chaser/README.md b/keyboards/gh60/revc/keymaps/chaser/README.md
similarity index 100%
rename from keyboards/gh60/keymaps/chaser/README.md
rename to keyboards/gh60/revc/keymaps/chaser/README.md
diff --git a/keyboards/gh60/keymaps/chaser/keymap.c b/keyboards/gh60/revc/keymaps/chaser/keymap.c
similarity index 100%
rename from keyboards/gh60/keymaps/chaser/keymap.c
rename to keyboards/gh60/revc/keymaps/chaser/keymap.c
diff --git a/keyboards/gh60/keymaps/dbroqua/config.h b/keyboards/gh60/revc/keymaps/dbroqua/config.h
similarity index 100%
rename from keyboards/gh60/keymaps/dbroqua/config.h
rename to keyboards/gh60/revc/keymaps/dbroqua/config.h
diff --git a/keyboards/gh60/keymaps/dbroqua/keymap.c b/keyboards/gh60/revc/keymaps/dbroqua/keymap.c
similarity index 100%
rename from keyboards/gh60/keymaps/dbroqua/keymap.c
rename to keyboards/gh60/revc/keymaps/dbroqua/keymap.c
diff --git a/keyboards/gh60/keymaps/dbroqua/rules.mk b/keyboards/gh60/revc/keymaps/dbroqua/rules.mk
similarity index 100%
rename from keyboards/gh60/keymaps/dbroqua/rules.mk
rename to keyboards/gh60/revc/keymaps/dbroqua/rules.mk
diff --git a/keyboards/gh60/keymaps/dbroqua_7U/keymap.c b/keyboards/gh60/revc/keymaps/dbroqua_7U/keymap.c
similarity index 100%
rename from keyboards/gh60/keymaps/dbroqua_7U/keymap.c
rename to keyboards/gh60/revc/keymaps/dbroqua_7U/keymap.c
diff --git a/keyboards/gh60/keymaps/dbroqua_7U/rules.mk b/keyboards/gh60/revc/keymaps/dbroqua_7U/rules.mk
similarity index 100%
rename from keyboards/gh60/keymaps/dbroqua_7U/rules.mk
rename to keyboards/gh60/revc/keymaps/dbroqua_7U/rules.mk
diff --git a/keyboards/gh60/keymaps/default/keymap.c b/keyboards/gh60/revc/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/gh60/keymaps/default/keymap.c
rename to keyboards/gh60/revc/keymaps/default/keymap.c
diff --git a/keyboards/gh60/keymaps/emiilsd/keymap.c b/keyboards/gh60/revc/keymaps/emiilsd/keymap.c
similarity index 100%
rename from keyboards/gh60/keymaps/emiilsd/keymap.c
rename to keyboards/gh60/revc/keymaps/emiilsd/keymap.c
diff --git a/keyboards/gh60/keymaps/maartenwut/keymap.c b/keyboards/gh60/revc/keymaps/maartenwut/keymap.c
similarity index 100%
rename from keyboards/gh60/keymaps/maartenwut/keymap.c
rename to keyboards/gh60/revc/keymaps/maartenwut/keymap.c
diff --git a/keyboards/gh60/keymaps/maxr1998/config.h b/keyboards/gh60/revc/keymaps/maxr1998/config.h
similarity index 100%
rename from keyboards/gh60/keymaps/maxr1998/config.h
rename to keyboards/gh60/revc/keymaps/maxr1998/config.h
diff --git a/keyboards/gh60/keymaps/maxr1998/keymap.c b/keyboards/gh60/revc/keymaps/maxr1998/keymap.c
similarity index 100%
rename from keyboards/gh60/keymaps/maxr1998/keymap.c
rename to keyboards/gh60/revc/keymaps/maxr1998/keymap.c
diff --git a/keyboards/gh60/keymaps/maxr1998/rules.mk b/keyboards/gh60/revc/keymaps/maxr1998/rules.mk
similarity index 100%
rename from keyboards/gh60/keymaps/maxr1998/rules.mk
rename to keyboards/gh60/revc/keymaps/maxr1998/rules.mk
diff --git a/keyboards/gh60/keymaps/robotmaxtron/config.h b/keyboards/gh60/revc/keymaps/robotmaxtron/config.h
similarity index 100%
rename from keyboards/gh60/keymaps/robotmaxtron/config.h
rename to keyboards/gh60/revc/keymaps/robotmaxtron/config.h
diff --git a/keyboards/gh60/keymaps/robotmaxtron/keymap.c b/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c
similarity index 100%
rename from keyboards/gh60/keymaps/robotmaxtron/keymap.c
rename to keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c
diff --git a/keyboards/gh60/keymaps/robotmaxtron/readme.md b/keyboards/gh60/revc/keymaps/robotmaxtron/readme.md
similarity index 100%
rename from keyboards/gh60/keymaps/robotmaxtron/readme.md
rename to keyboards/gh60/revc/keymaps/robotmaxtron/readme.md
diff --git a/keyboards/gh60/keymaps/robotmaxtron/rules.mk b/keyboards/gh60/revc/keymaps/robotmaxtron/rules.mk
similarity index 100%
rename from keyboards/gh60/keymaps/robotmaxtron/rules.mk
rename to keyboards/gh60/revc/keymaps/robotmaxtron/rules.mk
diff --git a/keyboards/gh60/keymaps/sethbc/keymap.c b/keyboards/gh60/revc/keymaps/sethbc/keymap.c
similarity index 100%
rename from keyboards/gh60/keymaps/sethbc/keymap.c
rename to keyboards/gh60/revc/keymaps/sethbc/keymap.c
diff --git a/keyboards/gh60/keymaps/sethbc/rules.mk b/keyboards/gh60/revc/keymaps/sethbc/rules.mk
similarity index 100%
rename from keyboards/gh60/keymaps/sethbc/rules.mk
rename to keyboards/gh60/revc/keymaps/sethbc/rules.mk
diff --git a/keyboards/gh60/keymaps/xyverz/keymap.c b/keyboards/gh60/revc/keymaps/xyverz/keymap.c
similarity index 100%
rename from keyboards/gh60/keymaps/xyverz/keymap.c
rename to keyboards/gh60/revc/keymaps/xyverz/keymap.c
diff --git a/keyboards/gh60/pinout.txt b/keyboards/gh60/revc/pinout.txt
similarity index 100%
rename from keyboards/gh60/pinout.txt
rename to keyboards/gh60/revc/pinout.txt
diff --git a/keyboards/gh60/readme.md b/keyboards/gh60/revc/readme.md
similarity index 83%
rename from keyboards/gh60/readme.md
rename to keyboards/gh60/revc/readme.md
index b63cce9735e..cb0d9535147 100644
--- a/keyboards/gh60/readme.md
+++ b/keyboards/gh60/revc/readme.md
@@ -1,5 +1,4 @@
-GH60
-===
+# GH60 Rev C

@@ -11,7 +10,9 @@ Hardware Availability: http://blog.komar.be/projects/gh60-programmable-keyboard/
Make example for this keyboard (after setting up your build environment):
- make gh60:default
+ make gh60/revc:default
+
+**Note:** This GH60 firmware will not be compatible with the GH60 Satan PCB. Conversely, the GH60 Satan firmware will not be compatible with this PCB. Please ensure you have the correct firmware/pcb combination before flashing.
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/gh60/gh60.c b/keyboards/gh60/revc/revc.c
similarity index 97%
rename from keyboards/gh60/gh60.c
rename to keyboards/gh60/revc/revc.c
index 10ae8935949..e06739d2baa 100644
--- a/keyboards/gh60/gh60.c
+++ b/keyboards/gh60/revc/revc.c
@@ -1,4 +1,4 @@
-#include "gh60.h"
+#include "revc.h"
extern inline void gh60_caps_led_on(void);
diff --git a/keyboards/gh60/gh60.h b/keyboards/gh60/revc/revc.h
similarity index 100%
rename from keyboards/gh60/gh60.h
rename to keyboards/gh60/revc/revc.h
diff --git a/keyboards/gh60/rules.mk b/keyboards/gh60/revc/rules.mk
similarity index 97%
rename from keyboards/gh60/rules.mk
rename to keyboards/gh60/revc/rules.mk
index a4ee56d84a2..bf7ea514d6e 100644
--- a/keyboards/gh60/rules.mk
+++ b/keyboards/gh60/revc/rules.mk
@@ -50,7 +50,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+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)
diff --git a/keyboards/satan/config.h b/keyboards/gh60/satan/config.h
similarity index 100%
rename from keyboards/satan/config.h
rename to keyboards/gh60/satan/config.h
diff --git a/keyboards/satan/info.json b/keyboards/gh60/satan/info.json
similarity index 100%
rename from keyboards/satan/info.json
rename to keyboards/gh60/satan/info.json
diff --git a/keyboards/satan/keymaps/abhixec/keymap.c b/keyboards/gh60/satan/keymaps/abhixec/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/abhixec/keymap.c
rename to keyboards/gh60/satan/keymaps/abhixec/keymap.c
diff --git a/keyboards/satan/keymaps/abhixec/readme.md b/keyboards/gh60/satan/keymaps/abhixec/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/abhixec/readme.md
rename to keyboards/gh60/satan/keymaps/abhixec/readme.md
diff --git a/keyboards/satan/keymaps/abhixec/rules.mk b/keyboards/gh60/satan/keymaps/abhixec/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/abhixec/rules.mk
rename to keyboards/gh60/satan/keymaps/abhixec/rules.mk
diff --git a/keyboards/satan/keymaps/addcninblue/keymap.c b/keyboards/gh60/satan/keymaps/addcninblue/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/addcninblue/keymap.c
rename to keyboards/gh60/satan/keymaps/addcninblue/keymap.c
diff --git a/keyboards/satan/keymaps/addcninblue/readme.md b/keyboards/gh60/satan/keymaps/addcninblue/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/addcninblue/readme.md
rename to keyboards/gh60/satan/keymaps/addcninblue/readme.md
diff --git a/keyboards/satan/keymaps/addcninblue/rules.mk b/keyboards/gh60/satan/keymaps/addcninblue/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/addcninblue/rules.mk
rename to keyboards/gh60/satan/keymaps/addcninblue/rules.mk
diff --git a/keyboards/satan/keymaps/admiralStrokers/config.h b/keyboards/gh60/satan/keymaps/admiralStrokers/config.h
similarity index 100%
rename from keyboards/satan/keymaps/admiralStrokers/config.h
rename to keyboards/gh60/satan/keymaps/admiralStrokers/config.h
diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/gh60/satan/keymaps/admiralStrokers/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/admiralStrokers/keymap.c
rename to keyboards/gh60/satan/keymaps/admiralStrokers/keymap.c
diff --git a/keyboards/satan/keymaps/admiralStrokers/readme.md b/keyboards/gh60/satan/keymaps/admiralStrokers/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/admiralStrokers/readme.md
rename to keyboards/gh60/satan/keymaps/admiralStrokers/readme.md
diff --git a/keyboards/satan/keymaps/admiralStrokers/rules.mk b/keyboards/gh60/satan/keymaps/admiralStrokers/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/admiralStrokers/rules.mk
rename to keyboards/gh60/satan/keymaps/admiralStrokers/rules.mk
diff --git a/keyboards/satan/keymaps/ben_iso/config.h b/keyboards/gh60/satan/keymaps/ben_iso/config.h
similarity index 100%
rename from keyboards/satan/keymaps/ben_iso/config.h
rename to keyboards/gh60/satan/keymaps/ben_iso/config.h
diff --git a/keyboards/satan/keymaps/ben_iso/keymap.c b/keyboards/gh60/satan/keymaps/ben_iso/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/ben_iso/keymap.c
rename to keyboards/gh60/satan/keymaps/ben_iso/keymap.c
diff --git a/keyboards/satan/keymaps/ben_iso/readme.md b/keyboards/gh60/satan/keymaps/ben_iso/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/ben_iso/readme.md
rename to keyboards/gh60/satan/keymaps/ben_iso/readme.md
diff --git a/keyboards/satan/keymaps/ben_iso/rules.mk b/keyboards/gh60/satan/keymaps/ben_iso/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/ben_iso/rules.mk
rename to keyboards/gh60/satan/keymaps/ben_iso/rules.mk
diff --git a/keyboards/satan/keymaps/bri/keymap.c b/keyboards/gh60/satan/keymaps/bri/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/bri/keymap.c
rename to keyboards/gh60/satan/keymaps/bri/keymap.c
diff --git a/keyboards/satan/keymaps/bri/readme.md b/keyboards/gh60/satan/keymaps/bri/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/bri/readme.md
rename to keyboards/gh60/satan/keymaps/bri/readme.md
diff --git a/keyboards/satan/keymaps/chaser/keymap.c b/keyboards/gh60/satan/keymaps/chaser/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/chaser/keymap.c
rename to keyboards/gh60/satan/keymaps/chaser/keymap.c
diff --git a/keyboards/satan/keymaps/chaser/readme.md b/keyboards/gh60/satan/keymaps/chaser/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/chaser/readme.md
rename to keyboards/gh60/satan/keymaps/chaser/readme.md
diff --git a/keyboards/satan/keymaps/chaser/rules.mk b/keyboards/gh60/satan/keymaps/chaser/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/chaser/rules.mk
rename to keyboards/gh60/satan/keymaps/chaser/rules.mk
diff --git a/keyboards/satan/keymaps/colemak/keymap.c b/keyboards/gh60/satan/keymaps/colemak/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/colemak/keymap.c
rename to keyboards/gh60/satan/keymaps/colemak/keymap.c
diff --git a/keyboards/satan/keymaps/colemak/readme.md b/keyboards/gh60/satan/keymaps/colemak/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/colemak/readme.md
rename to keyboards/gh60/satan/keymaps/colemak/readme.md
diff --git a/keyboards/satan/keymaps/colemak/rules.mk b/keyboards/gh60/satan/keymaps/colemak/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/colemak/rules.mk
rename to keyboards/gh60/satan/keymaps/colemak/rules.mk
diff --git a/keyboards/satan/keymaps/dbroqua/keymap.c b/keyboards/gh60/satan/keymaps/dbroqua/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/dbroqua/keymap.c
rename to keyboards/gh60/satan/keymaps/dbroqua/keymap.c
diff --git a/keyboards/satan/keymaps/dbroqua/readme.md b/keyboards/gh60/satan/keymaps/dbroqua/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/dbroqua/readme.md
rename to keyboards/gh60/satan/keymaps/dbroqua/readme.md
diff --git a/keyboards/satan/keymaps/default/keymap.c b/keyboards/gh60/satan/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/default/keymap.c
rename to keyboards/gh60/satan/keymaps/default/keymap.c
diff --git a/keyboards/satan/keymaps/default/readme.md b/keyboards/gh60/satan/keymaps/default/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/default/readme.md
rename to keyboards/gh60/satan/keymaps/default/readme.md
diff --git a/keyboards/satan/keymaps/default/rules.mk b/keyboards/gh60/satan/keymaps/default/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/default/rules.mk
rename to keyboards/gh60/satan/keymaps/default/rules.mk
diff --git a/keyboards/satan/keymaps/dende_iso/keymap.c b/keyboards/gh60/satan/keymaps/dende_iso/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/dende_iso/keymap.c
rename to keyboards/gh60/satan/keymaps/dende_iso/keymap.c
diff --git a/keyboards/satan/keymaps/dende_iso/readme.md b/keyboards/gh60/satan/keymaps/dende_iso/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/dende_iso/readme.md
rename to keyboards/gh60/satan/keymaps/dende_iso/readme.md
diff --git a/keyboards/satan/keymaps/dende_iso/rules.mk b/keyboards/gh60/satan/keymaps/dende_iso/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/dende_iso/rules.mk
rename to keyboards/gh60/satan/keymaps/dende_iso/rules.mk
diff --git a/keyboards/satan/keymaps/denolfe/README.md b/keyboards/gh60/satan/keymaps/denolfe/README.md
similarity index 100%
rename from keyboards/satan/keymaps/denolfe/README.md
rename to keyboards/gh60/satan/keymaps/denolfe/README.md
diff --git a/keyboards/satan/keymaps/denolfe/keymap.c b/keyboards/gh60/satan/keymaps/denolfe/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/denolfe/keymap.c
rename to keyboards/gh60/satan/keymaps/denolfe/keymap.c
diff --git a/keyboards/satan/keymaps/denolfe/rules.mk b/keyboards/gh60/satan/keymaps/denolfe/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/denolfe/rules.mk
rename to keyboards/gh60/satan/keymaps/denolfe/rules.mk
diff --git a/keyboards/satan/keymaps/dkrieger/config.h b/keyboards/gh60/satan/keymaps/dkrieger/config.h
similarity index 100%
rename from keyboards/satan/keymaps/dkrieger/config.h
rename to keyboards/gh60/satan/keymaps/dkrieger/config.h
diff --git a/keyboards/satan/keymaps/dkrieger/keymap.c b/keyboards/gh60/satan/keymaps/dkrieger/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/dkrieger/keymap.c
rename to keyboards/gh60/satan/keymaps/dkrieger/keymap.c
diff --git a/keyboards/satan/keymaps/dkrieger/readme.md b/keyboards/gh60/satan/keymaps/dkrieger/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/dkrieger/readme.md
rename to keyboards/gh60/satan/keymaps/dkrieger/readme.md
diff --git a/keyboards/satan/keymaps/dkrieger/rules.mk b/keyboards/gh60/satan/keymaps/dkrieger/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/dkrieger/rules.mk
rename to keyboards/gh60/satan/keymaps/dkrieger/rules.mk
diff --git a/keyboards/satan/keymaps/fakb/config.h b/keyboards/gh60/satan/keymaps/fakb/config.h
similarity index 100%
rename from keyboards/satan/keymaps/fakb/config.h
rename to keyboards/gh60/satan/keymaps/fakb/config.h
diff --git a/keyboards/satan/keymaps/fakb/keymap.c b/keyboards/gh60/satan/keymaps/fakb/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/fakb/keymap.c
rename to keyboards/gh60/satan/keymaps/fakb/keymap.c
diff --git a/keyboards/satan/keymaps/fakb/readme.md b/keyboards/gh60/satan/keymaps/fakb/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/fakb/readme.md
rename to keyboards/gh60/satan/keymaps/fakb/readme.md
diff --git a/keyboards/satan/keymaps/fakb/rules.mk b/keyboards/gh60/satan/keymaps/fakb/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/fakb/rules.mk
rename to keyboards/gh60/satan/keymaps/fakb/rules.mk
diff --git a/keyboards/satan/keymaps/hhkb_7u/keymap.c b/keyboards/gh60/satan/keymaps/hhkb_7u/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/hhkb_7u/keymap.c
rename to keyboards/gh60/satan/keymaps/hhkb_7u/keymap.c
diff --git a/keyboards/satan/keymaps/hhkb_7u/readme.md b/keyboards/gh60/satan/keymaps/hhkb_7u/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/hhkb_7u/readme.md
rename to keyboards/gh60/satan/keymaps/hhkb_7u/readme.md
diff --git a/keyboards/satan/keymaps/isoHHKB/keymap.c b/keyboards/gh60/satan/keymaps/isoHHKB/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/isoHHKB/keymap.c
rename to keyboards/gh60/satan/keymaps/isoHHKB/keymap.c
diff --git a/keyboards/satan/keymaps/isoHHKB/readme.md b/keyboards/gh60/satan/keymaps/isoHHKB/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/isoHHKB/readme.md
rename to keyboards/gh60/satan/keymaps/isoHHKB/readme.md
diff --git a/keyboards/satan/keymaps/isoHHKB/rules.mk b/keyboards/gh60/satan/keymaps/isoHHKB/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/isoHHKB/rules.mk
rename to keyboards/gh60/satan/keymaps/isoHHKB/rules.mk
diff --git a/keyboards/satan/keymaps/iso_split_rshift/.gitignore b/keyboards/gh60/satan/keymaps/iso_split_rshift/.gitignore
similarity index 100%
rename from keyboards/satan/keymaps/iso_split_rshift/.gitignore
rename to keyboards/gh60/satan/keymaps/iso_split_rshift/.gitignore
diff --git a/keyboards/satan/keymaps/iso_split_rshift/build.sh b/keyboards/gh60/satan/keymaps/iso_split_rshift/build.sh
similarity index 100%
rename from keyboards/satan/keymaps/iso_split_rshift/build.sh
rename to keyboards/gh60/satan/keymaps/iso_split_rshift/build.sh
diff --git a/keyboards/satan/keymaps/iso_split_rshift/config.h b/keyboards/gh60/satan/keymaps/iso_split_rshift/config.h
similarity index 100%
rename from keyboards/satan/keymaps/iso_split_rshift/config.h
rename to keyboards/gh60/satan/keymaps/iso_split_rshift/config.h
diff --git a/keyboards/satan/keymaps/iso_split_rshift/keymap.c b/keyboards/gh60/satan/keymaps/iso_split_rshift/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/iso_split_rshift/keymap.c
rename to keyboards/gh60/satan/keymaps/iso_split_rshift/keymap.c
diff --git a/keyboards/satan/keymaps/iso_split_rshift/readme.md b/keyboards/gh60/satan/keymaps/iso_split_rshift/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/iso_split_rshift/readme.md
rename to keyboards/gh60/satan/keymaps/iso_split_rshift/readme.md
diff --git a/keyboards/satan/keymaps/iso_split_rshift/rules.mk b/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/iso_split_rshift/rules.mk
rename to keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk
diff --git a/keyboards/satan/keymaps/jarred/keymap.c b/keyboards/gh60/satan/keymaps/jarred/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/jarred/keymap.c
rename to keyboards/gh60/satan/keymaps/jarred/keymap.c
diff --git a/keyboards/satan/keymaps/jarred/readme.md b/keyboards/gh60/satan/keymaps/jarred/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/jarred/readme.md
rename to keyboards/gh60/satan/keymaps/jarred/readme.md
diff --git a/keyboards/satan/keymaps/lepa/keymap.c b/keyboards/gh60/satan/keymaps/lepa/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/lepa/keymap.c
rename to keyboards/gh60/satan/keymaps/lepa/keymap.c
diff --git a/keyboards/satan/keymaps/lepa/readme.md b/keyboards/gh60/satan/keymaps/lepa/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/lepa/readme.md
rename to keyboards/gh60/satan/keymaps/lepa/readme.md
diff --git a/keyboards/satan/keymaps/lepa/rules.mk b/keyboards/gh60/satan/keymaps/lepa/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/lepa/rules.mk
rename to keyboards/gh60/satan/keymaps/lepa/rules.mk
diff --git a/keyboards/satan/keymaps/mark1/keymap.c b/keyboards/gh60/satan/keymaps/mark1/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/mark1/keymap.c
rename to keyboards/gh60/satan/keymaps/mark1/keymap.c
diff --git a/keyboards/satan/keymaps/mark1/readme.md b/keyboards/gh60/satan/keymaps/mark1/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/mark1/readme.md
rename to keyboards/gh60/satan/keymaps/mark1/readme.md
diff --git a/keyboards/satan/keymaps/midi/config.h b/keyboards/gh60/satan/keymaps/midi/config.h
similarity index 100%
rename from keyboards/satan/keymaps/midi/config.h
rename to keyboards/gh60/satan/keymaps/midi/config.h
diff --git a/keyboards/satan/keymaps/midi/keymap.c b/keyboards/gh60/satan/keymaps/midi/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/midi/keymap.c
rename to keyboards/gh60/satan/keymaps/midi/keymap.c
diff --git a/keyboards/satan/keymaps/midi/readme.md b/keyboards/gh60/satan/keymaps/midi/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/midi/readme.md
rename to keyboards/gh60/satan/keymaps/midi/readme.md
diff --git a/keyboards/satan/keymaps/midi/rules.mk b/keyboards/gh60/satan/keymaps/midi/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/midi/rules.mk
rename to keyboards/gh60/satan/keymaps/midi/rules.mk
diff --git a/keyboards/satan/keymaps/no_caps_lock/keymap.c b/keyboards/gh60/satan/keymaps/no_caps_lock/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/no_caps_lock/keymap.c
rename to keyboards/gh60/satan/keymaps/no_caps_lock/keymap.c
diff --git a/keyboards/satan/keymaps/no_caps_lock/readme.md b/keyboards/gh60/satan/keymaps/no_caps_lock/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/no_caps_lock/readme.md
rename to keyboards/gh60/satan/keymaps/no_caps_lock/readme.md
diff --git a/keyboards/satan/keymaps/olligranlund_iso/config.h b/keyboards/gh60/satan/keymaps/olligranlund_iso/config.h
similarity index 100%
rename from keyboards/satan/keymaps/olligranlund_iso/config.h
rename to keyboards/gh60/satan/keymaps/olligranlund_iso/config.h
diff --git a/keyboards/satan/keymaps/olligranlund_iso/keymap.c b/keyboards/gh60/satan/keymaps/olligranlund_iso/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/olligranlund_iso/keymap.c
rename to keyboards/gh60/satan/keymaps/olligranlund_iso/keymap.c
diff --git a/keyboards/satan/keymaps/olligranlund_iso/readme.md b/keyboards/gh60/satan/keymaps/olligranlund_iso/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/olligranlund_iso/readme.md
rename to keyboards/gh60/satan/keymaps/olligranlund_iso/readme.md
diff --git a/keyboards/satan/keymaps/olligranlund_iso/rules.mk b/keyboards/gh60/satan/keymaps/olligranlund_iso/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/olligranlund_iso/rules.mk
rename to keyboards/gh60/satan/keymaps/olligranlund_iso/rules.mk
diff --git a/keyboards/satan/keymaps/poker/keymap.c b/keyboards/gh60/satan/keymaps/poker/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/poker/keymap.c
rename to keyboards/gh60/satan/keymaps/poker/keymap.c
diff --git a/keyboards/satan/keymaps/rask63/keymap.c b/keyboards/gh60/satan/keymaps/rask63/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/rask63/keymap.c
rename to keyboards/gh60/satan/keymaps/rask63/keymap.c
diff --git a/keyboards/satan/keymaps/sethbc/keymap.c b/keyboards/gh60/satan/keymaps/sethbc/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/sethbc/keymap.c
rename to keyboards/gh60/satan/keymaps/sethbc/keymap.c
diff --git a/keyboards/satan/keymaps/sethbc/readme.md b/keyboards/gh60/satan/keymaps/sethbc/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/sethbc/readme.md
rename to keyboards/gh60/satan/keymaps/sethbc/readme.md
diff --git a/keyboards/satan/keymaps/sethbc/rules.mk b/keyboards/gh60/satan/keymaps/sethbc/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/sethbc/rules.mk
rename to keyboards/gh60/satan/keymaps/sethbc/rules.mk
diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/gh60/satan/keymaps/smt/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/smt/keymap.c
rename to keyboards/gh60/satan/keymaps/smt/keymap.c
diff --git a/keyboards/satan/keymaps/smt/readme.md b/keyboards/gh60/satan/keymaps/smt/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/smt/readme.md
rename to keyboards/gh60/satan/keymaps/smt/readme.md
diff --git a/keyboards/satan/keymaps/smt/rules.mk b/keyboards/gh60/satan/keymaps/smt/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/smt/rules.mk
rename to keyboards/gh60/satan/keymaps/smt/rules.mk
diff --git a/keyboards/satan/keymaps/spacemanspiff/keymap.c b/keyboards/gh60/satan/keymaps/spacemanspiff/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/spacemanspiff/keymap.c
rename to keyboards/gh60/satan/keymaps/spacemanspiff/keymap.c
diff --git a/keyboards/satan/keymaps/spacemanspiff/readme.md b/keyboards/gh60/satan/keymaps/spacemanspiff/readme.md
similarity index 100%
rename from keyboards/satan/keymaps/spacemanspiff/readme.md
rename to keyboards/gh60/satan/keymaps/spacemanspiff/readme.md
diff --git a/keyboards/satan/keymaps/stanleylai/config.h b/keyboards/gh60/satan/keymaps/stanleylai/config.h
similarity index 100%
rename from keyboards/satan/keymaps/stanleylai/config.h
rename to keyboards/gh60/satan/keymaps/stanleylai/config.h
diff --git a/keyboards/satan/keymaps/stanleylai/keymap.c b/keyboards/gh60/satan/keymaps/stanleylai/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/stanleylai/keymap.c
rename to keyboards/gh60/satan/keymaps/stanleylai/keymap.c
diff --git a/keyboards/satan/keymaps/unxmaal/README.md b/keyboards/gh60/satan/keymaps/unxmaal/README.md
similarity index 100%
rename from keyboards/satan/keymaps/unxmaal/README.md
rename to keyboards/gh60/satan/keymaps/unxmaal/README.md
diff --git a/keyboards/satan/keymaps/unxmaal/keymap.c b/keyboards/gh60/satan/keymaps/unxmaal/keymap.c
similarity index 100%
rename from keyboards/satan/keymaps/unxmaal/keymap.c
rename to keyboards/gh60/satan/keymaps/unxmaal/keymap.c
diff --git a/keyboards/satan/keymaps/unxmaal/rules.mk b/keyboards/gh60/satan/keymaps/unxmaal/rules.mk
similarity index 100%
rename from keyboards/satan/keymaps/unxmaal/rules.mk
rename to keyboards/gh60/satan/keymaps/unxmaal/rules.mk
diff --git a/keyboards/satan/readme.md b/keyboards/gh60/satan/readme.md
similarity index 82%
rename from keyboards/satan/readme.md
rename to keyboards/gh60/satan/readme.md
index 7eb272cf304..f6a56e4a80a 100644
--- a/keyboards/satan/readme.md
+++ b/keyboards/gh60/satan/readme.md
@@ -8,7 +8,9 @@ Hardware Availability: https://www.1upkeyboards.com/shop/controllers/gh60-satan-
Make example for this keyboard (after setting up your build environment):
- make satan:default
+ make gh60/satan:default
+
+**Note:** This GH60 Satan firmware will not be compatible with the GH60 Rev C PCB. Conversely, the GH60 Rev C firmware will not be compatible with this PCB. Please ensure you have the correct firmware/pcb combination before flashing.
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/satan/rules.mk b/keyboards/gh60/satan/rules.mk
similarity index 97%
rename from keyboards/satan/rules.mk
rename to keyboards/gh60/satan/rules.mk
index 51161490e4d..b6bb68391ff 100644
--- a/keyboards/satan/rules.mk
+++ b/keyboards/gh60/satan/rules.mk
@@ -47,7 +47,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
diff --git a/keyboards/satan/satan.c b/keyboards/gh60/satan/satan.c
similarity index 100%
rename from keyboards/satan/satan.c
rename to keyboards/gh60/satan/satan.c
diff --git a/keyboards/satan/satan.h b/keyboards/gh60/satan/satan.h
similarity index 100%
rename from keyboards/satan/satan.h
rename to keyboards/gh60/satan/satan.h
diff --git a/keyboards/gray_studio/space65/space65.c b/keyboards/gray_studio/space65/space65.c
index f9f2224ab81..74a86a202d0 100644
--- a/keyboards/gray_studio/space65/space65.c
+++ b/keyboards/gray_studio/space65/space65.c
@@ -19,6 +19,7 @@ void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
+ setPinOutput(E6);
matrix_init_user();
}
@@ -39,9 +40,9 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
void led_set_kb(uint8_t usb_led) {
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
- writePinHigh(E6);
- } else {
writePinLow(E6);
+ } else {
+ writePinHigh(E6);
}
led_set_user(usb_led);
diff --git a/keyboards/grid600/press/config.h b/keyboards/grid600/press/config.h
new file mode 100644
index 00000000000..7c934570054
--- /dev/null
+++ b/keyboards/grid600/press/config.h
@@ -0,0 +1,78 @@
+/*
+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 0x7539
+#define DEVICE_VER 0x0005
+#define MANUFACTURER Grid
+#define PRODUCT PRESS
+#define DESCRIPTION Top module for Grid 600
+
+/* key matrix size */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 4
+
+/*
+ * 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 { F0 }
+#define MATRIX_COL_PINS { F1, F4, F5, F6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+
+#define RGB_DI_PIN B6
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 4
+ #define RGBLIGHT_HUE_STEP 10
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
+ #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 */
+ #define RGBLIGHT_ANIMATIONS
+/*== customize breathing effect ==*/
+ /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+ #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+ /*==== use exp() and sin() ====*/
+ #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+ #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* 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
+
+/* 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
diff --git a/keyboards/grid600/press/info.json b/keyboards/grid600/press/info.json
new file mode 100644
index 00000000000..131b094af55
--- /dev/null
+++ b/keyboards/grid600/press/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "Grid 600 Type 05 PRESS Cover Module",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 4,
+ "height": 1,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/grid600/press/keymaps/default/config.h b/keyboards/grid600/press/keymaps/default/config.h
new file mode 100644
index 00000000000..60dd02a9d0e
--- /dev/null
+++ b/keyboards/grid600/press/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/grid600/press/keymaps/default/keymap.c b/keyboards/grid600/press/keymaps/default/keymap.c
new file mode 100644
index 00000000000..f253c692150
--- /dev/null
+++ b/keyboards/grid600/press/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* 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( /* Base */
+ KC_G, KC_R, KC_I, KC_D
+ ),
+};
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/grid600/press/keymaps/default/readme.md b/keyboards/grid600/press/keymaps/default/readme.md
new file mode 100644
index 00000000000..b29ee678683
--- /dev/null
+++ b/keyboards/grid600/press/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for grid
diff --git a/keyboards/grid600/press/press.c b/keyboards/grid600/press/press.c
new file mode 100644
index 00000000000..33935deca4a
--- /dev/null
+++ b/keyboards/grid600/press/press.c
@@ -0,0 +1,16 @@
+/* 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 "press.h"
\ No newline at end of file
diff --git a/keyboards/grid600/press/press.h b/keyboards/grid600/press/press.h
new file mode 100644
index 00000000000..ca9eac9d193
--- /dev/null
+++ b/keyboards/grid600/press/press.h
@@ -0,0 +1,32 @@
+/* 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"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ K00, K01, K02, K03 \
+) { \
+ { K00, K01, K02, K03 } \
+}
diff --git a/keyboards/grid600/press/readme.md b/keyboards/grid600/press/readme.md
new file mode 100644
index 00000000000..4113b372e9f
--- /dev/null
+++ b/keyboards/grid600/press/readme.md
@@ -0,0 +1,18 @@
+# Grid 600 Type 05 "PRESS" Cover Module
+
+Cover module for Grid 600 Keyboard with 4 keys.
+
+Code for the module was originally located at [gridishere's QMK fork](https://github.com/gridishere/qmk_firmware/tree/master/keyboards/grid/gridmod5).
+
+Please keep in mind that this is actually a separate keyboard from the one installed in the Grid 600.
+Functionality such as layer changes and light modifications triggered on one PCB will not affect the other.
+
+Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
+Hardware Supported: Grid 600 Type 05 "PRESS" cover module.
+Hardware Availability: [zFrontier](https://en.zfrontier.com/products/grid600s)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make grid600/press: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/grid600/press/rules.mk b/keyboards/grid600/press/rules.mk
new file mode 100644
index 00000000000..1fcf3841bec
--- /dev/null
+++ b/keyboards/grid600/press/rules.mk
@@ -0,0 +1,80 @@
+# 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
+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 = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # 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 = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # 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/grid600/readme.md b/keyboards/grid600/readme.md
new file mode 100644
index 00000000000..f7fa6a085b1
--- /dev/null
+++ b/keyboards/grid600/readme.md
@@ -0,0 +1,7 @@
+# Grid 600 Cover Modules
+
+The Grid 600 is a tray mount 60% case supporting most standard 60% PCBs.
+
+A unique feature of the Grid 600 is that it has five different cover modules that not only include USB C pass through, but also have functions such as RGB or additional macro keys.
+
+This is a collection of some of the programmable modules available for this enclosure.
\ No newline at end of file
diff --git a/keyboards/hadron/config.h b/keyboards/hadron/config.h
index 61e76474833..3fc76b0b3b4 100644
--- a/keyboards/hadron/config.h
+++ b/keyboards/hadron/config.h
@@ -20,8 +20,8 @@ along with this program. If not, see .
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
+#define VENDOR_ID 0xFB30
+#define PRODUCT_ID 0x5F37
#define MANUFACTURER ishtob
#define PRODUCT Hadron Keyboard
#define DESCRIPTION A low profile ortholinear keyboard
diff --git a/keyboards/hadron/ver2/keymaps/side_numpad/rules.mk b/keyboards/hadron/ver2/keymaps/side_numpad/rules.mk
deleted file mode 100644
index 79be3bb87ef..00000000000
--- a/keyboards/hadron/ver2/keymaps/side_numpad/rules.mk
+++ /dev/null
@@ -1,23 +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 = yes # 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 = yes # 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/hadron/ver3/keymaps/xulkal/config.h b/keyboards/hadron/ver3/keymaps/xulkal/config.h
new file mode 100644
index 00000000000..6f70f09beec
--- /dev/null
+++ b/keyboards/hadron/ver3/keymaps/xulkal/config.h
@@ -0,0 +1 @@
+#pragma once
diff --git a/keyboards/hadron/ver3/keymaps/xulkal/keymap.c b/keyboards/hadron/ver3/keymaps/xulkal/keymap.c
new file mode 100644
index 00000000000..0b7fd6f5e5f
--- /dev/null
+++ b/keyboards/hadron/ver3/keymaps/xulkal/keymap.c
@@ -0,0 +1,73 @@
+#include QMK_KEYBOARD_H
+#include "xulkal.h"
+
+#define EXPAND_LAYOUT(...) LAYOUT(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Qwerty Layout
+ * ,-----------------------------------------------------------------------------------.
+ * | GESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BkSp |
+ * |------+------+------+------+------+------|------+------+------+------+------+------+--------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | \ | 7 | 8 | 9 |
+ * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------|
+ * |FN(CAPS)| A | S | D | F | G | H | J | K | L | ; | Enter| 4 | 5 | 6 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Sft[ | Z | X | C | V | B | N | M | , | . | / | Sft] | 1 | 2 | 3 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctl- | Win | LOWER| RAISE| Alt | Space| Space| Left | Up | Down | Right| Ctl= | 0 | . | = |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------'
+ */
+ [_QWERTY] = EXPAND_LAYOUT( \
+ _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,\
+ _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_P7, KC_P8, KC_P9, \
+ _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_P4, KC_P5, KC_P6, \
+ _________________QWERTY_L4_________________, _________________QWERTY_R4_________________, KC_P1, KC_P2, KC_P3, \
+ _________________QWERTY_L5_________________, _________________QWERTY_R5_________________, KC_P0, KC_DOT, KC_EQL \
+ ),
+
+#ifndef GAMELAYER_DISABLE
+ [_GAME] = EXPAND_LAYOUT( \
+ ___________________GAME_L1_________________, ___________________GAME_R1_________________, \
+ ___________________GAME_L2_________________, ___________________GAME_R2_________________, _______, _______, _______, \
+ ___________________GAME_L3_________________, ___________________GAME_R3_________________, _______, _______, _______, \
+ ___________________GAME_L4_________________, ___________________GAME_R4_________________, _______, _______, _______, \
+ ___________________GAME_L5_________________, ___________________GAME_R5_________________, _______, _______, _______ \
+ ),
+#endif
+
+ [_LOWER] = EXPAND_LAYOUT( \
+ __________________LOWER_L1_________________, __________________LOWER_R1_________________, \
+ __________________LOWER_L2_________________, __________________LOWER_R2_________________, _______, _______, _______, \
+ __________________LOWER_L3_________________, __________________LOWER_R3_________________, _______, _______, _______, \
+ __________________LOWER_L4_________________, __________________LOWER_R4_________________, _______, _______, _______, \
+ __________________LOWER_L5_________________, __________________LOWER_R5_________________, _______, _______, _______ \
+ ),
+
+ [_RAISE] = EXPAND_LAYOUT( \
+ __________________RAISE_L1_________________, __________________RAISE_R1_________________, \
+ __________________RAISE_L2_________________, __________________RAISE_R2_________________, _______, _______, _______, \
+ __________________RAISE_L3_________________, __________________RAISE_R3_________________, _______, _______, _______, \
+ __________________RAISE_L4_________________, __________________RAISE_R4_________________, _______, _______, _______, \
+ __________________RAISE_L5_________________, __________________RAISE_R5_________________, _______, _______, _______ \
+ ),
+
+#ifdef TRILAYER_ENABLED
+ [_ADJUST] = EXPAND_LAYOUT( \
+ _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, \
+ _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, _______, _______, _______, \
+ _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, _______, _______, _______, \
+ _________________ADJUST_L4_________________, _________________ADJUST_R4_________________, _______, _______, _______, \
+ _________________ADJUST_L5_________________, _________________ADJUST_R5_________________, _______, _______, _______ \
+ ),
+#endif
+};
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/hadron/ver3/keymaps/xulkal/rules.mk b/keyboards/hadron/ver3/keymaps/xulkal/rules.mk
new file mode 100644
index 00000000000..0305226b321
--- /dev/null
+++ b/keyboards/hadron/ver3/keymaps/xulkal/rules.mk
@@ -0,0 +1,4 @@
+# Overridden build options
+
+COMMAND_ENABLE = no
+ENCODER_ENABLER = no
diff --git a/keyboards/handwired/6macro/6macro.c b/keyboards/handwired/6macro/6macro.c
new file mode 100644
index 00000000000..0a62bedf162
--- /dev/null
+++ b/keyboards/handwired/6macro/6macro.c
@@ -0,0 +1,16 @@
+/* Copyright 2019 joaofbmaia
+ *
+ * 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 "6macro.h"
diff --git a/keyboards/handwired/6macro/6macro.h b/keyboards/handwired/6macro/6macro.h
new file mode 100644
index 00000000000..c1d50051283
--- /dev/null
+++ b/keyboards/handwired/6macro/6macro.h
@@ -0,0 +1,35 @@
+/* Copyright 2019 joaofbmaia
+ *
+ * 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"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, k01, k02, \
+ k10, k11, k12 \
+) \
+{ \
+ { k00, k01, k02 }, \
+ { k10, k11, k12 }, \
+}
diff --git a/keyboards/handwired/6macro/config.h b/keyboards/handwired/6macro/config.h
new file mode 100644
index 00000000000..7919c3c71ff
--- /dev/null
+++ b/keyboards/handwired/6macro/config.h
@@ -0,0 +1,70 @@
+/*
+Copyright 2019 joaofbmaia
+
+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 0x0037
+#define DEVICE_VER 0x0001
+#define MANUFACTURER joaofbmaia
+#define PRODUCT 6macro
+#define DESCRIPTION 6macro
+
+/* key matrix size */
+#define MATRIX_ROWS 2
+#define MATRIX_COLS 3
+
+/* pinout - DON'T CHANGE */
+#define MATRIX_ROW_PINS { B3, B4 }
+#define MATRIX_COL_PINS { B0, B1, B2 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN D2
+#define RGBLED_NUM 10
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+#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
+// /*== customize breathing effect ==*/
+// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+// /*==== use exp() and sin() ====*/
+// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
\ No newline at end of file
diff --git a/keyboards/handwired/6macro/info.json b/keyboards/handwired/6macro/info.json
new file mode 100644
index 00000000000..52bd03a1dd8
--- /dev/null
+++ b/keyboards/handwired/6macro/info.json
@@ -0,0 +1,13 @@
+{
+ "keyboard_name": "6macro",
+ "url": "",
+ "maintainer": "joaofbmaia",
+ "width": 3,
+ "height": 2,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}]
+ }
+ }
+ }
+
\ No newline at end of file
diff --git a/keyboards/handwired/6macro/keymaps/default/config.h b/keyboards/handwired/6macro/keymaps/default/config.h
new file mode 100644
index 00000000000..64ba57443f8
--- /dev/null
+++ b/keyboards/handwired/6macro/keymaps/default/config.h
@@ -0,0 +1,18 @@
+/* Copyright 2019 joaofbmaia
+ *
+ * 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
+
diff --git a/keyboards/handwired/6macro/keymaps/default/keymap.c b/keyboards/handwired/6macro/keymaps/default/keymap.c
new file mode 100644
index 00000000000..365dbf7b05a
--- /dev/null
+++ b/keyboards/handwired/6macro/keymaps/default/keymap.c
@@ -0,0 +1,56 @@
+/* Copyright 2019 joaofbmaia
+ *
+ * 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] = {
+
+ /* LAYER 0
+ * ,-----------------------.
+ * | F13 | F14 | F15/FN| Hold for FN
+ * |-------+-------+-------|
+ * | F16 | F17 | F18 |
+ * `-------+-------+-------'
+ */
+ [0] = LAYOUT(
+ KC_F13, KC_F14, LT(1, KC_F15), \
+ KC_F16, KC_F17, KC_F18 \
+ ),
+
+ /* LAYER 1
+ * ,-----------------------.
+ * |RGB_TOG|RGBMOD+| |
+ * |-------+-------+-------|
+ * |RGBHUE+|RGBBRI+|Spec FN| Hold along with previous to access special funtions (RESET)
+ * `-------+-------+-------'
+ */
+ [1] = LAYOUT(
+ RGB_TOG, RGB_MOD, KC_TRNS, \
+ RGB_HUI, RGB_VAI, MO(2) \
+ ),
+
+ /* LAYER 2
+ * ,-----------------------.
+ * | RESET |RGBMOD-| |
+ * |-------+-------+-------|
+ * |RGBHUE-|RGBBRI-| |
+ * `-------+-------+-------'
+ */
+ [2] = LAYOUT(
+ RESET, RGB_RMOD, KC_NO, \
+ RGB_HUD, RGB_VAD, KC_TRNS \
+ )
+
+};
diff --git a/keyboards/handwired/6macro/keymaps/default/readme.md b/keyboards/handwired/6macro/keymaps/default/readme.md
new file mode 100644
index 00000000000..dd42a8fc62a
--- /dev/null
+++ b/keyboards/handwired/6macro/keymaps/default/readme.md
@@ -0,0 +1,15 @@
+Layer 0:
+
+
+
+Layer 1:
+
+
+
+Layer 2:
+
+
+
+# Default 6macro Layout
+
+This is the default layout. Layer 0 is mappped to function keys 13-18. Top right key switches to layer above when held. Upper layers are for RGB control.
\ No newline at end of file
diff --git a/keyboards/handwired/6macro/keymaps/osu/config.h b/keyboards/handwired/6macro/keymaps/osu/config.h
new file mode 100644
index 00000000000..64ba57443f8
--- /dev/null
+++ b/keyboards/handwired/6macro/keymaps/osu/config.h
@@ -0,0 +1,18 @@
+/* Copyright 2019 joaofbmaia
+ *
+ * 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
+
diff --git a/keyboards/handwired/6macro/keymaps/osu/keymap.c b/keyboards/handwired/6macro/keymaps/osu/keymap.c
new file mode 100644
index 00000000000..ffed7d909f5
--- /dev/null
+++ b/keyboards/handwired/6macro/keymaps/osu/keymap.c
@@ -0,0 +1,56 @@
+/* Copyright 2019 joaofbmaia
+ *
+ * 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] = {
+
+ /* LAYER 0
+ * ,-----------------------.
+ * | ESC | ~ | SPC/FN| Hold for FN
+ * |-------+-------+-------|
+ * | C | Z | X |
+ * `-------+-------+-------'
+ */
+ [0] = LAYOUT(
+ KC_ESC, KC_GRAVE, LT(1, KC_SPC), \
+ KC_C, KC_Z, KC_X \
+ ),
+
+ /* LAYER 1
+ * ,-----------------------.
+ * |RGB_TOG|RGBMOD+| |
+ * |-------+-------+-------|
+ * |RGBHUE+|RGBBRI+|Spec FN| Hold along with previous to access special funtions (RESET)
+ * `-------+-------+-------'
+ */
+ [1] = LAYOUT(
+ RGB_TOG, RGB_MOD, KC_TRNS, \
+ RGB_HUI, RGB_VAI, MO(2) \
+ ),
+
+ /* LAYER 2
+ * ,-----------------------.
+ * | RESET |RGBMOD-| |
+ * |-------+-------+-------|
+ * |RGBHUE-|RGBBRI-| |
+ * `-------+-------+-------'
+ */
+ [2] = LAYOUT(
+ RESET, RGB_RMOD, KC_NO, \
+ RGB_HUD, RGB_VAD, KC_TRNS \
+ )
+
+};
diff --git a/keyboards/handwired/6macro/keymaps/osu/readme.md b/keyboards/handwired/6macro/keymaps/osu/readme.md
new file mode 100644
index 00000000000..0de5d6bf2e0
--- /dev/null
+++ b/keyboards/handwired/6macro/keymaps/osu/readme.md
@@ -0,0 +1,15 @@
+Layer 0:
+
+
+
+Layer 1:
+
+
+
+Layer 2:
+
+
+
+# OSU 6macro Layout
+
+This layout is for the game OSU. Layer 0 is mappped as shown above. Top right key switches to layer above when held. Upper layers are for RGB control.
\ No newline at end of file
diff --git a/keyboards/handwired/6macro/readme.md b/keyboards/handwired/6macro/readme.md
new file mode 100644
index 00000000000..3fbd917c805
--- /dev/null
+++ b/keyboards/handwired/6macro/readme.md
@@ -0,0 +1,15 @@
+# 6macro
+
+
+
+
+This is a 6-key keyboard intended for macros or as a dedicated controller for games with few bindings.
+
+Keyboard Maintainer: [joaofbmaia](https://github.com/joaofbmaia)
+Hardware: https://github.com/joaofbmaia/6macro
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/6macro: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/handwired/6macro/rules.mk b/keyboards/handwired/6macro/rules.mk
new file mode 100644
index 00000000000..fc886fb9afa
--- /dev/null
+++ b/keyboards/handwired/6macro/rules.mk
@@ -0,0 +1,81 @@
+# MCU name
+MCU = atmega32u2
+
+# 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
+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 = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # 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
+#RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+UNICODE_ENABLE = yes # 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/handwired/hnah40/info.json b/keyboards/handwired/hnah40/info.json
index 6a577a5207e..f9664d22c93 100644
--- a/keyboards/handwired/hnah40/info.json
+++ b/keyboards/handwired/hnah40/info.json
@@ -39,7 +39,8 @@
{"label":"N", "x":6.75, "y":2},
{"label":"M", "x":7.75, "y":2},
{"label":",", "x":8.75, "y":2},
- {"label":"Shift", "x":9.75, "y":2, "w":2.25},
+ {"label":".", "x":9.75, "y":2},
+ {"label":"Shift", "x":10.75, "y":2, "w":1.25},
{"label":"Ctrl", "x":0, "y":3, "w":1.25},
{"label":"Win", "x":1.25, "y":3, "w":1.5},
{"label":"Alt", "x":2.75, "y":3, "w":1.25},
@@ -51,4 +52,4 @@
]
}
}
-}
\ No newline at end of file
+}
diff --git a/keyboards/handwired/jotanck/keymaps/default/keymap.c b/keyboards/handwired/jotanck/keymaps/default/keymap.c
index 3eb01a65815..44f993db60c 100644
--- a/keyboards/handwired/jotanck/keymaps/default/keymap.c
+++ b/keyboards/handwired/jotanck/keymaps/default/keymap.c
@@ -13,11 +13,14 @@ extern keymap_config_t keymap_config;
#define _QWERTY 0
#define _LOWER 1
#define _RAISE 2
-#define _ADJUST 3
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
+static bool is_ctl_pressed;
+static bool is_esc_pressed;
+static bool is_bspc_pressed;
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
@@ -73,20 +76,47 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
-
-/* Adjust */
-[_ADJUST] = LAYOUT_ortho_4x12 (
- _______, RESET, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-),
+
};
uint32_t layer_state_set_user(uint32_t state) {
- return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+ #ifdef JOTANCK_LEDS
+ switch (biton32(state)) {
+ case _LOWER:
+ writePinHigh(JOTANCK_LED1);
+ writePinLow(JOTANCK_LED2);
+ break;
+ case _RAISE:
+ writePinLow(JOTANCK_LED1);
+ writePinHigh(JOTANCK_LED2);
+ break;
+ default:
+ writePinLow(JOTANCK_LED1);
+ writePinLow(JOTANCK_LED2);
+ break;
+ };
+ #endif
+ return state;
}
-void matrix_init_user(void) {
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_LCTL:
+ is_ctl_pressed = record->event.pressed;
+ break;
+ case KC_ESC:
+ is_esc_pressed = record->event.pressed;
+ break;
+ case KC_BSPC:
+ is_bspc_pressed = record->event.pressed;
+ break;
+ };
+ return true;
+}
+
+void matrix_scan_user(void) {
+ if (is_ctl_pressed && is_esc_pressed && is_bspc_pressed) {
+ reset_keyboard();
+ }
}
diff --git a/keyboards/handwired/jotanck/readme.md b/keyboards/handwired/jotanck/readme.md
index e9dd8240301..3ceea1ef4c1 100644
--- a/keyboards/handwired/jotanck/readme.md
+++ b/keyboards/handwired/jotanck/readme.md
@@ -35,4 +35,6 @@ Make example for this keyboard (after setting up your build environment):

+To reset the keyboard press Ctrl+Esc+BackSpace
+
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/handwired/numbrero/readme.md b/keyboards/handwired/numbrero/readme.md
index 42f005dbe23..931c601274f 100644
--- a/keyboards/handwired/numbrero/readme.md
+++ b/keyboards/handwired/numbrero/readme.md
@@ -8,6 +8,6 @@ Hardware Availability: The Board Podcast Slack
Make example for this keyboard (after setting up your build environment):
- make handwired/numbrero/numbrero:default
+ make handwired/numbrero: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/handwired/splittest/config.h b/keyboards/handwired/splittest/config.h
index a502d12382d..56574f75296 100644
--- a/keyboards/handwired/splittest/config.h
+++ b/keyboards/handwired/splittest/config.h
@@ -33,12 +33,6 @@ along with this program. If not, see .
#define MATRIX_ROWS 2
#define MATRIX_COLS 1
-// wiring of each half
-#define MATRIX_ROW_PINS { B3 }
-#define MATRIX_COL_PINS { B6 }
-#define SPLIT_HAND_PIN F6
-#define SOFT_SERIAL_PIN D1
-
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
@@ -51,7 +45,6 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
/* ws2812 RGB LED */
-#define RGB_DI_PIN D3
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 12
#define RGBLED_SPLIT { 6, 6 }
diff --git a/keyboards/handwired/splittest/promicro/config.h b/keyboards/handwired/splittest/promicro/config.h
new file mode 100644
index 00000000000..c2a9c6002e6
--- /dev/null
+++ b/keyboards/handwired/splittest/promicro/config.h
@@ -0,0 +1,28 @@
+/* Copyright 2019
+ *
+ * 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"
+
+// wiring of each half
+#define MATRIX_ROW_PINS { B3 }
+#define MATRIX_COL_PINS { B6 }
+#define SPLIT_HAND_PIN F6
+#define SOFT_SERIAL_PIN D1
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
diff --git a/keyboards/handwired/splittest/promicro/readme.md b/keyboards/handwired/splittest/promicro/readme.md
new file mode 100644
index 00000000000..64a6f4c2494
--- /dev/null
+++ b/keyboards/handwired/splittest/promicro/readme.md
@@ -0,0 +1,11 @@
+# Pro Micro splittest
+
+To trigger keypress, short together pins *B3* and *B6* (marked on the PCB as *14* and *10*).
+
+## Wiring
+- Add switches to both Pro Micros across B3 and B6 pins
+- Add pull-up resistor to left side between VCC and F6
+- Add pull-down resistors to right side between GND and F6
+- Connect the following pins on both sides together: D0, D1, GND, VCC
+- Add I2C 4.7kOhm resistors between D0 and VCC, and D1 and VCC
+- Wire Di of RGB strip for each half to D3
diff --git a/keyboards/handwired/splittest/promicro/rules.mk b/keyboards/handwired/splittest/promicro/rules.mk
new file mode 100644
index 00000000000..dc6f1962373
--- /dev/null
+++ b/keyboards/handwired/splittest/promicro/rules.mk
@@ -0,0 +1,58 @@
+# 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
+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/readme.md b/keyboards/handwired/splittest/readme.md
index 3dbff32ed40..33dbc6e805d 100644
--- a/keyboards/handwired/splittest/readme.md
+++ b/keyboards/handwired/splittest/readme.md
@@ -4,7 +4,10 @@ Split Tester
A two-switch tester built using two Pro Micros, mainly intended to test RGB on split keyboards. Seen here: https://www.instagram.com/p/BvCPNzynwrV/
Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges)
-Hardware Supported: Pro Micro
+Hardware Supported: Pro Micro, Teensy 2.0
+Hardware Availability:
+
+**See each individual board for pin infomation**
Make example for this keyboard (after setting up your build environment):
@@ -15,12 +18,3 @@ Example of flashing this keyboard:
make handwired/splittest: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).
-
-Wiring
-------
-- Add switches to both Pro Micros across B3 and B6 pins
-- Add pull-up resistor to left side between VCC and F6
-- Add pull-down resistors to right side between GND and F6
-- Connect the following pins on both sides together: D0, D1, GND, VCC
-- Add I2C 4.7kOhm resistors between D0 and VCC, and D1 and VCC
-- Wire Di of RGB strip for each half to D2
diff --git a/keyboards/handwired/splittest/rules.mk b/keyboards/handwired/splittest/rules.mk
index 9512c0f6482..2aa484db0bb 100644
--- a/keyboards/handwired/splittest/rules.mk
+++ b/keyboards/handwired/splittest/rules.mk
@@ -1,47 +1,3 @@
-# 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 = 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
@@ -63,3 +19,5 @@ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = handwired/splittest/promicro
diff --git a/keyboards/handwired/splittest/teensy_2/config.h b/keyboards/handwired/splittest/teensy_2/config.h
new file mode 100644
index 00000000000..3d0b0346edf
--- /dev/null
+++ b/keyboards/handwired/splittest/teensy_2/config.h
@@ -0,0 +1,31 @@
+/* Copyright 2019
+ *
+ * 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"
+
+// wiring of each half
+#define MATRIX_ROW_PINS { F5 }
+#define MATRIX_COL_PINS { F7 }
+#define SPLIT_HAND_PIN F0
+#define SOFT_SERIAL_PIN D1
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+// required for teensy slave otherwise it "locks up" during startup
+#define NO_USB_STARTUP_CHECK
diff --git a/keyboards/handwired/splittest/teensy_2/readme.md b/keyboards/handwired/splittest/teensy_2/readme.md
new file mode 100644
index 00000000000..ed5f845d201
--- /dev/null
+++ b/keyboards/handwired/splittest/teensy_2/readme.md
@@ -0,0 +1,11 @@
+# Teensy 2.0 splittest
+
+To trigger keypress, short together pins *F5* and *F7*
+
+## Wiring
+- Add switches to both Teensy 2s across F5 and F7 pins
+- Add pull-up resistor to left side between VCC and F0
+- Add pull-down resistors to right side between GND and F0
+- Connect the following pins on both sides together: D0, D1, GND, VCC
+- Add I2C 4.7kOhm resistors between D0 and VCC, and D1 and VCC
+- Wire Di of RGB strip for each half to D3
diff --git a/keyboards/handwired/splittest/teensy_2/rules.mk b/keyboards/handwired/splittest/teensy_2/rules.mk
new file mode 100644
index 00000000000..3fb7c7e5a7e
--- /dev/null
+++ b/keyboards/handwired/splittest/teensy_2/rules.mk
@@ -0,0 +1,58 @@
+# 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
+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
new file mode 100644
index 00000000000..bcc2a437bdc
--- /dev/null
+++ b/keyboards/handwired/splittest/teensy_2/teensy_2.c
@@ -0,0 +1,14 @@
+#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/helix/rev1/config.h b/keyboards/helix/rev1/config.h
index 454e8ee628a..61fe744728b 100644
--- a/keyboards/helix/rev1/config.h
+++ b/keyboards/helix/rev1/config.h
@@ -51,8 +51,6 @@ along with this program. If not, see .
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6 } //uncomment this line and comment line above if you need to reverse left-to-right key order
-#define CATERINA_BOOTLOADER
-
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/helix/rules.mk b/keyboards/helix/rules.mk
index b3eea4028e3..245bff70fa9 100644
--- a/keyboards/helix/rules.mk
+++ b/keyboards/helix/rules.mk
@@ -37,10 +37,13 @@ ARCH = AVR8
# 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
BOOTLOADER = caterina
# Interrupt driven control endpoint task(+60)
diff --git a/keyboards/hhkb/keymaps/halfqwerty_jp/README.md b/keyboards/hhkb/keymaps/halfqwerty_jp/README.md
new file mode 100644
index 00000000000..222ad898efa
--- /dev/null
+++ b/keyboards/hhkb/keymaps/halfqwerty_jp/README.md
@@ -0,0 +1,49 @@
+# harfqwerty_jp
+
+half-QWERTY is a keyboard layout for one-handed typing on QWERTY keyboard.
+
+* When hold space bar, the keyboard enters mirror mode.
+* To type a space, just tap the space bar.
+
+## BASE
+
+ ,-----------------------------------------------------------.
+ |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| -| =|Yen|Bsp|
+ |-----------------------------------------------------------|
+ |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| |
+ |------------------------------------------------------` Ent|
+ |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| |
+ |-----------------------------------------------------------|
+ |Shft | Z| X| C| V| B| N| M| ,| .| /| \| Up|Sft|
+ |-----------------------------------------------------------|
+ | ||Ctl|Alt|Cmd| | Spc | | | | ||Lft|Dwn|Rgh|
+ `-----------------------------------------------------------'
+
+## HHKB mode (HHKB Fn)
+
+ ,-----------------------------------------------------------.
+ |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ |-----------------------------------------------------------|
+ |Caps | | | | | | | |Psc|Slk|Pus|Up | | |
+ |------------------------------------------------------` |
+ | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig| | |
+ |-----------------------------------------------------------|
+ | | | | | | | +| -|End|PgD|Dow| | | |
+ |-----------------------------------------------------------|
+ | || | | | | | | | | || | | |
+ `-----------------------------------------------------------'
+
+
+## Mirror mode
+
+ ,-----------------------------------------------------------.
+ | | 0| 9| 8| 7| 6| 5| 4| 3| 2| 1| | | | |
+ |-----------------------------------------------------------|
+ | | P| O| I| U| Y| T| R| E| W| Q| | | |
+ |------------------------------------------------------` |
+ | | ;| L| K| J| H| G| F| D| S| A| | | |
+ |-----------------------------------------------------------|
+ | | .| ,| M| N| B| V| C| X| Z| | | | |
+ |-----------------------------------------------------------|
+ | || | | | | | | | | || | | |
+ `-----------------------------------------------------------'
diff --git a/keyboards/hhkb/keymaps/halfqwerty_jp/keymap.c b/keyboards/hhkb/keymaps/halfqwerty_jp/keymap.c
new file mode 100644
index 00000000000..0d4a24c60d5
--- /dev/null
+++ b/keyboards/hhkb/keymaps/halfqwerty_jp/keymap.c
@@ -0,0 +1,76 @@
+/* -*- eval: (turn-on-orgtbl); -*-
+ * default HHKB Layout
+ */
+#include QMK_KEYBOARD_H
+
+enum
+{
+ BASE,
+ HHKB,
+ MIRROR,
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* BASE Level: Default Layer
+ ,-----------------------------------------------------------.
+ |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| -| =|Yen|Bsp|
+ |-----------------------------------------------------------|
+ |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| |
+ |------------------------------------------------------` Ent|
+ |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| |
+ |-----------------------------------------------------------|
+ |Shft | Z| X| C| V| B| N| M| ,| .| /| \| Up|Sft|
+ |-----------------------------------------------------------|
+ | ||Ctl|Alt|Cmd| | Spc | | | | ||Lft|Dwn|Rgh|
+ `-----------------------------------------------------------'
+ */
+ [BASE] = LAYOUT_JP(
+ 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_JYEN, 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_LCTL, 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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_UP, KC_RSFT,
+ MO(HHKB), KC_ZKHK, KC_LGUI, KC_LALT, KC_MHEN, LT(MIRROR, KC_SPC), KC_HENK, KC_KANA, KC_RALT, MO(HHKB), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Layer HHKB: HHKB mode (HHKB Fn)
+ ,-----------------------------------------------------------.
+ |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+ |-----------------------------------------------------------|
+ |Caps | | | | | | | |Psc|Slk|Pus|Up | | |
+ |------------------------------------------------------` |
+ | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig| | |
+ |-----------------------------------------------------------|
+ | | | | | | | +| -|End|PgD|Dow| | | |
+ |-----------------------------------------------------------|
+ | || | | | | | | | | || | | |
+ `-----------------------------------------------------------'
+ */
+
+ [HHKB] = LAYOUT_JP(
+ KC_PWR, 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_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______,
+ _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, KC_PENT,
+ _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ /* Mirror Level: when hold space bar
+ ,-----------------------------------------------------------.
+ | | 0| 9| 8| 7| 6| 5| 4| 3| 2| 1| | | | |
+ |-----------------------------------------------------------|
+ | | P| O| I| U| Y| T| R| E| W| Q| | | |
+ |------------------------------------------------------` |
+ | | ;| L| K| J| H| G| F| D| S| A| | | |
+ |-----------------------------------------------------------|
+ | | .| ,| M| N| B| V| C| X| Z| | | | |
+ |-----------------------------------------------------------|
+ | || | | | | | | | | || | | |
+ `-----------------------------------------------------------'
+ */
+ [MIRROR] = LAYOUT_JP(
+ _______, KC_0, KC_9, KC_8, KC_7, KC_6, KC_5, KC_4, KC_3, KC_2, KC_1, _______, _______, _______, _______,
+ _______, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_T, KC_R, KC_E, KC_W, KC_Q, _______, _______,
+ _______, KC_SCLN, KC_L, KC_K, KC_J, KC_H, KC_G, KC_F, KC_D, KC_S, KC_A, _______, _______, _______,
+ _______, KC_DOT, KC_COMM, KC_M, KC_N, KC_B, KC_V, KC_C, KC_X, KC_Z, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______, _______, _______)};
+
diff --git a/keyboards/hhkb/keymaps/halfqwerty_jp/rules.mk b/keyboards/hhkb/keymaps/halfqwerty_jp/rules.mk
new file mode 100644
index 00000000000..a7f700f019c
--- /dev/null
+++ b/keyboards/hhkb/keymaps/halfqwerty_jp/rules.mk
@@ -0,0 +1 @@
+OPT_DEFS += -DHHKB_JP
diff --git a/keyboards/hs60/v1/rules.mk b/keyboards/hs60/v1/rules.mk
index 20a2dc7a7a1..f5bcb2b0a17 100644
--- a/keyboards/hs60/v1/rules.mk
+++ b/keyboards/hs60/v1/rules.mk
@@ -69,7 +69,7 @@ FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
RGB_MATRIX_ENABLE = yes # Use RGB matrix
RAW_ENABLE = yes
-LAYOUTS = 60_ansi_split_bs_rshift
+LAYOUTS = 60_ansi 60_iso
# Experimental features for zealcmd please do no enable
#RAW_ENABLE = yes
diff --git a/keyboards/hs60/v2/keymaps/ansi_via/rules.mk b/keyboards/hs60/v2/keymaps/ansi_via/rules.mk
index deb4fc889b9..b8311f5e7f0 100644
--- a/keyboards/hs60/v2/keymaps/ansi_via/rules.mk
+++ b/keyboards/hs60/v2/keymaps/ansi_via/rules.mk
@@ -1,6 +1,6 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \
quantum/color.c \
drivers/arm/i2c_master.c
diff --git a/keyboards/hs60/v2/keymaps/default_via/rules.mk b/keyboards/hs60/v2/keymaps/default_via/rules.mk
index deb4fc889b9..b8311f5e7f0 100644
--- a/keyboards/hs60/v2/keymaps/default_via/rules.mk
+++ b/keyboards/hs60/v2/keymaps/default_via/rules.mk
@@ -1,6 +1,6 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \
quantum/color.c \
drivers/arm/i2c_master.c
diff --git a/keyboards/hs60/v2/keymaps/goatmaster/rules.mk b/keyboards/hs60/v2/keymaps/goatmaster/rules.mk
index deb4fc889b9..b8311f5e7f0 100644
--- a/keyboards/hs60/v2/keymaps/goatmaster/rules.mk
+++ b/keyboards/hs60/v2/keymaps/goatmaster/rules.mk
@@ -1,6 +1,6 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \
quantum/color.c \
drivers/arm/i2c_master.c
diff --git a/keyboards/hs60/v2/keymaps/hhkb_via/rules.mk b/keyboards/hs60/v2/keymaps/hhkb_via/rules.mk
index deb4fc889b9..b8311f5e7f0 100644
--- a/keyboards/hs60/v2/keymaps/hhkb_via/rules.mk
+++ b/keyboards/hs60/v2/keymaps/hhkb_via/rules.mk
@@ -1,6 +1,6 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \
quantum/color.c \
drivers/arm/i2c_master.c
diff --git a/keyboards/hs60/v2/keymaps/iso_andys8/rules.mk b/keyboards/hs60/v2/keymaps/iso_andys8/rules.mk
index deb4fc889b9..b8311f5e7f0 100644
--- a/keyboards/hs60/v2/keymaps/iso_andys8/rules.mk
+++ b/keyboards/hs60/v2/keymaps/iso_andys8/rules.mk
@@ -1,6 +1,6 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \
quantum/color.c \
drivers/arm/i2c_master.c
diff --git a/keyboards/hs60/v2/keymaps/stanrc85/rules.mk b/keyboards/hs60/v2/keymaps/stanrc85/rules.mk
index 8d993916918..69592d06c75 100644
--- a/keyboards/hs60/v2/keymaps/stanrc85/rules.mk
+++ b/keyboards/hs60/v2/keymaps/stanrc85/rules.mk
@@ -1,6 +1,6 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \
quantum/color.c \
drivers/arm/i2c_master.c
diff --git a/keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk b/keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk
index 05193af4bbc..1dc96d04be9 100644
--- a/keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk
+++ b/keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk
@@ -1,6 +1,6 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \
quantum/color.c \
drivers/arm/i2c_master.c
diff --git a/keyboards/hs60/v2/rules.mk b/keyboards/hs60/v2/rules.mk
index 64948c2e9a7..c2b643ad108 100644
--- a/keyboards/hs60/v2/rules.mk
+++ b/keyboards/hs60/v2/rules.mk
@@ -1,6 +1,6 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \
quantum/color.c \
drivers/arm/i2c_master.c
@@ -65,3 +65,5 @@ NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plu
RAW_ENABLE = no
DYNAMIC_KEYMAP_ENABLE = no
CIE1931_CURVE = yes
+
+LAYOUTS = 60_ansi 60_iso
diff --git a/keyboards/hs60/v2/v2.h b/keyboards/hs60/v2/v2.h
index 0a35acdea72..da32c3026a8 100644
--- a/keyboards/hs60/v2/v2.h
+++ b/keyboards/hs60/v2/v2.h
@@ -18,8 +18,8 @@
#define XXX KC_NO
#include "quantum.h"
-#include "../../zeal60/rgb_backlight_keycodes.h"
-#include "../../zeal60/zeal60_keycodes.h"
+#include "../../wilba_tech/wt_rgb_backlight_keycodes.h"
+#include "../../wilba_tech/via_keycodes.h"
// This a shortcut to help you visually see your layout.
diff --git a/keyboards/illuminati/is0/config.h b/keyboards/illuminati/is0/config.h
new file mode 100644
index 00000000000..e35b1500d3d
--- /dev/null
+++ b/keyboards/illuminati/is0/config.h
@@ -0,0 +1,251 @@
+/*
+Copyright 2019 Ryota Goto
+
+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 0xA103
+#define PRODUCT_ID 0x0012
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Illuminati Works
+#define PRODUCT iS0
+#define DESCRIPTION no
+
+/* key matrix size */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 1
+
+/*
+ * 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 { D2 }
+#define MATRIX_COL_PINS { D0 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+#define BACKLIGHT_PIN B7
+#define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 5
+
+// #define RGB_DI_PIN E2
+// #ifdef RGB_DI_PIN
+// #define RGBLED_NUM 16
+// #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
+// /*== customize breathing effect ==*/
+// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+// /*==== use exp() and sin() ====*/
+// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+// #endif
+
+/* 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.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
+
+/* 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_HELP H
+//#define MAGIC_KEY_HELP_ALT 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 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#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 B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#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
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#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_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
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/illuminati/is0/info.json b/keyboards/illuminati/is0/info.json
new file mode 100644
index 00000000000..0f3bb64eca3
--- /dev/null
+++ b/keyboards/illuminati/is0/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "iS0",
+ "url": "",
+ "maintainer": "ai03",
+ "width": 1.5,
+ "height": 2,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0.25, "y":0, "w":1.25, "h":2}]
+ }
+ }
+}
diff --git a/keyboards/illuminati/is0/is0.c b/keyboards/illuminati/is0/is0.c
new file mode 100644
index 00000000000..920277e6c9c
--- /dev/null
+++ b/keyboards/illuminati/is0/is0.c
@@ -0,0 +1,51 @@
+/* Copyright 2019 Ryota Goto
+ *
+ * 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 "is0.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/illuminati/is0/is0.h b/keyboards/illuminati/is0/is0.h
new file mode 100644
index 00000000000..a9fae5b40eb
--- /dev/null
+++ b/keyboards/illuminati/is0/is0.h
@@ -0,0 +1,33 @@
+/* Copyright 2019 Ryota Goto
+ *
+ * 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"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ K0 \
+) \
+{ \
+ { K0 } \
+}
diff --git a/keyboards/illuminati/is0/keymaps/ctrlaltdel/keymap.c b/keyboards/illuminati/is0/keymaps/ctrlaltdel/keymap.c
new file mode 100644
index 00000000000..e38df1e2279
--- /dev/null
+++ b/keyboards/illuminati/is0/keymaps/ctrlaltdel/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2019 Ryota Goto
+ *
+ * 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( /* Base */
+ LCTL(LALT(KC_DEL))
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/illuminati/is0/keymaps/ctrlaltdel/readme.md b/keyboards/illuminati/is0/keymaps/ctrlaltdel/readme.md
new file mode 100644
index 00000000000..5d9e162c1c2
--- /dev/null
+++ b/keyboards/illuminati/is0/keymaps/ctrlaltdel/readme.md
@@ -0,0 +1,3 @@
+# The ctrlaltdel keymap for is0
+
+A simple keymap to send Ctrl + Alt + Del on keypress.
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/jarred/keymap.c b/keyboards/illuminati/is0/keymaps/default/keymap.c
similarity index 54%
rename from keyboards/planck/keymaps/jarred/keymap.c
rename to keyboards/illuminati/is0/keymaps/default/keymap.c
index 5911669086c..68545add668 100644
--- a/keyboards/planck/keymaps/jarred/keymap.c
+++ b/keyboards/illuminati/is0/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2018 Jarred Steenvoorden
+/* Copyright 2019 Ryota Goto
*
* 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
@@ -13,22 +13,40 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
+#include QMK_KEYBOARD_H
-#include "planck.h"
-#include "jarred.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QW] = LAYOUT_planck_grid_wrapper(QWERTY_4x12),
- [_GAME] = LAYOUT_planck_grid_wrapper(GAME_4x12),
- [_LW] = LAYOUT_planck_grid_wrapper(LOWER_4x12),
- [_NV] = LAYOUT_planck_grid_wrapper(NAV_4x12),
- [_NP] = LAYOUT_planck_grid_wrapper(NUMPAD_4x12),
- [_MS] = LAYOUT_planck_grid_wrapper(MOUSE_4x12)
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ KBINFO = SAFE_RANGE
};
-#ifdef RGB_MATRIX_H
-void rgb_matrix_indicators_user(void) {
- // Disable light in middle of 2U position
- rgb_matrix_set_color(42, 0, 0, 0);
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT( /* Base */
+ KBINFO
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KBINFO:
+ if (record->event.pressed) {
+ SEND_STRING("Hello from Illuminati Works");
+ } else {
+ SEND_STRING("iS0 working properly");
+ }
+ break;
+ }
+ return true;
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
}
-#endif
diff --git a/keyboards/illuminati/is0/keymaps/default/readme.md b/keyboards/illuminati/is0/keymaps/default/readme.md
new file mode 100644
index 00000000000..84110e663a9
--- /dev/null
+++ b/keyboards/illuminati/is0/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# The default keymap for is0
+
+Simply to verify that it works.
\ No newline at end of file
diff --git a/keyboards/illuminati/is0/readme.md b/keyboards/illuminati/is0/readme.md
new file mode 100644
index 00000000000..ad287f788b2
--- /dev/null
+++ b/keyboards/illuminati/is0/readme.md
@@ -0,0 +1,15 @@
+# iS0
+
+
+
+Single-key macropad
+
+Keyboard Maintainer: [ai03](https://github.com/ai03-2725)
+Hardware Supported: iS0 by Illuminati Works
+Hardware Availability: [Illuminati Works website](https://illuminati.works/is0/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make illuminati/is0: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/illuminati/is0/rules.mk b/keyboards/illuminati/is0/rules.mk
new file mode 100644
index 00000000000..065d0d2843e
--- /dev/null
+++ b/keyboards/illuminati/is0/rules.mk
@@ -0,0 +1,80 @@
+# MCU name
+MCU = atmega32u2
+
+# 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
+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 = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# 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 = yes # Enable keyboard backlight functionality on B7 by default
+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/jc65/v32a/config.h b/keyboards/jc65/v32a/config.h
index a5ec23ae4d7..e91f46aeb2d 100644
--- a/keyboards/jc65/v32a/config.h
+++ b/keyboards/jc65/v32a/config.h
@@ -28,7 +28,6 @@ along with this program. If not, see .
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
-#define NO_BACKLIGHT_CLOCK
#define BACKLIGHT_LEVELS 1
#define RGBLED_NUM 16
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/jj50/config.h b/keyboards/jj50/config.h
index 0f09f02ff87..0d35e3129e9 100644
--- a/keyboards/jj50/config.h
+++ b/keyboards/jj50/config.h
@@ -46,6 +46,5 @@ along with this program. If not, see .
#define RGBLIGHT_VAL_STEP 18
#define NO_UART 1
-#define BOOTLOADHID_BOOTLOADER 1
#endif
diff --git a/keyboards/jj50/rules.mk b/keyboards/jj50/rules.mk
index 4ee5719185e..2390d9631e3 100644
--- a/keyboards/jj50/rules.mk
+++ b/keyboards/jj50/rules.mk
@@ -25,10 +25,13 @@ NO_SUSPEND_POWER_DOWN = yes
# processor frequency
F_CPU = 12000000
-# 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
BOOTLOADER = bootloadHID
# build options
diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h b/keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h
index 16387fa2f61..4b511eb8484 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h
+++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h
@@ -1,4 +1,3 @@
#pragma once
#define LAYER_FN
-#define SEND_STRING_CLEAN
diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
index b348b0b7bf6..c5c8c09636a 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
+++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c
@@ -10,7 +10,7 @@ enum layers_keymap {
};
void eeconfig_init_keymap(void) {
- rgblight_sethsv(MODERN_DOLCH_RED.h, MODERN_DOLCH_RED.s, MODERN_DOLCH_RED.v);
+ rgblight_sethsv(MODERN_DOLCH_RED);
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
}
@@ -31,6 +31,46 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
}
}
+static bool skip_caps = false;
+
+static void fn_light(uint32_t state) {
+ if (IS_LAYER_ON_STATE(state, L_FN)) {
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+ rgblight_sethsv_noeeprom(modern_dolch_red.h, modern_dolch_red.s, rgblight_get_val());
+ skip_caps = true;
+ } else {
+ rgblight_config_t saved = { .raw = eeconfig_read_rgblight() };
+ rgblight_sethsv_noeeprom(saved.hue, saved.sat, saved.val);
+ rgblight_mode_noeeprom(saved.mode);
+ }
+ // caps_light will be called automatically after this
+}
+
+static void caps_light(uint8_t usb_led) {
+ if (skip_caps) {
+ skip_caps = false;
+ return; // Skip calls triggered by the Fn layer turning on
+ }
+ if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+ rgblight_sethsv_noeeprom(modern_dolch_cyan.h, modern_dolch_cyan.s, rgblight_get_val());
+ } else {
+ fn_light(layer_state); // Caps is off, check if Fn light should be on
+ }
+}
+
+uint32_t layer_state_set_keymap(uint32_t state) {
+ static uint32_t prev_state = L_BASE;
+ if (IS_LAYER_ON_STATE(state, L_FN) != IS_LAYER_ON_STATE(prev_state, L_FN)) {
+ fn_light(state); // Fn state changed since last time
+ }
+ return prev_state = state;
+}
+
+void led_set_keymap(uint8_t usb_led) {
+ caps_light(usb_led);
+}
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base layer
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk b/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk
index f7cf0758b78..7262c6db665 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk
+++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk
@@ -1,11 +1,11 @@
-BOOTMAGIC_ENABLE = no
-COMMAND_ENABLE = yes
-CONSOLE_ENABLE = no
-EXTRAKEY_ENABLE = yes
-MOUSEKEY_ENABLE = yes
-NKRO_ENABLE = yes
-TAP_DANCE_ENABLE = yes
-UNICODEMAP_ENABLE = no
-
-BACKLIGHT_ENABLE = yes
-RGBLIGHT_ENABLE = yes
+BACKLIGHT_ENABLE = no
+BOOTMAGIC_ENABLE = no
+COMMAND_ENABLE = yes
+CONSOLE_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+NKRO_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+SPACE_CADET_ENABLE = no
+TAP_DANCE_ENABLE = yes
+UNICODEMAP_ENABLE = no
diff --git a/keyboards/kbdfans/kbdpad/mk1/config.h b/keyboards/kbdfans/kbdpad/mk1/config.h
new file mode 100644
index 00000000000..2c55d2aef06
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk1/config.h
@@ -0,0 +1,38 @@
+/*
+Copyright 2017 Luiz Ribeiro
+
+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"
+
+#define VENDOR_ID 0x20A0
+#define PRODUCT_ID 0x422D
+#define MANUFACTURER KBDfans
+#define PRODUCT KBDPAD-MKI
+
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 4
+
+// 0 1 2 3 4 5
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5 }
+#define MATRIX_COL_PINS { A0, A1, A2, A3 }
+#define UNUSED_PINS
+
+#define DIODE_DIRECTION COL2ROW
+#define DEBOUNCE 5
+
+#define BACKLIGHT_LEVELS 1
diff --git a/keyboards/kbdfans/kbdpad/mk1/info.json b/keyboards/kbdfans/kbdpad/mk1/info.json
new file mode 100644
index 00000000000..426a23b8d52
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk1/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "KBDFans KBDPad MKI",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 4,
+ "height": 6.25,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":2.25, "h":2}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":0, "y":5.25, "w":2}, {"x":2, "y":5.25}, {"x":3, "y":4.25, "h":2}]
+ }
+ }
+}
diff --git a/keyboards/kbdfans/kbdpad/mk1/keymaps/default/keymap.c b/keyboards/kbdfans/kbdpad/mk1/keymaps/default/keymap.c
new file mode 100644
index 00000000000..2d5053e0b6a
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk1/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/* 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_DEL, KC_BSPC, \
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
+ KC_P7, KC_P8, KC_P9, \
+ KC_P4, KC_P5, KC_P6, KC_PPLS, \
+ KC_P1, KC_P2, KC_P3, \
+ KC_P0, KC_PDOT, KC_PENT) \
+};
diff --git a/keyboards/kbdfans/kbdpad/mk1/mk1.c b/keyboards/kbdfans/kbdpad/mk1/mk1.c
new file mode 100644
index 00000000000..c17cb008486
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk1/mk1.c
@@ -0,0 +1,88 @@
+/* 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 "i2c_master.h"
+#include "quantum.h"
+
+#ifdef RGBLIGHT_ENABLE
+#include "rgblight.h"
+extern rgblight_config_t rgblight_config;
+
+void rgblight_set(void) {
+ if (!rgblight_config.enable) {
+ for (uint8_t i = 0; i < RGBLED_NUM; i++) {
+ led[i].r = 0;
+ led[i].g = 0;
+ led[i].b = 0;
+ }
+ }
+
+ i2c_init();
+ i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
+}
+#endif
+
+void matrix_init_kb(void) {
+#ifdef RGBLIGHT_ENABLE
+ if (rgblight_config.enable) {
+ i2c_init();
+ i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
+ }
+#endif
+ // call user level keymaps, if any
+ matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_task();
+#endif
+ matrix_scan_user();
+ /* Nothing else for now. */
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+void backlight_init_ports(void) {
+ // initialize pins D0, D1, D4 and D6 as output
+ setPinOutput(D0);
+ setPinOutput(D1);
+ setPinOutput(D4);
+ setPinOutput(D6);
+
+ // turn backlight LEDs on
+ writePinHigh(D0);
+ writePinHigh(D1);
+ writePinHigh(D4);
+ writePinHigh(D6);
+}
+
+void backlight_set(uint8_t level) {
+ if (level == 0) {
+ // turn backlight LEDs off
+ writePinLow(D0);
+ writePinLow(D1);
+ writePinLow(D4);
+ writePinLow(D6);
+ } else {
+ // turn backlight LEDs on
+ writePinHigh(D0);
+ writePinHigh(D1);
+ writePinHigh(D4);
+ writePinHigh(D6);
+ }
+}
\ No newline at end of file
diff --git a/keyboards/kbdfans/kbdpad/mk1/mk1.h b/keyboards/kbdfans/kbdpad/mk1/mk1.h
new file mode 100644
index 00000000000..ace7466f548
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk1/mk1.h
@@ -0,0 +1,38 @@
+/* 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"
+
+// This a shortcut to help you visually see your layout.
+// The first section contains all of the arguments
+// The second converts the arguments into a two-dimensional array
+
+#define LAYOUT( \
+ k52, k53, \
+ k40, k41, k42, k43, \
+ k30, k31, k32, \
+ k20, k21, k22, k23, \
+ k10, k11, k12, \
+ k00, k02, k03 \
+){ \
+ { k00, KC_NO, k02, k03 }, \
+ { k10, k11, k12, KC_NO }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, KC_NO }, \
+ { k40, k41, k42, k43 }, \
+ { KC_NO, KC_NO, k52, k53 }, \
+}
diff --git a/keyboards/kbdfans/kbdpad/mk1/readme.md b/keyboards/kbdfans/kbdpad/mk1/readme.md
new file mode 100644
index 00000000000..569fb88a229
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk1/readme.md
@@ -0,0 +1,47 @@
+# KBDPad MKI
+
+Custom numpad.
+
+Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
+Hardware Supported: KBDPad MKI
+Hardware Availability: No longer available.
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kbdfans/kbdpad/mk1:default
+
+Flashing
+
+ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods.
+
+**Reset Key:** Hold down the key located at `K00`, commonly programmed as `0` while plugging in the keyboard.
+
+Windows:
+1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash).
+2. Place your keyboard into reset.
+3. Press the `Find Device` button and ensure that your keyboard is found.
+4. Press the `Open .hex File` button and locate the `.hex` file you created.
+5. Press the `Flash Device` button and wait for the process to complete.
+
+macOS:
+1. Install homebrew by typing the following:
+ ```
+ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+ ```
+2. Install `crosspack-avr`.
+ ```
+ brew cask install crosspack-avr
+ ```
+3. Install the following packages:
+ ```
+ brew install python3
+ pip3 install pyusb
+ brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
+ ```
+
+4. Place your keyboard into reset.
+5. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file.
+
+
+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/kbdfans/kbdpad/mk1/rules.mk b/keyboards/kbdfans/kbdpad/mk1/rules.mk
new file mode 100644
index 00000000000..421b0cf32d1
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk1/rules.mk
@@ -0,0 +1,48 @@
+# Copyright 2017 Luiz Ribeiro
+#
+# 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 .
+
+# MCU name
+MCU = atmega32a
+PROTOCOL = VUSB
+
+# unsupported features for now
+NO_UART = yes
+NO_SUSPEND_POWER_DOWN = yes
+
+# processor frequency
+F_CPU = 12000000
+
+# 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 = bootloadHID
+
+# build options
+BOOTMAGIC_ENABLE = no
+MOUSEKEY_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+CONSOLE_ENABLE = yes
+COMMAND_ENABLE = yes
+BACKLIGHT_ENABLE = yes
+RGBLIGHT_ENABLE = no
+RGBLIGHT_CUSTOM_DRIVER = no
+
+OPT_DEFS = -DDEBUG_LEVEL=0
+
+QUANTUM_LIB_SRC = i2c_master.c
+
+# programming options
+PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex
diff --git a/keyboards/kbdfans/kbdpad/mk1/usbconfig.h b/keyboards/kbdfans/kbdpad/mk1/usbconfig.h
new file mode 100644
index 00000000000..54a7d20f142
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk1/usbconfig.h
@@ -0,0 +1,393 @@
+/* Name: usbconfig.h
+ * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers
+ * Author: Christian Starkjohann
+ * Creation Date: 2005-04-01
+ * Tabsize: 4
+ * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH
+ * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
+ * This Revision: $Id: usbconfig-prototype.h 785 2010-05-30 17:57:07Z cs $
+ */
+
+#pragma once
+
+#include "config.h"
+
+/*
+General Description:
+This file is an example configuration (with inline documentation) for the USB
+driver. It configures V-USB for USB D+ connected to Port D bit 2 (which is
+also hardware interrupt 0 on many devices) and USB D- to Port D bit 4. You may
+wire the lines to any other port, as long as D+ is also wired to INT0 (or any
+other hardware interrupt, as long as it is the highest level interrupt, see
+section at the end of this file).
+*/
+
+/* ---------------------------- Hardware Config ---------------------------- */
+
+#define USB_CFG_IOPORTNAME D
+/* This is the port where the USB bus is connected. When you configure it to
+ * "B", the registers PORTB, PINB and DDRB will be used.
+ */
+#define USB_CFG_DMINUS_BIT 3
+/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
+ * This may be any bit in the port.
+ */
+#define USB_CFG_DPLUS_BIT 2
+/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
+ * This may be any bit in the port. Please note that D+ must also be connected
+ * to interrupt pin INT0! [You can also use other interrupts, see section
+ * "Optional MCU Description" below, or you can connect D- to the interrupt, as
+ * it is required if you use the USB_COUNT_SOF feature. If you use D- for the
+ * interrupt, the USB interrupt will also be triggered at Start-Of-Frame
+ * markers every millisecond.]
+ */
+#define USB_CFG_CLOCK_KHZ (F_CPU/1000)
+/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000,
+ * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code
+ * require no crystal, they tolerate +/- 1% deviation from the nominal
+ * frequency. All other rates require a precision of 2000 ppm and thus a
+ * crystal!
+ * Since F_CPU should be defined to your actual clock rate anyway, you should
+ * not need to modify this setting.
+ */
+#define USB_CFG_CHECK_CRC 0
+/* Define this to 1 if you want that the driver checks integrity of incoming
+ * data packets (CRC checks). CRC checks cost quite a bit of code size and are
+ * currently only available for 18 MHz crystal clock. You must choose
+ * USB_CFG_CLOCK_KHZ = 18000 if you enable this option.
+ */
+
+/* ----------------------- Optional Hardware Config ------------------------ */
+
+/* #define USB_CFG_PULLUP_IOPORTNAME D */
+/* If you connect the 1.5k pullup resistor from D- to a port pin instead of
+ * V+, you can connect and disconnect the device from firmware by calling
+ * the macros usbDeviceConnect() and usbDeviceDisconnect() (see usbdrv.h).
+ * This constant defines the port on which the pullup resistor is connected.
+ */
+/* #define USB_CFG_PULLUP_BIT 4 */
+/* This constant defines the bit number in USB_CFG_PULLUP_IOPORT (defined
+ * above) where the 1.5k pullup resistor is connected. See description
+ * above for details.
+ */
+
+/* --------------------------- Functional Range ---------------------------- */
+
+#define USB_CFG_HAVE_INTRIN_ENDPOINT 1
+/* Define this to 1 if you want to compile a version with two endpoints: The
+ * default control endpoint 0 and an interrupt-in endpoint (any other endpoint
+ * number).
+ */
+#define USB_CFG_HAVE_INTRIN_ENDPOINT3 1
+/* Define this to 1 if you want to compile a version with three endpoints: The
+ * default control endpoint 0, an interrupt-in endpoint 3 (or the number
+ * configured below) and a catch-all default interrupt-in endpoint as above.
+ * You must also define USB_CFG_HAVE_INTRIN_ENDPOINT to 1 for this feature.
+ */
+#define USB_CFG_EP3_NUMBER 3
+/* If the so-called endpoint 3 is used, it can now be configured to any other
+ * endpoint number (except 0) with this macro. Default if undefined is 3.
+ */
+/* #define USB_INITIAL_DATATOKEN USBPID_DATA1 */
+/* The above macro defines the startup condition for data toggling on the
+ * interrupt/bulk endpoints 1 and 3. Defaults to USBPID_DATA1.
+ * Since the token is toggled BEFORE sending any data, the first packet is
+ * sent with the oposite value of this configuration!
+ */
+#define USB_CFG_IMPLEMENT_HALT 0
+/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature
+ * for endpoint 1 (interrupt endpoint). Although you may not need this feature,
+ * it is required by the standard. We have made it a config option because it
+ * bloats the code considerably.
+ */
+#define USB_CFG_SUPPRESS_INTR_CODE 0
+/* Define this to 1 if you want to declare interrupt-in endpoints, but don't
+ * want to send any data over them. If this macro is defined to 1, functions
+ * usbSetInterrupt() and usbSetInterrupt3() are omitted. This is useful if
+ * you need the interrupt-in endpoints in order to comply to an interface
+ * (e.g. HID), but never want to send any data. This option saves a couple
+ * of bytes in flash memory and the transmit buffers in RAM.
+ */
+#define USB_CFG_INTR_POLL_INTERVAL 1
+/* If you compile a version with endpoint 1 (interrupt-in), this is the poll
+ * interval. The value is in milliseconds and must not be less than 10 ms for
+ * low speed devices.
+ */
+#define USB_CFG_IS_SELF_POWERED 0
+/* Define this to 1 if the device has its own power supply. Set it to 0 if the
+ * device is powered from the USB bus.
+ */
+#define USB_CFG_MAX_BUS_POWER 500
+/* Set this variable to the maximum USB bus power consumption of your device.
+ * The value is in milliamperes. [It will be divided by two since USB
+ * communicates power requirements in units of 2 mA.]
+ */
+#define USB_CFG_IMPLEMENT_FN_WRITE 1
+/* Set this to 1 if you want usbFunctionWrite() to be called for control-out
+ * transfers. Set it to 0 if you don't need it and want to save a couple of
+ * bytes.
+ */
+#define USB_CFG_IMPLEMENT_FN_READ 0
+/* Set this to 1 if you need to send control replies which are generated
+ * "on the fly" when usbFunctionRead() is called. If you only want to send
+ * data from a static buffer, set it to 0 and return the data from
+ * usbFunctionSetup(). This saves a couple of bytes.
+ */
+#define USB_CFG_IMPLEMENT_FN_WRITEOUT 0
+/* Define this to 1 if you want to use interrupt-out (or bulk out) endpoints.
+ * You must implement the function usbFunctionWriteOut() which receives all
+ * interrupt/bulk data sent to any endpoint other than 0. The endpoint number
+ * can be found in 'usbRxToken'.
+ */
+#define USB_CFG_HAVE_FLOWCONTROL 0
+/* Define this to 1 if you want flowcontrol over USB data. See the definition
+ * of the macros usbDisableAllRequests() and usbEnableAllRequests() in
+ * usbdrv.h.
+ */
+#define USB_CFG_DRIVER_FLASH_PAGE 0
+/* If the device has more than 64 kBytes of flash, define this to the 64 k page
+ * where the driver's constants (descriptors) are located. Or in other words:
+ * Define this to 1 for boot loaders on the ATMega128.
+ */
+#define USB_CFG_LONG_TRANSFERS 0
+/* Define this to 1 if you want to send/receive blocks of more than 254 bytes
+ * in a single control-in or control-out transfer. Note that the capability
+ * for long transfers increases the driver size.
+ */
+/* #define USB_RX_USER_HOOK(data, len) if(usbRxToken == (uchar)USBPID_SETUP) blinkLED(); */
+/* This macro is a hook if you want to do unconventional things. If it is
+ * defined, it's inserted at the beginning of received message processing.
+ * If you eat the received message and don't want default processing to
+ * proceed, do a return after doing your things. One possible application
+ * (besides debugging) is to flash a status LED on each packet.
+ */
+/* #define USB_RESET_HOOK(resetStarts) if(!resetStarts){hadUsbReset();} */
+/* This macro is a hook if you need to know when an USB RESET occurs. It has
+ * one parameter which distinguishes between the start of RESET state and its
+ * end.
+ */
+/* #define USB_SET_ADDRESS_HOOK() hadAddressAssigned(); */
+/* This macro (if defined) is executed when a USB SET_ADDRESS request was
+ * received.
+ */
+#define USB_COUNT_SOF 1
+/* define this macro to 1 if you need the global variable "usbSofCount" which
+ * counts SOF packets. This feature requires that the hardware interrupt is
+ * connected to D- instead of D+.
+ */
+/* #ifdef __ASSEMBLER__
+ * macro myAssemblerMacro
+ * in YL, TCNT0
+ * sts timer0Snapshot, YL
+ * endm
+ * #endif
+ * #define USB_SOF_HOOK myAssemblerMacro
+ * This macro (if defined) is executed in the assembler module when a
+ * Start Of Frame condition is detected. It is recommended to define it to
+ * the name of an assembler macro which is defined here as well so that more
+ * than one assembler instruction can be used. The macro may use the register
+ * YL and modify SREG. If it lasts longer than a couple of cycles, USB messages
+ * immediately after an SOF pulse may be lost and must be retried by the host.
+ * What can you do with this hook? Since the SOF signal occurs exactly every
+ * 1 ms (unless the host is in sleep mode), you can use it to tune OSCCAL in
+ * designs running on the internal RC oscillator.
+ * Please note that Start Of Frame detection works only if D- is wired to the
+ * interrupt, not D+. THIS IS DIFFERENT THAN MOST EXAMPLES!
+ */
+#define USB_CFG_CHECK_DATA_TOGGLING 0
+/* define this macro to 1 if you want to filter out duplicate data packets
+ * sent by the host. Duplicates occur only as a consequence of communication
+ * errors, when the host does not receive an ACK. Please note that you need to
+ * implement the filtering yourself in usbFunctionWriteOut() and
+ * usbFunctionWrite(). Use the global usbCurrentDataToken and a static variable
+ * for each control- and out-endpoint to check for duplicate packets.
+ */
+#define USB_CFG_HAVE_MEASURE_FRAME_LENGTH 0
+/* define this macro to 1 if you want the function usbMeasureFrameLength()
+ * compiled in. This function can be used to calibrate the AVR's RC oscillator.
+ */
+#define USB_USE_FAST_CRC 0
+/* The assembler module has two implementations for the CRC algorithm. One is
+ * faster, the other is smaller. This CRC routine is only used for transmitted
+ * messages where timing is not critical. The faster routine needs 31 cycles
+ * per byte while the smaller one needs 61 to 69 cycles. The faster routine
+ * may be worth the 32 bytes bigger code size if you transmit lots of data and
+ * run the AVR close to its limit.
+ */
+
+/* -------------------------- Device Description --------------------------- */
+
+#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+/* USB vendor ID for the device, low byte first. If you have registered your
+ * own Vendor ID, define it here. Otherwise you may use one of obdev's free
+ * shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
+ * *** IMPORTANT NOTE ***
+ * This template uses obdev's shared VID/PID pair for Vendor Class devices
+ * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
+ * the implications!
+ */
+#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+/* This is the ID of the product, low byte first. It is interpreted in the
+ * scope of the vendor ID. If you have registered your own VID with usb.org
+ * or if you have licensed a PID from somebody else, define it here. Otherwise
+ * you may use one of obdev's free shared VID/PID pairs. See the file
+ * USB-IDs-for-free.txt for details!
+ * *** IMPORTANT NOTE ***
+ * This template uses obdev's shared VID/PID pair for Vendor Class devices
+ * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
+ * the implications!
+ */
+#define USB_CFG_DEVICE_VERSION 0x00, 0x02
+/* Version number of the device: Minor number first, then major number.
+ */
+#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
+#define USB_CFG_VENDOR_NAME_LEN 13
+/* These two values define the vendor name returned by the USB device. The name
+ * must be given as a list of characters under single quotes. The characters
+ * are interpreted as Unicode (UTF-16) entities.
+ * If you don't want a vendor name string, undefine these macros.
+ * ALWAYS define a vendor name containing your Internet domain name if you use
+ * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
+ * details.
+ */
+#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
+#define USB_CFG_DEVICE_NAME_LEN 8
+/* Same as above for the device name. If you don't want a device name, undefine
+ * the macros. See the file USB-IDs-for-free.txt before you assign a name if
+ * you use a shared VID/PID.
+ */
+/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
+/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
+/* Same as above for the serial number. If you don't want a serial number,
+ * undefine the macros.
+ * It may be useful to provide the serial number through other means than at
+ * compile time. See the section about descriptor properties below for how
+ * to fine tune control over USB descriptors such as the string descriptor
+ * for the serial number.
+ */
+#define USB_CFG_DEVICE_CLASS 0
+#define USB_CFG_DEVICE_SUBCLASS 0
+/* See USB specification if you want to conform to an existing device class.
+ * Class 0xff is "vendor specific".
+ */
+#define USB_CFG_INTERFACE_CLASS 3 /* HID */
+#define USB_CFG_INTERFACE_SUBCLASS 1 /* Boot */
+#define USB_CFG_INTERFACE_PROTOCOL 1 /* Keyboard */
+/* See USB specification if you want to conform to an existing device class or
+ * protocol. The following classes must be set at interface level:
+ * HID class is 3, no subclass and protocol required (but may be useful!)
+ * CDC class is 2, use subclass 2 and protocol 1 for ACM
+ */
+#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0
+/* Define this to the length of the HID report descriptor, if you implement
+ * an HID device. Otherwise don't define it or define it to 0.
+ * If you use this define, you must add a PROGMEM character array named
+ * "usbHidReportDescriptor" to your code which contains the report descriptor.
+ * Don't forget to keep the array and this define in sync!
+ */
+
+/* #define USB_PUBLIC static */
+/* Use the define above if you #include usbdrv.c instead of linking against it.
+ * This technique saves a couple of bytes in flash memory.
+ */
+
+/* ------------------- Fine Control over USB Descriptors ------------------- */
+/* If you don't want to use the driver's default USB descriptors, you can
+ * provide our own. These can be provided as (1) fixed length static data in
+ * flash memory, (2) fixed length static data in RAM or (3) dynamically at
+ * runtime in the function usbFunctionDescriptor(). See usbdrv.h for more
+ * information about this function.
+ * Descriptor handling is configured through the descriptor's properties. If
+ * no properties are defined or if they are 0, the default descriptor is used.
+ * Possible properties are:
+ * + USB_PROP_IS_DYNAMIC: The data for the descriptor should be fetched
+ * at runtime via usbFunctionDescriptor(). If the usbMsgPtr mechanism is
+ * used, the data is in FLASH by default. Add property USB_PROP_IS_RAM if
+ * you want RAM pointers.
+ * + USB_PROP_IS_RAM: The data returned by usbFunctionDescriptor() or found
+ * in static memory is in RAM, not in flash memory.
+ * + USB_PROP_LENGTH(len): If the data is in static memory (RAM or flash),
+ * the driver must know the descriptor's length. The descriptor itself is
+ * found at the address of a well known identifier (see below).
+ * List of static descriptor names (must be declared PROGMEM if in flash):
+ * char usbDescriptorDevice[];
+ * char usbDescriptorConfiguration[];
+ * char usbDescriptorHidReport[];
+ * char usbDescriptorString0[];
+ * int usbDescriptorStringVendor[];
+ * int usbDescriptorStringDevice[];
+ * int usbDescriptorStringSerialNumber[];
+ * Other descriptors can't be provided statically, they must be provided
+ * dynamically at runtime.
+ *
+ * Descriptor properties are or-ed or added together, e.g.:
+ * #define USB_CFG_DESCR_PROPS_DEVICE (USB_PROP_IS_RAM | USB_PROP_LENGTH(18))
+ *
+ * The following descriptors are defined:
+ * USB_CFG_DESCR_PROPS_DEVICE
+ * USB_CFG_DESCR_PROPS_CONFIGURATION
+ * USB_CFG_DESCR_PROPS_STRINGS
+ * USB_CFG_DESCR_PROPS_STRING_0
+ * USB_CFG_DESCR_PROPS_STRING_VENDOR
+ * USB_CFG_DESCR_PROPS_STRING_PRODUCT
+ * USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER
+ * USB_CFG_DESCR_PROPS_HID
+ * USB_CFG_DESCR_PROPS_HID_REPORT
+ * USB_CFG_DESCR_PROPS_UNKNOWN (for all descriptors not handled by the driver)
+ *
+ * Note about string descriptors: String descriptors are not just strings, they
+ * are Unicode strings prefixed with a 2 byte header. Example:
+ * int serialNumberDescriptor[] = {
+ * USB_STRING_DESCRIPTOR_HEADER(6),
+ * 'S', 'e', 'r', 'i', 'a', 'l'
+ * };
+ */
+
+#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
+#define USB_CFG_DESCR_PROPS_STRINGS 0
+#define USB_CFG_DESCR_PROPS_STRING_0 0
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_HID 0
+#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
+#define USB_CFG_DESCR_PROPS_UNKNOWN 0
+
+#define usbMsgPtr_t unsigned short
+/* If usbMsgPtr_t is not defined, it defaults to 'uchar *'. We define it to
+ * a scalar type here because gcc generates slightly shorter code for scalar
+ * arithmetics than for pointer arithmetics. Remove this define for backward
+ * type compatibility or define it to an 8 bit type if you use data in RAM only
+ * and all RAM is below 256 bytes (tiny memory model in IAR CC).
+ */
+
+/* ----------------------- Optional MCU Description ------------------------ */
+
+/* The following configurations have working defaults in usbdrv.h. You
+ * usually don't need to set them explicitly. Only if you want to run
+ * the driver on a device which is not yet supported or with a compiler
+ * which is not fully supported (such as IAR C) or if you use a differnt
+ * interrupt than INT0, you may have to define some of these.
+ */
+/* #define USB_INTR_CFG MCUCR */
+/* #define USB_INTR_CFG_SET ((1 << ISC00) | (1 << ISC01)) */
+/* #define USB_INTR_CFG_CLR 0 */
+/* #define USB_INTR_ENABLE GIMSK */
+/* #define USB_INTR_ENABLE_BIT INT0 */
+/* #define USB_INTR_PENDING GIFR */
+/* #define USB_INTR_PENDING_BIT INTF0 */
+/* #define USB_INTR_VECTOR INT0_vect */
+
+/* Set INT1 for D- falling edge to count SOF */
+/* #define USB_INTR_CFG EICRA */
+#define USB_INTR_CFG_SET ((1 << ISC11) | (0 << ISC10))
+/* #define USB_INTR_CFG_CLR 0 */
+/* #define USB_INTR_ENABLE EIMSK */
+#define USB_INTR_ENABLE_BIT INT1
+/* #define USB_INTR_PENDING EIFR */
+#define USB_INTR_PENDING_BIT INTF1
+#define USB_INTR_VECTOR INT1_vect
diff --git a/keyboards/keebio/ergodicity/config.h b/keyboards/keebio/ergodicity/config.h
new file mode 100644
index 00000000000..a743816276f
--- /dev/null
+++ b/keyboards/keebio/ergodicity/config.h
@@ -0,0 +1,233 @@
+/*
+Copyright 2019 Keebio
+
+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 0xCB10
+#define PRODUCT_ID 0x125F
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Keebio
+#define PRODUCT Ergodicity
+#define DESCRIPTION Low-profile ergo keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * 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 { B0, B1, C7, B6, B4 }
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D7, D6, D4, D3, D2, D1, D0, B7, B3 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+#define BACKLIGHT_PIN B5
+#define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 7
+
+#define RGB_DI_PIN B2
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 12
+ #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
+#endif
+
+/* 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
+
+/* 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.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
+
+/* 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_HELP H
+//#define MAGIC_KEY_HELP_ALT 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 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#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 B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#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
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#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_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
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/keebio/ergodicity/ergodicity.c b/keyboards/keebio/ergodicity/ergodicity.c
new file mode 100644
index 00000000000..0bbcf611784
--- /dev/null
+++ b/keyboards/keebio/ergodicity/ergodicity.c
@@ -0,0 +1,51 @@
+/* Copyright 2019 Keebio
+ *
+ * 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 "ergodicity.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/keebio/ergodicity/ergodicity.h b/keyboards/keebio/ergodicity/ergodicity.h
new file mode 100644
index 00000000000..156ad828a37
--- /dev/null
+++ b/keyboards/keebio/ergodicity/ergodicity.h
@@ -0,0 +1,41 @@
+/* Copyright 2019 Keebio
+ *
+ * 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"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ kA1, kA2, kA3, kE3, kA4, kA5, kA6, kA7, kA8, kA9, kA10, kA11, kA12, kA13, kA15, \
+ kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8, kB9, kB10, kB11, kB12, kB13, kB14, kB15, \
+ kC1, kC2, kC3, kC4, kC5, kC6, kC7, kC8, kC9, kC10, kC11, kC12, kC13, kC15, \
+ kD2, kD3, kD4, kD5, kD6, kD7, kD8, kD9, kD10, kD11, kD12, kD13, kD14, kD15, \
+ kE2, kE4, kE6, kE7, kE9, kE11, kE15 \
+) \
+{ \
+ { kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8, kA9, kA10, kA11, kA12, kA13, KC_NO, kA15 }, \
+ { kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8, kB9, kB10, kB11, kB12, kB13, kB14, kB15 }, \
+ { kC1, kC2, kC3, kC4, kC5, kC6, kC7, kC8, kC9, kC10, kC11, kC12, kC13, KC_NO, kC15 }, \
+ { KC_NO, kD2, kD3, kD4, kD5, kD6, kD7, kD8, kD9, kD10, kD11, kD12, kD13, kD14, kD15 }, \
+ { KC_NO, kE2, kE3, kE4, KC_NO, kE6, kE7, KC_NO, kE9, KC_NO, kE11, KC_NO, KC_NO, kE15 } \
+}
diff --git a/keyboards/keebio/ergodicity/info.json b/keyboards/keebio/ergodicity/info.json
new file mode 100644
index 00000000000..b019da3aaec
--- /dev/null
+++ b/keyboards/keebio/ergodicity/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "Ergodicity",
+ "url": "https://keeb.io",
+ "maintainer": "Keebio",
+ "width": 19.5,
+ "height": 5.25,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":0.5, "y":0},
+ {"label":"`", "x":1.75, "y":0.25},
+ {"label":"1", "x":2.75, "y":0.25},
+ {"label":"2", "x":3.75, "y":0},
+ {"label":"3", "x":4.75, "y":0.25},
+ {"label":"4", "x":5.75, "y":0.25},
+ {"label":"5", "x":6.75, "y":0.25},
+ {"label":"6", "x":7.75, "y":0.25},
+ {"label":"7", "x":11, "y":0.25},
+ {"label":"8", "x":12, "y":0.25},
+ {"label":"9", "x":13, "y":0.25},
+ {"label":"0", "x":14, "y":0.25},
+ {"label":"-", "x":15, "y":0},
+ {"label":"=", "x":16, "y":0.25},
+ {"label":"Backspace", "x":17, "y":0.25, "w":2},
+
+ {"label":"PgUp", "x":0.25, "y":1},
+ {"label":"Tab", "x":1.5, "y":1.25, "w":1.5},
+ {"label":"Q", "x":3, "y":1.25},
+ {"label":"W", "x":4.25, "y":1.25},
+ {"label":"E", "x":5.25, "y":1.25},
+ {"label":"R", "x":6.25, "y":1.25},
+ {"label":"T", "x":7.25, "y":1.25},
+ {"label":"Y", "x":10.5, "y":1.25},
+ {"label":"U", "x":11.5, "y":1.25},
+ {"label":"I", "x":12.5, "y":1.25},
+ {"label":"O", "x":13.5, "y":1.25},
+ {"label":"P", "x":14.75, "y":1.25},
+ {"label":"[", "x":15.75, "y":1.25},
+ {"label":"]", "x":16.75, "y":1.25},
+ {"label":"Backslash", "x":17.75, "y":1.25, "w":1.5},
+
+ {"label":"PgDn", "x":0, "y":2},
+ {"label":"Caps Lock", "x":1.25, "y":2.25, "w":2},
+ {"label":"A", "x":3.25, "y":2.25},
+ {"label":"S", "x":4.5, "y":2.25},
+ {"label":"D", "x":5.5, "y":2.25},
+ {"label":"F", "x":6.5, "y":2.25},
+ {"label":"G", "x":7.5, "y":2.25},
+ {"label":"H", "x":10.75, "y":2.25},
+ {"label":"J", "x":11.75, "y":2.25},
+ {"label":"K", "x":12.75, "y":2.25},
+ {"label":"L", "x":13.75, "y":2.25},
+ {"label":";", "x":15.25, "y":2.25},
+ {"label":"'", "x":16.25, "y":2.25},
+ {"label":"Enter", "x":17.25, "y":2.25, "w":2},
+
+ {"label":"Shift", "x":1.25, "y":3.25, "w":2.5},
+ {"label":"Z", "x":3.75, "y":3.25},
+ {"label":"X", "x":5, "y":3.25},
+ {"label":"C", "x":6, "y":3.25},
+ {"label":"V", "x":7, "y":3.25},
+ {"label":"B", "x":8, "y":3.25},
+ {"label":"B", "x":10.25, "y":3.25},
+ {"label":"N", "x":11.25, "y":3.25},
+ {"label":"M", "x":12.25, "y":3.25},
+ {"label":",", "x":13.25, "y":3.25},
+ {"label":".", "x":14.75, "y":3.25},
+ {"label":"/", "x":15.75, "y":3.25},
+ {"label":"Shift", "x":16.75, "y":3.25, "w":1.5},
+ {"label":"Fn", "x":18.25, "y":3.25},
+
+ {"label":"Alt", "x":1.25, "y":4.25, "w":1.5},
+ {"label":"Gui", "x":5, "y":4.25, "w":1.5},
+ {"label":"Space", "x":6.5, "y":4.25, "w":2},
+ {"label":"Menu", "x":8.5, "y":4.25},
+ {"label":"Space", "x":10.25, "y":4.25, "w":2.5},
+ {"label":"Alt", "x":12.75, "y":4.25, "w":1.5},
+ {"label":"Fn", "x":17.75, "y":4.25, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keebio/ergodicity/keymaps/default/config.h b/keyboards/keebio/ergodicity/keymaps/default/config.h
new file mode 100644
index 00000000000..6079c0b0f3e
--- /dev/null
+++ b/keyboards/keebio/ergodicity/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 Keebio
+ *
+ * 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/keebio/ergodicity/keymaps/default/keymap.c b/keyboards/keebio/ergodicity/keymaps/default/keymap.c
new file mode 100644
index 00000000000..b33031ca5ec
--- /dev/null
+++ b/keyboards/keebio/ergodicity/keymaps/default/keymap.c
@@ -0,0 +1,73 @@
+/* Copyright 2019 Keebio
+ *
+ * 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
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QMKBEST = SAFE_RANGE,
+ QMKURL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, 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_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_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_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_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL \
+ ),
+ [1] = 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, _______, \
+ RGB_MOD, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ BL_STEP, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______ \
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QMKBEST:
+ if (record->event.pressed) {
+ // when keycode QMKBEST is pressed
+ SEND_STRING("QMK is the best thing ever!");
+ } else {
+ // when keycode QMKBEST is released
+ }
+ break;
+ case QMKURL:
+ if (record->event.pressed) {
+ // when keycode QMKURL is pressed
+ SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
+ } else {
+ // when keycode QMKURL is released
+ }
+ break;
+ }
+ return true;
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/keebio/ergodicity/keymaps/default/readme.md b/keyboards/keebio/ergodicity/keymaps/default/readme.md
new file mode 100644
index 00000000000..906b26c649d
--- /dev/null
+++ b/keyboards/keebio/ergodicity/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for ergodicity
diff --git a/keyboards/keebio/ergodicity/readme.md b/keyboards/keebio/ergodicity/readme.md
new file mode 100644
index 00000000000..0f841d6e3eb
--- /dev/null
+++ b/keyboards/keebio/ergodicity/readme.md
@@ -0,0 +1,15 @@
+# Ergodicity
+
+
+
+A short description of the keyboard/project
+
+Keyboard Maintainer: [nooges/bakingpy](https://github.com/nooges)
+Hardware Supported: Ergodicity PCB w/ATmega32u4
+Hardware Availability: [Keebio](https://keeb.io)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keebio/ergodicity:default:dfu
+
+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/keebio/ergodicity/rules.mk b/keyboards/keebio/ergodicity/rules.mk
new file mode 100644
index 00000000000..974f75afdf2
--- /dev/null
+++ b/keyboards/keebio/ergodicity/rules.mk
@@ -0,0 +1,80 @@
+# 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
+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 = 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)
+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 = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # 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/keebio/iris/iris.h b/keyboards/keebio/iris/iris.h
index ec78efc220d..949405d55fe 100644
--- a/keyboards/keebio/iris/iris.h
+++ b/keyboards/keebio/iris/iris.h
@@ -11,7 +11,7 @@
#endif
#include "quantum.h"
-#include "../../zeal60/zeal60_keycodes.h"
+#include "../../wilba_tech/via_keycodes.h"
// Used to create a keymap using only KC_ prefixed keys
#define LAYOUT_kc( \
diff --git a/keyboards/keebio/iris/keymaps/blucky/config.h b/keyboards/keebio/iris/keymaps/blucky/config.h
new file mode 100644
index 00000000000..213445dd3f3
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/blucky/config.h
@@ -0,0 +1,34 @@
+/*
+Copyright 2019 Brian Luckenbill
+
+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 C6_AUDIO
+
+#undef RGBLED_NUM
+#define RGBLED_NUM 12
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_ANIMATIONS
+
+#define MOUSEKEY_DELAY 300
+#define MOUSEKEY_INTERVAL 50
+#define MOUSEKEY_MAX_SPEED 10
+#define MOUSEKEY_TIME_TO_MAX 20
+#define MOUSEKEY_WHEEL_MAX_SPEED 8
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 40
diff --git a/keyboards/keebio/iris/keymaps/blucky/keymap.c b/keyboards/keebio/iris/keymaps/blucky/keymap.c
new file mode 100644
index 00000000000..f7ede3f220f
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/blucky/keymap.c
@@ -0,0 +1,86 @@
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QWERTY,
+ _LAYER1,
+ _LAYER2,
+ _LAYER3
+};
+
+#define WM_0 LGUI(KC_ENT)
+#define WM_1 LGUI(KC_BSPC)
+#define WM_2 LGUI(KC_DEL)
+#define WM_3 SGUI(KC_ENT)
+#define WM_4 SGUI(KC_BSPC)
+#define WM_5 SGUI(KC_DEL)
+#define WM_6 SGUI(KC_TAB)
+
+#define LAYER1 TT(_LAYER1)
+#define LAYER2 TT(_LAYER2)
+
+#define CS_U C(S(KC_UP))
+#define CS_D C(S(KC_DOWN))
+#define CS_SPC C(S(KC_SPC))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GESC, 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_BSPC,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ LAYER1, 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_LGUI, KC_RGUI, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, LAYER2,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ KC_LCTL, KC_LALT, KC_SPC, KC_ENT, KC_RGUI, WM_0
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+
+ [_LAYER1] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MINS,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_SLCK, KC_PSCR, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_PGDN, KC_HOME, KC_END, KC_NO, KC_DEL,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO, KC_NO, C(KC_LEFT), KC_NO, C(KC_RGHT), KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_INS,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_RSFT, KC_NO, WM_5, WM_4, WM_3, WM_2, MU_TOG, AU_TOG, KC_NO, KC_NO, KC_LBRC, KC_RBRC, KC_BSLS, KC_NO,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ WM_1, KC_LGUI, KC_PIPE, KC_UNDS, KC_RCTL, KC_RALT
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+
+ [_LAYER2] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_ESC, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_NO,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO, KC_NO, KC_NO, CS_SPC, CS_U, S(KC_PGUP), RGB_VAI, RGB_HUI, RGB_SAI, RGB_M_SW,RGB_M_R, KC_NO,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO, KC_NO, KC_NO, KC_NO, CS_D, S(KC_PGDN), RGB_VAD, RGB_HUD, RGB_SAD, KC_NO, KC_NO, KC_NO,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT, KC_VOLD, KC_VOLU, KC_MUTE, KC_BRID, KC_BRIU, MU_MOD, AU_OFF, KC_RCTL, KC_LCTL, KC_RALT, KC_LALT, KC_DEL, KC_NO,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ WM_6, VLK_TOG, RGB_MOD, RGB_TOG, BL_TOGG, BL_STEP
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+
+ [_LAYER3] = 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, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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/keebio/iris/keymaps/blucky/rules.md b/keyboards/keebio/iris/keymaps/blucky/rules.md
new file mode 100644
index 00000000000..5c1458faeea
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/blucky/rules.md
@@ -0,0 +1,7 @@
+# blucky's keymap for iris rev 2 w/ speaker, backlight and RGB and rev 3
+
+```shell
+make keebio/iris/rev2:blucky
+
+make keebio/iris/rev3:blucky
+```
diff --git a/keyboards/keebio/iris/keymaps/blucky/rules.mk b/keyboards/keebio/iris/keymaps/blucky/rules.mk
new file mode 100644
index 00000000000..5fdc528057a
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/blucky/rules.mk
@@ -0,0 +1,5 @@
+RGBLIGHT_ENABLE = yes
+BACKLIGHT_ENABLE = yes
+VELOCIKEY_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+AUDIO_ENABLE = no
diff --git a/keyboards/keebio/iris/keymaps/drashna/config.h b/keyboards/keebio/iris/keymaps/drashna/config.h
index 1a937b4b7c9..ee8ac8aff8b 100644
--- a/keyboards/keebio/iris/keymaps/drashna/config.h
+++ b/keyboards/keebio/iris/keymaps/drashna/config.h
@@ -19,8 +19,8 @@ along with this program. If not, see .
/* Use I2C or Serial, not both */
-// #define USE_SERIAL
-#define USE_I2C
+#define USE_SERIAL
+// #define USE_I2C
/* Select hand configuration */
@@ -29,33 +29,38 @@ along with this program. If not, see .
#define EE_HANDS
#ifdef RGBLIGHT_ENABLE
-# undef RGBLED_NUM
-# define RGBLED_NUM 18 // Number of LEDs
-# define RGBLED_SPLIT { 9, 9 }
-# define RGBLIGHT_HUE_STEP 12
-# define RGBLIGHT_SAT_STEP 12
-# define RGBLIGHT_VAL_STEP 12
-# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
-# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
+# undef RGBLED_NUM
+# define RGBLED_NUM 18 // Number of LEDs
+# undef RGBLED_SPLIT
+# define RGBLED_SPLIT { 9, 9 }
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
+# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
-# define RGBLIGHT_LIMIT_VAL 225
-#endif // RGBLIGHT_ENABLE
+# define RGBLIGHT_LIMIT_VAL 225
+#endif // RGBLIGHT_ENABLE
#ifdef AUDIO_ENABLE
-# define C6_AUDIO
-# ifdef RGBLIGHT_ENABLE
-# define NO_MUSIC_MODE
-# endif //RGBLIGHT_ENABLE
-#endif //AUDIO_ENABLE
+# define C6_AUDIO
+# ifdef RGBLIGHT_ENABLE
+# define NO_MUSIC_MODE
+# endif // RGBLIGHT_ENABLE
+#endif // AUDIO_ENABLE
-#define QMK_ESC_OUTPUT F6 // usually COL
-#define QMK_ESC_INPUT D7 // usually ROW
-#define QMK_LED B0
-#define QMK_SPEAKER C6
+#ifndef KEYBOARD_keebio_iris_rev3
+# define QMK_ESC_OUTPUT F6 // usually COL
+# define QMK_ESC_INPUT D7 // usually ROW
+# define QMK_LED B0
+# define QMK_SPEAKER C6
+#endif
#undef PRODUCT
#ifdef KEYBOARD_keebio_iris_rev2
-# define PRODUCT Drashna Hacked Iris Rev.2
+# define PRODUCT Drashna Hacked Iris Rev .2
+#elif defined(KEYBOARD_keebio_iris_rev3)
+# define PRODUCT Drashna Hacked Iris Rev .3
#endif
#define SHFT_LED1 6
diff --git a/keyboards/keebio/iris/keymaps/drashna/keymap.c b/keyboards/keebio/iris/keymaps/drashna/keymap.c
index 44ffb59f6a7..fe10cb27510 100644
--- a/keyboards/keebio/iris/keymaps/drashna/keymap.c
+++ b/keyboards/keebio/iris/keymaps/drashna/keymap.c
@@ -2,7 +2,7 @@
#include QMK_KEYBOARD_H
#include "drashna.h"
-
+// clang-format off
#define LAYOUT_iris_base( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
@@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-
+// clang-format on
void matrix_init_keymap(void) {
#ifndef CONVERT_TO_PROTON_C
@@ -122,13 +122,12 @@ void matrix_init_keymap(void) {
#endif
}
-
void keyboard_post_init_keymap(void) {
#if BACKLIGHT_ENABLE
backlight_enable();
backlight_level(5);
- #ifdef BACKLIGHT_BREATHING
- breathing_enable();
- #endif
+# ifdef BACKLIGHT_BREATHING
+ breathing_enable();
+# endif
#endif
}
diff --git a/keyboards/keebio/iris/keymaps/drashna/rules.mk b/keyboards/keebio/iris/keymaps/drashna/rules.mk
index a315e1a0b18..17acd32be05 100644
--- a/keyboards/keebio/iris/keymaps/drashna/rules.mk
+++ b/keyboards/keebio/iris/keymaps/drashna/rules.mk
@@ -14,6 +14,6 @@ SPACE_CADET_ENABLE = no
INDICATOR_LIGHTS = no
MACROS_ENABLED = no
RGBLIGHT_TWINKLE = no
-RGBLIGHT_STARTUP_ANIMATION = yes
+RGBLIGHT_STARTUP_ANIMATION = no
BOOTLOADER = qmk-dfu
diff --git a/keyboards/keebio/iris/keymaps/osiris/keymap.c b/keyboards/keebio/iris/keymaps/osiris/keymap.c
index 4bf65dd6e21..a777c8a351e 100644
--- a/keyboards/keebio/iris/keymaps/osiris/keymap.c
+++ b/keyboards/keebio/iris/keymaps/osiris/keymap.c
@@ -4,7 +4,7 @@ extern keymap_config_t keymap_config;
enum layer_names {
_QWERTY,
- _WORKMAN,
+ _COLEMAK,
_LOWER,
_RAISE,
_ADJUST
@@ -12,7 +12,7 @@ enum layer_names {
enum custom_keycodes {
QWERTY = SAFE_RANGE,
- WORKMAN,
+ COLEMAK,
LOWER,
RAISE
};
@@ -24,8 +24,8 @@ enum custom_keycodes {
#define KC_RST RESET
#define KC_BL_S BL_STEP
-// left control as a left key too - makes perfect sense
-#define KC_LECL LCTL_T(KC_LEFT)
+// left shift as a left key too - makes perfect sense
+#define KC_LESF LSFT_T(KC_LEFT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -36,23 +36,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----| |----+----+----+----+----+----|
TAB , Q , W , E , R , T , Y , U , I , O , P ,BSLS,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- LSFT, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
+ LCTL, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
- LECL, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,RGHT,
+ LESF, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,RGHT,
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
LGUI,LOWR,ENT , SPC ,RASE,RALT
// `----+----+----' `----+----+----'
),
- [_WORKMAN] = LAYOUT_kc(
+ [_COLEMAK] = LAYOUT_kc(
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
GESC, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- TAB , Q , D , R , W , B , J , F , U , P ,SCLN,BSLS,
+ TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,BSLS,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- LSFT, A , S , H , T , G , Y , N , E , O ,I ,QUOT,
+ LCTL, A , R , S , T , D , H , N , E , I , O ,QUOT,
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
- LECL, Z , X , M , C , V ,LBRC, RBRC, K , L ,COMM,DOT ,SLSH,RGHT,
+ LESF, Z , X , C , V , B ,LBRC, RBRC, K , M ,COMM,DOT ,SLSH,RGHT,
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
LGUI,LOWR,ENT , SPC ,RASE,RALT
// `----+----+----' `----+----+----'
@@ -60,13 +60,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT_kc(
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
- TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,DEL ,
+ GRV ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,DEL ,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
, , , , , , , ,BTN1, , , ,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
, , , , , , MS_L,MS_D,MS_U,MS_R, , ,
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
- , , , , , UP , , , , , , , , ,
+ , , , , , UP , , ,DOWN, , , , , ,
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
, , , , ,
// `----+----+----' `----+----+----'
@@ -80,32 +80,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----| |----+----+----+----+----+----|
,MPLY,VOLD,MNXT, ,LPRN, RPRN,MINS,EQL , , , ,
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
- , , , , , , , ,DOWN, , , , , ,
+ , , , , , , , , , , , , , ,
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
, , , , ,
// `----+----+----' `----+----+----'
),
[_ADJUST] = LAYOUT(
- //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
- _______, _______, _______, _______, _______, QWERTY, WORKMAN, _______, _______, _______, _______, _______,
- //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______,
- //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- RESET , DEBUG , RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
- //|--------+--------+--------+--------+--------+--------+--------. ,--------|--------+--------+--------+--------+--------+--------|
- BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- //`--------+--------+--------+----+---+--------+--------+--------/ \--------+--------+--------+---+----+--------+--------+--------'
- _______, _______, _______, _______, _______, _______
- // `--------+--------+--------' `--------+--------+--------'
+ //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------.
+ _______,_______,_______,_______,_______, QWERTY, COLEMAK,_______,_______,_______,_______,_______,
+ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ _______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_SAI,RGB_VAI, _______,_______,_______,_______,_______,_______,
+ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ RESET ,DEBUG ,_______,RGB_HUD,RGB_SAD,RGB_VAD, _______,_______,_______,_______,_______,_______,
+ //|-------+-------+-------+-------+-------+-------+-------. ,-------|-------+-------+-------+-------+-------+-------|
+ BL_STEP,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ //`--------+-------+-------+----+--+-------+-------+-------/ \-------+-------+-------+---+---+-------+-------+-------'
+ _______,_______,_______, _______,_______,_______
+ // `-------+-------+-------' `-------+-------+-------'
)
};
-#ifdef AUDIO_ENABLE
-float tone_qwerty[][2] = SONG(QWERTY_SOUND);
-#endif
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
@@ -113,9 +109,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
- case WORKMAN:
+ case COLEMAK:
if (record->event.pressed) {
- set_single_persistent_default_layer(_WORKMAN);
+ set_single_persistent_default_layer(_COLEMAK);
}
return false;
case LOWER:
diff --git a/keyboards/keebio/iris/keymaps/osiris/readme.md b/keyboards/keebio/iris/keymaps/osiris/readme.md
index 7db30591e79..58469ef164b 100644
--- a/keyboards/keebio/iris/keymaps/osiris/readme.md
+++ b/keyboards/keebio/iris/keymaps/osiris/readme.md
@@ -3,9 +3,10 @@

- mouse keys enabled
-- includes a QWERTY and a WORKMAN layout now
+- includes a QWERTY and a COLEMAK layout now
- keys that I need, while removing keys that I don't
- more updates with the layout coming soon
- the enter needs to move elsewhere, not yet sure where
+- support for VIA Configurator
See keymap.c for layouts
diff --git a/keyboards/keebio/iris/keymaps/osiris/rules.mk b/keyboards/keebio/iris/keymaps/osiris/rules.mk
index 45c570a3b66..f2788b5f751 100644
--- a/keyboards/keebio/iris/keymaps/osiris/rules.mk
+++ b/keyboards/keebio/iris/keymaps/osiris/rules.mk
@@ -1,3 +1,8 @@
RGBLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes
MOUSEKEY_ENABLE = yes
+
+# VIA Support - Comment these 3 lines out to disable
+# RAW_ENABLE = yes
+# DYNAMIC_KEYMAP_ENABLE = yes
+# SRC += keyboards/wilba_tech/wt_main.c
\ No newline at end of file
diff --git a/keyboards/keebio/levinson/keymaps/treadwell/keymap.c b/keyboards/keebio/levinson/keymaps/treadwell/keymap.c
index 2f0da0f525c..4d3d9a4f649 100644
--- a/keyboards/keebio/levinson/keymaps/treadwell/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/treadwell/keymap.c
@@ -61,9 +61,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----| |----+----+----+----+----+----|
ESC , A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, X4 ,
+ LSFT, Z , X , C , V , B , N , M ,COMM,DOT , UP ,ENT ,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
- X3 ,LCTL,LALT,LGUI, X2 , SPC, SPC , X1 ,LEFT,DOWN, UP ,RGHT
+ LCTL, X3 ,LGUI,LALT,SPC , X2 , BSPC, X1 ,SLSH,LEFT,DOWN,RGHT
//`----+----+----+----+----+----' `----+----+----+----+----+----'
),
@@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+------+----+----+----+----| |----+----+----+----+----+----|
CAPS,SELECT,LEFT,DOWN,RGHT,DEL , PGDN, END,LBRC,RBRC,MINS,UNDS,
//|----+------+----+----+----+----| |----+----+----+----+----+----|
- LSFT, UNDO ,CUT ,COPY,PASTE, , LEFT,RGHT,LCBR,RCBR,PLUS,PEQL,
+ LSFT, UNDO ,CUT ,COPY,PASTE, , LEFT,RGHT,LCBR,RCBR,PLUS, EQL,
//|----+------+----+----+----+----| |----+----+----+----+----+----|
, , , , ,LALT, , , , , ,
//`----+------+----+----+----+----' `----+----+----+----+----+----'
diff --git a/keyboards/keebio/quefrency/keymaps/georgepetri/config.h b/keyboards/keebio/quefrency/keymaps/georgepetri/config.h
index d72d7760ef9..c3063d6da6b 100644
--- a/keyboards/keebio/quefrency/keymaps/georgepetri/config.h
+++ b/keyboards/keebio/quefrency/keymaps/georgepetri/config.h
@@ -21,4 +21,4 @@ along with this program. If not, see .
#pragma once
-#define USE_I2C
\ No newline at end of file
+#undef RGBLIGHT_ANIMATIONS
diff --git a/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c b/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c
index f08ab4f8343..9ee3eb81022 100644
--- a/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c
@@ -2,43 +2,90 @@
extern keymap_config_t keymap_config;
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
#define _BASE 0
-#define _FN1 1
+#define _L 1
+#define _R 2
enum custom_keycodes {
QWERTY = SAFE_RANGE,
};
+#define KC_TL LCTL(KC_PGUP)
+#define KC_TR LCTL(KC_PGDN)
+#define KC_TC LCTL(KC_W)
+#define KC_TRO LCTL(LSFT(KC_T))
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = 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_BSPC, KC_DEL, KC_HOME,\
+ KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 , KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,KC_DEL ,KC_MINS ,KC_EQL ,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_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_ESC ,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, KC_RSFT, _______, 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_PGDN ,
// ├──────────┬──────────┴┬───────┴──┬─────┴─────┬──┴────────┴────────┤ ├────────┴────────┴────┬───┴────┬───┴────┬───┴────┬────────┬────────┼────────┤
- KC_LCTL, KC_LGUI, KC_LALT, MO(_FN1), KC_SPC, KC_SPC ,_______, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ KC_CAPS ,KC_LCTL ,KC_LALT ,MO(_L) ,KC_SPC , KC_SPC ,_______ ,KC_LGUI ,TG(_R) ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
// └──────────┴───────────┴──────────┴───────────┴────────────────────┘ └──────────────────────┴────────┴────────┴────────┴────────┴────────┴────────┘
),
- [_FN1] = LAYOUT_65(
+ [_L] = LAYOUT_65(
// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
- 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_BSPC, KC_DEL, KC_INS, \
+ _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,_______ ,_______ ,_______ ,KC_INS ,
// ├────────┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┘ ┌───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────────┼────────┤
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS,\
+ _______ ,KC_F11 ,KC_F12 ,_______ ,_______ ,_______ , _______ ,KC_MINS ,KC_EQL ,_______ ,_______ ,_______ ,_______ ,_______, KC_PAUS ,
// ├─────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┐ └─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────────┼────────┤
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,_______ ,_______ ,_______ ,_______ ,
// ├───────────────┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┐ └─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴───────────────────┼────────┤
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,KC_PGDN ,KC_PGUP ,KC_HOME ,KC_END ,_______ ,_______ ,_______ ,
// ├──────────┬──────────┴┬───────┴──┬─────┴─────┬──┴────────┴────────┤ ├────────┴────────┴────┬───┴────┬───┴────┬───┴────┬────────┬────────┼────────┤
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______
+// └──────────┴───────────┴──────────┴───────────┴────────────────────┘ └──────────────────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_R] = LAYOUT_65(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┘ ┌───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────────┼────────┤
+ _______ ,KC_TL ,KC_TR ,KC_TC ,KC_TRO ,_______ , _______ ,KC_TL , KC_TR , KC_TC , KC_TRO ,_______ ,_______ ,_______, _______ ,
+// ├─────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┐ └─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────────┼────────┤
+ _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,_______ , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,_______ ,_______ ,_______ ,_______ ,
+// ├───────────────┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┐ └─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴───────────────────┼────────┤
+ _______ ,KC_PGDN ,KC_PGUP ,KC_HOME ,KC_END ,_______ , _______ ,KC_PGDN ,KC_PGUP ,KC_HOME ,KC_END ,_______ ,_______ ,_______ ,
+// ├──────────┬──────────┴┬───────┴──┬─────┴─────┬──┴────────┴────────┤ ├────────┴────────┴────┬───┴────┬───┴────┬───┴────┬────────┬────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______
// └──────────┴───────────┴──────────┴───────────┴────────────────────┘ └──────────────────────┴────────┴────────┴────────┴────────┴────────┴────────┘
)
};
+
+void keyboard_post_init_user(void) {
+ rgblight_sethsv_noeeprom(HSV_BLUE);
+}
+
+void update_led(void) {
+ switch (biton32(layer_state)) {
+ case _BASE:
+ rgblight_sethsv_noeeprom(HSV_BLUE);
+ break;
+ case _L:
+ rgblight_sethsv_noeeprom(HSV_CORAL);
+ break;
+ case _R:
+ rgblight_sethsv_noeeprom(HSV_MAGENTA);
+ break;
+ }
+ if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
+ rgblight_sethsv_range(HSV_WHITE,0,4);
+ rgblight_sethsv_range(HSV_WHITE,12,16);
+ }
+}
+
+uint32_t layer_state_set_user(uint32_t state) {
+ update_led();
+ return state;
+}
+
+void led_set_user(uint8_t usb_led) {
+ update_led();
+}
diff --git a/keyboards/keebio/quefrency/keymaps/georgepetri/readme.md b/keyboards/keebio/quefrency/keymaps/georgepetri/readme.md
index 425190d198d..bb4e75c27bd 100644
--- a/keyboards/keebio/quefrency/keymaps/georgepetri/readme.md
+++ b/keyboards/keebio/quefrency/keymaps/georgepetri/readme.md
@@ -1,48 +1,64 @@
# George Petri's Quefrency 65 layout
```
-make keebio/quefrency:georgepetri
+make keebio/quefrency/rev1:georgepetri
```
-Based on the default querty layout with minor tweaks.
-The position of the arrow keys in a line in the bottom right.
-The backspace key is 1u and to the left of the delete key.
-Grave, pause and insert are on the function layer.
+Querty layout with minor changes and dedicated navigation layer.
### Base Layer
```
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
-│ ESC ││ 1 ││ 2 ││ 3 ││ 4 ││ 5 ││ 6 │ │ 7 ││ 8 ││ 9 ││ 0 ││ MINS││ EQL ││ BSPC││ DEL ││ HOME│
+│ GRV ││ 1 ││ 2 ││ 3 ││ 4 ││ 5 ││ 6 │ │ 7 ││ 8 ││ 9 ││ 0 ││ BSPC││ DEL ││ MINS││ EQL ││ HOME│
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
┌──────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────────┐┌──────┐
│ TAB ││ Q ││ W ││ E ││ R ││ T │ │ Y ││ U ││ I ││ O ││ P ││ LBRC││ RBRC││ BSLS ││ END │
└──────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────────┘└──────┘
┌────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────┐┌──────┐
-│ CAPS ││ A ││ S ││ D ││ F ││ G │ │ H ││ J ││ K ││ L ││ SCLN││ QUOT││ ENT ││ PGUP│
+│ ESC ││ A ││ S ││ D ││ F ││ G │ │ H ││ J ││ K ││ L ││ SCLN││ QUOT││ ENT ││ PGUP│
└────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└────────────────┘└──────┘
┌────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────────┐┌──────┐
│ LSFT ││ Z ││ X ││ C ││ V ││ B │ │ N ││ M ││ COMM││ DOT ││ SLSH││ RSFT ││ PGDN│
└────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└────────────────────┘└──────┘
┌────────┐┌────────┐┌────────┐┌────────┐┌────────────────┐ ┌────────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
-│ LCTL ││ LGUI ││ LALT ││MO(_FN1)││ SPC │ │ SPC ││ RALT││ RCTL││ LEFT││ DOWN││ UP ││ RGHT│
+│ CAPS ││ LCTL ││ LALT ││MO(_L) ││ SPC │ │ SPC ││ LGUI││TG(_R)││ LEFT││ DOWN││ UP ││ RGHT│
└────────┘└────────┘└────────┘└────────┘└────────────────┘ └────────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
```
-### Function
+### Raise
```
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
-│ GRV ││ F1 ││ F2 ││ F3 ││ F4 ││ F5 ││ F6 │ │ F7 ││ F8 ││ F9 ││ F10 ││ F11 ││ F12 ││ BSPC││ DEL ││ INS │
+│ ││ F1 ││ F2 ││ F3 ││ F4 ││ F5 ││ F6 │ │ F7 ││ F8 ││ F9 ││ F10 ││ F11 ││ F12 ││ BSPC││ DEL ││ INS │
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
┌──────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────────┐┌──────┐
-│ ││ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ ││ ││ PAUS│
+│ ││ F1 ││ F12 ││ ││ ││ │ │ ││ MINS││ EQL ││ ││ ││ ││ ││ ││ PAUS│
└──────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────────┘└──────┘
┌────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────┐┌──────┐
-│ ││ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ ││ │
+│ ││ ││ ││ ││ ││ │ │ LEFT││ DOWN││ UP ││ RGHT││ ││ ││ ││ │
└────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└────────────────┘└──────┘
┌────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────────┐┌──────┐
-│ ││ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ │
+│ ││ ││ ││ ││ ││ │ │ ││ PGDN││ PGUP││ HOME││ END ││ ││ │
└────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└────────────────────┘└──────┘
┌────────┐┌────────┐┌────────┐┌────────┐┌────────────────┐ ┌────────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ │
└────────┘└────────┘└────────┘└────────┘└────────────────┘ └────────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
-```
\ No newline at end of file
+```
+
+### Lower
+```
+┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
+│ ││ ││ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ ││ ││ │
+└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
+┌──────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────────┐┌──────┐
+│ ││ TAB_L││ TAB_R││ TAB_C││ TAB_R││ │ │ ││ TAB_L││ TAB_R││ TAB_C││ TAB_R││ ││ ││ ││ │
+└──────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────────┘└──────┘
+┌────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────┐┌──────┐
+│ ││ LEFT││ DOWN││ UP ││ RGHT││ │ │ LEFT││ DOWN││ UP ││ RGHT││ ││ ││ ││ │
+└────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└────────────────┘└──────┘
+┌────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────────┐┌──────┐
+│ ││ PGDN││ PGUP││ HOME││ END ││ │ │ ││ PGDN││ PGUP││ HOME││ END ││ ││ │
+└────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└────────────────────┘└──────┘
+┌────────┐┌────────┐┌────────┐┌────────┐┌────────────────┐ ┌────────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
+│ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ │
+└────────┘└────────┘└────────┘└────────┘└────────────────┘ └────────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
+```
diff --git a/keyboards/keebio/quefrency/keymaps/georgepetri/rules.mk b/keyboards/keebio/quefrency/keymaps/georgepetri/rules.mk
index e69de29bb2d..5bc0b70454b 100644
--- a/keyboards/keebio/quefrency/keymaps/georgepetri/rules.mk
+++ b/keyboards/keebio/quefrency/keymaps/georgepetri/rules.mk
@@ -0,0 +1 @@
+EXTRAKEY_ENABLE = no
diff --git a/keyboards/keebio/rorschach/keymaps/insertsnideremarks/readme.md b/keyboards/keebio/rorschach/keymaps/insertsnideremarks/readme.md
new file mode 100644
index 00000000000..152c8ba01af
--- /dev/null
+++ b/keyboards/keebio/rorschach/keymaps/insertsnideremarks/readme.md
@@ -0,0 +1 @@
+## I've changed my folder name to match my GitHub username. Please see https://github.com/qmk/qmk_firmware/tree/master/keyboards/keebio/rorschach/keymaps/tuesdayjohn for my current keymap files.
diff --git a/keyboards/keebio/rorschach/keymaps/tuesdayjohn/config.h b/keyboards/keebio/rorschach/keymaps/tuesdayjohn/config.h
new file mode 100644
index 00000000000..2048232c9c3
--- /dev/null
+++ b/keyboards/keebio/rorschach/keymaps/tuesdayjohn/config.h
@@ -0,0 +1,23 @@
+#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
+
+#define IGNORE_MOD_TAP_INTERRUPT
+#define TAPPING_TERM 175
+#define TAPPING_TOGGLE 2
+
+// #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/rorschach/keymaps/tuesdayjohn/keymap.c b/keyboards/keebio/rorschach/keymaps/tuesdayjohn/keymap.c
new file mode 100644
index 00000000000..19de124f87b
--- /dev/null
+++ b/keyboards/keebio/rorschach/keymaps/tuesdayjohn/keymap.c
@@ -0,0 +1,296 @@
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+enum rorschach_layers {
+ _COLEMAK, // Colemak (default layer)
+ _QWERTY, // Qwerty
+ _NUMBERS, // Numbers & Symbols
+ _NUMBERS2, // Numbers & Function Keys (similar to _NUMBERS; used with _NUMBERS for tri-layer access to _ADJUST)
+ _FUNCTION, // Function
+ _FUNCTION2, // Function 2 (identical as _FUNCTION; used to allow for easier use of space and backspace while using function layer arrows)
+ _NUMPAD, // Numpad
+ _ADJUST, // Adjust layer, accessed via tri-layer feature)
+ _ADJUST2 // Second Adjust layer, accessed outside of tri-layer feature)
+};
+
+enum rorschach_keycodes {
+ COLEMAK = SAFE_RANGE,
+ QWERTY
+};
+
+//Tap Dance Declarations
+enum {
+ ADJ = 0,
+ LBCB,
+ RBCB,
+ EQPL,
+ PLEQ,
+ MNUN,
+ SLAS,
+ GVTL,
+ PPEQ,
+ PMUN,
+ PSPA
+};
+
+void dance_LAYER_finished(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 2) {
+ layer_on(_ADJUST2);
+ set_oneshot_layer(_ADJUST2, ONESHOT_START);
+ }
+}
+void dance_LAYER_reset(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 2) {
+ layer_off(_ADJUST2);
+ clear_oneshot_layer_state(ONESHOT_PRESSED);
+ }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+[ADJ] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LAYER_finished, dance_LAYER_reset), // Double-tap to activate Adjust layer via oneshot layer
+[LBCB] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LCBR), // Left bracket on a single-tap, left brace on a double-tap
+[RBCB] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_RCBR), // Right bracket on a single-tap, right brace on a double-tap
+[EQPL] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_PLUS), // Plus sign on a single-tap, equal sign on a double-tap
+[PLEQ] = ACTION_TAP_DANCE_DOUBLE(KC_PLUS, KC_EQL), // Equal sign on a single-tap, plus sign on a double-tap
+[MNUN] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, KC_UNDS), // Minus sign on a single-tap, underscore on a double-tap
+[SLAS] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_ASTR), // Slash in a single-tap, asterisk in a double-tap
+[GVTL] = ACTION_TAP_DANCE_DOUBLE(KC_GRV, KC_TILD), // Grave on a single-tap, tilde on a double-tap
+[PPEQ] = ACTION_TAP_DANCE_DOUBLE(KC_PPLS, KC_EQL), // Numpad plus sign on a single-tap, equal sign on a double-tap
+[PMUN] = ACTION_TAP_DANCE_DOUBLE(KC_PMNS, KC_UNDS), // Numpad minus sign on a single-tap, underscore on a double-tap
+[PSPA] = ACTION_TAP_DANCE_DOUBLE(KC_PSLS, KC_PAST) // Numpad slash on a single-tap, numpad asterisk on a double-tap
+};
+
+//Aliases for longer keycodes
+#define NUMPAD TG(_NUMPAD)
+#define ADJUST MO(_ADJUST2)
+#define SPCFN LT(_FUNCTION, KC_SPC)
+#define BSPCFN LT(_FUNCTION2, KC_BSPC)
+#define ENTNS LT(_NUMBERS, KC_ENT)
+#define DELNS LT(_NUMBERS2, KC_DEL)
+#define CTLESC CTL_T(KC_ESC)
+#define ALTAPP ALT_T(KC_APP)
+#define CTL_A LCTL(KC_A)
+#define CTL_C LCTL(KC_C)
+#define CTL_V LCTL(KC_V)
+#define CTL_X LCTL(KC_X)
+#define CTL_Z LCTL(KC_Z)
+#define CTL_Y LCTL(KC_Y)
+#define CA_TAB LCA(KC_TAB)
+#define HYPER ALL_T(KC_NO)
+#define TD_ADJ TD(ADJ)
+#define TD_LBCB TD(LBCB)
+#define TD_RBCB TD(RBCB)
+#define TD_EQPL TD(EQPL)
+#define TD_PLEQ TD(PLEQ)
+#define TD_MNUN TD(MNUN)
+#define TD_SLAS TD(SLAS)
+#define TD_GVTL TD(GVTL)
+#define TD_PPEQ TD(PPEQ)
+#define TD_PMUN TD(PMUN)
+#define TD_PSPA TD(PSPA)
+#define NKROTG MAGIC_TOGGLE_NKRO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+Colemak
+(Defauit layer; keys separated by /: tap for first, hold for second; uses Space Cadet Shifts)
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | Esc/Ctl| A | R | S | T | D | | H | N | E | I | O | ' |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ |SC Shift| Z | X | C | V | B | | K | M | , | . | / |SC Shift|
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------'
+ | Ins | ` | [ | ] | App/Alt| Spc/FN | | Bsp/Fn2| RGUI | Left | Down | Up | Right |
+ `--------------------------------------------+--------+--------. ,--------+--------+--------------------------------------------'
+ | Ent/NS | Bspc | | Enter | Del/NS2|
+ `-----------------' `-----------------'
+*/
+[_COLEMAK] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
+ CTLESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
+ KC_INS, KC_GRV, KC_LBRC, KC_RBRC, ALTAPP, SPCFN, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ ENTNS, KC_BSPC, KC_ENT, DELNS
+),
+
+/*
+QWERTY
+(Keys separated by /: tap for first, hold for second; uses Space Cadet Shifts)
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | Esc/Ctl| A | S | D | F | G | | H | J | K | L | ; | ' |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ |SC Shift| Z | X | C | V | B | | N | M | , | . | / |SC Shift|
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------'
+ | Ins | ` | [ | ] | App/Alt| Spc/FN | | Bsp/Fn2| RGUI | Left | Down | Up | Right |
+ `--------------------------------------------+--------+--------. ,--------+--------+--------------------------------------------'
+ | Ent/NS | Bspc | | Enter | Del/NS2|
+ `-----------------' `-----------------'
+*/
+[_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_BSLS,
+ CTLESC, 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_INS, KC_GRV, KC_LBRC, KC_RBRC, ALTAPP, SPCFN, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ ENTNS, KC_BSPC, KC_ENT, DELNS
+),
+
+/*
+Number/symbol layer
+(Multiple characters: single-tap for first, double-tap for second)
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | | 6 | 7 | 8 | 9 | 0 | | ^ | & | * | ( | ) | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | 1 | 2 | 3 | 4 | 5 | | ! | @ | # | $ | % | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | . | / * | - _ | + = | | ` ~ | [ { | ] } | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | ( | ) | [ { | ] } | | | | | | | | | |
+ `--------------------------------------------+--------+--------. ,--------+--------+--------------------------------------------'
+ | | | | | |
+ `-----------------' `-----------------'
+*/
+[_NUMBERS] = LAYOUT(
+ _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______,
+ _______, _______, KC_DOT, TD_SLAS, TD_MNUN, TD_PLEQ, TD_GVTL, TD_LBCB, TD_RBCB, _______, _______, _______,
+ KC_LPRN, KC_RPRN, TD_LBCB, TD_RBCB, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+),
+
+/*
+Number/Function Key layer
+(Multiple characters: single-tap for first, double-tap for second)
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | | 6 | 7 | 8 | 9 | 0 | | F7 | F8 | F9 | F10 | F11 | F12 |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | 1 | 2 | 3 | 4 | 5 | | F1 | F2 | F3 | F4 | F5 | F6 |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | . | / * | - _ | + = | | ` ~ | [ { | ] } | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | ( | ) | [ { | ] } | | | | | | | | | |
+ `--------------------------------------------+--------+--------. ,--------+--------+--------------------------------------------'
+ | | | | | |
+ `-----------------' `-----------------'
+*/
+[_NUMBERS2] = LAYOUT(
+ _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, _______, KC_DOT, TD_SLAS, TD_MNUN, TD_PLEQ, TD_GVTL, TD_LBCB, TD_RBCB, _______, _______, _______,
+ KC_LPRN, KC_RPRN, TD_LBCB, TD_RBCB, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+),
+
+/*
+Function layer
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | | | | Up | | | | | | Up | Ctrl+Y | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | Ctrl+A | Left | Down | Right | C+A+Tab| | PgUp | Right | Down | Left | Home | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | Ctrl+Z | Ctrl+X | Ctrl+C | Ctrl+V | Bspc | | PgDn | Mute | Vol- | Vol+ | End | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | | | | | | | Prev | Play | Next | Stop |
+ `--------------------------------------------+--------+--------. ,--------+--------+--------------------------------------------'
+ | | | | | |
+ `-----------------' `-----------------'
+*/
+[_FUNCTION] = LAYOUT(
+ _______, _______, _______, KC_UP, _______, _______, _______, _______, KC_UP, CTL_Y, _______, _______,
+ _______, CTL_A, KC_LEFT, KC_DOWN, KC_RGHT, CA_TAB, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, _______,
+ _______, CTL_Z, CTL_X, CTL_C, CTL_V, KC_BSPC, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP,
+ _______, _______, _______, _______
+),
+
+[_FUNCTION2] = LAYOUT(
+ _______, _______, _______, KC_UP, _______, _______, _______, _______, KC_UP, CTL_Y, _______, _______,
+ _______, CTL_A, KC_LEFT, KC_DOWN, KC_RGHT, CA_TAB, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, _______,
+ _______, CTL_Z, CTL_X, CTL_C, CTL_V, KC_BSPC, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP,
+ _______, _______, _______, _______
+),
+
+/*
+Numpad layer
+(Left side duplicates layout from the Numbers layer, just with numpad output; right side layout close to PC numpad layout)
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | | KP 6 | KP 7 | KP 8 | KP 9 | KP 0 | | NumLk | KP 7 | KP 8 | KP 9 | KP / | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | KP 1 | KP 2 | KP 3 | KP 4 | KP 5 | | Tab | KP 4 | KP 5 | KP 6 | KP * | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | NumLk | KP . | KP/ KP*| KP- _ | KP+ = | | | KP 1 | KP 2 | KP 3 | KP - | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | ( | ) | [ { | ] } | | | | | KP 0 | = | KP . | KP + | |
+ `--------------------------------------------+--------+--------. ,--------+--------+--------------------------------------------'
+ | | | | KP Ent | |
+ `-----------------' `-----------------'
+*/
+[_NUMPAD] = LAYOUT(
+ _______, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_PSLS, _______,
+ _______, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_TAB, KC_P4, KC_P5, KC_P6, KC_PAST, _______,
+ _______, KC_NLCK, KC_PDOT, TD_PSPA, TD_PMUN, TD_PPEQ, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______,
+ KC_LPRN, KC_RPRN, TD_LBCB, TD_RBCB, _______, _______, _______, KC_P0, KC_EQL, KC_PDOT, KC_PPLS, _______,
+ _______, _______, KC_PENT, _______
+),
+
+/*
+Adjust layer
+(Enter/Number + Delete/Number2 to access; Numpad is a toggle)
+ ,-----------------------------------------------------. ,-----------------------------------------------------.
+ | | Colemak| Qwerty | | | | | Numpad | | | | | RESET |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | | | | | |NKRO Tog| | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | | | | | | | | | | |
+ |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ | | | | | | | | | | | | | |
+ `--------------------------------------------+--------+--------. ,--------+--------+--------------------------------------------'
+ | | | | | |
+ `-----------------' `-----------------'
+*/
+[_ADJUST] = LAYOUT(
+ _______, COLEMAK, QWERTY, _______, _______, _______, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+),
+
+[_ADJUST2] = LAYOUT(
+ _______, COLEMAK, QWERTY, _______, _______, _______, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+)
+
+};
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _NUMBERS, _NUMBERS2, _ADJUST);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case COLEMAK:
+ if (record->event.pressed) {
+ default_layer_set(1UL << _COLEMAK);
+ layer_move (_COLEMAK);
+
+ }
+ return false;
+ break;
+ case QWERTY:
+ if (record->event.pressed) {
+ default_layer_set(1UL << _QWERTY);
+ layer_move (_QWERTY);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/keebio/rorschach/keymaps/tuesdayjohn/rules.mk b/keyboards/keebio/rorschach/keymaps/tuesdayjohn/rules.mk
new file mode 100644
index 00000000000..cf63c44f4f0
--- /dev/null
+++ b/keyboards/keebio/rorschach/keymaps/tuesdayjohn/rules.mk
@@ -0,0 +1,19 @@
+# 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 = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # 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 = yes # 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
+TAP_DANCE_ENABLE = yes # Enable Tap Dancing function
diff --git a/keyboards/keyhive/maypad/info.json b/keyboards/keyhive/maypad/info.json
index 547cc8b6ef0..89367173109 100644
--- a/keyboards/keyhive/maypad/info.json
+++ b/keyboards/keyhive/maypad/info.json
@@ -9,7 +9,7 @@
"layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":3, "h":2}]
},
"LAYOUT_ortho_5x4": {
- "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Enter", "x":3, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}]
+ "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Enter", "x":3, "y":3}, {"label":"0", "x":0, "y":4}, {"label":"00", "x":1, "y":4}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}]
}
}
diff --git a/keyboards/kudox/config.h b/keyboards/kudox/config.h
new file mode 100644
index 00000000000..36c8f68b90f
--- /dev/null
+++ b/keyboards/kudox/config.h
@@ -0,0 +1,27 @@
+/* Copyright 2019 Kumao Kobo
+ *
+ * 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"
+
+#define USE_SERIAL
+
+/* Select hand configuration */
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
diff --git a/keyboards/kudox/info.json b/keyboards/kudox/info.json
new file mode 100644
index 00000000000..842fb655c6a
--- /dev/null
+++ b/keyboards/kudox/info.json
@@ -0,0 +1,77 @@
+{
+ "keyboard_name": "Kudox Keyboard",
+ "url": "",
+ "maintainer": "Kumao Kobo",
+ "width": 17,
+ "height": 6,
+ "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":11, "y":0},
+ {"label":"7", "x":12, "y":0},
+ {"label":"8", "x":13, "y":0},
+ {"label":"9", "x":14, "y":0},
+ {"label":"0", "x":15, "y":0},
+ {"label":"\u2190", "x":16, "y":0},
+ {"label":"Tab", "x":0, "y":1, "w":1.25},
+ {"label":"Q", "x":1.25, "y":1},
+ {"label":"W", "x":2.25, "y":1},
+ {"label":"E", "x":3.25, "y":1},
+ {"label":"R", "x":4.25, "y":1},
+ {"label":"T", "x":5.25, "y":1},
+ {"label":"LANG2", "x":6.25, "y":1},
+ {"label":"Y", "x":9.75, "y":1},
+ {"label":"U", "x":10.75, "y":1},
+ {"label":"I", "x":11.75, "y":1},
+ {"label":"O", "x":12.75, "y":1},
+ {"label":"P", "x":13.75, "y":1},
+ {"label":"/", "x":14.75, "y":1},
+ {"label":"\\", "x":15.75, "y":1, "w":1.25},
+ {"label":"Ctrl", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":10.25, "y":2},
+ {"label":"J", "x":11.25, "y":2},
+ {"label":"K", "x":12.25, "y":2},
+ {"label":"L", "x":13.25, "y":2},
+ {"label":";", "x":14.25, "y":2},
+ {"label":"Enter", "x":15.25, "y":2, "w":1.75},
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"LANG1", "x":9.75, "y":3},
+ {"label":"N", "x":10.75, "y":3},
+ {"label":"M", "x":11.75, "y":3},
+ {"label":",", "x":12.75, "y":3},
+ {"label":".", "x":13.75, "y":3},
+ {"label":"Shift", "x":14.75, "y":3, "w":2.25},
+ {"label":"Alt", "x":0, "y":4, "w":1.25},
+ {"label":"'", "x":1.25, "y":4},
+ {"label":"-", "x":2.25, "y":4},
+ {"label":"=", "x":3.25, "y":4},
+ {"label":"layer", "x":4.25, "y":4.33, "w":1.25},
+ {"label":"GUI", "x":5.5, "y":4.67},
+ {"label":"Space", "x":6.5, "y":5},
+ {"label":"Enter", "x":9.5, "y":5},
+ {"label":"Del", "x":10.5, "y":4.67},
+ {"label":"layer", "x":11.5, "y":4.33, "w":1.25},
+ {"label":"\u2190", "x":12.75, "y":4},
+ {"label":"\u2193", "x":13.75, "y":4},
+ {"label":"\u2191", "x":14.75, "y":4},
+ {"label":"\u2192", "x":15.75, "y":4, "w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kudox/keymaps/default/config.h b/keyboards/kudox/keymaps/default/config.h
new file mode 100644
index 00000000000..f5bf85cca0a
--- /dev/null
+++ b/keyboards/kudox/keymaps/default/config.h
@@ -0,0 +1,17 @@
+/* Copyright 2019 Kumao Kobo
+ *
+ * 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
diff --git a/keyboards/kudox/keymaps/default/keymap.c b/keyboards/kudox/keymaps/default/keymap.c
new file mode 100644
index 00000000000..9078b65c1eb
--- /dev/null
+++ b/keyboards/kudox/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+#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
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+
+#define KC_ALES LALT_T(KC_ESC)
+
+#define KC_RGENT MT(KC_RGUI, KC_ENT)
+
+#define KC_L1SYM LT(_SYMB, KC_LANG1)
+#define KC_L2SYM LT(_SYMB, KC_LANG2)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_ESC ,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_L2SYM, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_L1SYM,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_QUOT ,KC_MINS ,KC_EQL ,KC_ENT ,KC_LGUI ,KC_SPC , KC_RGENT,KC_DEL ,SYM_L ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+//KC_EQL
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_JYEN ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_DOT ,KC_SLSH , _______ ,KC_LCBR ,KC_RCBR ,KC_DOT ,KC_SLSH ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_CIRC ,KC_GT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+};
diff --git a/keyboards/kudox/keymaps/default/readme.md b/keyboards/kudox/keymaps/default/readme.md
new file mode 100644
index 00000000000..98d8b2a054a
--- /dev/null
+++ b/keyboards/kudox/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Kudox Keyboard
diff --git a/keyboards/unikorn/keymaps/default/rules.mk b/keyboards/kudox/keymaps/default/rules.mk
similarity index 100%
rename from keyboards/unikorn/keymaps/default/rules.mk
rename to keyboards/kudox/keymaps/default/rules.mk
diff --git a/keyboards/kudox/keymaps/x1/config.h b/keyboards/kudox/keymaps/x1/config.h
new file mode 100644
index 00000000000..f5bf85cca0a
--- /dev/null
+++ b/keyboards/kudox/keymaps/x1/config.h
@@ -0,0 +1,17 @@
+/* Copyright 2019 Kumao Kobo
+ *
+ * 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
diff --git a/keyboards/kudox/keymaps/x1/keymap.c b/keyboards/kudox/keymaps/x1/keymap.c
new file mode 100644
index 00000000000..42f507ddfbe
--- /dev/null
+++ b/keyboards/kudox/keymaps/x1/keymap.c
@@ -0,0 +1,73 @@
+#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 _NUMB 2
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+#define NUM_L MO(_NUMB)
+
+#define KC_ALES LALT_T(KC_ESC)
+
+#define KC_RGENT MT(KC_RGUI, KC_ENT)
+#define KC_LGUI2 RALT_T(KC_LANG2)
+
+#define KC_L1SYM LT(_SYMB, KC_LANG1)
+#define KC_L2SYM LT(_SYMB, KC_LANG2)
+
+#define KC_L1NUM LT(_NUMB, KC_LANG1)
+#define KC_ENNUM LT(_NUMB, KC_ENT)
+
+#define KC_FSYM LT(_SYMB, KC_F)
+#define KC_JNUM LT(_NUMB, KC_J)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_ESC ,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_L2SYM, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_FSYM ,KC_G , KC_H ,KC_JNUM ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_L1NUM,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_QUOT ,KC_MINS ,KC_EQL ,KC_ENNUM,KC_LGUI ,KC_SPC , KC_RGENT,KC_DEL ,SYM_L ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+//KC_EQL
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_JYEN ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_DOT ,KC_SLSH , _______ ,KC_LCBR ,KC_RCBR ,KC_DOT ,KC_SLSH ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_CIRC ,KC_GT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_NUMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GRV ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_7 ,KC_8 ,KC_9 ,KC_ASTR ,KC_PLUS ,KC_EQL , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_4 ,KC_5 ,KC_6 ,KC_0 ,KC_MINS , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_1 ,KC_2 ,KC_3 ,KC_DOT ,KC_SLSH , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,KC_JYEN ,KC_0 ,_______ ,_______ ,_______ ,_______ , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+
+};
diff --git a/keyboards/kudox/keymaps/x1/readme.md b/keyboards/kudox/keymaps/x1/readme.md
new file mode 100644
index 00000000000..1085735afc5
--- /dev/null
+++ b/keyboards/kudox/keymaps/x1/readme.md
@@ -0,0 +1 @@
+# [x1](https://github.com/x1-) 's keymap for Kudox Keyboard
diff --git a/keyboards/business_card/info.json b/keyboards/kudox/keymaps/x1/rules.mk
similarity index 100%
rename from keyboards/business_card/info.json
rename to keyboards/kudox/keymaps/x1/rules.mk
diff --git a/keyboards/kudox/kudox.c b/keyboards/kudox/kudox.c
new file mode 100644
index 00000000000..d7643747ad7
--- /dev/null
+++ b/keyboards/kudox/kudox.c
@@ -0,0 +1,16 @@
+/* Copyright 2019 Kumao Kobo
+ *
+ * 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 "kudox.h"
diff --git a/keyboards/kudox/kudox.h b/keyboards/kudox/kudox.h
new file mode 100644
index 00000000000..8ff75559d1f
--- /dev/null
+++ b/keyboards/kudox/kudox.h
@@ -0,0 +1,23 @@
+/* Copyright 2019 Kumao Kobo
+ *
+ * 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
+
+#ifdef KEYBOARD_kudox_rev1
+ #include "rev1.h"
+#endif
+
+#include "quantum.h"
diff --git a/keyboards/kudox/readme.md b/keyboards/kudox/readme.md
new file mode 100644
index 00000000000..42e1ed93720
--- /dev/null
+++ b/keyboards/kudox/readme.md
@@ -0,0 +1,26 @@
+# The Kudox keyboard
+
+
+
+
+
+
+
+
+
+- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
+- Hardware Supported: Kudox PCB rev1.0 w/ Pro Micro
+
+Make example for this keyboard (after setting up your build environment):
+
+```sh
+make kudox/rev1:default
+```
+
+Example of flashing this keyboard:
+
+```sh
+make kudox/rev1: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).
diff --git a/keyboards/kudox/rev1/config.h b/keyboards/kudox/rev1/config.h
new file mode 100644
index 00000000000..b57b6b7acbb
--- /dev/null
+++ b/keyboards/kudox/rev1/config.h
@@ -0,0 +1,91 @@
+/* Copyright 2019 Kumao Kobo
+ *
+ * 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 0x9690
+#define DEVICE_VER 0x0100
+#define MANUFACTURER Kumao Kobo
+#define PRODUCT The Kudox Keyboard
+#define DESCRIPTION Split row staggered 5x7 custom keyboard
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D4, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
+// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5} //uncomment this line and comment line above if you need to reverse left-to-right key order
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* 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
+
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D0
+
+/* 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
+
+#undef RGBLED_NUM
+#define RGBLED_NUM 14 // Number of LEDs
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+/*
+ * 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
+
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_WHEEL_DELAY 0
diff --git a/keyboards/kudox/rev1/rev1.c b/keyboards/kudox/rev1/rev1.c
new file mode 100644
index 00000000000..3b39ee764d4
--- /dev/null
+++ b/keyboards/kudox/rev1/rev1.c
@@ -0,0 +1,22 @@
+#include "kudox.h"
+
+
+#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);
+}
+#endif
+
+void matrix_init_kb(void) {
+
+ // // green led on
+ // DDRD |= (1<<5);
+ // PORTD &= ~(1<<5);
+
+ // // orange led on
+ // DDRB |= (1<<0);
+ // PORTB &= ~(1<<0);
+
+ matrix_init_user();
+};
diff --git a/keyboards/kudox/rev1/rev1.h b/keyboards/kudox/rev1/rev1.h
new file mode 100644
index 00000000000..7a97cce6993
--- /dev/null
+++ b/keyboards/kudox/rev1/rev1.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "kudox.h"
+#include "quantum.h"
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, R00, \
+ L10, L11, L12, L13, L14, L15, L16, R16, R15, R14, R13, R12, R11, R10, \
+ L20, L21, L22, L23, L24, L25, R25, R24, R23, R22, R21, R20, \
+ L30, L31, L32, L33, L34, L35, R35, R34, R33, R32, R31, R30, \
+ L40, L41, L42, L43, L44, L45, L46, R46, R45, R44, R43, R42, R41, R40 \
+) \
+{ \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, R43, R44, R45, R46 } \
+}
diff --git a/keyboards/kudox/rev1/rules.mk b/keyboards/kudox/rev1/rules.mk
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/keyboards/kudox/rules.mk b/keyboards/kudox/rules.mk
new file mode 100644
index 00000000000..ca954bec3bd
--- /dev/null
+++ b/keyboards/kudox/rules.mk
@@ -0,0 +1,73 @@
+# 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
+BOOTLOADER = caterina
+
+
+# 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 = no # 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 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
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+
+SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = kudox/rev1
diff --git a/keyboards/kudox_game/config.h b/keyboards/kudox_game/config.h
new file mode 100644
index 00000000000..0b789c17681
--- /dev/null
+++ b/keyboards/kudox_game/config.h
@@ -0,0 +1,27 @@
+/*
+Copyright 2019 Kumao Kobo
+
+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"
+
+#define USE_SERIAL
+
+/* Select hand configuration */
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
diff --git a/keyboards/kudox_game/info.json b/keyboards/kudox_game/info.json
new file mode 100644
index 00000000000..42932601a9a
--- /dev/null
+++ b/keyboards/kudox_game/info.json
@@ -0,0 +1,39 @@
+{
+ "keyboard_name": "Kudox Game Keyboard",
+ "url": "",
+ "maintainer": "Kumao Kobo",
+ "width": 7.5,
+ "height": 6.75,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1", "x":1.5, "y":0},
+ {"label":"2", "x":2.5, "y":0},
+ {"label":"3", "x":3.5, "y":0},
+ {"label":"4", "x":4.5, "y":0},
+ {"label":"5", "x":5.5, "y":0},
+ {"label":"Q", "x":1.75, "y":1},
+ {"label":"W", "x":2.75, "y":1},
+ {"label":"E", "x":3.75, "y":1},
+ {"label":"R", "x":4.75, "y":1},
+ {"label":"T", "x":5.75, "y":1},
+ {"label":"GUI", "x":0, "y":2},
+ {"label":"Alt", "x":1, "y":2},
+ {"label":"A", "x":2, "y":2},
+ {"label":"S", "x":3, "y":2},
+ {"label":"D", "x":4, "y":2},
+ {"label":"F", "x":5.25, "y":2},
+ {"label":"G", "x":6.25, "y":2},
+ {"label":"Shift", "x":0, "y":3, "w":1.5},
+ {"label":"Z", "x":1.5, "y":3},
+ {"label":"X", "x":3.75, "y":3},
+ {"label":"C", "x":4.75, "y":3},
+ {"label":"V", "x":5.75, "y":3},
+ {"label":"Ctrl", "x":0, "y":4, "w":1.5},
+ {"label":"Layer", "x":5.5, "y":4.25, "h":1.5},
+ {"x":6.5, "y":4.75, "h":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kudox_game/keymaps/default/config.h b/keyboards/kudox_game/keymaps/default/config.h
new file mode 100644
index 00000000000..5cbe7609a3f
--- /dev/null
+++ b/keyboards/kudox_game/keymaps/default/config.h
@@ -0,0 +1,18 @@
+/*
+Copyright 2019 Kumao Kobo
+
+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
diff --git a/keyboards/kudox_game/keymaps/default/keymap.c b/keyboards/kudox_game/keymaps/default/keymap.c
new file mode 100644
index 00000000000..cf6b1dfc505
--- /dev/null
+++ b/keyboards/kudox_game/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+#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
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+#define KC_ALEN LALT_T(KC_ENT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
+ //└────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
+ //┌────────┼────────┼────────┼────────┼────────┼────────┼────────┐
+ KC_LGUI ,KC_ALEN ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,
+ //├────────┼────────┘ └────────┴────────┼────────┼────────┐
+ KC_LCTL ,SYM_L ,KC_SPC
+ //└────────┘ └────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐
+ _______ ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,
+ //└────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_GRV ,KC_UP ,KC_PIPE ,KC_LCBR ,KC_RCBR ,
+ //┌────────┼────────┼────────┼────────┼────────┼────────┼────────┐
+ _______ ,_______ ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_LBRC ,KC_RBRC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐
+ _______ ,KC_BSPC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,
+ //├────────┼────────┘ └────────┴────────┼────────┼────────┐
+ _______ ,_______ ,_______
+ //└────────┘ └────────┴────────┘
+ )
+
+};
diff --git a/keyboards/kudox_game/keymaps/default/readme.md b/keyboards/kudox_game/keymaps/default/readme.md
new file mode 100644
index 00000000000..0fbdb86a940
--- /dev/null
+++ b/keyboards/kudox_game/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Kudox Game Keyboard
diff --git a/keyboards/kudox_game/keymaps/default/rules.mk b/keyboards/kudox_game/keymaps/default/rules.mk
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/keyboards/kudox_game/kudox_game.c b/keyboards/kudox_game/kudox_game.c
new file mode 100644
index 00000000000..cf053afd060
--- /dev/null
+++ b/keyboards/kudox_game/kudox_game.c
@@ -0,0 +1,16 @@
+/* Copyright 2019 Kumao Kobo
+ *
+ * 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 "kudox_game.h"
diff --git a/keyboards/kudox_game/kudox_game.h b/keyboards/kudox_game/kudox_game.h
new file mode 100644
index 00000000000..1da820fc270
--- /dev/null
+++ b/keyboards/kudox_game/kudox_game.h
@@ -0,0 +1,23 @@
+/* Copyright 2019 Kumao Kobo
+ *
+ * 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
+
+#ifdef KEYBOARD_kudox_game_rev1
+ #include "rev1.h"
+#endif
+
+#include "quantum.h"
diff --git a/keyboards/kudox_game/readme.md b/keyboards/kudox_game/readme.md
new file mode 100644
index 00000000000..5ad867790b0
--- /dev/null
+++ b/keyboards/kudox_game/readme.md
@@ -0,0 +1,26 @@
+# The Kudox Game keyboard
+
+
+
+
+
+
+
+
+
+- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
+- Hardware Supported: Kudox Game PCB rev1.0 w/ Pro Micro
+
+Make example for this keyboard (after setting up your build environment):
+
+```sh
+make kudox_game/rev1:default
+```
+
+Example of flashing this keyboard:
+
+```sh
+make kudox_game/rev1: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).
diff --git a/keyboards/kudox_game/rev1/config.h b/keyboards/kudox_game/rev1/config.h
new file mode 100644
index 00000000000..e7f7ad1b626
--- /dev/null
+++ b/keyboards/kudox_game/rev1/config.h
@@ -0,0 +1,91 @@
+/*
+Copyright 2019 Kumao Kobo
+
+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 0x9696
+#define DEVICE_VER 0x0100
+#define MANUFACTURER Kumao Kobo
+#define PRODUCT The Kudox Game Keyboard
+#define DESCRIPTION Custom keyboard for game
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 7
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D4, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
+// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5} //uncomment this line and comment line above if you need to reverse left-to-right key order
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* 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
+
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D0
+
+/* 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
+
+#undef RGBLED_NUM
+#define RGBLED_NUM 7 // Number of LEDs
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+/*
+ * 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
+
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_WHEEL_DELAY 0
diff --git a/keyboards/kudox_game/rev1/rev1.c b/keyboards/kudox_game/rev1/rev1.c
new file mode 100644
index 00000000000..8f1b8b2b681
--- /dev/null
+++ b/keyboards/kudox_game/rev1/rev1.c
@@ -0,0 +1,22 @@
+#include "kudox_game.h"
+
+
+#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);
+}
+#endif
+
+void matrix_init_kb(void) {
+
+ // // green led on
+ // DDRD |= (1<<5);
+ // PORTD &= ~(1<<5);
+
+ // // orange led on
+ // DDRB |= (1<<0);
+ // PORTB &= ~(1<<0);
+
+ matrix_init_user();
+};
diff --git a/keyboards/kudox_game/rev1/rev1.h b/keyboards/kudox_game/rev1/rev1.h
new file mode 100644
index 00000000000..e630a51658d
--- /dev/null
+++ b/keyboards/kudox_game/rev1/rev1.h
@@ -0,0 +1,20 @@
+#pragma once
+
+#include "../kudox_game.h"
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, \
+ k11, k12, k13, k14, k15, \
+ k20, k21, k22, k23, k24, k25, k26, \
+ k30, k31, k34, k35, k36, \
+ k40, k45, k46 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, KC_NO }, \
+ { KC_NO, k11, k12, k13, k14, k15, KC_NO }, \
+ { k20, k21, k22, k23, k24, k25, k26 }, \
+ { k30, k31, KC_NO, KC_NO, k34, k35, k36 }, \
+ { k40, KC_NO, KC_NO, KC_NO, KC_NO, k45, k46 } \
+}
diff --git a/keyboards/kudox_game/rev1/rules.mk b/keyboards/kudox_game/rev1/rules.mk
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/keyboards/kudox_game/rules.mk b/keyboards/kudox_game/rules.mk
new file mode 100644
index 00000000000..d564eddf902
--- /dev/null
+++ b/keyboards/kudox_game/rules.mk
@@ -0,0 +1,70 @@
+# 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
+BOOTLOADER = caterina
+
+# 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 = no # 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 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
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+
+DEFAULT_FOLDER = kudox_game/rev1
diff --git a/keyboards/lets_split/keymaps/zer09/config.h b/keyboards/lets_split/keymaps/zer09/config.h
index 14be4ccc59b..3990c3dc5bf 100644
--- a/keyboards/lets_split/keymaps/zer09/config.h
+++ b/keyboards/lets_split/keymaps/zer09/config.h
@@ -35,7 +35,6 @@ along with this program. If not, see .
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F7, B1, B3, B2, B6 }
-#define CATERINA_BOOTLOADER
#define USB_MAX_POWER_CONSUMPTION 50
/* Use I2C or Serial, not both */
diff --git a/keyboards/lets_split/rules.mk b/keyboards/lets_split/rules.mk
index f9d1a0dadb4..4899657357f 100644
--- a/keyboards/lets_split/rules.mk
+++ b/keyboards/lets_split/rules.mk
@@ -33,10 +33,13 @@ ARCH = AVR8
# 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
BOOTLOADER = caterina
# Interrupt driven control endpoint task(+60)
diff --git a/keyboards/lily58/rev1/config.h b/keyboards/lily58/rev1/config.h
index 8fd42070e02..4e8e3a7c9cd 100644
--- a/keyboards/lily58/rev1/config.h
+++ b/keyboards/lily58/rev1/config.h
@@ -36,8 +36,6 @@ along with this program. If not, see .
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
-#define CATERINA_BOOTLOADER
-
/* define tapping term */
#define TAPPING_TERM 100
@@ -72,4 +70,4 @@ along with this program. If not, see .
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
\ No newline at end of file
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/lily58/rules.mk b/keyboards/lily58/rules.mk
index 0ef951872ee..d13c88ba695 100644
--- a/keyboards/lily58/rules.mk
+++ b/keyboards/lily58/rules.mk
@@ -40,10 +40,13 @@ ARCH = AVR8
# 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
BOOTLOADER = caterina
# Interrupt driven control endpoint task(+60)
diff --git a/keyboards/atom47/keymaps/LEdiodes/keymap.c b/keyboards/maartenwut/atom47/keymaps/LEdiodes/keymap.c
similarity index 100%
rename from keyboards/atom47/keymaps/LEdiodes/keymap.c
rename to keyboards/maartenwut/atom47/keymaps/LEdiodes/keymap.c
diff --git a/keyboards/atom47/keymaps/LEdiodes/rules.mk b/keyboards/maartenwut/atom47/keymaps/LEdiodes/rules.mk
similarity index 100%
rename from keyboards/atom47/keymaps/LEdiodes/rules.mk
rename to keyboards/maartenwut/atom47/keymaps/LEdiodes/rules.mk
diff --git a/keyboards/atom47/keymaps/default/keymap.c b/keyboards/maartenwut/atom47/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/atom47/keymaps/default/keymap.c
rename to keyboards/maartenwut/atom47/keymaps/default/keymap.c
diff --git a/keyboards/atom47/keymaps/default/readme.md b/keyboards/maartenwut/atom47/keymaps/default/readme.md
similarity index 100%
rename from keyboards/atom47/keymaps/default/readme.md
rename to keyboards/maartenwut/atom47/keymaps/default/readme.md
diff --git a/keyboards/atom47/keymaps/maartenwut/keymap.c b/keyboards/maartenwut/atom47/keymaps/maartenwut/keymap.c
similarity index 100%
rename from keyboards/atom47/keymaps/maartenwut/keymap.c
rename to keyboards/maartenwut/atom47/keymaps/maartenwut/keymap.c
diff --git a/keyboards/atom47/keymaps/maartenwut/readme.md b/keyboards/maartenwut/atom47/keymaps/maartenwut/readme.md
similarity index 100%
rename from keyboards/atom47/keymaps/maartenwut/readme.md
rename to keyboards/maartenwut/atom47/keymaps/maartenwut/readme.md
diff --git a/keyboards/atom47/readme.md b/keyboards/maartenwut/atom47/readme.md
similarity index 100%
rename from keyboards/atom47/readme.md
rename to keyboards/maartenwut/atom47/readme.md
diff --git a/keyboards/atom47/rev2/config.h b/keyboards/maartenwut/atom47/rev2/config.h
similarity index 100%
rename from keyboards/atom47/rev2/config.h
rename to keyboards/maartenwut/atom47/rev2/config.h
diff --git a/keyboards/atom47/rev2/info.json b/keyboards/maartenwut/atom47/rev2/info.json
similarity index 100%
rename from keyboards/atom47/rev2/info.json
rename to keyboards/maartenwut/atom47/rev2/info.json
diff --git a/keyboards/atom47/rev2/readme.md b/keyboards/maartenwut/atom47/rev2/readme.md
similarity index 100%
rename from keyboards/atom47/rev2/readme.md
rename to keyboards/maartenwut/atom47/rev2/readme.md
diff --git a/keyboards/atom47/rev2/rev2.c b/keyboards/maartenwut/atom47/rev2/rev2.c
similarity index 100%
rename from keyboards/atom47/rev2/rev2.c
rename to keyboards/maartenwut/atom47/rev2/rev2.c
diff --git a/keyboards/atom47/rev2/rev2.h b/keyboards/maartenwut/atom47/rev2/rev2.h
similarity index 100%
rename from keyboards/atom47/rev2/rev2.h
rename to keyboards/maartenwut/atom47/rev2/rev2.h
diff --git a/keyboards/atom47/rev2/rules.mk b/keyboards/maartenwut/atom47/rev2/rules.mk
similarity index 100%
rename from keyboards/atom47/rev2/rules.mk
rename to keyboards/maartenwut/atom47/rev2/rules.mk
diff --git a/keyboards/atom47/rev3/config.h b/keyboards/maartenwut/atom47/rev3/config.h
similarity index 100%
rename from keyboards/atom47/rev3/config.h
rename to keyboards/maartenwut/atom47/rev3/config.h
diff --git a/keyboards/atom47/rev3/info.json b/keyboards/maartenwut/atom47/rev3/info.json
similarity index 100%
rename from keyboards/atom47/rev3/info.json
rename to keyboards/maartenwut/atom47/rev3/info.json
diff --git a/keyboards/atom47/rev3/rev3.c b/keyboards/maartenwut/atom47/rev3/rev3.c
similarity index 100%
rename from keyboards/atom47/rev3/rev3.c
rename to keyboards/maartenwut/atom47/rev3/rev3.c
diff --git a/keyboards/atom47/rev3/rev3.h b/keyboards/maartenwut/atom47/rev3/rev3.h
similarity index 100%
rename from keyboards/atom47/rev3/rev3.h
rename to keyboards/maartenwut/atom47/rev3/rev3.h
diff --git a/keyboards/atom47/rev3/rules.mk b/keyboards/maartenwut/atom47/rev3/rules.mk
similarity index 100%
rename from keyboards/atom47/rev3/rules.mk
rename to keyboards/maartenwut/atom47/rev3/rules.mk
diff --git a/keyboards/atom47/rules.mk b/keyboards/maartenwut/atom47/rules.mk
similarity index 100%
rename from keyboards/atom47/rules.mk
rename to keyboards/maartenwut/atom47/rules.mk
diff --git a/keyboards/plain60/config.h b/keyboards/maartenwut/plain60/config.h
similarity index 100%
rename from keyboards/plain60/config.h
rename to keyboards/maartenwut/plain60/config.h
diff --git a/keyboards/plain60/info.json b/keyboards/maartenwut/plain60/info.json
similarity index 100%
rename from keyboards/plain60/info.json
rename to keyboards/maartenwut/plain60/info.json
diff --git a/keyboards/plain60/keymaps/RGB/config.h b/keyboards/maartenwut/plain60/keymaps/RGB/config.h
similarity index 100%
rename from keyboards/plain60/keymaps/RGB/config.h
rename to keyboards/maartenwut/plain60/keymaps/RGB/config.h
diff --git a/keyboards/plain60/keymaps/RGB/keymap.c b/keyboards/maartenwut/plain60/keymaps/RGB/keymap.c
similarity index 100%
rename from keyboards/plain60/keymaps/RGB/keymap.c
rename to keyboards/maartenwut/plain60/keymaps/RGB/keymap.c
diff --git a/keyboards/plain60/keymaps/RGB/rules.mk b/keyboards/maartenwut/plain60/keymaps/RGB/rules.mk
similarity index 100%
rename from keyboards/plain60/keymaps/RGB/rules.mk
rename to keyboards/maartenwut/plain60/keymaps/RGB/rules.mk
diff --git a/keyboards/plain60/keymaps/default/keymap.c b/keyboards/maartenwut/plain60/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/plain60/keymaps/default/keymap.c
rename to keyboards/maartenwut/plain60/keymaps/default/keymap.c
diff --git a/keyboards/plain60/keymaps/yanfali/keymap.c b/keyboards/maartenwut/plain60/keymaps/yanfali/keymap.c
similarity index 100%
rename from keyboards/plain60/keymaps/yanfali/keymap.c
rename to keyboards/maartenwut/plain60/keymaps/yanfali/keymap.c
diff --git a/keyboards/plain60/keymaps/yanfali/readme.md b/keyboards/maartenwut/plain60/keymaps/yanfali/readme.md
similarity index 100%
rename from keyboards/plain60/keymaps/yanfali/readme.md
rename to keyboards/maartenwut/plain60/keymaps/yanfali/readme.md
diff --git a/keyboards/plain60/keymaps/yanfali/rules.mk b/keyboards/maartenwut/plain60/keymaps/yanfali/rules.mk
similarity index 100%
rename from keyboards/plain60/keymaps/yanfali/rules.mk
rename to keyboards/maartenwut/plain60/keymaps/yanfali/rules.mk
diff --git a/keyboards/plain60/plain60.c b/keyboards/maartenwut/plain60/plain60.c
similarity index 100%
rename from keyboards/plain60/plain60.c
rename to keyboards/maartenwut/plain60/plain60.c
diff --git a/keyboards/plain60/plain60.h b/keyboards/maartenwut/plain60/plain60.h
similarity index 100%
rename from keyboards/plain60/plain60.h
rename to keyboards/maartenwut/plain60/plain60.h
diff --git a/keyboards/plain60/readme.md b/keyboards/maartenwut/plain60/readme.md
similarity index 100%
rename from keyboards/plain60/readme.md
rename to keyboards/maartenwut/plain60/readme.md
diff --git a/keyboards/plain60/rules.mk b/keyboards/maartenwut/plain60/rules.mk
similarity index 100%
rename from keyboards/plain60/rules.mk
rename to keyboards/maartenwut/plain60/rules.mk
diff --git a/keyboards/ta65/config.h b/keyboards/maartenwut/ta65/config.h
similarity index 100%
rename from keyboards/ta65/config.h
rename to keyboards/maartenwut/ta65/config.h
diff --git a/keyboards/ta65/info.json b/keyboards/maartenwut/ta65/info.json
similarity index 100%
rename from keyboards/ta65/info.json
rename to keyboards/maartenwut/ta65/info.json
diff --git a/keyboards/ta65/keymaps/default/keymap.c b/keyboards/maartenwut/ta65/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/ta65/keymaps/default/keymap.c
rename to keyboards/maartenwut/ta65/keymaps/default/keymap.c
diff --git a/keyboards/ta65/keymaps/default_ansi/keymap.c b/keyboards/maartenwut/ta65/keymaps/default_ansi/keymap.c
similarity index 100%
rename from keyboards/ta65/keymaps/default_ansi/keymap.c
rename to keyboards/maartenwut/ta65/keymaps/default_ansi/keymap.c
diff --git a/keyboards/ta65/keymaps/default_ansi_tsangan/keymap.c b/keyboards/maartenwut/ta65/keymaps/default_ansi_tsangan/keymap.c
similarity index 100%
rename from keyboards/ta65/keymaps/default_ansi_tsangan/keymap.c
rename to keyboards/maartenwut/ta65/keymaps/default_ansi_tsangan/keymap.c
diff --git a/keyboards/ta65/keymaps/default_iso/keymap.c b/keyboards/maartenwut/ta65/keymaps/default_iso/keymap.c
similarity index 100%
rename from keyboards/ta65/keymaps/default_iso/keymap.c
rename to keyboards/maartenwut/ta65/keymaps/default_iso/keymap.c
diff --git a/keyboards/ta65/keymaps/default_iso_tsangan/keymap.c b/keyboards/maartenwut/ta65/keymaps/default_iso_tsangan/keymap.c
similarity index 100%
rename from keyboards/ta65/keymaps/default_iso_tsangan/keymap.c
rename to keyboards/maartenwut/ta65/keymaps/default_iso_tsangan/keymap.c
diff --git a/keyboards/ta65/keymaps/maartenwut/config.h b/keyboards/maartenwut/ta65/keymaps/maartenwut/config.h
similarity index 100%
rename from keyboards/ta65/keymaps/maartenwut/config.h
rename to keyboards/maartenwut/ta65/keymaps/maartenwut/config.h
diff --git a/keyboards/ta65/keymaps/maartenwut/keymap.c b/keyboards/maartenwut/ta65/keymaps/maartenwut/keymap.c
similarity index 100%
rename from keyboards/ta65/keymaps/maartenwut/keymap.c
rename to keyboards/maartenwut/ta65/keymaps/maartenwut/keymap.c
diff --git a/keyboards/ta65/readme.md b/keyboards/maartenwut/ta65/readme.md
similarity index 100%
rename from keyboards/ta65/readme.md
rename to keyboards/maartenwut/ta65/readme.md
diff --git a/keyboards/ta65/rules.mk b/keyboards/maartenwut/ta65/rules.mk
similarity index 100%
rename from keyboards/ta65/rules.mk
rename to keyboards/maartenwut/ta65/rules.mk
diff --git a/keyboards/ta65/ta65.c b/keyboards/maartenwut/ta65/ta65.c
similarity index 100%
rename from keyboards/ta65/ta65.c
rename to keyboards/maartenwut/ta65/ta65.c
diff --git a/keyboards/ta65/ta65.h b/keyboards/maartenwut/ta65/ta65.h
similarity index 100%
rename from keyboards/ta65/ta65.h
rename to keyboards/maartenwut/ta65/ta65.h
diff --git a/keyboards/wasdat/config.h b/keyboards/maartenwut/wasdat/config.h
similarity index 100%
rename from keyboards/wasdat/config.h
rename to keyboards/maartenwut/wasdat/config.h
diff --git a/keyboards/wasdat/info.json b/keyboards/maartenwut/wasdat/info.json
similarity index 100%
rename from keyboards/wasdat/info.json
rename to keyboards/maartenwut/wasdat/info.json
diff --git a/keyboards/wasdat/keymaps/default/keymap.c b/keyboards/maartenwut/wasdat/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/wasdat/keymaps/default/keymap.c
rename to keyboards/maartenwut/wasdat/keymaps/default/keymap.c
diff --git a/keyboards/wasdat/keymaps/default/readme.md b/keyboards/maartenwut/wasdat/keymaps/default/readme.md
similarity index 100%
rename from keyboards/wasdat/keymaps/default/readme.md
rename to keyboards/maartenwut/wasdat/keymaps/default/readme.md
diff --git a/keyboards/wasdat/keymaps/default_iso/keymap.c b/keyboards/maartenwut/wasdat/keymaps/default_iso/keymap.c
similarity index 100%
rename from keyboards/wasdat/keymaps/default_iso/keymap.c
rename to keyboards/maartenwut/wasdat/keymaps/default_iso/keymap.c
diff --git a/keyboards/wasdat/keymaps/default_iso/readme.md b/keyboards/maartenwut/wasdat/keymaps/default_iso/readme.md
similarity index 100%
rename from keyboards/wasdat/keymaps/default_iso/readme.md
rename to keyboards/maartenwut/wasdat/keymaps/default_iso/readme.md
diff --git a/keyboards/wasdat/keymaps/konstantin/config.h b/keyboards/maartenwut/wasdat/keymaps/konstantin/config.h
similarity index 100%
rename from keyboards/wasdat/keymaps/konstantin/config.h
rename to keyboards/maartenwut/wasdat/keymaps/konstantin/config.h
diff --git a/keyboards/wasdat/keymaps/konstantin/keymap.c b/keyboards/maartenwut/wasdat/keymaps/konstantin/keymap.c
similarity index 100%
rename from keyboards/wasdat/keymaps/konstantin/keymap.c
rename to keyboards/maartenwut/wasdat/keymaps/konstantin/keymap.c
diff --git a/keyboards/maartenwut/wasdat/keymaps/konstantin/rules.mk b/keyboards/maartenwut/wasdat/keymaps/konstantin/rules.mk
new file mode 100644
index 00000000000..041d3211459
--- /dev/null
+++ b/keyboards/maartenwut/wasdat/keymaps/konstantin/rules.mk
@@ -0,0 +1,10 @@
+BACKLIGHT_ENABLE = no
+BOOTMAGIC_ENABLE = no
+COMMAND_ENABLE = yes
+CONSOLE_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+NKRO_ENABLE = yes
+SPACE_CADET_ENABLE = no
+TAP_DANCE_ENABLE = yes
+UNICODEMAP_ENABLE = yes
diff --git a/keyboards/wasdat/matrix.c b/keyboards/maartenwut/wasdat/matrix.c
similarity index 100%
rename from keyboards/wasdat/matrix.c
rename to keyboards/maartenwut/wasdat/matrix.c
diff --git a/keyboards/wasdat/readme.md b/keyboards/maartenwut/wasdat/readme.md
similarity index 100%
rename from keyboards/wasdat/readme.md
rename to keyboards/maartenwut/wasdat/readme.md
diff --git a/keyboards/wasdat/rules.mk b/keyboards/maartenwut/wasdat/rules.mk
similarity index 100%
rename from keyboards/wasdat/rules.mk
rename to keyboards/maartenwut/wasdat/rules.mk
diff --git a/keyboards/wasdat/wasdat.c b/keyboards/maartenwut/wasdat/wasdat.c
similarity index 100%
rename from keyboards/wasdat/wasdat.c
rename to keyboards/maartenwut/wasdat/wasdat.c
diff --git a/keyboards/wasdat/wasdat.h b/keyboards/maartenwut/wasdat/wasdat.h
similarity index 100%
rename from keyboards/wasdat/wasdat.h
rename to keyboards/maartenwut/wasdat/wasdat.h
diff --git a/keyboards/massdrop/ctrl/keymaps/default/keymap.c b/keyboards/massdrop/ctrl/keymaps/default/keymap.c
index 53c96d95d0e..39122ee49cc 100644
--- a/keyboards/massdrop/ctrl/keymaps/default/keymap.c
+++ b/keyboards/massdrop/ctrl/keymaps/default/keymap.c
@@ -102,11 +102,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch (rgb_matrix_get_flags()) {
case LED_FLAG_ALL: {
- rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER);
rgb_matrix_set_color_all(0, 0, 0);
}
break;
- case LED_FLAG_KEYLIGHT: {
+ case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: {
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
rgb_matrix_set_color_all(0, 0, 0);
}
diff --git a/keyboards/massdrop/ctrl/keymaps/xulkal/config.h b/keyboards/massdrop/ctrl/keymaps/xulkal/config.h
new file mode 100644
index 00000000000..a078fece0f7
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/xulkal/config.h
@@ -0,0 +1,23 @@
+/*
+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 RGB_MATRIX_TOG_LAYERS
diff --git a/keyboards/massdrop/ctrl/keymaps/xulkal/keymap.c b/keyboards/massdrop/ctrl/keymaps/xulkal/keymap.c
index 8b45b53ecb5..debfa3b478b 100644
--- a/keyboards/massdrop/ctrl/keymaps/xulkal/keymap.c
+++ b/keyboards/massdrop/ctrl/keymaps/xulkal/keymap.c
@@ -8,7 +8,6 @@ enum ctrl_keycodes {
DBG_MTRX, //DEBUG Toggle Matrix Prints
DBG_KBD, //DEBUG Toggle Keyboard Prints
DBG_MOU, //DEBUG Toggle Mouse Prints
- MD_BOOT, //Restart into bootloader after hold timeout
};
#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode
@@ -21,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, TD_BSPC, KC_INS, KC_HOME, 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, TD_DEL, KC_END, KC_PGDN, \
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_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TD_COMM, TD_DOT, KC_SLSH, KC_RSPC, KC_UP, \
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TD_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, \
KC_LCPO, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LOWER, KC_APP, KC_RCPC, KC_LEFT, KC_DOWN, KC_RGHT \
),
@@ -39,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \
_______, RGB_RMOD,RGB_MOD, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
- RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, MD_BOOT, QWERTY, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
+ RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, RESET, QWERTY, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
RGB_SPD, RGB_SAD, RGB_VAD, RGB_HUD, RGBRST, GAME, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
@@ -62,8 +61,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
bool process_record_keymap(uint16_t keycode, keyrecord_t *record)
{
- static uint16_t reset_timer;
-
switch (keycode) {
case U_T_AUTO:
if (record->event.pressed && MODS_SHIFT && MODS_CTRL)
@@ -89,12 +86,6 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record)
if (record->event.pressed)
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
return false;
- case MD_BOOT:
- if (record->event.pressed)
- reset_timer = timer_read() + 500;
- else if (timer_expired(reset_timer))
- reset_keyboard();
- return false;
}
return true;
diff --git a/keyboards/mechmini/v2/keymaps/wsturgiss/config.h b/keyboards/mechmini/v2/keymaps/wsturgiss/config.h
new file mode 100755
index 00000000000..262c423cc41
--- /dev/null
+++ b/keyboards/mechmini/v2/keymaps/wsturgiss/config.h
@@ -0,0 +1,11 @@
+/* tapdance */
+#define TAPPING_TERM 180
+
+/* space cadet stuff */
+#define LSPO_KEY KC_9
+#define RSPC_KEY KC_0
+#define DISABLE_SPACE_CADET_ROLLOVER
+
+/* leader stuff */
+#define LEADER_TIMEOUT 400
+#define LEADER_PER_KEY_TIMING 300
diff --git a/keyboards/mechmini/v2/keymaps/wsturgiss/keymap.c b/keyboards/mechmini/v2/keymaps/wsturgiss/keymap.c
new file mode 100644
index 00000000000..f6f10872041
--- /dev/null
+++ b/keyboards/mechmini/v2/keymaps/wsturgiss/keymap.c
@@ -0,0 +1,106 @@
+#include QMK_KEYBOARD_H
+
+#define base 0
+#define raise 1
+#define lower 2
+
+//Tap Dance Declarations
+enum {
+ TD_SEMI_QUOT = 0,
+ TD_COMM_MINUS = 1,
+ TD_DOT_EQUAL = 2,
+ TD_SLASH_BACKSLASH = 3
+};
+
+//Tap Dance Definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+ //Tap once for ;, twice for ' -not using this currently
+ [TD_SEMI_QUOT] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_QUOT),
+ //Tap once for , twice for -
+ [TD_COMM_MINUS] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_MINUS),
+ //Tap once for . twice for =
+ [TD_DOT_EQUAL] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_EQUAL),
+ //Tap once for / twice for '\'
+ [TD_SLASH_BACKSLASH] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS)
+};
+
+#define CTRL_ESC CTL_T(KC_ESC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [base] = LAYOUT_2u_space_ortho(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ CTRL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TD(1), TD(2), TD(3), KC_RSPC,
+ KC_LCTL, KC_LEAD, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_VOLD, KC_MPLY, KC_VOLU, KC_GRV),
+
+ [raise] = LAYOUT_2u_space_ortho(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_QUOT, _______,
+ _______, KC_HOME, KC_END, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MPRV, _______, KC_MNXT, EEP_RST),
+
+ [lower] = LAYOUT_2u_space_ortho(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, KC_4, KC_5, KC_6, KC_KP_PLUS, _______,
+ _______, RGB_SAI, RGB_SAD, RGB_HUI, RGB_HUD, _______, _______, KC_1, KC_2, KC_3, KC_KP_MINUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______)
+
+
+};
+
+//Leader maps
+
+
+LEADER_EXTERNS();
+
+void matrix_scan_user(void) {
+ LEADER_DICTIONARY() {
+ leading = false;
+ leader_end();
+
+ SEQ_ONE_KEY(KC_F) {
+ // Anything you can do in a macro.
+ SEND_STRING("QMK is awesome.");
+ }
+ //tableflip (LEADER - TF)
+ SEQ_TWO_KEYS(KC_T, KC_F) {
+ set_unicode_input_mode(UC_OSX);
+ send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
+ }
+ //screencap (LEADER - SC)
+ SEQ_TWO_KEYS(KC_S, KC_C) {
+ SEND_STRING(SS_LGUI(SS_LSFT(SS_TAP(X_4))));
+ }
+ //screencap (LEADER - TM)
+ SEQ_TWO_KEYS(KC_T, KC_M) {
+ set_unicode_input_mode(UC_OSX);
+ send_unicode_hex_string("2122");
+ }
+ /*
+ SEQ_THREE_KEYS(KC_D, KC_D, KC_S) {
+ SEND_STRING("https://start.duckduckgo.com"SS_TAP(X_ENTER));
+ }
+ */
+ }
+}
+
+//change colors and rgb modes on layer change
+uint32_t layer_state_set_user(uint32_t state) {
+ switch (biton32(state)) {
+ case raise:
+ rgblight_mode_noeeprom(1);
+ rgblight_setrgb(0xc7, 0x00, 0xf4);
+ break;
+ case lower:
+ rgblight_mode_noeeprom(1);
+ rgblight_setrgb(0x00, 0xa3, 0x0d);
+ break;
+ default: // for any other layers, or the default layer
+ rgblight_mode_noeeprom(5);
+ rgblight_setrgb(0xFF, 0xB6, 0x00);
+ break;
+ }
+ return state;
+};
+
diff --git a/keyboards/mechmini/v2/keymaps/wsturgiss/rules.mk b/keyboards/mechmini/v2/keymaps/wsturgiss/rules.mk
new file mode 100755
index 00000000000..a2c78f8db05
--- /dev/null
+++ b/keyboards/mechmini/v2/keymaps/wsturgiss/rules.mk
@@ -0,0 +1,11 @@
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+AUDIO_ENABLE = no
+RGBLIGHT_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+UNICODE_ENABLE = yes
+LEADER_ENABLE = yes
diff --git a/keyboards/meira/featherble/config.h b/keyboards/meira/featherble/config.h
index fb24c607953..5aa5c29503e 100644
--- a/keyboards/meira/featherble/config.h
+++ b/keyboards/meira/featherble/config.h
@@ -40,9 +40,6 @@ along with this program. If not, see .
#define B5_AUDIO
#define AUDIO_VOICES
-#define CATERINA_BOOTLOADER
-
-
// #define BACKLIGHT_PIN B7
// #define BACKLIGHT_BREATHING
//#define BACKLIGHT_LEVELS 3
diff --git a/keyboards/meira/promicro/config.h b/keyboards/meira/promicro/config.h
index 67e5ca06d18..22975f68c02 100644
--- a/keyboards/meira/promicro/config.h
+++ b/keyboards/meira/promicro/config.h
@@ -36,8 +36,6 @@ along with this program. If not, see .
#define LED_EN_PIN D2
#define UNUSED_PINS
-#define CATERINA_BOOTLOADER
-
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/meira/rules.mk b/keyboards/meira/rules.mk
index 2796335b6a9..7893e6556fc 100644
--- a/keyboards/meira/rules.mk
+++ b/keyboards/meira/rules.mk
@@ -32,15 +32,14 @@ BOOTLOADER = caterina
# 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
+BOOTLOADER = caterina
# Build Options
# change yes to no to disable
diff --git a/keyboards/meishi2/info.json b/keyboards/meishi2/info.json
index e69de29bb2d..11e18e9f478 100644
--- a/keyboards/meishi2/info.json
+++ b/keyboards/meishi2/info.json
@@ -0,0 +1,18 @@
+{
+ "keyboard_name": "meishi2",
+ "url": "",
+ "maintainer": "biacco42",
+ "width": 4,
+ "height": 1,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 4,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/melody96/config.h b/keyboards/melody96/config.h
index 201b1ad07f9..8ab88653f3f 100644
--- a/keyboards/melody96/config.h
+++ b/keyboards/melody96/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -46,5 +45,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/melody96/info.json b/keyboards/melody96/info.json
index e2a31c9f34a..f69ae267909 100644
--- a/keyboards/melody96/info.json
+++ b/keyboards/melody96/info.json
@@ -7,6 +7,12 @@
"layouts": {
"LAYOUT": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Scroll Lock", "x":14, "y":0}, {"label":"Pause", "x":15, "y":0}, {"label":"Insert", "x":16, "y":0}, {"label":"Home", "x":17, "y":0}, {"label":"PgUp", "x":18, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Num Lock", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"-", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"x":18, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}, {"x":18, "y":5}]
+ },
+ "LAYOUT_hotswap": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"Home", "x":13, "y":0}, {"label":"End", "x":14, "y":0}, {"label":"PgUp", "x":15, "y":0}, {"label":"PgDn", "x":16, "y":0}, {"label":"Media Play", "x":17, "y":0}, {"label":"Pause", "x":18, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Num Lock", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"-", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"+", "x":18, "y":2, "h":2}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"Up", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"GUI", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"label":"Space", "x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"Left", "x":13, "y":5}, {"label":"Down", "x":14, "y":5}, {"label":"Right", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}, {"label":"Enter", "x":18, "y":4, "h":2}]
+ },
+ "LAYOUT_std60_split_num0": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Home", "x":14, "y":0}, {"label":"End", "x":15, "y":0}, {"label":"PgUp", "x":16, "y":0}, {"label":"PgDn", "x":17, "y":0}, {"label":"Delete", "x":18, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Num Lock", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"-", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"+", "x":18, "y":2, "h":2}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":2.75}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"GUI", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"label":"Space", "x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.25}, {"label":"Fn", "x":11.25, "y":5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5, "w":1.25}, {"label":"0", "x":15, "y":5}, {"label":"00", "x":16, "y":5}, {"label":".", "x":17, "y":5}, {"label":"Enter", "x":18, "y":4, "h":2}]
}
}
-}
\ No newline at end of file
+}
diff --git a/keyboards/melody96/keymaps/default_std60_split_num0/keymap.c b/keyboards/melody96/keymaps/default_std60_split_num0/keymap.c
new file mode 100644
index 00000000000..25881d3f80e
--- /dev/null
+++ b/keyboards/melody96/keymaps/default_std60_split_num0/keymap.c
@@ -0,0 +1,40 @@
+#include QMK_KEYBOARD_H
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ KC_P00 = SAFE_RANGE
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_std60_split_num0(
+ 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_HOME, KC_END, KC_PGUP, KC_PGDN, KC_DEL,
+ 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_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_P0, KC_P00, KC_PDOT, KC_PENT
+ ),
+
+ [0] = LAYOUT_std60_split_num0(
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_P00:
+ if (record->event.pressed) {
+ SEND_STRING("00");
+ }
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/melody96/keymaps/default_std60_split_num0/readme.md b/keyboards/melody96/keymaps/default_std60_split_num0/readme.md
new file mode 100644
index 00000000000..d20a179aa94
--- /dev/null
+++ b/keyboards/melody96/keymaps/default_std60_split_num0/readme.md
@@ -0,0 +1,39 @@
+# default_std60_split_num0
+
+A modified default keymap for use with the LAYOUT_std60_split_num0 macro.
+
+## Base Layer
+
+```
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+│Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Prt│Hm │End│PUp│PDn│Del│
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┼───┼───┼───┤
+│` ~│1 !│2 @│3 #│4 $│5 %│6 ^│7 &│8 *│9 (│0 )│- _│= +│ Bksp │NLk│ / │ * │ - │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┼───┼───┼───┤
+│ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │[ {│] }│ \ | │7 │8 │9 │ + │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤ │
+│CapsLk│ A │ S │ D │ F │ G │ H │ J │ K │ L │; :│' "│ Enter │4 │5 │6 │ │
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┼───┼───┼───┼───┤
+│ Shift │ Z │ X │ C │ V │ B │ N │ M │, <│. >│/ ?│ Shift │1 │2 │3 │Ent│
+├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┼───┼───┼───┤ │
+│Ctrl│GUI │Alt │Space │Alt │Fn │Menu│Ctrl│0 │00 │ . │ │
+└────┴────┴────┴────────────────────────┴────┴────┴────┴────┴───┴───┴───┴───┘
+```
+
+## Function Layer
+
+```
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+│RST│ │ │ │ │ │ │ │ │ │ │ │ │Mut│VDn│VUp│ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┼───┼───┼───┤
+│ │RTg│ │RMd│RH+│RH-│RS+│RS-│RV+│RV-│ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤ │
+│BLTogg│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┼───┼───┼───┼───┤
+│ │ │ │BL-│BTg│BL+│ │ │ │ │ │ │ │ │ │ │
+├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┼───┼───┼───┤ │
+│ │ │ │ │ │ │ │ │ │ │ │ │
+└────┴────┴────┴────────────────────────┴────┴────┴────┴────┴───┴───┴───┴───┘
+```
diff --git a/keyboards/melody96/keymaps/konstantin/keymap.c b/keyboards/melody96/keymaps/konstantin/keymap.c
index c2b0431047b..e02ba0f85ec 100644
--- a/keyboards/melody96/keymaps/konstantin/keymap.c
+++ b/keyboards/melody96/keymaps/konstantin/keymap.c
@@ -1,7 +1,7 @@
#include QMK_KEYBOARD_H
#include "konstantin.h"
-static const HSV *colors[] = { &GODSPEED_BLUE, &GODSPEED_YELLOW };
+static const HSV *colors[] = { &godspeed_blue, &godspeed_yellow };
static const size_t cnum = sizeof colors / sizeof *colors;
static size_t cidx = 0;
diff --git a/keyboards/melody96/keymaps/konstantin/rules.mk b/keyboards/melody96/keymaps/konstantin/rules.mk
index 47a859d0891..995402cb053 100644
--- a/keyboards/melody96/keymaps/konstantin/rules.mk
+++ b/keyboards/melody96/keymaps/konstantin/rules.mk
@@ -1,10 +1,11 @@
-BOOTMAGIC_ENABLE = no
-COMMAND_ENABLE = yes
-CONSOLE_ENABLE = no
-EXTRAKEY_ENABLE = yes
-MOUSEKEY_ENABLE = yes
-NKRO_ENABLE = yes
-TAP_DANCE_ENABLE = yes
-UNICODEMAP_ENABLE = yes
-
-BACKLIGHT_ENABLE = no
+BACKLIGHT_ENABLE = no
+BOOTMAGIC_ENABLE = no
+COMMAND_ENABLE = yes
+CONSOLE_ENABLE = no
+EXTRAKEY_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+NKRO_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+SPACE_CADET_ENABLE = no
+TAP_DANCE_ENABLE = yes
+UNICODEMAP_ENABLE = yes
diff --git a/keyboards/melody96/keymaps/zunger/keymap.c b/keyboards/melody96/keymaps/zunger/keymap.c
index 9031447cd20..bedb77a4b79 100644
--- a/keyboards/melody96/keymaps/zunger/keymap.c
+++ b/keyboards/melody96/keymaps/zunger/keymap.c
@@ -54,7 +54,6 @@ enum layers_keymap {
// autogenerate the keymaps for the other layers.
// TODO: It would also be nice to be able to put the actual code points in here, rather than
// numbers.
-// TODO: Also add checkmark and dengir.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -70,9 +69,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | ∅ | | | | | | | | | | | | | | | | | | | SHIFTCADET
* |---------------------------------------------------------------------------|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | BKSPC |LCK| / | * | - |
- * | ` | | | | | | | | | | | ∝ | ∼ | BKSPC |LCK| ⊘ | ⊙ | ⊖ |
- * | ` | | | | | | | | | | | | ≁ | BKSPC |LCK| | ⊗ | |
- * | | | | | | | | | | | | | ± | BKSPC |LCK| | | |
+ * | ` | ¡ | | £ | | | | | ° | | | ∝ | ∼ | BKSPC |LCK| ⊘ | ⊙ | ⊖ |
+ * | ` | ¿ | | € | | | | | | | | | ≁ | BKSPC |LCK| | ⊗ | |
+ * | | ̀ | ́ | ̂ | ̃ | ̈ | ̄ | | | | | | ± | BKSPC |LCK| | × | | [3]
* | | | | | | | | | | | | | ∓ | BKSPC |LCK| | | |
* |---------------------------------------------------------------------------|
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | 7 | 8 | 9 | |
@@ -104,6 +103,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* clicks the mouse, and SHIFT+CADET+FIVE right-clicks.
* [2] The Greek letters in this row are the three modifier keys (GREEK, CADET, FN),
* not the Unicode Greek letters.
+ * [3] The accent marks in this row are combining accent marks, which may be put after
+ * a character to combine it. In order, they are grave, acute, circumflex, tilde,
+ * diaresis (umlaut), and macron.
*/
// NB: Using GESC for escape in the QWERTY layer as a temporary hack because I messed up the
// switch on the KC_GRV key; change back to KC_ESC once this is fixed.
@@ -116,14 +118,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_GREEK,KC_CADET,MO_FN, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[_GREEK] = LAYOUT_hotswap(
KC_GRV, H(00b9), H(00b2), H(00b3), H(2074), H(2075), H(2076), H(2077), H(2078), H(2079), H(2070), H(207b), H(207a), H(207d), H(207e), XXXXXXX, XXXXXXX, XXXXXXX, _______,
- KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, H(221d), H(223c), _______, _______, H(2298), H(2299), H(2296),
+ KC_GRV, H(00a1), _______, H(00a3), _______, _______, _______, _______, H(00b0), _______, _______, H(221d), H(223c), _______, _______, H(2298), H(2299), H(2296),
_______, H(03b8), H(03c9), H(03b5), H(03c1), H(03c4), H(03c8), H(03c5), H(03b9), H(03bf), H(03c0), KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9,
_______, H(03b1), H(03c3), H(03b4), H(03c6), H(03b3), H(03b7), H(03d1), H(03ba), H(03bb), H(22ef), H(22c5), _______, KC_P4, KC_P5, KC_P6, H(2295),
_______, H(03b6), H(03be), H(03c7), H(03c2), H(03b2), H(03bd), H(03bc), H(226a), H(226b), H(222b), _______, _______, KC_P1, KC_P2, KC_P3,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT),
[_SHIFTGREEK] = LAYOUT_hotswap(
KC_GRV, H(2081), H(2082), H(2083), H(2084), H(2085), H(2086), H(2087), H(2088), H(2089), H(2080), H(208b), H(208a), H(208d), H(208e), XXXXXXX, XXXXXXX, XXXXXXX, _______,
- KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, H(2241), _______, _______, XXXXXXX, H(2297), XXXXXXX,
+ KC_GRV, H(00bf), _______, H(20ac), _______, _______, _______, _______, _______, _______, _______, XXXXXXX, H(2241), _______, _______, XXXXXXX, H(2297), XXXXXXX,
_______, H(0398), H(03a9), H(0395), H(03a1), H(03a4), H(03a8), H(03a5), H(0399), H(039f), H(03a0), KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9,
_______, H(0391), H(03a3), H(0394), H(03a6), H(0393), H(0397), XXXXXXX, H(039a), H(039b), H(2026), H(2234), _______, KC_P4, KC_P5, KC_P6, H(2295),
_______, H(0396), H(039e), H(03a7), H(2714), H(0392), H(039d), H(039c), H(2272), H(2273), XXXXXXX, _______, _______, KC_P1, KC_P2, KC_P3,
@@ -131,7 +133,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// TODO: Add mouse keys to keypad.
[_CADET] = LAYOUT_hotswap(
H(00AC), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
- KC_GRV, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, H(00b1), _______, _______, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_GRV, H(0300), H(0301), H(0302), H(0303), H(0308), H(0304), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, H(00b1), _______, _______, XXXXXXX, H(00d7), XXXXXXX,
_______, H(2227), H(2228), H(2229), H(222a), H(2282), H(2283), H(2200), H(221e), H(2203), H(2202), H(2208), XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9,
_______, H(22a5), H(22a4), H(22a2), H(22a3), H(2191), H(2193), H(2190), H(2192), H(2194), XXXXXXX, XXXXXXX, _______, KC_P4, KC_P5, KC_P6, XXXXXXX,
_______, XXXXXXX, XXXXXXX, H(2260), H(2248), H(2261), H(2264), H(2265), XXXXXXX, XXXXXXX, H(00f7), _______, _______, KC_P1, KC_P2, KC_P3,
@@ -145,7 +147,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT),
// Function layer is mostly for keyboard meta-control operations. Lots of this is just from the
- // default layout; TODO make it nicer, add Unicode mode switchers.
+ // default layout; TODO make it nicer.
[_FUNCTION] = LAYOUT_hotswap(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/melody96/melody96.h b/keyboards/melody96/melody96.h
index d846fa28da1..37a6a85b09d 100644
--- a/keyboards/melody96/melody96.h
+++ b/keyboards/melody96/melody96.h
@@ -1,5 +1,4 @@
-#ifndef MELODY96_H
-#define MELODY96_H
+#pragma once
#include "quantum.h"
@@ -64,4 +63,39 @@
{ K110, K111, K112, K113, K114, K115, K116, K117, K118 } \
}
-#endif
+/* LAYOUT_std60_split_num0
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Prt│Pau│Hm │End│PUp│PDn│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┼───┼───┼───┤
+ * │` ~│1 !│2 @│3 #│4 $│5 %│6 ^│7 &│8 *│9 (│0 )│- _│= +│ Bksp │NLk│ / │ * │ - │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┼───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │[ {│] }│ \ | │7 │8 │9 │ + │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤ │
+ * │CapsLk│ A │ S │ D │ F │ G │ H │ J │ K │ L │; :│' "│ Enter │4 │5 │6 │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┼───┼───┼───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │, <│. >│/ ?│ Shift │1 │2 │3 │Ent│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┼───┼───┼───┤ │
+ * │Ctrl│GUI │Alt │Space │Alt │GUI │Menu│Ctrl│0 │00 │ . │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┴───┴───┴───┴───┘
+ */
+#define LAYOUT_std60_split_num0( \
+ K50, K51, K52, K53, K54, K55, K56, K57, K58, KB8, KB7, KB5, KB4, KB3, KB6, KB2, KB1, KB0, K63, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA5, KA4, KA6, KA2, KA1, KA0, K64, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K95, K94, K84, K96, K92, K91, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K85, K93, K86, K82, K81, K80, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K78, K77, K75, K74, K76, K72, K71, \
+ K00, K01, K02, K06, K08, K07, K04, K03, K66, K62, K61, K60 \
+) { \
+ { K00, K01, K02, K03, K04, KC_NO, K06, K07, K08 }, \
+ { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57, K58 }, \
+ { K60, K61, K62, K63, K64, KC_NO, K66, KC_NO, KC_NO }, \
+ { KC_NO, K71, K72, KC_NO, K74, K75, K76, K77, K78 }, \
+ { K80, K81, K82, KC_NO, K84, K85, K86, K87, K88 }, \
+ { KC_NO, K91, K92, K93, K94, K95, K96, K97, K98 }, \
+ { KA0, KA1, KA2, KC_NO, KA4, KA5, KA6, KA7, KA8 }, \
+ { KB0, KB1, KB2, KB3, KB4, KB5, KB6, KB7, KB8 } \
+}
diff --git a/keyboards/melody96/readme.md b/keyboards/melody96/readme.md
index 73cc13262b3..2d472b32769 100644
--- a/keyboards/melody96/readme.md
+++ b/keyboards/melody96/readme.md
@@ -12,4 +12,4 @@ Make example for this keyboard (after setting up your build environment):
make melody96:default
-See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
+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/nk65/keymaps/default_via/rules.mk b/keyboards/nk65/keymaps/default_via/rules.mk
index deb4fc889b9..b8311f5e7f0 100755
--- a/keyboards/nk65/keymaps/default_via/rules.mk
+++ b/keyboards/nk65/keymaps/default_via/rules.mk
@@ -1,6 +1,6 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \
quantum/color.c \
drivers/arm/i2c_master.c
diff --git a/keyboards/nk65/nk65.h b/keyboards/nk65/nk65.h
index e45360541c4..49725a7e64e 100755
--- a/keyboards/nk65/nk65.h
+++ b/keyboards/nk65/nk65.h
@@ -18,8 +18,8 @@
#define XXX KC_NO
#include "quantum.h"
-#include "../zeal60/rgb_backlight_keycodes.h"
-#include "../zeal60/zeal60_keycodes.h"
+#include "../wilba_tech/wt_rgb_backlight_keycodes.h"
+#include "../wilba_tech/via_keycodes.h"
// This a shortcut to help you visually see your layout.
diff --git a/keyboards/nk65/rules.mk b/keyboards/nk65/rules.mk
index 94672278056..ca0a8e58557 100755
--- a/keyboards/nk65/rules.mk
+++ b/keyboards/nk65/rules.mk
@@ -1,6 +1,6 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \
quantum/color.c \
drivers/arm/i2c_master.c
diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c
index bde959f5e74..56799ae2c01 100644
--- a/keyboards/orthodox/keymaps/drashna/keymap.c
+++ b/keyboards/orthodox/keymaps/drashna/keymap.c
@@ -30,7 +30,7 @@ uint8_t last_led;
uint8_t last_osm;
#endif
-
+// clang-format off
#define LAYOUT_orthodox_base( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
@@ -121,6 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
+// clang-format on
void matrix_init_keymap(void) {
#ifndef CONVERT_TO_PROTON_C
diff --git a/keyboards/orthodox/rev3/config.h b/keyboards/orthodox/rev3/config.h
index ad3437a6262..07ecb663bae 100644
--- a/keyboards/orthodox/rev3/config.h
+++ b/keyboards/orthodox/rev3/config.h
@@ -48,8 +48,6 @@ along with this program. If not, see .
#define MATRIX_COL_PINS { D2, F5, F6, D6, D7, B4, B5, B6, F7 }
/*/
-#define CATERINA_BOOTLOADER
-
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/panc60/config.h b/keyboards/panc60/config.h
index b5889180e80..921d8da303a 100644
--- a/keyboards/panc60/config.h
+++ b/keyboards/panc60/config.h
@@ -36,6 +36,5 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define NO_BACKLIGHT_CLOCK
#define BACKLIGHT_LEVELS 1
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/percent/booster/booster.c b/keyboards/percent/booster/booster.c
new file mode 100644
index 00000000000..3a298f58fff
--- /dev/null
+++ b/keyboards/percent/booster/booster.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 "booster.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/percent/booster/booster.h b/keyboards/percent/booster/booster.h
new file mode 100644
index 00000000000..be2d2cb12bc
--- /dev/null
+++ b/keyboards/percent/booster/booster.h
@@ -0,0 +1,32 @@
+/* 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_numpad_5x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, \
+ K40, K42, K33 \
+) { \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, KC_NO }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, K33 }, \
+ { K40, KC_NO, K42, KC_NO }, \
+}
diff --git a/keyboards/percent/booster/config.h b/keyboards/percent/booster/config.h
new file mode 100644
index 00000000000..23ac7ad0c81
--- /dev/null
+++ b/keyboards/percent/booster/config.h
@@ -0,0 +1,52 @@
+/*
+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 Percent Studio
+#define PRODUCT Booster
+#define DESCRIPTION Custom programmable numpad
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 4
+
+#define MATRIX_ROW_PINS { D1, D6, D7, B4, B5 }
+#define MATRIX_COL_PINS { C7, D4, D2, D0 }
+
+#define BACKLIGHT_PIN B7
+#define BACKLIGHT_LEVELS 3
+
+#define DIODE_DIRECTION COL2ROW
+
+#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
+ #define RGBLIGHT_SLEEP
+ #define RGBLIGHT_ANIMATIONS
+#endif
+
diff --git a/keyboards/percent/booster/info.json b/keyboards/percent/booster/info.json
new file mode 100644
index 00000000000..c5d230deb48
--- /dev/null
+++ b/keyboards/percent/booster/info.json
@@ -0,0 +1,31 @@
+{
+ "keyboard_name": "booster",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 4,
+ "height": 5,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 17,
+ "layout": [
+ {"label":"K00 (D1,C7)", "x":0, "y":0},
+ {"label":"K01 (D1,D4)", "x":1, "y":0},
+ {"label":"K02 (D1,D2)", "x":2, "y":0},
+ {"label":"K03 (D1,D0)", "x":3, "y":0},
+ {"label":"K10 (D6,C7)", "x":0, "y":1},
+ {"label":"K11 (D6,D4)", "x":1, "y":1},
+ {"label":"K12 (D6,D2)", "x":2, "y":1},
+ {"label":"K20 (D7,C7)", "x":0, "y":2},
+ {"label":"K21 (D7,D4)", "x":1, "y":2},
+ {"label":"K22 (D7,D2)", "x":2, "y":2},
+ {"label":"K23 (D7,D0)", "x":3, "y":1, "h":2},
+ {"label":"K30 (B4,C7)", "x":0, "y":3},
+ {"label":"K31 (B4,D4)", "x":1, "y":3},
+ {"label":"K32 (B4,D2)", "x":2, "y":3},
+ {"label":"K40 (B5,C7)", "x":0, "y":4, "w":2},
+ {"label":"K42 (B5,D2)", "x":2, "y":4},
+ {"label":"K33 (B4,D0)", "x":3, "y":3, "h":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/percent/booster/keymaps/default/keymap.c b/keyboards/percent/booster/keymaps/default/keymap.c
new file mode 100644
index 00000000000..919774bcad9
--- /dev/null
+++ b/keyboards/percent/booster/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/* 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_numpad_5x4(
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
+ ),
+
+};
diff --git a/keyboards/percent/booster/keymaps/default/readme.md b/keyboards/percent/booster/keymaps/default/readme.md
new file mode 100644
index 00000000000..0293153f029
--- /dev/null
+++ b/keyboards/percent/booster/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Booster
diff --git a/keyboards/percent/booster/readme.md b/keyboards/percent/booster/readme.md
new file mode 100644
index 00000000000..78b4b5a35cf
--- /dev/null
+++ b/keyboards/percent/booster/readme.md
@@ -0,0 +1,13 @@
+# Booster
+
+Booster is a number pad designed for Canoe. Shared exactly the same angle and approximate design language,
+
+Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
+Hardware Supported: Booster PCB
+Hardware Availability: [Percent Studio Store](https://percent.studio/products/booster-for-canoe-65)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make percent/booster: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/percent/booster/rules.mk b/keyboards/percent/booster/rules.mk
new file mode 100644
index 00000000000..30e66537f96
--- /dev/null
+++ b/keyboards/percent/booster/rules.mk
@@ -0,0 +1,39 @@
+MCU = atmega32u4
+F_CPU = 16000000
+ARCH = AVR8
+F_USB = $(F_CPU)
+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
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # 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
+# 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 = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support
+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
+EXTRAFLAGS += -flto
+
+LAYOUTS = numpad_5x4
\ No newline at end of file
diff --git a/keyboards/percent/readme.md b/keyboards/percent/readme.md
new file mode 100644
index 00000000000..8028edf03c7
--- /dev/null
+++ b/keyboards/percent/readme.md
@@ -0,0 +1,6 @@
+# Percent Studio
+
+[Website](https://percent.studio/)
+[Facebook](https://www.facebook.com/PercentStudio.CN/)
+[Instagram](https://www.instagram.com/percent.studio/)
+[Taobao](https://shop140162967.world.taobao.com/?spm=a1z09.1.sellercard.15.15ec3606mPki7O)
\ No newline at end of file
diff --git a/keyboards/planck/ez/config.h b/keyboards/planck/ez/config.h
index a252b252842..d007873bbaa 100644
--- a/keyboards/planck/ez/config.h
+++ b/keyboards/planck/ez/config.h
@@ -138,3 +138,14 @@
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+
+#define IGNORE_MOD_TAP_INTERRUPT
+
+#define TAPPING_TOGGLE 1
+
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_WHEEL_DELAY 0
diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c
index 280249a9c28..588ee646e18 100644
--- a/keyboards/planck/keymaps/default/keymap.c
+++ b/keyboards/planck/keymaps/default/keymap.c
@@ -152,8 +152,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Adjust (Lower + Raise)
- * ,-----------------------------------------------------------------------------------.
- * | | Reset| | | | | | | | | | Del |
+ * v------------------------RGB CONTROL--------------------v
+ * ,-----------------------------------------------------------------------------------
+ * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
* |------+------+------+------+------+------+------+------+------+------+------+------|
diff --git a/keyboards/planck/keymaps/dsanchezseco/keymap.c b/keyboards/planck/keymaps/dsanchezseco/keymap.c
index df560b46c55..f7764ca8460 100644
--- a/keyboards/planck/keymaps/dsanchezseco/keymap.c
+++ b/keyboards/planck/keymaps/dsanchezseco/keymap.c
@@ -11,7 +11,7 @@ enum planck_layers {
};
enum planck_keycodes {
- DVORAK,
+ DVORAK = SAFE_RANGE,
};
#define LOWER MO(_LOWER)
@@ -77,17 +77,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------
* | | Reset| | | | | | | | | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | | |Aud on|Audoff|AGnorm|AGswap| | | | | |
+ * | | | | | | | | | | | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
+ * | |PtrScr| |Mus on|Musoff| | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
- _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
- _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
+ _______, RESET, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_PSCR, _______, MU_ON, MU_OFF, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/planck/keymaps/jarred/readme.md b/keyboards/planck/keymaps/jarred/readme.md
deleted file mode 100644
index e6be5641226..00000000000
--- a/keyboards/planck/keymaps/jarred/readme.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Jarred's Planck Layout
-
-Check out [user space readme](../../../../users/jarred/readme.md) for more info
-
-# Build
-
-```
-make planck/rev4:jarred:dfu
-```
diff --git a/keyboards/planck/keymaps/skank/keymap.c b/keyboards/planck/keymaps/skank/keymap.c
new file mode 100644
index 00000000000..e36d84d1849
--- /dev/null
+++ b/keyboards/planck/keymaps/skank/keymap.c
@@ -0,0 +1,162 @@
+/* Copyright 2019 Khader Syed
+ *
+ * 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
+
+enum skank_layers {
+ _QWERTY,
+ _COLEMAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+enum skank_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ LOWER,
+ RAISE,
+ ADJUST
+};
+
+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 | , | . | Up |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI | |Lower | Enter|Space |Raise | / | Left | Down |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_ortho_4x12(
+ 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_GESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_BSLS,
+ KC_LCTL, KC_LALT, KC_LGUI, _______, LOWER, KC_ENT, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+/* 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 | |Lower | Enter|Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT_ortho_4x12(
+ 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_GESC, 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_UP, KC_BSLS,
+ KC_LCTL, KC_LALT, KC_LGUI, _______, LOWER, KC_ENT, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | _ | + |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | _ | + | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|Qwerty|Colemk| | | | | Reset|
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, AU_ON, AU_OFF, QWERTY, COLEMAK, _______, _______, _______, _______, RESET,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+
+};
+
+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 false;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ 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;
+ 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;
+ }
+ return true;
+}
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/skank/readme.md b/keyboards/planck/keymaps/skank/readme.md
new file mode 100644
index 00000000000..673956aca19
--- /dev/null
+++ b/keyboards/planck/keymaps/skank/readme.md
@@ -0,0 +1,8 @@
+# My planck layout
+
+These are my changes:
+
+- add a colemak layout
+- keep it clean
+- add option to enable mouse keys
+- and just enable some sound
diff --git a/keyboards/planck/keymaps/skank/rules.mk b/keyboards/planck/keymaps/skank/rules.mk
new file mode 100644
index 00000000000..4c65d4af1e3
--- /dev/null
+++ b/keyboards/planck/keymaps/skank/rules.mk
@@ -0,0 +1,2 @@
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+
diff --git a/keyboards/primekb/prime_e/keymaps/jetpacktuxedo/keymap.c b/keyboards/primekb/prime_e/keymaps/jetpacktuxedo/keymap.c
new file mode 100644
index 00000000000..134d09c6bef
--- /dev/null
+++ b/keyboards/primekb/prime_e/keymaps/jetpacktuxedo/keymap.c
@@ -0,0 +1,79 @@
+/* Copyright 2018 Holten Campbell
+ *
+ * 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_DEL,
+ LT(2, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(2, KC_ENT),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, LT(3, KC_B), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, LT(1, KC_SPC), LT(1, KC_SPC), KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_MINS, KC_EQL, KC_SCLN, KC_QUOT, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT(
+ 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_TRNS,
+ KC_TRNS, KC_UNDS, KC_PLUS, KC_COLN, KC_DQUO, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_DQUO, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT(
+ 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+void matrix_init_user(void) {
+ // set CapsLock LED to output and low
+ setPinOutput(B1);
+ writePinLow(B1);
+ // set NumLock LED to output and low
+ setPinOutput(B2);
+ writePinLow(B2);
+ // set ScrollLock LED to output and low
+ setPinOutput(B3);
+ writePinLow(B3);
+}
+
+//function for layer indicator LED
+uint32_t layer_state_set_user(uint32_t state)
+{
+ if (state & (1<<1)) {
+ writePinHigh(B1);
+ } else {
+ writePinLow(B1);
+ }
+ if (state & (1<<2)) {
+ writePinHigh(B2);
+ } else {
+ writePinLow(B2);
+ }
+ if (state & (1<<3)) {
+ writePinHigh(B3);
+ } else {
+ writePinLow(B3);
+ }
+ return state;
+}
diff --git a/keyboards/projectkb/alice/info.json b/keyboards/projectkb/alice/info.json
new file mode 100644
index 00000000000..fbeef50cc31
--- /dev/null
+++ b/keyboards/projectkb/alice/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "Alice",
+ "url": "https://store.projectkeyboard.com/",
+ "maintainer": "qmk",
+ "width": 19.75,
+ "height": 5.25,
+ "layouts": {
+ "LAYOUT_default": {
+ "layout": [
+ {"label":"Esc", "x":0.5, "y":0},
+ {"label":"`", "x":1.75, "y":0.25},
+ {"label":"1", "x":2.75, "y":0.25},
+ {"label":"2", "x":3.75, "y":0},
+ {"label":"3", "x":4.75, "y":0.25},
+ {"label":"4", "x":5.75, "y":0.25},
+ {"label":"5", "x":6.75, "y":0.25},
+ {"label":"6", "x":7.75, "y":0.25},
+ {"label":"7", "x":11, "y":0.25},
+ {"label":"8", "x":12, "y":0.25},
+ {"label":"9", "x":13, "y":0.25},
+ {"label":"0", "x":14, "y":0.25},
+ {"label":"-", "x":15, "y":0},
+ {"label":"=", "x":16, "y":0.25},
+ {"label":"Del", "x":17, "y":0.25},
+ {"label":"Backspace", "x":18, "y":0.25},
+
+ {"label":"PgUp", "x":0.25, "y":1},
+ {"label":"Tab", "x":1.5, "y":1.25, "w":1.5},
+ {"label":"Q", "x":3, "y":1.25},
+ {"label":"W", "x":4.25, "y":1.25},
+ {"label":"E", "x":5.25, "y":1.25},
+ {"label":"R", "x":6.25, "y":1.25},
+ {"label":"T", "x":7.25, "y":1.25},
+ {"label":"Y", "x":10.5, "y":1.25},
+ {"label":"U", "x":11.5, "y":1.25},
+ {"label":"I", "x":12.5, "y":1.25},
+ {"label":"O", "x":13.5, "y":1.25},
+ {"label":"P", "x":14.75, "y":1.25},
+ {"label":"{", "x":15.75, "y":1.25},
+ {"label":"}", "x":16.75, "y":1.25},
+ {"label":"|", "x":17.75, "y":1.25, "w":1.5},
+
+ {"label":"PgDn", "x":0, "y":2},
+ {"label":"Caps Lock", "x":1.5, "y":2.25, "w":1.75},
+ {"label":"A", "x":3.25, "y":2.25},
+ {"label":"S", "x":4.5, "y":2.25},
+ {"label":"D", "x":5.5, "y":2.25},
+ {"label":"F", "x":6.5, "y":2.25},
+ {"label":"G", "x":7.5, "y":2.25},
+ {"label":"H", "x":10.75, "y":2.25},
+ {"label":"J", "x":11.75, "y":2.25},
+ {"label":"K", "x":12.75, "y":2.25},
+ {"label":"L", "x":13.75, "y":2.25},
+ {"label":":", "x":15.25, "y":2.25},
+ {"label":"\"", "x":16.25, "y":2.25},
+ {"label":"Enter", "x":17.25, "y":2.25, "w":2.25},
+
+ {"label":"Shift", "x":1.5, "y":3.25, "w":2.25},
+ {"label":"Z", "x":3.75, "y":3.25},
+ {"label":"X", "x":5, "y":3.25},
+ {"label":"C", "x":6, "y":3.25},
+ {"label":"V", "x":7, "y":3.25},
+ {"label":"B", "x":8, "y":3.25},
+ {"label":"Fn", "x":10.25, "y":3.25},
+ {"label":"N", "x":11.25, "y":3.25},
+ {"label":"M", "x":12.25, "y":3.25},
+ {"label":"<", "x":13.25, "y":3.25},
+ {"label":">", "x":15, "y":3.25},
+ {"label":"?", "x":16, "y":3.25},
+ {"label":"Shift", "x":17, "y":3.25, "w":1.75},
+ {"label":"Fn", "x":18.75, "y":3.25},
+
+ {"label":"Ctrl", "x":1.5, "y":4.25, "w":1.5},
+ {"label":"Alt", "x":5, "y":4.25, "w":1.5},
+ {"label":"Space", "x":6.5, "y":4.25, "w":2},
+ {"label":"Menu", "x":8.5, "y":4.25},
+ {"label":"Space", "x":10.25, "y":4.25, "w":2.25},
+ {"label":"Alt", "x":12.5, "y":4.25, "w":1.5},
+ {"label":"Ctrl", "x":18, "y":4.25, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/projectkb/alice/keymaps/madhatter/keymap.c b/keyboards/projectkb/alice/keymaps/madhatter/keymap.c
new file mode 100644
index 00000000000..32cf7e0ba76
--- /dev/null
+++ b/keyboards/projectkb/alice/keymaps/madhatter/keymap.c
@@ -0,0 +1,43 @@
+/*
+Copyright 2019 Khader Syed
+
+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
+
+enum layer_names {
+ _QWERTY,
+ _FNM
+};
+
+#define FNM MO(_FNM)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_default(
+ KC_ESC, 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_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_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, KC_RALT,
+ KC_LCTL, KC_LALT, KC_ENT, KC_LCMD, KC_SPC, FNM, 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, _______, _______,
+ RGB_RMOD, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______,
+ _______, BL_INC, BL_DEC, BL_TOGG, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET, _______, _______, _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/projectkb/alice/readme.md b/keyboards/projectkb/alice/readme.md
index cc9f22685b0..583ddf59203 100644
--- a/keyboards/projectkb/alice/readme.md
+++ b/keyboards/projectkb/alice/readme.md
@@ -2,11 +2,18 @@
ProjectKeyboard Alice Keyboard Replacement PCB
-Keyboard Maintainer: onefiftynine
+Keyboard Maintainer: onefiftynine
Hardware Supported: STM32F072CBT6
Make example for this keyboard (after setting up your build environment):
make projectkb/alice:default
+If you are flashing this keyboard/pcb for the first time:
+
+ * Set the dip switch on the reverse of the PCB to 1
+ * Hit the reset button and then do
+ * make projectkb/alice:default:dfu-util
+ * After flashing the keyboard successfully, you can reset the dip switch back to 0
+
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/projectkb/alice/rules.mk b/keyboards/projectkb/alice/rules.mk
index cd366c76aa7..caebb88ae67 100644
--- a/keyboards/projectkb/alice/rules.mk
+++ b/keyboards/projectkb/alice/rules.mk
@@ -54,3 +54,4 @@ RGBLIGHT_ENABLE = yes
# RAW_ENABLE = yes
# DYNAMIC_KEYMAP_ENABLE = yes
+DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
diff --git a/keyboards/qwertyydox/config.h b/keyboards/qwertyydox/config.h
index 67f5d3c16a0..3467952140b 100644
--- a/keyboards/qwertyydox/config.h
+++ b/keyboards/qwertyydox/config.h
@@ -15,8 +15,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
#include "config_common.h"
@@ -33,6 +32,16 @@ along with this program. If not, see .
#define MATRIX_ROWS 8
#define MATRIX_COLS 7
+/*
+ * 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)
+ *
+*/
// wiring of each half
#define MATRIX_ROW_PINS { B6, B2, B3, B1 }
#define MATRIX_COL_PINS { F7, F6, F5, C6, D7, D4, D1 }
@@ -40,30 +49,139 @@ along with this program. If not, see .
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0
-/* number of backlight levels */
-// #define BACKLIGHT_LEVELS 3
+// #define BACKLIGHT_PIN E6
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 5
-/* Set 0 if debouncing isn't needed */
+#define RGB_DI_PIN D6
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 12
+ #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
+ // /*== customize breathing effect ==*/
+ // /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+ // #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+ // /*==== use exp() and sin() ====*/
+ // #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+ // #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
-/* serial.c configuration for split keyboard */
-#define SOFT_SERIAL_PIN D0
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
/* 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
-#define BACKLIGHT_PIN E6
-#define BACKLIGHT_LEVELS 5
+/* 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
-/* ws2812 RGB LED */
-#define RGB_DI_PIN D6
+/*
+ * 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
-#define RGBLED_NUM 12 // Number of LEDs
+/*
+ * 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.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
+
+/* 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_HELP H
+//#define MAGIC_KEY_HELP_ALT 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 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#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 B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
+#define MOUSEKEY_DELAY 150
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_MAX_SPEED 10
+#define MOUSEKEY_TIME_TO_MAX 10
+#define MOUSEKEY_WHEEL_MAX_SPEED 8
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 40
/*
* Feature disable options
@@ -83,4 +201,57 @@ along with this program. If not, see .
//#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
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#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_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
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/qwertyydox/info.json b/keyboards/qwertyydox/info.json
index 3dd6b3ec738..8616f274ea3 100644
--- a/keyboards/qwertyydox/info.json
+++ b/keyboards/qwertyydox/info.json
@@ -5,12 +5,66 @@
"url": "",
"maintainer": "qmk",
"processor": "atmega32u4",
- "width": 16,
+ "width": 16.25,
"height": 5,
"layouts": {
"LAYOUT": {
"key_count": 53,
- "layout": [{"label":"L00", "x":0, "y":0.375}, {"label":"L01", "x":1, "y":0.25}, {"label":"L02", "x":2, "y":0.125}, {"label":"L03", "x":3, "y":0}, {"label":"L04", "x":4, "y":0.125}, {"label":"L05", "x":5, "y":0.25}, {"label":"L06", "x":6, "y":0.5}, {"label":"R00", "x":9, "y":0.5}, {"label":"R01", "x":10, "y":0.25}, {"label":"R02", "x":11, "y":0.125}, {"label":"R03", "x":12, "y":0}, {"label":"R04", "x":13, "y":0.125}, {"label":"R05", "x":14, "y":0.25}, {"label":"R06", "x":15, "y":0.375}, {"label":"L10", "x":0, "y":1.375}, {"label":"L11", "x":1, "y":1.25}, {"label":"L12", "x":2, "y":1.125}, {"label":"L13", "x":3, "y":1}, {"label":"L14", "x":4, "y":1.125}, {"label":"L15", "x":5, "y":1.25}, {"label":"L16", "x":6, "y":1.5}, {"label":"R10", "x":9, "y":1.5}, {"label":"R11", "x":10, "y":1.25}, {"label":"R12", "x":11, "y":1.125}, {"label":"R13", "x":12, "y":1}, {"label":"R14", "x":13, "y":1.125}, {"label":"R15", "x":14, "y":1.25}, {"label":"R16", "x":15, "y":1.375}, {"label":"L20", "x":0, "y":2.375}, {"label":"L21", "x":1, "y":2.25}, {"label":"L22", "x":2, "y":2.125}, {"label":"L23", "x":3, "y":2}, {"label":"L24", "x":4, "y":2.125}, {"label":"L25", "x":5, "y":2.25}, {"label":"L26", "x":6.5, "y":3}, {"label":"R20", "x":8.5, "y":3}, {"label":"R21", "x":10, "y":2.25}, {"label":"R22", "x":11, "y":2.125}, {"label":"R23", "x":12, "y":2}, {"label":"R24", "x":13, "y":2.125}, {"label":"R25", "x":14, "y":2.25}, {"label":"R26", "x":15, "y":2.375}, {"label":"L30", "x":0, "y":3.375}, {"label":"L31", "x":1, "y":3.25}, {"label":"L32", "x":2, "y":3.125}, {"label":"L33", "x":3, "y":3}, {"label":"L34", "x":5.5, "y":4}, {"label":"L35", "x":6.5, "y":4}, {"label":"R30", "x":8.5, "y":4}, {"label":"R31", "x":9.5, "y":4}, {"label":"R32", "x":12, "y":3}, {"label":"R33", "x":13, "y":3.125}, {"label":"R34", "x":14, "y":3.25}, {"label":"R35", "x":15, "y":3.375}]
+ "layout": [
+ {"label":"Tab", "x":0, "y":0},
+ {"label":"Q", "x":1, "y":0},
+ {"label":"W", "x":2, "y":0},
+ {"label":"E", "x":3, "y":0},
+ {"label":"R", "x":4, "y":0},
+ {"label":"T", "x":5, "y":0},
+ {"label":"Y", "x":6, "y":0},
+ {"label":"Y", "x":9, "y":0},
+ {"label":"U", "x":10, "y":0},
+ {"label":"I", "x":11, "y":0},
+ {"label":"O", "x":12, "y":0},
+ {"label":"P", "x":13, "y":0},
+ {"label":"{", "x":14, "y":0},
+ {"label":"}", "x":15, "y":0},
+ {"label":"Caps Lock", "x":0.25, "y":1},
+ {"label":"A", "x":1.25, "y":1},
+ {"label":"S", "x":2.25, "y":1},
+ {"label":"D", "x":3.25, "y":1},
+ {"label":"F", "x":4.25, "y":1},
+ {"label":"G", "x":5.25, "y":1},
+ {"label":"H", "x":9.25, "y":1},
+ {"label":"J", "x":10.25, "y":1},
+ {"label":"K", "x":11.25, "y":1},
+ {"label":"L", "x":12.25, "y":1},
+ {"label":":", "x":13.25, "y":1},
+ {"label":"\"", "x":14.25, "y":1},
+ {"label":"|", "x":15.25, "y":1},
+ {"label":"Shift", "x":0.75, "y":2},
+ {"label":"Z", "x":1.75, "y":2},
+ {"label":"X", "x":2.75, "y":2},
+ {"label":"C", "x":3.75, "y":2},
+ {"label":"V", "x":4.75, "y":2},
+ {"label":"B", "x":5.75, "y":2},
+ {"label":"N", "x":9.75, "y":2},
+ {"label":"M", "x":10.75, "y":2},
+ {"label":"<", "x":11.75, "y":2},
+ {"label":">", "x":12.75, "y":2},
+ {"label":"?", "x":13.75, "y":2},
+ {"label":"Shift", "x":14.75, "y":2},
+ {"label":"Ctrl", "x":0.75, "y":3},
+ {"label":"GUI", "x":1.75, "y":3},
+ {"label":"Alt", "x":2.75, "y":3},
+ {"label":"\"-QWERTY\"", "x":3.75, "y":3},
+ {"label":"Enter", "x":4.75, "y":3.33},
+ {"label":"Delete", "x":5.75, "y":3.67},
+ {"label":"TO(_NUM)", "x":6.75, "y":4},
+ {"label":"TO(_NAV)", "x":8.75, "y":4},
+ {"label":"Space", "x":9.75, "y":3.67},
+ {"label":"Back Space", "x":10.75, "y":3.33},
+ {"label":"Left", "x":11.75, "y":3},
+ {"label":"Alt", "x":12.75, "y":3},
+ {"label":"GUI", "x":13.75, "y":3},
+ {"label":"Ctrl", "x":14.75, "y":3}
+ ]
}
}
}
diff --git a/keyboards/qwertyydox/keymaps/default/config.h b/keyboards/qwertyydox/keymaps/default/config.h
index 6b4e3fe96e8..cc85e4e2e81 100644
--- a/keyboards/qwertyydox/keymaps/default/config.h
+++ b/keyboards/qwertyydox/keymaps/default/config.h
@@ -27,17 +27,3 @@ along with this program. If not, see .
// #define MASTER_LEFT
#define MASTER_RIGHT
// #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
-
-#define MOUSEKEY_DELAY 150
-#define MOUSEKEY_INTERVAL 20
-#define MOUSEKEY_MAX_SPEED 10
-#define MOUSEKEY_TIME_TO_MAX 10
-#define MOUSEKEY_WHEEL_MAX_SPEED 8
-#define MOUSEKEY_WHEEL_TIME_TO_MAX 40
\ No newline at end of file
diff --git a/keyboards/qwertyydox/keymaps/default/keymap.c b/keyboards/qwertyydox/keymaps/default/keymap.c
index 5967c5146f1..f5381bf7d31 100644
--- a/keyboards/qwertyydox/keymaps/default/keymap.c
+++ b/keyboards/qwertyydox/keymaps/default/keymap.c
@@ -2,9 +2,12 @@
extern keymap_config_t keymap_config;
-#define _QWERTY 0
-#define _NUM 1
-#define _NAV 2
+enum layer_names {
+ _QWERTY,
+ _NUM,
+ _NAV
+};
+
enum custom_keycodes {
qwerty = SAFE_RANGE,
nav,
@@ -12,17 +15,6 @@ enum custom_keycodes {
EQL
};
-// #define KC_ KC_TRNS
-#define __ KC_NO
-#define NAV TO(2)
-#define NUM TO(1)
-#define ALPHA TO(0)
-#define NPLUS KC_KP_PLUS
-#define NMINUS KC_KP_MINUS
-#define NSTAR KC_KP_ASTERISK
-#define NSLASH KC_KP_SLASH
-
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
@@ -31,33 +23,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
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_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, __, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
+ 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_LCTL, KC_LGUI, KC_LALT, qwerty, KC_ENT, KC_DEL, NUM, NAV, KC_SPC, KC_BSPC, KC_LEFT, KC_RALT, KC_RGUI, KC_RCTL
+ KC_LCTL, KC_LGUI, KC_LALT, qwerty, KC_ENT, KC_DEL, TO(1), TO(2), KC_SPC, KC_BSPC, KC_LEFT, KC_RALT, KC_RGUI, KC_RCTL
//`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------'
),
[_NUM] = 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_PSCR, KC_NO,
+ 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_NO,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- 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_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_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, __, KC_NO, KC_PPLS, KC_PMNS, EQL, KC_PAST, KC_PSLS,
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PPLS, KC_PMNS, EQL, KC_PAST, KC_PSLS,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- KC_LCTL, KC_ESC, KC_NO, num, KC_ENT, KC_LSFT, NAV, ALPHA, KC_SPC, KC_BSPC, KC_LEFT, KC_RALT, KC_RGUI, KC_RCTL
+ KC_LCTL, KC_ESC, KC_NO, num, KC_ENT, KC_LSFT, TO(2), TO(0), KC_SPC, KC_BSPC, KC_LEFT, KC_RALT, KC_RGUI, KC_RCTL
//`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------'
),
[_NAV] = LAYOUT(
//,--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------.
- KC_ESC, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_WH_L, KC_WH_R, KC_ESC, KC_NO, KC_UP, NSLASH, NSTAR, NMINUS, NPLUS,
+ KC_ESC, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_WH_L, KC_WH_R, KC_ESC, KC_NO, KC_UP, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_WH_U, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_WH_U, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- KC_INS, KC_HOME, KC_PGUP, KC_BTN1, KC_BTN2, KC_WH_D, __, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
+ KC_INS, KC_HOME, KC_PGUP, KC_BTN1, KC_BTN2, KC_WH_D, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- KC_DEL, KC_END, KC_PGDN, nav, KC_LCTL, KC_SPC, ALPHA, NUM, KC_LSFT, KC_BSPC, KC_NO, KC_NO, KC_NO, RESET
+ KC_DEL, KC_END, KC_PGDN, nav, KC_LCTL, KC_SPC, TO(0), TO(1), KC_LSFT, KC_BSPC, KC_NO, KC_NO, KC_NO, RESET
//`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------'
)
};
diff --git a/keyboards/qwertyydox/qwertyydox.h b/keyboards/qwertyydox/qwertyydox.h
index 57bd0dc54a3..9eb4073dfe8 100644
--- a/keyboards/qwertyydox/qwertyydox.h
+++ b/keyboards/qwertyydox/qwertyydox.h
@@ -1,24 +1,7 @@
-#ifndef QWERTYYDOX_H
-#define QWERTYYDOX_H
+#pragma once
+
+#include "quantum.h"
#ifdef KEYBOARD_qwertyydox_rev1
#include "rev1.h"
#endif
-
-#include "quantum.h"
-
-// Used to create a keymap using only KC_ prefixed keys
-#define LAYOUT_kc( \
- 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, R30, R31, R32, R33, R34, R35 \
- ) \
- LAYOUT( \
- KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##L06, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, KC_##R06, \
- KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##L16, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, KC_##R16, \
- KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##L26, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, KC_##R26, \
- KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35 \
- )
-
-#endif
\ No newline at end of file
diff --git a/keyboards/qwertyydox/rev1/config.h b/keyboards/qwertyydox/rev1/config.h
index 703d62de750..b749fffcb7e 100644
--- a/keyboards/qwertyydox/rev1/config.h
+++ b/keyboards/qwertyydox/rev1/config.h
@@ -15,72 +15,4 @@ 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
-
-#include QMK_KEYBOARD_CONFIG_H
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCEEB
-#define PRODUCT_ID 0x1256
-#define DEVICE_VER 0x0100
-#define MANUFACTURER AYDENandDAD
-#define PRODUCT QWERTYdox Keyboard
-#define DESCRIPTION Split 40 percent keyboard
-
-/* key matrix size */
-// Rows are doubled-up
-#define MATRIX_ROWS 8
-#define MATRIX_COLS 7
-
-// wiring of each half
-#define MATRIX_ROW_PINS { B6, B2, B3, B1 }
-#define MATRIX_COL_PINS { F7, F6, F5, C6, D7, D4, D1 }
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-/* 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
-
-/* serial.c configuration for split keyboard */
-#define SOFT_SERIAL_PIN D0
-
-/* 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
-
-#define BACKLIGHT_PIN E6
-#define BACKLIGHT_LEVELS 5
-
-/* ws2812 RGB LED */
-#define RGB_DI_PIN D6
-
-#define RGBLED_NUM 12 // Number of LEDs
-
-/*
- * 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
-
-#endif
+#pragma once
diff --git a/keyboards/qwertyydox/rev1/rev1.h b/keyboards/qwertyydox/rev1/rev1.h
index d620e62108d..a7b30b648fa 100644
--- a/keyboards/qwertyydox/rev1/rev1.h
+++ b/keyboards/qwertyydox/rev1/rev1.h
@@ -1,12 +1,7 @@
-#ifndef REV1_H
-#define REV1_H
+#pragma once
#include "qwertyydox.h"
-//void promicro_bootloader_jmp(bool program);
-#include "quantum.h"
-
-
#ifdef USE_I2C
#include
#ifdef __AVR__
@@ -15,12 +10,10 @@
#endif
#endif
-//void promicro_bootloader_jmp(bool program);
-
#define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, \
- L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, \
+ L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 \
) \
{ \
@@ -30,8 +23,6 @@
{ L30, L31, L32, L33, L34, L35, L36 }, \
{ R06, R05, R04, R03, R02, R01, R00 }, \
{ R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20, }, \
+ { R26, R25, R24, R23, R22, R21, KC_NO, }, \
{ R36, R35, R34, R33, R32, R31, R30 } \
}
-
-#endif
diff --git a/keyboards/qwertyydox/rev1/rules.mk b/keyboards/qwertyydox/rev1/rules.mk
index 7b30c0beff2..e69de29bb2d 100644
--- a/keyboards/qwertyydox/rev1/rules.mk
+++ b/keyboards/qwertyydox/rev1/rules.mk
@@ -1 +0,0 @@
-BACKLIGHT_ENABLE = no
diff --git a/keyboards/qwertyydox/rules.mk b/keyboards/qwertyydox/rules.mk
index 7cc070ba598..fcd3d708e2d 100644
--- a/keyboards/qwertyydox/rules.mk
+++ b/keyboards/qwertyydox/rules.mk
@@ -52,14 +52,12 @@ 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 = yes # 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 = yes
-USE_I2C = yes # I2C is used between the sides
# 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/rama/readme.md b/keyboards/rama/readme.md
deleted file mode 100644
index c7ddf6d111d..00000000000
--- a/keyboards/rama/readme.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# RAMA
-
-Firmware for keyboards designed by [RAMA WORKS](https://rama.works)
-
-[RAMA M6-A](https://rama.works/m6a)
-
-[RAMA M60-A](https://rama.works/#/m60-a/)
-
-[RAMA U80-A](https://rama.works/#/tkl-a/)
-
-[RAMA M10-B](https://www.massdrop.com/buy/rama-m10-a?mode=guest_open)
diff --git a/keyboards/rama/u80_a/keymaps/default/keymap.c b/keyboards/rama/u80_a/keymaps/default/keymap.c
deleted file mode 100644
index 036a57b689f..00000000000
--- a/keyboards/rama/u80_a/keymaps/default/keymap.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [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_SLCK, KC_PAUS,
- 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_INS, KC_HOME, 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_DEL, KC_END, KC_PGDN,
- 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
- [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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
- [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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-};
-
diff --git a/keyboards/rgbkb/sol/common/glcdfont.c b/keyboards/rgbkb/sol/common/glcdfont.c
index f772e31811b..61b40c092ef 100644
--- a/keyboards/rgbkb/sol/common/glcdfont.c
+++ b/keyboards/rgbkb/sol/common/glcdfont.c
@@ -168,11 +168,11 @@ static const unsigned char font[] PROGMEM = {
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, 0xE0, 0xEC, 0xDF,
- 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xF0, 0xF4, 0xEC, 0xDE,
+ 0xDE, 0xBE, 0x3E, 0x3E, 0x3F, 0x3F,
+ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x3F,
+ 0x3F, 0x3E, 0x3E, 0xBE, 0xDE, 0xDE,
+ 0xEC, 0xF4, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7F, 0x80, 0x80,
0x80, 0x70, 0x0F, 0x00, 0x00, 0x80,
0x7F, 0x00, 0x00, 0x7F, 0x80, 0x80,
@@ -200,11 +200,11 @@ static const unsigned char font[] PROGMEM = {
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,
- 0x40, 0x7C, 0x3F, 0x3F, 0x23, 0x01,
- 0x23, 0x3F, 0x37, 0x6C, 0x40, 0x00,
+ 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFF,
+ 0xFF, 0xFF, 0xFC, 0xE0, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -233,8 +233,8 @@ static const unsigned char font[] PROGMEM = {
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, 0x0F, 0x1F, 0x3F, 0x7F,
+ 0xFE, 0xFC, 0x00, 0xFC, 0xFE, 0x7F,
+ 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
diff --git a/keyboards/rgbkb/sol/config.h b/keyboards/rgbkb/sol/config.h
index 23f4503bfd9..9b136db0584 100644
--- a/keyboards/rgbkb/sol/config.h
+++ b/keyboards/rgbkb/sol/config.h
@@ -35,16 +35,9 @@ along with this program. If not, see .
#define MATRIX_COLS 7
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7 }
-// Encoder support
-#define ENCODERS_PAD_A { D2 }
-#define ENCODERS_PAD_B { D6 }
-
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
-/* ws2812 RGB LED */
-#define RGB_DI_PIN B3
-
#ifdef IOS_DEVICE_ENABLE
#define RGBLIGHT_LIMIT_VAL 40
#elif RGBLIGHT_FULL_POWER
diff --git a/keyboards/rgbkb/sol/keymaps/brianweyer/rules.mk b/keyboards/rgbkb/sol/keymaps/brianweyer/rules.mk
index 12c8779467c..47dd9a7e27e 100644
--- a/keyboards/rgbkb/sol/keymaps/brianweyer/rules.mk
+++ b/keyboards/rgbkb/sol/keymaps/brianweyer/rules.mk
@@ -1,38 +1,15 @@
-# 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)
+# Overridden build options from rev1
+
+# RGB Options
+LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
+
+# Misc
+OLED_DRIVER_ENABLE = yes # Enable the OLED Driver
+
+
-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
-RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
-RGBLIGHT_ANIMATIONS = yes # LED animations
-LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
-RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
-RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
-RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
-UNICODE_ENABLE = no # Unicode
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-OLED_DRIVER_ENABLE = yes # Enable the OLED Driver (+5000)
-IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
# Do not edit past here
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
- OPT_DEFS += -DRGBLIGHT_FULL_POWER
-endif
-
-ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
- OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
-endif
-
-ifeq ($(strip $(LED_MIRRORED)), yes)
- OPT_DEFS += -DLED_MIRRORED
-endif
+include keyboards/$(KEYBOARD)/post_rules.mk
diff --git a/keyboards/rgbkb/sol/keymaps/danielhklein/rules.mk b/keyboards/rgbkb/sol/keymaps/danielhklein/rules.mk
index 09b0e201d53..2993bdacc3b 100644
--- a/keyboards/rgbkb/sol/keymaps/danielhklein/rules.mk
+++ b/keyboards/rgbkb/sol/keymaps/danielhklein/rules.mk
@@ -1,38 +1,14 @@
-# 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)
+# Overridden build options from rev1
+
+# Debug Options
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+
+
-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 = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
-RGBLIGHT_ANIMATIONS = yes # LED animations
-LED_MIRRORED = yes # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
-RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
-RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
-RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
-UNICODE_ENABLE = no # Unicode
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-OLED_DRIVER_ENABLE = no # Enable the OLED Driver (+5000)
-IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
# Do not edit past here
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
- OPT_DEFS += -DRGBLIGHT_FULL_POWER
-endif
+include keyboards/$(KEYBOARD)/post_rules.mk
-ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
- OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
-endif
-
-ifeq ($(strip $(LED_MIRRORED)), yes)
- OPT_DEFS += -DLED_MIRRORED
-endif
diff --git a/keyboards/rgbkb/sol/keymaps/default/keymap.c b/keyboards/rgbkb/sol/keymaps/default/keymap.c
index ca73524822e..9bbc6397b93 100644
--- a/keyboards/rgbkb/sol/keymaps/default/keymap.c
+++ b/keyboards/rgbkb/sol/keymaps/default/keymap.c
@@ -5,13 +5,6 @@
#include "split_util.h"
#endif
-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
-
// 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
@@ -23,22 +16,18 @@ enum layer_number {
_ADJ
};
+// Keycode defines for layers
+#define QWERTY DF(_QWERTY)
+#define COLEMAK DF(_COLEMAK)
+#define FN MO(_FN)
+#define ADJ MO(_ADJ)
+
enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- COLEMAK,
- FN,
- ADJ,
- BACKLIT,
- RGBRST
+ RGBRST = SAFE_RANGE,
+ RGB_MENU
};
-enum macro_keycodes {
- KC_SAMPLEMACRO,
-};
-
-
-
-#define FN_ESC LT(_FN, KC_ESC)
+#define FN_ESC LT(_FN, KC_ESC)
#define FN_CAPS LT(_FN, KC_CAPS)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -50,9 +39,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
* |FN(CAPS)| A | S | D | F | G | ( | | ) | H | J | K | L | ; | ' |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- * |Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Shift |
+ * |Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- * | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
+ * | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
* | Space| DEL | | Enter| Space|
* `-------------' `-------------'
@@ -74,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
* |FN(CAPS)| A | R | S | T | G | ( | | ) | K | N | E | I | O | ' |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- * |Shift | Z | X | C | D | V | { | | } | M | H | , | . | / |Shift |
+ * |Shift | Z | X | C | D | V | { | | } | M | H | , | . | / |Enter |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
* | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
@@ -83,9 +72,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_COLEMAK] = LAYOUT( \
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_LBRC, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, \
- FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_G, KC_LPRN, KC_RPRN, KC_K, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_LCBR, KC_RCBR, KC_M, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_LBRC, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, \
+ FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_LPRN, KC_RPRN, 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_LCBR, KC_RCBR, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_DEL, KC_ENT, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, \
KC_SPC, KC_DEL, KC_ENT, KC_SPC \
),
@@ -107,8 +96,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FN] = LAYOUT( \
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, \
+ _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_SLCK, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME, \
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_NLCK, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, \
_______, _______, _______, _______ \
@@ -134,120 +123,184 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_SAD, RGB_VAI, RGB_SAI, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, _______, _______, _______, QWERTY, COLEMAK, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, \
+ _______, RGB_SPD, _______, RGB_SPI, _______, _______, _______, _______, _______, RGB_SPI, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
+ _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, \
_______, _______, _______, _______ \
)
};
+// For RGBRST Keycode
+#if defined(RGB_MATRIX_ENABLE)
+void rgb_matrix_increase_flags(void)
+{
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_UNDERGLOW: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+}
+void rgb_matrix_decrease_flags(void)
+{
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+ case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_UNDERGLOW: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+}
+#endif
-// define variables for reactive RGB
-bool TOG_STATUS = false;
-int RGB_current_mode;
+#ifdef RGB_OLED_MENU
+uint8_t rgb_encoder_state = 4;
+
+typedef void (*rgb_matrix_f)(void);
+
+const rgb_matrix_f rgb_matrix_functions[6][2] = {
+ { rgb_matrix_increase_hue, rgb_matrix_decrease_hue },
+ { rgb_matrix_increase_sat, rgb_matrix_decrease_sat },
+ { rgb_matrix_increase_val, rgb_matrix_decrease_val },
+ { rgb_matrix_increase_speed, rgb_matrix_decrease_speed },
+ { rgb_matrix_step, rgb_matrix_step_reverse },
+ { rgb_matrix_increase_flags, rgb_matrix_decrease_flags }
+};
+#endif
#ifdef ENCODER_ENABLE
+
+static pin_t encoders_pad_a[] = ENCODERS_PAD_A;
+#define NUMBER_OF_ENCODERS (sizeof(encoders_pad_a)/sizeof(pin_t))
+
+const uint16_t PROGMEM encoders[][NUMBER_OF_ENCODERS * 2][2] = {
+ [_QWERTY] = ENCODER_LAYOUT( \
+ KC_VOLU, KC_VOLD,
+ KC_VOLU, KC_VOLD
+ ),
+ [_COLEMAK] = ENCODER_LAYOUT( \
+ _______, _______,
+ _______, _______
+ ),
+ [_FN] = ENCODER_LAYOUT( \
+ _______, _______,
+ _______, _______
+ ),
+ [_ADJ] = ENCODER_LAYOUT( \
+ _______, _______,
+ _______, _______
+ )
+};
+
void encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) { /* First encoder */
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- } else if (index == 1) { /* Second encoder*/
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
+ if (!is_keyboard_master())
+ return;
+
+#ifdef RGB_OLED_MENU
+ if (index == RGB_OLED_MENU) {
+ (*rgb_matrix_functions[rgb_encoder_state][clockwise])();
+ } else
+#endif
+ {
+ uint8_t layer = biton32(layer_state);
+ uint16_t keycode = encoders[layer][index][clockwise];
+ while (keycode == KC_TRANSPARENT && layer > 0)
+ {
+ layer--;
+ if ((layer_state & (1 << layer)) != 0)
+ keycode = encoders[layer][index][clockwise];
}
+ if (keycode != KC_TRANSPARENT)
+ tap_code16(keycode);
}
}
#endif
-// Setting ADJ 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)) {
- #ifdef RGBLIGHT_ENABLE
- //rgblight_mode(RGB_current_mode);
- #endif
- layer_on(layer3);
- } else {
- layer_off(layer3);
- }
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- //uint8_t shifted = get_mods() & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT));
-
+ static uint16_t reset_timer;
switch (keycode) {
- case QWERTY:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_QWERTY);
- }
- return false;
- break;
- case COLEMAK:
- if(record->event.pressed) {
- set_single_persistent_default_layer(_COLEMAK);
- }
- return false;
- break;
- case FN:
- if (record->event.pressed) {
- //not sure how to have keyboard check mode and set it to a variable, so my work around
- //uses another variable that would be set to true after the first time a reactive key is pressed.
- if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
- } else {
- TOG_STATUS = !TOG_STATUS;
- #ifdef RGBLIGHT_ENABLE
- //rgblight_mode(15);
- #endif
- }
- layer_on(_FN);
- } else {
- #ifdef RGBLIGHT_ENABLE
- //rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
- #endif
- layer_off(_FN);
- TOG_STATUS = false;
- }
- return false;
- break;
- case ADJ:
- if (record->event.pressed) {
- layer_on(_ADJ);
- } else {
- layer_off(_ADJ);
- }
- return false;
- break;
- //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
case RGBRST:
- #ifdef RGBLIGHT_ENABLE
+#if defined(RGBLIGHT_ENABLE)
if (record->event.pressed) {
eeconfig_update_rgblight_default();
rgblight_enable();
- RGB_current_mode = rgblight_config.mode;
}
- #endif
- break;
+#elif defined(RGB_MATRIX_ENABLE)
+ if (record->event.pressed) {
+ eeconfig_update_rgb_matrix_default();
+ }
+#endif
+ return false;
+ case RESET:
+ if (record->event.pressed) {
+ reset_timer = timer_read();
+ } else {
+ if (timer_elapsed(reset_timer) >= 500) {
+ reset_keyboard();
+ }
+ }
+ return false;
+#if defined(RGB_MATRIX_ENABLE) && defined(KEYBOARD_rgbkb_sol_rev2)
+ case RGB_TOG:
+ if (record->event.pressed) {
+ rgb_matrix_increase_flags();
+ }
+ return false;
+#endif
+ case RGB_MENU:
+#ifdef RGB_OLED_MENU
+ if (record->event.pressed) {
+ if (get_mods() & MOD_MASK_SHIFT) {
+ rgb_encoder_state = (rgb_encoder_state - 1);
+ if (rgb_encoder_state > 5) {
+ rgb_encoder_state = 5;
+ }
+ } else {
+ rgb_encoder_state = (rgb_encoder_state + 1) % 6;
+ }
+ }
+#endif
+ return false;
}
return true;
}
-void matrix_init_user(void) {
-#ifdef RGBLIGHT_ENABLE
- RGB_current_mode = rgblight_config.mode;
-#endif
-}
-
-
// OLED Driver Logic
#ifdef OLED_DRIVER_ENABLE
-
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- if (!has_usb())
- return OLED_ROTATION_180; // flip 180 for offhand
+ if (is_keyboard_master())
+ return OLED_ROTATION_270;
return rotation;
}
@@ -255,62 +308,64 @@ static void render_logo(void) {
static const char PROGMEM sol_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};
-
+ 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(sol_logo, false);
}
-//assign the right code to your layers for OLED display
-#define L_BASE 0
-#define L_FN (1<<_FN)
-#define L_ADJ (1<<_ADJ)
-#define L_ADJ_TRI (L_ADJ|L_FN)
-
static void render_status(void) {
// Render to mode icon
- static const char PROGMEM mode_logo[4][4] = {
- {0x95,0x96,0x0a,0},
- {0xb5,0xb6,0x0a,0},
- {0x97,0x98,0x0a,0},
- {0xb7,0xb8,0x0a,0} };
+ static const char PROGMEM sol_icon[] = {
+ 0x9b,0x9c,0x9d,0x9e,0x9f,
+ 0xbb,0xbc,0xbd,0xbe,0xbf,
+ 0xdb,0xdc,0xdd,0xde,0xdf,0
+ };
+ oled_write_P(sol_icon, false);
- if (keymap_config.swap_lalt_lgui != false) {
- oled_write_P(mode_logo[0], false);
- oled_write_P(mode_logo[1], false);
- } else {
- oled_write_P(mode_logo[2], false);
- oled_write_P(mode_logo[3], false);
- }
-
- // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
- oled_write_P(PSTR("Layer: "), false);
- switch (layer_state) {
- case L_BASE:
- oled_write_P(PSTR("Default\n"), false);
+ // Define layers here
+ oled_write_P(PSTR("Layer"), false);
+ uint8_t layer = layer_state ? biton(layer_state) : biton32(default_layer_state);
+ switch (layer) {
+ case _QWERTY:
+ oled_write_P(PSTR("BASE "), false);
break;
- case L_FN:
- oled_write_P(PSTR("FN \n"), false);
+ case _COLEMAK:
+ oled_write_P(PSTR("CLMK "), false);
break;
- case L_ADJ:
- case L_ADJ_TRI:
- oled_write_P(PSTR("ADJ \n"), false);
+ case _FN:
+ oled_write_P(PSTR("FN "), false);
+ break;
+ case _ADJ:
+ oled_write_P(PSTR("ADJ "), false);
break;
default:
- oled_write_P(PSTR("UNDEF \n"), false);
+ oled_write_P(PSTR("UNDEF"), false);
}
// Host Keyboard LED Status
- uint8_t led_usb_state = host_keyboard_leds();
- oled_write_P(led_usb_state & (1<
+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
+
+// Xulkal custom stuff
+#if KEYBOARD_rgbkb_sol_rev2
+ #define OLED_90ROTATION
+ #define RGB_MATRIX_TOG_LAYERS
+ #define RGB_MATRIX_HUE_STEP 8
+ #define RGB_MATRIX_SAT_STEP 8
+ #define RGB_MATRIX_VAL_STEP 8
+ #define RGB_MATRIX_SPD_STEP 8
+#endif
diff --git a/keyboards/rgbkb/sol/keymaps/xulkal/keymap.c b/keyboards/rgbkb/sol/keymaps/xulkal/keymap.c
index e51edd90710..c508b0ca884 100644
--- a/keyboards/rgbkb/sol/keymaps/xulkal/keymap.c
+++ b/keyboards/rgbkb/sol/keymaps/xulkal/keymap.c
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
* | Sft[ | Z | X | C | V | B | RGB | |RGBRST| N | M | , | . | / | Sft] |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- * | Ctl- | Win | LOWER| RAISE| Alt | Space|RGBRMOD| |RGBMOD| Space| Left | Up | Down | Right| Ctl= |
+ * | Ctl- | Win | LOWER| RAISE| Alt | Space| ENC1 | | ENC2 | Space| Left | Up | Down | Right| Ctl= |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
* | Space| DEL | | Enter| Space|
* `-------------' `-------------'
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_________________QWERTY_L2_________________, KC_LBRC, KC_RBRC, _________________QWERTY_R2_________________, \
_________________QWERTY_L3_________________, KC_GRV, KC_QUOT, _________________QWERTY_R3_________________, \
_________________QWERTY_L4_________________, RGB_TOG, RGBRST, _________________QWERTY_R4_________________, \
- _________________QWERTY_L5_________________, RGB_RMOD, RGB_MOD, _________________QWERTY_R5_________________, \
+ _________________QWERTY_L5_________________, KC_ENC1, KC_ENC2, _________________QWERTY_R5_________________, \
KC_SPC, TD_DEL, KC_ENT, KC_SPC \
),
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
___________________GAME_L2_________________, KC_LBRC, KC_RBRC, ___________________GAME_R2_________________, \
___________________GAME_L3_________________, KC_GRV, KC_QUOT, ___________________GAME_R3_________________, \
___________________GAME_L4_________________, RGB_TOG, RGBRST, ___________________GAME_R4_________________, \
- ___________________GAME_L5_________________, RGB_RMOD, RGB_MOD, ___________________GAME_R5_________________, \
+ ___________________GAME_L5_________________, KC_ENC1, KC_ENC2, ___________________GAME_R5_________________, \
KC_SPC, KC_DEL, KC_ENT, KC_SPC \
),
#endif
diff --git a/keyboards/rgbkb/sol/keymaps/xulkal/rules.mk b/keyboards/rgbkb/sol/keymaps/xulkal/rules.mk
index ad0c480349c..6a14a99af5b 100644
--- a/keyboards/rgbkb/sol/keymaps/xulkal/rules.mk
+++ b/keyboards/rgbkb/sol/keymaps/xulkal/rules.mk
@@ -1,37 +1,25 @@
-# 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 = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
-RGBLIGHT_ANIMATIONS = no # LED animations
-LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
-RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
-RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
-RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
-UNICODE_ENABLE = no # Unicode
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-OLED_DRIVER_ENABLE = yes # Enable the OLED Driver (+5000)
-ENCODER_ENABLE = no # Enable rotary encoder (+90)
-IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
+# Overridden build options from rev1 & rev2
+
+# RGB Options
+RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
+RGBLIGHT_ANIMATIONS = no # LED animations
+LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
+RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight
+FULLHAND_ENABLE = yes # Enables the additional 24 Full Hand LEDs
+
+# Misc
+OLED_DRIVER_ENABLE = yes # Enable the OLED Driver
+
+# Not using the encoder for rev1
+ifeq ($(strip $(KEYBOARD)), rgbkb/sol/rev1)
+ ENCODER_ENABLE = no
+ RGB_OLED_MENU = no
+else
+ ENCODER_ENABLE = yes
+ RGB_OLED_MENU = 0
+endif
# Do not edit past here
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
- OPT_DEFS += -DRGBLIGHT_FULL_POWER
-endif
+include keyboards/$(KEYBOARD)/post_rules.mk
-ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
- OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
-endif
-
-ifeq ($(strip $(LED_MIRRORED)), yes)
- OPT_DEFS += -DLED_MIRRORED
-endif
diff --git a/keyboards/rgbkb/sol/rev1/config.h b/keyboards/rgbkb/sol/rev1/config.h
index 51c4bbb65b2..3cfc3eef945 100644
--- a/keyboards/rgbkb/sol/rev1/config.h
+++ b/keyboards/rgbkb/sol/rev1/config.h
@@ -26,6 +26,9 @@ along with this program. If not, see .
#define PRODUCT Sol
#define DESCRIPTION "An RGB, split, ortho-esque keyboard"
+/* ws2812 RGB LED */
+#define RGB_DI_PIN B3
+
#ifdef LED_MIRRORED
#define RGBLED_NUM 35
#else
@@ -34,3 +37,7 @@ along with this program. If not, see .
#define DRIVER_LED_TOTAL RGBLED_NUM
#define RGB_MATRIX_CENTER { 112, 35 }
+
+// Encoder support
+#define ENCODERS_PAD_A { D2 }
+#define ENCODERS_PAD_B { D6 }
diff --git a/keyboards/rgbkb/sol/rev1/post_rules.mk b/keyboards/rgbkb/sol/rev1/post_rules.mk
new file mode 100644
index 00000000000..ede37a1ad7b
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev1/post_rules.mk
@@ -0,0 +1,19 @@
+# As long as the users rules.mk has include $(KEYBOARD)/post_rules.mk this will be run after to properly setup any keyboard features and defines
+
+ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
+ OPT_DEFS += -DIOS_DEVICE_ENABLE
+else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
+ OPT_DEFS += -DRGBLIGHT_FULL_POWER
+endif
+
+ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
+ OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
+endif
+
+ifeq ($(strip $(RGB_MATRIX_FRAMEBUFFER)), yes)
+ OPT_DEFS += -DRGB_MATRIX_FRAMEBUFFER_EFFECTS
+endif
+
+ifeq ($(strip $(LED_MIRRORED)), yes)
+ OPT_DEFS += -DLED_MIRRORED
+endif
diff --git a/keyboards/rgbkb/sol/rev1/rev1.c b/keyboards/rgbkb/sol/rev1/rev1.c
index 6ee4b610b3b..21b4503ab9f 100644
--- a/keyboards/rgbkb/sol/rev1/rev1.c
+++ b/keyboards/rgbkb/sol/rev1/rev1.c
@@ -2,18 +2,18 @@
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = { {
- { 0, 1, 2, 3, 4, 5, 6 },
- { 7, 8, 9, 10, 11, 12, 13 },
- { 14, 15, 16, 17, 18, 19, 20 },
- { 21, 22, 23, 24, 25, 26, 27 },
- { 28, 29, 30, 31, 32, 33, 34 },
- { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 33, 34 },
- { 35, 36, 37, 38, 39, 40, 41 },
- { 42, 43, 44, 45, 46, 47, 48 },
- { 49, 50, 51, 52, 53, 54, 55 },
- { 56, 57, 58, 59, 60, 61, 62 },
- { 63, 64, 65, 66, 67, 68, 68 },
- { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 68, 68 }
+ { 0, 1, 2, 3, 4, 5, 6 },
+ { 7, 8, 9, 10, 11, 12, 13 },
+ { 14, 15, 16, 17, 18, 19, 20 },
+ { 21, 22, 23, 24, 25, 26, 27 },
+ { 28, 29, 30, 31, 32, 33, 34 },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 33, 34 },
+ { 35, 36, 37, 38, 39, 40, 41 },
+ { 42, 43, 44, 45, 46, 47, 48 },
+ { 49, 50, 51, 52, 53, 54, 55 },
+ { 56, 57, 58, 59, 60, 61, 62 },
+ { 63, 64, 65, 66, 67, 68, 68 },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 68, 68 }
}, {
// Left Hand Mapped Left to Right
{ 0, 0 }, { 21, 0 }, { 38, 0 }, { 56, 0 }, { 73, 0 }, { 91, 0 }, { 112, 0 },
diff --git a/keyboards/rgbkb/sol/rev1/rules.mk b/keyboards/rgbkb/sol/rev1/rules.mk
index e69de29bb2d..dd6d25eb984 100644
--- a/keyboards/rgbkb/sol/rev1/rules.mk
+++ b/keyboards/rgbkb/sol/rev1/rules.mk
@@ -0,0 +1,28 @@
+# RGBKB Sol Rev1 Defaults
+
+# Keycode Options
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+UNICODE_ENABLE = no # Unicode keycodes
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+
+# Debug Options
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+
+# RGB Options
+RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
+RGBLIGHT_ANIMATIONS = yes # LED animations
+LED_MIRRORED = yes # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
+
+RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight
+RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects.
+RGB_MATRIX_FRAMEBUFFER_EFFECTS = no # Enable frame buffer effects like the typing heatmap.
+
+RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness for RGBLIGHT or RGB_MATRIX. Otherwise, limited to a safe level for a normal USB-A port
+IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
+
+# Misc
+OLED_DRIVER_ENABLE = no # Enable the OLED Driver
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
diff --git a/keyboards/rgbkb/sol/rev2/config.h b/keyboards/rgbkb/sol/rev2/config.h
new file mode 100644
index 00000000000..af74b7e46fb
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev2/config.h
@@ -0,0 +1,61 @@
+/*
+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 RGBKB
+#define PRODUCT Sol
+#define DESCRIPTION "An RGB, split, ortho-esque keyboard"
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN B7
+
+#define BACKLIGHT_LEDS 124
+
+#ifdef FULLHAND_ENABLE
+ #define FULLHAND_LEDS 24
+#else
+ #define FULLHAND_LEDS 0
+#endif
+
+// Underglow / DIY Tent Glow are parallel to the top row leds, no separate define
+
+#ifdef LED_MIRRORED
+ #define RGBLED_NUM ((BACKLIGHT_LEDS + FULLHAND_LEDS) / 2)
+#else
+ #define RGBLED_NUM (BACKLIGHT_LEDS + FULLHAND_LEDS)
+#endif
+#define DRIVER_LED_TOTAL RGBLED_NUM
+
+#define RGB_MATRIX_CENTER { 112, 37 }
+
+// Encoder support
+#ifndef EXTRA_ENCODERS_ENABLE
+#define ENCODERS_PAD_A { D2 }
+#define ENCODERS_PAD_B { D6 }
+#else
+#ifdef OLED_DRIVER_ENABLE
+ #error Extra encoders cannot be enabled at the same time as the OLED Driver as they use the same pins.
+#endif
+#define ENCODERS_PAD_A { D2, D1, B0 }
+#define ENCODERS_PAD_B { D6, B1, D0 }
+#endif
diff --git a/keyboards/rgbkb/sol/rev2/info.json b/keyboards/rgbkb/sol/rev2/info.json
new file mode 100644
index 00000000000..e252ea2e2df
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev2/info.json
@@ -0,0 +1,87 @@
+{
+ "keyboard_name": "Sol",
+ "url": "",
+ "maintainer": "Legonut",
+ "width": 17,
+ "height": 6.5,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"L00", "x":0, "y":0, "w":1.5},
+ {"label":"L01", "x":1.5, "y":0},
+ {"label":"L02", "x":2.5, "y":0},
+ {"label":"L03", "x":3.5, "y":0},
+ {"label":"L04", "x":4.5, "y":0},
+ {"label":"L05", "x":5.5, "y":0},
+ {"label":"L06", "x":6.75, "y":0},
+ {"label":"R06", "x":9.25, "y":0},
+ {"label":"R00", "x":10.5, "y":0},
+ {"label":"R01", "x":11.5, "y":0},
+ {"label":"R02", "x":12.5, "y":0},
+ {"label":"R03", "x":13.5, "y":0},
+ {"label":"R04", "x":14.5, "y":0},
+ {"label":"R05", "x":15.5, "y":0, "w":1.5},
+ {"label":"L10", "x":0, "y":1, "w":1.5},
+ {"label":"L11", "x":1.5, "y":1},
+ {"label":"L12", "x":2.5, "y":1},
+ {"label":"L13", "x":3.5, "y":1},
+ {"label":"L14", "x":4.5, "y":1},
+ {"label":"L15", "x":5.5, "y":1},
+ {"label":"L16", "x":6.75, "y":1},
+ {"label":"R16", "x":9.25, "y":1},
+ {"label":"R10", "x":10.5, "y":1},
+ {"label":"R11", "x":11.5, "y":1},
+ {"label":"R12", "x":12.5, "y":1},
+ {"label":"R13", "x":13.5, "y":1},
+ {"label":"R14", "x":14.5, "y":1},
+ {"label":"R15", "x":15.5, "y":1, "w":1.5},
+ {"label":"L20", "x":0, "y":2, "w":1.5},
+ {"label":"L21", "x":1.5, "y":2},
+ {"label":"L22", "x":2.5, "y":2},
+ {"label":"L23", "x":3.5, "y":2},
+ {"label":"L24", "x":4.5, "y":2},
+ {"label":"L25", "x":5.5, "y":2},
+ {"label":"L26", "x":6.75, "y":2},
+ {"label":"R26", "x":9.25, "y":2},
+ {"label":"R20", "x":10.5, "y":2},
+ {"label":"R21", "x":11.5, "y":2},
+ {"label":"R22", "x":12.5, "y":2},
+ {"label":"R23", "x":13.5, "y":2},
+ {"label":"R24", "x":14.5, "y":2},
+ {"label":"R25", "x":15.5, "y":2, "w":1.5},
+ {"label":"L30", "x":0, "y":3, "w":1.5},
+ {"label":"L31", "x":1.5, "y":3},
+ {"label":"L32", "x":2.5, "y":3},
+ {"label":"L33", "x":3.5, "y":3},
+ {"label":"L34", "x":4.5, "y":3},
+ {"label":"L35", "x":5.5, "y":3},
+ {"label":"L36", "x":6.75, "y":3},
+ {"label":"R36", "x":9.25, "y":3},
+ {"label":"R30", "x":10.5, "y":3},
+ {"label":"R31", "x":11.5, "y":3},
+ {"label":"R32", "x":12.5, "y":3},
+ {"label":"R33", "x":13.5, "y":3},
+ {"label":"R34", "x":14.5, "y":3},
+ {"label":"R35", "x":15.5, "y":3, "w":1.5},
+ {"label":"L40", "x":0, "y":4, "w":1.5},
+ {"label":"L41", "x":1.5, "y":4},
+ {"label":"L42", "x":2.5, "y":4},
+ {"label":"L43", "x":3.5, "y":4},
+ {"label":"L44", "x":4.5, "y":4},
+ {"label":"L45", "x":6, "y":4.5},
+ {"label":"L46", "x":7, "y":4.5},
+ {"label":"R46", "x":9, "y":4.5},
+ {"label":"R40", "x":10, "y":4.5},
+ {"label":"R41", "x":11.5, "y":4},
+ {"label":"R42", "x":12.5, "y":4},
+ {"label":"R43", "x":13.5, "y":4},
+ {"label":"R44", "x":14.5, "y":4},
+ {"label":"R45", "x":15.5, "y":4, "w":1.5},
+ {"label":"L55", "x":6, "y":5.5},
+ {"label":"L56", "x":7, "y":5.5},
+ {"label":"R56", "x":9, "y":5.5},
+ {"label":"R50", "x":10, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/rgbkb/sol/rev2/post_rules.mk b/keyboards/rgbkb/sol/rev2/post_rules.mk
new file mode 100644
index 00000000000..0cbf430ad3e
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev2/post_rules.mk
@@ -0,0 +1,37 @@
+# As long as the users rules.mk has include $(KEYBOARD)/post_rules.mk this will be run after to properly setup any keyboard features and defines
+
+ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
+ OPT_DEFS += -DIOS_DEVICE_ENABLE
+else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
+ OPT_DEFS += -DRGBLIGHT_FULL_POWER
+endif
+
+ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
+ OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
+endif
+
+ifeq ($(strip $(RGB_MATRIX_FRAMEBUFFER)), yes)
+ OPT_DEFS += -DRGB_MATRIX_FRAMEBUFFER_EFFECTS
+endif
+
+ifeq ($(strip $(LED_MIRRORED)), yes)
+ OPT_DEFS += -DLED_MIRRORED
+endif
+
+ifeq ($(strip $(FULLHAND_ENABLE)), yes)
+ OPT_DEFS += -DFULLHAND_ENABLE
+endif
+
+ifeq ($(strip $(EXTRA_ENCODERS_ENABLE)), yes)
+ OPT_DEFS += -DEXTRA_ENCODERS_ENABLE
+endif
+
+ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
+ ifeq ($(strip $(ENCODER_ENABLE)), yes)
+ ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
+ ifneq ($(strip $(RGB_OLED_MENU)), no)
+ OPT_DEFS += -DRGB_OLED_MENU=$(strip $(RGB_OLED_MENU))
+ endif
+ endif
+ endif
+endif
diff --git a/keyboards/rgbkb/sol/rev2/rev2.c b/keyboards/rgbkb/sol/rev2/rev2.c
new file mode 100644
index 00000000000..467aa18e44f
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev2/rev2.c
@@ -0,0 +1,89 @@
+#include "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6 },
+ { 7, 8, 9, 10, 11, 12, 13 },
+ { 14, 15, 16, 17, 18, 19, 20 },
+ { 21, 22, 23, 24, 25, 26, 27 },
+ { 28, 29, 30, 31, 32, 33, 34 },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 33, 34 },
+// Need to shift Right hand indexes if full hand LEDs are enabled
+#define LO (FULLHAND_LEDS / 2)
+ { LO+62, LO+63, LO+64, LO+65, LO+66, LO+67, LO+68 },
+ { LO+69, LO+70, LO+71, LO+72, LO+73, LO+74, LO+75 },
+ { LO+76, LO+77, LO+78, LO+79, LO+80, LO+81, LO+82 },
+ { LO+83, LO+84, LO+85, LO+86, LO+87, LO+88, LO+89 },
+ { LO+90, LO+91, LO+92, LO+93, LO+94, LO+95, LO+95 },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, LO+95, LO+95 }
+#undef LO
+}, {
+// Left Hand Mapped Left to Right
+ { 11, 14 }, { 28, 14 }, { 42, 14 }, { 56, 14 }, { 70, 14 }, { 84, 14 }, { 102, 14 },
+ { 11, 28 }, { 28, 28 }, { 42, 28 }, { 56, 28 }, { 70, 28 }, { 84, 28 }, { 98, 25 },
+ { 11, 42 }, { 28, 42 }, { 42, 42 }, { 56, 42 }, { 70, 42 }, { 84, 42 }, { 98, 39 },
+ { 11, 56 }, { 28, 56 }, { 42, 56 }, { 56, 56 }, { 70, 56 }, { 84, 56 }, { 98, 53 },
+ { 11, 70 }, { 28, 70 }, { 42, 70 }, { 56, 70 }, { 70, 70 }, { 83, 87 }, { 93, 97 },
+// Edge Light Left
+ { 0, 66 }, { 0, 52 }, { 0, 38 }, { 0, 24 }, { 0, 10 }, { 31, 0 }, { 38, 0 },
+ { 46, 0 }, { 54, 0 }, { 61, 0 }, { 69, 0 }, { 76, 0 }, { 84, 0 }, { 109, 11 },
+ { 109, 24 }, { 109, 39 }, { 109, 53 }, { 110, 73 }, { 112, 85 }, { 106, 95 }, { 95, 98 },
+ { 83, 91 }, { 71, 84 }, { 58, 77 }, { 42, 74 }, { 28, 74 }, { 14, 74 },
+// Full Hand Left
+#ifdef FULLHAND_ENABLE
+ { 2, 88 }, { 2, 103 }, { 2, 117 }, { 2, 132 }, { 10, 145 }, { 25, 145 }, { 39, 145 },
+ { 54, 145 }, { 69, 145 }, { 79, 136 }, { 87, 124 }, { 94, 111 },
+#endif
+// Left Hand Mapped Right to Left
+ { 213, 14 }, { 196, 14 }, { 182, 14 }, { 168, 14 }, { 154, 14 }, { 140, 14 }, { 122, 14 },
+ { 213, 28 }, { 196, 28 }, { 182, 28 }, { 168, 28 }, { 154, 28 }, { 140, 28 }, { 126, 25 },
+ { 213, 42 }, { 196, 42 }, { 182, 42 }, { 168, 42 }, { 154, 42 }, { 140, 42 }, { 126, 39 },
+ { 213, 56 }, { 196, 56 }, { 182, 56 }, { 168, 56 }, { 154, 56 }, { 140, 56 }, { 126, 53 },
+ { 213, 70 }, { 196, 70 }, { 182, 70 }, { 168, 70 }, { 154, 70 }, { 141, 87 }, { 131, 97 },
+// Edge Light Right
+ { 224, 66 }, { 224, 52 }, { 224, 38 }, { 224, 24 }, { 224, 10 }, { 193, 0 }, { 186, 0 },
+ { 178, 0 }, { 170, 0 }, { 163, 0 }, { 155, 0 }, { 148, 0 }, { 140, 0 }, { 115, 11 },
+ { 115, 24 }, { 115, 39 }, { 115, 53 }, { 114, 73 }, { 112, 85 }, { 118, 95 }, { 129, 98 },
+ { 141, 91 }, { 153, 84 }, { 166, 77 }, { 182, 74 }, { 196, 74 }, { 210, 74 }
+// Full Hand Right
+#ifdef FULLHAND_ENABLE
+ ,{ 222, 88 }, { 222, 103 }, { 222, 117 }, { 222, 132 }, { 214, 145 }, { 199, 145 }, { 185, 145 },
+ { 170, 145 }, { 155, 145 }, { 145, 136 }, { 137, 124 }, { 130, 111 }
+#endif
+}, {
+// Left Hand Mapped Left to Right
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1,
+// Edge Light Left
+ 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2,
+// Full Hand Left
+#ifdef FULLHAND_ENABLE
+ 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2,
+#endif
+// Left Hand Mapped Right to Left
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1,
+// Edge Light Right
+ 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2
+// Full Hand Right
+#ifdef FULLHAND_ENABLE
+ ,2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2
+#endif
+} };
+
+#endif
+
diff --git a/keyboards/rgbkb/sol/rev2/rev2.h b/keyboards/rgbkb/sol/rev2/rev2.h
new file mode 100644
index 00000000000..6f70f09beec
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev2/rev2.h
@@ -0,0 +1 @@
+#pragma once
diff --git a/keyboards/rgbkb/sol/rev2/rules.mk b/keyboards/rgbkb/sol/rev2/rules.mk
new file mode 100644
index 00000000000..87b400fa14e
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev2/rules.mk
@@ -0,0 +1,35 @@
+# RGBKB Sol Rev2 Defaults
+
+# Keycode Options
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+UNICODE_ENABLE = no # Unicode keycodes
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+
+# Debug Options
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+
+# RGB Options
+RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
+RGBLIGHT_ANIMATIONS = no # LED animations
+LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
+
+RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight
+RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects.
+RGB_MATRIX_FRAMEBUFFER_EFFECTS = no # Enable frame buffer effects like the typing heatmap.
+
+RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness for RGBLIGHT or RGB_MATRIX. Otherwise, limited to a safe level for a normal USB-A port
+FULLHAND_ENABLE = no # Enables the additional 24 Full Hand LEDs
+IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
+
+# Misc
+OLED_DRIVER_ENABLE = no # Enable the OLED Driver
+EXTRA_ENCODERS_ENABLE = no # Enables 3 encoders per side (up from 1, not compatible with OLED_DRIVER_ENABLE)
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
+LINK_TIME_OPTIMIZATION_ENABLE = yes # Enable Link Time Optimizations greatly reducing firmware size by disabling the old Macros and Functions features
+
+# Special RGB Matrix, OLED, & Encoder Control Menu!
+RGB_OLED_MENU = no # Enabled by setting this to the encoder index (0-5) you wish to use to control the menu.
+ # Use the RGB_MENU keycode in the keymap for the encoder to advance the menu to the next option.
diff --git a/keyboards/rgbkb/sol/rules.mk b/keyboards/rgbkb/sol/rules.mk
index a3dcfc29030..3be8f0b2291 100644
--- a/keyboards/rgbkb/sol/rules.mk
+++ b/keyboards/rgbkb/sol/rules.mk
@@ -2,41 +2,15 @@
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 = qmk-dfu
# Interrupt driven control endpoint task(+60)
@@ -48,18 +22,4 @@ OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\"
SPLIT_KEYBOARD = yes
ENCODER_ENABLE = yes
-# 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 = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-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
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-
-DEFAULT_FOLDER = rgbkb/sol/rev1
+DEFAULT_FOLDER = rgbkb/sol/rev2
diff --git a/keyboards/rgbkb/sol/sol.h b/keyboards/rgbkb/sol/sol.h
index d26546006c7..1bc87cb0aa4 100644
--- a/keyboards/rgbkb/sol/sol.h
+++ b/keyboards/rgbkb/sol/sol.h
@@ -3,6 +3,8 @@
#include "quantum.h"
#ifdef KEYBOARD_rgbkb_sol_rev1
#include "rev1.h"
+#else
+#include "rev2.h"
#endif
@@ -29,6 +31,32 @@
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, R50, R56 } \
}
+#define ENCODER_LAYOUT( \
+ E10, E11, \
+ E20, E21 \
+) \
+{ \
+ { E10, E11 }, \
+ { E20, E21 } \
+}
+
+#define EXTRA_ENCODER_LAYOUT( \
+ E10, E11, \
+ E20, E21, \
+ E30, E31, \
+ E40, E41, \
+ E50, E51, \
+ E60, E61 \
+) \
+{ \
+ { E10, E11 }, \
+ { E20, E21 }, \
+ { E30, E31 }, \
+ { E40, E41 }, \
+ { E50, E51 }, \
+ { E60, E61 } \
+}
+
#define KC________ KC_TRNS
#define KC_RGB_MOD RGB_MOD
#define KC_FN FN
diff --git a/keyboards/satan/keymaps/iso_split_rshift/resetboard.sh b/keyboards/satan/keymaps/iso_split_rshift/resetboard.sh
deleted file mode 100755
index d955ccf545a..00000000000
--- a/keyboards/satan/keymaps/iso_split_rshift/resetboard.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-sudo dfu-programmer atmega32u4 erase --force
-sudo dfu-programmer atmega32u4 flash clear_flash.hex
-sudo dfu-programmer atmega32u4 reset
diff --git a/keyboards/shiro/info.json b/keyboards/shiro/info.json
index 71d4bb551d5..944cdb84c53 100644
--- a/keyboards/shiro/info.json
+++ b/keyboards/shiro/info.json
@@ -8,106 +8,21 @@
"LAYOUT": {
"key_count": 15,
"layout": [
- {
- "x": 0,
- "y": 0
- },
- {
- "x": 1,
- "y": 0
- },
- {
- "x": 2,
- "y": 0
- },
- {
- "x": 3,
- "y": 0
- },
- {
- "x": 4,
- "y": 0
- },
- {
- "x": 0,
- "y": 1
- },
- {
- "x": 1,
- "y": 1
- },
- {
- "x": 2,
- "y": 1
- },
- {
- "x": 3,
- "y": 1
- },
- {
- "x": 4,
- "y": 1
- },
- {
- "x": 0,
- "y": 2
- },
- {
- "x": 1,
- "y": 2
- },
- {
- "x": 2,
- "y": 2
- },
- {
- "x": 3,
- "y": 2
- },
- {
- "x": 4,
- "y": 2
- },
- {
- "x": 0,
- "y": 3
- },
- {
- "x": 1,
- "y": 3
- },
- {
- "x": 2,
- "y": 3
- },
- {
- "x": 3,
- "y": 3
- },
- {
- "x": 4,
- "y": 3
- },
- {
- "x": 0,
- "y": 4
- },
- {
- "x": 1,
- "y": 4
- },
- {
- "x": 2,
- "y": 4
- },
- {
- "x": 3,
- "y": 4
- },
- {
- "x": 4,
- "y": 4
- }
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 0, "y": 3},
+ {"x": 1, "y": 3},
+ {"x": 2, "y": 3},
+ {"x": 0, "y": 4},
+ {"x": 1, "y": 4},
+ {"x": 2, "y": 4}
]
}
}
diff --git a/keyboards/singa/config.h b/keyboards/singa/config.h
index 29110bd4ea4..dda54ccf4c9 100644
--- a/keyboards/singa/config.h
+++ b/keyboards/singa/config.h
@@ -36,6 +36,5 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define NO_BACKLIGHT_CLOCK
#define BACKLIGHT_LEVELS 1
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/singa/readme.md b/keyboards/singa/readme.md
index 4400717c800..faeb816ec11 100644
--- a/keyboards/singa/readme.md
+++ b/keyboards/singa/readme.md
@@ -20,6 +20,8 @@ Flashing
ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods.
+**Reset Key:** Hold down the key located at `K00`, commonly programmed as `Esc` while plugging in the keyboard.
+
Windows:
1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash).
2. Place your keyboard into reset.
@@ -41,9 +43,10 @@ macOS:
brew install python3
pip3 install pyusb
brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
+ ```
4. Place your keyboard into reset.
5. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file.
-See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
+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/skog/config.h b/keyboards/skog/config.h
index f518da8c9b0..ed7c558db73 100644
--- a/keyboards/skog/config.h
+++ b/keyboards/skog/config.h
@@ -34,6 +34,5 @@ along with this program. If not, see .
#define BACKLIGHT_LEVELS 5
#define NO_UART 1
-#define BOOTLOADHID_BOOTLOADER 1
#endif
diff --git a/keyboards/smk60/config.h b/keyboards/smk60/config.h
new file mode 100644
index 00000000000..b30912f9085
--- /dev/null
+++ b/keyboards/smk60/config.h
@@ -0,0 +1,53 @@
+/**
+ * config.h
+ *
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xDEAD
+#define PRODUCT_ID 0x6585
+#define DEVICE_VER 0x0001
+#define MANUFACTURER astro
+#define PRODUCT smk 60
+#define DESCRIPTION 60% keyboard for smk switch
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B0, F0, F1, F5, B2 }
+#define MATRIX_COL_PINS { B4, B5, B6, C6, C7, F6, F7, F4, B1, B3, D0, D1, D2, D3, D5}
+#define UNUSED_PINS
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/*
+ * 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
+
+//rgb light setting
+#define RGBLED_NUM 4
+#define RGB_DI_PIN E6
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/smk60/info.json b/keyboards/smk60/info.json
new file mode 100644
index 00000000000..f4a5e42bdad
--- /dev/null
+++ b/keyboards/smk60/info.json
@@ -0,0 +1,21 @@
+{
+ "keyboard_name": "rgb60",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 15,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_60_wkl": {
+ "key_count":61,
+ "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
+ },
+ "LAYOUT_60_ansi": {
+ "key_count":61,
+ "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
+ },
+ "LAYOUT_60_hhkb": {
+ "key_count":60,
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/smk60/keymaps/60_ansi/keymap.c b/keyboards/smk60/keymaps/60_ansi/keymap.c
new file mode 100644
index 00000000000..95d2fb0f262
--- /dev/null
+++ b/keyboards/smk60/keymaps/60_ansi/keymap.c
@@ -0,0 +1,29 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Layer 0: Default Layer
+ * ,-----------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BSp |
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
+ * |-----------------------------------------------------------|
+ * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter |
+ * |-----------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0|
+ * |-----------------------------------------------------------'
+ * |Ctrl |Gui|Alt | Space |Alt |Gui|Fn |Ctrl |
+ * `-----------------------------------------------------------'
+ */
+ [0] = LAYOUT_60_ansi(
+ 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_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_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+ [1] = LAYOUT_60_ansi(
+ 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,_______,
+ RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______, _______, _______,_______,_______,_______),
+};
diff --git a/keyboards/smk60/keymaps/60_ansi_split_bs_shift/keymap.c b/keyboards/smk60/keymaps/60_ansi_split_bs_shift/keymap.c
new file mode 100644
index 00000000000..095f98d151a
--- /dev/null
+++ b/keyboards/smk60/keymaps/60_ansi_split_bs_shift/keymap.c
@@ -0,0 +1,16 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_ansi_split_bs_shift(
+ 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_LCTRL, 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, KC_END,
+ KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, KC_RGUI, TG(1), KC_RCTL),
+ [1] = LAYOUT_60_ansi_split_bs_shift(
+ _______, 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,
+ RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
+ _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______, _______, _______,_______,TG(0),_______),
+};
diff --git a/keyboards/smk60/keymaps/60_hhkb/keymap.c b/keyboards/smk60/keymaps/60_hhkb/keymap.c
new file mode 100644
index 00000000000..2732abc06bb
--- /dev/null
+++ b/keyboards/smk60/keymaps/60_hhkb/keymap.c
@@ -0,0 +1,16 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_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_LCTRL, 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, KC_BSLS,
+ KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1)),
+ [1] = LAYOUT_60_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,_______,_______,
+ RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______, _______, _______,_______),
+};
diff --git a/keyboards/smk60/keymaps/60_iso/keymap.c b/keyboards/smk60/keymaps/60_iso/keymap.c
new file mode 100644
index 00000000000..684bbb62f48
--- /dev/null
+++ b/keyboards/smk60/keymaps/60_iso/keymap.c
@@ -0,0 +1,16 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_iso(
+ 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_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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_GRV, KC_ENT,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
+ KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+ [1] = LAYOUT_60_iso(
+ 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, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT, _______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______, _______, _______,_______,_______,_______),
+};
diff --git a/keyboards/smk60/keymaps/60_wkl/keymap.c b/keyboards/smk60/keymaps/60_wkl/keymap.c
new file mode 100644
index 00000000000..979fc93d67a
--- /dev/null
+++ b/keyboards/smk60/keymaps/60_wkl/keymap.c
@@ -0,0 +1,16 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_wkl(
+ 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_BSLS,
+ 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_LCTRL, 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, KC_DEL,
+ KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, TG(1), KC_RCTL),
+ [1] = LAYOUT_60_wkl(
+ 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,
+ RESET, RGB_TOG, RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
+ _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______, _______, _______,TG(0),_______),
+};
diff --git a/keyboards/smk60/keymaps/60_wkl_split_bs/keymap.c b/keyboards/smk60/keymaps/60_wkl_split_bs/keymap.c
new file mode 100644
index 00000000000..22405cdc5f7
--- /dev/null
+++ b/keyboards/smk60/keymaps/60_wkl_split_bs/keymap.c
@@ -0,0 +1,16 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_wkl_split_bs(
+ 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_LCTRL, 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, KC_END,
+ KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, TG(1), KC_RCTL),
+ [1] = LAYOUT_60_wkl_split_bs(
+ _______, 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,
+ RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
+ _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______, _______, _______,TG(0),_______),
+};
diff --git a/keyboards/smk60/keymaps/default/keymap.c b/keyboards/smk60/keymaps/default/keymap.c
new file mode 100644
index 00000000000..95d2fb0f262
--- /dev/null
+++ b/keyboards/smk60/keymaps/default/keymap.c
@@ -0,0 +1,29 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Layer 0: Default Layer
+ * ,-----------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BSp |
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
+ * |-----------------------------------------------------------|
+ * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter |
+ * |-----------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0|
+ * |-----------------------------------------------------------'
+ * |Ctrl |Gui|Alt | Space |Alt |Gui|Fn |Ctrl |
+ * `-----------------------------------------------------------'
+ */
+ [0] = LAYOUT_60_ansi(
+ 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_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_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+ [1] = LAYOUT_60_ansi(
+ 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,_______,
+ RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______, _______, _______,_______,_______,_______),
+};
diff --git a/keyboards/smk60/readme.md b/keyboards/smk60/readme.md
new file mode 100644
index 00000000000..59470705c23
--- /dev/null
+++ b/keyboards/smk60/readme.md
@@ -0,0 +1,12 @@
+# 60% pcb for smk 2nd switch
+
+A gh60 campatible pcb for [smk 2nd switch](https://deskthority.net/wiki/SMK_second_generation)
+
+Keyboard Maintainer: [astro](https://github.com/yulei)
+Hardware Supported: GH60 campatible
+
+Make example for this keyboard (after setting up your build environment):
+
+ make smk60: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/smk60/rules.mk b/keyboards/smk60/rules.mk
new file mode 100644
index 00000000000..751dbec8411
--- /dev/null
+++ b/keyboards/smk60/rules.mk
@@ -0,0 +1,76 @@
+# 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 Size in *bytes*
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+BOOTLOADER = atmel-dfu
+#OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+# Do not put the microcontroller into power saving mode
+# when we get USB suspend event. We want it to keep updating
+# backlight effects.
+#OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # 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
+RGBLIGHT_ENABLE = yes # Use RGB bottom light
+LAYOUTS = 60_ansi 60_hhkb 60_iso
diff --git a/keyboards/smk60/smk60.c b/keyboards/smk60/smk60.c
new file mode 100644
index 00000000000..947bec03a0d
--- /dev/null
+++ b/keyboards/smk60/smk60.c
@@ -0,0 +1,5 @@
+/**
+ * smk60.c
+ */
+
+#include "smk60.h"
diff --git a/keyboards/smk60/smk60.h b/keyboards/smk60/smk60.h
new file mode 100644
index 00000000000..2e71c965380
--- /dev/null
+++ b/keyboards/smk60/smk60.h
@@ -0,0 +1,98 @@
+ /**
+ * smk60.h
+ *
+ */
+#pragma once
+
+#include "quantum.h"
+
+// This a shortcut to help you visually see your layout.
+// The first section contains all of the arguements
+// The second converts the arguments into a two-dimensional array
+#define LAYOUT_60_ansi( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k42, k43, k47, k48, k49, k4a, k4b \
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, k0e}, \
+ {k10, k11, k12, k13, k14, k15, k16, KC_NO, k17, k18, k19, k1a, k1b, k1c, k1e}, \
+ {k20, k22, k23, k24, k25, k26, k27, KC_NO, k28, k29, k2a, k2b, k2c, KC_NO, k2e}, \
+ {k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3c, KC_NO}, \
+ {k40, k42, k43, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, k48, k49, KC_NO, k4a, k4b} \
+}
+
+#define LAYOUT_60_iso( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c,\
+ k40, k42, k43, k47, k48, k49, k4a, k4b \
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, k0e}, \
+ {k10, k11, k12, k13, k14, k15, k16, KC_NO, k17, k18, k19, k1a, k1b, k1c, KC_NO}, \
+ {k20, k22, k23, k24, k25, k26, k27, KC_NO, k28, k29, k2a, k2b, k2c, k2d, k2e}, \
+ {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3c, KC_NO}, \
+ {k40, k42, k43, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, k48, k49, KC_NO, k4a, k4b} \
+}
+
+#define LAYOUT_60_wkl( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k42, k43, k47, k49, k4a, k4b \
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, k0e}, \
+ {k10, k11, k12, k13, k14, k15, k16, KC_NO, k17, k18, k19, k1a, k1b, k1c, k1e}, \
+ {k20, k22, k23, k24, k25, k26, k27, KC_NO, k28, k29, k2a, k2b, k2c, KC_NO, k2e}, \
+ {k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3c, k3d}, \
+ {k40, k42, k43, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, KC_NO, k49, KC_NO, k4a, k4b} \
+}
+
+#define LAYOUT_60_hhkb( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k42, k43, k47, k49, k4a \
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e}, \
+ {k10, k11, k12, k13, k14, k15, k16, KC_NO, k17, k18, k19, k1a, k1b, k1c, k1e}, \
+ {k20, k22, k23, k24, k25, k26, k27, KC_NO, k28, k29, k2a, k2b, k2c, KC_NO, k2e}, \
+ {k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3c, k3d}, \
+ {KC_NO, k42, k43, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, KC_NO, k49, KC_NO, k4a, KC_NO} \
+}
+#define LAYOUT_60_wkl_split_bs( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k42, k43, k47, k49, k4a, k4b \
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e}, \
+ {k10, k11, k12, k13, k14, k15, k16, KC_NO, k17, k18, k19, k1a, k1b, k1c, k1e}, \
+ {k20, k22, k23, k24, k25, k26, k27, KC_NO, k28, k29, k2a, k2b, k2c, KC_NO, k2e}, \
+ {k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3c, k3d}, \
+ {k40, k42, k43, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, KC_NO, k49, KC_NO, k4a, k4b} \
+}
+#define LAYOUT_60_ansi_split_bs_shift( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k42, k43, k47, k48, k49, k4a, k4b \
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e}, \
+ {k10, k11, k12, k13, k14, k15, k16, KC_NO, k17, k18, k19, k1a, k1b, k1c, k1e}, \
+ {k20, k22, k23, k24, k25, k26, k27, KC_NO, k28, k29, k2a, k2b, k2c, KC_NO, k2e}, \
+ {k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3c, k3d}, \
+ {k40, k42, k43, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, k48, k49, KC_NO, k4a, k4b} \
+}
diff --git a/keyboards/snagpad/info.json b/keyboards/snagpad/info.json
index f6b19ee81ee..6e3ab601a0a 100644
--- a/keyboards/snagpad/info.json
+++ b/keyboards/snagpad/info.json
@@ -7,11 +7,50 @@
"height": 5,
"layouts": {
- "LAYOUT_ortho_5x4": {
- "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}]
- },
+ "LAYOUT_ortho_5x4": {
+ "layout": [
+ {"label":"Num Lock", "x":0, "y":0},
+ {"label":"/", "x":1, "y":0},
+ {"label":"*", "x":2, "y":0},
+ {"label":"-", "x":3, "y":0},
+ {"label":"7", "x":0, "y":1},
+ {"label":"8", "x":1, "y":1},
+ {"label":"9", "x":2, "y":1},
+ {"label":"+", "x":3, "y":1},
+ {"label":"4", "x":0, "y":2},
+ {"label":"5", "x":1, "y":2},
+ {"label":"6", "x":2, "y":2},
+ {"label":"+", "x":3, "y":2},
+ {"label":"1", "x":0, "y":3},
+ {"label":"2", "x":1, "y":3},
+ {"label":"3", "x":2, "y":3},
+ {"label":"Enter", "x":3, "y":3},
+ {"label":"0", "x":0, "y":4},
+ {"label":"0", "x":1, "y":4},
+ {"label":".", "x":2, "y":4},
+ {"label":"Enter", "x":3, "y":4}
+ ]
+ },
"LAYOUT_numpad_5x4": {
- "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1, "h":2}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3, "h":2}, {"x":0, "y":4, "w":2}, {"x":2, "y":4}]
- }
+ "layout": [
+ {"label":"Num Lock", "x":0, "y":0},
+ {"label":"/", "x":1, "y":0},
+ {"label":"*", "x":2, "y":0},
+ {"label":"-", "x":3, "y":0},
+ {"label":"7", "x":0, "y":1},
+ {"label":"8", "x":1, "y":1},
+ {"label":"9", "x":2, "y":1},
+ {"label":"4", "x":0, "y":2},
+ {"label":"5", "x":1, "y":2},
+ {"label":"6", "x":2, "y":2},
+ {"label":"+", "x":3, "y":1, "h":2},
+ {"label":"1", "x":0, "y":3},
+ {"label":"2", "x":1, "y":3},
+ {"label":"3", "x":2, "y":3},
+ {"label":"0", "x":0, "y":4, "w":2},
+ {"label":".", "x":2, "y":4},
+ {"label":"Enter", "x":3, "y":3, "h":2}
+ ]
+ }
}
}
diff --git a/keyboards/snagpad/readme.md b/keyboards/snagpad/readme.md
index eeafceba9a7..b59bd758860 100644
--- a/keyboards/snagpad/readme.md
+++ b/keyboards/snagpad/readme.md
@@ -1,21 +1,21 @@
# Snagpad
-QMK for Snagpad
-This PCB can be used as a standard numpad, or a ortho 5x4 macropad.
+A five-row PCB that can be built as a standard numpad or an ortholinear 5x4 macropad. Can be built as single PCB with custom case, or as two PCB style with standoffs. Requires a Pro Micro.
-For QMK Configurator, the info.json is utilised.
-- For 2U keys on numpad, the first 1u row/column key assignment is the same as the 2u position.
+Keyboard Maintainer: [Flehrad](https://github.com/flehrad)
+Hardware Supported: Snagpad PCB, Pro Micro
+Hardware Availability: [GitHub](https://github.com/flehrad/Snagpad)
-Build requires a pro micro.
+Make example for this keyboard (after setting up your build environment):
-Can be built as single PCB with custom case, or as two PCB style with standoffs.
+ make snagpad:default
-If you like this simple PCB and want to make a donation, you can at https://paypal.me/theboardpodcast
+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).
+
+If you like this simple PCB and want to make a donation, you can do so at https://paypal.me/theboardpodcast.
Check out our:
-YouTube (https://www.youtube.com/channel/UCg98oJZNffR9nDLJNkorjqw)
-
-Podcast (www.libsyn.com/theboardpodcast)
-
-Patreon (www.patreon.com/theboardpodcast)
+- [YouTube](https://www.youtube.com/channel/UCg98oJZNffR9nDLJNkorjqw)
+- [Podcast](https://podcasts.apple.com/au/podcast/theboard-mechanical-keyboard/id1147089749?mt=2)
+- [Patreon](https://www.patreon.com/theboardpodcast)
diff --git a/keyboards/snagpad/snagpad.h b/keyboards/snagpad/snagpad.h
index d6a62ddf7ef..f1e5e34e62a 100644
--- a/keyboards/snagpad/snagpad.h
+++ b/keyboards/snagpad/snagpad.h
@@ -3,28 +3,28 @@
#include "quantum.h"
#define LAYOUT_ortho_5x4( \
- K00, K01, K02, K03, \
- K10, K11, K12, K13, \
- K20, K21, K22, K23, \
- K30, K31, K32, K33, \
- K40, K41, K42, K43 \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, K33, \
+ K40, K41, K42, K43 \
) { \
- { K00, K01, K02, K03 }, \
- { K10, K11, K12, K13 }, \
- { K20, K21, K22, K23 }, \
- { K30, K31, K32, K33 }, \
- { K40, K41, K42, K43 } \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, K33 }, \
+ { K40, K41, K42, K43 } \
}
#define LAYOUT_numpad_5x4( \
- K00, K01, K02, K03, \
- K10, K11, K12, \
- K20, K21, K22, K13, \
- K30, K31, K32, \
- K40, K42, K33 \
+ K00, K01, K02, K03, \
+ K10, K11, K12, \
+ K20, K21, K22, K13, \
+ K30, K31, K32, \
+ K40, K42, K33 \
) { \
- { K00, K01, K02, K03 }, \
- { K10, K11, K12, K13 }, \
- { K20, K21, K22, KC_NO }, \
- { K30, K31, K32, K33 }, \
- { K40, KC_NO, K42, KC_NO } \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, KC_NO }, \
+ { K30, K31, K32, K33 }, \
+ { K40, KC_NO, K42, KC_NO } \
}
diff --git a/keyboards/snampad/info.json b/keyboards/snampad/info.json
index e69de29bb2d..2974eab861a 100644
--- a/keyboards/snampad/info.json
+++ b/keyboards/snampad/info.json
@@ -0,0 +1,35 @@
+{
+ "keyboard_name": "snampad",
+ "url": "",
+ "maintainer": "ptillemans",
+ "width": 4,
+ "height": 6,
+ "layouts": {
+ "LAYOUT_numpad_6x4": {
+ "key_count": 21,
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"Tab", "x":1, "y":0},
+ {"label":"Fn", "x":2, "y":0},
+ {"label":"Back", "x":3, "y":0},
+ {"label":"Num Lock", "x":0, "y":1},
+ {"label":"/", "x":1, "y":1},
+ {"label":"*", "x":2, "y":1},
+ {"label":"-", "x":3, "y":1},
+ {"label":"7", "x":0, "y":2},
+ {"label":"8", "x":1, "y":2},
+ {"label":"9", "x":2, "y":2},
+ {"label":"4", "x":0, "y":3},
+ {"label":"5", "x":1, "y":3},
+ {"label":"6", "x":2, "y":3},
+ {"label":"+", "x":3, "y":2, "h":2},
+ {"label":"1", "x":0, "y":4},
+ {"label":"2", "x":1, "y":4},
+ {"label":"3", "x":2, "y":4},
+ {"label":"0", "x":0, "y":5, "w":2},
+ {"label":".", "x":2, "y":5},
+ {"label":"Enter", "x":3, "y":4, "h":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/southpole/info.json b/keyboards/southpole/info.json
new file mode 100644
index 00000000000..4078824aeb7
--- /dev/null
+++ b/keyboards/southpole/info.json
@@ -0,0 +1,98 @@
+{
+ "keyboard_name": "southpole",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 20.5,
+ "height": 5,
+ "layouts": {
+ "LAYOUT": {
+ "key_count": 84,
+ "layout": [
+ {"label":"Num Lock", "x":0, "y":0},
+ {"label":"/", "x":1, "y":0},
+ {"label":"*", "x":2, "y":0},
+ {"label":"-", "x":3, "y":0},
+ {"label":"Esc", "x":4.5, "y":0},
+ {"label":"1", "x":5.5, "y":0},
+ {"label":"2", "x":6.5, "y":0},
+ {"label":"3", "x":7.5, "y":0},
+ {"label":"4", "x":8.5, "y":0},
+ {"label":"5", "x":9.5, "y":0},
+ {"label":"6", "x":10.5, "y":0},
+ {"label":"7", "x":11.5, "y":0},
+ {"label":"8", "x":12.5, "y":0},
+ {"label":"9", "x":13.5, "y":0},
+ {"label":"0", "x":14.5, "y":0},
+ {"label":"-", "x":15.5, "y":0},
+ {"label":"=", "x":16.5, "y":0},
+ {"label":"\\", "x":17.5, "y":0},
+ {"label":"Delete", "x":18.5, "y":0},
+ {"label":"Insert", "x":19.5, "y":0},
+ {"label":"7", "x":0, "y":1},
+ {"label":"8", "x":1, "y":1},
+ {"label":"9", "x":2, "y":1},
+ {"label":"+", "x":3, "y":1, "h":2},
+ {"label":"Tab", "x":4.5, "y":1, "w":1.5},
+ {"label":"Q", "x":6, "y":1},
+ {"label":"W", "x":7, "y":1},
+ {"label":"E", "x":8, "y":1},
+ {"label":"R", "x":9, "y":1},
+ {"label":"T", "x":10, "y":1},
+ {"label":"Y", "x":11, "y":1},
+ {"label":"U", "x":12, "y":1},
+ {"label":"I", "x":13, "y":1},
+ {"label":"O", "x":14, "y":1},
+ {"label":"P", "x":15, "y":1},
+ {"label":"[", "x":16, "y":1},
+ {"label":"]", "x":17, "y":1},
+ {"label":"Backspace", "x":18, "y":1, "w":1.5},
+ {"label":"Vol +", "x":19.5, "y":1},
+ {"label":"4", "x":0, "y":2},
+ {"label":"5", "x":1, "y":2},
+ {"label":"6", "x":2, "y":2},
+ {"label":"Enter", "x":3, "y":3, "h":2},
+ {"label":"Caps Lock", "x":4.5, "y":2, "w":1.75},
+ {"label":"A", "x":6.25, "y":2},
+ {"label":"S", "x":7.25, "y":2},
+ {"label":"D", "x":8.25, "y":2},
+ {"label":"F", "x":9.25, "y":2},
+ {"label":"G", "x":10.25, "y":2},
+ {"label":"H", "x":11.25, "y":2},
+ {"label":"J", "x":12.25, "y":2},
+ {"label":"K", "x":13.25, "y":2},
+ {"label":"L", "x":14.25, "y":2},
+ {"label":";", "x":15.25, "y":2},
+ {"label":"'", "x":16.25, "y":2},
+ {"label":"Enter", "x":17.25, "y":2, "w":2.25},
+ {"label":"Vol -", "x":19.5, "y":2},
+ {"label":"1", "x":0, "y":3},
+ {"label":"2", "x":1, "y":3},
+ {"label":"3", "x":2, "y":3},
+ {"label":"Shift", "x":4.5, "y":3, "w":2.25},
+ {"label":"Z", "x":6.75, "y":3},
+ {"label":"X", "x":7.75, "y":3},
+ {"label":"C", "x":8.75, "y":3},
+ {"label":"V", "x":9.75, "y":3},
+ {"label":"B", "x":10.75, "y":3},
+ {"label":"N", "x":11.75, "y":3},
+ {"label":"M", "x":12.75, "y":3},
+ {"label":",", "x":13.75, "y":3},
+ {"label":".", "x":14.75, "y":3},
+ {"label":"/", "x":15.75, "y":3},
+ {"label":"Shift", "x":16.75, "y":3, "w":1.75},
+ {"label":"Up", "x":18.5, "y":3},
+ {"label":"Mute", "x":19.5, "y":3},
+ {"label":"0", "x":0, "y":4, "w":2},
+ {"label":".", "x":2, "y":4},
+ {"label":"Ctrl", "x":4.5, "y":4, "w":1.25},
+ {"label":"GUI", "x":5.75, "y":4, "w":1.25},
+ {"label":"Alt", "x":7, "y":4, "w":1.25},
+ {"label":"Space", "x":8.25, "y":4, "w":7},
+ {"label":"Fn", "x":15.25, "y":4, "w":1.5},
+ {"label":"Left", "x":17.5, "y":4},
+ {"label":"Down", "x":18.5, "y":4},
+ {"label":"Right", "x":19.5, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/suihankey/suihankey.c b/keyboards/suihankey/alpha/alpha.c
similarity index 98%
rename from keyboards/suihankey/suihankey.c
rename to keyboards/suihankey/alpha/alpha.c
index 621e21a7b94..3d2d1de7790 100644
--- a/keyboards/suihankey/suihankey.c
+++ b/keyboards/suihankey/alpha/alpha.c
@@ -13,7 +13,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#include "suihankey.h"
+#include "alpha.h"
// Optional override functions below.
// You can leave any or all of these undefined.
diff --git a/keyboards/suihankey/alpha/alpha.h b/keyboards/suihankey/alpha/alpha.h
new file mode 100644
index 00000000000..02bba471045
--- /dev/null
+++ b/keyboards/suihankey/alpha/alpha.h
@@ -0,0 +1,39 @@
+/* Copyright 2019 kakunpc
+ *
+ * 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"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the Leys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, \
+ L10, L11, L12, L13, L14, \
+ L20, L21, L22, L23, L24, \
+ L30, L31, L32 \
+) \
+{ \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { L30, L31, L32 }, \
+}
diff --git a/keyboards/suihankey/alpha/config.h b/keyboards/suihankey/alpha/config.h
new file mode 100644
index 00000000000..f7f4aee1189
--- /dev/null
+++ b/keyboards/suihankey/alpha/config.h
@@ -0,0 +1,248 @@
+/*
+Copyright 2019 kakunpc
+
+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 kakunpc
+#define PRODUCT Suihankey
+#define DESCRIPTION A custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 5
+
+/*
+ * 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 { F4, F5, F6, F7 }
+#define MATRIX_COL_PINS { D4, C6, D7, E6, B4 }
+#define UNUSED_PINS
+// #define USE_I2C
+// #undef USE_SERIAL
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+#define SPLIT_HAND_PIN D2
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 18
+ #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
+
+/* 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
+
+/* 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.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
+
+/* 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_HELP H
+//#define MAGIC_KEY_HELP_ALT 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 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#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 B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#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
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#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_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
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
+
+// #define RGBLED_SPLIT {18,18}
diff --git a/keyboards/suihankey/keymaps/default/config.h b/keyboards/suihankey/alpha/keymaps/default/config.h
similarity index 100%
rename from keyboards/suihankey/keymaps/default/config.h
rename to keyboards/suihankey/alpha/keymaps/default/config.h
diff --git a/keyboards/suihankey/alpha/keymaps/default/keymap.c b/keyboards/suihankey/alpha/keymaps/default/keymap.c
new file mode 100644
index 00000000000..e7c7da4b8bd
--- /dev/null
+++ b/keyboards/suihankey/alpha/keymaps/default/keymap.c
@@ -0,0 +1,100 @@
+/* Copyright 2019 kakunpc
+ *
+ * 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
+
+enum layers{
+ BASE,
+ COMMAND,
+ NUMBER,
+ FUNCTION
+};
+
+#define KC_CMD_SP LT(COMMAND,KC_SPC)
+#define KC_CMD_ET LT(COMMAND,KC_ENTER)
+#define KC_NUM_ALT LT(NUMBER,KC_LALT)
+#define KC_NUM_BS LT(NUMBER,KC_BSPC)
+#define KC_SET_CTRL LT(FUNCTION,KC_LCTRL)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT( /* Base */
+ KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_Z, KC_X, KC_C, KC_V, KC_B,
+ KC_SET_CTRL, KC_NUM_ALT, KC_CMD_SP
+ ),
+ [COMMAND] = LAYOUT( /* Base */
+ KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_A, KC_S, KC_D, KC_F, KC_G,
+ LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), LCTL(KC_B),
+ KC_NO, KC_NO, KC_NO
+ ),
+ [NUMBER] = LAYOUT( /* Base */
+ KC_1, KC_2, KC_3, KC_4, KC_5,
+ KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO
+ ),
+ [FUNCTION] = LAYOUT( /* Base */
+ 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_TOG, RGB_MOD, RGB_RMOD,
+ KC_NO, KC_NO, KC_NO
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
+
+#ifdef OLED_DRIVER_ENABLE
+void oled_task_user(void) {
+ oled_write_P(PSTR("Layer: "), false);
+ switch (biton32(layer_state)) {
+ case BASE:
+ oled_write_P(PSTR("Default\n"), false);
+ break;
+ case COMMAND:
+ oled_write_P(PSTR("COMMAND\n"), false);
+ break;
+ case NUMBER:
+ oled_write_P(PSTR("NUMBER\n"), false);
+ break;
+ case FUNCTION:
+ 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_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
+ oled_write_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
+ oled_write_P(IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
+}
+#endif
diff --git a/keyboards/suihankey/keymaps/default/readme.md b/keyboards/suihankey/alpha/keymaps/default/readme.md
similarity index 100%
rename from keyboards/suihankey/keymaps/default/readme.md
rename to keyboards/suihankey/alpha/keymaps/default/readme.md
diff --git a/keyboards/suihankey/alpha/readme.md b/keyboards/suihankey/alpha/readme.md
new file mode 100644
index 00000000000..fcba60ff1d5
--- /dev/null
+++ b/keyboards/suihankey/alpha/readme.md
@@ -0,0 +1,18 @@
+# suihankey_alpha
+
+
+
+Compact with only 18 keys is a concept keyboard.
+Supports OLED and RGBLED (optional)
+
+
+
+Keyboard Maintainer: [kakunpc](https://github.com/kakunpc)
+Hardware Supported: suihankey_alpha, promicro
+Hardware Availability: booth([@kakunpc](https://kakunpc.booth.pm/))
+
+Make example for this keyboard (after setting up your build environment):
+
+ make suihankey/alpha: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/suihankey/alpha/rules.mk b/keyboards/suihankey/alpha/rules.mk
new file mode 100644
index 00000000000..d4580058ec2
--- /dev/null
+++ b/keyboards/suihankey/alpha/rules.mk
@@ -0,0 +1,82 @@
+# 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
+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)
+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 = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = yes # 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)
+OLED_DRIVER_ENABLE = yes
+SPLIT_KEYBOARD = no
diff --git a/keyboards/suihankey/info.json b/keyboards/suihankey/info.json
index 4580f05401d..3756e3d5fec 100644
--- a/keyboards/suihankey/info.json
+++ b/keyboards/suihankey/info.json
@@ -2,11 +2,11 @@
"keyboard_name": "suihankey",
"url": "https://kakunpc.booth.pm/",
"maintainer": "kakunpc",
- "width": 12,
- "height": 4,
+ "width": 6.4,
+ "height": 4.85,
"layouts": {
"LAYOUT": {
- "layout": [{"label":"1", "x":0, "y":0}, {"label":"2", "x":1, "y":0}, {"label":"3", "x":2, "y":0}, {"label":"4", "x":3, "y":0}, {"label":"5", "x":4, "y":0}, {"label":"19", "x":7, "y":0}, {"label":"20", "x":8, "y":0}, {"label":"21", "x":9, "y":0}, {"label":"22", "x":10, "y":0}, {"label":"23", "x":11, "y":0}, {"label":"6", "x":0, "y":1}, {"label":"7", "x":1, "y":1}, {"label":"8", "x":2, "y":1}, {"label":"9", "x":3, "y":1}, {"label":"10", "x":4, "y":1}, {"label":"24", "x":7, "y":1}, {"label":"25", "x":8, "y":1}, {"label":"26", "x":9, "y":1}, {"label":"27", "x":10, "y":1}, {"label":"28", "x":11, "y":1}, {"label":"11", "x":0, "y":2}, {"label":"12", "x":1, "y":2}, {"label":"13", "x":2, "y":2}, {"label":"14", "x":3, "y":2}, {"label":"15", "x":4, "y":2}, {"label":"29", "x":7, "y":2}, {"label":"30", "x":8, "y":2}, {"label":"31", "x":9, "y":2}, {"label":"32", "x":10, "y":2}, {"label":"33", "x":11, "y":2}, {"label":"16", "x":2, "y":3}, {"label":"17", "x":3, "y":3}, {"label":"18", "x":4, "y":3}, {"label":"34", "x":7, "y":3}, {"label":"35", "x":8, "y":3}, {"label":"36", "x":9, "y":3}]
+ "layout": [{"label":"1", "x":0, "y":0.375}, {"label":"2", "x":1, "y":0.125}, {"label":"3", "x":2, "y":0}, {"label":"4", "x":3, "y":0.125}, {"label":"5", "x":4, "y":0.25}, {"label":"6", "x":0, "y":1.375}, {"label":"7", "x":1, "y":1.125}, {"label":"8", "x":2, "y":1}, {"label":"9", "x":3, "y":1.125}, {"label":"10", "x":4, "y":1.25}, {"label":"11", "x":0, "y":2.375}, {"label":"12", "x":1, "y":2.125}, {"label":"13", "x":2, "y":2}, {"label":"14", "x":3, "y":2.125}, {"label":"15", "x":4, "y":2.25}, {"label":"16", "x":3.4, "y":3.25}, {"label":"17", "x":4.4, "y":3.55}, {"label":"18", "x":5.4, "y":3.85}]
}
}
}
diff --git a/keyboards/suihankey/rev1/config.h b/keyboards/suihankey/rev1/config.h
new file mode 100644
index 00000000000..4e14551257f
--- /dev/null
+++ b/keyboards/suihankey/rev1/config.h
@@ -0,0 +1,248 @@
+/*
+Copyright 2019 kakunpc
+
+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 kakunpc
+#define PRODUCT Suihankey
+#define DESCRIPTION A custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 4
+
+/*
+ * 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 { D4, C6, D7, E6, B4 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7 }
+#define UNUSED_PINS
+//#define USE_I2C
+//#undef USE_SERIAL
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+#define SPLIT_HAND_PIN D2
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 18
+ #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
+
+/* 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
+
+/* 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.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
+
+/* 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_HELP H
+//#define MAGIC_KEY_HELP_ALT 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 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#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 B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#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
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#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_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
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
+
+// #define RGBLED_SPLIT {18,18}
diff --git a/keyboards/suihankey/rev1/keymaps/default/config.h b/keyboards/suihankey/rev1/keymaps/default/config.h
new file mode 100644
index 00000000000..bf1149ebc63
--- /dev/null
+++ b/keyboards/suihankey/rev1/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 kakunpc
+ *
+ * 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/suihankey/rev1/keymaps/default/keymap.c b/keyboards/suihankey/rev1/keymaps/default/keymap.c
new file mode 100644
index 00000000000..e7c7da4b8bd
--- /dev/null
+++ b/keyboards/suihankey/rev1/keymaps/default/keymap.c
@@ -0,0 +1,100 @@
+/* Copyright 2019 kakunpc
+ *
+ * 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
+
+enum layers{
+ BASE,
+ COMMAND,
+ NUMBER,
+ FUNCTION
+};
+
+#define KC_CMD_SP LT(COMMAND,KC_SPC)
+#define KC_CMD_ET LT(COMMAND,KC_ENTER)
+#define KC_NUM_ALT LT(NUMBER,KC_LALT)
+#define KC_NUM_BS LT(NUMBER,KC_BSPC)
+#define KC_SET_CTRL LT(FUNCTION,KC_LCTRL)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT( /* Base */
+ KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_Z, KC_X, KC_C, KC_V, KC_B,
+ KC_SET_CTRL, KC_NUM_ALT, KC_CMD_SP
+ ),
+ [COMMAND] = LAYOUT( /* Base */
+ KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_A, KC_S, KC_D, KC_F, KC_G,
+ LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), LCTL(KC_B),
+ KC_NO, KC_NO, KC_NO
+ ),
+ [NUMBER] = LAYOUT( /* Base */
+ KC_1, KC_2, KC_3, KC_4, KC_5,
+ KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO
+ ),
+ [FUNCTION] = LAYOUT( /* Base */
+ 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_TOG, RGB_MOD, RGB_RMOD,
+ KC_NO, KC_NO, KC_NO
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
+
+#ifdef OLED_DRIVER_ENABLE
+void oled_task_user(void) {
+ oled_write_P(PSTR("Layer: "), false);
+ switch (biton32(layer_state)) {
+ case BASE:
+ oled_write_P(PSTR("Default\n"), false);
+ break;
+ case COMMAND:
+ oled_write_P(PSTR("COMMAND\n"), false);
+ break;
+ case NUMBER:
+ oled_write_P(PSTR("NUMBER\n"), false);
+ break;
+ case FUNCTION:
+ 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_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
+ oled_write_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
+ oled_write_P(IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
+}
+#endif
diff --git a/keyboards/suihankey/rev1/keymaps/default/readme.md b/keyboards/suihankey/rev1/keymaps/default/readme.md
new file mode 100644
index 00000000000..95eac805a02
--- /dev/null
+++ b/keyboards/suihankey/rev1/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for suihankey
\ No newline at end of file
diff --git a/keyboards/suihankey/rev1/readme.md b/keyboards/suihankey/rev1/readme.md
new file mode 100644
index 00000000000..1c80a8af63a
--- /dev/null
+++ b/keyboards/suihankey/rev1/readme.md
@@ -0,0 +1,18 @@
+# suihankey_rev1
+
+
+
+Compact with only 18 keys is a concept keyboard.
+Supports OLED and RGBLED (optional)
+
+
+
+Keyboard Maintainer: [kakunpc](https://github.com/kakunpc)
+Hardware Supported: suihankey_rev1, promicro
+Hardware Availability: booth([@kakunpc](https://kakunpc.booth.pm/))
+
+Make example for this keyboard (after setting up your build environment):
+
+ make suihankey/rev1: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/suihankey/rev1/rev1.c b/keyboards/suihankey/rev1/rev1.c
new file mode 100644
index 00000000000..f97e6caed42
--- /dev/null
+++ b/keyboards/suihankey/rev1/rev1.c
@@ -0,0 +1,51 @@
+/* Copyright 2019 kakunpc
+ *
+ * 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 "rev1.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/suihankey/rev1/rev1.h b/keyboards/suihankey/rev1/rev1.h
new file mode 100644
index 00000000000..cbc877abd55
--- /dev/null
+++ b/keyboards/suihankey/rev1/rev1.h
@@ -0,0 +1,40 @@
+/* Copyright 2019 kakunpc
+ *
+ * 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"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the Leys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, \
+ L10, L11, L12, L13, L14, \
+ L20, L21, L22, L23, L24, \
+ L30, L31, L32 \
+) \
+{ \
+ { L00, L10, L20, L30 }, \
+ { L01, L11, L21, L31 }, \
+ { L02, L12, L22, L32 }, \
+ { L03, L13, L23, KC_NO }, \
+ { L04, L14, L24, KC_NO }, \
+}
diff --git a/keyboards/suihankey/rev1/rules.mk b/keyboards/suihankey/rev1/rules.mk
new file mode 100644
index 00000000000..d4580058ec2
--- /dev/null
+++ b/keyboards/suihankey/rev1/rules.mk
@@ -0,0 +1,82 @@
+# 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
+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)
+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 = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = yes # 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)
+OLED_DRIVER_ENABLE = yes
+SPLIT_KEYBOARD = no
diff --git a/keyboards/suihankey/rules.mk b/keyboards/suihankey/rules.mk
index 19e792378ec..dbba5b93c74 100644
--- a/keyboards/suihankey/rules.mk
+++ b/keyboards/suihankey/rules.mk
@@ -61,7 +61,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+BOOTMAGIC_ENABLE = lite # 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)
@@ -78,5 +78,7 @@ 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)
-OLED_DRIVER_ENABLE = no
-SPLIT_KEYBOARD = yes
+OLED_DRIVER_ENABLE = yes
+SPLIT_KEYBOARD = no
+
+DEFAULT_FOLDER = suihankey/rev1
diff --git a/keyboards/suihankey/split/alpha/alpha.c b/keyboards/suihankey/split/alpha/alpha.c
new file mode 100644
index 00000000000..3d2d1de7790
--- /dev/null
+++ b/keyboards/suihankey/split/alpha/alpha.c
@@ -0,0 +1,51 @@
+/* Copyright 2019 kakunpc
+ *
+ * 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 "alpha.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/suihankey/suihankey.h b/keyboards/suihankey/split/alpha/alpha.h
similarity index 99%
rename from keyboards/suihankey/suihankey.h
rename to keyboards/suihankey/split/alpha/alpha.h
index 170dbe5cffc..f14639806ea 100644
--- a/keyboards/suihankey/suihankey.h
+++ b/keyboards/suihankey/split/alpha/alpha.h
@@ -41,3 +41,4 @@
{ R20, R21, R22, R23, R24 }, \
{ R30, R31, R32 }, \
}
+
diff --git a/keyboards/suihankey/config.h b/keyboards/suihankey/split/alpha/config.h
similarity index 100%
rename from keyboards/suihankey/config.h
rename to keyboards/suihankey/split/alpha/config.h
diff --git a/keyboards/suihankey/split/alpha/readme.md b/keyboards/suihankey/split/alpha/readme.md
new file mode 100644
index 00000000000..2ea1503eb39
--- /dev/null
+++ b/keyboards/suihankey/split/alpha/readme.md
@@ -0,0 +1,18 @@
+# suihankey_alpha
+
+
+
+Compact with only 36 keys is a concept keyboard.
+Supports OLED and RGBLED (optional)
+
+
+
+Keyboard Maintainer: [kakunpc](https://github.com/kakunpc)
+Hardware Supported: suihankey_alphaboard_alpha, promicro
+Hardware Availability: booth([@kakunpc](https://kakunpc.booth.pm/))
+
+Make example for this keyboard (after setting up your build environment):
+
+ make suihankey/alpha: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/suihankey/split/alpha/rules.mk b/keyboards/suihankey/split/alpha/rules.mk
new file mode 100644
index 00000000000..974450a692f
--- /dev/null
+++ b/keyboards/suihankey/split/alpha/rules.mk
@@ -0,0 +1,82 @@
+# 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
+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)
+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 = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = yes # 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)
+OLED_DRIVER_ENABLE = no
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/suihankey/split/info.json b/keyboards/suihankey/split/info.json
new file mode 100644
index 00000000000..c3825ac3aca
--- /dev/null
+++ b/keyboards/suihankey/split/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "suihankey_split",
+ "url": "https://kakunpc.booth.pm/",
+ "maintainer": "kakunpc",
+ "width": 12,
+ "height": 4,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"1", "x":0, "y":0}, {"label":"2", "x":1, "y":0}, {"label":"3", "x":2, "y":0}, {"label":"4", "x":3, "y":0}, {"label":"5", "x":4, "y":0}, {"label":"19", "x":7, "y":0}, {"label":"20", "x":8, "y":0}, {"label":"21", "x":9, "y":0}, {"label":"22", "x":10, "y":0}, {"label":"23", "x":11, "y":0}, {"label":"6", "x":0, "y":1}, {"label":"7", "x":1, "y":1}, {"label":"8", "x":2, "y":1}, {"label":"9", "x":3, "y":1}, {"label":"10", "x":4, "y":1}, {"label":"24", "x":7, "y":1}, {"label":"25", "x":8, "y":1}, {"label":"26", "x":9, "y":1}, {"label":"27", "x":10, "y":1}, {"label":"28", "x":11, "y":1}, {"label":"11", "x":0, "y":2}, {"label":"12", "x":1, "y":2}, {"label":"13", "x":2, "y":2}, {"label":"14", "x":3, "y":2}, {"label":"15", "x":4, "y":2}, {"label":"29", "x":7, "y":2}, {"label":"30", "x":8, "y":2}, {"label":"31", "x":9, "y":2}, {"label":"32", "x":10, "y":2}, {"label":"33", "x":11, "y":2}, {"label":"16", "x":2, "y":3}, {"label":"17", "x":3, "y":3}, {"label":"18", "x":4, "y":3}, {"label":"34", "x":7, "y":3}, {"label":"35", "x":8, "y":3}, {"label":"36", "x":9, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/suihankey/split/keymaps/default/config.h b/keyboards/suihankey/split/keymaps/default/config.h
new file mode 100644
index 00000000000..bf1149ebc63
--- /dev/null
+++ b/keyboards/suihankey/split/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 kakunpc
+ *
+ * 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/suihankey/keymaps/default/keymap.c b/keyboards/suihankey/split/keymaps/default/keymap.c
similarity index 73%
rename from keyboards/suihankey/keymaps/default/keymap.c
rename to keyboards/suihankey/split/keymaps/default/keymap.c
index a1d182a9d89..9b8448ac277 100644
--- a/keyboards/suihankey/keymaps/default/keymap.c
+++ b/keyboards/suihankey/split/keymaps/default/keymap.c
@@ -16,7 +16,7 @@
#include QMK_KEYBOARD_H
enum layers{
- BASE = 0,
+ BASE,
COMMAND,
NUMBER,
SETTING
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[SETTING] = LAYOUT( /* Base */
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, KC_NO, 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_MOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
),
};
@@ -70,31 +70,3 @@ void matrix_scan_user(void) {
void led_set_user(uint8_t usb_led) {
}
-
-#ifdef OLED_DRIVER_ENABLE
-void oled_task_user(void) {
- oled_write_P(PSTR("Layer: "), false);
- switch (biton32(layer_state)) {
- case BASE:
- oled_write_P(PSTR("Defaultn"), false);
- break;
- case COMMAND:
- oled_write_P(PSTR("COMMANDn"), false);
- break;
- case NUMBER:
- oled_write_P(PSTR("NUMBERn"), false);
- break;
- case SETTING:
- oled_write_P(PSTR("SETTINGn"), 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_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
- oled_write_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
- oled_write_P(IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
-}
-#endif
diff --git a/keyboards/suihankey/split/keymaps/default/readme.md b/keyboards/suihankey/split/keymaps/default/readme.md
new file mode 100644
index 00000000000..43ede895269
--- /dev/null
+++ b/keyboards/suihankey/split/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default split keymap for suihankey
diff --git a/keyboards/suihankey/split/readme.md b/keyboards/suihankey/split/readme.md
new file mode 100644
index 00000000000..34d30580d12
--- /dev/null
+++ b/keyboards/suihankey/split/readme.md
@@ -0,0 +1,18 @@
+# suihankey split
+
+
+
+Compact with only 36 keys is a concept keyboard.
+Supports OLED and RGBLED (optional)
+
+
+
+Keyboard Maintainer: [kakunpc](https://github.com/kakunpc)
+Hardware Supported: suihankeyboard_alpha, promicro
+Hardware Availability: booth([@kakunpc](https://kakunpc.booth.pm/))
+
+Make example for this keyboard (after setting up your build environment):
+
+ make suihankey/split: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/suihankey/split/rev1/config.h b/keyboards/suihankey/split/rev1/config.h
new file mode 100644
index 00000000000..04ed0ba50de
--- /dev/null
+++ b/keyboards/suihankey/split/rev1/config.h
@@ -0,0 +1,248 @@
+/*
+Copyright 2019 kakunpc
+
+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 kakunpc
+#define PRODUCT Suihankey
+#define DESCRIPTION A custom keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 4
+
+/*
+ * 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 { D4, C6, D7, E6, B4 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7 }
+#define UNUSED_PINS
+#define USE_I2C
+#undef USE_SERIAL
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+#define SPLIT_HAND_PIN D2
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 18
+ #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
+
+/* 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
+
+/* 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.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
+
+/* 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_HELP H
+//#define MAGIC_KEY_HELP_ALT 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 0
+//#define MAGIC_KEY_LAYER0_ALT GRAVE
+//#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 B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
+//#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
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#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_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
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
+
+// #define RGBLED_SPLIT {18,18}
diff --git a/keyboards/suihankey/split/rev1/readme.md b/keyboards/suihankey/split/rev1/readme.md
new file mode 100644
index 00000000000..f7c4bce166d
--- /dev/null
+++ b/keyboards/suihankey/split/rev1/readme.md
@@ -0,0 +1,18 @@
+# suihankey_rev1
+
+
+
+Compact with only 36 keys is a concept keyboard.
+Supports OLED and RGBLED (optional)
+
+
+
+Keyboard Maintainer: [kakunpc](https://github.com/kakunpc)
+Hardware Supported: suihankey_rev1board_rev1, promicro
+Hardware Availability: booth([@kakunpc](https://kakunpc.booth.pm/))
+
+Make example for this keyboard (after setting up your build environment):
+
+ make suihankey/rev1: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/suihankey/split/rev1/rev1.c b/keyboards/suihankey/split/rev1/rev1.c
new file mode 100644
index 00000000000..f97e6caed42
--- /dev/null
+++ b/keyboards/suihankey/split/rev1/rev1.c
@@ -0,0 +1,51 @@
+/* Copyright 2019 kakunpc
+ *
+ * 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 "rev1.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/suihankey/split/rev1/rev1.h b/keyboards/suihankey/split/rev1/rev1.h
new file mode 100644
index 00000000000..bf5468234d0
--- /dev/null
+++ b/keyboards/suihankey/split/rev1/rev1.h
@@ -0,0 +1,45 @@
+/* Copyright 2019 kakunpc
+ *
+ * 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"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the Leys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, R04, R03, R02, R01, R00, \
+ L10, L11, L12, L13, L14, R14, R13, R12, R11, R10, \
+ L20, L21, L22, L23, L24, R24, R23, R22, R21, R20, \
+ L30, L31, L32, R32, R31, R30 \
+) \
+{ \
+ { L00, L10, L20, L30 }, \
+ { L01, L11, L21, L31 }, \
+ { L02, L12, L22, L32 }, \
+ { L03, L13, L23, KC_NO }, \
+ { L04, L14, L24, KC_NO }, \
+ { R00, R10, R20, R30 }, \
+ { R01, R11, R21, R31 }, \
+ { R02, R12, R22, R32 }, \
+ { R03, R13, R23, KC_NO }, \
+ { R04, R14, R24, KC_NO }, \
+}
diff --git a/keyboards/suihankey/split/rev1/rules.mk b/keyboards/suihankey/split/rev1/rules.mk
new file mode 100644
index 00000000000..974450a692f
--- /dev/null
+++ b/keyboards/suihankey/split/rev1/rules.mk
@@ -0,0 +1,82 @@
+# 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
+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)
+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 = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = yes # 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)
+OLED_DRIVER_ENABLE = no
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/suihankey/split/rules.mk b/keyboards/suihankey/split/rules.mk
new file mode 100644
index 00000000000..b5d2dc8e810
--- /dev/null
+++ b/keyboards/suihankey/split/rules.mk
@@ -0,0 +1,4 @@
+OLED_DRIVER_ENABLE = no
+SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = suihankey/split/rev1
diff --git a/keyboards/tanuki/keymaps/default/keymap.c b/keyboards/tanuki/keymaps/default/keymap.c
index 34ca6a639c0..7c3e11f27d1 100644
--- a/keyboards/tanuki/keymaps/default/keymap.c
+++ b/keyboards/tanuki/keymaps/default/keymap.c
@@ -1,140 +1,120 @@
#include QMK_KEYBOARD_H
-//Layer definitions
+// custom type to store stuff in EEPROM
+typedef union {
+ uint32_t raw;
+ struct {
+ bool layer_rgb :1;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+// Layer definitions
#define _BL 0
#define _DL 1
#define _UL 2
#define _GL 3
#define _BK 4
-
-//other variables
-int mCalled = 0;
-bool blockToggle = false;
-bool lRGB = true;
+// Custom keycode to toggle normal RGB or per-layer RGB
+enum custom_keycodes {
+ CUSTRGB = SAFE_RANGE,
+};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BL] = 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_SCLN, TG(_GL), \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_QUOT, KC_SLSH, KC_ENT, \
- KC_LCTL, KC_LALT, KC_COMMA, LT(_DL,KC_SPC), LT(_UL,KC_SPC), KC_DOT, KC_LGUI),
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, TG(_GL), \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_QUOT, KC_SLSH, KC_ENT, \
+ KC_LCTL, KC_LALT, KC_COMMA, LT(_DL,KC_SPC), LT(_UL,KC_SPC), KC_DOT, KC_LGUI),
[_DL] = 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_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,\
- KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,\
+ KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_UL] = LAYOUT(
- KC_GRV, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_PIPE, KC_BSLS, KC_PLUS, KC_UNDS, KC_MINS, KC_EQL, KC_DEL,\
- KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, \
- KC_TRNS, KC_FN0, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, \
- KC_TRNS, RGB_MOD, RGB_HUI, KC_TRNS, KC_TRNS, RGB_SAI, RGB_VAI),
+ KC_GRV, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_PIPE, KC_BSLS, KC_PLUS, KC_UNDS, KC_MINS, KC_EQL, KC_DEL,\
+ KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, \
+ KC_TRNS, CUSTRGB, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, \
+ KC_TRNS, RGB_MOD, RGB_HUI, KC_TRNS, KC_TRNS, RGB_SAI, RGB_VAI),
[_GL] = LAYOUT(
- 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, 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_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS),
-
-[_BK] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_FN1, KC_NO, KC_NO),
-
+ 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, 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_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS)
+
};
-
-//KC_MPLY, KC_VOLU, KC_VOLD, KC_TRNS, KC_TRNS, KC_MNXT, KC_MPRV
-//function to toggle the interactive rgb variable
-bool toggleLayerRGB(void){
- if(lRGB == true){
- return false;
- }
- else{
- return true;
- }
+void keyboard_post_init_user(void) {
+ user_config.raw = eeconfig_read_user();
+ if(user_config.layer_rgb) {
+ rgblight_enable_noeeprom();
+ rgblight_mode_noeeprom(1);
+ rgblight_sethsv_noeeprom(0,10,255);
+ }
}
-void matrix_init_user(void){
- rgblight_enable();
- rgblight_mode(1);
- rgblight_sethsv(0,10,255);
+uint32_t layer_state_set_user(uint32_t state) {
+ // This code switches underglow color by active layer, if the user has enabled the feature
+ if(user_config.layer_rgb) {
+ switch (biton32(state)) {
+ case _BL:
+ rgblight_sethsv_noeeprom(0,10,255);
+ rgblight_mode_noeeprom(1);
+ break;
+ case _DL:
+ rgblight_sethsv_noeeprom(130,200,255);
+ rgblight_mode_noeeprom(1);
+ break;
+ case _UL:
+ rgblight_sethsv_noeeprom(170,200,255);
+ rgblight_mode_noeeprom(1);
+ break;
+ case _GL:
+ rgblight_sethsv_noeeprom(0,180,255);
+ rgblight_mode_noeeprom(1);
+ break;
+ }
+ }
+ return state;
}
-//check for layer and if there was a keypress change underglow lighting
-void matrix_scan_kb(void){
- if(lRGB == true)
- {
-
-
-
- //base layer
- if(layer_state == 0x00000000 && mCalled == 1 ){
- rgblight_sethsv(0,10,255);
- mCalled = 0;
- }
-
- //down layer
- else if(layer_state == 0x00000002 && mCalled == 1){
- rgblight_sethsv(160,255,255);
- mCalled = 0;
- }
-
-
- //up layer with rgb access blocked
- else if(layer_state == 0x00000004 && mCalled == 1 && lRGB == true){
- //blockToggle = true;
- layer_state = 0x00000014;
- rgblight_sethsv(180,255,255);
- mCalled = 0;
- }
-
- //arrow cluster layer
- else if(layer_state == 0x00000008 && mCalled == 1){
- rgblight_sethsv(0,180,255);
- mCalled = 0;
- }
-
- //if on blocked layer and the spacebar has been released reset to baselayer and set colours to white
- else if(layer_state == 0x00000014 && blockToggle == true )
- {
- blockToggle = false;
- layer_state = 0x00000000;
- rgblight_sethsv(0,10,255);
- }
-
- }
-}
-
-//set mCalled to 1 when a button is pressed to make sure the leds aren't continuesly updated.
bool process_record_user (uint16_t keycode, keyrecord_t *record) {
- mCalled = 1;
-
- //uncommenting the line below causes the lights to flicker when typing on the keyboard.
- //rgblight_sethsv(0,255,0);
-
- if(keycode == KC_FN0 && record->event.pressed){
- //set the toggle and make sure to set the colour back to white
- lRGB = toggleLayerRGB();
- rgblight_enable();
- rgblight_mode(1);
- rgblight_sethsv(0,255,255);
- layer_state =0x00000000;
-
- return false;
- }
-
- //check if spacebar is released when on a different layer
- if(keycode == KC_FN1){
- if(record ->event.pressed){
- }else{
- blockToggle = true;
- }
- }
-
- return true;
+ switch (keycode) {
+ case CUSTRGB: // if the user toggled per-layer RGB, update the config and refresh the RGB color
+ if(record->event.pressed) {
+ user_config.layer_rgb ^= 1;
+ eeconfig_update_user(user_config.raw);
+ if (user_config.layer_rgb) {
+ layer_state_set(layer_state);
+ }
+ }
+ return false;
+ break;
+ case RGB_MOD:
+ case RGB_SAD:
+ case RGB_SAI:
+ case RGB_HUI:
+ case RGB_VAD:
+ case RGB_VAI:
+ if(user_config.layer_rgb && record->event.pressed) {
+ return false; // if layer RGB is on, ignore attempts to change RGB settings
+ }
+ break;
+ }
+ return true;
+}
+
+void eeconfig_init_user(void) { // in case EEPROM is reset, set up our custom config
+ user_config.raw = 0;
+ user_config.layer_rgb = true; // enable per-layer RGB by default
+ eeconfig_update_user(user_config.raw);
+ rgblight_enable();
+ rgblight_sethsv(0,10,255);
+ rgblight_mode(1);
}
diff --git a/keyboards/tanuki/keymaps/tucznak/config.h b/keyboards/tanuki/keymaps/tucznak/config.h
new file mode 100644
index 00000000000..3a140193d8e
--- /dev/null
+++ b/keyboards/tanuki/keymaps/tucznak/config.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#undef MANUFACTURER
+#undef PRODUCT
+#undef DESCRIPTION
+
+#define MANUFACTURER Potato Inc.
+#define PRODUCT Trash Panda
+#define DESCRIPTION Qt3.14 smolkeeb
+
+/* for bootloader */
+#define QMK_ESC_OUTPUT B2
+#define QMK_ESC_INPUT D0
+#define QMK_LED B0
+
+/* turn off RGB when computer sleeps */
+#ifdef RGBLIGHT_ENABLE
+#define RGBLIGHT_SLEEP
+#endif
+
+/* send tap key if no layer key was used even after tap delay */
+#ifdef TAPPING_TERM
+#undef TAPPING_TERM
+#endif
+#define TAPPING_TERM 250
+#define RETRO_TAPPING
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/tanuki/keymaps/tucznak/keymap.c b/keyboards/tanuki/keymaps/tucznak/keymap.c
new file mode 100644
index 00000000000..301f0f8419a
--- /dev/null
+++ b/keyboards/tanuki/keymaps/tucznak/keymap.c
@@ -0,0 +1,116 @@
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _BASE,
+ _DN,
+ _UP,
+ _NAV,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Base layer (0)
+ * ,------------------------------------------------------------------------.
+ * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------|
+ * | Tab | A | S | D | F | G | H | J | K | L | ů | Nav |
+ * `------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----'
+ * | Shift | Z | X | C | V | B | N | M | , | . |Enter |
+ * `-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------'
+ * | Ctrl | GUI |LAlt | Space | SpaceUp |AltGr| Down |
+ * `--------------------------------------------------------'
+ */
+
+ [_BASE] = 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_SCLN, TT(_NAV),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(_UP,KC_SPC), KC_RALT, MO(_DN)
+ ),
+
+ /* Down layer (1)
+ * function keys and numbers
+ * ,------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------|
+ * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ * `------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----'
+ * | |NumLk| | | + | - | * | / | , | . | |
+ * `-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------'
+ * | Fn | | | C+A+D | C+A+I | | |
+ * `--------------------------------------------------------'
+ */
+
+ [_DN] = 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_KP_1, KC_KP_2, KC_KP_3, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_0, _______,
+ _______, KC_NLCK, _______, _______, KC_PPLS, KC_PMNS, KC_PAST, KC_PSLS, KC_COMM, KC_DOT, _______,
+ MO(_FN), _______, _______, LCA(KC_DEL), LCA(KC_INS), _______, _______
+ ),
+
+ /* Up layer (2)
+ * national and special characters
+ * ,------------------------------------------------------------------------.
+ * | +1 | ě2 | š3 | č4 | ř5 | ž6 | ý7 | á8 | í9 | é0 | ´ | ˇ |
+ * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------|
+ * | ;° | | | | | | ( | ) | § | ! | / | ú | |
+ * `------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----'
+ * | | | | \ | % | = | ¨ | ' | - | _ | |
+ * `-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------'
+ * | | | | | | | |
+ * `--------------------------------------------------------'
+ */
+
+ [_UP] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, LSFT(KC_EQL),
+ KC_GRV, _______, _______, _______, LSFT(KC_NUBS), LSFT(KC_RBRC), KC_RBRC, KC_QUOT, LSFT(KC_QUOT), LSFT(KC_LBRC), KC_LBRC, _______,
+ _______, _______, _______, KC_NUBS, LSFT(KC_MINS), KC_MINS, KC_BSLS, LSFT(KC_BSLS), KC_SLSH, LSFT(KC_SLSH), _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Navigation layer (3)
+ * arrows, nav cluster
+ * ,------------------------------------------------------------------------.
+ * | | | | | |Home |PgUp | | | Up | Ins | Del |
+ * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------|
+ * | | | | | | End |PgDn | |Left |Down |Right| |
+ * `------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----'
+ * | |Caps |PrtSc|ScrLk|Pause| | | | | | |
+ * `-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------'
+ * | | | | | | | Menu |
+ * `--------------------------------------------------------'
+ */
+
+ [_NAV] = LAYOUT(
+ _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, KC_UP, KC_INS, KC_DEL,
+ _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______,
+ _______, KC_CAPS, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_APP
+ ),
+
+ /* Function layer (4)
+ * keyboard and system control
+ * ,------------------------------------------------------------------------.
+ * |Reset| | | | | | |Play |Prev |Next |Stop | |
+ * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------|
+ * |Sleep | VLK |Mod+ |Hue+ |Sat+ |Val+ | | |Vol- |Vol+ |Mute | |
+ * `------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----'
+ * | | TOG |Mod- |Hue- |Sat- |Val- | | | | | |
+ * `-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------'
+ * | | | | | | | |
+ * `--------------------------------------------------------'
+ */
+
+ [_FN] = LAYOUT(
+ RESET, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, _______,
+ KC_SLEP, VLK_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______,
+ _______, RGB_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
+
+bool process_record_user (uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
diff --git a/keyboards/tanuki/keymaps/tucznak/readme.md b/keyboards/tanuki/keymaps/tucznak/readme.md
new file mode 100644
index 00000000000..b38490c9c56
--- /dev/null
+++ b/keyboards/tanuki/keymaps/tucznak/readme.md
@@ -0,0 +1,8 @@
+# TuCZnak's modified layout
+
+This layout is optimized for Czech national QWERTZ keymap.
+It includes separated layers for:
+ - F-keys and numbers
+ - national and special characters
+ - navigation cluster
+ - keyboard config and media control
diff --git a/keyboards/tanuki/keymaps/tucznak/rules.mk b/keyboards/tanuki/keymaps/tucznak/rules.mk
new file mode 100644
index 00000000000..5c5263eae78
--- /dev/null
+++ b/keyboards/tanuki/keymaps/tucznak/rules.mk
@@ -0,0 +1,19 @@
+# screw Caterina
+BOOTLOADER = qmk-dfu
+
+# Build Options
+# comment out to disable the options.
+#
+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 # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+RGBLIGHT_ENABLE =yes # Enable keyboard underlight functionality (+4870)
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality (+1150)
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+TAP_DANCE_ENABLE = no
diff --git a/keyboards/alice/alice.c b/keyboards/tgr/alice/alice.c
similarity index 100%
rename from keyboards/alice/alice.c
rename to keyboards/tgr/alice/alice.c
diff --git a/keyboards/alice/alice.h b/keyboards/tgr/alice/alice.h
similarity index 100%
rename from keyboards/alice/alice.h
rename to keyboards/tgr/alice/alice.h
diff --git a/keyboards/alice/config.h b/keyboards/tgr/alice/config.h
similarity index 97%
rename from keyboards/alice/config.h
rename to keyboards/tgr/alice/config.h
index 07b9599f58e..2200fbbe464 100644
--- a/keyboards/alice/config.h
+++ b/keyboards/tgr/alice/config.h
@@ -36,4 +36,3 @@ along with this program. If not, see .
#define RGBLIGHT_ANIMATIONS
#define NO_UART 1
-#define BOOTLOADHID_BOOTLOADER 1
diff --git a/keyboards/alice/info.json b/keyboards/tgr/alice/info.json
similarity index 100%
rename from keyboards/alice/info.json
rename to keyboards/tgr/alice/info.json
diff --git a/keyboards/alice/keymaps/default/keymap.c b/keyboards/tgr/alice/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/alice/keymaps/default/keymap.c
rename to keyboards/tgr/alice/keymaps/default/keymap.c
diff --git a/keyboards/alice/keymaps/mrkeebs/keymap.c b/keyboards/tgr/alice/keymaps/mrkeebs/keymap.c
similarity index 100%
rename from keyboards/alice/keymaps/mrkeebs/keymap.c
rename to keyboards/tgr/alice/keymaps/mrkeebs/keymap.c
diff --git a/keyboards/tgr/alice/readme.md b/keyboards/tgr/alice/readme.md
new file mode 100644
index 00000000000..f5db63814b9
--- /dev/null
+++ b/keyboards/tgr/alice/readme.md
@@ -0,0 +1,48 @@
+# Alice
+
+
+
+An ergonomic 60% keyboard.
+
+Keyboard Maintainer: [Felipe Coury](https://github.com/fcoury)
+Hardware Supported: TGR Alice
+Hardware Availability: Group buy finished
+
+Make example for this keyboard (after setting up your build environment):
+
+ make tgr/alice:default
+
+Flashing
+
+ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods.
+
+**Reset Key:** Hold down the key located at `K00`, commonly programmed as `Esc` while plugging in the keyboard.
+
+Windows:
+1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash).
+2. Place your keyboard into reset.
+3. Press the `Find Device` button and ensure that your keyboard is found.
+4. Press the `Open .hex File` button and locate the `.hex` file you created.
+5. Press the `Flash Device` button and wait for the process to complete.
+
+macOS:
+1. Install homebrew by typing the following:
+ ```
+ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+ ```
+2. Install `crosspack-avr`.
+ ```
+ brew cask install crosspack-avr
+ ```
+3. Install the following packages:
+ ```
+ brew install python3
+ pip3 install pyusb
+ brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
+ ```
+
+4. Place your keyboard into reset.
+5. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file.
+
+
+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/alice/rules.mk b/keyboards/tgr/alice/rules.mk
similarity index 100%
rename from keyboards/alice/rules.mk
rename to keyboards/tgr/alice/rules.mk
diff --git a/keyboards/alice/usbconfig.h b/keyboards/tgr/alice/usbconfig.h
similarity index 100%
rename from keyboards/alice/usbconfig.h
rename to keyboards/tgr/alice/usbconfig.h
diff --git a/keyboards/tgr/jane/config.h b/keyboards/tgr/jane/config.h
new file mode 100644
index 00000000000..a5d63f621bb
--- /dev/null
+++ b/keyboards/tgr/jane/config.h
@@ -0,0 +1,38 @@
+/*
+Copyright 2017 Luiz Ribeiro
+
+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"
+
+#define VENDOR_ID 0x20A0
+#define PRODUCT_ID 0x422D
+#define MANUFACTURER TGR
+#define PRODUCT Jane
+
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 15
+
+// 0 1 2 3 4 5 6 7 8 9 A B C D E
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
+#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
+#define UNUSED_PINS
+
+#define DIODE_DIRECTION COL2ROW
+#define DEBOUNCE 5
+
+#define BACKLIGHT_LEVELS 1
diff --git a/keyboards/tgr/jane/info.json b/keyboards/tgr/jane/info.json
new file mode 100644
index 00000000000..6fab4db1ed6
--- /dev/null
+++ b/keyboards/tgr/jane/info.json
@@ -0,0 +1,20 @@
+{
+ "keyboard_name": "TGR Jane v2",
+ "url": "",
+ "maintainer": "qmk",
+ "width": 18.25,
+ "height": 6.5,
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5}, {"x":2.25, "y":5.5}, {"x":3.25, "y":5.5, "w":1.25}, {"x":4.5, "y":5.5, "w":1.25}, {"x":5.75, "y":5.5, "w":1.25}, {"x":7, "y":5.5, "w":1.25}, {"x":8.25, "y":5.5, "w":1.25}, {"x":9.5, "y":5.5, "w":1.25}, {"x":10.75, "y":5.5}, {"x":11.75, "y":5.5}, {"x":12.75, "y":5.5}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
+ },
+
+ "LAYOUT_tkl_ansi": {
+ "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
+ },
+
+ "LAYOUT_tkl_iso": {
+ "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
+ }
+ }
+}
diff --git a/keyboards/tgr/jane/jane.c b/keyboards/tgr/jane/jane.c
new file mode 100644
index 00000000000..c17cb008486
--- /dev/null
+++ b/keyboards/tgr/jane/jane.c
@@ -0,0 +1,88 @@
+/* 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 "i2c_master.h"
+#include "quantum.h"
+
+#ifdef RGBLIGHT_ENABLE
+#include "rgblight.h"
+extern rgblight_config_t rgblight_config;
+
+void rgblight_set(void) {
+ if (!rgblight_config.enable) {
+ for (uint8_t i = 0; i < RGBLED_NUM; i++) {
+ led[i].r = 0;
+ led[i].g = 0;
+ led[i].b = 0;
+ }
+ }
+
+ i2c_init();
+ i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
+}
+#endif
+
+void matrix_init_kb(void) {
+#ifdef RGBLIGHT_ENABLE
+ if (rgblight_config.enable) {
+ i2c_init();
+ i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
+ }
+#endif
+ // call user level keymaps, if any
+ matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_task();
+#endif
+ matrix_scan_user();
+ /* Nothing else for now. */
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+void backlight_init_ports(void) {
+ // initialize pins D0, D1, D4 and D6 as output
+ setPinOutput(D0);
+ setPinOutput(D1);
+ setPinOutput(D4);
+ setPinOutput(D6);
+
+ // turn backlight LEDs on
+ writePinHigh(D0);
+ writePinHigh(D1);
+ writePinHigh(D4);
+ writePinHigh(D6);
+}
+
+void backlight_set(uint8_t level) {
+ if (level == 0) {
+ // turn backlight LEDs off
+ writePinLow(D0);
+ writePinLow(D1);
+ writePinLow(D4);
+ writePinLow(D6);
+ } else {
+ // turn backlight LEDs on
+ writePinHigh(D0);
+ writePinHigh(D1);
+ writePinHigh(D4);
+ writePinHigh(D6);
+ }
+}
\ No newline at end of file
diff --git a/keyboards/tgr/jane/jane.h b/keyboards/tgr/jane/jane.h
new file mode 100644
index 00000000000..2008d49d9a2
--- /dev/null
+++ b/keyboards/tgr/jane/jane.h
@@ -0,0 +1,77 @@
+/* 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"
+
+// This a shortcut to help you visually see your layout.
+// The first section contains all of the arguments
+// The second converts the arguments into a two-dimensional array
+
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k6B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k6C, k6D, k6E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k7C, k7D, k7E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k2E, \
+ k50, k51, k52, k53, k54, k55, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k3E, k4E \
+){ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E }, \
+ { k50, k51, k52, k53, k54, k55, KC_NO, k57, k58, k59, k5A, k5B, k5C, k5D, k5E }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6B, k6C, k6D, k6E }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \
+}
+
+
+#define LAYOUT_tkl_ansi( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k6B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k7C, k7D, k7E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \
+ k40, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k2E, \
+ k50, k51, k52, k55, k58, k59, k5A, k5D, k5E, k3E, k4E \
+){ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, k3E }, \
+ { k40, KC_NO, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, KC_NO, k4E }, \
+ { k50, k51, k52, KC_NO, KC_NO, k55, KC_NO, KC_NO, k58, k59, k5A, KC_NO, KC_NO, k5D, k5E }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6B, k6C, k6D, k6E }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \
+}
+
+#define LAYOUT_tkl_iso( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k6B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k7C, k7D, k7E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k2E, \
+ k50, k51, k52, k55, k58, k59, k5A, k5D, k5E, k3E, k4E \
+){ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, KC_NO, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, KC_NO, k4E }, \
+ { k50, k51, k52, KC_NO, KC_NO, k55, KC_NO, KC_NO, k58, k59, k5A, KC_NO, KC_NO, k5D, k5E }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6B, k6C, k6D, k6E }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \
+}
diff --git a/keyboards/unikorn/keymaps/default/config.h b/keyboards/tgr/jane/keymaps/default/config.h
similarity index 100%
rename from keyboards/unikorn/keymaps/default/config.h
rename to keyboards/tgr/jane/keymaps/default/config.h
diff --git a/keyboards/tgr/jane/keymaps/default/keymap.c b/keyboards/tgr/jane/keymaps/default/keymap.c
new file mode 100644
index 00000000000..e7579457e6f
--- /dev/null
+++ b/keyboards/tgr/jane/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/* 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_tkl_ansi(\
+ 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_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_INS ,KC_HOME,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_DEL ,KC_END ,KC_PGDN, \
+ 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_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,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT) \
+};
diff --git a/keyboards/tgr/jane/keymaps/default/readme.md b/keyboards/tgr/jane/keymaps/default/readme.md
new file mode 100644
index 00000000000..983182da247
--- /dev/null
+++ b/keyboards/tgr/jane/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Jane
\ No newline at end of file
diff --git a/keyboards/tgr/jane/keymaps/default/rules.mk b/keyboards/tgr/jane/keymaps/default/rules.mk
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/keyboards/tgr/jane/readme.md b/keyboards/tgr/jane/readme.md
new file mode 100644
index 00000000000..10986cde335
--- /dev/null
+++ b/keyboards/tgr/jane/readme.md
@@ -0,0 +1,47 @@
+# Jane v2
+
+TKL Custom Keyboard.
+
+Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
+Hardware Supported: TGR Jane (Pontoporia) PCB v1.1, v1.2
+Hardware Availability: [Geekhack Group Buy](https://geekhack.org/index.php?topic=97552.1200)
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make tgr/jane:default
+
+Flashing
+
+ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods.
+
+**Reset Key:** Hold down the key located at `K00`, commonly programmed as `Esc` while plugging in the keyboard.
+
+Windows:
+1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash).
+2. Place your keyboard into reset.
+3. Press the `Find Device` button and ensure that your keyboard is found.
+4. Press the `Open .hex File` button and locate the `.hex` file you created.
+5. Press the `Flash Device` button and wait for the process to complete.
+
+macOS:
+1. Install homebrew by typing the following:
+ ```
+ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+ ```
+2. Install `crosspack-avr`.
+ ```
+ brew cask install crosspack-avr
+ ```
+3. Install the following packages:
+ ```
+ brew install python3
+ pip3 install pyusb
+ brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
+ ```
+
+4. Place your keyboard into reset.
+5. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file.
+
+
+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/tgr/jane/rules.mk b/keyboards/tgr/jane/rules.mk
new file mode 100644
index 00000000000..bf9aa79a86f
--- /dev/null
+++ b/keyboards/tgr/jane/rules.mk
@@ -0,0 +1,50 @@
+# Copyright 2017 Luiz Ribeiro
+#
+# 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 .
+
+# MCU name
+MCU = atmega32a
+PROTOCOL = VUSB
+
+# unsupported features for now
+NO_UART = yes
+NO_SUSPEND_POWER_DOWN = yes
+
+# processor frequency
+F_CPU = 12000000
+
+# 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 = bootloadHID
+
+# build options
+BOOTMAGIC_ENABLE = no
+MOUSEKEY_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+CONSOLE_ENABLE = yes
+COMMAND_ENABLE = yes
+BACKLIGHT_ENABLE = yes
+RGBLIGHT_ENABLE = no
+RGBLIGHT_CUSTOM_DRIVER = no
+
+OPT_DEFS = -DDEBUG_LEVEL=0
+
+QUANTUM_LIB_SRC = i2c_master.c
+
+# programming options
+PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex
+
+LAYOUTS = tkl_ansi tkl_iso
diff --git a/keyboards/tgr/jane/usbconfig.h b/keyboards/tgr/jane/usbconfig.h
new file mode 100644
index 00000000000..54a7d20f142
--- /dev/null
+++ b/keyboards/tgr/jane/usbconfig.h
@@ -0,0 +1,393 @@
+/* Name: usbconfig.h
+ * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers
+ * Author: Christian Starkjohann
+ * Creation Date: 2005-04-01
+ * Tabsize: 4
+ * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH
+ * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
+ * This Revision: $Id: usbconfig-prototype.h 785 2010-05-30 17:57:07Z cs $
+ */
+
+#pragma once
+
+#include "config.h"
+
+/*
+General Description:
+This file is an example configuration (with inline documentation) for the USB
+driver. It configures V-USB for USB D+ connected to Port D bit 2 (which is
+also hardware interrupt 0 on many devices) and USB D- to Port D bit 4. You may
+wire the lines to any other port, as long as D+ is also wired to INT0 (or any
+other hardware interrupt, as long as it is the highest level interrupt, see
+section at the end of this file).
+*/
+
+/* ---------------------------- Hardware Config ---------------------------- */
+
+#define USB_CFG_IOPORTNAME D
+/* This is the port where the USB bus is connected. When you configure it to
+ * "B", the registers PORTB, PINB and DDRB will be used.
+ */
+#define USB_CFG_DMINUS_BIT 3
+/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
+ * This may be any bit in the port.
+ */
+#define USB_CFG_DPLUS_BIT 2
+/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
+ * This may be any bit in the port. Please note that D+ must also be connected
+ * to interrupt pin INT0! [You can also use other interrupts, see section
+ * "Optional MCU Description" below, or you can connect D- to the interrupt, as
+ * it is required if you use the USB_COUNT_SOF feature. If you use D- for the
+ * interrupt, the USB interrupt will also be triggered at Start-Of-Frame
+ * markers every millisecond.]
+ */
+#define USB_CFG_CLOCK_KHZ (F_CPU/1000)
+/* Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000,
+ * 16500, 18000 and 20000. The 12.8 MHz and 16.5 MHz versions of the code
+ * require no crystal, they tolerate +/- 1% deviation from the nominal
+ * frequency. All other rates require a precision of 2000 ppm and thus a
+ * crystal!
+ * Since F_CPU should be defined to your actual clock rate anyway, you should
+ * not need to modify this setting.
+ */
+#define USB_CFG_CHECK_CRC 0
+/* Define this to 1 if you want that the driver checks integrity of incoming
+ * data packets (CRC checks). CRC checks cost quite a bit of code size and are
+ * currently only available for 18 MHz crystal clock. You must choose
+ * USB_CFG_CLOCK_KHZ = 18000 if you enable this option.
+ */
+
+/* ----------------------- Optional Hardware Config ------------------------ */
+
+/* #define USB_CFG_PULLUP_IOPORTNAME D */
+/* If you connect the 1.5k pullup resistor from D- to a port pin instead of
+ * V+, you can connect and disconnect the device from firmware by calling
+ * the macros usbDeviceConnect() and usbDeviceDisconnect() (see usbdrv.h).
+ * This constant defines the port on which the pullup resistor is connected.
+ */
+/* #define USB_CFG_PULLUP_BIT 4 */
+/* This constant defines the bit number in USB_CFG_PULLUP_IOPORT (defined
+ * above) where the 1.5k pullup resistor is connected. See description
+ * above for details.
+ */
+
+/* --------------------------- Functional Range ---------------------------- */
+
+#define USB_CFG_HAVE_INTRIN_ENDPOINT 1
+/* Define this to 1 if you want to compile a version with two endpoints: The
+ * default control endpoint 0 and an interrupt-in endpoint (any other endpoint
+ * number).
+ */
+#define USB_CFG_HAVE_INTRIN_ENDPOINT3 1
+/* Define this to 1 if you want to compile a version with three endpoints: The
+ * default control endpoint 0, an interrupt-in endpoint 3 (or the number
+ * configured below) and a catch-all default interrupt-in endpoint as above.
+ * You must also define USB_CFG_HAVE_INTRIN_ENDPOINT to 1 for this feature.
+ */
+#define USB_CFG_EP3_NUMBER 3
+/* If the so-called endpoint 3 is used, it can now be configured to any other
+ * endpoint number (except 0) with this macro. Default if undefined is 3.
+ */
+/* #define USB_INITIAL_DATATOKEN USBPID_DATA1 */
+/* The above macro defines the startup condition for data toggling on the
+ * interrupt/bulk endpoints 1 and 3. Defaults to USBPID_DATA1.
+ * Since the token is toggled BEFORE sending any data, the first packet is
+ * sent with the oposite value of this configuration!
+ */
+#define USB_CFG_IMPLEMENT_HALT 0
+/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature
+ * for endpoint 1 (interrupt endpoint). Although you may not need this feature,
+ * it is required by the standard. We have made it a config option because it
+ * bloats the code considerably.
+ */
+#define USB_CFG_SUPPRESS_INTR_CODE 0
+/* Define this to 1 if you want to declare interrupt-in endpoints, but don't
+ * want to send any data over them. If this macro is defined to 1, functions
+ * usbSetInterrupt() and usbSetInterrupt3() are omitted. This is useful if
+ * you need the interrupt-in endpoints in order to comply to an interface
+ * (e.g. HID), but never want to send any data. This option saves a couple
+ * of bytes in flash memory and the transmit buffers in RAM.
+ */
+#define USB_CFG_INTR_POLL_INTERVAL 1
+/* If you compile a version with endpoint 1 (interrupt-in), this is the poll
+ * interval. The value is in milliseconds and must not be less than 10 ms for
+ * low speed devices.
+ */
+#define USB_CFG_IS_SELF_POWERED 0
+/* Define this to 1 if the device has its own power supply. Set it to 0 if the
+ * device is powered from the USB bus.
+ */
+#define USB_CFG_MAX_BUS_POWER 500
+/* Set this variable to the maximum USB bus power consumption of your device.
+ * The value is in milliamperes. [It will be divided by two since USB
+ * communicates power requirements in units of 2 mA.]
+ */
+#define USB_CFG_IMPLEMENT_FN_WRITE 1
+/* Set this to 1 if you want usbFunctionWrite() to be called for control-out
+ * transfers. Set it to 0 if you don't need it and want to save a couple of
+ * bytes.
+ */
+#define USB_CFG_IMPLEMENT_FN_READ 0
+/* Set this to 1 if you need to send control replies which are generated
+ * "on the fly" when usbFunctionRead() is called. If you only want to send
+ * data from a static buffer, set it to 0 and return the data from
+ * usbFunctionSetup(). This saves a couple of bytes.
+ */
+#define USB_CFG_IMPLEMENT_FN_WRITEOUT 0
+/* Define this to 1 if you want to use interrupt-out (or bulk out) endpoints.
+ * You must implement the function usbFunctionWriteOut() which receives all
+ * interrupt/bulk data sent to any endpoint other than 0. The endpoint number
+ * can be found in 'usbRxToken'.
+ */
+#define USB_CFG_HAVE_FLOWCONTROL 0
+/* Define this to 1 if you want flowcontrol over USB data. See the definition
+ * of the macros usbDisableAllRequests() and usbEnableAllRequests() in
+ * usbdrv.h.
+ */
+#define USB_CFG_DRIVER_FLASH_PAGE 0
+/* If the device has more than 64 kBytes of flash, define this to the 64 k page
+ * where the driver's constants (descriptors) are located. Or in other words:
+ * Define this to 1 for boot loaders on the ATMega128.
+ */
+#define USB_CFG_LONG_TRANSFERS 0
+/* Define this to 1 if you want to send/receive blocks of more than 254 bytes
+ * in a single control-in or control-out transfer. Note that the capability
+ * for long transfers increases the driver size.
+ */
+/* #define USB_RX_USER_HOOK(data, len) if(usbRxToken == (uchar)USBPID_SETUP) blinkLED(); */
+/* This macro is a hook if you want to do unconventional things. If it is
+ * defined, it's inserted at the beginning of received message processing.
+ * If you eat the received message and don't want default processing to
+ * proceed, do a return after doing your things. One possible application
+ * (besides debugging) is to flash a status LED on each packet.
+ */
+/* #define USB_RESET_HOOK(resetStarts) if(!resetStarts){hadUsbReset();} */
+/* This macro is a hook if you need to know when an USB RESET occurs. It has
+ * one parameter which distinguishes between the start of RESET state and its
+ * end.
+ */
+/* #define USB_SET_ADDRESS_HOOK() hadAddressAssigned(); */
+/* This macro (if defined) is executed when a USB SET_ADDRESS request was
+ * received.
+ */
+#define USB_COUNT_SOF 1
+/* define this macro to 1 if you need the global variable "usbSofCount" which
+ * counts SOF packets. This feature requires that the hardware interrupt is
+ * connected to D- instead of D+.
+ */
+/* #ifdef __ASSEMBLER__
+ * macro myAssemblerMacro
+ * in YL, TCNT0
+ * sts timer0Snapshot, YL
+ * endm
+ * #endif
+ * #define USB_SOF_HOOK myAssemblerMacro
+ * This macro (if defined) is executed in the assembler module when a
+ * Start Of Frame condition is detected. It is recommended to define it to
+ * the name of an assembler macro which is defined here as well so that more
+ * than one assembler instruction can be used. The macro may use the register
+ * YL and modify SREG. If it lasts longer than a couple of cycles, USB messages
+ * immediately after an SOF pulse may be lost and must be retried by the host.
+ * What can you do with this hook? Since the SOF signal occurs exactly every
+ * 1 ms (unless the host is in sleep mode), you can use it to tune OSCCAL in
+ * designs running on the internal RC oscillator.
+ * Please note that Start Of Frame detection works only if D- is wired to the
+ * interrupt, not D+. THIS IS DIFFERENT THAN MOST EXAMPLES!
+ */
+#define USB_CFG_CHECK_DATA_TOGGLING 0
+/* define this macro to 1 if you want to filter out duplicate data packets
+ * sent by the host. Duplicates occur only as a consequence of communication
+ * errors, when the host does not receive an ACK. Please note that you need to
+ * implement the filtering yourself in usbFunctionWriteOut() and
+ * usbFunctionWrite(). Use the global usbCurrentDataToken and a static variable
+ * for each control- and out-endpoint to check for duplicate packets.
+ */
+#define USB_CFG_HAVE_MEASURE_FRAME_LENGTH 0
+/* define this macro to 1 if you want the function usbMeasureFrameLength()
+ * compiled in. This function can be used to calibrate the AVR's RC oscillator.
+ */
+#define USB_USE_FAST_CRC 0
+/* The assembler module has two implementations for the CRC algorithm. One is
+ * faster, the other is smaller. This CRC routine is only used for transmitted
+ * messages where timing is not critical. The faster routine needs 31 cycles
+ * per byte while the smaller one needs 61 to 69 cycles. The faster routine
+ * may be worth the 32 bytes bigger code size if you transmit lots of data and
+ * run the AVR close to its limit.
+ */
+
+/* -------------------------- Device Description --------------------------- */
+
+#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
+/* USB vendor ID for the device, low byte first. If you have registered your
+ * own Vendor ID, define it here. Otherwise you may use one of obdev's free
+ * shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
+ * *** IMPORTANT NOTE ***
+ * This template uses obdev's shared VID/PID pair for Vendor Class devices
+ * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
+ * the implications!
+ */
+#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
+/* This is the ID of the product, low byte first. It is interpreted in the
+ * scope of the vendor ID. If you have registered your own VID with usb.org
+ * or if you have licensed a PID from somebody else, define it here. Otherwise
+ * you may use one of obdev's free shared VID/PID pairs. See the file
+ * USB-IDs-for-free.txt for details!
+ * *** IMPORTANT NOTE ***
+ * This template uses obdev's shared VID/PID pair for Vendor Class devices
+ * with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
+ * the implications!
+ */
+#define USB_CFG_DEVICE_VERSION 0x00, 0x02
+/* Version number of the device: Minor number first, then major number.
+ */
+#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
+#define USB_CFG_VENDOR_NAME_LEN 13
+/* These two values define the vendor name returned by the USB device. The name
+ * must be given as a list of characters under single quotes. The characters
+ * are interpreted as Unicode (UTF-16) entities.
+ * If you don't want a vendor name string, undefine these macros.
+ * ALWAYS define a vendor name containing your Internet domain name if you use
+ * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
+ * details.
+ */
+#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
+#define USB_CFG_DEVICE_NAME_LEN 8
+/* Same as above for the device name. If you don't want a device name, undefine
+ * the macros. See the file USB-IDs-for-free.txt before you assign a name if
+ * you use a shared VID/PID.
+ */
+/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
+/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
+/* Same as above for the serial number. If you don't want a serial number,
+ * undefine the macros.
+ * It may be useful to provide the serial number through other means than at
+ * compile time. See the section about descriptor properties below for how
+ * to fine tune control over USB descriptors such as the string descriptor
+ * for the serial number.
+ */
+#define USB_CFG_DEVICE_CLASS 0
+#define USB_CFG_DEVICE_SUBCLASS 0
+/* See USB specification if you want to conform to an existing device class.
+ * Class 0xff is "vendor specific".
+ */
+#define USB_CFG_INTERFACE_CLASS 3 /* HID */
+#define USB_CFG_INTERFACE_SUBCLASS 1 /* Boot */
+#define USB_CFG_INTERFACE_PROTOCOL 1 /* Keyboard */
+/* See USB specification if you want to conform to an existing device class or
+ * protocol. The following classes must be set at interface level:
+ * HID class is 3, no subclass and protocol required (but may be useful!)
+ * CDC class is 2, use subclass 2 and protocol 1 for ACM
+ */
+#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0
+/* Define this to the length of the HID report descriptor, if you implement
+ * an HID device. Otherwise don't define it or define it to 0.
+ * If you use this define, you must add a PROGMEM character array named
+ * "usbHidReportDescriptor" to your code which contains the report descriptor.
+ * Don't forget to keep the array and this define in sync!
+ */
+
+/* #define USB_PUBLIC static */
+/* Use the define above if you #include usbdrv.c instead of linking against it.
+ * This technique saves a couple of bytes in flash memory.
+ */
+
+/* ------------------- Fine Control over USB Descriptors ------------------- */
+/* If you don't want to use the driver's default USB descriptors, you can
+ * provide our own. These can be provided as (1) fixed length static data in
+ * flash memory, (2) fixed length static data in RAM or (3) dynamically at
+ * runtime in the function usbFunctionDescriptor(). See usbdrv.h for more
+ * information about this function.
+ * Descriptor handling is configured through the descriptor's properties. If
+ * no properties are defined or if they are 0, the default descriptor is used.
+ * Possible properties are:
+ * + USB_PROP_IS_DYNAMIC: The data for the descriptor should be fetched
+ * at runtime via usbFunctionDescriptor(). If the usbMsgPtr mechanism is
+ * used, the data is in FLASH by default. Add property USB_PROP_IS_RAM if
+ * you want RAM pointers.
+ * + USB_PROP_IS_RAM: The data returned by usbFunctionDescriptor() or found
+ * in static memory is in RAM, not in flash memory.
+ * + USB_PROP_LENGTH(len): If the data is in static memory (RAM or flash),
+ * the driver must know the descriptor's length. The descriptor itself is
+ * found at the address of a well known identifier (see below).
+ * List of static descriptor names (must be declared PROGMEM if in flash):
+ * char usbDescriptorDevice[];
+ * char usbDescriptorConfiguration[];
+ * char usbDescriptorHidReport[];
+ * char usbDescriptorString0[];
+ * int usbDescriptorStringVendor[];
+ * int usbDescriptorStringDevice[];
+ * int usbDescriptorStringSerialNumber[];
+ * Other descriptors can't be provided statically, they must be provided
+ * dynamically at runtime.
+ *
+ * Descriptor properties are or-ed or added together, e.g.:
+ * #define USB_CFG_DESCR_PROPS_DEVICE (USB_PROP_IS_RAM | USB_PROP_LENGTH(18))
+ *
+ * The following descriptors are defined:
+ * USB_CFG_DESCR_PROPS_DEVICE
+ * USB_CFG_DESCR_PROPS_CONFIGURATION
+ * USB_CFG_DESCR_PROPS_STRINGS
+ * USB_CFG_DESCR_PROPS_STRING_0
+ * USB_CFG_DESCR_PROPS_STRING_VENDOR
+ * USB_CFG_DESCR_PROPS_STRING_PRODUCT
+ * USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER
+ * USB_CFG_DESCR_PROPS_HID
+ * USB_CFG_DESCR_PROPS_HID_REPORT
+ * USB_CFG_DESCR_PROPS_UNKNOWN (for all descriptors not handled by the driver)
+ *
+ * Note about string descriptors: String descriptors are not just strings, they
+ * are Unicode strings prefixed with a 2 byte header. Example:
+ * int serialNumberDescriptor[] = {
+ * USB_STRING_DESCRIPTOR_HEADER(6),
+ * 'S', 'e', 'r', 'i', 'a', 'l'
+ * };
+ */
+
+#define USB_CFG_DESCR_PROPS_DEVICE 0
+#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
+#define USB_CFG_DESCR_PROPS_STRINGS 0
+#define USB_CFG_DESCR_PROPS_STRING_0 0
+#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
+#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
+#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
+#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_HID 0
+#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
+//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
+#define USB_CFG_DESCR_PROPS_UNKNOWN 0
+
+#define usbMsgPtr_t unsigned short
+/* If usbMsgPtr_t is not defined, it defaults to 'uchar *'. We define it to
+ * a scalar type here because gcc generates slightly shorter code for scalar
+ * arithmetics than for pointer arithmetics. Remove this define for backward
+ * type compatibility or define it to an 8 bit type if you use data in RAM only
+ * and all RAM is below 256 bytes (tiny memory model in IAR CC).
+ */
+
+/* ----------------------- Optional MCU Description ------------------------ */
+
+/* The following configurations have working defaults in usbdrv.h. You
+ * usually don't need to set them explicitly. Only if you want to run
+ * the driver on a device which is not yet supported or with a compiler
+ * which is not fully supported (such as IAR C) or if you use a differnt
+ * interrupt than INT0, you may have to define some of these.
+ */
+/* #define USB_INTR_CFG MCUCR */
+/* #define USB_INTR_CFG_SET ((1 << ISC00) | (1 << ISC01)) */
+/* #define USB_INTR_CFG_CLR 0 */
+/* #define USB_INTR_ENABLE GIMSK */
+/* #define USB_INTR_ENABLE_BIT INT0 */
+/* #define USB_INTR_PENDING GIFR */
+/* #define USB_INTR_PENDING_BIT INTF0 */
+/* #define USB_INTR_VECTOR INT0_vect */
+
+/* Set INT1 for D- falling edge to count SOF */
+/* #define USB_INTR_CFG EICRA */
+#define USB_INTR_CFG_SET ((1 << ISC11) | (0 << ISC10))
+/* #define USB_INTR_CFG_CLR 0 */
+/* #define USB_INTR_ENABLE EIMSK */
+#define USB_INTR_ENABLE_BIT INT1
+/* #define USB_INTR_PENDING EIFR */
+#define USB_INTR_PENDING_BIT INTF1
+#define USB_INTR_VECTOR INT1_vect
diff --git a/keyboards/unikorn/config.h b/keyboards/unikorn/config.h
index 161956b88ec..a871c0e276f 100644
--- a/keyboards/unikorn/config.h
+++ b/keyboards/unikorn/config.h
@@ -35,7 +35,6 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define NO_BACKLIGHT_CLOCK
#define BACKLIGHT_LEVELS 1
#ifdef RGBLIGHT_ENABLE
#define RGBLED_NUM 17
diff --git a/keyboards/unikorn/info.json b/keyboards/unikorn/info.json
index 9c82e25b479..71088d20479 100644
--- a/keyboards/unikorn/info.json
+++ b/keyboards/unikorn/info.json
@@ -11,6 +11,10 @@
"LAYOUT_60_ansi": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
+ },
+
+ "LAYOUT_60_tsangan_hhkb": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}]
}
}
}
\ No newline at end of file
diff --git a/keyboards/unikorn/keymaps/default/keymap.c b/keyboards/unikorn/keymaps/default/keymap.c
index d19d83c8abb..3e730362538 100644
--- a/keyboards/unikorn/keymaps/default/keymap.c
+++ b/keyboards/unikorn/keymaps/default/keymap.c
@@ -19,7 +19,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_ansi(
- KC_GRV, KC_Q, 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_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_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_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,
diff --git a/keyboards/unikorn/keymaps/default/readme.md b/keyboards/unikorn/keymaps/default/readme.md
deleted file mode 100644
index 1f19a96b46e..00000000000
--- a/keyboards/unikorn/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for singa
\ No newline at end of file
diff --git a/keyboards/unikorn/keymaps/tsangan/keymap.c b/keyboards/unikorn/keymaps/tsangan/keymap.c
new file mode 100644
index 00000000000..4c86d4f02e9
--- /dev/null
+++ b/keyboards/unikorn/keymaps/tsangan/keymap.c
@@ -0,0 +1,35 @@
+/* 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_60_tsangan_hhkb(
+ 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_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_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, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_tsangan_hhkb(
+ 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_DEL, KC_DEL,
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/unikorn/readme.md b/keyboards/unikorn/readme.md
index 953d5be7926..3175cddc2de 100644
--- a/keyboards/unikorn/readme.md
+++ b/keyboards/unikorn/readme.md
@@ -26,7 +26,11 @@ Flashing
ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods.
-**Reset Key:** Short the two holes labeled `FW_JP` beside the Tab key. At this time there is no reset key to press.
+**Reset Key:** Short the two holes labeled `FW_JP` underneath the PCB, beside the Tab key while plugging in the keyboard.
+
+Do not confuse this with the LED holes of the switch in the `Tab` position. `FW_JP` is not reachable from the top as the plate blocks access to it.
+
+It is recommended to program a `RESET` key in your keymap.
Windows:
1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash).
diff --git a/keyboards/unikorn/unikorn.h b/keyboards/unikorn/unikorn.h
index 6824492e04b..2666bf066ec 100644
--- a/keyboards/unikorn/unikorn.h
+++ b/keyboards/unikorn/unikorn.h
@@ -50,3 +50,17 @@
{ k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, k48, k49, KC_NO, k4B, KC_NO, k4D, KC_NO }, \
}
+#define LAYOUT_60_tsangan_hhkb( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k45, k48, k49, k4A \
+){ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, KC_NO, k2D, KC_NO }, \
+ { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, KC_NO }, \
+ { k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, k48, k49, k4A, KC_NO, KC_NO, KC_NO, KC_NO }, \
+}
+
diff --git a/keyboards/ut472/keymaps/tucznak/config.h b/keyboards/ut472/keymaps/tucznak/config.h
new file mode 100644
index 00000000000..06524822e86
--- /dev/null
+++ b/keyboards/ut472/keymaps/tucznak/config.h
@@ -0,0 +1,18 @@
+#pragma once
+
+#undef MANUFACTURER
+#undef PRODUCT
+#undef DESCRIPTION
+
+#define MANUFACTURER Potato Inc.
+#define PRODUCT Qt3.14
+#define DESCRIPTION Smolkeeb
+
+/* turn off RGB when computer sleeps */
+#ifdef RGBLIGHT_ENABLE
+#define RGBLIGHT_SLEEP
+#endif
+
+/* send tap key if no layer key was used even after tap delay */
+#define TAPPING_TERM 50
+#define RETRO_TAPPING
diff --git a/keyboards/ut472/keymaps/tucznak/keymap.c b/keyboards/ut472/keymaps/tucznak/keymap.c
new file mode 100644
index 00000000000..7fbbd0e76e2
--- /dev/null
+++ b/keyboards/ut472/keymaps/tucznak/keymap.c
@@ -0,0 +1,111 @@
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _BASE,
+ _LEFT,
+ _RIGHT,
+ _NUM,
+ _FN
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Base Layer
+ * ,-------------------------------------------------------------------------.
+ * | Esc | Q | W | E | R | T | Y | U | I | O | P |Bspace |
+ * |-------------------------------------------------------------------------+
+ * | Tab | A | S | D | F | G | H | J | K | L | ; |Enter |
+ * |-------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | Up | FN |
+ * |-------------------------------------------------------------------------+
+ * | Ctrl| Win | LAlt| NUM | LEFT | Space | RIGHT| RAlt| Left| Down|Right|
+ * `-------------------------------------------------------------------------'
+ */
+
+ [_BASE] = 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_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, MO(_FN),
+ KC_LCTL, KC_LGUI, KC_LALT, MO(_NUM),MO(_LEFT), KC_SPC, MO(_RIGHT), KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Left function layer (1)
+ * F keys and navigation
+ * ,-------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |-------------------------------------------------------------------------+
+ * | | | | | | | | | | | | Ins |
+ * |-------------------------------------------------------------------------+
+ * | | Caps| |PrtSc|ScrLk|Pause| | | | | PgUp| Del |
+ * |-------------------------------------------------------------------------+
+ * | | | | | | | | Menu| Home| PgDn| End |
+ * `-------------------------------------------------------------------------'
+ */
+
+ [_LEFT] = 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_CAPS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______, KC_PGUP, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, KC_APP, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ /* Right function layer (2)
+ * National and special characters
+ * ,-------------------------------------------------------------------------.
+ * | +1 | ě2 | š3 | č4 | ř5 | ž6 | ý7 | á8 | í9 | é0 | ´ | ˇ |
+ * |-------------------------------------------------------------------------+
+ * | ;° | | | | | | | ( | ) | § | ! | ú | / |
+ * |-------------------------------------------------------------------------+
+ * | | \ | | | | | % | = | ¨ | ' | - | _ |
+ * |-------------------------------------------------------------------------+
+ * | | | | | | | | | | | |
+ * `-------------------------------------------------------------------------'
+ */
+
+ [_RIGHT] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, LSFT(KC_EQL),
+ KC_GRV, LSFT(KC_NUBS), _______, _______, _______, _______, LSFT(KC_RBRC), KC_RBRC, KC_QUOT, LSFT(KC_QUOT), KC_LBRC, LSFT(KC_LBRC),
+ _______, KC_NUBS, _______, _______, _______, _______, LSFT(KC_MINS), KC_MINS, KC_BSLS, LSFT(KC_BSLS), KC_SLSH, LSFT(KC_SLSH),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Numpad layer (3)
+ * ,-------------------------------------------------------------------------.
+ * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ * |-------------------------------------------------------------------------+
+ * | | | | | | | | 4 | 5 | 6 | / | |
+ * |-------------------------------------------------------------------------+
+ * | |NumLk| | | | | | 1 | 2 | 3 | * | |
+ * |-------------------------------------------------------------------------+
+ * | | | | | | | 0 | . | + | - | |
+ * `-------------------------------------------------------------------------'
+ */
+
+ [_NUM] = LAYOUT(
+ _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_0, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PSLS, _______,
+ _______, KC_NLCK, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PAST, _______,
+ _______, _______, _______, _______, _______, _______, KC_KP_0, KC_DOT, KC_PPLS, KC_PMNS, _______
+ ),
+
+ /* Function layer (4)
+ * Backlighting, keyboard controls, music etc.
+ * ,-------------------------------------------------------------------------.
+ * |Reset| | | | | | | | | | | Vol+ |
+ * |-------------------------------------------------------------------------+
+ * | | VLK | Mod+| Hue+| Sat+| Val+| | | | | | Vol- |
+ * |-------------------------------------------------------------------------+
+ * | | TOG | Mod-| Hue-| Sat-| Val-| | | | | Stop| Mute|
+ * |-------------------------------------------------------------------------+
+ * |Sleep| | | | | C+A+D | C+A+I | | Prev|Pause| Next|
+ * `-------------------------------------------------------------------------'
+ */
+
+ [_FN] = LAYOUT(
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ _______, VLK_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, KC_VOLD,
+ _______, RGB_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, KC_MSTP, KC_MUTE,
+ KC_SLEP, _______, _______, _______, _______, LCA(KC_DEL), LCA(KC_INS), _______, KC_MPRV, KC_MPLY, KC_MNXT
+ )
+};
diff --git a/keyboards/ut472/keymaps/tucznak/readme.md b/keyboards/ut472/keymaps/tucznak/readme.md
new file mode 100644
index 00000000000..95180bc392a
--- /dev/null
+++ b/keyboards/ut472/keymaps/tucznak/readme.md
@@ -0,0 +1,5 @@
+# TuCZnak's modified layout
+
+This layout is optimized for Czech national QWERTZ keymap.
+It includes separated layers for numbers, national characters,
+special characters and configuration.
diff --git a/keyboards/ut472/keymaps/tucznak/rules.mk b/keyboards/ut472/keymaps/tucznak/rules.mk
new file mode 100644
index 00000000000..112b769841d
--- /dev/null
+++ b/keyboards/ut472/keymaps/tucznak/rules.mk
@@ -0,0 +1,18 @@
+# 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
+NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = 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
+RGBLIGHT_ENABLE = yes
diff --git a/keyboards/v60_type_r/info.json b/keyboards/v60_type_r/info.json
index 3bb4ff0a071..fe5be6055fb 100644
--- a/keyboards/v60_type_r/info.json
+++ b/keyboards/v60_type_r/info.json
@@ -11,6 +11,9 @@
"LAYOUT_60_ansi": {
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
- }
+ },
+ "LAYOUT_60_iso": {
+ "layout": [{"label":"esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"backspace", "x":13, "y":0, "w":2}, {"label":"tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"caps", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"lshift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"rshift", "x":12.25, "y":3, "w":2.75}, {"label":"lctrl", "x":0, "y":4, "w":1.25}, {"label":"lwin", "x":1.25, "y":4, "w":1.25}, {"label":"lalt", "x":2.5, "y":4, "w":1.25}, {"label":"space", "x":3.75, "y":4, "w":6.25}, {"label":"fn0", "x":10, "y":4, "w":1.25}, {"label":"rwin", "x":11.25, "y":4, "w":1.25}, {"label":"menu", "x":12.5, "y":4, "w":1.25}, {"label":"rctrl", "x":13.75, "y":4, "w":1.25}]
+ }
}
}
diff --git a/keyboards/v60_type_r/keymaps/iso/config.h b/keyboards/v60_type_r/keymaps/iso/config.h
new file mode 100644
index 00000000000..6a1994d6ffd
--- /dev/null
+++ b/keyboards/v60_type_r/keymaps/iso/config.h
@@ -0,0 +1,18 @@
+/* Copyright 2019 Lukewh
+ *
+ * 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/v60_type_r/keymaps/iso/keymap.c b/keyboards/v60_type_r/keymaps/iso/keymap.c
new file mode 100644
index 00000000000..74aee86ed59
--- /dev/null
+++ b/keyboards/v60_type_r/keymaps/iso/keymap.c
@@ -0,0 +1,54 @@
+/* This is the default ISO layout provided by the KBP V60 Type R
+* as depicted on the stock keycaps.
+*/
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap 0: Default Layer (Qwerty)
+ * ,-----------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Bs |
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Entr|
+ * |-------------------------------------------------------| |
+ * |Caps | A| S| D| F| G| H| J| K| L| ;| '| #| |
+ * |-----------------------------------------------------------|
+ * |LShif| || Z| X| C| V| B| N| M| ,| .| /| RShift |
+ * |-----------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Space |Fn0 |Gui |App|Ctrl|
+ * `-----------------------------------------------------------'
+ */
+ [0] = LAYOUT_60_iso( \
+ 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE, KC_NUHS, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_APP, KC_RCTL \
+ ),
+
+ /* Keymap 0: Default Layer (Qwerty)
+ * ,-----------------------------------------------------------.
+ * | ¬| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| -| =| Bs |
+ * |-----------------------------------------------------------|
+ * | | | up| | | | | |prt|scr|pus| up| | |
+ * |-------------------------------------------------------| |
+ * | |lft|dwn|rig| | | | |hom|pgu|lft|rig| | |
+ * |-----------------------------------------------------------|
+ * | | | | | | |vld|vlu|mut|end|pgd|dwn| |
+ * |-----------------------------------------------------------|
+ * | | | | | | | | |
+ * `-----------------------------------------------------------'
+ */
+ [1] = LAYOUT_60_iso( \
+ 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_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, \
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+};
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/v60_type_r/keymaps/iso/readme.md b/keyboards/v60_type_r/keymaps/iso/readme.md
new file mode 100644
index 00000000000..2d5e1a13d21
--- /dev/null
+++ b/keyboards/v60_type_r/keymaps/iso/readme.md
@@ -0,0 +1,5 @@
+
+
+# Default ISO Layout
+
+This is the default layout that comes flashed on the KBP V60 Type R ISO version.
diff --git a/keyboards/v60_type_r/keymaps/iso/rules.mk b/keyboards/v60_type_r/keymaps/iso/rules.mk
new file mode 100644
index 00000000000..b6c9a258059
--- /dev/null
+++ b/keyboards/v60_type_r/keymaps/iso/rules.mk
@@ -0,0 +1,2 @@
+BACKLIGHT_ENABLE = no
+RGBLIGHT_ENABLE = no
diff --git a/keyboards/v60_type_r/rules.mk b/keyboards/v60_type_r/rules.mk
index f7f7c9b9ee3..35a79db1619 100644
--- a/keyboards/v60_type_r/rules.mk
+++ b/keyboards/v60_type_r/rules.mk
@@ -68,4 +68,4 @@ 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
-LAYOUTS = 60_ansi
+LAYOUTS = 60_ansi 60_iso
diff --git a/keyboards/v60_type_r/v60_type_r.h b/keyboards/v60_type_r/v60_type_r.h
index 25097ed48e8..c33a2840b09 100644
--- a/keyboards/v60_type_r/v60_type_r.h
+++ b/keyboards/v60_type_r/v60_type_r.h
@@ -1,4 +1,4 @@
-/* Copyright 2017 benlyall, MechMerlin
+/* Copyright 2017 benlyall, MechMerlin, Lukewh
*
* 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
@@ -105,3 +105,33 @@ enum my_keycodes {
{ k40, k41, k42, k43, k44, k45, k46, k47 } \
}
+
+/* LAYOUT_iso
+ * ,-----------------------------------------------------------------------------------------.
+ * | K00 | K01 | K02 | K03 | K04 | K05 | K06 | K07 | K08 | K09 | K0A | K0B | K0C | K0D |
+ * |-----------------------------------------------------------------------------------------+
+ * | K10 | K11 | K12 | K13 | K14 | K15 | K16 | K17 | K18 | K19 | K1A | K1B | K1C | K1D |
+ * |--------------------------------------------------------------------------------- |
+ * | K20 | K21 | K22 | K23 | K24 | K25 | K26 | K27 | K28 | K29 | K2A | K2B | K2C | |
+ * |-----------------------------------------------------------------------------------------+
+ * | K30 | K31 | K32 | K33 | K34 | K35 | K36 | K37 | K38 | K39 | K3A | K3B | K3C |
+ * |-----------------------------------------------------------------------------------------+
+ * | K40 | K41 | K42 | K43 | K44 | K45 | K46 | K47 |
+ * `-----------------------------------------------------------------------------------------'
+ */
+#define LAYOUT_60_iso( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k43, k44, k45, k46, k47 \
+ ) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k08, k09, k0a, k0b, k0c, KC_NO, k0d, k10 }, \
+ { k11, k12, k13, k14, k15, k16, k17, k18 }, \
+ { k19, k1a, k1b, k1c, k2c, k20, k21, k22 }, \
+ { k23, k24, k25, k26, k27, k28, k29, k2a }, \
+ { k2b, k1d, k30, k31, k32, k33, k34, k35 }, \
+ { k36, k37, k38, k39, k3a, k3b, k3c, KC_NO }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 } \
+ }
diff --git a/keyboards/wasdat/keymaps/konstantin/rules.mk b/keyboards/wasdat/keymaps/konstantin/rules.mk
deleted file mode 100644
index 4bb1ee65880..00000000000
--- a/keyboards/wasdat/keymaps/konstantin/rules.mk
+++ /dev/null
@@ -1,8 +0,0 @@
-BOOTMAGIC_ENABLE = no
-COMMAND_ENABLE = yes
-CONSOLE_ENABLE = yes
-EXTRAKEY_ENABLE = yes
-MOUSEKEY_ENABLE = yes
-NKRO_ENABLE = yes
-TAP_DANCE_ENABLE = yes
-UNICODEMAP_ENABLE = yes
diff --git a/keyboards/whitefox/keymaps/konstantin/rules.mk b/keyboards/whitefox/keymaps/konstantin/rules.mk
index 625ef346c8d..bced6e8a707 100644
--- a/keyboards/whitefox/keymaps/konstantin/rules.mk
+++ b/keyboards/whitefox/keymaps/konstantin/rules.mk
@@ -1,11 +1,11 @@
-BOOTMAGIC_ENABLE = no
-COMMAND_ENABLE = yes
-CONSOLE_ENABLE = yes
-EXTRAKEY_ENABLE = yes
-MOUSEKEY_ENABLE = yes
-NKRO_ENABLE = yes
-TAP_DANCE_ENABLE = yes
-UNICODEMAP_ENABLE = yes
-
-BACKLIGHT_ENABLE = no
-VISUALIZER_ENABLE = no
+BACKLIGHT_ENABLE = no
+BOOTMAGIC_ENABLE = no
+COMMAND_ENABLE = yes
+CONSOLE_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+NKRO_ENABLE = yes
+SPACE_CADET_ENABLE = no
+TAP_DANCE_ENABLE = yes
+UNICODEMAP_ENABLE = yes
+VISUALIZER_ENABLE = no
diff --git a/keyboards/rama/koyu/config.h b/keyboards/wilba_tech/rama_works_koyu/config.h
similarity index 97%
rename from keyboards/rama/koyu/config.h
rename to keyboards/wilba_tech/rama_works_koyu/config.h
index 4fa8c3d8ad9..7fcfe08be03 100644
--- a/keyboards/rama/koyu/config.h
+++ b/keyboards/wilba_tech/rama_works_koyu/config.h
@@ -21,9 +21,9 @@
#define VENDOR_ID 0x5241 // "RW"
#define PRODUCT_ID 0x4B59 // "KY"
#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA.WORKS
-#define PRODUCT RAMA KOYU
-#define DESCRIPTION RAMA KOYU Keyboard
+#define MANUFACTURER RAMA WORKS
+#define PRODUCT RAMA WORKS KOYU
+#define DESCRIPTION RAMA WORKS KOYU
diff --git a/keyboards/rama/koyu/info.json b/keyboards/wilba_tech/rama_works_koyu/info.json
similarity index 95%
rename from keyboards/rama/koyu/info.json
rename to keyboards/wilba_tech/rama_works_koyu/info.json
index 4b6edc7bfa8..430bc6fed8e 100644
--- a/keyboards/rama/koyu/info.json
+++ b/keyboards/wilba_tech/rama_works_koyu/info.json
@@ -1,8 +1,8 @@
{
- "keyboard_name": "KOYU",
- "url": "",
+ "keyboard_name": "RAMA WORKS KOYU",
+ "url": "http://rama.works",
"maintainer": "Wilba",
- "bootloader": "DFU",
+ "bootloader": "atmel-dfu",
"width": 16,
"height": 5,
"layouts": {
diff --git a/keyboards/rama/koyu/keymaps/default/keymap.c b/keyboards/wilba_tech/rama_works_koyu/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/rama/koyu/keymaps/default/keymap.c
rename to keyboards/wilba_tech/rama_works_koyu/keymaps/default/keymap.c
diff --git a/keyboards/rama/koyu/koyu.c b/keyboards/wilba_tech/rama_works_koyu/rama_works_koyu.c
similarity index 100%
rename from keyboards/rama/koyu/koyu.c
rename to keyboards/wilba_tech/rama_works_koyu/rama_works_koyu.c
diff --git a/keyboards/rama/koyu/koyu.h b/keyboards/wilba_tech/rama_works_koyu/rama_works_koyu.h
similarity index 95%
rename from keyboards/rama/koyu/koyu.h
rename to keyboards/wilba_tech/rama_works_koyu/rama_works_koyu.h
index c2aaa0273a6..f51bc5c6137 100644
--- a/keyboards/rama/koyu/koyu.h
+++ b/keyboards/wilba_tech/rama_works_koyu/rama_works_koyu.h
@@ -17,8 +17,8 @@
#pragma once
#include "quantum.h"
-#include "../../zeal60/rgb_backlight_keycodes.h"
-#include "../../zeal60/zeal60_keycodes.h"
+#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
+#include "keyboards/wilba_tech/via_keycodes.h"
#define ____ KC_NO
diff --git a/keyboards/rama/koyu/readme.md b/keyboards/wilba_tech/rama_works_koyu/readme.md
similarity index 84%
rename from keyboards/rama/koyu/readme.md
rename to keyboards/wilba_tech/rama_works_koyu/readme.md
index c249bf11b62..11fa3bacf6e 100644
--- a/keyboards/rama/koyu/readme.md
+++ b/keyboards/wilba_tech/rama_works_koyu/readme.md
@@ -1,6 +1,6 @@
-# RAMA KOYU
+# RAMA WORKS KOYU
-
+
The 'wait' for something isn't the most conscious desire, but that anticipation creates nostalgia.
@@ -13,11 +13,11 @@ This is the sound of Rama Works. Never too busy-a feeling of delightful modern w
[More info at RAMA WORKS](https://rama.works/koyu/)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
-Hardware Supported: RAMA KOYU PCB
+Hardware Supported: RAMA WORKS KOYU PCB
Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/)
Make example for this keyboard (after setting up your build environment):
- make rama/koyu:default
+ make wilba_tech/rama_works_koyu: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/rama/koyu/rules.mk b/keyboards/wilba_tech/rama_works_koyu/rules.mk
similarity index 97%
rename from keyboards/rama/koyu/rules.mk
rename to keyboards/wilba_tech/rama_works_koyu/rules.mk
index 5e470769d60..9839602247b 100644
--- a/keyboards/rama/koyu/rules.mk
+++ b/keyboards/wilba_tech/rama_works_koyu/rules.mk
@@ -1,8 +1,8 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
drivers/issi/is31fl3731.c \
drivers/avr/i2c_master.c
diff --git a/keyboards/rama/m10_b/config.h b/keyboards/wilba_tech/rama_works_m10_b/config.h
similarity index 98%
rename from keyboards/rama/m10_b/config.h
rename to keyboards/wilba_tech/rama_works_m10_b/config.h
index 32d1d21ed35..0c800968f42 100644
--- a/keyboards/rama/m10_b/config.h
+++ b/keyboards/wilba_tech/rama_works_m10_b/config.h
@@ -24,9 +24,9 @@ along with this program. If not, see .
#define VENDOR_ID 0x5241 // "RW"
#define PRODUCT_ID 0x00AB // 10-B
#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA.WORKS
-#define PRODUCT RAMA M10-B
-#define DESCRIPTION RAMA M10-B
+#define MANUFACTURER RAMA WORKS
+#define PRODUCT RAMA WORKS M10-B
+#define DESCRIPTION RAMA WORKS M10-B
/* key matrix size */
#define MATRIX_ROWS 1
diff --git a/keyboards/rama/m10_b/info.json b/keyboards/wilba_tech/rama_works_m10_b/info.json
similarity index 80%
rename from keyboards/rama/m10_b/info.json
rename to keyboards/wilba_tech/rama_works_m10_b/info.json
index fb144030d0f..22b6506d6e6 100644
--- a/keyboards/rama/m10_b/info.json
+++ b/keyboards/wilba_tech/rama_works_m10_b/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "m10-b",
- "url": "",
- "maintainer": "qmk",
+ "keyboard_name": "RAMA WORKS M10-B",
+ "url": "http://rama.works",
+ "maintainer": "Wilba",
"width": 3,
"height": 4,
"layouts": {
diff --git a/keyboards/rama/m10_b/keymaps/default/config.h b/keyboards/wilba_tech/rama_works_m10_b/keymaps/default/config.h
similarity index 100%
rename from keyboards/rama/m10_b/keymaps/default/config.h
rename to keyboards/wilba_tech/rama_works_m10_b/keymaps/default/config.h
diff --git a/keyboards/rama/m10_b/keymaps/default/keymap.c b/keyboards/wilba_tech/rama_works_m10_b/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/rama/m10_b/keymaps/default/keymap.c
rename to keyboards/wilba_tech/rama_works_m10_b/keymaps/default/keymap.c
diff --git a/keyboards/rama/m10_b/keymaps/default/readme.md b/keyboards/wilba_tech/rama_works_m10_b/keymaps/default/readme.md
similarity index 100%
rename from keyboards/rama/m10_b/keymaps/default/readme.md
rename to keyboards/wilba_tech/rama_works_m10_b/keymaps/default/readme.md
diff --git a/keyboards/rama/m10_b/keymaps/knops/config.h b/keyboards/wilba_tech/rama_works_m10_b/keymaps/knops/config.h
similarity index 100%
rename from keyboards/rama/m10_b/keymaps/knops/config.h
rename to keyboards/wilba_tech/rama_works_m10_b/keymaps/knops/config.h
diff --git a/keyboards/rama/m10_b/keymaps/knops/keymap.c b/keyboards/wilba_tech/rama_works_m10_b/keymaps/knops/keymap.c
similarity index 100%
rename from keyboards/rama/m10_b/keymaps/knops/keymap.c
rename to keyboards/wilba_tech/rama_works_m10_b/keymaps/knops/keymap.c
diff --git a/keyboards/rama/m10_b/keymaps/knops/readme.md b/keyboards/wilba_tech/rama_works_m10_b/keymaps/knops/readme.md
similarity index 100%
rename from keyboards/rama/m10_b/keymaps/knops/readme.md
rename to keyboards/wilba_tech/rama_works_m10_b/keymaps/knops/readme.md
diff --git a/keyboards/rama/m10_b/m10_b.c b/keyboards/wilba_tech/rama_works_m10_b/rama_works_m10_b.c
similarity index 100%
rename from keyboards/rama/m10_b/m10_b.c
rename to keyboards/wilba_tech/rama_works_m10_b/rama_works_m10_b.c
diff --git a/keyboards/rama/m10_b/m10_b.h b/keyboards/wilba_tech/rama_works_m10_b/rama_works_m10_b.h
similarity index 100%
rename from keyboards/rama/m10_b/m10_b.h
rename to keyboards/wilba_tech/rama_works_m10_b/rama_works_m10_b.h
diff --git a/keyboards/rama/m10_b/readme.md b/keyboards/wilba_tech/rama_works_m10_b/readme.md
similarity index 55%
rename from keyboards/rama/m10_b/readme.md
rename to keyboards/wilba_tech/rama_works_m10_b/readme.md
index 9facb5cd349..6b4130aeb4f 100644
--- a/keyboards/rama/m10_b/readme.md
+++ b/keyboards/wilba_tech/rama_works_m10_b/readme.md
@@ -1,15 +1,15 @@
-# RAMA M10-B
+# RAMA WORKS M10-B
-
+
Mechanical Mini Pad. [More info at Massdrop](https://www.massdrop.com/buy/rama-m10-a)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
-Hardware Supported: RAMA M10-B PCB
+Hardware Supported: RAMA WORKS M10-B PCB
Hardware Availability: [Massdrop](https://www.massdrop.com/buy/rama-m10-a)
Make example for this keyboard (after setting up your build environment):
- make rama/m10_b:default
+ make wilba_tech/rama_works_m10_b:default
See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
\ No newline at end of file
diff --git a/keyboards/rama/m10_b/rules.mk b/keyboards/wilba_tech/rama_works_m10_b/rules.mk
similarity index 100%
rename from keyboards/rama/m10_b/rules.mk
rename to keyboards/wilba_tech/rama_works_m10_b/rules.mk
diff --git a/keyboards/rama/m60_a/config.h b/keyboards/wilba_tech/rama_works_m60_a/config.h
similarity index 97%
rename from keyboards/rama/m60_a/config.h
rename to keyboards/wilba_tech/rama_works_m60_a/config.h
index b3e91623111..b8ce1b6c869 100644
--- a/keyboards/rama/m60_a/config.h
+++ b/keyboards/wilba_tech/rama_works_m60_a/config.h
@@ -21,9 +21,9 @@
#define VENDOR_ID 0x5241 // "RW"
#define PRODUCT_ID 0x060A // 60-A
#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA.WORKS
-#define PRODUCT RAMA M60-A
-#define DESCRIPTION RAMA M60-A Keyboard
+#define MANUFACTURER RAMA WORKS
+#define PRODUCT RAMA WORKS M60-A
+#define DESCRIPTION RAMA WORKS M60-A
// key matrix size
#define MATRIX_ROWS 5
diff --git a/keyboards/rama/m60_a/info.json b/keyboards/wilba_tech/rama_works_m60_a/info.json
similarity index 95%
rename from keyboards/rama/m60_a/info.json
rename to keyboards/wilba_tech/rama_works_m60_a/info.json
index 577becd2196..e2061b73f6b 100644
--- a/keyboards/rama/m60_a/info.json
+++ b/keyboards/wilba_tech/rama_works_m60_a/info.json
@@ -1,8 +1,8 @@
{
- "keyboard_name": "M60-A",
- "url": "",
+ "keyboard_name": "RAMA WORKS M60-A",
+ "url": "http://rama.works",
"maintainer": "Wilba",
- "bootloader": "DFU",
+ "bootloader": "atmel-dfu",
"width": 15,
"height": 5,
"layouts": {
diff --git a/keyboards/rama/m60_a/keymaps/default/keymap.c b/keyboards/wilba_tech/rama_works_m60_a/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/rama/m60_a/keymaps/default/keymap.c
rename to keyboards/wilba_tech/rama_works_m60_a/keymaps/default/keymap.c
diff --git a/keyboards/rama/m60_a/keymaps/proto/config.h b/keyboards/wilba_tech/rama_works_m60_a/keymaps/proto/config.h
similarity index 100%
rename from keyboards/rama/m60_a/keymaps/proto/config.h
rename to keyboards/wilba_tech/rama_works_m60_a/keymaps/proto/config.h
diff --git a/keyboards/rama/m60_a/keymaps/proto/keymap.c b/keyboards/wilba_tech/rama_works_m60_a/keymaps/proto/keymap.c
similarity index 100%
rename from keyboards/rama/m60_a/keymaps/proto/keymap.c
rename to keyboards/wilba_tech/rama_works_m60_a/keymaps/proto/keymap.c
diff --git a/keyboards/rama/m60_a/m60_a.c b/keyboards/wilba_tech/rama_works_m60_a/rama_works_m60_a.c
similarity index 100%
rename from keyboards/rama/m60_a/m60_a.c
rename to keyboards/wilba_tech/rama_works_m60_a/rama_works_m60_a.c
diff --git a/keyboards/rama/m60_a/m60_a.h b/keyboards/wilba_tech/rama_works_m60_a/rama_works_m60_a.h
similarity index 93%
rename from keyboards/rama/m60_a/m60_a.h
rename to keyboards/wilba_tech/rama_works_m60_a/rama_works_m60_a.h
index 3caab6ac0f0..01e096fee6a 100644
--- a/keyboards/rama/m60_a/m60_a.h
+++ b/keyboards/wilba_tech/rama_works_m60_a/rama_works_m60_a.h
@@ -16,8 +16,8 @@
#pragma once
#include "quantum.h"
-#include "../../zeal60/rgb_backlight_keycodes.h"
-#include "../../zeal60/zeal60_keycodes.h"
+#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
+#include "keyboards/wilba_tech/via_keycodes.h"
#define XXX KC_NO
diff --git a/keyboards/rama/m60_a/readme.md b/keyboards/wilba_tech/rama_works_m60_a/readme.md
similarity index 77%
rename from keyboards/rama/m60_a/readme.md
rename to keyboards/wilba_tech/rama_works_m60_a/readme.md
index fe54f0163a1..1a9d9945bd8 100644
--- a/keyboards/rama/m60_a/readme.md
+++ b/keyboards/wilba_tech/rama_works_m60_a/readme.md
@@ -1,15 +1,15 @@
-# RAMA M60-A
+# RAMA WORKS M60-A
-
+
The M60-A represents the benchmark and equilibrium between function and design for us at Rama Works. The gently exaggerated design of the frame is not understated, but rather provocative. Inspiration and evolution from previous models are evident in the beautifully articulated design and the well defined aesthetic, the fingerprint of our 'Industrial Modern' designs. The M60-A offers a unique contender in the traditional 60% form factor. [More info at RAMA WORKS](https://rama.works/m60-a/)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
-Hardware Supported: RAMA M60-A PCB
+Hardware Supported: RAMA WORKS M60-A PCB
Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/)
Make example for this keyboard (after setting up your build environment):
- make rama/m60_a:default
+ make wilba_tech/rama_works_m60_a: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/rama/m60_a/rules.mk b/keyboards/wilba_tech/rama_works_m60_a/rules.mk
similarity index 97%
rename from keyboards/rama/m60_a/rules.mk
rename to keyboards/wilba_tech/rama_works_m60_a/rules.mk
index 09ed03e9514..3b2287333c4 100644
--- a/keyboards/rama/m60_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m60_a/rules.mk
@@ -1,8 +1,8 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
drivers/issi/is31fl3731.c \
drivers/avr/i2c_master.c
diff --git a/keyboards/rama/m6_a/config.h b/keyboards/wilba_tech/rama_works_m6_a/config.h
similarity index 97%
rename from keyboards/rama/m6_a/config.h
rename to keyboards/wilba_tech/rama_works_m6_a/config.h
index 341e29b9587..b9f12f42530 100644
--- a/keyboards/rama/m6_a/config.h
+++ b/keyboards/wilba_tech/rama_works_m6_a/config.h
@@ -21,9 +21,9 @@
#define VENDOR_ID 0x5241 // "RW"
#define PRODUCT_ID 0x006A // 6-A
#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA.WORKS
-#define PRODUCT RAMA M6-A
-#define DESCRIPTION RAMA M6-A Macropad
+#define MANUFACTURER RAMA WORKS
+#define PRODUCT RAMA WORKS M6-A
+#define DESCRIPTION RAMA WORKS M6-A
/* key matrix size */
#define MATRIX_ROWS 1
diff --git a/keyboards/rama/m6_b/info.json b/keyboards/wilba_tech/rama_works_m6_a/info.json
similarity index 74%
rename from keyboards/rama/m6_b/info.json
rename to keyboards/wilba_tech/rama_works_m6_a/info.json
index c88a3cc6185..cbc8cffe4b2 100644
--- a/keyboards/rama/m6_b/info.json
+++ b/keyboards/wilba_tech/rama_works_m6_a/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "m6-b",
- "url": "",
- "maintainer": "qmk",
+ "keyboard_name": "RAMA WORKS M6-A",
+ "url": "http://rama.works",
+ "maintainer": "Wilba",
"width": 3,
"height": 2,
"layouts": {
diff --git a/keyboards/rama/m6_a/keymaps/default/keymap.c b/keyboards/wilba_tech/rama_works_m6_a/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/rama/m6_a/keymaps/default/keymap.c
rename to keyboards/wilba_tech/rama_works_m6_a/keymaps/default/keymap.c
diff --git a/keyboards/rama/m6_a/keymaps/default/readme.md b/keyboards/wilba_tech/rama_works_m6_a/keymaps/default/readme.md
similarity index 100%
rename from keyboards/rama/m6_a/keymaps/default/readme.md
rename to keyboards/wilba_tech/rama_works_m6_a/keymaps/default/readme.md
diff --git a/keyboards/rama/m6_a/keymaps/knops/config.h b/keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/config.h
similarity index 100%
rename from keyboards/rama/m6_a/keymaps/knops/config.h
rename to keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/config.h
diff --git a/keyboards/rama/m6_a/keymaps/knops/keymap.c b/keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/keymap.c
similarity index 100%
rename from keyboards/rama/m6_a/keymaps/knops/keymap.c
rename to keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/keymap.c
diff --git a/keyboards/rama/m6_a/keymaps/knops/readme.md b/keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/readme.md
similarity index 100%
rename from keyboards/rama/m6_a/keymaps/knops/readme.md
rename to keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/readme.md
diff --git a/keyboards/rama/m6_a/keymaps/krusli/README.md b/keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli/README.md
similarity index 100%
rename from keyboards/rama/m6_a/keymaps/krusli/README.md
rename to keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli/README.md
diff --git a/keyboards/rama/m6_a/keymaps/krusli/keymap.c b/keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli/keymap.c
similarity index 100%
rename from keyboards/rama/m6_a/keymaps/krusli/keymap.c
rename to keyboards/wilba_tech/rama_works_m6_a/keymaps/krusli/keymap.c
diff --git a/keyboards/rama/m6_a/keymaps/naut/config.h b/keyboards/wilba_tech/rama_works_m6_a/keymaps/naut/config.h
similarity index 100%
rename from keyboards/rama/m6_a/keymaps/naut/config.h
rename to keyboards/wilba_tech/rama_works_m6_a/keymaps/naut/config.h
diff --git a/keyboards/rama/m6_a/keymaps/naut/keymap.c b/keyboards/wilba_tech/rama_works_m6_a/keymaps/naut/keymap.c
similarity index 100%
rename from keyboards/rama/m6_a/keymaps/naut/keymap.c
rename to keyboards/wilba_tech/rama_works_m6_a/keymaps/naut/keymap.c
diff --git a/keyboards/rama/m6_a/keymaps/naut/readme.md b/keyboards/wilba_tech/rama_works_m6_a/keymaps/naut/readme.md
similarity index 100%
rename from keyboards/rama/m6_a/keymaps/naut/readme.md
rename to keyboards/wilba_tech/rama_works_m6_a/keymaps/naut/readme.md
diff --git a/keyboards/rama/m6_a/m6_a.c b/keyboards/wilba_tech/rama_works_m6_a/rama_works_m6_a.c
similarity index 100%
rename from keyboards/rama/m6_a/m6_a.c
rename to keyboards/wilba_tech/rama_works_m6_a/rama_works_m6_a.c
diff --git a/keyboards/rama/m6_a/m6_a.h b/keyboards/wilba_tech/rama_works_m6_a/rama_works_m6_a.h
similarity index 100%
rename from keyboards/rama/m6_a/m6_a.h
rename to keyboards/wilba_tech/rama_works_m6_a/rama_works_m6_a.h
diff --git a/keyboards/rama/m6_a/readme.md b/keyboards/wilba_tech/rama_works_m6_a/readme.md
similarity index 65%
rename from keyboards/rama/m6_a/readme.md
rename to keyboards/wilba_tech/rama_works_m6_a/readme.md
index ceaf6a88de2..974224b4555 100644
--- a/keyboards/rama/m6_a/readme.md
+++ b/keyboards/wilba_tech/rama_works_m6_a/readme.md
@@ -1,15 +1,15 @@
-# RAMA M6-A
+# RAMA WORKS M6-A
-
+
A 6-key companion keyboard. [More info at RAMA WORKS](https://rama.works/m6a)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
-Hardware Supported: RAMA M6-A PCB
+Hardware Supported: RAMA WORKS M6-A PCB
Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/)
Make example for this keyboard (after setting up your build environment):
- make rama/m6_a:default
+ make wilba_tech/rama_works_m6_a: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/rama/m6_a/rules.mk b/keyboards/wilba_tech/rama_works_m6_a/rules.mk
similarity index 98%
rename from keyboards/rama/m6_a/rules.mk
rename to keyboards/wilba_tech/rama_works_m6_a/rules.mk
index 399e9e80d61..4270e7090c0 100644
--- a/keyboards/rama/m6_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m6_a/rules.mk
@@ -1,5 +1,5 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c
+SRC = keyboards/wilba_tech/wt_main.c
# MCU name
MCU = atmega32u4
diff --git a/keyboards/rama/m6_b/config.h b/keyboards/wilba_tech/rama_works_m6_b/config.h
similarity index 98%
rename from keyboards/rama/m6_b/config.h
rename to keyboards/wilba_tech/rama_works_m6_b/config.h
index 015bc6df8a4..10377eae70b 100644
--- a/keyboards/rama/m6_b/config.h
+++ b/keyboards/wilba_tech/rama_works_m6_b/config.h
@@ -21,9 +21,9 @@
#define VENDOR_ID 0x5241 // "RW"
#define PRODUCT_ID 0x006B // 6-B
#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA.WORKS
-#define PRODUCT RAMA M6-B
-#define DESCRIPTION RAMA M6-B Macropad
+#define MANUFACTURER RAMA WORKS
+#define PRODUCT RAMA WORKS M6-B
+#define DESCRIPTION RAMA WORKS M6-B
/* key matrix size */
#define MATRIX_ROWS 1
diff --git a/keyboards/rama/m6_a/info.json b/keyboards/wilba_tech/rama_works_m6_b/info.json
similarity index 74%
rename from keyboards/rama/m6_a/info.json
rename to keyboards/wilba_tech/rama_works_m6_b/info.json
index 28dd733dac2..66c36126789 100644
--- a/keyboards/rama/m6_a/info.json
+++ b/keyboards/wilba_tech/rama_works_m6_b/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "m6-a",
- "url": "",
- "maintainer": "qmk",
+ "keyboard_name": "RAMA WORKS M6-B",
+ "url": "http://rama.works",
+ "maintainer": "Wilba",
"width": 3,
"height": 2,
"layouts": {
diff --git a/keyboards/rama/m6_b/keymaps/default/keymap.c b/keyboards/wilba_tech/rama_works_m6_b/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/rama/m6_b/keymaps/default/keymap.c
rename to keyboards/wilba_tech/rama_works_m6_b/keymaps/default/keymap.c
diff --git a/keyboards/rama/m6_b/m6_b.c b/keyboards/wilba_tech/rama_works_m6_b/rama_works_m6_b.c
similarity index 100%
rename from keyboards/rama/m6_b/m6_b.c
rename to keyboards/wilba_tech/rama_works_m6_b/rama_works_m6_b.c
diff --git a/keyboards/rama/m6_b/m6_b.h b/keyboards/wilba_tech/rama_works_m6_b/rama_works_m6_b.h
similarity index 100%
rename from keyboards/rama/m6_b/m6_b.h
rename to keyboards/wilba_tech/rama_works_m6_b/rama_works_m6_b.h
diff --git a/keyboards/rama/m6_b/readme.md b/keyboards/wilba_tech/rama_works_m6_b/readme.md
similarity index 65%
rename from keyboards/rama/m6_b/readme.md
rename to keyboards/wilba_tech/rama_works_m6_b/readme.md
index d6bdd0c4c20..747aa74dd57 100644
--- a/keyboards/rama/m6_b/readme.md
+++ b/keyboards/wilba_tech/rama_works_m6_b/readme.md
@@ -1,15 +1,15 @@
-# RAMA M6-B
+# RAMA WORKS M6-B
-
+
A 6-key companion keyboard. [More info at RAMA WORKS](https://rama.works/m6a)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
-Hardware Supported: RAMA M6-B PCB
+Hardware Supported: RAMA WORKS M6-B PCB
Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/)
Make example for this keyboard (after setting up your build environment):
- make rama/m6_b:default
+ make wilba_tech/rama_works_m6_b: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/rama/m6_b/rules.mk b/keyboards/wilba_tech/rama_works_m6_b/rules.mk
similarity index 97%
rename from keyboards/rama/m6_b/rules.mk
rename to keyboards/wilba_tech/rama_works_m6_b/rules.mk
index b7a76b8dddf..6b7b3a63d85 100644
--- a/keyboards/rama/m6_b/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m6_b/rules.mk
@@ -1,6 +1,6 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
drivers/issi/is31fl3218.c \
drivers/avr/i2c_master.c
diff --git a/keyboards/wilba_tech/rama_works_u80_a/config.h b/keyboards/wilba_tech/rama_works_u80_a/config.h
new file mode 100644
index 00000000000..d4b14e7c096
--- /dev/null
+++ b/keyboards/wilba_tech/rama_works_u80_a/config.h
@@ -0,0 +1,258 @@
+/* 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 0x5241 // "RW"
+#define PRODUCT_ID 0x080A // 80-A
+#define DEVICE_VER 0x0001
+#define MANUFACTURER RAMA WORKS
+#define PRODUCT RAMA WORKS U80-A
+#define DESCRIPTION RAMA WORKS U80-A
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+/*
+ * 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, D4, B7, B0 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+// #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
+
+//#define WT_MONO_BACKLIGHT
+
+// IS31FL3731 driver
+#define DRIVER_COUNT 3
+#define DRIVER_LED_TOTAL 108
+
+#define RGB_BACKLIGHT_ENABLED 1
+
+// This conditionally compiles the backlight code for U80-A specifics
+#define RGB_BACKLIGHT_U80_A
+
+// enable/disable LEDs based on layout
+// they aren't really used if RGB_BACKLIGHT_M60_A defined
+#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 1
+#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
+#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 1
+#define RGB_BACKLIGHT_USE_7U_SPACEBAR 1
+#define RGB_BACKLIGHT_USE_ISO_ENTER 0
+#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 1
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+#define RGB_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect (RGB test)
+#define RGB_BACKLIGHT_EFFECT 255
+
+// the default effect speed (0-3)
+#define RGB_BACKLIGHT_EFFECT_SPEED 0
+
+// the default color1 and color2
+#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
+#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }
+
+// These define which keys in the matrix are alphas/mods
+// Used for backlight effects so colors are different for
+// alphas vs. mods
+// Each value is for a row, bit 0 is column 0
+// Alpha=0 Mod=1
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b1110000000000000
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b1100000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b1111000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b1111000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b1111100000000111
+
+#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_1_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_2_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+#define RGB_BACKLIGHT_LAYER_3_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
+
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+// EEPROM usage
+
+// TODO: refactor with new user EEPROM code (coming soon)
+#define EEPROM_MAGIC 0x451F
+#define EEPROM_MAGIC_ADDR 32
+// 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 0x07
+#define EEPROM_VERSION_ADDR 34
+
+// Backlight config starts after EEPROM version
+#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
+// Dynamic keymap starts after backlight config (35+31)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 66
+// Dynamic macro starts after dynamic keymaps (66+(4*6*17*2)) = (66+816)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 882
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 142
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16
diff --git a/keyboards/rama/u80_a/info.json b/keyboards/wilba_tech/rama_works_u80_a/info.json
similarity index 97%
rename from keyboards/rama/u80_a/info.json
rename to keyboards/wilba_tech/rama_works_u80_a/info.json
index cb61c89b881..7febde5c5b7 100644
--- a/keyboards/rama/u80_a/info.json
+++ b/keyboards/wilba_tech/rama_works_u80_a/info.json
@@ -1,6 +1,6 @@
{
- "keyboard_name": "RAMA U80-A",
- "url": "https://rama.works/#/tkl-a/",
+ "keyboard_name": "RAMA WORKS U80-A",
+ "url": "http://rama.works",
"maintainer": "Wilba",
"bootloader": "atmel-dfu",
"width": 18.25,
diff --git a/keyboards/wilba_tech/rama_works_u80_a/keymaps/default/keymap.c b/keyboards/wilba_tech/rama_works_u80_a/keymaps/default/keymap.c
new file mode 100644
index 00000000000..548843427ca
--- /dev/null
+++ b/keyboards/wilba_tech/rama_works_u80_a/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [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_SLCK, KC_PAUS,
+ 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_INS, KC_HOME, 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_DEL, KC_END, KC_PGDN,
+ 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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [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, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, ES_DEC, ES_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
diff --git a/keyboards/rama/u80_a/u80_a.c b/keyboards/wilba_tech/rama_works_u80_a/rama_works_u80_a.c
similarity index 100%
rename from keyboards/rama/u80_a/u80_a.c
rename to keyboards/wilba_tech/rama_works_u80_a/rama_works_u80_a.c
diff --git a/keyboards/rama/u80_a/u80_a.h b/keyboards/wilba_tech/rama_works_u80_a/rama_works_u80_a.h
similarity index 76%
rename from keyboards/rama/u80_a/u80_a.h
rename to keyboards/wilba_tech/rama_works_u80_a/rama_works_u80_a.h
index 26403ef3475..c057db4ccd1 100644
--- a/keyboards/rama/u80_a/u80_a.h
+++ b/keyboards/wilba_tech/rama_works_u80_a/rama_works_u80_a.h
@@ -17,6 +17,8 @@
#pragma once
#include "quantum.h"
+#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
+#include "keyboards/wilba_tech/via_keycodes.h"
#define ____ KC_NO
@@ -27,17 +29,17 @@
#define LAYOUT_all( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K313, K114, K115, K116, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
- K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K415, \
- K500, K501, K502, K506, K510, K511, K512, K513, K514, K515, K516 \
+ K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, \
+ K500, K501, K502, K507, K511, K512, K513, K514, K515, K516 \
) { \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, ____, K014, K015, K016 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, ____, ____, ____ }, \
- { K400, ____, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, ____, K415, ____ }, \
- { K500, K501, K502, ____, ____, ____, K506, ____, ____, ____, K510, K511, K512, K513, K514, K515, K516 } \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____, ____, ____, ____ }, \
+ { K400, ____, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, ____, ____, K415, ____ }, \
+ { K500, K501, K502, ____, ____, ____, ____, K507, ____, ____, ____, K511, K512, K513, K514, K515, K516 } \
}
diff --git a/keyboards/rama/u80_a/readme.md b/keyboards/wilba_tech/rama_works_u80_a/readme.md
similarity index 75%
rename from keyboards/rama/u80_a/readme.md
rename to keyboards/wilba_tech/rama_works_u80_a/readme.md
index c98d00cb6b4..ff87889e458 100644
--- a/keyboards/rama/u80_a/readme.md
+++ b/keyboards/wilba_tech/rama_works_u80_a/readme.md
@@ -1,15 +1,15 @@
-# RAMA U80-A
+# RAMA WORKS U80-A
-
+
A TKL keyboard. [More info at RAMA WORKS](https://rama.works/#/tkl-a/)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
-Hardware Supported: RAMA U80-A PCB
+Hardware Supported: RAMA WORKS U80-A PCB
Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/)
Make example for this keyboard (after setting up your build environment):
- make rama/u80_a:default
+ make wilba_tech/rama_works_u80_a: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/rama_works_u80_a/rules.mk b/keyboards/wilba_tech/rama_works_u80_a/rules.mk
new file mode 100644
index 00000000000..6079ad8932d
--- /dev/null
+++ b/keyboards/wilba_tech/rama_works_u80_a/rules.mk
@@ -0,0 +1,73 @@
+# project specific files
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
+ quantum/color.c \
+ drivers/issi/is31fl3731.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 = 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
+CIE1931_CURVE = yes
diff --git a/keyboards/zeal60/zeal60_api.h b/keyboards/wilba_tech/via_api.h
similarity index 96%
rename from keyboards/zeal60/zeal60_api.h
rename to keyboards/wilba_tech/via_api.h
index 048344d712a..f04bb1b46a9 100644
--- a/keyboards/zeal60/zeal60_api.h
+++ b/keyboards/wilba_tech/via_api.h
@@ -17,7 +17,7 @@
#define PROTOCOL_VERSION 0x0008
-enum zeal60_command_id
+enum via_command_id
{
id_get_protocol_version = 0x01, // always 0x01
id_get_keyboard_value,
@@ -41,7 +41,7 @@ enum zeal60_command_id
id_unhandled = 0xFF,
};
-enum zeal60_keyboard_value_id
+enum via_keyboard_value_id
{
id_uptime = 0x01,
id_firmware_version
diff --git a/keyboards/zeal60/zeal60_keycodes.h b/keyboards/wilba_tech/via_keycodes.h
similarity index 94%
rename from keyboards/zeal60/zeal60_keycodes.h
rename to keyboards/wilba_tech/via_keycodes.h
index 7114a5efcdd..bed48d64b05 100644
--- a/keyboards/zeal60/zeal60_keycodes.h
+++ b/keyboards/wilba_tech/via_keycodes.h
@@ -20,7 +20,7 @@
// Need to keep checking 0x5F10 is still in the safe range.
// TODO: merge this into quantum_keycodes
// Backlight keycodes are in range 0x5F00-0x5F0F
-enum zeal60_keycodes {
+enum via_keycodes {
FN_MO13 = 0x5F10,
FN_MO23,
MACRO00,
@@ -60,10 +60,10 @@ enum user_keycodes {
USER15,
};
-// Zeal60 specific "action functions"
+// VIA specific "action functions", introduced with Zeal60
// These are only valid IDs in action_function()
// Use FN_TT13, FN_TT23, etc. in keymaps
-enum zeal60_action_functions {
+enum via_action_functions {
TRIPLE_TAP_1_3 = 0x31,
TRIPLE_TAP_2_3 = 0x32
};
diff --git a/keyboards/rama/u80_a/config.h b/keyboards/wilba_tech/wt60_d/config.h
similarity index 90%
rename from keyboards/rama/u80_a/config.h
rename to keyboards/wilba_tech/wt60_d/config.h
index 44d9e21333e..0ba243159e9 100644
--- a/keyboards/rama/u80_a/config.h
+++ b/keyboards/wilba_tech/wt60_d/config.h
@@ -19,16 +19,16 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5241 // "RW"
-#define PRODUCT_ID 0x080A // 80-A
+#define VENDOR_ID 0x6582 // wilba.tech
+#define PRODUCT_ID 0x060D // 60-D
#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA.WORKS
-#define PRODUCT RAMA U80-A
-#define DESCRIPTION RAMA U80-A Keyboard
+#define MANUFACTURER wilba.tech
+#define PRODUCT wilba.tech WT60-D
+#define DESCRIPTION wilba.tech WT60-D
/* key matrix size */
-#define MATRIX_ROWS 6
-#define MATRIX_COLS 17
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
/*
* Keyboard Matrix Assignments
@@ -40,13 +40,13 @@
* 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, D4, B7, B0 }
+#define MATRIX_ROW_PINS { E6, F0, F4, F6, F7 }
+#define MATRIX_COL_PINS { F5, D5, D3, D2, B7, B0, B3, C7, C6, B6, B5, B4, D7, D6 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
-#define DIODE_DIRECTION ROW2COL
-
+#define DIODE_DIRECTION COL2ROW
+
// #define BACKLIGHT_PIN B7
// #define BACKLIGHT_BREATHING
// #define BACKLIGHT_LEVELS 3
@@ -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
-
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
// EEPROM usage
@@ -191,12 +189,12 @@
// 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 0x07
+#define EEPROM_VERSION 0x08
#define EEPROM_VERSION_ADDR 34
// Dynamic keymap starts after EEPROM version
#define DYNAMIC_KEYMAP_EEPROM_ADDR 35
-// Dynamic macro starts after dynamic keymaps (35+(4*6*17*2)) = (35+816)
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 851
-#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 173
+// Dynamic macro starts after dynamic keymaps (35+(4*5*14*2)) = (35+560)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 595
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 429
#define DYNAMIC_KEYMAP_MACRO_COUNT 16
diff --git a/keyboards/wilba_tech/wt60_d/info.json b/keyboards/wilba_tech/wt60_d/info.json
new file mode 100644
index 00000000000..adb19a15b71
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_d/info.json
@@ -0,0 +1,13 @@
+{
+ "keyboard_name": "wilba.tech WT60-D",
+ "url": "https://wilba.tech",
+ "maintainer": "Wilba",
+ "bootloader": "atmel-dfu",
+ "width": 15,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt60_d/keymaps/default/keymap.c b/keyboards/wilba_tech/wt60_d/keymaps/default/keymap.c
new file mode 100644
index 00000000000..94977c160ad
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_d/keymaps/default/keymap.c
@@ -0,0 +1,38 @@
+// Default layout for WT60-D
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// Default layer
+[0] = LAYOUT_all(
+ 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_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_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_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, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+
+// Fn1 Layer
+[1] = LAYOUT_all(
+ 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_TRNS,
+ KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, 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),
+
+// 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),
+
+};
diff --git a/keyboards/wilba_tech/wt60_d/keymaps/via/keymap.c b/keyboards/wilba_tech/wt60_d/keymaps/via/keymap.c
new file mode 100644
index 00000000000..94977c160ad
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_d/keymaps/via/keymap.c
@@ -0,0 +1,38 @@
+// Default layout for WT60-D
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// Default layer
+[0] = LAYOUT_all(
+ 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_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_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_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, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+
+// Fn1 Layer
+[1] = LAYOUT_all(
+ 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_TRNS,
+ KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, 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),
+
+// 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),
+
+};
diff --git a/keyboards/rama/u80_a/rules.mk b/keyboards/wilba_tech/wt60_d/keymaps/via/rules.mk
similarity index 94%
rename from keyboards/rama/u80_a/rules.mk
rename to keyboards/wilba_tech/wt60_d/keymaps/via/rules.mk
index 54479529bee..f072c67198c 100644
--- a/keyboards/rama/u80_a/rules.mk
+++ b/keyboards/wilba_tech/wt60_d/keymaps/via/rules.mk
@@ -1,8 +1,5 @@
# 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
+SRC = keyboards/wilba_tech/wt_main.c
# MCU name
MCU = atmega32u4
@@ -68,4 +65,4 @@ AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
RAW_ENABLE = yes
-DYNAMIC_KEYMAP_ENABLE = yes
+DYNAMIC_KEYMAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt60_d/readme.md b/keyboards/wilba_tech/wt60_d/readme.md
new file mode 100644
index 00000000000..354adff3906
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_d/readme.md
@@ -0,0 +1,17 @@
+# wilba.tech WT60-D
+
+
+
+WT60-D is a keyboard PCB supporting 60% layout. [More info at wilba.tech](https://wilba.tech/)
+
+First produced as WT60-D MEKANISK for Mekanisk.
+
+Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
+Hardware Supported: wilba.tech WT60-D
+Hardware Availability: Custom keyboard group buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wilba_tech/wt60_d: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/wt60_d/rules.mk b/keyboards/wilba_tech/wt60_d/rules.mk
new file mode 100644
index 00000000000..f072c67198c
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_d/rules.mk
@@ -0,0 +1,68 @@
+# 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/wt60_d.c b/keyboards/wilba_tech/wt60_d/wt60_d.c
new file mode 100644
index 00000000000..ccff6d62c94
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_d/wt60_d.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/wt60_d/wt60_d.h b/keyboards/wilba_tech/wt60_d/wt60_d.h
new file mode 100644
index 00000000000..402fc57a11a
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_d/wt60_d.h
@@ -0,0 +1,35 @@
+/* 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
+
+#define LAYOUT_all( \
+ K000, K003, K002, K001, K004, K005, K006, K007, K008, K009, K012, K011, K010, K013, K213, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400, K401, K402, K403, K410, K411, K412, K413 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \
+ { K400, K401, K402, K403, ____, ____, ____, ____, ____, ____, K410, K411, K412, K413 } \
+}
diff --git a/keyboards/wilba_tech/wt75_a/info.json b/keyboards/wilba_tech/wt75_a/info.json
index d9c54a63a6b..b52d96852ac 100644
--- a/keyboards/wilba_tech/wt75_a/info.json
+++ b/keyboards/wilba_tech/wt75_a/info.json
@@ -6,7 +6,7 @@
"width": 16,
"height": 6,
"layouts": {
- "LAYOUT": {
+ "LAYOUT_all": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.5, "y":0}, {"label":"F2", "x":2.5, "y":0}, {"label":"F3", "x":3.5, "y":0}, {"label":"F4", "x":4.5, "y":0}, {"label":"F5", "x":5.75, "y":0}, {"label":"F6", "x":6.75, "y":0}, {"label":"F7", "x":7.75, "y":0}, {"label":"F8", "x":8.75, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"Del", "x":15, "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":"Bksp", "x":13, "y":1.25}, {"label":"Bksp", "x":14, "y":1.25}, {"label":"Home", "x":15, "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":"PgUp", "x":15, "y":2.25}, {"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":"PgDn", "x":15, "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":1.75}, {"label":"\u2191", "x":14, "y":4.25}, {"label":"End", "x":15, "y":4.25}, {"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}, {"label":"6.25U", "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":"\u2190", "x":13, "y":5.25}, {"label":"\u2193", "x":14, "y":5.25}, {"label":"\u2192", "x":15, "y":5.25}]
}
}
diff --git a/keyboards/wilba_tech/wt75_b/info.json b/keyboards/wilba_tech/wt75_b/info.json
index 92947cf87f6..e35518aa029 100644
--- a/keyboards/wilba_tech/wt75_b/info.json
+++ b/keyboards/wilba_tech/wt75_b/info.json
@@ -6,7 +6,7 @@
"width": 16,
"height": 6,
"layouts": {
- "LAYOUT": {
+ "LAYOUT_all": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.5}, {"x":1.5, "y":2}, {"x":2.5, "y":2}, {"x":3.5, "y":2}, {"x":4.5, "y":2}, {"x":5.5, "y":2}, {"x":6.5, "y":2}, {"x":7.5, "y":2}, {"x":8.5, "y":2}, {"x":9.5, "y":2}, {"x":10.5, "y":2}, {"x":11.5, "y":2}, {"x":12.5, "y":2}, {"x":13.5, "y":2, "w":1.5}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.75}, {"x":1.75, "y":3}, {"x":2.75, "y":3}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}, {"x":12.75, "y":3, "w":2.25}, {"x":15, "y":3}, {"x":0, "y":4, "w":2.25}, {"x":2.25, "y":4}, {"x":3.25, "y":4}, {"x":4.25, "y":4}, {"x":5.25, "y":4}, {"x":6.25, "y":4}, {"x":7.25, "y":4}, {"x":8.25, "y":4}, {"x":9.25, "y":4}, {"x":10.25, "y":4}, {"x":11.25, "y":4}, {"x":12.25, "y":4, "w":1.75}, {"x":14, "y":4}, {"x":15, "y":4}, {"x":0, "y":5, "w":1.25}, {"x":1.25, "y":5, "w":1.25}, {"x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"x":10, "y":5, "w":1.25}, {"x":11.25, "y":5, "w":1.25}, {"x":13, "y":5}, {"x":14, "y":5}, {"x":15, "y":5}]
}
}
diff --git a/keyboards/wilba_tech/wt_main.c b/keyboards/wilba_tech/wt_main.c
index f8056839a7b..e6ea4a21bd1 100644
--- a/keyboards/wilba_tech/wt_main.c
+++ b/keyboards/wilba_tech/wt_main.c
@@ -15,11 +15,16 @@
*/
#include "quantum.h"
+
+// Check that no backlight functions are called
+#if RGB_BACKLIGHT_ENABLED
+#include "keyboards/wilba_tech/wt_rgb_backlight.h"
+#endif // RGB_BACKLIGHT_ENABLED
#ifdef WT_MONO_BACKLIGHT
#include "keyboards/wilba_tech/wt_mono_backlight.h"
-#endif
-#include "keyboards/zeal60/zeal60_api.h" // Temporary hack
-#include "keyboards/zeal60/zeal60_keycodes.h" // Temporary hack
+#endif // WT_MONO_BACKLIGHT
+#include "keyboards/wilba_tech/via_api.h" // Temporary hack
+#include "keyboards/wilba_tech/via_keycodes.h" // Temporary hack
#include "raw_hid.h"
#include "dynamic_keymap.h"
@@ -145,6 +150,23 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
break;
}
#endif // DYNAMIC_KEYMAP_ENABLE
+#if RGB_BACKLIGHT_ENABLED
+ case id_backlight_config_set_value:
+ {
+ backlight_config_set_value(command_data);
+ break;
+ }
+ case id_backlight_config_get_value:
+ {
+ backlight_config_get_value(command_data);
+ break;
+ }
+ case id_backlight_config_save:
+ {
+ backlight_config_save();
+ break;
+ }
+#endif // RGB_BACKLIGHT_ENABLED
case id_eeprom_reset:
{
eeprom_reset();
@@ -180,29 +202,40 @@ void main_init(void)
// If the EEPROM has the magic, the data is good.
// OK to load from EEPROM.
if (eeprom_is_valid()) {
- //backlight_config_load();
+#if RGB_BACKLIGHT_ENABLED
+ backlight_config_load();
+#endif // RGB_BACKLIGHT_ENABLED
} else {
+#if RGB_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.
- //backlight_config_save();
+ backlight_config_save();
+#endif // RGB_BACKLIGHT_ENABLED
#ifdef DYNAMIC_KEYMAP_ENABLE
// This resets the keymaps in EEPROM to what is in flash.
dynamic_keymap_reset();
// This resets the macros in EEPROM to nothing.
dynamic_keymap_macro_reset();
-#endif
+#endif // DYNAMIC_KEYMAP_ENABLE
// Save the magic number last, in case saving was interrupted
eeprom_set_valid(true);
}
+
+#if RGB_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
+#endif // WT_MONO_BACKLIGHT
}
void bootmagic_lite(void)
@@ -234,6 +267,10 @@ void matrix_init_kb(void)
void matrix_scan_kb(void)
{
+#if RGB_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();
@@ -243,6 +280,10 @@ void matrix_scan_kb(void)
bool process_record_kb(uint16_t keycode, keyrecord_t *record)
{
+#if RGB_BACKLIGHT_ENABLED
+ process_record_backlight(keycode, record);
+#endif // RGB_BACKLIGHT_ENABLED
+
switch(keycode) {
case FN_MO13:
if (record->event.pressed) {
@@ -280,3 +321,73 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record)
return process_record_user(keycode, record);
}
+
+// This overrides the one in quantum/keymap_common.c
+uint16_t keymap_function_id_to_action( uint16_t function_id )
+{
+ // Zeal60 specific "action functions" are 0xF00 to 0xFFF
+ // i.e. F(0xF00) to F(0xFFF) are mapped to
+ // enum zeal60_action_functions by masking last 8 bits.
+ if ( function_id >= 0x0F00 && function_id <= 0x0FFF )
+ {
+ uint8_t id = function_id & 0xFF;
+ switch ( id ) {
+ case TRIPLE_TAP_1_3:
+ case TRIPLE_TAP_2_3:
+ {
+ return ACTION_FUNCTION_TAP(id);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+ return pgm_read_word(&fn_actions[function_id]);
+}
+
+
+// Zeal60 specific "action functions"
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ switch (id)
+ {
+ case TRIPLE_TAP_1_3:
+ case TRIPLE_TAP_2_3:
+ if (record->event.pressed) {
+ layer_on( id == TRIPLE_TAP_1_3 ? 1 : 2 );
+ if (record->tap.count && !record->tap.interrupted) {
+ if (record->tap.count >= 3) {
+ layer_invert(3);
+ }
+ } else {
+ record->tap.count = 0;
+ }
+ } else {
+ layer_off( id == TRIPLE_TAP_1_3 ? 1 : 2 );
+ }
+ break;
+ }
+}
+
+void led_set_kb(uint8_t usb_led)
+{
+#if RGB_BACKLIGHT_ENABLED
+ backlight_set_indicator_state(usb_led);
+#endif // RGB_BACKLIGHT_ENABLED
+}
+
+void suspend_power_down_kb(void)
+{
+#if RGB_BACKLIGHT_ENABLED
+ backlight_set_suspend_state(true);
+#endif // RGB_BACKLIGHT_ENABLED
+}
+
+void suspend_wakeup_init_kb(void)
+{
+#if RGB_BACKLIGHT_ENABLED
+ backlight_set_suspend_state(false);
+#endif // RGB_BACKLIGHT_ENABLED
+}
+
diff --git a/keyboards/zeal60/rgb_backlight.c b/keyboards/wilba_tech/wt_rgb_backlight.c
similarity index 87%
rename from keyboards/zeal60/rgb_backlight.c
rename to keyboards/wilba_tech/wt_rgb_backlight.c
index a3f7151bf50..9116e98ba79 100644
--- a/keyboards/zeal60/rgb_backlight.c
+++ b/keyboards/wilba_tech/wt_rgb_backlight.c
@@ -13,11 +13,10 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#if RGB_BACKLIGHT_ENABLED
-#if defined(RGB_BACKLIGHT_ZEAL60) || defined(RGB_BACKLIGHT_ZEAL65) || defined(RGB_BACKLIGHT_M60_A) || defined(RGB_BACKLIGHT_M6_B) || defined(RGB_BACKLIGHT_KOYU) || defined(RGB_BACKLIGHT_HS60) || defined(RGB_BACKLIGHT_NK65)
+#if defined(RGB_BACKLIGHT_ZEAL60) || defined(RGB_BACKLIGHT_ZEAL65) || defined(RGB_BACKLIGHT_M60_A) || defined(RGB_BACKLIGHT_M6_B) || defined(RGB_BACKLIGHT_KOYU) || defined(RGB_BACKLIGHT_HS60) || defined(RGB_BACKLIGHT_NK65) || defined(RGB_BACKLIGHT_U80_A)
#else
-#error None of the following was defined: RGB_BACKLIGHT_ZEAL60, RGB_BACKLIGHT_ZEAL65, RGB_BACKLIGHT_M60_A, RGB_BACKLIGHT_M6_B, RGB_BACKLIGHT_KOYU, RGB_BACKLIGHT_HS60, RGB_BACKLIGHT_NK65
+#error None of the following was defined: RGB_BACKLIGHT_ZEAL60, RGB_BACKLIGHT_ZEAL65, RGB_BACKLIGHT_M60_A, RGB_BACKLIGHT_M6_B, RGB_BACKLIGHT_KOYU, RGB_BACKLIGHT_HS60, RGB_BACKLIGHT_NK65, RGB_BACKLIGHT_U80_A
#endif
#ifndef MAX
@@ -29,9 +28,9 @@
#endif
#include "quantum.h"
-#include "rgb_backlight.h"
-#include "rgb_backlight_api.h"
-#include "rgb_backlight_keycodes.h"
+#include "wt_rgb_backlight.h"
+#include "wt_rgb_backlight_api.h"
+#include "wt_rgb_backlight_keycodes.h"
#if !defined(RGB_BACKLIGHT_HS60) && !defined(RGB_BACKLIGHT_NK65)
#include
@@ -58,8 +57,12 @@
#define BACKLIGHT_LED_COUNT 69
#else
#include "drivers/issi/is31fl3731.h"
+#if defined(RGB_BACKLIGHT_U80_A)
+#define BACKLIGHT_LED_COUNT 108
+#else
#define BACKLIGHT_LED_COUNT 72
#endif
+#endif
#define BACKLIGHT_EFFECT_MAX 10
@@ -330,6 +333,134 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{1, K_16, J_16, L_16}, //LB64
};
+#elif defined(RGB_BACKLIGHT_U80_A)
+
+// U80-A prototype uses 3 ISSI drivers
+#define ISSI_ADDR_1 0x74 // 11101[00] <- GND
+#define ISSI_ADDR_2 0x76 // 11101[10] <- SDA
+#define ISSI_ADDR_3 0x75 // 11101[01] <- SCL
+
+const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, C2_1, C3_1, C4_1}, // LA0
+ {0, C1_1, C3_2, C4_2}, // LA1
+ {0, C1_2, C2_2, C4_3}, // LA2
+ {0, C1_3, C2_3, C3_3}, // LA3
+ {0, C1_4, C2_4, C3_4}, // LA4
+ {0, C1_5, C2_5, C3_5}, // LA5
+ {0, C1_6, C2_6, C3_6}, // LA6
+ {0, C1_7, C2_7, C3_7}, // LA7
+ {0, C1_8, C2_8, C3_8}, // LA8
+ {0, C9_1, C8_1, C7_1}, // LA9
+ {0, C9_2, C8_2, C7_2}, // LA10
+ {0, C9_3, C8_3, C7_3}, // LA11
+ {0, C9_4, C8_4, C7_4}, // LA12
+ {0, C9_5, C8_5, C7_5}, // LA13
+ {0, C9_6, C8_6, C7_6}, // LA14
+ {0, C9_7, C8_7, C6_6}, // LA15
+ {0, C9_8, C7_7, C6_7}, // LA16
+ {0, C8_8, C7_8, C6_8}, // LA17
+
+ {0, C2_9, C3_9, C4_9}, // LB0
+ {0, C1_9, C3_10, C4_10}, // LB1
+ {0, C1_10, C2_10, C4_11}, // LB2
+ {0, C1_11, C2_11, C3_11}, // LB3
+ {0, C1_12, C2_12, C3_12}, // LB4
+ {0, C1_13, C2_13, C3_13}, // LB5
+ {0, C1_14, C2_14, C3_14}, // LB6
+ {0, C1_15, C2_15, C3_15}, // LB7
+ {0, C1_16, C2_16, C3_16}, // LB8
+ {0, C9_9, C8_9, C7_9}, // LB9
+ {0, C9_10, C8_10, C7_10}, // LB10
+ {0, C9_11, C8_11, C7_11}, // LB11
+ {0, C9_12, C8_12, C7_12}, // LB12
+ {0, C9_13, C8_13, C7_13}, // LB13
+ {0, C9_14, C8_14, C7_14}, // LB14
+ {0, C9_15, C8_15, C6_14}, // LB15
+ {0, C9_16, C7_15, C6_15}, // LB16
+ {0, C8_16, C7_16, C6_16}, // LB17
+
+ {1, C2_1, C3_1, C4_1}, // LC0
+ {1, C1_1, C3_2, C4_2}, // LC1
+ {1, C1_2, C2_2, C4_3}, // LC2
+ {1, C1_3, C2_3, C3_3}, // LC3
+ {1, C1_4, C2_4, C3_4}, // LC4
+ {1, C1_5, C2_5, C3_5}, // LC5
+ {1, C1_6, C2_6, C3_6}, // LC6
+ {1, C1_7, C2_7, C3_7}, // LC7
+ {1, C1_8, C2_8, C3_8}, // LC8
+ {1, C9_1, C8_1, C7_1}, // LC9
+ {1, C9_2, C8_2, C7_2}, // LC10
+ {1, C9_3, C8_3, C7_3}, // LC11
+ {1, C9_4, C8_4, C7_4}, // LC12
+ {1, C9_5, C8_5, C7_5}, // LC13
+ {1, C9_6, C8_6, C7_6}, // LC14
+ {1, C9_7, C8_7, C6_6}, // LC15
+ {1, C9_8, C7_7, C6_7}, // LC16
+ {1, C8_8, C7_8, C6_8}, // LC17
+
+ {1, C2_9, C3_9, C4_9}, // LD0
+ {1, C1_9, C3_10, C4_10}, // LD1
+ {1, C1_10, C2_10, C4_11}, // LD2
+ {1, C1_11, C2_11, C3_11}, // LD3
+ {1, C1_12, C2_12, C3_12}, // LD4
+ {1, C1_13, C2_13, C3_13}, // LD5
+ {1, C1_14, C2_14, C3_14}, // LD6
+ {1, C1_15, C2_15, C3_15}, // LD7
+ {1, C1_16, C2_16, C3_16}, // LD8
+ {1, C9_9, C8_9, C7_9}, // LD9
+ {1, C9_10, C8_10, C7_10}, // LD10
+ {1, C9_11, C8_11, C7_11}, // LD11
+ {1, C9_12, C8_12, C7_12}, // LD12
+ {1, C9_13, C8_13, C7_13}, // LD13
+ {1, C9_14, C8_14, C7_14}, // LD14
+ {1, C9_15, C8_15, C6_14}, // LD15
+ {1, C9_16, C7_15, C6_15}, // LD16
+ {1, C8_16, C7_16, C6_16}, // LD17
+
+ {2, C2_1, C3_1, C4_1}, // LE0
+ {2, C1_1, C3_2, C4_2}, // LE1
+ {2, C1_2, C2_2, C4_3}, // LE2
+ {2, C1_3, C2_3, C3_3}, // LE3
+ {2, C1_4, C2_4, C3_4}, // LE4
+ {2, C1_5, C2_5, C3_5}, // LE5
+ {2, C1_6, C2_6, C3_6}, // LE6
+ {2, C1_7, C2_7, C3_7}, // LE7
+ {2, C1_8, C2_8, C3_8}, // LE8
+ {2, C9_1, C8_1, C7_1}, // LE9
+ {2, C9_2, C8_2, C7_2}, // LE10
+ {2, C9_3, C8_3, C7_3}, // LE11
+ {2, C9_4, C8_4, C7_4}, // LE12
+ {2, C9_5, C8_5, C7_5}, // LE13
+ {2, C9_6, C8_6, C7_6}, // LE14
+ {2, C9_7, C8_7, C6_6}, // LE15
+ {2, C9_8, C7_7, C6_7}, // LE16
+ {2, C8_8, C7_8, C6_8}, // LE17
+
+ {2, C2_9, C3_9, C4_9}, // LF0
+ {2, C1_9, C3_10, C4_10}, // LF1
+ {2, C1_10, C2_10, C4_11}, // LF2
+ {2, C1_11, C2_11, C3_11}, // LF3
+ {2, C1_12, C2_12, C3_12}, // LF4
+ {2, C1_13, C2_13, C3_13}, // LF5
+ {2, C1_14, C2_14, C3_14}, // LF6
+ {2, C1_15, C2_15, C3_15}, // LF7
+ {2, C1_16, C2_16, C3_16}, // LF8
+ {2, C9_9, C8_9, C7_9}, // LF9
+ {2, C9_10, C8_10, C7_10}, // LF10
+ {2, C9_11, C8_11, C7_11}, // LF11
+ {2, C9_12, C8_12, C7_12}, // LF12
+ {2, C9_13, C8_13, C7_13}, // LF13
+ {2, C9_14, C8_14, C7_14}, // LF14
+ {2, C9_15, C8_15, C6_14}, // LF15
+ {2, C9_16, C7_15, C6_15}, // LF16
+ {2, C8_16, C7_16, C6_16}, // LF17
+};
#elif !defined(RGB_BACKLIGHT_M6_B)
// This is a 7-bit address, that gets left-shifted and bit 0
// set to 0 for write, 1 for read (as per I2C protocol)
@@ -506,8 +637,8 @@ const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
};
const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
// LA0..LA17
- {58,129}, {70,129}, {80,139}, {89,157}, {96,181}, {101,208}, {105,238}, {109,255}, {128,247}, {58,255},
- {64,255}, {70,255}, {75,255}, {80,255}, {85,255}, {89,255}, {93,255}, {96,255},
+ {58,129}, {70,129}, {80,139}, {89,157}, {96,181}, {101,208}, {105,238}, {109,255}, {128,247},
+ {58,255}, {64,255}, {70,255}, {75,255}, {80,255}, {85,255}, {89,255}, {93,255}, {96,255},
// LB0..LB17
{53,255}, {48,255}, {43,255}, {39,255}, {34,255}, {32,255}, {255,255}, {255,255}, {255,255},
{48,139}, {39,157}, {32,181}, {27,208}, {23,238}, {19,255}, {255,255}, {255,255}, {255,255},
@@ -518,6 +649,48 @@ const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
{0,27}, {0,64}, {0,101}, {0,137}, {0,174}, {255,233}, {228,201}, {235,255}, {237,255},
{195,128}, {206,136}, {215,152}, {222,175}, {205,234}, {209,255}, {214,255}, {219,255}, {223,255}
};
+#elif defined(RGB_BACKLIGHT_U80_A)
+const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
+ // Thse are scaled by 14.5 per U
+ // LA0..LA17
+ {109,36}, {94,36}, {80,36}, {65,36}, {51,36}, {36,36}, {22,36}, {4,36}, {5,51},
+ {116,22}, {102,22}, {87,22}, {73,22}, {58,22}, {44,22}, {29,22}, {15,22}, {0,22},
+ // LB0..LB17
+ {131,22}, {145,22}, {160,22}, {174,22}, {196,22}, {0,0}, {0,0}, {0,0}, {0,0},
+ {123,36}, {138,36}, {152,36}, {167,36}, {181,36}, {199,36}, {0,0}, {0,0}, {0,0},
+ // LC0..LC17
+ {102,80}, {91,65}, {76,65}, {62,65}, {47,65}, {33,65}, {58,76}, {40,80}, {22,80},
+ {98,51}, {83,51}, {69,51}, {54,51}, {40,51}, {25,51}, {0,0}, {9,65}, {4,80},
+ // LD0..LD17
+ {112,51}, {127,51}, {141,51}, {156,51}, {170,51}, {194,51}, {163,65}, {190,65}, {0,0},
+ {105,65}, {120,65}, {134,65}, {149,65}, {0,0}, {145,76}, {163,80}, {181,80}, {199,80},
+ // LE0..LE17
+ {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0},
+ {73,0}, {94,0}, {109,0}, {123,0}, {138,0}, {58,0}, {44,0}, {29,0}, {0,0},
+ // LF0..LF17
+ {160,0}, {174,0}, {189,0}, {203,0}, {225,0}, {239,0}, {254,0}, {254,22}, {254,36},
+ {239,22}, {239,36}, {225,22}, {225,36}, {0,0}, {239,65}, {225,80}, {239,80}, {254,80}
+};
+const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
+ // LA0..LA17
+ {59,129}, {69,129}, {80,138}, {88,154}, {95,175}, {100,200}, {104,227}, {107,255}, {128,226},
+ {59,255}, {64,255}, {69,255}, {75,255}, {80,255}, {84,255}, {88,255}, {91,255}, {95,255},
+ // LB0..LB17
+ {53,255}, {48,255}, {44,255}, {40,255}, {35,255}, {255,255}, {255,255}, {255,255}, {255,255},
+ {48,138}, {40,154}, {33,175}, {28,200}, {24,227}, {21,255}, {255,255}, {255,255}, {255,255},
+ // LC0..LC17
+ {192,255}, {184,131}, {174,141}, {166,159}, {160,181}, {155,207}, {174,244}, {171,255}, {166,255},
+ {128,9}, {128,43}, {128,77}, {128,111}, {128,145}, {128,179}, {255,255}, {150,252}, {162,255},
+ // LD0..LD17
+ {0,26}, {0,60}, {0,94}, {0,128}, {0,162}, {0,218}, {227,193}, {234,245}, {255,255},
+ {195,128}, {205,135}, {214,149}, {221,169}, {255,255}, {210,244}, {213,255}, {218,255}, {222,255},
+ // LE0..LE17
+ {255,255}, {255,255}, {255,255}, {255,255}, {255,255}, {255,255}, {255,255}, {255,255}, {255,255},
+ {70,255}, {66,255}, {62,255}, {59,255}, {56,255}, {73,255}, {76,255}, {79,255}, {84,255},
+ // LF0..LF17
+ {52,255}, {49,255}, {47,255}, {44,255}, {41,255}, {38,255}, {37,255}, {25,255}, {14,255},
+ {27,255}, {15,255}, {29,255}, {17,255}, {255,255}, {241,255}, {227,255}, {229,255}, {231,255}
+};
#elif defined(RGB_BACKLIGHT_HS60) && defined(HS60_ANSI)
const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
// LA1..LA47
@@ -745,6 +918,17 @@ const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
{ 36+16, 36+15, 36+5, 36+4, 36+3, 36+2, 36+1, 54+9, 54+10, 54+11, 54+12, 54+6, 54+7, 54+8 },
{ 36+17, 36+8, 36+7, 36+6, 255, 255, 255, 36+0, 255, 54+13, 54+14, 54+15, 54+16, 54+17 }
};
+#elif defined(RGB_BACKLIGHT_U80_A)
+// Note: Left spacebar stab is at 5,3 (LC6)
+// Right spacebar stab is at 5,10 (LD14)
+const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+ { 72+17, 72+16, 72+15, 72+14, 72+9, 72+10, 72+11, 72+12, 72+13, 90+0, 90+1, 90+2, 90+3, 255, 90+4, 90+5, 90+6 },
+ { 0+17, 0+16, 0+15, 0+14, 0+13, 0+12, 0+11, 0+10, 0+9, 18+0, 18+1, 18+2, 18+3, 18+4, 90+11, 90+9, 90+7 },
+ { 0+7, 0+6, 0+5, 0+4, 0+3, 0+2, 0+1, 0+0, 18+9, 18+10, 18+11, 18+12, 18+13, 18+14, 90+12, 90+10, 90+8 },
+ { 0+8, 36+14, 36+13, 36+12, 36+11, 36+10, 36+9, 54+0, 54+1, 54+2, 54+3, 54+4, 54+5, 255, 255, 255, 255 },
+ { 36+16, 255, 36+5, 36+4, 36+3, 36+2, 36+1, 54+9, 54+10, 54+11, 54+12, 54+6, 54+7, 255, 255, 90+14, 255 },
+ { 36+17, 36+8, 36+7, 36+6, 255, 255, 255, 36+0, 255, 255, 54+14, 54+15, 54+16, 54+17, 90+15, 90+16, 90+17 }
+};
#elif defined(RGB_BACKLIGHT_HS60) && defined(HS60_ANSI)
//
// LA1, LA5, LA9, LA13, LA17, LA21, LA25, LA29, LA33, LA37, LA41, LA45, LA49, LA53,
@@ -831,9 +1015,29 @@ void backlight_update_pwm_buffers(void)
IS31FL3733_update_pwm_buffers( ISSI_ADDR_2, 1 );
IS31FL3733_update_led_control_registers( ISSI_ADDR_1, 0 );
IS31FL3733_update_led_control_registers( ISSI_ADDR_2, 1 );
+#elif defined(RGB_BACKLIGHT_U80_A)
+ static uint8_t driver = 0;
+ switch ( driver )
+ {
+ case 0:
+ IS31FL3731_update_pwm_buffers( ISSI_ADDR_1, 0 );
+ break;
+ case 1:
+ IS31FL3731_update_pwm_buffers( ISSI_ADDR_2, 1 );
+ break;
+ case 2:
+ IS31FL3731_update_pwm_buffers( ISSI_ADDR_3, 2 );
+ break;
+ }
+ if ( ++driver > 2 )
+ {
+ driver = 0;
+ }
#else
- IS31FL3731_update_pwm_buffers( ISSI_ADDR_1, ISSI_ADDR_2 );
- IS31FL3731_update_led_control_registers( ISSI_ADDR_1, ISSI_ADDR_2 );
+ IS31FL3731_update_pwm_buffers( ISSI_ADDR_1, 0 );
+ IS31FL3731_update_pwm_buffers( ISSI_ADDR_2, 1 );
+ IS31FL3731_update_led_control_registers( ISSI_ADDR_1, 0 );
+ IS31FL3731_update_led_control_registers( ISSI_ADDR_2, 1 );
#endif
}
@@ -1028,7 +1232,7 @@ void backlight_effect_alphas_mods(void)
{
RGB rgb1 = hsv_to_rgb( (HSV){ .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness } );
RGB rgb2 = hsv_to_rgb( (HSV){ .h = g_config.color_2.h, .s = g_config.color_2.s, .v = g_config.brightness } );
-
+ bool is_alpha = false;
for ( int row = 0; row < MATRIX_ROWS; row++ )
{
for ( int column = 0; column < MATRIX_COLS; column++ )
@@ -1037,7 +1241,19 @@ void backlight_effect_alphas_mods(void)
map_row_column_to_led( row, column, &index );
if ( index < BACKLIGHT_LED_COUNT )
{
- if ( ( g_config.alphas_mods[row] & (1<= 72+0 && index <= 72+8 ) || // LE0-LE8
+ ( index == 90+13 ) ); // LF13
#endif
// This only caches it for later
IS31FL3731_set_led_control_register( index, enabled, enabled, enabled );
}
// This actually updates the LED drivers
- IS31FL3731_update_led_control_registers( ISSI_ADDR_1, ISSI_ADDR_2 );
+ IS31FL3731_update_led_control_registers( ISSI_ADDR_1, 0 );
+ IS31FL3731_update_led_control_registers( ISSI_ADDR_2, 1 );
+#if defined(RGB_BACKLIGHT_U80_A)
+ IS31FL3731_update_led_control_registers( ISSI_ADDR_3, 2 );
+#endif
#endif // !defined(RGB_BACKLIGHT_M6_B)
// TODO: put the 1 second startup delay here?
@@ -2193,4 +2440,3 @@ void backlight_debug_led( bool state )
}
#endif // defined(RGB_DEBUGGING_ONLY)
-#endif // BACKLIGHT_ENABLED
diff --git a/keyboards/zeal60/rgb_backlight.h b/keyboards/wilba_tech/wt_rgb_backlight.h
similarity index 100%
rename from keyboards/zeal60/rgb_backlight.h
rename to keyboards/wilba_tech/wt_rgb_backlight.h
diff --git a/keyboards/zeal60/rgb_backlight_api.h b/keyboards/wilba_tech/wt_rgb_backlight_api.h
similarity index 97%
rename from keyboards/zeal60/rgb_backlight_api.h
rename to keyboards/wilba_tech/wt_rgb_backlight_api.h
index 680ba4d99c2..0cd6b85f073 100644
--- a/keyboards/zeal60/rgb_backlight_api.h
+++ b/keyboards/wilba_tech/wt_rgb_backlight_api.h
@@ -15,7 +15,7 @@
*/
#pragma once
-enum backlight_config_value
+enum wt_rgb_backlight_config_value
{
id_use_split_backspace = 0x01,
id_use_split_left_shift = 0x02,
diff --git a/keyboards/zeal60/rgb_backlight_keycodes.h b/keyboards/wilba_tech/wt_rgb_backlight_keycodes.h
similarity index 96%
rename from keyboards/zeal60/rgb_backlight_keycodes.h
rename to keyboards/wilba_tech/wt_rgb_backlight_keycodes.h
index ba7f03f89d4..5a436495353 100644
--- a/keyboards/zeal60/rgb_backlight_keycodes.h
+++ b/keyboards/wilba_tech/wt_rgb_backlight_keycodes.h
@@ -16,7 +16,7 @@
#pragma once
// This is hardcoded at 0x5F00 so it's well after keycode value SAFE_RANGE
-enum backlight_keycodes {
+enum wt_rgb_backlight_keycodes {
BR_INC = 0x5F00, // backlight brightness increase
BR_DEC, // backlight brightness decrease
EF_INC, // backlight effect increase
diff --git a/keyboards/zeal60/config.h b/keyboards/wilba_tech/zeal60/config.h
similarity index 100%
rename from keyboards/zeal60/config.h
rename to keyboards/wilba_tech/zeal60/config.h
diff --git a/keyboards/zeal60/info.json b/keyboards/wilba_tech/zeal60/info.json
similarity index 99%
rename from keyboards/zeal60/info.json
rename to keyboards/wilba_tech/zeal60/info.json
index c4234e49a45..802f1f0cba2 100644
--- a/keyboards/zeal60/info.json
+++ b/keyboards/wilba_tech/zeal60/info.json
@@ -1,12 +1,12 @@
{
"keyboard_name": "Zeal60",
- "url": "",
+ "url": "https://zealpc.net",
"maintainer": "Wilba",
- "bootloader": "DFU",
+ "bootloader": "atmel-dfu",
"width": 15,
"height": 5,
"layouts": {
- "LAYOUT_all": {
+ "LAYOUT_60_all": {
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
},
"LAYOUT_60_ansi": {
diff --git a/keyboards/zeal60/keymaps/ansi_split_bs_rshift/config.h b/keyboards/wilba_tech/zeal60/keymaps/ansi_split_bs_rshift/config.h
similarity index 100%
rename from keyboards/zeal60/keymaps/ansi_split_bs_rshift/config.h
rename to keyboards/wilba_tech/zeal60/keymaps/ansi_split_bs_rshift/config.h
diff --git a/keyboards/zeal60/keymaps/ansi_split_bs_rshift/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/ansi_split_bs_rshift/keymap.c
similarity index 100%
rename from keyboards/zeal60/keymaps/ansi_split_bs_rshift/keymap.c
rename to keyboards/wilba_tech/zeal60/keymaps/ansi_split_bs_rshift/keymap.c
diff --git a/keyboards/zeal60/keymaps/crd/config.h b/keyboards/wilba_tech/zeal60/keymaps/crd/config.h
similarity index 100%
rename from keyboards/zeal60/keymaps/crd/config.h
rename to keyboards/wilba_tech/zeal60/keymaps/crd/config.h
diff --git a/keyboards/zeal60/keymaps/crd/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/crd/keymap.c
similarity index 100%
rename from keyboards/zeal60/keymaps/crd/keymap.c
rename to keyboards/wilba_tech/zeal60/keymaps/crd/keymap.c
diff --git a/keyboards/zeal60/keymaps/default/config.h b/keyboards/wilba_tech/zeal60/keymaps/default/config.h
similarity index 100%
rename from keyboards/zeal60/keymaps/default/config.h
rename to keyboards/wilba_tech/zeal60/keymaps/default/config.h
diff --git a/keyboards/zeal60/keymaps/default/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/zeal60/keymaps/default/keymap.c
rename to keyboards/wilba_tech/zeal60/keymaps/default/keymap.c
diff --git a/keyboards/zeal60/keymaps/hhkb/config.h b/keyboards/wilba_tech/zeal60/keymaps/hhkb/config.h
similarity index 100%
rename from keyboards/zeal60/keymaps/hhkb/config.h
rename to keyboards/wilba_tech/zeal60/keymaps/hhkb/config.h
diff --git a/keyboards/zeal60/keymaps/hhkb/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/hhkb/keymap.c
similarity index 100%
rename from keyboards/zeal60/keymaps/hhkb/keymap.c
rename to keyboards/wilba_tech/zeal60/keymaps/hhkb/keymap.c
diff --git a/keyboards/zeal60/keymaps/iso/config.h b/keyboards/wilba_tech/zeal60/keymaps/iso/config.h
similarity index 100%
rename from keyboards/zeal60/keymaps/iso/config.h
rename to keyboards/wilba_tech/zeal60/keymaps/iso/config.h
diff --git a/keyboards/zeal60/keymaps/iso/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/iso/keymap.c
similarity index 100%
rename from keyboards/zeal60/keymaps/iso/keymap.c
rename to keyboards/wilba_tech/zeal60/keymaps/iso/keymap.c
diff --git a/keyboards/zeal60/keymaps/ryanmaclean/config.h b/keyboards/wilba_tech/zeal60/keymaps/ryanmaclean/config.h
similarity index 100%
rename from keyboards/zeal60/keymaps/ryanmaclean/config.h
rename to keyboards/wilba_tech/zeal60/keymaps/ryanmaclean/config.h
diff --git a/keyboards/zeal60/keymaps/ryanmaclean/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/ryanmaclean/keymap.c
similarity index 100%
rename from keyboards/zeal60/keymaps/ryanmaclean/keymap.c
rename to keyboards/wilba_tech/zeal60/keymaps/ryanmaclean/keymap.c
diff --git a/keyboards/zeal60/keymaps/tusing/Makefile b/keyboards/wilba_tech/zeal60/keymaps/tusing/Makefile
similarity index 100%
rename from keyboards/zeal60/keymaps/tusing/Makefile
rename to keyboards/wilba_tech/zeal60/keymaps/tusing/Makefile
diff --git a/keyboards/zeal60/keymaps/tusing/README.md b/keyboards/wilba_tech/zeal60/keymaps/tusing/README.md
similarity index 100%
rename from keyboards/zeal60/keymaps/tusing/README.md
rename to keyboards/wilba_tech/zeal60/keymaps/tusing/README.md
diff --git a/keyboards/zeal60/keymaps/tusing/config.h b/keyboards/wilba_tech/zeal60/keymaps/tusing/config.h
similarity index 100%
rename from keyboards/zeal60/keymaps/tusing/config.h
rename to keyboards/wilba_tech/zeal60/keymaps/tusing/config.h
diff --git a/keyboards/zeal60/keymaps/tusing/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/tusing/keymap.c
similarity index 100%
rename from keyboards/zeal60/keymaps/tusing/keymap.c
rename to keyboards/wilba_tech/zeal60/keymaps/tusing/keymap.c
diff --git a/keyboards/zeal60/readme.md b/keyboards/wilba_tech/zeal60/readme.md
similarity index 98%
rename from keyboards/zeal60/readme.md
rename to keyboards/wilba_tech/zeal60/readme.md
index 9eca28f83ea..21d55af39b6 100644
--- a/keyboards/zeal60/readme.md
+++ b/keyboards/wilba_tech/zeal60/readme.md
@@ -11,7 +11,7 @@ Hardware Availability: https://zealpc.net/collections/group-buy-pre-orders/produ
Make example for this keyboard (after setting up your build environment):
- make zeal60:default
+ make wilba_tech/zeal60: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/zeal60/rules.mk b/keyboards/wilba_tech/zeal60/rules.mk
similarity index 97%
rename from keyboards/zeal60/rules.mk
rename to keyboards/wilba_tech/zeal60/rules.mk
index 1327d88210a..5d20659f831 100644
--- a/keyboards/zeal60/rules.mk
+++ b/keyboards/wilba_tech/zeal60/rules.mk
@@ -1,7 +1,8 @@
# project specific files
-SRC = rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
drivers/issi/is31fl3731.c \
drivers/avr/i2c_master.c
diff --git a/keyboards/wilba_tech/zeal60/zeal60.c b/keyboards/wilba_tech/zeal60/zeal60.c
new file mode 100644
index 00000000000..b8c2e2f83fe
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/zeal60.c
@@ -0,0 +1,18 @@
+/* Copyright 2017 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 .
+ */
+#ifndef RGB_BACKLIGHT_ZEAL60
+#error RGB_BACKLIGHT_ZEAL60 not defined, you done goofed somehao, brah
+#endif
diff --git a/keyboards/zeal60/zeal60.h b/keyboards/wilba_tech/zeal60/zeal60.h
similarity index 97%
rename from keyboards/zeal60/zeal60.h
rename to keyboards/wilba_tech/zeal60/zeal60.h
index ef9de7989e5..0d4f1b908b4 100644
--- a/keyboards/zeal60/zeal60.h
+++ b/keyboards/wilba_tech/zeal60/zeal60.h
@@ -16,8 +16,8 @@
#pragma once
#include "quantum.h"
-#include "rgb_backlight_keycodes.h"
-#include "zeal60_keycodes.h"
+#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
+#include "keyboards/wilba_tech/via_keycodes.h"
#define XXX KC_NO
diff --git a/keyboards/zeal65/config.h b/keyboards/wilba_tech/zeal65/config.h
similarity index 100%
rename from keyboards/zeal65/config.h
rename to keyboards/wilba_tech/zeal65/config.h
diff --git a/keyboards/zeal65/info.json b/keyboards/wilba_tech/zeal65/info.json
similarity index 98%
rename from keyboards/zeal65/info.json
rename to keyboards/wilba_tech/zeal65/info.json
index 94a090689e5..d83895ed953 100644
--- a/keyboards/zeal65/info.json
+++ b/keyboards/wilba_tech/zeal65/info.json
@@ -1,8 +1,8 @@
{
"keyboard_name": "Zeal65",
- "url": "",
+ "url": "https://zealpc.net",
"maintainer": "Wilba",
- "bootloader": "DFU",
+ "bootloader": "atmel-dfu",
"width": 16,
"height": 5,
"layouts": {
diff --git a/keyboards/zeal65/keymaps/default/config.h b/keyboards/wilba_tech/zeal65/keymaps/default/config.h
similarity index 100%
rename from keyboards/zeal65/keymaps/default/config.h
rename to keyboards/wilba_tech/zeal65/keymaps/default/config.h
diff --git a/keyboards/zeal65/keymaps/default/keymap.c b/keyboards/wilba_tech/zeal65/keymaps/default/keymap.c
similarity index 100%
rename from keyboards/zeal65/keymaps/default/keymap.c
rename to keyboards/wilba_tech/zeal65/keymaps/default/keymap.c
diff --git a/keyboards/zeal65/keymaps/split_bs/config.h b/keyboards/wilba_tech/zeal65/keymaps/split_bs/config.h
similarity index 100%
rename from keyboards/zeal65/keymaps/split_bs/config.h
rename to keyboards/wilba_tech/zeal65/keymaps/split_bs/config.h
diff --git a/keyboards/zeal65/keymaps/split_bs/keymap.c b/keyboards/wilba_tech/zeal65/keymaps/split_bs/keymap.c
similarity index 100%
rename from keyboards/zeal65/keymaps/split_bs/keymap.c
rename to keyboards/wilba_tech/zeal65/keymaps/split_bs/keymap.c
diff --git a/keyboards/zeal65/readme.md b/keyboards/wilba_tech/zeal65/readme.md
similarity index 95%
rename from keyboards/zeal65/readme.md
rename to keyboards/wilba_tech/zeal65/readme.md
index 8f43dc24356..7441480384b 100644
--- a/keyboards/zeal65/readme.md
+++ b/keyboards/wilba_tech/zeal65/readme.md
@@ -11,6 +11,6 @@ Hardware Availability: https://zealpc.net/collections/group-buy-pre-orders/produ
Make example for this keyboard (after setting up your build environment):
- make zeal65:default
+ make wilba_tech/zeal65: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/zeal65/rules.mk b/keyboards/wilba_tech/zeal65/rules.mk
similarity index 97%
rename from keyboards/zeal65/rules.mk
rename to keyboards/wilba_tech/zeal65/rules.mk
index 596c1e6496d..a1cd32aad5b 100644
--- a/keyboards/zeal65/rules.mk
+++ b/keyboards/wilba_tech/zeal65/rules.mk
@@ -1,8 +1,8 @@
# project specific files
-SRC = keyboards/zeal60/zeal60.c \
- keyboards/zeal60/rgb_backlight.c \
+SRC = keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
drivers/issi/is31fl3731.c \
drivers/avr/i2c_master.c
diff --git a/keyboards/zeal65/zeal65.c b/keyboards/wilba_tech/zeal65/zeal65.c
similarity index 100%
rename from keyboards/zeal65/zeal65.c
rename to keyboards/wilba_tech/zeal65/zeal65.c
diff --git a/keyboards/zeal65/zeal65.h b/keyboards/wilba_tech/zeal65/zeal65.h
similarity index 95%
rename from keyboards/zeal65/zeal65.h
rename to keyboards/wilba_tech/zeal65/zeal65.h
index 3ee4f49e596..d8528e6c516 100644
--- a/keyboards/zeal65/zeal65.h
+++ b/keyboards/wilba_tech/zeal65/zeal65.h
@@ -16,8 +16,8 @@
#pragma once
#include "quantum.h"
-#include "../zeal60/rgb_backlight_keycodes.h"
-#include "../zeal60/zeal60_keycodes.h"
+#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
+#include "keyboards/wilba_tech/via_keycodes.h"
#define XXX KC_NO
diff --git a/keyboards/winkeyless/bface/config.h b/keyboards/winkeyless/bface/config.h
index 7a1fe333549..20f3642dc80 100644
--- a/keyboards/winkeyless/bface/config.h
+++ b/keyboards/winkeyless/bface/config.h
@@ -38,7 +38,6 @@ along with this program. If not, see .
#define RGBLIGHT_ANIMATIONS
#define NO_UART 1
-#define BOOTLOADHID_BOOTLOADER 1
#ifdef BACKLIGHT_ENABLE
// the backlight PWM does not work (yet). Therefore, we only have two backlight levels (on/off)
diff --git a/keyboards/winkeyless/bface/rules.mk b/keyboards/winkeyless/bface/rules.mk
index b6d172f266e..4e016b47dad 100644
--- a/keyboards/winkeyless/bface/rules.mk
+++ b/keyboards/winkeyless/bface/rules.mk
@@ -37,7 +37,7 @@ RGBLIGHT_ENABLE = yes
RGBLIGHT_CUSTOM_DRIVER = yes
OPT_DEFS = -DDEBUG_LEVEL=0
-OPT_DEFS += -DBOOTLOADER_SIZE=2048
+BOOTLOADER = bootloadHID
# custom matrix setup
SRC = i2c_master.c
diff --git a/keyboards/xd75/keymaps/msiu/readme.md b/keyboards/xd75/keymaps/msiu/readme.md
index d53c0f34a87..f37eee41a33 100644
--- a/keyboards/xd75/keymaps/msiu/readme.md
+++ b/keyboards/xd75/keymaps/msiu/readme.md
@@ -1 +1,3 @@
-# The default keymap for xd75
+# msiu's keymap for xd75
+
+QWERTY keymap for xd75 with centered numpad and standard 40% layers for easy switching between xd75 and contra/planck.
diff --git a/keyboards/ymd75/config.h b/keyboards/ymd75/config.h
index 36031eebf5d..6afd077b0a1 100644
--- a/keyboards/ymd75/config.h
+++ b/keyboards/ymd75/config.h
@@ -46,6 +46,5 @@ along with this program. If not, see .
#define RGBLIGHT_VAL_STEP 18
#define NO_UART 1
-#define BOOTLOADHID_BOOTLOADER 1
#endif
diff --git a/keyboards/ymd96/config.h b/keyboards/ymd96/config.h
index 51d42603dcb..58169196b4a 100644
--- a/keyboards/ymd96/config.h
+++ b/keyboards/ymd96/config.h
@@ -51,7 +51,6 @@ along with this program. If not, see .
#define RGBLIGHT_ANIMATIONS
/*#define RGBLIGHT_VAL_STEP 20
-#define NO_UART 1
-#define BOOTLOADHID_BOOTLOADER 1*/
+#define NO_UART 1*/
#endif
diff --git a/keyboards/zeal60/zeal60.c b/keyboards/zeal60/zeal60.c
deleted file mode 100644
index 93f442f554d..00000000000
--- a/keyboards/zeal60/zeal60.c
+++ /dev/null
@@ -1,376 +0,0 @@
-/* Copyright 2017 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 .
- */
-#include "zeal60.h"
-#include "zeal60_api.h"
-
-// Check that no backlight functions are called
-#if RGB_BACKLIGHT_ENABLED
-#include "rgb_backlight.h"
-#endif // BACKLIGHT_ENABLED
-
-#include "raw_hid.h"
-#include "dynamic_keymap.h"
-#include "timer.h"
-#include "tmk_core/common/eeprom.h"
-
-bool eeprom_is_valid(void)
-{
- return (eeprom_read_word(((void*)EEPROM_MAGIC_ADDR)) == EEPROM_MAGIC &&
- eeprom_read_byte(((void*)EEPROM_VERSION_ADDR)) == EEPROM_VERSION);
-}
-
-void eeprom_set_valid(bool valid)
-{
- eeprom_update_word(((void*)EEPROM_MAGIC_ADDR), valid ? EEPROM_MAGIC : 0xFFFF);
- eeprom_update_byte(((void*)EEPROM_VERSION_ADDR), valid ? EEPROM_VERSION : 0xFF);
-}
-
-void eeprom_reset(void)
-{
- // Set the Zeal60 specific EEPROM state as invalid.
- eeprom_set_valid(false);
- // Set the TMK/QMK EEPROM state as invalid.
- eeconfig_disable();
-}
-
-#ifdef RAW_ENABLE
-
-void raw_hid_receive( uint8_t *data, uint8_t length )
-{
- uint8_t *command_id = &(data[0]);
- uint8_t *command_data = &(data[1]);
- switch ( *command_id )
- {
- case id_get_protocol_version:
- {
- command_data[0] = PROTOCOL_VERSION >> 8;
- command_data[1] = PROTOCOL_VERSION & 0xFF;
- break;
- }
- case id_get_keyboard_value:
- {
- if ( command_data[0] == id_uptime )
- {
- uint32_t value = timer_read32();
- command_data[1] = (value >> 24 ) & 0xFF;
- command_data[2] = (value >> 16 ) & 0xFF;
- command_data[3] = (value >> 8 ) & 0xFF;
- command_data[4] = value & 0xFF;
- }
- else
- {
- *command_id = id_unhandled;
- }
- break;
- }
-#ifdef DYNAMIC_KEYMAP_ENABLE
- case id_dynamic_keymap_get_keycode:
- {
- uint16_t keycode = dynamic_keymap_get_keycode( command_data[0], command_data[1], command_data[2] );
- command_data[3] = keycode >> 8;
- command_data[4] = keycode & 0xFF;
- break;
- }
- case id_dynamic_keymap_set_keycode:
- {
- dynamic_keymap_set_keycode( command_data[0], command_data[1], command_data[2], ( command_data[3] << 8 ) | command_data[4] );
- break;
- }
- case id_dynamic_keymap_reset:
- {
- dynamic_keymap_reset();
- break;
- }
- case id_dynamic_keymap_macro_get_count:
- {
- command_data[0] = dynamic_keymap_macro_get_count();
- break;
- }
- case id_dynamic_keymap_macro_get_buffer_size:
- {
- uint16_t size = dynamic_keymap_macro_get_buffer_size();
- command_data[0] = size >> 8;
- command_data[1] = size & 0xFF;
- break;
- }
- case id_dynamic_keymap_macro_get_buffer:
- {
- uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
- uint16_t size = command_data[2]; // size <= 28
- dynamic_keymap_macro_get_buffer( offset, size, &command_data[3] );
- break;
- }
- case id_dynamic_keymap_macro_set_buffer:
- {
- uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
- uint16_t size = command_data[2]; // size <= 28
- dynamic_keymap_macro_set_buffer( offset, size, &command_data[3] );
- break;
- }
- case id_dynamic_keymap_macro_reset:
- {
- dynamic_keymap_macro_reset();
- break;
- }
- case id_dynamic_keymap_get_layer_count:
- {
- command_data[0] = dynamic_keymap_get_layer_count();
- break;
- }
- case id_dynamic_keymap_get_buffer:
- {
- uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
- uint16_t size = command_data[2]; // size <= 28
- dynamic_keymap_get_buffer( offset, size, &command_data[3] );
- break;
- }
- case id_dynamic_keymap_set_buffer:
- {
- uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
- uint16_t size = command_data[2]; // size <= 28
- dynamic_keymap_set_buffer( offset, size, &command_data[3] );
- break;
- }
-#endif // DYNAMIC_KEYMAP_ENABLE
-#if RGB_BACKLIGHT_ENABLED
- case id_backlight_config_set_value:
- {
- backlight_config_set_value(command_data);
- break;
- }
- case id_backlight_config_get_value:
- {
- backlight_config_get_value(command_data);
- break;
- }
- case id_backlight_config_save:
- {
- backlight_config_save();
- break;
- }
-#endif // RGB_BACKLIGHT_ENABLED
- case id_eeprom_reset:
- {
- eeprom_reset();
- break;
- }
- case id_bootloader_jump:
- {
- // Need to send data back before the jump
- // Informs host that the command is handled
- raw_hid_send( data, length );
- // Give host time to read it
- wait_ms(100);
- bootloader_jump();
- break;
- }
- default:
- {
- // Unhandled message.
- *command_id = id_unhandled;
- break;
- }
- }
-
- // Return same buffer with values changed
- raw_hid_send( data, length );
-
-}
-
-#endif
-
-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
- backlight_config_load();
-#endif // RGB_BACKLIGHT_ENABLED
- } else {
-#if RGB_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.
- backlight_config_save();
-#endif // RGB_BACKLIGHT_ENABLED
-#ifdef DYNAMIC_KEYMAP_ENABLE
- // This resets the keymaps in EEPROM to what is in flash.
- dynamic_keymap_reset();
- // This resets the macros in EEPROM to nothing.
- dynamic_keymap_macro_reset();
-#endif
- // Save the magic number last, in case saving was interrupted
- eeprom_set_valid(true);
- }
-
-#if RGB_BACKLIGHT_ENABLED
- // Initialize LED drivers for backlight.
- backlight_init_drivers();
-
- backlight_timer_init();
- backlight_timer_enable();
-#endif // RGB_BACKLIGHT_ENABLED
-}
-
-void bootmagic_lite(void)
-{
- // The lite version of TMK's bootmagic.
- // 100% less potential for accidentally making the
- // keyboard do stupid things.
-
- // We need multiple scans because debouncing can't be turned off.
- matrix_scan();
- wait_ms(DEBOUNCE);
- wait_ms(DEBOUNCE);
- matrix_scan();
-
- // If the Esc (matrix 0,0) is held down on power up,
- // reset the EEPROM valid state and jump to bootloader.
- if ( matrix_get_row(0) & (1<<0) ) {
- eeprom_reset();
- bootloader_jump();
- }
-}
-
-void matrix_init_kb(void)
-{
- bootmagic_lite();
- main_init();
- matrix_init_user();
-}
-
-void matrix_scan_kb(void)
-{
-#if RGB_BACKLIGHT_ENABLED
- // This only updates the LED driver buffers if something has changed.
- backlight_update_pwm_buffers();
-#endif // BACKLIGHT_ENABLED
- matrix_scan_user();
-}
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record)
-{
-#if RGB_BACKLIGHT_ENABLED
- process_record_backlight(keycode, record);
-#endif // BACKLIGHT_ENABLED
-
- switch(keycode) {
- case FN_MO13:
- if (record->event.pressed) {
- layer_on(1);
- update_tri_layer(1, 2, 3);
- } else {
- layer_off(1);
- update_tri_layer(1, 2, 3);
- }
- return false;
- break;
- case FN_MO23:
- if (record->event.pressed) {
- layer_on(2);
- update_tri_layer(1, 2, 3);
- } else {
- layer_off(2);
- update_tri_layer(1, 2, 3);
- }
- return false;
- break;
- }
-
-#ifdef DYNAMIC_KEYMAP_ENABLE
- // Handle macros
- if (record->event.pressed) {
- if ( keycode >= MACRO00 && keycode <= MACRO15 )
- {
- uint8_t id = keycode - MACRO00;
- dynamic_keymap_macro_send(id);
- return false;
- }
- }
-#endif //DYNAMIC_KEYMAP_ENABLE
-
- return process_record_user(keycode, record);
-}
-
-// This overrides the one in quantum/keymap_common.c
-uint16_t keymap_function_id_to_action( uint16_t function_id )
-{
- // Zeal60 specific "action functions" are 0xF00 to 0xFFF
- // i.e. F(0xF00) to F(0xFFF) are mapped to
- // enum zeal60_action_functions by masking last 8 bits.
- if ( function_id >= 0x0F00 && function_id <= 0x0FFF )
- {
- uint8_t id = function_id & 0xFF;
- switch ( id ) {
- case TRIPLE_TAP_1_3:
- case TRIPLE_TAP_2_3:
- {
- return ACTION_FUNCTION_TAP(id);
- break;
- }
- default:
- break;
- }
- }
-
- return pgm_read_word(&fn_actions[function_id]);
-}
-
-
-// Zeal60 specific "action functions"
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- switch (id)
- {
- case TRIPLE_TAP_1_3:
- case TRIPLE_TAP_2_3:
- if (record->event.pressed) {
- layer_on( id == TRIPLE_TAP_1_3 ? 1 : 2 );
- if (record->tap.count && !record->tap.interrupted) {
- if (record->tap.count >= 3) {
- layer_invert(3);
- }
- } else {
- record->tap.count = 0;
- }
- } else {
- layer_off( id == TRIPLE_TAP_1_3 ? 1 : 2 );
- }
- break;
- }
-}
-
-void led_set_kb(uint8_t usb_led)
-{
-#if RGB_BACKLIGHT_ENABLED
- backlight_set_indicator_state(usb_led);
-#endif // RGB_BACKLIGHT_ENABLED
-}
-
-void suspend_power_down_kb(void)
-{
-#if RGB_BACKLIGHT_ENABLED
- backlight_set_suspend_state(true);
-#endif // RGB_BACKLIGHT_ENABLED
-}
-
-void suspend_wakeup_init_kb(void)
-{
-#if RGB_BACKLIGHT_ENABLED
- backlight_set_suspend_state(false);
-#endif // RGB_BACKLIGHT_ENABLED
-}
diff --git a/keyboards/zj68/config.h b/keyboards/zj68/config.h
new file mode 100644
index 00000000000..59dcfc66644
--- /dev/null
+++ b/keyboards/zj68/config.h
@@ -0,0 +1,64 @@
+/*
+Copyright 2019 Collin Diekvoss
+
+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 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Drop
+#define PRODUCT ZJ68
+#define DESCRIPTION QMK ZJ68
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 }
+#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, F7, F6, F5, F4, F1, F0 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* number of backlight levels */
+#define BACKLIGHT_PIN B6
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 5
+#endif
+
+/* 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
+
+#define RGB_DI_PIN E2
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 14
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
diff --git a/keyboards/zj68/info.json b/keyboards/zj68/info.json
new file mode 100644
index 00000000000..f93963936da
--- /dev/null
+++ b/keyboards/zj68/info.json
@@ -0,0 +1,86 @@
+{
+ "keyboard_name": "ZJ68",
+ "maintainer": "qmk",
+ "width": 16,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "~", "x": 0, "y": 0 },
+ { "label": "!", "x": 1, "y": 0 },
+ { "label": "@", "x": 2, "y": 0 },
+ { "label": "#", "x": 3, "y": 0 },
+ { "label": "$", "x": 4, "y": 0 },
+ { "label": "%", "x": 5, "y": 0 },
+ { "label": "^", "x": 6, "y": 0 },
+ { "label": "&", "x": 7, "y": 0 },
+ { "label": "*", "x": 8, "y": 0 },
+ { "label": "(", "x": 9, "y": 0 },
+ { "label": ")", "x": 10, "y": 0 },
+ { "label": "_", "x": 11, "y": 0 },
+ { "label": "+", "x": 12, "y": 0 },
+ { "x": 13, "y": 0 },
+ { "x": 14, "y": 0 },
+ { "x": 15, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "{", "x": 11.5, "y": 1 },
+ { "label": "}", "x": 12.5, "y": 1 },
+ { "label": "|", "x": 13.5, "y": 1, "w": 1.5 },
+ { "x": 15, "y": 1 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ":", "x": 10.75, "y": 2 },
+ { "label": "\"", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "x": 15, "y": 2 },
+
+ { "label": "Shift", "x": 0, "y": 3, "w": 1.25 },
+ { "x": 1.25, "y": 3 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": "<", "x": 9.25, "y": 3 },
+ { "label": ">", "x": 10.25, "y": 3 },
+ { "label": "?", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "x": 14, "y": 3 },
+ { "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 4 },
+ { "label": "Win", "x": 11, "y": 4 },
+ { "x": 12, "y": 4 },
+ { "x": 13, "y": 4 },
+ { "x": 14, "y": 4 },
+ { "x": 15, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/zj68/keymaps/default/keymap.c b/keyboards/zj68/keymaps/default/keymap.c
new file mode 100644
index 00000000000..05e0776db8f
--- /dev/null
+++ b/keyboards/zj68/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2019 Collin Diekvoss
+ *
+ * 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] = {
+
+ LAYOUT_all(
+ 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_NO, 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_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ LAYOUT_all(
+ 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_NO, RESET, KC_PSCR,
+ RGB_TOG, _______, KC_UP, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
+ BL_TOGG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, KC_END,
+ _______, _______, _______, BL_DEC, BL_INC, BL_STEP, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/zj68/keymaps/default/readme.md b/keyboards/zj68/keymaps/default/readme.md
new file mode 100644
index 00000000000..3522fe02299
--- /dev/null
+++ b/keyboards/zj68/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# ZJ68 Default layout
+
+This is the default layout from the json file provided on Drop, that was intended to be used on kbdfirmware, with an added soft reset on fn(backspace).
\ No newline at end of file
diff --git a/keyboards/zj68/keymaps/splitbs/keymap.c b/keyboards/zj68/keymaps/splitbs/keymap.c
new file mode 100644
index 00000000000..6403c0353fd
--- /dev/null
+++ b/keyboards/zj68/keymaps/splitbs/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2019 Collin Diekvoss
+ *
+ * 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] = {
+
+ LAYOUT_65_ansi_split_bs(
+ 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_INS,
+ 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_DEL,
+ 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_PGUP,
+ 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_PGDN,
+ MO(1), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ LAYOUT_65_ansi_split_bs(
+ RESET, 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_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/zj68/keymaps/splitbs/readme.md b/keyboards/zj68/keymaps/splitbs/readme.md
new file mode 100644
index 00000000000..9047475eebd
--- /dev/null
+++ b/keyboards/zj68/keymaps/splitbs/readme.md
@@ -0,0 +1,3 @@
+# ZJ68 W/ Split Backspace
+
+The plate that comes with the kit from Drop only allows one layout, but the pcb supports having a split backspace, so by widening the plate where the stabilizers are meant to go, you can fit the two switches in, if you want to go back to a single backspace later, you can still use pcb mount stabilizers.
\ No newline at end of file
diff --git a/keyboards/zj68/readme.md b/keyboards/zj68/readme.md
new file mode 100644
index 00000000000..c889888c32a
--- /dev/null
+++ b/keyboards/zj68/readme.md
@@ -0,0 +1,15 @@
+# ZJ68
+
+
+
+A 65% keyboard kit sold through Drop.
+
+Keyboard Maintainer: QMK Community
+Hardware Supported: ZJ68 PCB
+Hardware Availability: [Drop](https://drop.com/buy/zj68-68-key-mechanical-keyboard-kit?mode=guest_open)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make zj68: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/zj68/rules.mk b/keyboards/zj68/rules.mk
new file mode 100644
index 00000000000..79860ed7a24
--- /dev/null
+++ b/keyboards/zj68/rules.mk
@@ -0,0 +1,63 @@
+# 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
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# comment out to disable the options.
+#
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BOOTMAGIC_ENABLE = lite # 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 # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+AUDIO_ENABLE = no
+
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+RGBLIGHT_ENABLE = no
+
+LAYOUTS = 65_ansi
diff --git a/keyboards/zj68/zj68.c b/keyboards/zj68/zj68.c
new file mode 100644
index 00000000000..960c943033b
--- /dev/null
+++ b/keyboards/zj68/zj68.c
@@ -0,0 +1,24 @@
+/* Copyright 2019 Collin Diekvoss
+ *
+ * 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 "zj68.h"
+
+void matrix_init_kb(void) {
+ matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+ matrix_scan_user();
+}
diff --git a/keyboards/zj68/zj68.h b/keyboards/zj68/zj68.h
new file mode 100644
index 00000000000..5eaae26ad3f
--- /dev/null
+++ b/keyboards/zj68/zj68.h
@@ -0,0 +1,60 @@
+/* Copyright 2019 Collin Diekvoss
+ *
+ * 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_65_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K4E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K48, K49, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, K48, K49, K4A, K4B, K4C, K4D, K4E } \
+}
+
+#define LAYOUT_65_ansi_split_bs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K4E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K48, K49, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, K48, K49, K4A, K4B, K4C, K4D, K4E } \
+}
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K4E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K48, K49, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, K48, K49, K4A, K4B, K4C, K4D, K4E } \
+}
diff --git a/layouts/community/ergodox/drashna/keymap.c b/layouts/community/ergodox/drashna/keymap.c
index 74382f17527..763b218f747 100644
--- a/layouts/community/ergodox/drashna/keymap.c
+++ b/layouts/community/ergodox/drashna/keymap.c
@@ -18,21 +18,20 @@ along with this program. If not, see .
#include "drashna.h"
#ifdef UNICODEMAP_ENABLE
-#include "drashna_unicode.h"
-#endif // UNICODEMAP_ENABLE
+# include "drashna_unicode.h"
+#endif // UNICODEMAP_ENABLE
#ifndef UNICODE_ENABLE
-# define UC(x) KC_NO
+# define UC(x) KC_NO
#endif
extern userspace_config_t userspace_config;
-enum more_custom_keycodes {
- KC_SWAP_NUM = NEW_SAFE_RANGE
-};
+enum more_custom_keycodes { KC_SWAP_NUM = NEW_SAFE_RANGE };
-//define layer change stuff for underglow indicator
+// define layer change stuff for underglow indicator
bool skip_leds = false;
+// clang-format off
#define LAYOUT_ergodox_pretty_base( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
@@ -301,9 +300,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
};
+// clang-format on
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
-
switch (keycode) {
case KC_1:
if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
@@ -332,7 +331,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
}
break;
}
- //switch (keycode) {
+ // switch (keycode) {
// case KC_P00:
// if (!record->event.pressed) {
// register_code(KC_KP_0);
@@ -347,9 +346,9 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
}
void matrix_scan_keymap(void) { // runs frequently to update info
- uint8_t modifiers = get_mods();
+ uint8_t modifiers = get_mods();
uint8_t led_usb_state = host_keyboard_leds();
- uint8_t one_shot = get_oneshot_mods();
+ uint8_t one_shot = get_oneshot_mods();
if (!skip_leds) {
ergodox_board_led_off();
@@ -360,24 +359,21 @@ void matrix_scan_keymap(void) { // runs frequently to update info
// Since we're not using the LEDs here for layer indication anymore,
// then lets use them for modifier indicators. Shame we don't have 4...
// Also, no "else", since we want to know each, independently.
- if ( ( modifiers | one_shot ) & MOD_MASK_SHIFT || led_usb_state & (1<event.pressed) {
register_code(KC_RSFT);
- #ifdef BACKLIGHT_ENABLE
+# ifdef BACKLIGHT_ENABLE
backlight_step();
- #endif
+# endif
} else {
unregister_code(KC_RSFT);
}
@@ -172,6 +172,7 @@ bool music_mask_user(uint16_t keycode) {
#ifdef RGB_MATRIX_ENABLE
+// clang-format off
void suspend_power_down_keymap(void) {
rgb_matrix_set_suspend_state(true);
}
@@ -179,98 +180,122 @@ void suspend_power_down_keymap(void) {
void suspend_wakeup_init_keymap(void) {
rgb_matrix_set_suspend_state(false);
}
+// clang-format on
void rgb_matrix_indicators_user(void) {
uint8_t this_mod = get_mods();
uint8_t this_led = host_keyboard_leds();
uint8_t this_osm = get_oneshot_mods();
- bool is_ez;
- #ifdef KEYBOARD_planck_ez
+ bool is_ez;
+# ifdef KEYBOARD_planck_ez
is_ez = true;
- #endif
+# endif
- if ( userspace_config.rgb_layer_change &&
-#ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
+ if (userspace_config.rgb_layer_change &&
+# ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
!g_suspend_state &&
-#endif
-#if defined(RGBLIGHT_ENABLE)
- (!rgblight_config.enable && rgb_matrix_config.enable)
-#else
- rgb_matrix_config.enable
-#endif
- ) {
+# endif
+# if defined(RGBLIGHT_ENABLE)
+ (!rgblight_config.enable && rgb_matrix_config.enable)
+# else
+ rgb_matrix_config.enable
+# endif
+ ) {
switch (biton32(layer_state)) {
+ case _GAMEPAD:
+ rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+ break;
+ case _DIABLO:
+ rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed * 8, LED_FLAG_MODIFIER);
+ break;
case _RAISE:
- rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, LED_FLAG_MODIFIER); break;
+ rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+ break;
case _LOWER:
- rgb_matrix_layer_helper(0x00, 0xFF, 0x00, LED_FLAG_MODIFIER); break;
+ rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+ break;
case _ADJUST:
- rgb_matrix_layer_helper(0xFF, 0x00, 0x00, LED_FLAG_MODIFIER); break;
- default:
+ rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+ break;
+ default: {
+ bool mods_enabled = IS_LAYER_ON(_MODS);
switch (biton32(default_layer_state)) {
- case _QWERTY:
- rgb_matrix_layer_helper(0x00, 0xFF, 0xFF, LED_FLAG_MODIFIER); break;
- case _COLEMAK:
- rgb_matrix_layer_helper(0xFF, 0x00, 0xFF, LED_FLAG_MODIFIER); break;
- case _DVORAK:
- rgb_matrix_layer_helper(0x00, 0xFF, 0x00, LED_FLAG_MODIFIER); break;
- case _WORKMAN:
- rgb_matrix_layer_helper(0xD9, 0xA5, 0x21, LED_FLAG_MODIFIER); break;
- case _NORMAN:
- rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D, LED_FLAG_MODIFIER); break;
- case _MALTRON:
- rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, LED_FLAG_MODIFIER); break;
- case _EUCALYN:
- rgb_matrix_layer_helper(0xFF, 0x80, 0xBF, LED_FLAG_MODIFIER); break;
- case _CARPLAX:
- rgb_matrix_layer_helper(0x00, 0x00, 0xFF, LED_FLAG_MODIFIER); break;
+ case _QWERTY:
+ rgb_matrix_layer_helper(HSV_CYAN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+ break;
+ case _COLEMAK:
+ rgb_matrix_layer_helper(HSV_MAGENTA, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+ break;
+ case _DVORAK:
+ rgb_matrix_layer_helper(HSV_SPRINGGREEN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+ break;
+ case _WORKMAN:
+ rgb_matrix_layer_helper(HSV_GOLDENROD, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+ break;
+ case _NORMAN:
+ rgb_matrix_layer_helper(HSV_CORAL, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+ break;
+ case _MALTRON:
+ rgb_matrix_layer_helper(HSV_YELLOW, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+ break;
+ case _EUCALYN:
+ rgb_matrix_layer_helper(HSV_PINK, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+ break;
+ case _CARPLAX:
+ rgb_matrix_layer_helper(HSV_BLUE, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+ break;
}
+ break;
+ }
}
}
switch (biton32(default_layer_state)) {
case _QWERTY:
- rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0xFF); break;
+ rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0xFF);
+ break;
case _COLEMAK:
- rgb_matrix_set_color(is_ez ? 41 : 42, 0xFF, 0x00, 0xFF); break;
+ rgb_matrix_set_color(is_ez ? 41 : 42, 0xFF, 0x00, 0xFF);
+ break;
case _DVORAK:
- rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0x00); break;
+ rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0x00);
+ break;
case _WORKMAN:
- rgb_matrix_set_color(is_ez ? 41 : 42, 0xD9, 0xA5, 0x21); break;
+ rgb_matrix_set_color(is_ez ? 41 : 42, 0xD9, 0xA5, 0x21);
+ break;
}
- if ( (this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1<= 30000) {
report_last_timer = timer_read();
dprintf("rgblight animation tick report to slave\n");
@@ -874,15 +871,11 @@ void rgblight_task(void) {
}
}
oldpos16 = animation_status.pos16;
- //dprintf("call effect function\n");
#endif
animation_status.last_timer += interval_time;
effect_func(&animation_status);
#if defined(RGBLIGHT_SPLIT) && !defined(RGBLIGHT_SPLIT_NO_ANIMATION_SYNC)
- //dprintf("pos16, oldpos16 = %d %d\n",
- // animation_status.pos16,oldpos16);
if (animation_status.pos16 == 0 && oldpos16 != 0) {
- //dprintf("flag on\n");
tick_flag = true;
}
#endif
diff --git a/quantum/split_common/matrix.c b/quantum/split_common/matrix.c
index 3c3daf3d3b5..e0f094e34ba 100644
--- a/quantum/split_common/matrix.c
+++ b/quantum/split_common/matrix.c
@@ -252,14 +252,22 @@ void matrix_init(void) {
// Set pinout for right half if pinout for that half is defined
if (!isLeftHand) {
+#ifdef DIRECT_PINS_RIGHT
+ const pin_t direct_pins_right[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS_RIGHT;
+ for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+ for (uint8_t j = 0; j < MATRIX_COLS; j++) {
+ direct_pins[i][j] = direct_pins_right[i][j];
+ }
+ }
+#endif
#ifdef MATRIX_ROW_PINS_RIGHT
- const uint8_t row_pins_right[MATRIX_ROWS] = MATRIX_ROW_PINS_RIGHT;
+ const pin_t row_pins_right[MATRIX_ROWS] = MATRIX_ROW_PINS_RIGHT;
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
row_pins[i] = row_pins_right[i];
}
#endif
#ifdef MATRIX_COL_PINS_RIGHT
- const uint8_t col_pins_right[MATRIX_COLS] = MATRIX_COL_PINS_RIGHT;
+ const pin_t col_pins_right[MATRIX_COLS] = MATRIX_COL_PINS_RIGHT;
for (uint8_t i = 0; i < MATRIX_COLS; i++) {
col_pins[i] = col_pins_right[i];
}
diff --git a/quantum/split_common/split_util.c b/quantum/split_common/split_util.c
index 09a307b8ed7..d7ed6989f63 100644
--- a/quantum/split_common/split_util.c
+++ b/quantum/split_common/split_util.c
@@ -32,6 +32,7 @@ bool is_keyboard_left(void) {
return is_keyboard_master();
}
+__attribute__((weak))
bool is_keyboard_master(void)
{
#ifdef __AVR__
diff --git a/quantum/template/avr/config.h b/quantum/template/avr/config.h
index fc65bb59766..0fc7cf9cb91 100644
--- a/quantum/template/avr/config.h
+++ b/quantum/template/avr/config.h
@@ -136,7 +136,7 @@ along with this program. If not, see .
/* key combination for magic key command */
/* defined by default; to change, uncomment and set to the combination you want */
-// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
/* control how magic key switches layers */
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
diff --git a/quantum/template/ps2avrgb/config.h b/quantum/template/ps2avrgb/config.h
index 320d71fcbc5..3ab841d7455 100644
--- a/quantum/template/ps2avrgb/config.h
+++ b/quantum/template/ps2avrgb/config.h
@@ -39,7 +39,6 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-#define NO_BACKLIGHT_CLOCK
#define BACKLIGHT_LEVELS 1
#define RGBLIGHT_ANIMATIONS
@@ -47,7 +46,7 @@ along with this program. If not, see .
/* key combination for magic key command */
/* defined by default; to change, uncomment and set to the combination you want */
-// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
/* Bootmagic Lite key configuration */
// #define BOOTMAGIC_LITE_ROW 0
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c
index f11a682ec64..86b66819635 100644
--- a/tmk_core/common/action.c
+++ b/tmk_core/common/action.c
@@ -44,6 +44,9 @@ int retro_tapping_counter = 0;
#include
#endif
+#ifndef TAP_CODE_DELAY
+# define TAP_CODE_DELAY 0
+#endif
#ifndef TAP_HOLD_CAPS_DELAY
# define TAP_HOLD_CAPS_DELAY 80
#endif
@@ -330,6 +333,9 @@ void process_action(keyrecord_t *record, action_t action)
} else {
if (tap_count > 0) {
dprint("MODS_TAP: Tap: unregister_code\n");
+ if (action.layer_tap.code == KC_CAPS) {
+ wait_ms(TAP_HOLD_CAPS_DELAY);
+ }
unregister_code(action.key.code);
} else {
dprint("MODS_TAP: No tap: add_mods\n");
@@ -522,7 +528,9 @@ void process_action(keyrecord_t *record, action_t action)
dprint("KEYMAP_TAP_KEY: Tap: unregister_code\n");
if (action.layer_tap.code == KC_CAPS) {
wait_ms(TAP_HOLD_CAPS_DELAY);
- }
+ } else {
+ wait_ms(TAP_CODE_DELAY);
+ }
unregister_code(action.layer_tap.code);
} else {
dprint("KEYMAP_TAP_KEY: No tap: Off on release\n");
@@ -618,6 +626,7 @@ void process_action(keyrecord_t *record, action_t action)
if (event.pressed) {
register_code(action.swap.code);
} else {
+ wait_ms(TAP_CODE_DELAY);
unregister_code(action.swap.code);
*record = (keyrecord_t){}; // hack: reset tap mode
}
@@ -670,8 +679,7 @@ void process_action(keyrecord_t *record, action_t action)
retro_tapping_counter = 0;
} else {
if (retro_tapping_counter == 2) {
- register_code(action.layer_tap.code);
- unregister_code(action.layer_tap.code);
+ tap_code(action.layer_tap.code);
}
retro_tapping_counter = 0;
}
@@ -858,12 +866,9 @@ void tap_code(uint8_t code) {
register_code(code);
if (code == KC_CAPS) {
wait_ms(TAP_HOLD_CAPS_DELAY);
- }
- #if TAP_CODE_DELAY > 0
- else {
+ } else {
wait_ms(TAP_CODE_DELAY);
}
- #endif
unregister_code(code);
}
diff --git a/tmk_core/common/command.h b/tmk_core/common/command.h
index e7c7b0ea1d2..e6e67fae4ad 100644
--- a/tmk_core/common/command.h
+++ b/tmk_core/common/command.h
@@ -35,7 +35,7 @@ bool command_proc(uint8_t code);
#endif
#ifndef IS_COMMAND
-#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
+#define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
#endif
#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
diff --git a/tmk_core/protocol/xt_interrupt.c b/tmk_core/protocol/xt_interrupt.c
index 3823bbd3acb..8276f96cd3a 100644
--- a/tmk_core/protocol/xt_interrupt.c
+++ b/tmk_core/protocol/xt_interrupt.c
@@ -41,7 +41,7 @@ POSSIBILITY OF SUCH DAMAGE.
#include
#include "xt.h"
#include "wait.h"
-#include "print.h"
+#include "debug.h"
static inline uint8_t pbuf_dequeue(void);
static inline void pbuf_enqueue(uint8_t data);
@@ -138,7 +138,7 @@ static inline void pbuf_enqueue(uint8_t data)
pbuf[pbuf_head] = data;
pbuf_head = next;
} else {
- print("pbuf: full\n");
+ dprintf("pbuf: full\n");
}
SREG = sreg;
}
diff --git a/users/drashna/config.h b/users/drashna/config.h
index a6d8e752631..8f6e700d2bd 100644
--- a/users/drashna/config.h
+++ b/users/drashna/config.h
@@ -1,47 +1,95 @@
#pragma once
-
#ifdef AUDIO_ENABLE
-# define AUDIO_CLICKY
-# define STARTUP_SONG SONG(RICK_ROLL)
-# define GOODBYE_SONG SONG(SONIC_RING)
-# define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
- SONG(COLEMAK_SOUND), \
- SONG(DVORAK_SOUND), \
- SONG(OVERWATCH_THEME) \
- }
+# if __GNUC__ > 7
+# if __has_include("drashna_song_list.h")
+# include "drashna_song_list.h"
+# endif // if file exists
+# endif // __GNUC__
-# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
+# define AUDIO_CLICKY
+# define STARTUP_SONG SONG(RICK_ROLL)
+# define GOODBYE_SONG SONG(SONIC_RING)
+# define DEFAULT_LAYER_SONGS \
+ { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) }
-# define UNICODE_SONG_OSX SONG(RICK_ROLL)
-# define UNICODE_SONG_LNX SONG(RICK_ROLL)
-# define UNICODE_SONG_WIN SONG(RICK_ROLL)
-# define UNICODE_SONG_BSD SONG(RICK_ROLL)
-# define UNICODE_SONG_WINC SONG(RICK_ROLL)
+# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
-#endif // !AUDIO_ENABLE
+# define UNICODE_SONG_OSX SONG(RICK_ROLL)
+# define UNICODE_SONG_LNX SONG(RICK_ROLL)
+# define UNICODE_SONG_WIN SONG(RICK_ROLL)
+# define UNICODE_SONG_BSD SONG(RICK_ROLL)
+# define UNICODE_SONG_WINC SONG(RICK_ROLL)
+#endif // !AUDIO_ENABLE
#ifdef RGBLIGHT_ENABLE
-# define RGBLIGHT_SLEEP
-# undef RGBLIGHT_ANIMATIONS
-# define RGBLIGHT_EFFECT_BREATHING
-# define RGBLIGHT_EFFECT_SNAKE
-# define RGBLIGHT_EFFECT_KNIGHT
-#endif // RGBLIGHT_ENABLE
+# define RGBLIGHT_SLEEP
+# undef RGBLIGHT_ANIMATIONS
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+#endif // RGBLIGHT_ENABLE
+
+#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_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_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
+// # define EECONFIG_RGB_MATRIX (uint32_t *)16
+
+# if defined(__AVR__) && !defined(__AVR_AT90USB1286__)
+# 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 // AVR
+#endif // RGB_MATRIX_ENABLE
#ifndef ONESHOT_TAP_TOGGLE
-# define ONESHOT_TAP_TOGGLE 2
-#endif // !ONESHOT_TAP_TOGGLE
+# define ONESHOT_TAP_TOGGLE 2
+#endif // !ONESHOT_TAP_TOGGLE
#ifndef ONESHOT_TIMEOUT
-# define ONESHOT_TIMEOUT 3000
-#endif// !ONESHOT_TIMEOUT
+# define ONESHOT_TIMEOUT 3000
+#endif // !ONESHOT_TIMEOUT
#ifndef QMK_KEYS_PER_SCAN
-# define QMK_KEYS_PER_SCAN 4
-#endif // !QMK_KEYS_PER_SCAN
-
-
+# define QMK_KEYS_PER_SCAN 4
+#endif // !QMK_KEYS_PER_SCAN
// 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,
@@ -55,27 +103,26 @@
#define FORCE_NKRO
#ifndef TAPPING_TOGGLE
-# define TAPPING_TOGGLE 1
+# define TAPPING_TOGGLE 1
#endif
#ifdef TAPPING_TERM
-# undef TAPPING_TERM
-#endif // TAPPING_TERM
+# undef TAPPING_TERM
+#endif // TAPPING_TERM
#if defined(KEYBOARD_ergodox_ez)
-# define TAPPING_TERM 185
+# define TAPPING_TERM 185
#elif defined(KEYBOARD_crkbd)
-# define TAPPING_TERM 200
+# define TAPPING_TERM 200
#else
-# define TAPPING_TERM 175
+# define TAPPING_TERM 175
#endif
-
#define TAP_CODE_DELAY 5
/* Disable unused and unneeded features to reduce on firmware size */
#ifdef LOCKING_SUPPORT_ENABLE
-# undef LOCKING_SUPPORT_ENABLE
+# undef LOCKING_SUPPORT_ENABLE
#endif
#ifdef LOCKING_RESYNC_ENABLE
-# undef LOCKING_RESYNC_ENABLE
+# undef LOCKING_RESYNC_ENABLE
#endif
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index acc6b9f9eda..c1809dad0a3 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -19,22 +19,21 @@ along with this program. If not, see .
userspace_config_t userspace_config;
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
- #define DRASHNA_UNICODE_MODE UC_WIN
+# define DRASHNA_UNICODE_MODE UC_WIN
#else
- // set to 2 for UC_WIN, set to 4 for UC_WINC
- #define DRASHNA_UNICODE_MODE 2
+// set to 2 for UC_WIN, set to 4 for UC_WINC
+# define DRASHNA_UNICODE_MODE 2
#endif
-
// This block is for all of the gaming macros, as they were all doing
// the same thing, but with differring text sent.
bool send_game_macro(const char *str, keyrecord_t *record, bool override) {
if (!record->event.pressed || override) {
uint16_t keycode;
if (userspace_config.is_overwatch) {
- keycode = KC_BSPC;
+ keycode = KC_BSPC;
} else {
- keycode = KC_ENTER;
+ keycode = KC_ENTER;
}
clear_keyboard();
tap_code(keycode);
@@ -47,12 +46,12 @@ bool send_game_macro(const char *str, keyrecord_t *record, bool override) {
return false;
}
-bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed) {
+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();
+ if (pressed) {
+ this_timer = timer_read();
} else {
- if (timer_elapsed(this_timer) < TAPPING_TERM){
+ if (timer_elapsed(this_timer) < TAPPING_TERM) {
tap_code(code);
} else {
register_code(mod_code);
@@ -63,11 +62,11 @@ bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed) {
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();
+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){
+ if (timer_elapsed(this_timer) < TAPPING_TERM) {
tap_code(code);
} else {
register_code(mod_code);
@@ -80,13 +79,13 @@ bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t thi
void bootmagic_lite(void) {
matrix_scan();
- #if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0
- wait_ms(DEBOUNCING_DELAY * 2);
- #elif defined(DEBOUNCE) && DEBOUNCE > 0
- wait_ms(DEBOUNCE * 2);
- #else
- wait_ms(30);
- #endif
+#if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0
+ wait_ms(DEBOUNCING_DELAY * 2);
+#elif defined(DEBOUNCE) && DEBOUNCE > 0
+ wait_ms(DEBOUNCE * 2);
+#else
+ wait_ms(30);
+#endif
matrix_scan();
if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
bootloader_jump();
@@ -97,7 +96,7 @@ void bootmagic_lite(void) {
// This allows for a global, userspace functions, and continued
// customization of the keymap. Use _keymap instead of _user
// functions in the keymaps
-__attribute__ ((weak))
+__attribute__((weak))
void matrix_init_keymap(void) {}
// Call user matrix init, set default RGB colors and then
@@ -105,64 +104,63 @@ void matrix_init_keymap(void) {}
void matrix_init_user(void) {
userspace_config.raw = eeconfig_read_user();
- #ifdef BOOTLOADER_CATERINA
- DDRD &= ~(1<<5);
- PORTD &= ~(1<<5);
+#ifdef BOOTLOADER_CATERINA
+ DDRD &= ~(1 << 5);
+ PORTD &= ~(1 << 5);
- DDRB &= ~(1<<0);
- PORTB &= ~(1<<0);
- #endif
+ DDRB &= ~(1 << 0);
+ PORTB &= ~(1 << 0);
+#endif
- #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
- set_unicode_input_mode(DRASHNA_UNICODE_MODE);
- get_unicode_input_mode();
- #endif //UNICODE_ENABLE
+#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
+ set_unicode_input_mode(DRASHNA_UNICODE_MODE);
+ get_unicode_input_mode();
+#endif // UNICODE_ENABLE
matrix_init_keymap();
}
__attribute__((weak))
-void keyboard_post_init_keymap(void){ }
+void keyboard_post_init_keymap(void) {}
-void keyboard_post_init_user(void){
+void keyboard_post_init_user(void) {
#ifdef RGBLIGHT_ENABLE
keyboard_post_init_rgb();
#endif
keyboard_post_init_keymap();
}
-__attribute__ ((weak))
+__attribute__((weak))
void shutdown_keymap(void) {}
-void shutdown_user (void) {
- #ifdef RGBLIGHT_ENABLE
- rgblight_enable_noeeprom();
- rgblight_mode_noeeprom(1);
- rgblight_setrgb_red();
- #endif // RGBLIGHT_ENABLE
- #ifdef RGB_MATRIX_ENABLE
- // uint16_t timer_start = timer_read();
- // rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 );
- // while(timer_elapsed(timer_start) < 250) { wait_ms(1); }
- #endif //RGB_MATRIX_ENABLE
+void shutdown_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_enable_noeeprom();
+ rgblight_mode_noeeprom(1);
+ rgblight_setrgb_red();
+#endif // RGBLIGHT_ENABLE
+#ifdef RGB_MATRIX_ENABLE
+ // uint16_t timer_start = timer_read();
+ // rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 );
+ // while(timer_elapsed(timer_start) < 250) { wait_ms(1); }
+#endif // RGB_MATRIX_ENABLE
shutdown_keymap();
}
-__attribute__ ((weak))
+__attribute__((weak))
void suspend_power_down_keymap(void) {}
void suspend_power_down_user(void) {
suspend_power_down_keymap();
}
-__attribute__ ((weak))
+__attribute__((weak))
void suspend_wakeup_init_keymap(void) {}
void suspend_wakeup_init_user(void) {
suspend_wakeup_init_keymap();
}
-
-__attribute__ ((weak))
+__attribute__((weak))
void matrix_scan_keymap(void) {}
// No global matrix scan code, so just run keymap's matrix
@@ -176,20 +174,17 @@ void matrix_scan_user(void) {
#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
run_diablo_macro_check();
-#endif // TAP_DANCE_ENABLE
+#endif // TAP_DANCE_ENABLE
#ifdef RGBLIGHT_ENABLE
matrix_scan_rgb();
-#endif // RGBLIGHT_ENABLE
+#endif // RGBLIGHT_ENABLE
matrix_scan_keymap();
}
-
-__attribute__ ((weak))
-layer_state_t layer_state_set_keymap (layer_state_t state) {
- return state;
-}
+__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
@@ -197,28 +192,25 @@ 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);
+#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;
-}
+__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
+# ifdef RGBLIGHT_ENABLE
state = default_layer_state_set_rgb(state);
-#endif // RGBLIGHT_ENABLE
+# endif // RGBLIGHT_ENABLE
#endif
return state;
}
-__attribute__ ((weak))
+__attribute__((weak))
void led_set_keymap(uint8_t usb_led) {}
// Any custom LED code goes here.
@@ -228,17 +220,19 @@ void led_set_user(uint8_t usb_led) {
led_set_keymap(usb_led);
}
-__attribute__ ((weak))
+__attribute__((weak))
void eeconfig_init_keymap(void) {}
void eeconfig_init_user(void) {
- userspace_config.raw = 0;
+ 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))
+#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
set_unicode_input_mode(DRASHNA_UNICODE_MODE);
get_unicode_input_mode();
- #else
+#else
eeprom_update_byte(EECONFIG_UNICODEMODE, DRASHNA_UNICODE_MODE);
- #endif
+#endif
+ eeconfig_init_keymap();
+ keyboard_init();
}
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index 507504f04e5..0d6dac380be 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -22,20 +22,15 @@ along with this program. If not, see .
#include "wrappers.h"
#include "process_records.h"
#ifdef TAP_DANCE_ENABLE
-# include "tap_dances.h"
-#endif // TAP_DANCE_ENABLE
+# include "tap_dances.h"
+#endif // TAP_DANCE_ENABLE
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
-# include "rgb_stuff.h"
-#endif
-#if defined(AUDIO_ENABLE) && __GNUC__ > 7
-# if __has_include("drashna_song_list.h")
-# include "drashna_song_list.h"
-# endif
+# include "rgb_stuff.h"
#endif
/* Define layer names */
enum userspace_layers {
- _QWERTY = 0,
+ _QWERTY = 0,
_NUMLOCK = 0,
_COLEMAK,
_DVORAK,
@@ -58,47 +53,45 @@ enum userspace_layers {
define modifiers here, since MOD_* doesn't seem to work for these
*/
-
-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);
-bool send_game_macro(const char *str, keyrecord_t *record, bool override);
-void matrix_init_keymap(void);
-void shutdown_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);
+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);
+bool send_game_macro(const char *str, keyrecord_t *record, bool override);
+void matrix_init_keymap(void);
+void shutdown_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;
+ 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
+# 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/users/drashna/process_records.c b/users/drashna/process_records.c
index 770219917e7..5666d052dcd 100644
--- a/users/drashna/process_records.c
+++ b/users/drashna/process_records.c
@@ -2,160 +2,161 @@
uint16_t copy_paste_timer;
-__attribute__ ((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
+__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;
-}
+__attribute__((weak))
+bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; }
// Defines actions tor my global custom keycodes. Defined in drashna.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
+ // 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
+# 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_CARPLAX:
- if (record->event.pressed) {
- set_single_persistent_default_layer(keycode - KC_QWERTY);
- }
- break;
+ case KC_QWERTY ... KC_CARPLAX:
+ 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) {
- uint8_t temp_mod = get_mods();
- uint8_t temp_osm = get_oneshot_mods();
- clear_mods(); clear_oneshot_mods();
- send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
+ case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
+ if (!record->event.pressed) {
+ uint8_t temp_mod = get_mods();
+ uint8_t temp_osm = get_oneshot_mods();
+ clear_mods();
+ clear_oneshot_mods();
+ send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
#ifndef MAKE_BOOTLOADER
- if ( ( temp_mod | temp_osm ) & MOD_MASK_SHIFT )
+ if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)
#endif
- {
- #if defined(__arm__)
- send_string_with_delay_P(PSTR(":dfu-util"), TAP_CODE_DELAY);
- #elif defined(BOOTLOADER_DFU)
- send_string_with_delay_P(PSTR(":dfu"), TAP_CODE_DELAY);
- #elif defined(BOOTLOADER_HALFKAY)
- send_string_with_delay_P(PSTR(":teensy"), TAP_CODE_DELAY);
- #elif defined(BOOTLOADER_CATERINA)
- send_string_with_delay_P(PSTR(":avrdude"), TAP_CODE_DELAY);
- #endif // bootloader options
- }
- if ( ( temp_mod | temp_osm ) & MOD_MASK_CTRL) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), TAP_CODE_DELAY); }
+ {
+#if defined(__arm__)
+ send_string_with_delay_P(PSTR(":dfu-util"), TAP_CODE_DELAY);
+#elif defined(BOOTLOADER_DFU)
+ send_string_with_delay_P(PSTR(":dfu"), TAP_CODE_DELAY);
+#elif defined(BOOTLOADER_HALFKAY)
+ send_string_with_delay_P(PSTR(":teensy"), TAP_CODE_DELAY);
+#elif defined(BOOTLOADER_CATERINA)
+ send_string_with_delay_P(PSTR(":avrdude"), TAP_CODE_DELAY);
+#endif // bootloader options
+ }
+ if ((temp_mod | temp_osm) & MOD_MASK_CTRL) {
+ send_string_with_delay_P(PSTR(" -j8 --output-sync"), TAP_CODE_DELAY);
+ }
#ifdef RGB_MATRIX_SPLIT_RIGHT
- send_string_with_delay_P(PSTR(" RGB_MATRIX_SPLIT_RIGHT=yes OLED_DRIVER_ENABLE=no"), TAP_CODE_DELAY);
+ send_string_with_delay_P(PSTR(" RGB_MATRIX_SPLIT_RIGHT=yes"), TAP_CODE_DELAY);
+# ifndef OLED_DRIVER_ENABLE
+ send_string_with_delay_P(PSTR(" OLED_DRIVER_ENABLE=no"), TAP_CODE_DELAY);
+# endif
#endif
- send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
- }
+ send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
+ }
- break;
+ 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 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;
- // These are a serious of gaming macros.
- // Only enables for the viterbi, basically,
- // to save on firmware space, since it's limited.
+ // These are a serious of gaming macros.
+ // Only enables for the viterbi, basically,
+ // to save on firmware space, since it's limited.
#ifdef MACROS_ENABLED
- case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
- if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeconfig_update_user(userspace_config.raw); }
-#ifdef RGBLIGHT_ENABLE
- userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18);
-#endif //RGBLIGHT_ENABLE
- break;
- case KC_SALT:
- return send_game_macro("Salt, salt, salt...", record, false);
- case KC_MORESALT:
- return send_game_macro("Please sir, can I have some more salt?!", record, false);
- case KC_SALTHARD:
- return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false);
- case KC_GOODGAME:
- return send_game_macro("Good game, everyone!", record, false);
- case KC_GLHF:
- return send_game_macro("Good luck, have fun!!!", record, false);
- case KC_SYMM:
- return send_game_macro("Left click to win!", record, false);
- case KC_JUSTGAME:
- return send_game_macro("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games.", record, false);
- case KC_TORB:
- return send_game_macro("That was positively riveting!", record, false);
- case KC_AIM:
- send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true);
- return send_game_macro("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!", record, false);
- case KC_C9:
- return send_game_macro("OMG!!! C9!!!", record, false);
- case KC_GGEZ:
- return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false);
-#endif // MACROS_ENABLED
+ case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
+ if (record->event.pressed) {
+ userspace_config.is_overwatch ^= 1;
+ eeconfig_update_user(userspace_config.raw);
+ }
+# ifdef RGBLIGHT_ENABLE
+ userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18);
+# endif // RGBLIGHT_ENABLE
+ break;
+ case KC_SALT:
+ return send_game_macro("Salt, salt, salt...", record, false);
+ case KC_MORESALT:
+ return send_game_macro("Please sir, can I have some more salt?!", record, false);
+ case KC_SALTHARD:
+ return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false);
+ case KC_GOODGAME:
+ return send_game_macro("Good game, everyone!", record, false);
+ case KC_GLHF:
+ return send_game_macro("Good luck, have fun!!!", record, false);
+ case KC_SYMM:
+ return send_game_macro("Left click to win!", record, false);
+ case KC_JUSTGAME:
+ return send_game_macro("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games.", record, false);
+ case KC_TORB:
+ return send_game_macro("That was positively riveting!", record, false);
+ case KC_AIM:
+ send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true);
+ return send_game_macro("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!", record, false);
+ case KC_C9:
+ return send_game_macro("OMG!!! C9!!!", record, false);
+ case KC_GGEZ:
+ return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false);
+#endif // MACROS_ENABLED
-
- case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them
+ case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them
#ifdef TAP_DANCE_ENABLE
- if (record->event.pressed) {
- uint8_t dtime;
- for (dtime = 0; dtime < 4; dtime++) {
- diablo_timer[dtime].key_time = diablo_times[0];
+ if (record->event.pressed) {
+ for (uint8_t index = 0; index < 4; index++) {
+ diablo_timer[index].key_interval = 0;
+ }
}
- }
-#endif // TAP_DANCE_ENABLE
- break;
+#endif // TAP_DANCE_ENABLE
+ break;
-
- case KC_CCCV: // One key copy/paste
- if(record->event.pressed){
- copy_paste_timer = timer_read();
+ 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);
+ 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;
+ 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;
+ 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
}
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);
+ process_record_user_rgb(keycode, record) &&
+#endif // RGBLIGHT_ENABLE
+ process_record_secrets(keycode, record);
}
diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h
index 35adec84cc7..8901a6f91c8 100644
--- a/users/drashna/process_records.h
+++ b/users/drashna/process_records.h
@@ -2,24 +2,24 @@
#include "drashna.h"
#if defined(KEYMAP_SAFE_RANGE)
-# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
+# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
#else
-# define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
+# 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_NORMAN, // Sets default layer to NORMAN
- KC_MALTRON, // Sets default layer to MALTRON
- KC_EUCALYN, // Sets default layer to EUCALYN
- KC_CARPLAX, // Sets default layer to CARPLAX
- KC_DIABLO_CLEAR, // Clears all Diablo Timers
- KC_OVERWATCH, // Toggles game macro input mode (so in OW, it defaults to game chat)
- KC_SALT, // See drashna.c for details
+ 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_NORMAN, // Sets default layer to NORMAN
+ KC_MALTRON, // Sets default layer to MALTRON
+ KC_EUCALYN, // Sets default layer to EUCALYN
+ KC_CARPLAX, // Sets default layer to CARPLAX
+ KC_DIABLO_CLEAR, // Clears all Diablo Timers
+ KC_OVERWATCH, // Toggles game macro input mode (so in OW, it defaults to game chat)
+ KC_SALT, // See drashna.c for details
KC_MORESALT,
KC_SALTHARD,
KC_GOODGAME,
@@ -30,27 +30,25 @@ enum userspace_custom_keycodes {
KC_AIM,
KC_C9,
KC_GGEZ,
- KC_MAKE, // Run keyboard's customized make command
- KC_RGB_T, // Toggles RGB Layer Indication mode
- 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
+ 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);
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
-
-
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
#define ADJUST MO(_ADJUST)
@@ -74,10 +72,10 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
#define KC_RST KC_RESET
#ifdef SWAP_HANDS_ENABLE
-#define KC_C1R3 SH_TT
-#else // SWAP_HANDS_ENABLE
-#define KC_C1R3 KC_BSPC
-#endif // SWAP_HANDS_ENABLE
+# define KC_C1R3 SH_TT
+#else // SWAP_HANDS_ENABLE
+# define KC_C1R3 KC_BSPC
+#endif // SWAP_HANDS_ENABLE
#define BK_LWER LT(_LOWER, KC_BSPC)
#define SP_LWER LT(_LOWER, KC_SPC)
diff --git a/users/drashna/readme.md b/users/drashna/readme.md
index ffc60060f45..d98d1d0a6bb 100644
--- a/users/drashna/readme.md
+++ b/users/drashna/readme.md
@@ -2,192 +2,14 @@
This is my personal userspace file. Most of my code exists here, as it's heavily shared.
-## Custom userspace handlers
+* [RGB Customization](readme_rgb.md)
+* [Diablo Tap Dancing](readme_tap_dance.md)
+* [Keymap Wrappers](readme_wrappers.md)
+* [Custom Function Handlers](readme_handlers.md)
+* [Secret Macros](readme_secrets.md)
+* [Custom Keycodes](readme_keycodes.md)
-Specifically QMK works by using customized handlers for everything. This allows for multiple levels of customization.
-
-`matrix_scan` calls `matrix_scan_quantum`, which alls `matrix_scan_kb`, which calls `matrix_scan_user`.
-`process_record` calls a bunch of stuff, but eventually calls `process_record_kb` which calls `process_record_user`
-The same goes for `matrix_init`, `layer_state_set`, `led_set`, and a few other functions.
-
-All (most) `_user` functions are handled here instead. To allow keyboard specific configuration, I've created `_keymap` functions that can be called by the keymap.c files instead.
-
-This allows for keyboard specific configuration while maintaining the ability to customize the board.
-
-My [Ergodox EZ Keymap](https://github.com/qmk/qmk_firmware/blob/master/layouts/community/ergodox/drashna/keymap.c#L297) is a good example of this, as it uses the LEDs as modifier indicators.
-
-## Keyboard Layout Templates
-
-This borrows from @jola5's "Not quite neo" code. This allows me to maintain blocks of keymaps in the userspace, so that I can modify the userspace, and this is reflected in all of the keyboards that use it, at once.
-
-This makes adding tap/hold mods, or other special keycodes or functions to all keyboards super easy, as it's done to all of them at once.
-
-The caveat here is that the keymap needs a processor/wrapper, as it doesn't like the substitutions. However, this is as simple as just pushing it through a define. For instance:
-
-`#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)`
-
-Once that's been done and you've switched the keymaps to use the "wrapper", it will read the substitution blocks just fine.
-
-Credit goes to @jola5 for first implementing this awesome idea.
-
-
-## Custom Keycodes
-
-Keycodes are defined in the drashna.h file and need to be included in the keymap.c files, so that they can be used there.
-
-A bunch of macros are present and are only included on boards that are not the Ergodox EZ or Orthodox, as they are not needed for those boards.
-
-Included is a custom macro for compiling my keyboards. This includes the bootloader target (`:teensy`, `:avrdude`, or `:dfu`), and keeps RGBLIGHT, AUDIO and/or FAUXCLICKY enabled, if it previously was (regardless of the rules file).
-
-This also includes a modified RESET keycode as well, that sets the underglow to red.
-
-## Layer Indication
-
-This uses the `layer_state_set_*` command to change the layer color, to indicate which layer it is on. This includes the default keymap, as well.
-
-Since this is done via userspace, it is the same between all systems.
-
-Additionally, there is a custom keycode to toggle layer indication. And all RGB keycodes disable layer indication by default, as well. This way, I can leave special effects doing when I want.
-
-Also. I use `rgblight_sethsv` since it works with animation modes (that support it).
-
-## Diablo Layer
-
-This layer has some special handling.
-
-When Tap Dances are enabled, this layer has the ability to "spam" keypresses.
-
-For instance, tapping the TD "1" twice causes the layer to hit "1" ever 1 second (appoximately). This is useful for auto-hotkeying skills (such as bone armor or devour).
-
-Tappind once disables this, and switching layers temporarily disables this, until you switch back to the layer.
-
-For critics that think this is cheating, search "diablo 3 num lock auto cast". This is just a simpler method, since I no longer own a normal (non QMK) numpad.
-
-## Secret Macros
-
-With help from gitter and Colinta, this adds the ability to add hidden macros from other users.
-
-First, I have several files that are hidden/excluded from Git/GitHub. These contain everything needed for the macros. To hide these files, open `.git/info/exclude` and add `secrets.c` and `secrets.h` to that file, below the comments.
-
-And this requires `KC_SECRET_1` through `KC_SECRET_5` to be defined in your `.h` file to define the keycodes for the new macros.
-
-
-### .git/info/exclude
-
-```
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-# *.[oa]
-# *~
-/users/drashna/secrets.c
-/users/drashna/secrets.h
-```
-
-Then you can create these files:
-
-### secrets.c
-
-```c
-#include "drashna.h" // replace with your keymap's "h" file, or whatever file stores the keycodes
-
-#if (__has_include("secrets.h") && !defined(NO_SECRETS))
-#include "secrets.h"
-#else
-// `PROGMEM const char secret[][x]` may work better, but it takes up more space in the firmware
-// And I'm not familiar enough to know which is better or why...
-static const char * const secret[] = {
- "test1",
- "test2",
- "test3",
- "test4",
- "test5"
-};
-#endif
-
-bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case KC_SECRET_1 ... KC_SECRET_5: // Secrets! Externally defined strings, not stored in repo
- if (!record->event.pressed) {
- clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
- send_string_with_delay(secret[keycode - KC_SECRET_1], MACRO_TIMER);
- }
- return false;
- break;
- }
- return true;
-}
-```
-
-### secrets.h
-
-```c
-static const char * const secrets[] = {
- "secret1",
- "secret2",
- "secret3",
- "secret4",
- "secret5"
-};
-```
-
-Replacing the strings with the codes that you need.
-
-### name.c
-
-In the `.c` file, you will want to add this to the top:
-
-```c
-__attribute__ ((weak))
-bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
-```
-
-This is so that the function can be called here, and replaced in the `secrets.c` file, and so it won't error out if it doesn't exist.
-
-And then, in the `process_record_user` function, assuming you have `return process_record_keymap(keycode, record)` here, you'll want to replace the "final" return with the following. Otherwise, you want to replace the `return true;` with `return process_record_secrets(keycode, record);`
-
-```c
- return process_record_keymap(keycode, record) && process_record_secrets(keycode, record);
-}
-```
-
-### rules.mk
-
-Here, you want your `/users//rules.mk` file to "detect" the existence of the `secrets.c` file, and only add it if the file exists. To do so, add this block:
-
-```make
-ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
- SRC += secrets.c
-endif
-```
-
-Additionally, if you want to make sure that you can disable the function without messing with the file, you need to add this to your `/users//rules.mk`, so that it catches the flag:
-
-```make
-ifeq ($(strip $(NO_SECRETS)), yes)
- OPT_DEFS += -DNO_SECRETS
-endif
-```
-
-Then, if you run `make keyboard:name NO_SECRETS=yes`, it will default to the test strings in your `.c` file, rather than reading from your file.
## Pro Micro Hacking
-Well, you can get the QMK DFU bootloader working on the ProMicro. But you need to change fuses.
-
-What worked to get into the firmware properly was:
-
-```
-Low: 0x5E High: 0xD9 Extended: 0xC3 Lock: 0x3F
-```
-
-The reason that there was some issues before, is that JTAG was still enabled, and using some of the pins that the keyboard uses. Disabling JTAG (either by fuse, or modifying the matrix code for splits fixes the issue).
-
-And for reference, if you want to go back to caterina, the default fuse settings I believe were:
-
-```
-Low: 0xFF High: 0xD8 Extended: 0xC3 Lock: 0x3F
-```
+See [this thread](https://www.reddit.com/r/olkb/comments/8sxgzb/replace_pro_micro_bootloader_with_qmk_dfu/) for details on how to flash QMK DFU to Pro Micros.
diff --git a/users/drashna/readme_handlers.md b/users/drashna/readme_handlers.md
new file mode 100644
index 00000000000..4abaf514734
--- /dev/null
+++ b/users/drashna/readme_handlers.md
@@ -0,0 +1,97 @@
+# Custom Userspace Function handlers
+
+Specifically QMK works by using customized handlers for everything. This allows for multiple levels of customization.
+
+`matrix_scan` calls `matrix_scan_quantum`, which calls `matrix_scan_kb`, which calls `matrix_scan_user`.
+`process_record` calls a bunch of stuff, but eventually calls `process_record_kb` which calls `process_record_user`
+The same goes for `matrix_init`, `layer_state_set`, `led_set`, and a few other functions.
+
+All (most) `_user` functions are handled here, in the userspace instead. To allow keyboard specific configuration, I've created `_keymap` functions that can be called by the keymap.c files instead.
+
+This allows for keyboard specific configuration while maintaining the ability to customize the board.
+
+My [Ergodox EZ Keymap](https://github.com/qmk/qmk_firmware/blob/master/layouts/community/ergodox/drashna/keymap.c) is a good example of this, as it uses the LEDs as modifier indicators.
+
+But for a list:
+
+```c
+__attribute__ ((weak))
+void matrix_init_keymap(void) {}
+
+void matrix_init_user(void) {
+ matrix_init_keymap();
+}
+
+__attribute__((weak))
+void keyboard_post_init_keymap(void){ }
+
+void keyboard_post_init_user(void){
+ keyboard_post_init_keymap();
+}
+
+__attribute__ ((weak))
+void matrix_scan_keymap(void) {}
+
+void matrix_scan_user(void) {
+ matrix_scan_keymap();
+}
+
+
+__attribute__ ((weak))
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return process_record_keymap(keycode, record);
+}
+
+
+__attribute__ ((weak))
+layer_state_t layer_state_set_keymap (layer_state_t state) {
+ return state;
+}
+
+layer_state_t layer_state_set_user (layer_state_t state) {
+ return layer_state_set_keymap (state);
+}
+
+
+__attribute__ ((weak))
+void led_set_keymap(uint8_t usb_led) {}
+
+void led_set_user(uint8_t usb_led) {
+ led_set_keymap(usb_led);
+}
+
+
+__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 shutdown_keymap(void) {}
+
+void shutdown_user (void) {
+ shutdown_keymap();
+}
+
+__attribute__ ((weak))
+void eeconfig_init_keymap(void) {}
+
+void eeconfig_init_user(void) {
+ eeconfig_init_keymap();
+}
+```
diff --git a/users/drashna/readme_keycodes.md b/users/drashna/readme_keycodes.md
new file mode 100644
index 00000000000..f5e6fb271ef
--- /dev/null
+++ b/users/drashna/readme_keycodes.md
@@ -0,0 +1,10 @@
+
+# Custom Keycodes
+
+Keycodes are defined in the drashna.h file and need to be included in the keymap.c files, so that they can be used there.
+
+A bunch of macros are present and are only included on boards that are not the Ergodox EZ or Orthodox, as they are not needed for those boards.
+
+Included is a custom macro for compiling my keyboards. This includes the bootloader target (`:teensy`, `:avrdude`, or `:dfu`), and keeps RGBLIGHT, AUDIO and/or FAUXCLICKY enabled, if it previously was (regardless of the rules file).
+
+This also includes a modified RESET keycode as well, that sets the underglow to red.
diff --git a/users/drashna/readme_rgb.md b/users/drashna/readme_rgb.md
new file mode 100644
index 00000000000..acf01b051e7
--- /dev/null
+++ b/users/drashna/readme_rgb.md
@@ -0,0 +1,43 @@
+# Layer Indication Code
+
+At least for RGB Light, the `layer_state_set` function is used to detect the current highest layer, and change the underglow based on that layer.
+
+This works for both the regular layers, and for the default layers, too.
+
+I use the sethsv variants of the commands, so that different modes can be used, as well.
+
+RGB Matrix uses a custom, per board implementation, at the moment.
+
+# RGB Light Startup Animation
+
+On startup, if enabled, the board will cycle through the entire hue wheel, starting and ending on the default layer color.
+
+```c
+void keyboard_post_init_rgb(void) {
+#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION)
+ if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); }
+ if (rgblight_config.enable) {
+ layer_state_set_user(layer_state);
+ uint16_t old_hue = rgblight_config.hue;
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+ for (uint16_t i = 255; i > 0; i--) {
+ rgblight_sethsv_noeeprom( ( i + old_hue) % 255, 255, 255);
+ matrix_scan();
+ wait_ms(10);
+ }
+ }
+#endif
+ layer_state_set_user(layer_state);
+}
+```
+
+This could probably benefit from some cleanup and better handling.
+
+
+# RGB Light Twinkling
+
+This enables random twinkling of the LEDs when typing.
+
+# RGB Light Mod Indicators
+
+Allows feedback of which mods (oneshot or otherwise) are enabled.
diff --git a/users/drashna/readme_secrets.md b/users/drashna/readme_secrets.md
new file mode 100644
index 00000000000..a9408dc2efb
--- /dev/null
+++ b/users/drashna/readme_secrets.md
@@ -0,0 +1,123 @@
+# Secret Macros
+
+With help from gitter and Colinta, this adds the ability to add hidden macros from other users.
+
+First, I have several files that are hidden/excluded from Git/GitHub. These contain everything needed for the macros. To hide these files, open `.git/info/exclude` and add `secrets.c` and `secrets.h` to that file, below the comments.
+
+And this requires `KC_SECRET_1` through `KC_SECRET_5` to be added in your keycode enum (usually in your `.h` file) the keycodes for the new macros.
+
+## Git Exclusion
+
+To prevent `git` from seeing, or committing the secret files, you can exclude them. What's the point of having secrets if they're posted on GitHub for everyone to see!?!
+
+You can do this with the `.git/info/exclude` file, so that it's only ignored locally. Unfortunately, that means it's not consistently handled on each system.
+
+However, if you create a `.gitignore` file in the same folder, you keep things consistent between every system that the code is checked out on.
+
+```c
+secrets.c
+secrets.h
+```
+
+## secrets.c
+
+Here is the magic. This handles including the "secrets", and adding the custom macros to send them.
+
+```c
+#include "drashna.h" // replace with your keymap's "h" file, or whatever file stores the keycodes
+
+#if (__has_include("secrets.h") && !defined(NO_SECRETS))
+#include "secrets.h"
+#else
+// `PROGMEM const char secret[][x]` may work better, but it takes up more space in the firmware
+// And I'm not familiar enough to know which is better or why...
+static const char * const secret[] = {
+ "test1",
+ "test2",
+ "test3",
+ "test4",
+ "test5"
+};
+#endif
+
+bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_SECRET_1 ... KC_SECRET_5: // Secrets! Externally defined strings, not stored in repo
+ if (!record->event.pressed) {
+ clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
+ send_string_with_delay(secret[keycode - KC_SECRET_1], MACRO_TIMER);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+```
+
+## secrets.h
+
+Now, for the actual secrets! The file needs to look like
+
+```c
+static const char * secrets[] = {
+ "secret1",
+ "secret2",
+ "secret3",
+ "secret4",
+ "secret5"
+};
+```
+
+Replacing the strings with the codes that you need.
+
+## Process Record
+
+In whichever file you have your `process_record_*` function in, you will want to add this to the top:
+
+```c
+__attribute__ ((weak))
+bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+```
+
+This is so that the function can be called here, and replaced in the `secrets.c` file, and so it won't error out if it doesn't exist.
+
+And then, in the `process_record_user` function, assuming you have `return process_record_keymap(keycode, record)` here, you'll want to replace the "final" return with the following. Otherwise, you want to replace the `return true;` with `return process_record_secrets(keycode, record);`
+
+```c
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // your existing macro code here.
+ return process_record_keymap(keycode, record) && process_record_secrets(keycode, record);
+}
+```
+
+## rules.mk
+
+Here, you want your `/users//rules.mk` file to "detect" the existence of the `secrets.c` file, and only add it if the file exists.
+
+Additionally, to ensure that it's not added or processed in any way, it checks to see if `NO_SECRETS` is set. This way, if you run `make keyboard:name NO_SECRETS=yes`, it will remove the feature altogether.
+
+```make
+ifneq ($(strip $(NO_SECRETS)), yes)
+ ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
+ SRC += secrets.c
+ endif
+endif
+```
+
+Alternately, if you want to make sure that you can disable the function without messing with the file, you need to add this to your `/users//rules.mk`, so that it catches the flag:
+
+```make
+ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
+ SRC += secrets.c
+endif
+
+ifeq ($(strip $(NO_SECRETS)), yes)
+ OPT_DEFS += -DNO_SECRETS
+endif
+```
+
+## Extras
+
+Additionally, because this file isn't present in the repo at all, you could add additional functionality that nobody else will see.
diff --git a/users/drashna/readme_tap_dance.md b/users/drashna/readme_tap_dance.md
new file mode 100644
index 00000000000..a61dd1f2b08
--- /dev/null
+++ b/users/drashna/readme_tap_dance.md
@@ -0,0 +1,119 @@
+# Diablo Tap Dances
+
+My [Tap Dance](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/tap_dances.c) file includes the tap dance declarations, and everything needed for them.
+
+This is used for making Diablo 3 much easier to plan, especially at high rift levels.
+
+This works by using Tap Dances. The taps don't actually "do anything". Instead, it sets up the interval for how often to send specific keypresses. As you can tell, this makes automating things very easy.
+
+For critics that think this is cheating, just search "[diablo 3 num lock auto cast](http://lmgtfy.com/?q=diablo+3+numlock+autocast)". This is just a simpler method, that doesn't require a numpad.
+
+
+## Custom Tap Dance Type
+The real fun here is that the tap dances use a custom defined Tap Dance type:
+
+```c
+#define ACTION_TAP_DANCE_DIABLO(index, keycode) { \
+ .fn = { NULL, (void *)diablo_tapdance_master, NULL }, \
+ .user_data = (void *)&((diable_keys_t) { index, keycode }), \
+ }
+```
+This lets me set an index and keycode for the tap dance. This isn't the cool part yet, but this allows for the really cool stuff.
+
+The Index is needed because I don't know how to handle it otherwise.
+
+## The Actual Dances
+
+These are the custom defined dances that I'm using. It sets up everything for later, using the above custom dance type.
+
+```c
+//Tap Dance Definitions, sets the index and the keycode.
+qk_tap_dance_action_t tap_dance_actions[] = {
+ // tap once to disable, and more to enable timed micros
+ [TD_D3_1] = ACTION_TAP_DANCE_DIABLO(0, KC_1),
+ [TD_D3_2] = ACTION_TAP_DANCE_DIABLO(1, KC_2),
+ [TD_D3_3] = ACTION_TAP_DANCE_DIABLO(2, KC_3),
+ [TD_D3_4] = ACTION_TAP_DANCE_DIABLO(3, KC_4),
+};
+```
+
+## Custom Data Structures
+
+First, to get this all working, there are a couple of things that need to be set up. In a header file (or you could put it into the keymap), you need to create a couple of custom structures:
+
+```c
+typedef struct {
+ uint16_t timer;
+ uint8_t key_interval;
+ uint8_t keycode;
+} diablo_timer_t;
+
+typedef struct {
+ uint8_t index;
+ uint8_t keycode;
+} diable_keys_t;
+```
+
+The first structure is for tracking each key that is being used. The second is to pass data from the Tap Dance action array to the actual function that we will need.
+
+
+## Custom Arrays
+
+To facilitate things, you will need a couple of arrays in your `c` file.
+
+```c
+//define diablo macro timer variables
+diablo_timer_t diablo_timer[4];
+
+// Set the default intervals. Always start with 0 so that it will disable on first hit.
+// Otherwise, you will need to hit a bunch of times, or hit the "clear" command
+uint8_t diablo_times[] = { 0, 1, 3, 5, 10, 30 };
+```
+
+The first one (`diablo_timer`) is what keeps track of the timer used for the keys, the interval that it uses, and the actual keycode. This makes managing it a lot easier.
+
+The second array is a list of predefined intervals, in seconds. You can add more here, or remove entries. It doesn't matter how long the array is, as this is computed automatically.
+
+## The Magic - Part 1: Master function
+
+The first part of the magic here is the `diablo_tapdance_master` function. The Tap Dance feature calls this function, directly, and passes some data to the function. Namely, it passes the array of the index and the keycode (`diablo_keys_t` from above). This sets the keycode and the interval for the specific index of `diabolo_timer` based on the number of taps. If you hit it more than the number of items in the array, then it zeroes out the interval, disabling it.
+
+```c
+// Cycle through the times for the macro, starting at 0, for disabled.
+void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data) {
+ diable_keys_t *diablo_keys = (diable_keys_t *)user_data;
+ // Sets the keycode based on the index
+ diablo_timer[diablo_keys->index].keycode = diablo_keys->keycode;
+
+ // if the tapdance is hit more than the number of elemints in the array, reset
+ if (state->count >= (sizeof(diablo_times) / sizeof(uint8_t) ) ) {
+ diablo_timer[diablo_keys->index].key_interval = 0;
+ reset_tap_dance(state);
+ } else { // else set the interval (tapdance count starts at 1, array starts at 0, so offset by one)
+ diablo_timer[diablo_keys->index].key_interval = diablo_times[state->count - 1];
+ }
+}
+```
+
+## The Magic - Part 2: The Coup de Grace
+
+The real core here is the `run_diablo_macro_check()` function. You need to call this from `matrix_scan_user`, as this handles the timer check.
+
+Specifically, it runs a check for each index of the timer. It checks to see if it's enabled, and if enough time has passed. If enough time has passed, it resets the timer, and will tap the keycode that you set for that index, but only if the Diablo layer is enabled.
+
+```c
+// Checks each of the 4 timers/keys to see if enough time has elapsed
+void run_diablo_macro_check(void) {
+ for (uint8_t index = 0; index < NUM_OF_DIABLO_KEYS; index++) {
+ // if key_interval is 0, it's disabled, so only run if it's set. If it's set, check the timer.
+ if ( diablo_timer[index].key_interval && timer_elapsed( diablo_timer[index].timer ) > ( diablo_timer[index].key_interval * 1000 ) ) {
+ // reset the timer, since enough time has passed
+ diablo_timer[index].timer = timer_read();
+ // send keycode ONLY if we're on the diablo layer.
+ if (IS_LAYER_ON(_DIABLO)) {
+ tap_code(diablo_timer[index].keycode);
+ }
+ }
+ }
+}
+```
diff --git a/users/drashna/readme_wrappers.md b/users/drashna/readme_wrappers.md
new file mode 100644
index 00000000000..fd62ff1609a
--- /dev/null
+++ b/users/drashna/readme_wrappers.md
@@ -0,0 +1,11 @@
+## Keyboard Layout Templates
+
+This borrows from @jola5's "Not quite neo" code. This allows me to maintain blocks of keymaps in the userspace, so that I can modify the userspace, and this is reflected in all of the keyboards that use it, at once.
+
+This makes adding tap/hold mods, or other special keycodes or functions to all keyboards super easy, as it's done to all of them at once.
+
+The caveat here is that the keymap needs a processor/wrapper, as it doesn't like the substitutions. However, this is as simple as just pushing it through a define. For instance:
+
+`#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)`
+
+Once that's been done and you've switched the keymaps to use the "wrapper", it will read the substitution blocks just fine.
diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c
index 7d364fa6868..12851e2616c 100644
--- a/users/drashna/rgb_stuff.c
+++ b/users/drashna/rgb_stuff.c
@@ -4,77 +4,75 @@
#if defined(RGBLIGHT_ENABLE)
extern rgblight_config_t rgblight_config;
-bool has_initialized;
+bool has_initialized;
#endif
#ifdef RGBLIGHT_ENABLE
-void rgblight_sethsv_default_helper(uint8_t index) {
- rgblight_sethsv_at(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, index);
-}
-#endif // RGBLIGHT_ENABLE
+void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, index); }
+#endif // RGBLIGHT_ENABLE
#ifdef INDICATOR_LIGHTS
void set_rgb_indicators(uint8_t this_mod, uint8_t this_led, uint8_t this_osm) {
if (userspace_config.rgb_layer_change && biton32(layer_state) == 0) {
- if ( (this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1< 10) {
- rgblight_fadeout *light = &lights[light_index];
- litup = true;
+ rgblight_fadeout *light = &lights[light_index];
+ litup = true;
- if (light->life) {
- light->life -= 1;
- if (biton32(layer_state) == 0) {
- sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]);
+ if (light->life) {
+ light->life -= 1;
+ if (biton32(layer_state) == 0) {
+ sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]);
+ }
+ light->timer = timer_read();
+ } else {
+ if (light->enabled && biton32(layer_state) == 0) {
+ rgblight_sethsv_default_helper(light_index);
+ }
+ litup = light->enabled = false;
}
- light->timer = timer_read();
- }
- else {
- if (light->enabled && biton32(layer_state) == 0) {
- rgblight_sethsv_default_helper(light_index);
- }
- litup = light->enabled = false;
- }
}
}
if (litup && biton32(layer_state) == 0) {
@@ -161,39 +157,37 @@ void scan_rgblight_fadeout(void) { // Don't effing change this function .... rgb
}
void start_rgb_light(void) {
-
uint8_t indices[RGBLED_NUM];
- uint8_t indices_count = 0;
- uint8_t min_life = 0xFF;
+ uint8_t indices_count = 0;
+ uint8_t min_life = 0xFF;
uint8_t min_life_index = -1;
- for (uint8_t index = 0 ; index < RGBLED_NUM ; ++index ) {
- if (rgblight_twinkle_is_led_used(index)) { continue; }
- if (lights[index].enabled) {
- if (min_life_index == -1 ||
- lights[index].life < min_life)
- {
- min_life = lights[index].life;
- min_life_index = index;
+ for (uint8_t index = 0; index < RGBLED_NUM; ++index) {
+ if (rgblight_twinkle_is_led_used(index)) {
+ continue;
+ }
+ if (lights[index].enabled) {
+ if (min_life_index == -1 || lights[index].life < min_life) {
+ min_life = lights[index].life;
+ min_life_index = index;
+ }
+ continue;
}
- continue;
- }
- indices[indices_count] = index;
- ++indices_count;
+ indices[indices_count] = index;
+ ++indices_count;
}
uint8_t light_index;
if (!indices_count) {
light_index = min_life_index;
- }
- else {
- light_index = indices[rand() % indices_count];
+ } else {
+ light_index = indices[rand() % indices_count];
}
rgblight_fadeout *light = &lights[light_index];
- light->enabled = true;
- light->timer = timer_read();
- light->life = 0xC0 + rand() % 0x40;
+ light->enabled = true;
+ light->timer = timer_read();
+ light->life = 0xC0 + rand() % 0x40;
light->hue = rgblight_config.hue + (rand() % 0xB4) - 0x54;
@@ -201,7 +195,6 @@ void start_rgb_light(void) {
}
#endif
-
bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
keycode = keycode & 0xFF;
@@ -214,9 +207,12 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
case KC_KP_SLASH ... KC_KP_DOT:
case KC_F13 ... KC_F24:
case KC_AUDIO_MUTE ... KC_MEDIA_REWIND:
- if (record->event.pressed) { start_rgb_light(); }
- return true; break;
-#endif // RGBLIGHT_TWINKLE
+ if (record->event.pressed) {
+ start_rgb_light();
+ }
+ return true;
+ break;
+#endif // RGBLIGHT_TWINKLE
case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
if (record->event.pressed) {
@@ -224,41 +220,48 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
eeconfig_update_user(userspace_config.raw);
if (userspace_config.rgb_layer_change) {
- layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
+ layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
}
}
-#endif // RGBLIGHT_ENABLE
- return false; break;
+#endif // RGBLIGHT_ENABLE
+ return false;
+ break;
#ifdef RGBLIGHT_ENABLE
- case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
- if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
+ case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
+ if (record->event.pressed) { // This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
if (userspace_config.rgb_layer_change) {
userspace_config.rgb_layer_change = false;
xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
eeconfig_update_user(userspace_config.raw);
}
}
- return true; break;
-#endif // RGBLIGHT_ENABLE
- }
+ return true;
+ break;
+#endif // RGBLIGHT_ENABLE
+ }
return true;
}
-
-
void keyboard_post_init_rgb(void) {
#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION)
- if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); }
+ bool is_enabled = rgblight_config.enable;
+ if (userspace_config.rgb_layer_change) {
+ rgblight_enable_noeeprom();
+ }
if (rgblight_config.enable) {
layer_state_set_user(layer_state);
uint16_t old_hue = rgblight_config.hue;
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
for (uint16_t i = 255; i > 0; i--) {
- rgblight_sethsv_noeeprom( ( i + old_hue) % 255, 255, 255);
+ rgblight_sethsv_noeeprom((i + old_hue) % 255, 255, 255);
matrix_scan();
wait_ms(10);
}
}
+ if (!is_enabled) {
+ rgblight_disable_noeeprom();
+ }
+
#endif
layer_state_set_user(layer_state);
}
@@ -266,15 +269,13 @@ void keyboard_post_init_rgb(void) {
void matrix_scan_rgb(void) {
#ifdef RGBLIGHT_TWINKLE
scan_rgblight_fadeout();
-#endif // RGBLIGHT_ENABLE
+#endif // RGBLIGHT_ENABLE
#ifdef INDICATOR_LIGHTS
matrix_scan_indicator();
#endif
-
}
-
layer_state_t layer_state_set_rgb(layer_state_t state) {
#ifdef RGBLIGHT_ENABLE
if (userspace_config.rgb_layer_change) {
@@ -307,40 +308,73 @@ layer_state_t layer_state_set_rgb(layer_state_t state) {
rgblight_sethsv_noeeprom_red();
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
break;
- default: // for any other layers, or the default layer
+ default: // for any other layers, or the default layer
switch (biton32(default_layer_state)) {
case _COLEMAK:
- rgblight_sethsv_noeeprom_magenta(); break;
+ rgblight_sethsv_noeeprom_magenta();
+ break;
case _DVORAK:
- rgblight_sethsv_noeeprom_springgreen(); break;
+ rgblight_sethsv_noeeprom_springgreen();
+ break;
case _WORKMAN:
- rgblight_sethsv_noeeprom_goldenrod(); break;
+ rgblight_sethsv_noeeprom_goldenrod();
+ break;
case _NORMAN:
- rgblight_sethsv_noeeprom_coral(); break;
+ rgblight_sethsv_noeeprom_coral();
+ break;
case _MALTRON:
- rgblight_sethsv_noeeprom_yellow(); break;
+ rgblight_sethsv_noeeprom_yellow();
+ break;
case _EUCALYN:
- rgblight_sethsv_noeeprom_pink(); break;
+ rgblight_sethsv_noeeprom_pink();
+ break;
case _CARPLAX:
- rgblight_sethsv_noeeprom_blue(); break;
+ rgblight_sethsv_noeeprom_blue();
+ break;
default:
- rgblight_sethsv_noeeprom_cyan(); break;
+ rgblight_sethsv_noeeprom_cyan();
+ break;
}
- biton32(state) == _MODS ? rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING) : rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); // if _MODS layer is on, then breath to denote it
+ biton32(state) == _MODS ? rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING) : rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); // if _MODS layer is on, then breath to denote it
break;
}
}
-#endif // RGBLIGHT_ENABLE
+#endif // RGBLIGHT_ENABLE
return state;
}
#ifdef RGB_MATRIX_ENABLE
+# include "lib/lib8tion/lib8tion.h"
extern led_config_t g_led_config;
-void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, uint8_t led_type) {
- for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
- if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
- rgb_matrix_set_color( i, red, green, blue );
+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;
}
}
}
diff --git a/users/drashna/rgb_stuff.h b/users/drashna/rgb_stuff.h
index f5bbd0f3b5f..ce45d6a00bb 100644
--- a/users/drashna/rgb_stuff.h
+++ b/users/drashna/rgb_stuff.h
@@ -1,23 +1,23 @@
#pragma once
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
- #include "rgb_matrix.h"
+# include "rgb_matrix.h"
#endif
typedef struct {
- bool enabled;
- uint8_t hue;
+ bool enabled;
+ uint8_t hue;
uint16_t timer;
- uint8_t life;
+ uint8_t life;
} rgblight_fadeout;
-bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record);
-void scan_rgblight_fadeout(void);
-void keyboard_post_init_rgb(void);
-void matrix_scan_rgb(void);
+bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record);
+void scan_rgblight_fadeout(void);
+void keyboard_post_init_rgb(void);
+void matrix_scan_rgb(void);
layer_state_t layer_state_set_rgb(layer_state_t state);
layer_state_t default_layer_state_set_rgb(layer_state_t state);
-void rgblight_sethsv_default_helper(uint8_t index);
-void rgb_matrix_set_color_all( uint8_t red, uint8_t green, uint8_t blue );
+void rgblight_sethsv_default_helper(uint8_t index);
+void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
-void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, uint8_t led_type);
+void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type);
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index cdb9e543604..b414036a473 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -2,6 +2,7 @@ SRC += drashna.c \
process_records.c
LINK_TIME_OPTIMIZATION_ENABLE = yes
+SPACE_CADET_ENABLE = no
ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
SRC += secrets.c
diff --git a/users/drashna/send_unicode.h b/users/drashna/send_unicode.h
deleted file mode 100644
index 743abc58b42..00000000000
--- a/users/drashna/send_unicode.h
+++ /dev/null
@@ -1,71 +0,0 @@
-#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 {
- THINK, // thinking face 🤔
- GRIN, // grinning face 😊
- SMRK, // smirk 😏
- WEARY, // good shit 😩
- UNAMU, // unamused 😒
-
- SNEK, // snke 🐍
- PENGUIN, // 🐧
- DRAGON, // 🐉
- MONKEY, // 🐒
- CHICK, // 🐥
- BOAR, // 🐗
-
- OKOK, // 👌
- EFFU, // 🖕
- INUP, // 👆
- THUP, // 👍
- THDN, // 👎
-
- BBB, // dat B 🅱
- POO, // poop 💩
- HUNDR, // 100 💯
- EGGPL, // EGGPLANT 🍆
- WATER, // wet 💦
- TUMBLER, // 🥃
-
- LIT, // fire 🔥
- BANG, // ‽
- IRONY, // ⸮
- DEGREE // °
-};
-
-
-const uint32_t PROGMEM unicode_map[] = {
- [THINK] = 0x1F914,
- [GRIN] = 0x1F600,
- [BBB] = 0x1F171,
- [POO] = 0x1F4A9,
- [HUNDR] = 0x1F4AF,
- [SMRK] = 0x1F60F,
- [WEARY] = 0x1F629,
- [EGGPL] = 0x1F346,
- [WATER] = 0x1F4A6,
- [LIT] = 0x1F525,
- [UNAMU] = 0x1F612,
- [SNEK] = 0x1F40D,
- [PENGUIN] = 0x1F427,
- [BOAR] = 0x1F417,
- [MONKEY] = 0x1F412,
- [CHICK] = 0x1F425,
- [DRAGON] = 0x1F409,
- [OKOK] = 0x1F44C,
- [EFFU] = 0x1F595,
- [INUP] = 0x1F446,
- [THDN] = 0x1F44E,
- [THUP] = 0x1F44D,
- [TUMBLER] = 0x1F943,
- [BANG] = 0x0203D,
- [IRONY] = 0x02E2E,
- [DEGREE] = 0x000B0
- };
-#endif // UNICODEMAP_ENABLE
diff --git a/users/drashna/tap_dances.c b/users/drashna/tap_dances.c
index 18ca96e187e..65019ab7512 100644
--- a/users/drashna/tap_dances.c
+++ b/users/drashna/tap_dances.c
@@ -1,65 +1,56 @@
#include "tap_dances.h"
+#define NUM_OF_DIABLO_KEYS 4
+// define diablo macro timer variables
+diablo_timer_t diablo_timer[NUM_OF_DIABLO_KEYS];
-//define diablo macro timer variables
-diablo_timer_t diablo_timer[4];
-
-uint8_t diablo_times[] = { 0, 0, 1, 3, 5, 10, 30 };
-
-// has the correct number of seconds elapsed (as defined by diablo_times)
-bool check_dtimer(uint8_t dtimer) { return (timer_elapsed(diablo_timer[dtimer].key_time) < (diablo_timer[dtimer].timer * 1000)) ? false : true; };
+// Set the default intervals. Always start with 0 so that it will disable on first hit.
+// Otherwise, you will need to hit a bunch of times, or hit the "clear" command
+uint8_t diablo_times[] = {0, 1, 3, 5, 10, 30};
// Cycle through the times for the macro, starting at 0, for disabled.
-// Max of six values, so don't exceed
void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data) {
- int index = (int)user_data;
- if (state->count >= 7) {
- diablo_timer[index].key_time = diablo_times[0];
+ diable_keys_t *diablo_keys = (diable_keys_t *)user_data;
+ // Sets the keycode based on the index
+ diablo_timer[diablo_keys->index].keycode = diablo_keys->keycode;
+
+ // if the tapdance is hit more than the number of elemints in the array, reset
+ if (state->count >= (sizeof(diablo_times) / sizeof(uint8_t))) {
+ diablo_timer[diablo_keys->index].key_interval = 0;
reset_tap_dance(state);
- } else {
- diablo_timer[index].key_time = diablo_times[state->count];
+ } else { // else set the interval (tapdance count starts at 1, array starts at 0, so offset by one)
+ diablo_timer[diablo_keys->index].key_interval = diablo_times[state->count - 1];
}
}
-// One funtion to rule them all!!
-#define ACTION_TAP_DANCE_DIABLO(arg) { \
+// clang-format off
+// One function to rule them all!! Where the Magic Sauce lies
+#define ACTION_TAP_DANCE_DIABLO(index, keycode) { \
.fn = { NULL, (void *)diablo_tapdance_master, NULL }, \
- .user_data = (void *)arg, \
+ .user_data = (void *)&((diable_keys_t) { index, keycode }), \
}
+// clang-format on
-//Tap Dance Definitions
+// Tap Dance Definitions, sets the index and the keycode.
qk_tap_dance_action_t tap_dance_actions[] = {
// tap once to disable, and more to enable timed micros
- [TD_D3_1] = ACTION_TAP_DANCE_DIABLO(0),
- [TD_D3_2] = ACTION_TAP_DANCE_DIABLO(1),
- [TD_D3_3] = ACTION_TAP_DANCE_DIABLO(2),
- [TD_D3_4] = ACTION_TAP_DANCE_DIABLO(3),
+ [TD_D3_1] = ACTION_TAP_DANCE_DIABLO(0, KC_1),
+ [TD_D3_2] = ACTION_TAP_DANCE_DIABLO(1, KC_2),
+ [TD_D3_3] = ACTION_TAP_DANCE_DIABLO(2, KC_3),
+ [TD_D3_4] = ACTION_TAP_DANCE_DIABLO(3, KC_4),
};
-// Sends the key press to system, but only if on the Diablo layer
-void send_diablo_keystroke(uint8_t diablo_key) {
- if (IS_LAYER_ON(_DIABLO)) {
- switch (diablo_key) {
- case 0:
- tap_code(KC_1); break;
- case 1:
- tap_code(KC_2); break;
- case 2:
- tap_code(KC_3); break;
- case 3:
- tap_code(KC_4); break;
- }
- }
-}
-
// Checks each of the 4 timers/keys to see if enough time has elapsed
-// Runs the "send string" command if enough time has passed, and resets the timer.
void run_diablo_macro_check(void) {
- uint8_t dtime;
- for (dtime = 0; dtime < 4; dtime++) {
- if (check_dtimer(dtime) && diablo_timer[dtime].key_time) {
- diablo_timer[dtime].timer = timer_read();
- send_diablo_keystroke(dtime);
+ for (uint8_t index = 0; index < NUM_OF_DIABLO_KEYS; index++) {
+ // if key_interval is 0, it's disabled, so only run if it's set. If it's set, check the timer.
+ if (diablo_timer[index].key_interval && timer_elapsed(diablo_timer[index].timer) > (diablo_timer[index].key_interval * 1000)) {
+ // reset the timer, since enough time has passed
+ diablo_timer[index].timer = timer_read();
+ // send keycode ONLY if we're on the diablo layer.
+ if (IS_LAYER_ON(_DIABLO)) {
+ tap_code(diablo_timer[index].keycode);
+ }
}
}
}
diff --git a/users/drashna/tap_dances.h b/users/drashna/tap_dances.h
index 4a293b25820..44fa0b93487 100644
--- a/users/drashna/tap_dances.h
+++ b/users/drashna/tap_dances.h
@@ -1,22 +1,30 @@
#pragma once
#include "drashna.h"
-//define diablo macro timer variables
+// define diablo macro timer variables
extern uint8_t diablo_times[];
typedef struct {
uint16_t timer;
- uint8_t key_time;
+ uint8_t key_interval;
+ uint8_t keycode;
} diablo_timer_t;
-extern diablo_timer_t diablo_timer[4];
+typedef struct {
+ uint8_t index;
+ uint8_t keycode;
+} diable_keys_t;
+
+extern diablo_timer_t diablo_timer[];
void run_diablo_macro_check(void);
#ifdef TAP_DANCE_ENABLE
+// clang-format off
enum {
TD_D3_1 = 0,
TD_D3_2,
TD_D3_3,
TD_D3_4
};
-#endif // TAP_DANCE_ENABLE
+// clang-format on
+#endif // TAP_DANCE_ENABLE
diff --git a/users/drashna/wrappers.h b/users/drashna/wrappers.h
index 93f842f4b2b..a87247071f3 100644
--- a/users/drashna/wrappers.h
+++ b/users/drashna/wrappers.h
@@ -6,9 +6,10 @@ 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
+# define LAYOUT KEYMAP
#endif
+// clang-format off
#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
@@ -135,6 +136,15 @@ NOTE: These are all the same length. If you do a search/replace
#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
+#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
+
+
#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
@@ -170,3 +180,5 @@ NOTE: These are all the same length. If you do a search/replace
#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5
#define _________________ADJUST_R2_________________ AG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN
#define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT
+
+// clang-format on
diff --git a/users/jarred/jarred.h b/users/jarred/jarred.h
index ae48adb70c1..49b1253be5f 100644
--- a/users/jarred/jarred.h
+++ b/users/jarred/jarred.h
@@ -50,6 +50,7 @@ enum {
// Wrappers
#define LAYOUT_planck_grid_wrapper(...) LAYOUT_planck_grid(__VA_ARGS__)
+#define LAYOUT_plaid_grid_wrapper(...) LAYOUT_plaid_grid(__VA_ARGS__)
#define LAYOUT_atreus62_grid_wrapper(...) LAYOUT(__VA_ARGS__)
#define LAYOUT_ergotravel_grid_wrapper(...) LAYOUT(__VA_ARGS__)
diff --git a/users/jarred/readme.md b/users/jarred/readme.md
index 9d4e926e743..e2f44219b01 100644
--- a/users/jarred/readme.md
+++ b/users/jarred/readme.md
@@ -2,4 +2,13 @@
Keymaps:
-- [Planck](../../keyboards/planck/keymaps/jarred/readme.md)
+- [Ortho 4x12](../../layouts/community/ortho_4x12/jarred/readme.md)
+
+- [CRKBD](../../keyboards/crkbd/keymaps/jarred/readme.md)
+- [Atreus 62](../../keyboards/ergotravel/keymaps/jarred/readme.md)
+- [ErgoTravel](../../keyboards/ergotravel/keymaps/jarred/readme.md)
+- [xd75](../../keyboards/xd75/keymaps/jarred/readme.md)
+
+- [satan](../../keyboards/satan/keymaps/jarred/readme.md)
+- [dz60](../../keyboards/dz60/keymaps/jarred/readme.md)
+- [org60](../../keyboards/org60/keymaps/jarred/readme.md)
diff --git a/users/konstantin/config.h b/users/konstantin/config.h
index 4edab2baabe..d712e79d3f5 100644
--- a/users/konstantin/config.h
+++ b/users/konstantin/config.h
@@ -13,6 +13,12 @@
#define NO_ACTION_MACRO
#define NO_ACTION_ONESHOT
+#undef RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+
#define PERMISSIVE_HOLD
#define TAPPING_TERM 200
#define TAPPING_TOGGLE 2
diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c
index 9e3caca4147..c56c9490fcd 100644
--- a/users/konstantin/konstantin.c
+++ b/users/konstantin/konstantin.c
@@ -32,26 +32,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
switch (keycode) {
- case CLEAR:
- if (record->event.pressed) {
- SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
- }
- return false;
-
- case DST_P_R:
- (record->event.pressed ? register_code16 : unregister_code16)(
- (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV
- );
- return false;
-
- case DST_N_A:
- (record->event.pressed ? register_code16 : unregister_code16)(
- (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT
- );
- return false;
-
+ uint16_t kc;
#ifdef LAYER_FN
- static bool fn_lock;
+ static bool fn_lock = false;
case FN_FNLK:
if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
@@ -77,6 +60,28 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return true;
+ case CLEAR:
+ if (record->event.pressed) {
+ CLEAN_MODS(
+ SEND_STRING(SS_LCTRL("a") SS_TAP(X_DELETE));
+ )
+ }
+ return false;
+
+ case DST_P_R:
+ kc = (get_mods() & DST_MOD_MASK) ? DST_REM : DST_PRV;
+ CLEAN_MODS(
+ (record->event.pressed ? register_code16 : unregister_code16)(kc);
+ )
+ return false;
+
+ case DST_N_A:
+ kc = (get_mods() & DST_MOD_MASK) ? DST_ADD : DST_NXT;
+ CLEAN_MODS(
+ (record->event.pressed ? register_code16 : unregister_code16)(kc);
+ )
+ return false;
+
default:
return true;
}
@@ -91,7 +96,7 @@ uint32_t layer_state_set_user(uint32_t state) {
state = layer_state_set_keymap(state);
#ifdef LAYER_NUMPAD
- bool numpad = state & 1UL<event.pressed) {
+ if (get_mods() & MOD_MASK_SHIFT) {
+ rgb_encoder_state = (rgb_encoder_state - 1);
+ if (rgb_encoder_state >= RGB_FUNCTION_COUNT)
+ rgb_encoder_state = RGB_FUNCTION_COUNT - 1;
+ } else {
+ rgb_encoder_state = (rgb_encoder_state + 1) % RGB_FUNCTION_COUNT;
+ }
+ }
+ return false;
+ }
+ return true;
+}
+#endif // RGB_OLED_MENU
-#ifdef ENCODER_ENABLE
const uint16_t PROGMEM encoders[][2] = {
{ KC_PGUP, KC_PGDN },
- { KC_DOWN, KC_UP }
-}
+ { KC_VOLU, KC_VOLD }
+};
void encoder_update_user(uint8_t index, bool clockwise)
{
- tap_code16(pgm_read_word(&encoders[index][clockwise]));
+ if (!is_keyboard_master())
+ return;
+
+#ifdef RGB_OLED_MENU
+ if (index == RGB_OLED_MENU)
+ (*rgb_functions[rgb_encoder_state][clockwise])();
+ else
+#endif // RGB_OLED_MENU
+ tap_code16(pgm_read_word(&encoders[index][clockwise]));
}
-#endif
diff --git a/users/xulkal/custom_keycodes.h b/users/xulkal/custom_keycodes.h
index d4ae0bd477b..7ced92bf4ce 100644
--- a/users/xulkal/custom_keycodes.h
+++ b/users/xulkal/custom_keycodes.h
@@ -9,6 +9,9 @@ enum custom_keycodes {
TD_DEL,
TD_DOT,
TD_MAX,
+#endif
+#ifdef ENCODER_ENABLE
+ RGB_ENC,
#endif
KEYMAP_SAFE_RANGE
};
@@ -26,3 +29,12 @@ enum custom_keycodes {
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
+
+
+#ifdef ENCODER_ENABLE
+#define KC_ENC1 RGB_ENC
+#define KC_ENC2 KC_MPLY
+#else
+#define KC_ENC1 RGB_RMOD
+#define KC_ENC2 RGB_MOD
+#endif
diff --git a/users/xulkal/custom_oled.c b/users/xulkal/custom_oled.c
index 7280ef7019f..448e6ca107e 100644
--- a/users/xulkal/custom_oled.c
+++ b/users/xulkal/custom_oled.c
@@ -3,12 +3,15 @@
#include
-#ifdef OLED_DRIVER_ENABLE
-
#ifdef RGBLIGHT_ENABLE
rgblight_config_t rgblight_config;
#endif
+#if KEYBOARD_helix_rev2
+extern uint8_t is_master;
+bool is_keyboard_master(void) { return is_master; }
+#endif
+
static void render_logo(void)
{
static const char PROGMEM font_logo[] = {
@@ -18,21 +21,38 @@ static void render_logo(void)
oled_write_P(font_logo, false);
}
-#if defined(OLED_90ROTATION)
-
-// TODO: Need to define this function / extern only for helix based split common keyboards
-extern uint8_t is_master;
-bool is_keyboard_master(void)
+static void render_icon(void)
{
- return is_master;
+#ifdef OLED_90ROTATION
+ static const char PROGMEM font_icon[] = {
+ 0x9b,0x9c,0x9d,0x9e,0x9f,
+ 0xbb,0xbc,0xbd,0xbe,0xbf,
+ 0xdb,0xdc,0xdd,0xde,0xdf,0
+ };
+#else
+ static const char PROGMEM font_icon[] = {
+ // Use \r (0x0d) to jump to the next line without clearing the rest of the current line
+ 0x9b,0x9c,0x9d,0x9e,0x9f,0x0d,
+ 0xbb,0xbc,0xbd,0xbe,0xbf,0x0d,
+ 0xdb,0xdc,0xdd,0xde,0xdf,0
+ };
+#endif
+ oled_write_P(font_icon, false);
}
-static void render_layer(uint8_t layer)
+static void render_layer(void)
{
+ uint8_t layer = layer_state ? biton(layer_state) : biton32(default_layer_state);
+#ifdef OLED_90ROTATION
+ oled_write_P(PSTR("Layer"), false);
+#else
+ oled_write_P(PSTR("Layer: "), false);
+#endif
+
switch (layer)
{
case _QWERTY:
- oled_write_P(PSTR("DFLT "), false);
+ oled_write_P(PSTR("BASE "), false);
break;
#ifndef GAMELAYER_DISABLE
case _GAME:
@@ -53,125 +73,110 @@ static void render_layer(uint8_t layer)
}
}
+static void render_keyboard_leds(void)
+{
+ // Host Keyboard LED Status
+ uint8_t led_state = host_keyboard_leds();
+#ifdef OLED_90ROTATION
+ oled_write_P(IS_LED_ON(led_state, USB_LED_NUM_LOCK) ? PSTR("NUMLK") : PSTR(" "), false);
+ oled_write_P(IS_LED_ON(led_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLK") : PSTR(" "), false);
+ oled_write_P(IS_LED_ON(led_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLK") : PSTR(" "), false);
+#else
+ oled_write_P(IS_LED_ON(led_state, USB_LED_NUM_LOCK) ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(IS_LED_ON(led_state, USB_LED_CAPS_LOCK) ? PSTR("CAPS ") : PSTR(" "), false);
+ oled_write_P(IS_LED_ON(led_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRL") : PSTR(" "), false);
+#endif
+}
+
+#ifdef RGB_OLED_MENU
+extern uint8_t rgb_encoder_state;
+#endif
+
+#if defined(OLED_90ROTATION)
+
+#ifdef RGB_ENABLE
+static void render_rgb_state(void)
+{
+ // TODO: need to do a bit more handling here for horizontal rendering
+#if defined(RGB_MATRIX_ENABLE)
+ static char buffer[31] = {0};
+ snprintf(buffer, sizeof(buffer), "h%3d s%3d v%3d s%3d m%3d e%3d ", rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v, rgb_matrix_config.speed, rgb_matrix_config.mode, rgb_matrix_get_flags());
+#elif defined(RGBLIGHT_ENABLE)
+ static char buffer[26] = {0};
+ snprintf(buffer, sizeof(buffer), "h%3d s%3d v%3d s%3d m%3d ", rgblight_config.hue, rgblight_config.sat, rgblight_config.val, rgblight_config.speed, rgblight_config.mode);
+#endif
+
+#ifdef RGB_OLED_MENU
+ buffer[4 + rgb_encoder_state * 5] = '<';
+#endif
+ oled_write(buffer, false);
+}
+#endif
+
static void render_status(void)
{
- // Render to mode icon
- static const char PROGMEM mode_logo[2][4] = {
- {0x97,0x98,0x0a,0},
- {0xb7,0xb8,0x0a,0} };
-
- oled_write_P(mode_logo[0], false);
- oled_write_P(mode_logo[1], false);
-
- oled_write_P(PSTR("Layer"), false);
- uint8_t layer = biton(layer_state);
- if (layer != _QWERTY)
- render_layer(layer);
- else
- render_layer(biton32(default_layer_state));
+ render_icon();
+ render_layer();
// Host Keyboard LED Status
- uint8_t led_usb_state = host_keyboard_leds();
- oled_write_P(led_usb_state & (1<event.pressed)
- {
- eeconfig_update_rgblight_default();
- rgblight_enable();
- }
-#elif defined(RGB_MATRIX_ENABLE)
- if (record->event.pressed)
- eeconfig_update_rgb_matrix_default();
+#ifdef RGB_ENABLE
+ if (record->event.pressed)
+ rgb_reset();
#endif
- }
return false;
case RESET:
{
@@ -42,9 +38,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record)
reset_keyboard();
}
return false;
+#ifdef RGB_MATRIX_TOG_LAYERS
+ case RGB_TOG:
+ if (record->event.pressed) {
+ rgb_matrix_decrease_flags();
+ }
+ return false;
+#endif
}
- return process_record_keymap(keycode, record);
+ return process_record_encoder(keycode, record) && process_record_keymap(keycode, record);
}
__attribute__ ((weak))
@@ -52,3 +55,9 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record)
{
return true;
}
+
+__attribute__ ((weak))
+bool process_record_encoder(uint16_t keycode, keyrecord_t *record)
+{
+ return true;
+}
diff --git a/users/xulkal/process_records.h b/users/xulkal/process_records.h
index 701ef7e74f3..c219394f8e4 100644
--- a/users/xulkal/process_records.h
+++ b/users/xulkal/process_records.h
@@ -15,3 +15,4 @@ enum layer_number {
};
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
+bool process_record_encoder(uint16_t keycode, keyrecord_t *record);
diff --git a/users/xulkal/rules.mk b/users/xulkal/rules.mk
index ab0231d7dcf..c3834ff5f0b 100644
--- a/users/xulkal/rules.mk
+++ b/users/xulkal/rules.mk
@@ -1,8 +1,6 @@
SRC += xulkal.c \
process_records.c \
custom_tap_dance.c \
- custom_encoder.c \
- custom_oled.c \
timer_utils.c
# Some usual defaults
@@ -15,3 +13,21 @@ ifneq ($(strip $(DISABLE_LTO)), yes)
OPT_DEFS += -DNO_ACTION_MACRO
OPT_DEFS += -DNO_ACTION_FUNCTION
endif
+
+ifeq ($(strip $(ENCODER_ENABLE)), yes)
+ SRC += custom_encoder.c
+endif
+
+ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
+ OPT_DEFS += -DRGB_ENABLE
+ SRC += custom_rgb.c
+endif
+
+ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
+ OPT_DEFS += -DRGB_ENABLE
+ SRC += custom_rgb.c
+endif
+
+ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
+ SRC += custom_oled.c
+endif
diff --git a/util/win_shared_install.sh b/util/win_shared_install.sh
index c7517881eee..f8fc9308f45 100755
--- a/util/win_shared_install.sh
+++ b/util/win_shared_install.sh
@@ -34,7 +34,7 @@ function install_drivers {
pushd "$download_dir"
cp -f "$dir/drivers.txt" .
echo
- cmd.exe /c "qmk_driver_installer.exe $1 $2 drivers.txt"
+ cmd.exe //c "qmk_driver_installer.exe $1 $2 drivers.txt"
popd > /dev/null
}