我有一个便宜的 xp-pen 平板电脑,有 8 个额外的按钮。我想将它们映射到键盘快捷键,例如 Ctrl-Z,以便与 Krita/Gimp/etc 一起使用,但供应商的实用程序更像是一个概念验证。
我也尝试使用这里建议的 EasyStroke ,但是,呃。
xinput 将键盘识别为具有 12 个按钮的鼠标。我的计划是:
- 如那里所述,将平板电脑按钮重新映射到 100-107
- 通过 xbindkeys 捕获事件
- 根据活动窗口确定当前配置文件
- 通过 xev 或 xdotool 模拟击键
- [额外] 通过 udev 规则或类似的东西激活/停用这辆自行车
简单的情况下一切正常,例如键入键号,但更复杂的情况下“粘”键失败。
我将我的作品上传到 git repo。默认配置文件适用于 xdotool 和 xte 变体,krita 和 gimp 配置文件在这两种情况下都不起作用。
我在 handler.sh 中记录了事件,发现 xbindkeys 在执行 krita 或 gimp 配置文件后“丢失”了一些发布事件,但在默认情况下运行良好。我认为这可能是由于处理程序执行时间过长,并在单独的进程中启动它,但这并没有改变任何东西。
嗯..这个问题的原因可能是什么?
原因很简单:根据 gimp 的配置文件,xev 按下 control/shift 按钮,xbindkeys 跳过释放事件,因为 shift 仍然被按下。您可以复制配置的每个部分来处理这种情况,如下所示: