logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git
commit: 0bda0f47754d01aa904f9831ff58ef760807ab16
parent f8b4e24d3720f369f8146fef7a6d2fd75f228e6f
Author: Nick Brassel <nick@tzarc.org>
Date:   Thu, 14 Nov 2024 21:16:52 +1100

Revert removal of `QK_OUTPUT_AUTO`, fixup docs to reflect. (#24593)


Diffstat:

Mdata/constants/keycodes/keycodes_0.0.6_connection.hjson18++++++++++++------
Mdocs/_aliases.json4+++-
Mdocs/_sidebar.json4++--
Ddocs/features/bluetooth.md46----------------------------------------------
Adocs/features/wireless.md58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdocs/keycodes.md30+++++++++++++++++++++---------
Mdocs/reference_info_json.md4++--
Mquantum/keycodes.h19++++++++++---------
Mtests/test_common/keycode_table.cpp1+
9 files changed, 109 insertions(+), 75 deletions(-)

diff --git a/data/constants/keycodes/keycodes_0.0.6_connection.hjson b/data/constants/keycodes/keycodes_0.0.6_connection.hjson @@ -7,41 +7,47 @@ "keycodes": { "0x7780": { "group": "connection", - "key": "QK_OUTPUT_NEXT", + "key": "QK_OUTPUT_AUTO", "aliases": [ - "OU_NEXT", "OU_AUTO" ] }, "0x7781": { "group": "connection", + "key": "QK_OUTPUT_NEXT", + "aliases": [ + "OU_NEXT" + ] + }, + "0x7782": { + "group": "connection", "key": "QK_OUTPUT_PREV", "aliases": [ "OU_PREV" ] }, - "0x7782": { + "0x7783": { "group": "connection", "key": "QK_OUTPUT_NONE", "aliases": [ "OU_NONE" ] }, - "0x7783": { + "0x7784": { "group": "connection", "key": "QK_OUTPUT_USB", "aliases": [ "OU_USB" ] }, - "0x7784": { + "0x7785": { "group": "connection", "key": "QK_OUTPUT_2P4GHZ", "aliases": [ "OU_2P4G" ] }, - "0x7785": { + "0x7786": { "group": "connection", "key": "QK_OUTPUT_BLUETOOTH", "aliases": [ diff --git a/docs/_aliases.json b/docs/_aliases.json @@ -16,6 +16,8 @@ "/tutorial": "/newbs", "/unicode": "/feature_unicode", + "/features/bluetooth": "/features/wireless", + "/adc_driver": "/drivers/adc", "/apa102_driver": "/drivers/apa102", "/audio_driver": "/drivers/audio", @@ -24,7 +26,7 @@ "/feature_auto_shift": "/features/auto_shift", "/feature_autocorrect": "/features/autocorrect", "/feature_backlight": "/features/backlight", - "/feature_bluetooth": "/features/bluetooth", + "/feature_bluetooth": "/features/wireless", "/feature_bootmagic": "/features/bootmagic", "/feature_caps_word": "/features/caps_word", "/feature_combo": "/features/combo", diff --git a/docs/_sidebar.json b/docs/_sidebar.json @@ -166,7 +166,6 @@ ] }, { "text": "Audio", "link": "/features/audio" }, - { "text": "Bluetooth", "link": "/features/bluetooth" }, { "text": "Bootmagic", "link": "/features/bootmagic" }, { "text": "Converters", "link": "/feature_converters" }, { "text": "Custom Matrix", "link": "/custom_matrix" }, @@ -179,7 +178,8 @@ { "text": "Pointing Device", "link": "/features/pointing_device" }, { "text": "PS/2 Mouse", "link": "/features/ps2_mouse" }, { "text": "Split Keyboard", "link": "/features/split_keyboard" }, - { "text": "Stenography", "link": "/features/stenography" } + { "text": "Stenography", "link": "/features/stenography" }, + { "text": "Wireless", "link": "/features/wireless" } ] }, { diff --git a/docs/features/bluetooth.md b/docs/features/bluetooth.md @@ -1,46 +0,0 @@ -# Bluetooth - -## Bluetooth Known Supported Hardware - -Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QMK has support for RN-42 modules. For more recent BLE protocols, currently only the Adafruit Bluefruit SPI Friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support mouse input. - -|Board |Bluetooth Protocol |Connection Type|rules.mk |Bluetooth Chip| -|----------------------------------------------------------------|--------------------|---------------|---------------------------------|--------------| -|Roving Networks RN-42 (Sparkfun Bluesmirf) |Bluetooth Classic |UART |`BLUETOOTH_DRIVER = rn42` |RN-42 | -|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy|SPI |`BLUETOOTH_DRIVER = bluefruit_le`|nRF51822 | - -Not Supported Yet but possible: -* [Bluefruit LE UART Friend](https://www.adafruit.com/product/2479). [Possible tmk implementation found in](https://github.com/tmk/tmk_keyboard/issues/514) -* HC-05 boards flashed with RN-42 firmware. They apparently both use the CSR BC417 Chip. Flashing it with RN-42 firmware gives it HID capability. -* Sparkfun Bluetooth Mate -* HM-13 based boards - -### Adafruit BLE SPI Friend -Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF51822 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The [Feather 32u4 Bluefruit LE](https://www.adafruit.com/product/2829) is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines: -* `#define BLUEFRUIT_LE_RST_PIN D4` -* `#define BLUEFRUIT_LE_CS_PIN B4` -* `#define BLUEFRUIT_LE_IRQ_PIN E6` - -A Bluefruit UART friend can be converted to an SPI friend, however this [requires](https://github.com/qmk/qmk_firmware/issues/2274) some reflashing and soldering directly to the MDBT40 chip. - -<!-- FIXME: Document bluetooth support more completely. --> -## Bluetooth Rules.mk Options - -The currently supported Bluetooth chipsets do not support [N-Key Rollover (NKRO)](../reference_glossary#n-key-rollover-nkro), so `rules.mk` must contain `NKRO_ENABLE = no`. - -Add the following to your `rules.mk`: - -```make -BLUETOOTH_ENABLE = yes -BLUETOOTH_DRIVER = bluefruit_le # or rn42 -``` - -## Bluetooth Keycodes - -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_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/features/wireless.md b/docs/features/wireless.md @@ -0,0 +1,58 @@ +# Wireless / Bluetooth + +## Bluetooth Known Supported Hardware + +Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QMK has support for RN-42 modules. For more recent BLE protocols, currently only the Adafruit Bluefruit SPI Friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support mouse input. + +|Board |Bluetooth Protocol |Connection Type|rules.mk |Bluetooth Chip| +|----------------------------------------------------------------|--------------------|---------------|---------------------------------|--------------| +|Roving Networks RN-42 (Sparkfun Bluesmirf) |Bluetooth Classic |UART |`BLUETOOTH_DRIVER = rn42` |RN-42 | +|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy|SPI |`BLUETOOTH_DRIVER = bluefruit_le`|nRF51822 | + +Not Supported Yet but possible: +* [Bluefruit LE UART Friend](https://www.adafruit.com/product/2479). [Possible tmk implementation found in](https://github.com/tmk/tmk_keyboard/issues/514) +* HC-05 boards flashed with RN-42 firmware. They apparently both use the CSR BC417 Chip. Flashing it with RN-42 firmware gives it HID capability. +* Sparkfun Bluetooth Mate +* HM-13 based boards + +### Adafruit BLE SPI Friend +Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF51822 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The [Feather 32u4 Bluefruit LE](https://www.adafruit.com/product/2829) is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines: +* `#define BLUEFRUIT_LE_RST_PIN D4` +* `#define BLUEFRUIT_LE_CS_PIN B4` +* `#define BLUEFRUIT_LE_IRQ_PIN E6` + +A Bluefruit UART friend can be converted to an SPI friend, however this [requires](https://github.com/qmk/qmk_firmware/issues/2274) some reflashing and soldering directly to the MDBT40 chip. + +<!-- FIXME: Document bluetooth support more completely. --> +## Bluetooth Rules.mk Options + +The currently supported Bluetooth chipsets do not support [N-Key Rollover (NKRO)](../reference_glossary#n-key-rollover-nkro), so `rules.mk` must contain `NKRO_ENABLE = no`. + +Add the following to your `rules.mk`: + +```make +BLUETOOTH_ENABLE = yes +BLUETOOTH_DRIVER = bluefruit_le # or rn42 +``` + +## Bluetooth Keycodes + +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 to USB when plugged in, otherwise use wireless | +| `QK_OUTPUT_NEXT` | `OU_NEXT` | Cycle forwards through USB, Bluetooth, and 2.4GHz (when available) **(not yet implemented)** | +| `QK_OUTPUT_PREV` | `OU_PREV` | Cycle backwards through USB, Bluetooth, and 2.4GHz (when available) **(not yet implemented)** | +| `QK_OUTPUT_NONE` | `OU_NONE` | Disable all output **(not yet implemented)** | +| `QK_OUTPUT_USB` | `OU_USB` | Output to USB only | +| `QK_OUTPUT_2P4GHZ` | `OU_2P4G` | Output to 2.4GHz only **(not yet implemented)** | +| `QK_OUTPUT_BLUETOOTH` | `OU_BT` | Output to Bluetooth only | +| `QK_BLUETOOTH_PROFILE_NEXT` | `BT_NEXT` | Move to the next Bluetooth profile **(not yet implemented)** | +| `QK_BLUETOOTH_PROFILE_PREV` | `BT_PREV` | Move to the previous Bluetooth profile **(not yet implemented)** | +| `QK_BLUETOOTH_UNPAIR` | `BT_UNPR` | Un-pair the current Bluetooth profile **(not yet implemented)** | +| `QK_BLUETOOTH_PROFILE1` | `BT_PRF1` | Swap to Bluetooth profile #1 **(not yet implemented)** | +| `QK_BLUETOOTH_PROFILE2` | `BT_PRF2` | Swap to Bluetooth profile #2 **(not yet implemented)** | +| `QK_BLUETOOTH_PROFILE3` | `BT_PRF3` | Swap to Bluetooth profile #3 **(not yet implemented)** | +| `QK_BLUETOOTH_PROFILE4` | `BT_PRF4` | Swap to Bluetooth profile #4 **(not yet implemented)** | +| `QK_BLUETOOTH_PROFILE5` | `BT_PRF5` | Swap to Bluetooth profile #5 **(not yet implemented)** | diff --git a/docs/keycodes.md b/docs/keycodes.md @@ -290,15 +290,27 @@ See also: [Backlighting](features/backlight) | `QK_BACKLIGHT_DOWN` | `BL_DOWN` | Decrease the backlight level | | `QK_BACKLIGHT_TOGGLE_BREATHING` | `BL_BRTG` | Toggle backlight breathing | -## Bluetooth {#bluetooth} - -See also: [Bluetooth](features/bluetooth) - -| 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 | +## Wireless/Bluetooth {#bluetooth} + +See also: [Wireless](features/wireless) + +| Key | Aliases | Description | +|-----------------------------|-----------|-----------------------------------------------------------------------------------------------| +| `QK_OUTPUT_AUTO` | `OU_AUTO` | Automatically switch to USB when plugged in, otherwise use wireless | +| `QK_OUTPUT_NEXT` | `OU_NEXT` | Cycle forwards through USB, Bluetooth, and 2.4GHz (when available) **(not yet implemented)** | +| `QK_OUTPUT_PREV` | `OU_PREV` | Cycle backwards through USB, Bluetooth, and 2.4GHz (when available) **(not yet implemented)** | +| `QK_OUTPUT_NONE` | `OU_NONE` | Disable all output **(not yet implemented)** | +| `QK_OUTPUT_USB` | `OU_USB` | Output to USB only | +| `QK_OUTPUT_2P4GHZ` | `OU_2P4G` | Output to 2.4GHz only **(not yet implemented)** | +| `QK_OUTPUT_BLUETOOTH` | `OU_BT` | Output to Bluetooth only | +| `QK_BLUETOOTH_PROFILE_NEXT` | `BT_NEXT` | Move to the next Bluetooth profile **(not yet implemented)** | +| `QK_BLUETOOTH_PROFILE_PREV` | `BT_PREV` | Move to the previous Bluetooth profile **(not yet implemented)** | +| `QK_BLUETOOTH_UNPAIR` | `BT_UNPR` | Un-pair the current Bluetooth profile **(not yet implemented)** | +| `QK_BLUETOOTH_PROFILE1` | `BT_PRF1` | Swap to Bluetooth profile #1 **(not yet implemented)** | +| `QK_BLUETOOTH_PROFILE2` | `BT_PRF2` | Swap to Bluetooth profile #2 **(not yet implemented)** | +| `QK_BLUETOOTH_PROFILE3` | `BT_PRF3` | Swap to Bluetooth profile #3 **(not yet implemented)** | +| `QK_BLUETOOTH_PROFILE4` | `BT_PRF4` | Swap to Bluetooth profile #4 **(not yet implemented)** | +| `QK_BLUETOOTH_PROFILE5` | `BT_PRF5` | Swap to Bluetooth profile #5 **(not yet implemented)** | ## Caps Word {#caps-word} diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md @@ -177,9 +177,9 @@ Configures the [Backlight](features/backlight) feature. * `pins` <Badge type="info">Array: Pin</Badge> * A list of GPIO pins connected to the backlight LEDs (`software` and `timer` drivers only). -## Bluetooth {#bluetooth} +## Wireless/Bluetooth {#bluetooth} -Configures the [Bluetooth](features/bluetooth) feature. +Configures the [Wireless](features/wireless) feature. * `bluetooth` * `driver` <Badge type="info">String</Badge> diff --git a/quantum/keycodes.h b/quantum/keycodes.h @@ -622,12 +622,13 @@ 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_OUTPUT_AUTO = 0x7780, + QK_OUTPUT_NEXT = 0x7781, + QK_OUTPUT_PREV = 0x7782, + QK_OUTPUT_NONE = 0x7783, + QK_OUTPUT_USB = 0x7784, + QK_OUTPUT_2P4GHZ = 0x7785, + QK_OUTPUT_BLUETOOTH = 0x7786, QK_BLUETOOTH_PROFILE_NEXT = 0x7790, QK_BLUETOOTH_PROFILE_PREV = 0x7791, QK_BLUETOOTH_UNPAIR = 0x7792, @@ -1309,8 +1310,8 @@ enum qk_keycode_defines { MC_29 = QK_MACRO_29, MC_30 = QK_MACRO_30, MC_31 = QK_MACRO_31, + OU_AUTO = QK_OUTPUT_AUTO, 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, @@ -1494,7 +1495,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_CONNECTION_KEYCODE(code) ((code) >= QK_OUTPUT_AUTO && (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) @@ -1520,7 +1521,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 CONNECTION_KEYCODE_RANGE QK_OUTPUT_AUTO ... 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/tests/test_common/keycode_table.cpp b/tests/test_common/keycode_table.cpp @@ -562,6 +562,7 @@ 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_AUTO, "QK_OUTPUT_AUTO"}, {QK_OUTPUT_NEXT, "QK_OUTPUT_NEXT"}, {QK_OUTPUT_PREV, "QK_OUTPUT_PREV"}, {QK_OUTPUT_NONE, "QK_OUTPUT_NONE"},