如何检查是否在 C 上按下了键

新手上路,请多包涵

我怎么可能检查是否在 Windows 上按下了一个键?

原文由 snivy9014 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 795
2 个回答

正如其他人所提到的,没有跨平台的方法可以做到这一点,但在 Windows 上你可以这样做:

下面的代码检查键“A”是否关闭。

 if(GetKeyState('A') & 0x8000/*Check if high-order bit is set (1 << 15)*/)
{
    // Do stuff
}

如果发生轮班或类似情况,您需要通过以下其中一项: https ://msdn.microsoft.com/de-de/library/windows/desktop/dd375731(v=vs.85).aspx

 if(GetKeyState(VK_SHIFT) & 0x8000)
{
    // Shift down
}

低位指示键是否被切换。

 SHORT keyState = GetKeyState(VK_CAPITAL/*(caps lock)*/);
bool isToggled = keyState & 1;
bool isDown = keyState & 0x8000;

哦,别忘了

#include <Windows.h>

原文由 Frank S. 发布,翻译遵循 CC BY-SA 4.0 许可协议

免责声明:在编辑问题以将其范围限制为特定操作系统之前提供了此答案

没有便携式功能可以检查是否按下了键,如果没有则继续。这始终取决于系统。

针对 linux 和其他 posix 兼容系统的解决方案:

在这里,对于 Morgan Mattews 的代码,以与任何 POSIX 兼容系统兼容的方式提供 kbhit() 功能。他使用了在 termios 级别停用缓冲的技巧。

窗户解决方案:

对于 Windows,微软提供 _kbhit()

原文由 Christophe 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题