#pragma once #include "MID/Mid_Def.h" #include #include #include /* * DRI NKRO RAW 层:负责注册 Windows RAWINPUT,接收键盘 104+ 通道。 * 这里集中保存窗口句柄、设备配置、按键队列与 Modifier/Bitmap 缓冲。 */ struct Dri_NkroRaw_Struct_Port { /* 运行状态:是否已注册 RAWINPUT 以及宿主窗口 HWND */ bool IsOpened = false; void* WindowHandle = nullptr; Mid_Struct_DeviceConfig DeviceConfig; /* 最新的 Modifier 字节和 NKRO Usage 位图 */ quint8 Modifier = 0; QByteArray UsageBitmap = QByteArray(MID_CONST_USAGE_BITMAP_SIZE, 0); /* RAWINPUT 读取结果放入 PacketQueue,供上层逻辑顺序消费 */ QList PacketQueue; QString DevicePath; }; /* 注销 RAWINPUT 并清空所有缓存。 */ void Dri_NkroRaw_Func_Close(Dri_NkroRaw_Struct_Port* p_Port); /* 注册 RAWINPUT:绑定目标窗口并监听指定 VID/PID。 */ bool Dri_NkroRaw_Func_Open(Dri_NkroRaw_Struct_Port* p_Port, const Mid_Struct_DeviceConfig& DeviceConfig, void* WindowHandle, QString* p_TextStatus); /* 把 Windows 消息转为 NKRO 数据:核心教学入口。 */ bool Dri_NkroRaw_Func_HandleNativeMessage(Dri_NkroRaw_Struct_Port* p_Port, void* p_Message, QString* p_TextStatus); /* 上层每次取一个封装好的 RawPacket。 */ bool Dri_NkroRaw_Func_Read(Dri_NkroRaw_Struct_Port* p_Port, Mid_Struct_RawPacket* p_Packet, QString* p_TextStatus);