aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builddefs/common_features.mk2
-rw-r--r--builddefs/common_rules.mk39
-rw-r--r--data/constants/keycodes/keycodes_0.0.6.hjson0
-rw-r--r--data/constants/keycodes/keycodes_0.0.6_connection.hjson109
-rw-r--r--data/constants/keycodes/keycodes_0.0.6_quantum.hjson7
-rw-r--r--docs/features/bluetooth.md10
-rw-r--r--docs/keycodes.md10
-rw-r--r--docs/other_vscode.md5
-rw-r--r--drivers/sensors/adns5050.c15
-rw-r--r--drivers/sensors/adns5050.h1
-rw-r--r--keyboards/cutie_club/fidelity/keyboard.json453
-rw-r--r--keyboards/cutie_club/fidelity/keymaps/default/keymap.c4
-rw-r--r--keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c9
-rw-r--r--quantum/keycodes.h40
-rw-r--r--quantum/process_keycode/process_connection.c36
-rw-r--r--quantum/process_keycode/process_connection.h9
-rw-r--r--quantum/quantum.c21
-rw-r--r--quantum/quantum_keycodes_legacy.h2
-rw-r--r--quantum/rgb_matrix/rgb_matrix.c5
-rw-r--r--readme.md4
-rw-r--r--tests/test_common/keycode_table.cpp17
-rw-r--r--util/uf2families.json80
22 files changed, 726 insertions, 152 deletions
diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk
index 498614dd26..c1cdd5d886 100644
--- a/builddefs/common_features.mk
+++ b/builddefs/common_features.mk
@@ -881,7 +881,7 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
OPT_DEFS += -DBLUETOOTH_$(strip $(shell echo $(BLUETOOTH_DRIVER) | tr '[:lower:]' '[:upper:]'))
NO_USB_STARTUP_CHECK := yes
COMMON_VPATH += $(DRIVER_PATH)/bluetooth
- SRC += outputselect.c
+ SRC += outputselect.c process_connection.c
ifeq ($(strip $(BLUETOOTH_DRIVER)), bluefruit_le)
SPI_DRIVER_REQUIRED = yes
diff --git a/builddefs/common_rules.mk b/builddefs/common_rules.mk
index cfd261737c..cc7d5a76d3 100644
--- a/builddefs/common_rules.mk
+++ b/builddefs/common_rules.mk
@@ -43,6 +43,18 @@ ifneq ($(USE_CCACHE),no)
CC_PREFIX ?= ccache
endif
+#---------------- Debug Options ----------------
+
+DEBUG_ENABLE ?= no
+ifeq ($(strip $(DEBUG_ENABLE)),yes)
+ CFLAGS += -ggdb3
+ CXXFLAGS += -ggdb3
+ ASFLAGS += -ggdb3
+# Create a map file when debugging
+ LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref
+endif
+
+
#---------------- C Compiler Options ----------------
ifeq ($(strip $(LTO_ENABLE)), yes)
@@ -54,14 +66,6 @@ ifeq ($(strip $(LTO_ENABLE)), yes)
CDEFS += -DLTO_ENABLE
endif
-DEBUG_ENABLE ?= yes
-ifeq ($(strip $(SKIP_DEBUG_INFO)),yes)
- DEBUG_ENABLE=no
-endif
-
-ifeq ($(strip $(DEBUG_ENABLE)),yes)
- CFLAGS += -g$(DEBUG)
-endif
CFLAGS += $(CDEFS)
CFLAGS += -O$(OPT)
# add color
@@ -83,9 +87,6 @@ CFLAGS += -fcommon
#---------------- C++ Compiler Options ----------------
-ifeq ($(strip $(DEBUG_ENABLE)),yes)
- CXXFLAGS += -g$(DEBUG)
-endif
CXXFLAGS += $(CXXDEFS)
CXXFLAGS += -O$(OPT)
# to suppress "warning: only initialized variables can be placed into program memory area"
@@ -106,14 +107,10 @@ endif
#---------------- Linker Options ----------------
-CREATE_MAP ?= yes
-ifeq ($(CREATE_MAP),yes)
- LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref
-endif
ifeq ($(VERBOSE_LD_CMD),yes)
LDFLAGS += -v
endif
-#LDFLAGS += -Wl,--relax
+
LDFLAGS += $(EXTMEMOPTS)
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
LDFLAGS += -lm
@@ -126,15 +123,11 @@ ADHLNS_ENABLE ?= no
ifeq ($(ADHLNS_ENABLE),yes)
# Avoid "Options to '-Xassembler' do not match" - only specify assembler options at LTO link time
ifeq ($(strip $(LTO_ENABLE)), yes)
- LDFLAGS += -Wa,-adhlns=$(BUILD_DIR)/$(TARGET).lst
+ LDFLAGS += -Wa,-adhlns=$(BUILD_DIR)/$(TARGET).lst
else
- CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
+ CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
CXXFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
- ifeq ($(strip $(DEBUG_ENABLE)),yes)
- ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100
- else
- ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100
- endif
+ ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100
endif
endif
diff --git a/data/constants/keycodes/keycodes_0.0.6.hjson b/data/constants/keycodes/keycodes_0.0.6.hjson
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.6.hjson
diff --git a/data/constants/keycodes/keycodes_0.0.6_connection.hjson b/data/constants/keycodes/keycodes_0.0.6_connection.hjson
new file mode 100644
index 0000000000..9a1a750f1a
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.6_connection.hjson
@@ -0,0 +1,109 @@
+{
+ "ranges": {
+ "0x7780/0x003F": {
+ "define": "QK_CONNECTION"
+ }
+ }
+ "keycodes": {
+ "0x7780": {
+ "group": "connection",
+ "key": "QK_OUTPUT_NEXT",
+ "aliases": [
+ "OU_NEXT",
+ "OU_AUTO"
+ ]
+ },
+ "0x7781": {
+ "group": "connection",
+ "key": "QK_OUTPUT_PREV",
+ "aliases": [
+ "OU_PREV"
+ ]
+ },
+ "0x7782": {
+ "group": "connection",
+ "key": "QK_OUTPUT_NONE",
+ "aliases": [
+ "OU_NONE"
+ ]
+ },
+ "0x7783": {
+ "group": "connection",
+ "key": "QK_OUTPUT_USB",
+ "aliases": [
+ "OU_USB"
+ ]
+ },
+ "0x7784": {
+ "group": "connection",
+ "key": "QK_OUTPUT_2P4GHZ",
+ "aliases": [
+ "OU_2P4G"
+ ]
+ },
+ "0x7785": {
+ "group": "connection",
+ "key": "QK_OUTPUT_BLUETOOTH",
+ "aliases": [
+ "OU_BT"
+ ]
+ },
+
+ "0x7790": {
+ "group": "connection",
+ "key": "QK_BLUETOOTH_PROFILE_NEXT",
+ "aliases": [
+ "BT_NEXT"
+ ]
+ },
+ "0x7791": {
+ "group": "connection",
+ "key": "QK_BLUETOOTH_PROFILE_PREV",
+ "aliases": [
+ "BT_PREV"
+ ]
+ },
+ "0x7792": {
+ "group": "connection",
+ "key": "QK_BLUETOOTH_UNPAIR",
+ "aliases": [
+ "BT_UNPR"
+ ]
+ }
+ "0x7793": {
+ "group": "connection",
+ "key": "QK_BLUETOOTH_PROFILE1",
+ "aliases": [
+ "BT_PRF1"
+ ]
+ },
+ "0x7794": {
+ "group": "connection",
+ "key": "QK_BLUETOOTH_PROFILE2",
+ "aliases": [
+ "BT_PRF2"
+ ]
+ },
+ "0x7795": {
+ "group": "connection",
+ "key": "QK_BLUETOOTH_PROFILE3",
+ "aliases": [
+ "BT_PRF3"
+ ]
+ },
+ "0x7796": {
+ "group": "connection",
+ "key": "QK_BLUETOOTH_PROFILE4",
+ "aliases": [
+ "BT_PRF4"
+ ]
+ },
+ "0x7797": {
+ "group": "connection",
+ "key": "QK_BLUETOOTH_PROFILE5",
+ "aliases": [
+ "BT_PRF5"
+ ]
+ },
+ }
+}
diff --git a/data/constants/keycodes/keycodes_0.0.6_quantum.hjson b/data/constants/keycodes/keycodes_0.0.6_quantum.hjson
new file mode 100644
index 0000000000..814cd66a5b
--- /dev/null
+++ b/data/constants/keycodes/keycodes_0.0.6_quantum.hjson
@@ -0,0 +1,7 @@
+{
+ "keycodes": {
+ "0x7C20": "!delete!", // old QK_OUTPUT_AUTO
+ "0x7C21": "!delete!", // old QK_OUTPUT_USB
+ "0x7C22": "!delete!", // old QK_OUTPUT_BLUETOOTH
+ }
+}
diff --git a/docs/features/bluetooth.md b/docs/features/bluetooth.md
index 1dbf15f4e1..d3634498be 100644
--- a/docs/features/bluetooth.md
+++ b/docs/features/bluetooth.md
@@ -39,8 +39,8 @@ BLUETOOTH_DRIVER = bluefruit_le # or rn42
This is used when multiple keyboard outputs can be selected. Currently this only allows for switching between USB and Bluetooth on keyboards that support both.
-|Key |Aliases |Description |
-|---------------------|---------|----------------------------------------------|
-|`QK_OUTPUT_AUTO` |`OU_AUTO`|Automatically switch between USB and Bluetooth|
-|`QK_OUTPUT_USB` |`OU_USB` |USB only |
-|`QK_OUTPUT_BLUETOOTH`|`OU_BT` |Bluetooth only |
+| Key | Aliases | Description |
+|-----------------------|----------------------|------------------------------------------------|
+| `QK_OUTPUT_NEXT` | `OU_NEXT`, `OU_AUTO` | Automatically switch between USB and Bluetooth |
+| `QK_OUTPUT_USB` | `OU_USB` | USB only |
+| `QK_OUTPUT_BLUETOOTH` | `OU_BT` | Bluetooth only |
diff --git a/docs/keycodes.md b/docs/keycodes.md
index 9038c2b6d7..9107ca5eb8 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -294,11 +294,11 @@ See also: [Backlighting](features/backlight)
See also: [Bluetooth](features/bluetooth)
-|Key |Aliases |Description |
-|---------------------|---------|----------------------------------------------|
-|`QK_OUTPUT_AUTO` |`OU_AUTO`|Automatically switch between USB and Bluetooth|
-|`QK_OUTPUT_USB` |`OU_USB` |USB only |
-|`QK_OUTPUT_BLUETOOTH`|`OU_BT` |Bluetooth only |
+| Key | Aliases | Description |
+|-----------------------|----------------------|------------------------------------------------|
+| `QK_OUTPUT_NEXT` | `OU_NEXT`, `OU_AUTO` | Automatically switch between USB and Bluetooth |
+| `QK_OUTPUT_USB` | `OU_USB` | USB only |
+| `QK_OUTPUT_BLUETOOTH` | `OU_BT` | Bluetooth only |
## Caps Word {#caps-word}
diff --git a/docs/other_vscode.md b/docs/other_vscode.md
index 31208d8f3b..ab2b23e96b 100644
--- a/docs/other_vscode.md
+++ b/docs/other_vscode.md
@@ -177,12 +177,13 @@ You'll need to perform some modifications to the file above in order to target y
Windows builds of QMK Firmware are generally compiled using QMK MSYS, and the path to gdb's location (`C:\\QMK_MSYS\\mingw64\\bin`) needs to be specified under `armToolchainPath` for it to be detected. You may also need to change the GDB path to point at `C:\\QMK_MSYS\\mingw64\\bin\\gdb-multiarch.exe` in the VSCode Cortex-Debug user settings: ![VSCode Settings](https://i.imgur.com/EGrPM1L.png)
:::
-Optionally, the following modifications should also be made to the keyboard's `rules.mk` file to disable optimisations -- not strictly required but will ensure breakpoints and variable viewing works correctly:
+The following modifications must be made to the keyboard's `rules.mk` file to enable debug information and disable optimisations -- this will ensure breakpoints and variable viewing works correctly:
```makefile
+# Enable debug information in the final binaries
+DEBUG_ENABLE = yes
# Disable optimisations for debugging purposes
LTO_ENABLE = no
OPT = g
-DEBUG = 3
```
At this point, you should build and flash your firmware through normal methods (`qmk compile ...` and `qmk flash ...`).
diff --git a/drivers/sensors/adns5050.c b/drivers/sensors/adns5050.c
index 97daa8db09..f28a5dcc45 100644
--- a/drivers/sensors/adns5050.c
+++ b/drivers/sensors/adns5050.c
@@ -45,6 +45,8 @@
#define REG_MOTION_BURST 0x63
// clang-format on
+static bool powered_down = false;
+
void adns5050_init(void) {
// Initialize the ADNS serial pins.
gpio_set_pin_output(ADNS5050_SCLK_PIN);
@@ -59,6 +61,8 @@ void adns5050_init(void) {
// this ensures that the adns is actuall ready after reset.
wait_ms(55);
+ powered_down = false;
+
// read a burst from the adns and then discard it.
// gets the adns ready for write commands
// (for example, setting the dpi).
@@ -163,6 +167,10 @@ report_adns5050_t adns5050_read_burst(void) {
data.dx = 0;
data.dy = 0;
+ if (powered_down) {
+ return data;
+ }
+
adns5050_serial_write(REG_MOTION_BURST);
// We don't need a minimum tSRAD here. That's because a 4ms wait time is
@@ -211,3 +219,10 @@ bool adns5050_check_signature(void) {
return (pid == 0x12 && rid == 0x01 && pid2 == 0x26);
}
+
+void adns5050_power_down(void) {
+ if (!powered_down) {
+ powered_down = true;
+ adns5050_write_reg(REG_MOUSE_CONTROL, 0b10);
+ }
+}
diff --git a/drivers/sensors/adns5050.h b/drivers/sensors/adns5050.h
index 8ef0f7cc7c..586f16b590 100644
--- a/drivers/sensors/adns5050.h
+++ b/drivers/sensors/adns5050.h
@@ -83,3 +83,4 @@ void adns5050_set_cpi(uint16_t cpi);
uint16_t adns5050_get_cpi(void);
int8_t convert_twoscomp(uint8_t data);
bool adns5050_check_signature(void);
+void adns5050_power_down(void);
diff --git a/keyboards/cutie_club/fidelity/keyboard.json b/keyboards/cutie_club/fidelity/keyboard.json
index 47e7789506..905460d64e 100644
--- a/keyboards/cutie_club/fidelity/keyboard.json
+++ b/keyboards/cutie_club/fidelity/keyboard.json
@@ -1,107 +1,390 @@
{
- "keyboard_name": "Fidelity",
"manufacturer": "HAND x KOEN",
+ "keyboard_name": "Fidelity",
"maintainer": "Cutie Club",
- "url": "",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
- "mousekey": true,
- "extrakey": true,
"command": false,
- "console": false
+ "console": false,
+ "extrakey": true,
+ "mousekey": true
},
+ "indicators": {
+ "caps_lock": "B4"
+ },
+ "matrix_pins": {
+ "cols": ["A7", "A6", "A5", "A4", "A3", "A9", "A8", "B15", "B14", "B13", "B12", "B11", "B10", "B2", "B1", "B0"],
+ "rows": ["A15", "B3", "B5", "B6", "B7"]
+ },
+ "processor": "STM32F072",
"qmk": {
"locking": {
"enabled": true,
"resync": true
}
},
+ "url": "",
"usb": {
- "vid": "0xFB9C",
+ "device_version": "0.0.1",
"pid": "0x4D1B",
- "device_version": "0.0.1"
+ "vid": "0xFB9C"
},
- "processor": "STM32F072",
- "bootloader": "stm32-dfu",
- "diode_direction": "COL2ROW",
- "matrix_pins": {
- "cols": [ "A7", "A6", "A5", "A4", "A3", "A9", "A8", "B15", "B14", "B13", "B12", "B11", "B10", "B2", "B1", "B0" ],
- "rows": [ "A15", "B3", "B5", "B6", "B7" ]
- },
- "indicators": {
- "caps_lock": "B4"
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_all"
},
"layouts": {
- "LAYOUT": {
+ "LAYOUT_65_ansi_bauer": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"matrix": [0, 15], "x": 15, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"matrix": [1, 15], "x": 15, "y": 1},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
+ {"matrix": [2, 15], "x": 15, "y": 2},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"matrix": [3, 14], "x": 14, "y": 3},
+ {"matrix": [3, 15], "x": 15, "y": 3},
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 7},
+ {"matrix": [4, 11], "x": 10.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 13], "x": 13, "y": 4},
+ {"matrix": [4, 14], "x": 14, "y": 4},
+ {"matrix": [4, 15], "x": 15, "y": 4}
+ ]
+ },
+ "LAYOUT_65_ansi_bauer_split_bs": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [0, 14], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"matrix": [1, 15], "x": 15, "y": 1},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
+ {"matrix": [2, 15], "x": 15, "y": 2},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"matrix": [3, 14], "x": 14, "y": 3},
+ {"matrix": [3, 15], "x": 15, "y": 3},
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 7},
+ {"matrix": [4, 11], "x": 10.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 13], "x": 13, "y": 4},
+ {"matrix": [4, 14], "x": 14, "y": 4},
+ {"matrix": [4, 15], "x": 15, "y": 4}
+ ]
+ },
+ "LAYOUT_65_iso_bauer": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"matrix": [0, 15], "x": 15, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 15], "x": 15, "y": 1},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 12], "x": 12.75, "y": 2},
+ {"matrix": [1, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"matrix": [2, 15], "x": 15, "y": 2},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"matrix": [3, 14], "x": 14, "y": 3},
+ {"matrix": [3, 15], "x": 15, "y": 3},
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 7},
+ {"matrix": [4, 11], "x": 10.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 13], "x": 13, "y": 4},
+ {"matrix": [4, 14], "x": 14, "y": 4},
+ {"matrix": [4, 15], "x": 15, "y": 4}
+ ]
+ },
+ "LAYOUT_65_iso_bauer_split_bs": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [0, 14], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 15], "x": 15, "y": 1},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 12], "x": 12.75, "y": 2},
+ {"matrix": [1, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"matrix": [2, 15], "x": 15, "y": 2},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"matrix": [3, 14], "x": 14, "y": 3},
+ {"matrix": [3, 15], "x": 15, "y": 3},
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 7},
+ {"matrix": [4, 11], "x": 10.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 13], "x": 13, "y": 4},
+ {"matrix": [4, 14], "x": 14, "y": 4},
+ {"matrix": [4, 15], "x": 15, "y": 4}
+ ]
+ },
+ "LAYOUT_all": {
"layout": [
- { "matrix": [0, 0], "x": 0, "y": 0 },
- { "matrix": [0, 1], "x": 1, "y": 0 },
- { "matrix": [0, 2], "x": 2, "y": 0 },
- { "matrix": [0, 3], "x": 3, "y": 0 },
- { "matrix": [0, 4], "x": 4, "y": 0 },
- { "matrix": [0, 5], "x": 5, "y": 0 },
- { "matrix": [0, 6], "x": 6, "y": 0 },
- { "matrix": [0, 7], "x": 7, "y": 0 },
- { "matrix": [0, 8], "x": 8, "y": 0 },
- { "matrix": [0, 9], "x": 9, "y": 0 },
- { "matrix": [0, 10], "x": 10, "y": 0 },
- { "matrix": [0, 11], "x": 11, "y": 0 },
- { "matrix": [0, 12], "x": 12, "y": 0 },
- { "matrix": [0, 13], "x": 13, "y": 0 },
- { "matrix": [0, 14], "x": 14, "y": 0 },
- { "matrix": [0, 15], "x": 15, "y": 0 },
- { "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 },
- { "matrix": [1, 1], "x": 1.5, "y": 1 },
- { "matrix": [1, 2], "x": 2.5, "y": 1 },
- { "matrix": [1, 3], "x": 3.5, "y": 1 },
- { "matrix": [1, 4], "x": 4.5, "y": 1 },
- { "matrix": [1, 5], "x": 5.5, "y": 1 },
- { "matrix": [1, 6], "x": 6.5, "y": 1 },
- { "matrix": [1, 7], "x": 7.5, "y": 1 },
- { "matrix": [1, 8], "x": 8.5, "y": 1 },
- { "matrix": [1, 9], "x": 9.5, "y": 1 },
- { "matrix": [1, 10], "x": 10.5, "y": 1 },
- { "matrix": [1, 11], "x": 11.5, "y": 1 },
- { "matrix": [1, 12], "x": 12.5, "y": 1 },
- { "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5 },
- { "matrix": [1, 15], "x": 15, "y": 1 },
- { "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 },
- { "matrix": [2, 1], "x": 1.75, "y": 2 },
- { "matrix": [2, 2], "x": 2.75, "y": 2 },
- { "matrix": [2, 3], "x": 3.75, "y": 2 },
- { "matrix": [2, 4], "x": 4.75, "y": 2 },
- { "matrix": [2, 5], "x": 5.75, "y": 2 },
- { "matrix": [2, 6], "x": 6.75, "y": 2 },
- { "matrix": [2, 7], "x": 7.75, "y": 2 },
- { "matrix": [2, 8], "x": 8.75, "y": 2 },
- { "matrix": [2, 9], "x": 9.75, "y": 2 },
- { "matrix": [2, 10], "x": 10.75, "y": 2 },
- { "matrix": [2, 11], "x": 11.75, "y": 2 },
- { "matrix": [2, 12], "x": 12.75, "y": 2, "w": 1.25 },
- { "matrix": [1, 14], "x": 14, "y": 2 },
- { "matrix": [2, 15], "x": 15, "y": 2 },
- { "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25 },
- { "matrix": [3, 1], "x": 1.25, "y": 3 },
- { "matrix": [3, 2], "x": 2.25, "y": 3 },
- { "matrix": [3, 3], "x": 3.25, "y": 3 },
- { "matrix": [3, 4], "x": 4.25, "y": 3 },
- { "matrix": [3, 5], "x": 5.25, "y": 3 },
- { "matrix": [3, 6], "x": 6.25, "y": 3 },
- { "matrix": [3, 7], "x": 7.25, "y": 3 },
- { "matrix": [3, 8], "x": 8.25, "y": 3 },
- { "matrix": [3, 9], "x": 9.25, "y": 3 },
- { "matrix": [3, 10], "x": 10.25, "y": 3 },
- { "matrix": [3, 11], "x": 11.25, "y": 3 },
- { "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75 },
- { "matrix": [3, 14], "x": 14, "y": 3 },
- { "matrix": [3, 15], "x": 15, "y": 3 },
- { "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5 },
- { "matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5 },
- { "matrix": [4, 7], "x": 3.75, "y": 4, "w": 7 },
- { "matrix": [4, 11], "x": 10.75, "y": 4, "w": 1.5 },
- { "matrix": [4, 13], "x": 13, "y": 4 },
- { "matrix": [4, 14], "x": 14, "y": 4 },
- { "matrix": [4, 15], "x": 15, "y": 4 }
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [0, 14], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"matrix": [1, 15], "x": 15, "y": 1},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 12], "x": 12.75, "y": 2, "w": 1.25},
+ {"matrix": [1, 14], "x": 14, "y": 2},
+ {"matrix": [2, 15], "x": 15, "y": 2},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"matrix": [3, 14], "x": 14, "y": 3},
+ {"matrix": [3, 15], "x": 15, "y": 3},
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 7},
+ {"matrix": [4, 11], "x": 10.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 13], "x": 13, "y": 4},
+ {"matrix": [4, 14], "x": 14, "y": 4},
+ {"matrix": [4, 15], "x": 15, "y": 4}
]
}
}
diff --git a/keyboards/cutie_club/fidelity/keymaps/default/keymap.c b/keyboards/cutie_club/fidelity/keymaps/default/keymap.c
index 1f076a0e7d..00c1acde3f 100644
--- a/keyboards/cutie_club/fidelity/keymaps/default/keymap.c
+++ b/keyboards/cutie_club/fidelity/keymaps/default/keymap.c
@@ -18,14 +18,14 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
- [0] = LAYOUT(
+ [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_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_ENT, KC_PGDN,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT
),
- [1] = LAYOUT(
+ [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_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, 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/ploopyco/trackball_nano/keymaps/default/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c
index 871f8006ea..f13fbc5d94 100644
--- a/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c
+++ b/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c
@@ -20,3 +20,12 @@
// Dummy
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_NO }}};
+
+void suspend_power_down_user(void) {
+ // Switch off sensor + LED making trackball unable to wake host
+ adns5050_power_down();
+}
+
+void suspend_wakeup_init_user(void) {
+ adns5050_init();
+}
diff --git a/quantum/keycodes.h b/quantum/keycodes.h
index f461e4a586..38127bb6da 100644
--- a/quantum/keycodes.h
+++ b/quantum/keycodes.h
@@ -72,6 +72,8 @@ enum qk_keycode_ranges {
QK_STENO_MAX = 0x74FF,
QK_MACRO = 0x7700,
QK_MACRO_MAX = 0x777F,
+ QK_CONNECTION = 0x7780,
+ QK_CONNECTION_MAX = 0x77BF,
QK_LIGHTING = 0x7800,
QK_LIGHTING_MAX = 0x78FF,
QK_QUANTUM = 0x7C00,
@@ -620,6 +622,20 @@ enum qk_keycode_defines {
QK_MACRO_29 = 0x771D,
QK_MACRO_30 = 0x771E,
QK_MACRO_31 = 0x771F,
+ QK_OUTPUT_NEXT = 0x7780,
+ QK_OUTPUT_PREV = 0x7781,
+ QK_OUTPUT_NONE = 0x7782,
+ QK_OUTPUT_USB = 0x7783,
+ QK_OUTPUT_2P4GHZ = 0x7784,
+ QK_OUTPUT_BLUETOOTH = 0x7785,
+ QK_BLUETOOTH_PROFILE_NEXT = 0x7790,
+ QK_BLUETOOTH_PROFILE_PREV = 0x7791,
+ QK_BLUETOOTH_UNPAIR = 0x7792,
+ QK_BLUETOOTH_PROFILE1 = 0x7793,
+ QK_BLUETOOTH_PROFILE2 = 0x7794,
+ QK_BLUETOOTH_PROFILE3 = 0x7795,
+ QK_BLUETOOTH_PROFILE4 = 0x7796,
+ QK_BLUETOOTH_PROFILE5 = 0x7797,
QK_BACKLIGHT_ON = 0x7800,
QK_BACKLIGHT_OFF = 0x7801,
QK_BACKLIGHT_TOGGLE = 0x7802,
@@ -690,9 +706,6 @@ enum qk_keycode_defines {
QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN = 0x7C1C,
QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE = 0x7C1D,
QK_SPACE_CADET_RIGHT_SHIFT_ENTER = 0x7C1E,
- QK_OUTPUT_AUTO = 0x7C20,
- QK_OUTPUT_USB = 0x7C21,
- QK_OUTPUT_BLUETOOTH = 0x7C22,
QK_UNICODE_MODE_NEXT = 0x7C30,
QK_UNICODE_MODE_PREVIOUS = 0x7C31,
QK_UNICODE_MODE_MACOS = 0x7C32,
@@ -1296,6 +1309,21 @@ enum qk_keycode_defines {
MC_29 = QK_MACRO_29,
MC_30 = QK_MACRO_30,
MC_31 = QK_MACRO_31,
+ OU_NEXT = QK_OUTPUT_NEXT,
+ OU_AUTO = QK_OUTPUT_NEXT,
+ OU_PREV = QK_OUTPUT_PREV,
+ OU_NONE = QK_OUTPUT_NONE,
+ OU_USB = QK_OUTPUT_USB,
+ OU_2P4G = QK_OUTPUT_2P4GHZ,
+ OU_BT = QK_OUTPUT_BLUETOOTH,
+ BT_NEXT = QK_BLUETOOTH_PROFILE_NEXT,
+ BT_PREV = QK_BLUETOOTH_PROFILE_PREV,
+ BT_UNPR = QK_BLUETOOTH_UNPAIR,
+ BT_PRF1 = QK_BLUETOOTH_PROFILE1,
+ BT_PRF2 = QK_BLUETOOTH_PROFILE2,
+ BT_PRF3 = QK_BLUETOOTH_PROFILE3,
+ BT_PRF4 = QK_BLUETOOTH_PROFILE4,
+ BT_PRF5 = QK_BLUETOOTH_PROFILE5,
BL_ON = QK_BACKLIGHT_ON,
BL_OFF = QK_BACKLIGHT_OFF,
BL_TOGG = QK_BACKLIGHT_TOGGLE,
@@ -1365,9 +1393,6 @@ enum qk_keycode_defines {
SC_LAPO = QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN,
SC_RAPC = QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE,
SC_SENT = QK_SPACE_CADET_RIGHT_SHIFT_ENTER,
- OU_AUTO = QK_OUTPUT_AUTO,
- OU_USB = QK_OUTPUT_USB,
- OU_BT = QK_OUTPUT_BLUETOOTH,
UC_NEXT = QK_UNICODE_MODE_NEXT,
UC_PREV = QK_UNICODE_MODE_PREVIOUS,
UC_MAC = QK_UNICODE_MODE_MACOS,
@@ -1444,6 +1469,7 @@ enum qk_keycode_defines {
#define IS_QK_AUDIO(code) ((code) >= QK_AUDIO && (code) <= QK_AUDIO_MAX)
#define IS_QK_STENO(code) ((code) >= QK_STENO && (code) <= QK_STENO_MAX)
#define IS_QK_MACRO(code) ((code) >= QK_MACRO && (code) <= QK_MACRO_MAX)
+#define IS_QK_CONNECTION(code) ((code) >= QK_CONNECTION && (code) <= QK_CONNECTION_MAX)
#define IS_QK_LIGHTING(code) ((code) >= QK_LIGHTING && (code) <= QK_LIGHTING_MAX)
#define IS_QK_QUANTUM(code) ((code) >= QK_QUANTUM && (code) <= QK_QUANTUM_MAX)
#define IS_QK_KB(code) ((code) >= QK_KB && (code) <= QK_KB_MAX)
@@ -1468,6 +1494,7 @@ enum qk_keycode_defines {
#define IS_AUDIO_KEYCODE(code) ((code) >= QK_AUDIO_ON && (code) <= QK_AUDIO_VOICE_PREVIOUS)
#define IS_STENO_KEYCODE(code) ((code) >= QK_STENO_BOLT && (code) <= QK_STENO_COMB_MAX)
#define IS_MACRO_KEYCODE(code) ((code) >= QK_MACRO_0 && (code) <= QK_MACRO_31)
+#define IS_CONNECTION_KEYCODE(code) ((code) >= QK_OUTPUT_NEXT && (code) <= QK_BLUETOOTH_PROFILE5)
#define IS_BACKLIGHT_KEYCODE(code) ((code) >= QK_BACKLIGHT_ON && (code) <= QK_BACKLIGHT_TOGGLE_BREATHING)
#define IS_LED_MATRIX_KEYCODE(code) ((code) >= QK_LED_MATRIX_ON && (code) <= QK_LED_MATRIX_SPEED_DOWN)
#define IS_UNDERGLOW_KEYCODE(code) ((code) >= QK_UNDERGLOW_TOGGLE && (code) <= QK_UNDERGLOW_SPEED_DOWN)
@@ -1493,6 +1520,7 @@ enum qk_keycode_defines {
#define AUDIO_KEYCODE_RANGE QK_AUDIO_ON ... QK_AUDIO_VOICE_PREVIOUS
#define STENO_KEYCODE_RANGE QK_STENO_BOLT ... QK_STENO_COMB_MAX
#define MACRO_KEYCODE_RANGE QK_MACRO_0 ... QK_MACRO_31
+#define CONNECTION_KEYCODE_RANGE QK_OUTPUT_NEXT ... QK_BLUETOOTH_PROFILE5
#define BACKLIGHT_KEYCODE_RANGE QK_BACKLIGHT_ON ... QK_BACKLIGHT_TOGGLE_BREATHING
#define LED_MATRIX_KEYCODE_RANGE QK_LED_MATRIX_ON ... QK_LED_MATRIX_SPEED_DOWN
#define UNDERGLOW_KEYCODE_RANGE QK_UNDERGLOW_TOGGLE ... QK_UNDERGLOW_SPEED_DOWN
diff --git a/quantum/process_keycode/process_connection.c b/quantum/process_keycode/process_connection.c
new file mode 100644
index 0000000000..b0e230d680
--- /dev/null
+++ b/quantum/process_keycode/process_connection.c
@@ -0,0 +1,36 @@
+// Copyright 2024 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "outputselect.h"
+#include "process_connection.h"
+
+bool process_connection(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch (keycode) {
+ case QK_OUTPUT_NEXT:
+ set_output(OUTPUT_AUTO); // This should cycle through the outputs going forward. Ensure `docs/keycodes.md`, `docs/features/bluetooth.md` are updated when it does.
+ return false;
+ case QK_OUTPUT_USB:
+ set_output(OUTPUT_USB);
+ return false;
+ case QK_OUTPUT_BLUETOOTH:
+ set_output(OUTPUT_BLUETOOTH);
+ return false;
+
+ case QK_OUTPUT_PREV:
+ case QK_OUTPUT_NONE:
+ case QK_OUTPUT_2P4GHZ:
+ case QK_BLUETOOTH_PROFILE_NEXT:
+ case QK_BLUETOOTH_PROFILE_PREV:
+ case QK_BLUETOOTH_UNPAIR:
+ case QK_BLUETOOTH_PROFILE1:
+ case QK_BLUETOOTH_PROFILE2:
+ case QK_BLUETOOTH_PROFILE3:
+ case QK_BLUETOOTH_PROFILE4:
+ case QK_BLUETOOTH_PROFILE5:
+ // As-yet unimplemented.
+ // When implementation is done, ensure `docs/keycodes.md`, `docs/features/bluetooth.md` are updated accordingly.
+ return false;
+ }
+ }
+ return true;
+}
diff --git a/quantum/process_keycode/process_connection.h b/quantum/process_keycode/process_connection.h
new file mode 100644
index 0000000000..cc58011bb7
--- /dev/null
+++ b/quantum/process_keycode/process_connection.h
@@ -0,0 +1,9 @@
+// Copyright 2024 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+#include "action.h"
+
+bool process_connection(uint16_t keycode, keyrecord_t *record);
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 011f9d73e4..db323e31c9 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -21,7 +21,7 @@
#endif
#ifdef BLUETOOTH_ENABLE
-# include "outputselect.h"
+# include "process_connection.h"
#endif
#ifdef GRAVE_ESC_ENABLE
@@ -246,10 +246,9 @@ uint16_t get_event_keycode(keyevent_t event, bool update_layer_cache) {
/* Get keycode, and then process pre tapping functionality */
bool pre_process_record_quantum(keyrecord_t *record) {
- uint16_t keycode = get_record_keycode(record, true);
- return pre_process_record_kb(keycode, record) &&
+ return pre_process_record_kb(get_record_keycode(record, true), record) &&
#ifdef COMBO_ENABLE
- process_combo(keycode, record) &&
+ process_combo(get_record_keycode(record, true), record) &&
#endif
true;
}
@@ -394,6 +393,9 @@ bool process_record_quantum(keyrecord_t *record) {
#ifdef TRI_LAYER_ENABLE
process_tri_layer(keycode, record) &&
#endif
+#ifdef BLUETOOTH_ENABLE
+ process_connection(keycode, record) &&
+#endif
true)) {
return false;
}
@@ -431,17 +433,6 @@ bool process_record_quantum(keyrecord_t *record) {
velocikey_toggle();
return false;
#endif
-#ifdef BLUETOOTH_ENABLE
- case QK_OUTPUT_AUTO:
- set_output(OUTPUT_AUTO);
- return false;
- case QK_OUTPUT_USB:
- set_output(OUTPUT_USB);
- return false;
- case QK_OUTPUT_BLUETOOTH:
- set_output(OUTPUT_BLUETOOTH);
- return false;
-#endif
#ifndef NO_ACTION_ONESHOT
case QK_ONE_SHOT_TOGGLE:
oneshot_toggle();
diff --git a/quantum/quantum_keycodes_legacy.h b/quantum/quantum_keycodes_legacy.h
index e1562077e5..21aec90675 100644
--- a/quantum/quantum_keycodes_legacy.h
+++ b/quantum/quantum_keycodes_legacy.h
@@ -55,3 +55,5 @@
#define KC_ACL1 QK_MOUSE_ACCELERATION_1
#define KC_MS_ACCEL2 QK_MOUSE_ACCELERATION_2
#define KC_ACL2 QK_MOUSE_ACCELERATION_2
+
+#define QK_OUTPUT_AUTO OU_AUTO
diff --git a/quantum/rgb_matrix/rgb_matrix.c b/quantum/rgb_matrix/rgb_matrix.c
index 70175f9d50..4d55a3d5fe 100644
--- a/quantum/rgb_matrix/rgb_matrix.c
+++ b/quantum/rgb_matrix/rgb_matrix.c
@@ -83,11 +83,6 @@ static uint32_t rgb_timer_buffer;
static last_hit_t last_hit_buffer;
#endif // RGB_MATRIX_KEYREACTIVE_ENABLED
-// split rgb matrix
-#if defined(RGB_MATRIX_SPLIT)
-const uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT;
-#endif
-
EECONFIG_DEBOUNCE_HELPER(rgb_matrix, EECONFIG_RGB_MATRIX, rgb_matrix_config);
void eeconfig_update_rgb_matrix(void) {
diff --git a/readme.md b/readme.md
index 62aed12066..e5c0d41b7b 100644
--- a/readme.md
+++ b/readme.md
@@ -1,3 +1,7 @@
+# THIS IS THE DEVELOP BRANCH
+
+Warning- This is the `develop` branch of QMK Firmware. You may encounter broken code here. Please see [Breaking Changes](https://docs.qmk.fm/#/breaking_changes) for more information.
+
# Quantum Mechanical Keyboard Firmware
[![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
diff --git a/tests/test_common/keycode_table.cpp b/tests/test_common/keycode_table.cpp
index 4c28ab4d20..e4d445de82 100644
--- a/tests/test_common/keycode_table.cpp
+++ b/tests/test_common/keycode_table.cpp
@@ -562,6 +562,20 @@ std::map<uint16_t, std::string> KEYCODE_ID_TABLE = {
{QK_MACRO_29, "QK_MACRO_29"},
{QK_MACRO_30, "QK_MACRO_30"},
{QK_MACRO_31, "QK_MACRO_31"},
+ {QK_OUTPUT_NEXT, "QK_OUTPUT_NEXT"},
+ {QK_OUTPUT_PREV, "QK_OUTPUT_PREV"},
+ {QK_OUTPUT_NONE, "QK_OUTPUT_NONE"},
+ {QK_OUTPUT_USB, "QK_OUTPUT_USB"},
+ {QK_OUTPUT_2P4GHZ, "QK_OUTPUT_2P4GHZ"},
+ {QK_OUTPUT_BLUETOOTH, "QK_OUTPUT_BLUETOOTH"},
+ {QK_BLUETOOTH_PROFILE_NEXT, "QK_BLUETOOTH_PROFILE_NEXT"},
+ {QK_BLUETOOTH_PROFILE_PREV, "QK_BLUETOOTH_PROFILE_PREV"},
+ {QK_BLUETOOTH_UNPAIR, "QK_BLUETOOTH_UNPAIR"},
+ {QK_BLUETOOTH_PROFILE1, "QK_BLUETOOTH_PROFILE1"},
+ {QK_BLUETOOTH_PROFILE2, "QK_BLUETOOTH_PROFILE2"},
+ {QK_BLUETOOTH_PROFILE3, "QK_BLUETOOTH_PROFILE3"},
+ {QK_BLUETOOTH_PROFILE4, "QK_BLUETOOTH_PROFILE4"},
+ {QK_BLUETOOTH_PROFILE5, "QK_BLUETOOTH_PROFILE5"},
{QK_BACKLIGHT_ON, "QK_BACKLIGHT_ON"},
{QK_BACKLIGHT_OFF, "QK_BACKLIGHT_OFF"},
{QK_BACKLIGHT_TOGGLE, "QK_BACKLIGHT_TOGGLE"},
@@ -632,9 +646,6 @@ std::map<uint16_t, std::string> KEYCODE_ID_TABLE = {
{QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN, "QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN"},
{QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE, "QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE"},
{QK_SPACE_CADET_RIGHT_SHIFT_ENTER, "QK_SPACE_CADET_RIGHT_SHIFT_ENTER"},
- {QK_OUTPUT_AUTO, "QK_OUTPUT_AUTO"},
- {QK_OUTPUT_USB, "QK_OUTPUT_USB"},
- {QK_OUTPUT_BLUETOOTH, "QK_OUTPUT_BLUETOOTH"},
{QK_UNICODE_MODE_NEXT, "QK_UNICODE_MODE_NEXT"},
{QK_UNICODE_MODE_PREVIOUS, "QK_UNICODE_MODE_PREVIOUS"},
{QK_UNICODE_MODE_MACOS, "QK_UNICODE_MODE_MACOS"},
diff --git a/util/uf2families.json b/util/uf2families.json
index 778af4421f..e35bf8d428 100644
--- a/util/uf2families.json
+++ b/util/uf2families.json
@@ -175,11 +175,56 @@
"description": "ESP32-H2"
},
{
+ "id": "0x540ddf62",
+ "short_name": "ESP32C6",
+ "description": "ESP32-C6"
+ },
+ {
+ "id": "0x3d308e94",
+ "short_name": "ESP32P4",
+ "description": "ESP32-P4"
+ },
+ {
+ "id": "0xf71c0343",
+ "short_name": "ESP32C5",
+ "description": "ESP32-C5"
+ },
+ {
+ "id": "0x77d850c4",
+ "short_name": "ESP32C61",
+ "description": "ESP32-C61"
+ },
+ {
"id": "0xe48bff56",
"short_name": "RP2040",
"description": "Raspberry Pi RP2040"
},
{
+ "id": "0xe48bff57",
+ "short_name": "RP2XXX_ABSOLUTE",
+ "description": "Raspberry Pi Microcontrollers: Absolute (unpartitioned) download"
+ },
+ {
+ "id": "0xe48bff58",
+ "short_name": "RP2XXX_DATA",
+ "description": "Raspberry Pi Microcontrollers: Data partition download"
+ },
+ {
+ "id": "0xe48bff59",
+ "short_name": "RP2350_ARM_S",
+ "description": "Raspberry Pi RP2350, Secure Arm image"
+ },
+ {
+ "id": "0xe48bff5a",
+ "short_name": "RP2350_RISCV",
+ "description": "Raspberry Pi RP2350, RISC-V image"
+ },
+ {
+ "id": "0xe48bff5b",
+ "short_name": "RP2350_ARM_NS",
+ "description": "Raspberry Pi RP2350, Non-secure Arm image"
+ },
+ {
"id": "0x00ff6919",
"short_name": "STM32L4",
"description": "ST STM32L4xx"
@@ -213,5 +258,40 @@
"id": "0x9517422f",
"short_name": "RZA1LU",
"description": "Renesas RZ/A1LU (R7S7210xx)"
+ },
+ {
+ "id": "0x2dc309c5",
+ "short_name": "STM32F411xE",
+ "description": "ST STM32F411xE"
+ },
+ {
+ "id": "0x06d1097b",
+ "short_name": "STM32F411xC",
+ "description": "ST STM32F411xC"
+ },
+ {
+ "id": "0x72721d4e",
+ "short_name": "NRF52832xxAA",
+ "description": "Nordic NRF52832xxAA"
+ },
+ {
+ "id": "0x6f752678",
+ "short_name": "NRF52832xxAB",
+ "description": "Nordic NRF52832xxAB"
+ },
+ {
+ "id": "0xa0c97b8e",
+ "short_name": "AT32F415",
+ "description": "ArteryTek AT32F415"
+ },
+ {
+ "id": "0x699b62ec",
+ "short_name": "CH32V",
+ "description": "WCH CH32V2xx and CH32V3xx"
+ },
+ {
+ "id": "0x7be8976d",
+ "short_name": "RA4M1",
+ "description": "Renesas RA4M1"
}
]