我面临着这我的鼠标有问题。在我的特定情况下,重复点击事件在真实事件发生后不到 100 毫秒。我是否可以为我的显示服务器编写一个事件过滤器,以便所有鼠标事件都通过我编写的程序,并能够删除某些事件?我正在使用 X 显示服务器和很棒的 wm。
答案1
我会在内核输入层上执行此操作。该uinput
设备允许您编写生成输入层事件的用户空间程序。如果您使用该选项打开鼠标输入设备(在启动之间查看/dev/input/by-id
并/dev/input/by-path
正确识别它)grab
,则原始事件将专门发送到您的程序,而不是 X。X evdev 驱动程序将自动选择您的新设备。
这里是一个示例 C 程序,还有一个Python库(皮皮)如果您更喜欢 Python,也可能喜欢其他编程语言的库。文档和更多示例程序很容易通过谷歌搜索。
从 python-uinput 复制的用法示例:
生成键盘点击声
import uinput
with uinput.Device([uinput.KEY_E, uinput.KEY_H,
uinput.KEY_L, uinput.KEY_O]) as device:
device.emit_click(uinput.KEY_H)
device.emit_click(uinput.KEY_E)
device.emit_click(uinput.KEY_L)
device.emit_click(uinput.KEY_L)
device.emit_click(uinput.KEY_O)
移动鼠标光标
import uinput
with uinput.Device([uinput.REL_X, uinput.REL_Y,
uinput.BTN_LEFT, uinput.BTN_RIGHT]) as device:
for i in range(20):
device.emit(uinput.REL_X, 5)
device.emit(uinput.REL_Y, 5)
生成键盘组合
import uinput
with uinput.Device([uinput.KEY_LEFTALT, uinput.KEY_TAB]) as device:
device.emit_combo([uinput.KEY_LEFTALT, uinput.KEY_TAB])