41 lines
1.5 KiB
C
41 lines
1.5 KiB
C
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include "MID/Mid_Def.h"
|
|||
|
|
#include <QtCore/QByteArray>
|
|||
|
|
#include <QtCore/QList>
|
|||
|
|
#include <QtCore/QString>
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* 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<Mid_Struct_RawPacket> 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);
|