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);
|