RAWINPUT.Keyboard:当 NUMLOCK=ON 时如何检测箭头键?

问题描述

NUmlock=ON 那么

按下ARROW_UP键:

data.keyboard.MakeCode = 42;
data.keyboard.VKey = 255;
data.keyboard.Flags = 2;
data.keyboard.Message = 256 (WM_KEYDOWN)

按下ARROW_DOWN键:

data.keyboard.MakeCode = 42;
data.keyboard.VKey = 255;
data.keyboard.Flags = 2;
data.keyboard.Message = 256 (WM_KEYDOWN)

按下ARROW_LEFT键:

data.keyboard.MakeCode = 42;
data.keyboard.VKey = 255;
data.keyboard.Flags = 2;
data.keyboard.Message = 256 (WM_KEYDOWN)

按下ARROW_RIGHT键:

data.keyboard.MakeCode = 42;
data.keyboard.VKey = 255;
data.keyboard.Flags = 2;
data.keyboard.Message = 256 (WM_KEYDOWN)

NUmlock=ON 时如何检测方向键?

  • NUmlock=OFF 时,一切正常;
  • DirectInput(来自 DirectX 8.0)在这两种情况下都运行良好;

解决方法

添加标志:RIDEV_NOLEGACY 并过滤 VKey == 255 的消息