Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 绘制键盘标志,检查哪些标志处于打开状态,还可以使用SHIFT、CTRL和ALT键_C++_Windows_Raw Input - Fatal编程技术网

C++ 绘制键盘标志,检查哪些标志处于打开状态,还可以使用SHIFT、CTRL和ALT键

C++ 绘制键盘标志,检查哪些标志处于打开状态,还可以使用SHIFT、CTRL和ALT键,c++,windows,raw-input,C++,Windows,Raw Input,因此,我正在使用RAWINPUT,并试图找出如何检查: data.keyboard.Flags 要查看哪些标志处于启用状态,我希望能够检查像“向上键”和“向下键”以及“左键”和“右键”之类的内容 您需要这样做吗: if(data.keyboard.Flags == (RI_KEY_MAKE|RI_KEY_E0)) 及 我知道对于SHIFT键,我应该检查生成代码 左:0x2a 正确存在:0x36 CTRL键和ALT键怎么样?您需要知道键的原始扫描代码。他们的核心参考是这个。有点难以理解,第16

因此,我正在使用RAWINPUT,并试图找出如何检查:

data.keyboard.Flags
要查看哪些标志处于启用状态,我希望能够检查像“向上键”和“向下键”以及“左键”和“右键”之类的内容

您需要这样做吗:

if(data.keyboard.Flags == (RI_KEY_MAKE|RI_KEY_E0))

我知道对于SHIFT键,我应该检查生成代码 左:0x2a 正确存在:0x36


CTRL键和ALT键怎么样?您需要知道键的原始扫描代码。他们的核心参考是这个。有点难以理解,第16页的扫描代码表是最有用的资源


请注意如何小心使用E0标志。它用于后来键盘设计中添加的键。最初的IBM PC键盘总是有两个shift键,因此它们与专用扫描代码一起发送,而不使用E0。但是后来添加了右Ctrl和右Alt,它们的扫描代码分别是E0 1D和E0 38,左边的扫描代码是1D和38,没有E0标志。

所以如果我跟着你向右走,标志实际上没有被使用,我需要使用键的扫描代码,返回键呢?不知道你想说什么。你为什么不试试呢?好吧,我让那个部件工作了,我仍然不知道如何检查钥匙是否打开了,这是唯一缺少的东西。
if(data.keyboard.Flags == (RI_KEY_BREAK|RI_KEY_E0))