1

我查看了 Karabiner 的示例代码,您可以在其中创建适用于窗口名称的过滤器,但我想在创建新电子邮件时应用过滤器。由于窗口名称发生了变化,我想改为过滤应用程序包标识符。有人有过滤应用程序包标识符的 XML 示例吗?

4

1 回答 1

1

开发人员手册提供了确定应用程序包标识符的两个步骤以及使用示例。我在下面包括了我自己的一个。

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

如果在现有定义中找不到它,您将需要为<item>稍后将在块中使用的应用程序定义一个名称。(这两个都不是很好的例子,因为它们都在 appdef.xml 中预定义,分别在WORD和下使用GOOGLE_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>

而不是 using <equal>,顾名思义,它只匹配确切的字符串(包括大小写),您可以使用<prefix>or<suffix>分别匹配应用程序包标识字符串的开头或结尾。

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

<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>

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

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

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

于 2016-09-09T08:20:04.973 回答