gpt4 book ai didi

c - 如何以编程方式检测 linux 中大写锁定的状态

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:26 37 4
gpt4 key购买 nike

我想知道 Capslock 是否处于事件状态,我想我可以使用 xet 为此目的,使用管道,通过 popen('xset -q | grep Capslock' ) 我能够找出答案,但我想要一些不使用命令的方法,在 C 程序中,有什么方法可以知道这一点。在这种情况下我还想问一件事,xset 在 linux 的控制台模式下不起作用,我做 alt+ctrl+ f1 然后登录那里,如果尝试运行 xset -q 这将抛出错误,也许这无法与控制台中的 XWindows 通信,那么对此有什么解决方案案例。

最佳答案

I want some way to know if the Capslock is active or not

你可能想要 XkbGetIndicatorState .例如:

#include <stdio.h>
#include <stdlib.h>
#include <X11/XKBlib.h>

/* Compile this with -lX11 */

int main ()
{
Display *display;
Status status;
unsigned state;

display = XOpenDisplay (getenv ("DISPLAY"));
if (!display)
return 1;

if (XkbGetIndicatorState (display, XkbUseCoreKbd, &state) != Success)
return 2;

printf ("Caps Lock is %s\n", (state & 1) ? "on" : "off");
return 0;
}

或者,您可以使用 same approach that is used in xset并使用 XkbGetNamedIndicator这是一个更通用的函数。

关于c - 如何以编程方式检测 linux 中大写锁定的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49561510/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com