gpt4 book ai didi

c - Xlib 的全局热键

转载 作者:太空宇宙 更新时间:2023-11-04 13:01:22 24 4
gpt4 key购买 nike

我正在用 c 编写一个应用程序,它将使用 Xlib、GTK。我想创建一个热键来中断应用程序的事件并将其置于休眠状态。

我已经阅读了一些资料,但我相信我不能使用:X抓取键因为窗口管理器正在运行并且已经在运行了

当应用程序没有焦点时,是否有任何其他方法可以从 gtk 或 Xlib 中按组合键向我的应用程序发送订单?

我正在尝试以下代码,但它不起作用:

Display* dpy = XOpenDisplay(0);
Window root = DefaultRootWindow(dpy);
XEvent ev;
unsigned int modifiers = ControlMask | ShiftMask;
int keycode = 45;
int pointer_mode = GrabModeAsync;
int keyboard_mode = GrabModeAsync;
XGrabKey(dpy, AnyKey, modifiers, root, 0, pointer_mode, keyboard_mode);
XSelectInput(dpy, root, KeyPressMask);
while(1)
{
XNextEvent(dpy, &ev);
if (ev.type == KeyPress)
{
printf("key has been pressed\n");
break;
}
else printf("event type is %i\n",ev.type);

}

但我得到:Gdk-ERROR **:程序“test”收到 X Window System 错误。这可能反射(reflect)了程序中的错误。错误是“BadAccess(尝试访问私有(private)资源被拒绝)”。 (详细信息:序列号 7 error_code 10 request_code 33 minor_code 0) (程序员注意:通常情况下,X 错误是异步报告的; 也就是说,您将在导致错误一段时间后收到错误。 要调试您的程序,请使用 --sync 命令行运行它 更改此行为的选项。然后你可以得到一个有意义的 如果你中断 gdk_x_error() 函数,从你的调试器回溯。)中止...

谢谢

最佳答案

这意味着另一个程序已经绑定(bind)了 Control+Shift+"-"。尝试捕获另一个组合键。

关于c - Xlib 的全局热键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33816364/

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