Files
0417_QT_code/DRI/Dri_NkroRaw.h
2026-03-26 10:45:29 +08:00

41 lines
1.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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);