Karabiner Appマウスとトラックパッドを区別して戻る進むの設定 private.xml



Mac OS Xのキーボード挙動の編集には欠かせないアプリ `Karabiner` (旧: KeyRemap4MacBook) でマウス操作時と、MacBookのトラックパッド＆Magic TrackPad2操作時で挙動が被らないようにする設定です。

Karabinerの設定ファイル`private.xml`をいじってボタン多めのマウスに独自に戻る・進むを付けたところ、トラックパッドの二本指左右フリックにも影響してしったため、その対策となります。

Karabinerアプリを開いて一番右上のタブ`Misc & Uninstall`を開き、`Custom Settings`項目の`Open private.xml`を押してファイルを編集します。
編集が完了したら一番左上の`Change Key`を開き、`Reload XML`ボタンを押してリストへ反映します。


```xml
<?xml version="1.0"?>
<root>
  <item>
    <name>Mouse &amp; Trackpad</name>
    <!-- Mouse -->
    <item>
      <name>FFF Button 4 5 to Back Forward</name>
      <identifier>private.my_button_4_5_to_back_forward</identifier>
      <appendix>(only Chrome, Firefox, Safari, Finder)</appendix>
      <only>GOOGLE_CHROME, FIREFOX, SAFARI, FINDER</only>
      <device_not>
        DeviceVendor::APPLE_INC, DeviceProduct::MAGIC_TRACKPAD,
        DeviceVendor::Apple_Bluetooth, DeviceProduct::MAGIC_TRACKPAD_0x0265,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0218,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x021a,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0220,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0223,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0236,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0237,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0245,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0249,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x024d,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0252,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0262,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0274,
      </device_not>
      <autogen>
        __KeyToKey__
        PointingButton::BUTTON4,
        KeyCode::BRACKET_LEFT, ModifierFlag::COMMAND_L
      </autogen>
      <autogen>
        __KeyToKey__
        PointingButton::BUTTON5,
        KeyCode::BRACKET_RIGHT, ModifierFlag::COMMAND_L
      </autogen>
    </item>

    <!-- trackpad -->
    <item>
      <name>FFF Trackpad Back Forward</name>
      <identifier>private.my_trackpad_back_forward</identifier>
      <appendix>(only Chrome, Firefox, Safari, Finder)</appendix>
      <only>GOOGLE_CHROME, FIREFOX, SAFARI, FINDER</only>
      <device_only>
        DeviceVendor::APPLE_INC, DeviceProduct::MAGIC_TRACKPAD,
        DeviceVendor::Apple_Bluetooth, DeviceProduct::MAGIC_TRACKPAD_0x0265,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0218,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x021a,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0220,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0223,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0236,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0237,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0245,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0249,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x024d,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0252,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0262,
        DeviceVendor::APPLE_COMPUTER,DeviceProduct::APPLE_INTERNAL_KEYBOARD_TRACKPAD_0x0274,
      </device_only>
      <autogen>
        __ScrollWheelToKey__ ScrollWheel::LEFT, ModifierFlag::NONE,
        KeyCode::BRACKET_RIGHT, ModifierFlag::COMMAND_L
      </autogen>
      <autogen>
        __ScrollWheelToKey__ ScrollWheel::RIGHT, ModifierFlag::NONE,
        KeyCode::BRACKET_LEFT, ModifierFlag::COMMAND_L
      </autogen>
    </item>
  </item>
</root>
```

# 各タグの簡易説明
## `name`
Karabinerアプリ上のリストに表示される名前です。FFFなど名前を含めて検索しやすいようにしています。

## `identifier`
item固有のID。適当に他のitemと被らないように名づけます。

## `appendix`
Karabinerアプリ上のリストに表示される説明です。

## `only`, `not`
`only`タグにアプリ名を指定するとそのアプリ上でのみに影響します。
逆に指定以外のアプリのみに反映したい場合は以下のように`not`タグを使います。
`<not>EMACS, TERMINAL, VIRTUALMACHINE, X11, ECLIPSE</not>`
大体はあらかじめ用意されていると思いますが、[`appdef`](https://pqrs.org/osx/karabiner/xml.html.en#appdef)タグでアプリのbundle identifierを指定して定義することが可能です。

## `device_only`, `device_not`
`device_only`タグにマウスやトラックパッドの固有値を指定するとその機種の操作にのみ反映されます。`device_not`タグは指定した機種以外を対象とします。
とりあえず当てはめるためトラックパッドの種類を列挙しました。まとめて記述できないのかな？

## `autogen`
操作を入れ替える記述をします。
記述可能な内容の詳細はこちら[`autogen`](https://pqrs.org/osx/karabiner/xml.html.en#autogen-syntax)