【Karabiner】mac(10.11.6)で５ボタン以上のマウスの設定ができるのかという話

長いので先に結論を言うと概ね成功。

***前置き***
この腱鞘炎予防のワイヤレスマウスを買ったのがきっかけで
ヨドバシで実機触って気に入ったのが忘れられなくてアマゾンで思い出しポチ。
http://review.kakaku.com/review/K0000859376/

まず買う前からわかってはいたが、macではサイドボタンが使えないらしい。
けど行けるっしょと思っていたのでそこは気にしない。

でもサイドボタンなしでは生きていけないので、最低でも５ボタンのものはほしい。
とにかく５ボタンだと思って買った。
今回はなんと８ボタン？　DPIの設定いれると９ボタンか？多すぎて数えられないのだが
得した気分になりました。

***ここから本題***
実際使ってみるとまぁ、もともとmacでkarabinerいれてシエラにしてないので（噂によるとシエラだとカラビナ使えないらしいのでバージョン上げてない）サイドの２つは使えた。

サイドには、さらに２つあって、それをなんとかしたかった。
こいつが厄介で、押すとなぜか音量が上げ下げできるという設定になっていた。

karabinerで６ボタンと７ボタンの設定したったらええんやろ〜ぐらいに思っていたが
闇が深かった。
macがなのかな？そもそも６とか７とか８とかのボタンをボタンとして？認識してくれてない疑惑。
６番目と７番目はボリューム上げ下げで、８番目は左クリックが連打されるという扱いになっていて
現時点で８番目のほうはまだ使い物にならないまま。治し方不明。

目的は６番目と７番目をブラウザの進む戻るにしたかった。
ちなみに４番目と５番目は以前からデスクトップの切り替え（左右）を割り当てている。

***解決編***
最終的に解決した設定ファイルはこちら。
コメントアウトが汚いけど、どうでもいいのでそのままに。すみません。
あとkarabiner使える前提で話進めてるので詳細説明してないです。すみません。

```xml:private.xml
<?xml version="1.0"?>
<root>
    <list>
        <item>
            <devicevendordef>
                <vendorname>COMPX</vendorname>
                <vendorid>0x1d57</vendorid>
            </devicevendordef>
            <deviceproductdef>
                <productname>USB_Receiver</productname>
                <productid>0xfa60</productid>
            </deviceproductdef>

            <item>
                <name>MouseButton 4 and 5</name>
                <identifier>remap.mouse_button4_5</identifier>
                <!-- <device_only>DeviceVendor::COMPX, DeviceProduct::USB_Receiver</device_only> -->
                <!-- ボタン４でデスクトップ画面左切り替え、５で右に切り替え(mac)。 -->
                <autogen>
                    --PointingButtonToKey-- PointingButton::BUTTON4,
                    KeyCode::CURSOR_LEFT, ModifierFlag::CONTROL_L
                </autogen>
                <autogen>
                    --PointingButtonToKey-- PointingButton::BUTTON5,
                    KeyCode::CURSOR_RIGHT, ModifierFlag::CONTROL_L
                </autogen>
            </item>


            <item>
                <name>Mouse Side to Page Next and Pre</name>
                <identifier>private.mouse_side_to_page_up_down</identifier>
                <device_only>DeviceVendor::COMPX, DeviceProduct::USB_Receiver</device_only>
                <!-- ボリューム上げ下げボタンはそのままにして、ボタン６と７をブラウザ進む戻る -->
                <autogen>
                    __KeyToKey__ ConsumerKeyCode::VOLUME_UP,
                    KeyCode::JIS_BRACKET_RIGHT, ModifierFlag::COMMAND_L
                </autogen>
                <autogen>
                    __KeyToKey__ ConsumerKeyCode::VOLUME_DOWN,
                    KeyCode::JIS_BRACKET_LEFT, ModifierFlag::COMMAND_L
                </autogen>
            </item>
        </item>
    </list>
</root>

```

karabinerのEventViewerのDevicesタブでデバイス情報が見れる。
ここに接続してるマウスのvendoridとproductidが出ているので、これをコピー。

5~12行目でデバイスオンリーのためのデバイス指定があるので、ここでvendoridとproductidをペースト
33行目で```
<device_only>DeviceVendor::COMPX, DeviceProduct::USB_Receiver</device_only>
```
これを書くと該当itemがデバイス限定される様子。

これを書く目的は、macのキーボードのボリュームボタンを押した時にブラウザの進む戻るが適用されないようにするため。

```
<autogen>
    __KeyToKey__ ConsumerKeyCode::VOLUME_UP,
    KeyCode::JIS_BRACKET_RIGHT, ModifierFlag::COMMAND_L
</autogen>
<autogen>
    __KeyToKey__ ConsumerKeyCode::VOLUME_DOWN,
    KeyCode::JIS_BRACKET_LEFT, ModifierFlag::COMMAND_L
</autogen>
```
で、これを書いて、リロードして終了。
うまくいけばこれで通るかな。
説明が雑なので下部参考サイトも読んでみてください。
ちなみに参考サイトに書いてあったこれ、入れたけど意味あったのかな。。。
www.usboverdrive.com/

はあ。。苦労した。
マウスの６番目と７番目のボタンがボリューム上げ下げになってる前提なので、直しはしたけど。。。やっぱりなんでやねん。て気分。気分の問題。

今回のケースは同じ事例の人がそもそも国内に何人もいないようなもんだけど、まぁ他のマウスでも同じような現象は起きてるかもだし？参考になりそうな日本語の記事もなかったので書いてみました。

誰かの役に立てば幸いです。

ちなみにマウスの使い心地は良好。エンジニアは最高のマウスを使わないとね。

nest++エンジニア求人
https://www.wantedly.com/projects/78555

nest++HP
http://nestplus2.com/

参考サイト
https://github.com/tekezo/Karabiner/issues/329
https://pqrs.org/osx/karabiner/xml.html.en#devicedef
www.usboverdrive.com/