如何对Xlib中的鼠标滚轮作出反应?

BPS

我想在用户将使用鼠标滚轮时执行代码。我编写了简单的示例应用程序,但无法正常工作。为什么我的应用程序对鼠标滚轮没有反应?

#include <X11/Xlib.h>
#include <X11/X.h>
#include <X11/Xutil.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
   Display *d;
   Window w;
   XEvent e;
   char *msg = "Hello, World!";
   int s;

   d = XOpenDisplay(NULL);
   if (d == NULL) {
      fprintf(stderr, "Cannot open display\n");
      exit(1);
   }

   s = DefaultScreen(d);
   w = XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 100, 100, 1,
                           BlackPixel(d, s), WhitePixel(d, s));
    XSelectInput(d, w, ExposureMask | ButtonPressMask);
   XMapWindow(d, w);

   while (1) {
      XNextEvent(d, &e);
      if (e.type == Expose) {
         XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 10, 10);
         XDrawString(d, w, DefaultGC(d, s), 10, 50, msg, strlen(msg));
      }
      if (e.type == ButtonPress){
        switch (e.xbutton.button){
            case Button4:
                printf("Scrolled up");
                break;
            case Button5:
                printf("Scrolled down");
                break;
            default:
                printf("cos");
        }
      }
   }

   XCloseDisplay(d);
   return 0;
}
安德烈·西多罗夫(Andrey Sidorov)

您的代码是正确的,之所以无法立即看到结果,是因为fprintf缓冲数据直到换行。将调试行替换为类似的内容printf("Scrolled up\n");,您将立即看到结果。或者,您可以setbuf(stdout, NULL);禁用缓冲。

请参阅以下相关的SO问题:为什么在调用之后,除非换行符位于格式字符串中,否则printf不会刷新?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

渲染如何在浏览器中作出反应

来自分类Dev

使用Javascript:如何使用成分作出反应全球?

来自分类Dev

如何等待数据填充作出反应?

来自分类Dev

后端架构的选择了原生作出反应

来自分类Dev

点符号在进口作出反应

来自分类Dev

对SignalR保持活动ping作出反应

来自分类Dev

JavaFX TextField对用户输入作出反应,但对setText()不作出反应

来自分类Dev

JavaFX TextField对用户输入作出反应,但对setText()不作出反应

来自分类Dev

如何作出反应的联系依赖于`useEffect`挂机状态?

来自分类Dev

如何在一个视频通道的尺寸/大小的变化作出反应的`MediaStream`?

来自分类Dev

如何使机器人对媒体消息(png,mp4等)作出反应?

来自分类Dev

discord.py对机器人的消息作出反应后如何发送消息

来自分类Dev

如何发布一条数据,然后停止对其作出反应?

来自分类Dev

差异路过的回调作出反应成分

来自分类Dev

eventReactive对所有输入值作出反应

来自分类Dev

更改值以对不同文件作出反应

来自分类Dev

P5 以 60 FPS 作出反应

来自分类Dev

如何在ASP.NET Core中使用客户端下载文件并作出反应?

来自分类Dev

用Python编程Discord机器人-如何使该机器人对自己的消息作出反应?

来自分类Dev

如何用鼠标滚轮水平滚动表格反应?

来自分类Dev

如何在TcxComboBox中抑制鼠标滚轮

来自分类Dev

如何在Chrome中启用鼠标滚轮?

来自分类Dev

如何在TcxComboBox中抑制鼠标滚轮

来自分类Dev

我可以整合多种功能,基于从回调设置状态作出反应的子组件?

来自分类Dev

为什么呼吁作出反应“的setState()”时所使用的传播运营商?

来自分类Dev

使用本机作出反应时,导航最大调用堆栈大小超过

来自分类Dev

我怎样才能节省数据时,我改变作出反应,本机屏幕?

来自分类Dev

执行失败的任务“:应用程序:compileDebugJavaWithJavac”。在运行作出反应本地项目

来自分类Dev

Bot Framework - 查找机器人已回答且用户对按钮作出反应的问题的方法?

Related 相关文章

  1. 1

    渲染如何在浏览器中作出反应

  2. 2

    使用Javascript:如何使用成分作出反应全球?

  3. 3

    如何等待数据填充作出反应?

  4. 4

    后端架构的选择了原生作出反应

  5. 5

    点符号在进口作出反应

  6. 6

    对SignalR保持活动ping作出反应

  7. 7

    JavaFX TextField对用户输入作出反应,但对setText()不作出反应

  8. 8

    JavaFX TextField对用户输入作出反应,但对setText()不作出反应

  9. 9

    如何作出反应的联系依赖于`useEffect`挂机状态?

  10. 10

    如何在一个视频通道的尺寸/大小的变化作出反应的`MediaStream`?

  11. 11

    如何使机器人对媒体消息(png,mp4等)作出反应?

  12. 12

    discord.py对机器人的消息作出反应后如何发送消息

  13. 13

    如何发布一条数据,然后停止对其作出反应?

  14. 14

    差异路过的回调作出反应成分

  15. 15

    eventReactive对所有输入值作出反应

  16. 16

    更改值以对不同文件作出反应

  17. 17

    P5 以 60 FPS 作出反应

  18. 18

    如何在ASP.NET Core中使用客户端下载文件并作出反应?

  19. 19

    用Python编程Discord机器人-如何使该机器人对自己的消息作出反应?

  20. 20

    如何用鼠标滚轮水平滚动表格反应?

  21. 21

    如何在TcxComboBox中抑制鼠标滚轮

  22. 22

    如何在Chrome中启用鼠标滚轮?

  23. 23

    如何在TcxComboBox中抑制鼠标滚轮

  24. 24

    我可以整合多种功能,基于从回调设置状态作出反应的子组件?

  25. 25

    为什么呼吁作出反应“的setState()”时所使用的传播运营商?

  26. 26

    使用本机作出反应时,导航最大调用堆栈大小超过

  27. 27

    我怎样才能节省数据时,我改变作出反应,本机屏幕?

  28. 28

    执行失败的任务“:应用程序:compileDebugJavaWithJavac”。在运行作出反应本地项目

  29. 29

    Bot Framework - 查找机器人已回答且用户对按钮作出反应的问题的方法?

热门标签

归档