将图形输入板按钮重新映射到键盘快捷键时出现问题

将图形输入板按钮重新映射到键盘快捷键时出现问题

我有一台便宜的 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
...

相关内容