Wilba преди 2 години
родител
ревизия
4efe6330c4
променени са 2 файла, в които са добавени 15 реда и са изтрити 1 реда
  1. 12 0
      quantum/via.c
  2. 3 1
      quantum/via.h

+ 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]);
             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: {
             // The command ID is not known
             // Return the unhandled state

+ 3 - 1
quantum/via.h

@@ -58,7 +58,7 @@
 
 // This is changed only when the command IDs change,
 // so VIA Configurator can detect compatible firmware.
-#define VIA_PROTOCOL_VERSION 0x0009
+#define VIA_PROTOCOL_VERSION 0x000A
 
 enum via_command_id {
     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_buffer            = 0x12,
     id_dynamic_keymap_set_buffer            = 0x13,
+    id_dynamic_keymap_get_encoder           = 0x14,
+    id_dynamic_keymap_set_encoder           = 0x15,
     id_unhandled                            = 0xFF,
 };