C ++ X11获取大写锁定的状态

时间:2015-04-20 14:45:29

标签: c++ x11 capslock

我需要使用C ++获取CAPS LOCK的状态。我尝试使用XkbGetIndicatorState获取状态,但它无法正常工作。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

除了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");

答案 1 :(得分:-6)

尝试以下内容:

if ((GetKeyState(VK_CAPITAL) & 0x0001)!=0)
  cout<<"Caps Lock ON!";
else
  cout<<"Caps Lock OFF!";

或(reference

Use GetAsyncKeyState with VK_CAPITAL (0x14)