是否有一种标准方法来捕获适用于 linux 和 windows 的 c++ 应用程序中的键盘输入?
Posted
技术标签:
【中文标题】是否有一种标准方法来捕获适用于 linux 和 windows 的 c++ 应用程序中的键盘输入?【英文标题】:Is there a standard way to capture keyboard inputs that works in a c++ application for linux and windows? 【发布时间】:2015-06-07 13:40:20 【问题描述】:对于一个c++游戏,让它可以在linux机器或windows机器上运行?
与 windows 一样,我会使用钩子,但我想知道如何做同样的事情,以便我的游戏也可以在 linux 机器上运行?
【问题讨论】:
C++ 不假定存在键盘..? C++ 实现通过std::cin
流公开了stdin
——可以合理地假设它是用于简单文本游戏的键盘。如果您想要无缓冲的 I/O 或原始硬件级键盘扫描代码,则需要使用操作系统特定的功能。如果您使用某些游戏库或 XWindows,它可能会提供无缓冲的 I/O 和键盘事件回调/挂钩。
【参考方案1】:
使用库来抽象平台之间的差异。
如果您正在编写一个简单的基于控制台的应用程序,那么 C++ 标准库就足够了。对于图形应用程序,您将需要使用 LibSDL 之类的东西。游戏使用 SDL 很常见。这允许相同的游戏在 Windows、Linux 和 OS X 上运行,而无需在平台之间进行太多修改。
GLFW 和 SFML 是其他一些替代方案。
如果要编写复杂的基于控制台的应用程序,例如 NetHack,您将需要一个用于控制台抽象的库,例如 ncurses。
【讨论】:
以上是关于是否有一种标准方法来捕获适用于 linux 和 windows 的 c++ 应用程序中的键盘输入?的主要内容,如果未能解决你的问题,请参考以下文章
是否有一种可移植的(C++ 标准)方法来计算前一个对齐的指针?
使用 Python Windows 获取 CPU 和 GPU 温度
是否有一种编程方式来检查 Linux 上的当前 rpath?