Posted at

OSX上のVirtualBoxを使う時だけKarabinerを無効にする

More than 3 years have passed since last update.


はじめに

Karabiner は OSX の様々なキーバインドを変更できる便利なアプリケーションです

私は、Macbook の英字キーボードで、右/左の Command キーを単体で押すとで「かな」/「英数」を切り替えられるようにしています。こうすると英字キーボードのレイアウトを使いつつも、IMEの切り替えが日本語配列のようになるため非常に有用です。


不便なところ

しかし、設定によってはVirtualBoxのゲストマシンだと設定が競合してしまうことがあります。

たとえば、Karabinerで 左右のコマンドキー(⌘)を「英数/かな」としても使う を有効にしていると、ゲストマシンでコマンドキーを叩いた時にSuperキーとしても機能するのですが、バッククォート( ` ) が入力されてしまいます。

そのため、Virtualboxのウィンドウがアクティブになっている時だけは Karabiner を無効にしたいと思っていたのですが、以下の方法で可能でした。


Karabiner の設定を特定のアプリケーションで無効にする方法


1. 設定ファイルを開く

Karabiner のウィンドウの 'Misc & Uninstall' タブにある Open private.xml ボタンを押すと Finder が開くので private.xml を開きます。


2. private.xml の編集

以下のようにします。

<?xml version="1.0"?>

<root>
<appdef>
<appname>VirtualBox</appname>
<equal>org.virtualbox.app.VirtualBoxVM</equal>
</appdef>
<item>
<name>Disable all settings while using VirtualBox</name>
<identifier>private.ignore_virtualbox</identifier>
<only>VirtualBox</only>
<autogen>__PassThrough__</autogen>
</item>
</root>


3. 設定を反映

再度 Karabiner の設定画面を開き、 Change Key タブにある Reload XML ボタンを押して設定を反映させます(このときエラーが起きる場合は、XMLが正しく編集できたか確認してください)。

次に、 Search テキストボックスに 「virtualbox」 と入力するとXMLで設定した Disable all settings while using VirtualBox という項目が出てくるはずなので、このチェックボックスを ON にします。


4. できているか確認

これで VirutalBox を使っている間は、Karabiner のすべての設定が無効になっているはずです。


おわりに

Karabiner の private.xml を編集することで、特定のアプリに対して特定の設定を有効にすることができるため、大変便利です。

その他の詳細な設定については、 private.xml Reference Manual を御覧ください。