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