#pragma once #include #include // Shared protocol constants and raw packet definitions. enum Mid_Enum_ReportId : quint8 { Mid_Enum_ReportId_None = 0x00, Mid_Enum_ReportId_Nkro = 0x01, Mid_Enum_ReportId_Consumer = 0x03, Mid_Enum_ReportId_Vendor = 0x04, Mid_Enum_ReportId_VendorCommand = 0x05 }; enum Mid_Enum_RawPacketSource : quint8 { Mid_Enum_RawPacketSource_None = 0, Mid_Enum_RawPacketSource_UsbNkroRaw, Mid_Enum_RawPacketSource_UsbConsumerHid, Mid_Enum_RawPacketSource_UsbVendorHid, Mid_Enum_RawPacketSource_BleGatt, Mid_Enum_RawPacketSource_BleHidKeyboard, Mid_Enum_RawPacketSource_BleHidConsumer, Mid_Enum_RawPacketSource_BleHidVendor, Mid_Enum_RawPacketSource_BleHidVendorCommand }; const quint16 MID_CONST_VENDOR_ID_DEFAULT = 0x1209; const quint16 MID_CONST_PRODUCT_ID_DEFAULT = 0x0001; struct Mid_Struct_DeviceConfig { quint16 VendorId = MID_CONST_VENDOR_ID_DEFAULT; quint16 ProductId = MID_CONST_PRODUCT_ID_DEFAULT; }; struct Mid_Struct_DeviceMatch { quint16 VendorId = 0; quint16 ProductId = 0; quint16 UsagePage = 0; quint16 Usage = 0; }; struct Mid_Struct_RawPacket { bool IsValid = false; Mid_Enum_RawPacketSource Source = Mid_Enum_RawPacketSource_None; QByteArray ByteArray; QString PortName; }; const quint16 MID_CONST_USAGE_PAGE_NKRO = 0x0001; const quint16 MID_CONST_USAGE_NKRO = 0x0006; const quint16 MID_CONST_USAGE_PAGE_CONSUMER = 0x000C; const quint16 MID_CONST_USAGE_CONSUMER = 0x0001; const quint16 MID_CONST_USAGE_PAGE_VENDOR = 0xFF00; const quint16 MID_CONST_USAGE_VENDOR = 0x0002; const quint16 MID_CONST_USAGE_PAGE_VENDOR_COMMAND = 0xFF01; const quint16 MID_CONST_USAGE_VENDOR_COMMAND = 0x0005; const int MID_CONST_KEYBOARD_USAGE_MAX = 0x00E7; const int MID_CONST_USAGE_BITMAP_SIZE = 29; const int MID_CONST_PACKET_SIZE_NKRO = 31; const int MID_CONST_PACKET_SIZE_VENDOR = 31; const int MID_CONST_PACKET_SIZE_VENDOR_COMMAND = 10; const int MID_CONST_PACKET_SIZE_VENDOR_COMMAND_DATA = 8; const int MID_CONST_PACKET_SIZE_CONSUMER = 3; bool Mid_FindHidInterface( const Mid_Struct_DeviceMatch& Match, QString* p_DevicePath, quint16* p_InputLength, quint16* p_OutputLength, QString* p_DeviceInstanceId = nullptr); bool Mid_IsBluetoothHidInstanceId(const QString& DeviceInstanceId); QString Mid_GetHexText(const QByteArray& ByteArray); QString Mid_GetModifierText(quint8 Modifier); QString Mid_GetKeyboardUsageText(quint16 Usage); QString Mid_GetConsumerUsageText(quint16 Usage);