2016-07-12 4 views
1

Karabinerのサンプルコードを見て、ウィンドウ名に適用するフィルタを作成できますが、作成時にフィルタを適用したい新しいメール。ウィンドウ名が変わるので、代わりにApplication Bundle Identifierをフィルタリングしたいと思います。誰かがApplication Bundle IdentifierでフィルタリングするXMLの例を持っていますか?アプリケーションバンドル識別子のKarabinerフィルタを作成することは可能ですか

答えて

1

developer's manualは、アプリケーションバンドル識別子と使用例を判断するための両方の手順を提供します。私は自分のものを以下に挙げました。

まず、関心のあるアプリがKarabinerによって事前定義されているかどうかを判断する必要があります。 appdef.xmlにチェックを入れ、そのページでアプリのIDを検索します。

既存の定義に見つからなかった場合は、後で<item>ブロックで使用するアプリケーションの名前を定義する必要があります。 (これらはそれぞれ、WORDGOOGLE_CHROME、下の使用のためにappdef.xmlに予め定義された両方としてこれらのいずれも、優れた例である。)

<?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>タグに対応しているからです。

あなたは、単にこのようなあなたの<only>タグでよりappname S、含めるとマッチングされる複数のアプリケーションを定義することができます。

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

ます。また、逆の操作を行うことができ、除くすなわち、すべてのアプリケーション記載されているものを、 <only><not>に変更します。

関連する問題