是否有一种标准方法来捕获适用于 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?

检查是不是适用同源政策

Python:Tkinter iconbitmap赋值仅适用于模块级别

是否有一种标准方法可以将“复制和粘贴”Javascript 代码添加到 Django 项目中?