在LINUX上获取设备输入(鼠标,键盘......)

rel*_*xxx 4 c++ linux raw-input

我正在构建跨平台的游戏引擎,现在我专注于输入系统.

我编写了一个抽象的输入系统,它传递消息并由平台相关模块提供,在单独的线程中运行.

在Windows中,我创建了"仅消息"窗口,该窗口向输入系统提供来自RAWINPUT的消息(转换为独立于平台).

现在我有麻烦想弄清楚如何在基于unix的系统上做类似的事情.有没有方便的方法从内核获取输入(keyup,keydown,mousemove ...)?或者任何其他方式,而不需要显示任何窗口?

编辑

我不希望我的输入系统依赖于我的渲染器.当应用程序焦点改变时,渲染器应该只通知输入...所以我希望输入系统在与渲染器不同的线程上运行.

Kor*_*icz 5

通常使用包装器库来实现跨平台输入 - SDL是非常好的,并且当前版本甚至是BSD许可的.

使用包装器的优势是如此之大,即使在Windows上使用自己的解决方案的Windows游戏也倾向于在Linux上运行时使用SDL作为包装器(这是SDL创建的原始原因).

因此,在最坏的情况下,您可以将您的库保留在Windows上,并使用SDL专门用于*nix系统.