我们基于 MFC 的 Windows 应用程序具有取决于 shift 键状态的功能。Shift 公开了高级用户菜单命令,并且 Shift 拖动具有与正常拖动不同的行为。我正在探索我们支持 Windows 8 平板电脑的选项,似乎没有直接的方法来检测 Windows 8 软键盘 shift 键的状态。
使用GetAsyncKeyState(VK_SHIFT)
(我们当前的方法)不会检测到这个键。
尝试检查所有传入的键盘消息,我发现:
- Shift 键的单次隔离敲击不会产生键盘事件
- 双击 shift 键会产生大写锁定键事件,与正常的大写锁定键事件无法区分
- Shift 键的单次轻击,然后是另一个击键(例如,'q' 键)会产生一个 shift 键事件、击键和一个 shift 键(向上?)事件。
还有其他方法可以尝试检测软键盘 shift 键的状态吗?有没有其他人在 Windows 8 平板电脑软键盘上成功检测到此键盘的状态。
您插入这些设备的外接键盘都有正常的 shift 键。该问题是特定于软键盘的。