我查看了Karabiner的示例代码,您可以在其中创建适用于窗口名称的过滤器,但我想在创建新电子邮件时应用过滤器。由于窗口名称更改,我想过滤应用程序包标识符。是否有人在Application Bundle Identifier上有过滤的XML示例?
答案 0 :(得分:1)
developer's manual提供了确定应用包标识符的两个步骤以及使用示例。我在下面列出了我自己的一个。
您必须首先确定您感兴趣的应用是否由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>
您可以使用<equal>
或<prefix>
来匹配应用的开头或结尾,而不是使用<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
标记中添加更多<only>
来定义要匹配的多个应用,例如:
<only>CHROME, MWORD, MAIL</only>
您也可以通过将<only>
更改为<not>
来执行反向操作,即所有应用除所列的应用1>}。