Linux中有哪个与Windows的GetAsyncKeyState函数相等的函数?

7

我正在使用C++,需要确定是否按下了Shift键。在Windows中,我可以使用GetAsyncKeyState。在Linux中该如何实现呢? 但是我不能以root身份运行。

1个回答

1
在X Windows下,您可以加载X键盘扩展并调用XkbGetState()以获取当前键盘状态。如果Shift键被按下,则由XkbGetState()设置的XkbStateRec结构体的base_mods字段将设置ShiftMask位。完整文档在此处:https://www.x.org/releases/X11R7.7/doc/libX11/XKB/xkblib.html#Determining_Keyboard_State 这是同步调用,但您可以通过调用XkbSelectEventDetails()请求在键盘状态发生某些变化时发送XkbEvent事件。还有其他几种异步接收键盘事件的方法,但在这里,您对按下或释放Shift键感兴趣,这是作为修饰符字段中的位掩码报告的。
或者:https://dev59.com/pnA65IYBdhLWcg3wvxeE#4225290

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接