是否可以为应用程序捆绑标识符创建 Karabiner 筛选器



我已经查看了 Karabiner 的示例代码,您可以在其中创建适用于窗口名称的过滤器,但我想在创建新电子邮件时应用过滤器。 由于窗口名称更改,我想改为筛选应用程序捆绑标识符。 是否有人有筛选应用程序捆绑标识符的 XML 示例?

开发人员手册†提供了确定应用捆绑包标识符的步骤以及用法示例。我在下面列出了我自己的一个。

您必须首先确定您感兴趣的应用程序是否由 Karabiner 预定义。检查 appdef.xml 并在该页面中搜索应用的标识符。

如果在现有定义中找不到它,则需要为稍后将在<item>块中使用的应用程序定义一个名称。(这些都不是很好的例子,因为它们都是在 appdef 中预定义的.xml分别用于 WORDGOOGLE_CHROME 下。

<?xml version="1.0"?>
<root>
  <appdef>
    <appname>MWORD</appname>
    <equal>com.microsoft.Word</equal>
  </appdef>
  <appdef>
    <appname>CHROME</appname>
    <equal>com.google.Chrome</equal>
  </appdef>
您可以使用

<prefix><suffix> 分别匹配应用捆绑包标识字符串的开头或结尾,而不是使用 <equal> ,顾名思义,它仅匹配完全相同的字符串(包括大小写)。

完成此操作后,在创建项目时,有几个筛选选项。首先是仅限于该特定应用程序,我相信这是您的目标。

<item>
  <identifier>private.fixscrollwheel</identifier>
  <name>Always Rotate Scroll Wheel</name>
  <only>CHROME</only>
  <autogen>
    __FlipScrollWheel__
    Option::FLIPSCROLLWHEEL_ROTATE,
  </autogen>
</item>

请注意<only>标记。这将上述项目限制为仅适用于捆绑标识符为 com.google.Chrome 的应用程序,因为这是CHROME顶部<appdef>标签中对应的内容。

您可以通过在 <only> 标记中包含更多appname来定义要匹配的多个应用程序,例如:

<only>CHROME, MWORD, MAIL</only>

您也可以通过<only>更改为 <not> 来执行相反的操作,即除列出的应用程序之外的所有应用程序。

† 原始开发人员手册链接现已失效,因为 Karabiner 不再积极维护。这个答案适用于卡拉比纳,而不是卡拉比纳元素,并且可能适用于也可能不适用于后者。

最新更新