【发布时间】:2015-04-20 14:45:28
【问题描述】:
我需要使用 C++ 获取 CAPS LOCK 的状态。我尝试使用XkbGetIndicatorState 获取状态,但它不起作用。
有人可以帮我吗?
【问题讨论】:
-
您尝试了哪些方法,但以何种方式不起作用?你有没有尝试过这样的事情:stackoverflow.com/a/9010026/204847
我需要使用 C++ 获取 CAPS LOCK 的状态。我尝试使用XkbGetIndicatorState 获取状态,但它不起作用。
有人可以帮我吗?
【问题讨论】:
除了 NUM_LOCK 键状态外,我还在为同样的问题而苦苦挣扎。 我修改了找到的代码,找到了CAPS_LOCK状态:
代码如下,希望对你有帮助:
#include <X11/Xlib.h>
Display *dpy = XOpenDisplay(":0");
XKeyboardState x;
printf("led_mask=%lx\n", x.led_mask);
printf("NumLock is %s\n", (x.led_mask & 2) ? "On" : "Off");
printf("CapsLock is %s\n", (x.led_mask & 1) ? "On" : "Off");
【讨论】:
试试下面的方法:
if ((GetKeyState(VK_CAPITAL) & 0x0001)!=0)
cout<<"Caps Lock ON!";
else
cout<<"Caps Lock OFF!";
或者 (reference)
Use GetAsyncKeyState with VK_CAPITAL (0x14)
【讨论】: