Articles of 事件

如何禁用Qt在捕获窗口小部件焦点导航的箭头键的Linux上的行为

我正在开发一个主要在MacOS上开发的Qt应用程序,但是这个应用程序也是在Linux上构build和testing的。 我们在主窗口类中定义一个keyPressEvent()方法来响应某些键盘事件。 其中,我们响应Qt :: Key_Left,Qt :: Key_Right和Qt :: Key_Space。 这在MacOS上很好用。 然而,在Linux上,我们从来没有得到这些事件。 做一些谷歌search(并确认它与我们的应用程序在Linux上的行为),似乎这样做的原因是Qt使用这些键在应用程序的GUI中button窗口小部件的键盘导航。 如果我按下Linux上的箭头键,我将遍历所有活动的button小部件,依次select每个小部件。 如果我单击空格键,则按下当前选定的button。 到目前为止,Googlesearch所能find的所有build议都是关于如何将滤镜子类化或应用到特定button,以避免这种行为,方法是让button忽略事件并将其传递。 但是我不想为每个我放入GUI的button部件做这件事。 这只是跛脚。 有没有办法全局禁用这种行为,并允许我的应用程序代码实际上得到所有的箭头键和空格键事件?

epoll_wait:maxevents

int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); 我对maxevents参数有点困惑。 假设我想写一个可以处理高达10k连接的服务器。 我将maxevents定义为10000,还是应该由于某种原因而降低?

无法从/ dev / input / event获取鼠标移动事件*

使用evtest工具testinginput事件时,我无法获得鼠标移动事件。 我只得到三个鼠标事件: left click event: type = EV_KEY, code = 272 (LeftBtn), value=1/0 right click event: type = EV_KEY, code = 273 (RightBtn), value = 1/0 mouse wheel event: type = EV_REL, code = 8 (Wheel), value = -1 没有鼠标移动事件 。 那么,我的鼠标移动事件,以及如何捕捉它? ps:在安装了virtualbox-addition的Ubuntu 11.04和Gentoo的VirtualBox-4上进行testing。

单声道高分辨率定时器(在Linux上)

我将移植到Linux(使用Mono)的50ms(对于串行通信)轮询的Windows C#应用程序。 我们目前正在使用ZylTimer(通过ZylSoft)在每个间隔产生“tick”事件,但是当这个库将pInvoke调用包装到windows多媒体库时,我们当然不能使用它。 //ie timZylComms.Tick += new ZylTimer.TickEventHandler(timZylComms_Tick); timTimeout.Tick += new ZylTimer.TickEventHandler(timTimeout_Tick); 所以,这导致我问,如果有任何我可以在单声道下使用的替代品? 最好的方法是用Tick事件扩展“秒表”类(以高分辨率计数)吗? 还是有任何Linux库我可以包装重现此function? 或者还有其他的方式来实现这一点? 欣赏任何想法。 编辑:这会有任何问题: internal class LinuxHiResTimer{ internal event EventHandler Tick; private System.Diagnostics.Stopwatch watch; internal int Interval{ get; set;} private bool enabled; internal bool Enabled { get{ return enabled; } set { if (value) { watch.Start (); Task.Run (tickGenerator); enabled = […]

拦截X11上的WM_DELETE_WINDOW?

我想拦截WM_DELETE_WINDOW消息,该消息发布到我正在编写的应用程序( AllTray )的特定窗口中,以便我可以对其执行操作,而不是接收应用程序。 如果可能的话,我现在正在通过gdk_display_add_client_message_filter在GDK级别尝试此操作,但是如果有Xlib解决scheme,我也会很高兴。 这似乎是可能的,但我似乎并没有理解我如何成功地做到这一点。 目前,我有两个程序(用C语言编写),我试图用它来解决这个问题, 第一个程序只是创build一个窗口并注册,它知道WM_DELETE_WINDOW , 第二个程序试图捕获这个消息,但似乎失败了; 它似乎没有做任何事情。 我是否理解了这个错误的文档,或者是否还有其他需要做的事情(或者我需要完全避免使用GDK)? 背景是这样的:在我重写AllTray之前,它会做的事情似乎是试图拦截一个鼠标点击Xbutton本身。 对于一些窗口pipe理器来说,这个工作正常,对于其他人来说根本不起作用,对于其他人来说,用户必须手动configuration它,并指示AllTrayclosures窗口的button。 我正在寻找的是不涉及LD_LIBRARY_PRELOAD的解决scheme,它将适用于任何符合当前标准的窗口pipe理器/应用程序组合,并在窗口closures时发送WM_DELETE_WINDOW ClientMessage。 更新 :我仍然在寻找答案。 我现在采取的路线是试图重新开窗并自己pipe理,但是我不能使它工作。 重新装修后,我似乎无法以任何方式恢复原状。 我可能会错过一些非常基本的东西,但是我不知道如何让它再次出现在我自己的窗口中,然后把它带回到屏幕上。 更新2 :好的,所以我打了另一堵砖墙。 X服务器文档说在窗口的事件掩码上设置StructureNotifyMask以接收MapNotify和ReparentNotify事件。 我有兴趣收到。 我目前的想法是创build一个窗口,作为一个事件接收器,然后当我得到有趣的事件的事件,通过创build和reparent行事。 但是,这似乎并没有工作。 我实际收到的唯一事件是PropertyNotify事件。 所以,这条路线似乎也不怎么样。

perf事件文档

我已经search了由perf stat命令监视的每个事件的含义的详尽解释; 我find了一个教程 ,很好地解释了如何使用perf工具的不同function。 但是,这并不能解释可以观察到的几个事件的意义(而且有很多!!)。 有人知道哪里是一个相当简单和完整的文件有关perf列表命令列出的事件? 特别是,我有兴趣找出我写的一些应用程序使用的CPU的百分比。 我可以直接通过cpu时钟或任务时钟来测量它吗? 这两个事件的意义是什么? 提前致谢

如何实现javafx鼠标事件“按住”?

我正在开发一个javafx项目,我需要一些类似的触摸事件推动和保持,但我需要它作为一个鼠标事件,因为我在接触Linux和javafx的麻烦,我已经尝试了触摸事件,但Ubuntu不会回应触摸事件。 那么关于如何实现事件或者如何激活Linux上的javafx触摸事件的任何想法?

如何在bash中获取MouseMove和MouseClick?

我想知道如何在bash脚本中为我自己的简单操作系统事件获取MouseClick和MouseMove事件。 请告诉我如何获得这些事件。

检测使用C#更改的活动窗口而不进行轮询

每当当前活动窗口改变时,如何调用callback函数。 我已经看到了如何使用CBTProc完成。 但是,全局事件并不容易与托pipe代码挂钩。 我有兴趣find一种不需要轮询的方式。 我更喜欢事件驱动的方法。 问候

C#事件处理程序

如何在C#中检查button.Click事件是否有任何处理程序关联? 如果(button.Click!= null)抛出编译错误。