gpt4 book ai didi

events - Xlib 鼠标事件和 ButtonPressMask

转载 作者:行者123 更新时间:2023-12-02 02:20:24 25 4
gpt4 key购买 nike

我编写了一个简单的程序,它将报告特定窗口的按键和释放事件。就我而言,它主要是终端,因为我从终端调用程序。我能够获取终端窗口中发生的按键和释放事件(我在终端上将 XSelectInput() 与 KeyPressMask 和 KeyReleaseMask 一起使用),但同样不适用于 ButtonPress 和 ButtonRelease。不仅是这些,与鼠标相关的任何事件都不会被报告。知道为什么会发生这种情况吗?

#include
#include
#include
#include
#include
#include

int main() {
Display *display = XOpenDisplay(NULL);
KeySym k;
int revert_to;
Window window;
XEvent event;

XGetInputFocus(display, &window, &revert_to);
XSelectInput(display, window, KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask);

while(1)
{
XNextEvent(display,&event);
switch (event.type) {

case KeyPress : printf("Key Pressed\n"); break;
case KeyRelease : printf("Key Released\n"); break;
case ButtonPress : printf("Button Pressed\n"); break;
case ButtonRelease : printf("Button Released\n"); break;
case EnterNotify : printf("Enter\n"); break;
}
}
XCloseDisplay(display);
return 0;
}

最佳答案

您遇到的问题是 Xlib 仅向一个客户端发送 ButtonPress/Release 事件。我认为您正在使用的窗口已经有一个正在监听其鼠标事件的客户端。因此,您的 SelectInput 调用实际上并未设置 ButtonPress/Release 掩码,并生成了您未检查的错误。

关于events - Xlib 鼠标事件和 ButtonPressMask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1807075/

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