imwheel 在前面的对话框弹出时失效

imwheel 在前面的对话框弹出时失效

在 Kubuntu 14.04 (KDE 4.13.0) 中,我使用 imwheel 1.0.0pre12-9 将我的 LogiTech M510 的额外拇指按钮映射到某些程序的一些有用按键。这很有效,当我的电脑开启时它会顺利启动,甚至可以挂起到 RAM。

问题是,当 tv-browser.org 弹出自动通知时,imwheel 经常会停止运行。我在 KWin 中将这些通知配置为始终显示在顶部,并启用了焦点转移预防。此外,TVB 并不是唯一一个可以杀死 imwheel 的程序。

如果我在几秒钟内没有移动鼠标,imwheel 将会跳过 TVB 通知。如果我当时正在使用鼠标(滚动/左键单击/拖动),其中一个弹出窗口就会出现,此后 imwheel 的额外映射将失效。

我从控制台运行了 imwheel:没有显示任何错误。imwheel 进程仍然挂起,但不再执行任何操作。这种情况大约每小时发生一次,所以我几乎不能依赖当前发出命令的拇指按钮,我对其进行了编程,或者按照默认配置在 Firefox 中发出例如后退以绕过 imwheel。

我的问题:

  1. 还有谁遇到过这个问题吗?
  2. 针对这一复杂情况,如何以及在何处获取帮助?
  3. 我是否应该报告 KWin 的错误?在 launchpad 还是 kde 上游?
  4. 谁在维护 imwheel?只有一个过时的http://imwheel.sf.net自 2004 年起
  5. 您能否推荐一款更新的替代软件,用于在 Kubuntu / KDE 中将鼠标拇指按钮映射到按键?

感谢您的时间和建议

编辑:

找到了更多几乎可靠地杀死 imwheel 的方法。

  • 在 Firefox 中,当我将一个小的下载/图像保存到硬盘时,会出现一个绿色箭头图标的动画。如果我在该动画的两秒钟内单击拇指按钮(按 Ctrl+W 应该关闭当前选项卡),该选项卡不会关闭,并且 imwheel 在所有地方都不起作用(在其他程序/窗口中也是如此)

  • 切换窗口或桌面后,我启用了一些奇特的 3D 效果。如果我在这样的动画之后太快地点击其中一个拇指按钮,imwheel 也会失效。

我大胆猜测,imwheel 以某种方式尝试传递其派生的按键事件,这些按键事件从拇指按钮按下转换为某些图形覆盖,而图形覆盖本身并不是一个完整的窗口,当然也不应该获得键盘焦点。

最后我发现“imwheel --kill”可以更快地重新激活它(而不是注销并再次登录)。我甚至将其映射到全局键盘快捷键。

编辑2:

调试显示,imwheel 正在取消抓取 4 到 9 个按钮,然后无限等待,再也不会抓取它们。只有使用 -k 重新启动才能恢复。

最简单的情况是将映射的拇指按钮发送到配置的窗口,该窗口位于后台并且没有焦点。调试输出显示,imwheel 针对具有焦点的窗口进行测试,而不考虑鼠标在另一个窗口上的位置。没有任何普通规则适用于此窗口,但我在 ~/.imwheelrc 末尾制定了一条排除规则,如下所示:

“.*”@Priority=-1000@Exclude

匹配每个窗口。

删除/评论这最终排除规则解决了我的问题。imwheel 不会再崩溃了。

答案1

从命令行运行 imwheel 时,使用选项“-d -D”查看调试信息。

  1. 我以前遇到过 imwheel 崩溃/冻结的问题,但我的问题比您的问题更难重现。看来我们并不是唯一遇到 imwheel 问题的人:上游跟踪器上有两个建议的补丁(sourceforge.net/p/imwheel/patches/2/sourceforge.net/p/imwheel/bugs/8/)可能有助于解决您的问题。
  2. 由于上游项目似乎不活跃,您可能更愿意联系该项目的 Debian 维护者:chrsmrtn -AT -debian.org 您可以要求他们包含上述一个或两个补丁。软件包详细信息在此处:packages.qa.debian.org/i/imwheel.html
  3. 由于 imwheel 的行为不符合预期,因此问题很可能出在 imwheel 上。如果您针对此问题提交错误报告,则应针对 imwheel 提交该错误报告。
  4. 该项目的官方支持渠道是 Sourceforge 页面(参见 #1),但似乎已停止使用。(有关更多信息,请参阅 #2)
  5. Easystroke 是另一种选择。来自 wiki.archlinux.org/index.php/All_Mouse_Buttons_Working:

    转到“首选项”选项卡 > 附加按钮 > 添加,然后添加任何特殊按钮。

    注意:如果 easystroke 无法自动检测鼠标按钮,您可以手动指定。按钮标识符(数字)可以通过 xev 查看。

    转到“操作”选项卡 ->“添加操作”,为新操作命名,在“类型”中选择“键”,在“详细信息”中将“后退”按钮设置为“Alt+Left”,将“前进”按钮设置为“Alt+Right”,在“笔触”中单击正确的鼠标按钮(如果显示警告,请确认),瞧!您的鼠标按钮已配置完毕。

答案2

我最近也被这个咬了,它似乎是漏洞在 imwheel 中与 有关系@Exclude。显然,在激活排除后,负责恢复密钥抓取的代码从未执行过。

上面的链接里有一个补丁,这里显然,这个漏洞早在 2004 年就已为人所知 :D

相关内容