DirectInput DIK常量失败时检测键盘热键

时间:2013-05-20 21:20:23

标签: c++ keyboard directinput

我想将任务和功能分配给键盘的其他键(例如Mute,VolumeChange,Browser,...)。现在,我知道DirectInput实现了像DIK_MUTE(msdn link)这些键的完整列表。不幸的是,没有任何键分配给这些值,显然每个按下的键都被DirectInput识别为128号。

但Windows似乎没有区分这些密钥的问题,因为其中一些密钥是功能性的,例如打开的应用程序。有没有办法在有或没有DirectInput的情况下调整这个问题,这样我也可以在全屏DX / OpenGL应用程序中检测这些键?

IDirectInputDevice8* device;
BYTE arrKey[256] = {0};

if FAILED(device->GetDeviceState(sizeof(BYTE)*256,arrKey))
    return false;

BYTE byKey = ReportPressedKey(arrKey, sizeof(BYTE*)*256);
// byKey = 128 (DIK_MUTE, DIK_VOLUMEUP,DIK_NEXTTRACK,...)

0 个答案:

没有答案