瀏覽代碼

Merge remote-tracking branch 'origin/develop' into xap

QMK Bot 4 年之前
父節點
當前提交
bb1bed38e7

+ 7 - 1
data/mappings/defaults.json

@@ -28,6 +28,12 @@
             "board": "QMK_PM2040",
             "board": "QMK_PM2040",
             "pin_compatible": "promicro"
             "pin_compatible": "promicro"
         },
         },
+        "blok": {
+            "processor": "RP2040",
+            "bootloader": "rp2040",
+            "board": "QMK_PM2040",
+            "pin_compatible": "promicro"
+        },
         "bluepill": {
         "bluepill": {
             "processor": "STM32F103",
             "processor": "STM32F103",
             "bootloader": "stm32duino",
             "bootloader": "stm32duino",
@@ -44,4 +50,4 @@
             "board": "BLACKPILL_STM32_F411"
             "board": "BLACKPILL_STM32_F411"
         }
         }
     }
     }
-}
+}

+ 1 - 1
data/schemas/keyboard.jsonschema

@@ -34,7 +34,7 @@
         },
         },
         "development_board": {
         "development_board": {
             "type": "string",
             "type": "string",
-            "enum": ["promicro", "elite_c", "proton_c", "kb2040", "promicro_rp2040", "bluepill", "blackpill_f401", "blackpill_f411"]
+            "enum": ["promicro", "elite_c", "proton_c", "kb2040", "promicro_rp2040", "blok", "bluepill", "blackpill_f401", "blackpill_f411"]
         },
         },
         "pin_compatible": {
         "pin_compatible": {
             "type": "string",
             "type": "string",

+ 4 - 1
docs/feature_converters.md

@@ -13,6 +13,7 @@ Currently the following converters are available:
 | `promicro` | `proton_c`        |
 | `promicro` | `proton_c`        |
 | `promicro` | `kb2040`          |
 | `promicro` | `kb2040`          |
 | `promicro` | `promicro_rp2040` |
 | `promicro` | `promicro_rp2040` |
+| `promicro` | `blok`            |
 
 
 See below for more in depth information on each converter.
 See below for more in depth information on each converter.
 
 
@@ -52,6 +53,7 @@ If a board currently supported in QMK uses a [Pro Micro](https://www.sparkfun.co
 | [Proton C](https://qmk.fm/proton-c/)                                   | `proton_c`        |
 | [Proton C](https://qmk.fm/proton-c/)                                   | `proton_c`        |
 | [Adafruit KB2040](https://learn.adafruit.com/adafruit-kb2040)          | `kb2040`          |
 | [Adafruit KB2040](https://learn.adafruit.com/adafruit-kb2040)          | `kb2040`          |
 | [SparkFun Pro Micro - RP2040](https://www.sparkfun.com/products/18288) | `promicro_rp2040` |
 | [SparkFun Pro Micro - RP2040](https://www.sparkfun.com/products/18288) | `promicro_rp2040` |
+| [Blok](https://boardsource.xyz/store/628b95b494dfa308a6581622)         | `blok`            |
 
 
 Converter summary:
 Converter summary:
 
 
@@ -60,6 +62,7 @@ Converter summary:
 | `proton_c`        | `-e CONVERT_TO=proton_c`        | `CONVERT_TO=proton_c`        | `#ifdef CONVERT_TO_PROTON_C`        |
 | `proton_c`        | `-e CONVERT_TO=proton_c`        | `CONVERT_TO=proton_c`        | `#ifdef CONVERT_TO_PROTON_C`        |
 | `kb2040`          | `-e CONVERT_TO=kb2040`          | `CONVERT_TO=kb2040`          | `#ifdef CONVERT_TO_KB2040`          |
 | `kb2040`          | `-e CONVERT_TO=kb2040`          | `CONVERT_TO=kb2040`          | `#ifdef CONVERT_TO_KB2040`          |
 | `promicro_rp2040` | `-e CONVERT_TO=promicro_rp2040` | `CONVERT_TO=promicro_rp2040` | `#ifdef CONVERT_TO_PROMICRO_RP2040` |
 | `promicro_rp2040` | `-e CONVERT_TO=promicro_rp2040` | `CONVERT_TO=promicro_rp2040` | `#ifdef CONVERT_TO_PROMICRO_RP2040` |
+| `blok`            | `-e CONVERT_TO=blok`            | `CONVERT_TO=blok`            | `#ifdef CONVERT_TO_BLOK`            |
 
 
 ### Proton C :id=proton_c
 ### Proton C :id=proton_c
 
 
@@ -90,6 +93,6 @@ The following defaults are based on what has been implemented for [RP2040](platf
 | USB Host (e.g. USB-USB converter)            | Not supported (USB host code is AVR specific and is not currently supported on ARM)                              |
 | USB Host (e.g. USB-USB converter)            | Not supported (USB host code is AVR specific and is not currently supported on ARM)                              |
 | [Split keyboards](feature_split_keyboard.md) | Partial via `PIO` vendor driver - heavily dependent on enabled features                                          |
 | [Split keyboards](feature_split_keyboard.md) | Partial via `PIO` vendor driver - heavily dependent on enabled features                                          |
 
 
-### SparkFun Pro Micro - RP2040 :id=promicro_rp2040
+### SparkFun Pro Micro - RP2040 and Blok :id=promicro_rp2040 
 
 
 Currently identical to  [Adafruit KB2040](#kb2040).
 Currently identical to  [Adafruit KB2040](#kb2040).

+ 36 - 0
platforms/chibios/converters/promicro_to_blok/_pin_defs.h

@@ -0,0 +1,36 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Left side (front)
+#define D3 0U
+#define D2 1U
+//      GND
+//      GND
+#define D1 16U
+#define D0 17U
+#define D4 4U
+#define C6 5U
+#define D7 6U
+#define E6 7U
+#define B4 8U
+#define B5 9U
+
+// Right side (front)
+//      RAW
+//      GND
+//      RESET
+//      VCC
+#define F4 29U
+#define F5 28U
+#define F6 27U
+#define F7 26U
+#define B1 22U
+#define B3 20U
+#define B2 23U
+#define B6 21U
+
+// LEDs (Mapped to unused pins to avoid collisions)
+#define D5 12U
+#define B0 13U

+ 9 - 0
platforms/chibios/converters/promicro_to_blok/converter.mk

@@ -0,0 +1,9 @@
+# Boardsource Blok MCU settings for converting AVR projects
+MCU := RP2040
+BOARD := QMK_PM2040
+BOOTLOADER := rp2040
+
+# These are defaults based on what has been implemented for RP2040 boards
+SERIAL_DRIVER ?= vendor
+WS2812_DRIVER ?= vendor
+BACKLIGHT_DRIVER ?= software

+ 12 - 0
quantum/via.c

@@ -397,6 +397,18 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
             dynamic_keymap_set_buffer(offset, size, &command_data[3]);
             dynamic_keymap_set_buffer(offset, size, &command_data[3]);
             break;
             break;
         }
         }
+#ifdef ENCODER_MAP_ENABLE
+        case id_dynamic_keymap_get_encoder: {
+            uint16_t keycode = dynamic_keymap_get_encoder(command_data[0], command_data[1], command_data[2] != 0);
+            command_data[3]  = keycode >> 8;
+            command_data[4]  = keycode & 0xFF;
+            break;
+        }
+        case id_dynamic_keymap_set_encoder: {
+            dynamic_keymap_set_encoder(command_data[0], command_data[1], command_data[2] != 0, (command_data[3] << 8) | command_data[4]);
+            break;
+        }
+#endif
         default: {
         default: {
             // The command ID is not known
             // The command ID is not known
             // Return the unhandled state
             // Return the unhandled state

+ 3 - 1
quantum/via.h

@@ -58,7 +58,7 @@
 
 
 // This is changed only when the command IDs change,
 // This is changed only when the command IDs change,
 // so VIA Configurator can detect compatible firmware.
 // so VIA Configurator can detect compatible firmware.
-#define VIA_PROTOCOL_VERSION 0x0009
+#define VIA_PROTOCOL_VERSION 0x000A
 
 
 enum via_command_id {
 enum via_command_id {
     id_get_protocol_version                 = 0x01, // always 0x01
     id_get_protocol_version                 = 0x01, // always 0x01
@@ -80,6 +80,8 @@ enum via_command_id {
     id_dynamic_keymap_get_layer_count       = 0x11,
     id_dynamic_keymap_get_layer_count       = 0x11,
     id_dynamic_keymap_get_buffer            = 0x12,
     id_dynamic_keymap_get_buffer            = 0x12,
     id_dynamic_keymap_set_buffer            = 0x13,
     id_dynamic_keymap_set_buffer            = 0x13,
+    id_dynamic_keymap_get_encoder           = 0x14,
+    id_dynamic_keymap_set_encoder           = 0x15,
     id_unhandled                            = 0xFF,
     id_unhandled                            = 0xFF,
 };
 };