【问题标题】:C++ X11 get status of the caps lockC++ X11 获取大写锁定状态
【发布时间】:2015-04-20 14:45:28
【问题描述】:

我需要使用 C++ 获取 CAPS LOCK 的状态。我尝试使用XkbGetIndicatorState 获取状态,但它不起作用。

有人可以帮我吗?

【问题讨论】:

标签: c++ x11 capslock


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试下面的方法:

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

    或者 (reference)

    Use GetAsyncKeyState with VK_CAPITAL (0x14)
    

    【讨论】:

    • 我很确定 X11 没有这些功能。这看起来更像是 Windows API。
    • OP 正在询问 X11。使用 Windows API 的答案没有用。
    • 请查看此链接qtcentre.org/threads/… -- 它适用于 Windows 和 X11(所有跨平台)
    猜你喜欢
    • 2016-06-15
    • 2012-12-04
    • 2021-10-30
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多