Qt5 忽略原生触摸事件
Qt5 Ignoring Native Touch Events
几年前,我不得不在应用程序中实现触控功能,但我的公司仍在使用 Scientific Linux 6.4,它本身不支持触控,更不用说多点触控了。幸运的是,我能够将内核升级到 2.6.32-754,这让我可以访问多点触控事件,虽然它们不是本地处理的,但我能够在应用程序中编写自己的“驱动程序”,它会读取/dev/input/event 文件并使用内核中的 input_event
class 来捕获触摸事件并将它们转换为应用程序行为。
现在,两年后,我们终于转向 RedHat 8,显然现在有了原生触摸支持。几乎所有我的代码仍然是必需的,因为它非常特定于此应用程序,而且我认为重写任何东西都没有多大意义。但是,由于触摸事件现在是本地识别的,所以我看到一些问题,触摸按下事件将被注册两次——一次来自 OS,一次来自我的驱动程序。来自我的驱动程序的触摸事件是必需的,因为它们正在被我的驱动程序跟踪和处理。
有没有一种方法可以更新我的驱动程序以忽略干扰我的驱动程序的 OS 本机触摸事件而不影响我的驱动程序的操作?这在屏幕键盘上尤其普遍,它会导致在按下按钮时输入相同的字符两次。
这个问题的简单答案似乎是使用 xinput
禁用触摸屏设备输入,这给了我想要的行为。我不想重新编写处理它的代码的原因是因为在行为或性能上没有差异会花费大量的精力和时间。我不能只使用本机触摸,因为 UI 不仅使用单点触摸操作,它还使用由我的驱动程序解释的自定义手势。
几年前,我不得不在应用程序中实现触控功能,但我的公司仍在使用 Scientific Linux 6.4,它本身不支持触控,更不用说多点触控了。幸运的是,我能够将内核升级到 2.6.32-754,这让我可以访问多点触控事件,虽然它们不是本地处理的,但我能够在应用程序中编写自己的“驱动程序”,它会读取/dev/input/event 文件并使用内核中的 input_event
class 来捕获触摸事件并将它们转换为应用程序行为。
现在,两年后,我们终于转向 RedHat 8,显然现在有了原生触摸支持。几乎所有我的代码仍然是必需的,因为它非常特定于此应用程序,而且我认为重写任何东西都没有多大意义。但是,由于触摸事件现在是本地识别的,所以我看到一些问题,触摸按下事件将被注册两次——一次来自 OS,一次来自我的驱动程序。来自我的驱动程序的触摸事件是必需的,因为它们正在被我的驱动程序跟踪和处理。
有没有一种方法可以更新我的驱动程序以忽略干扰我的驱动程序的 OS 本机触摸事件而不影响我的驱动程序的操作?这在屏幕键盘上尤其普遍,它会导致在按下按钮时输入相同的字符两次。
这个问题的简单答案似乎是使用 xinput
禁用触摸屏设备输入,这给了我想要的行为。我不想重新编写处理它的代码的原因是因为在行为或性能上没有差异会花费大量的精力和时间。我不能只使用本机触摸,因为 UI 不仅使用单点触摸操作,它还使用由我的驱动程序解释的自定义手势。