Keyboard Maestro: マウスカーソルをviキーバインドで片手操作する


![out.gif](https://qiita-image-store.s3.amazonaws.com/0/187895/c263ec23-18ae-c62f-8a6a-3e929434fa10.gif)

# マウス依存症の問題点

古来より「コーディング中にキーボードから手を離してマウスに手を移動する手間が苦痛で苦痛で仕方がない」という人種が一定数存在する。
 ※特にUNIX界隈に多数生息（筆者調べ）

また、昨今ではAppleの [Magic Mouse 2](https://www.apple.com/jp/shop/product/MLA02J/A/magic-mouse-2) という「Lightningケーブルで充電可能、2時間の充電で一ヶ月以上利用できる」素晴らしい入力デバイスが登場したが、これは
- 充電中はマウスをひっくり返し、Lightningケーブルを根元に深々と突き刺したお姿でしばらく放置する必要あり
- その間、周囲の好奇の目にさらされ続ける
…という若干の屈辱（？）を伴うものである。
しかし真の問題はそこではない。**充電中にマウスの利用が一切できない**仕様にあるのだ。

繁忙期にうっかり充電を切らしマウスの充電を開始した結果、
**「すわ！Macったらマウスが無いと割と何もできないでござる」**
という深刻な事態に陥った者達も、少なからず存在するのである。（筆者調べ）

## では、どうする？

Magic Mouse 2問題については、「充電完了まで同僚等を捕まえてしばし歓談する」「一旦帰宅して明日頑張る」「明日できることは明日やる」などの解決策が存在するが、冒頭の「マウスまで手を移動するのが苦痛で仕方無い問題」を考えると、根本解決とは言い難い。

そこで今回は「マウスカーソルをキーボードで操作する」ことで両者の問題を同時に解決すると同時に、viキーバインド風の片手操作を実現することでUNIXerや片手操作好き（仕事中も片手には常にお茶派含む）のニーズにも応えることが可能な、一石三〜四鳥のレシピを紹介しよう。

## 材料（利用環境）

- macOS Sierra（ver: 10.12.6）
- [Keyboard Maestro](https://www.keyboardmaestro.com/main/) (ver: 7.3.1)

今回の主役であるKeyboard Maestroは、別記事「[Mac: 開発向け厳選ツール群（随時更新）](http://qiita.com/rotors123/items/abeada773b32b826f3e9)」でも紹介している、泣く子も黙るMac用の自動化（マクロ）アプリである。
有償だが、圧倒的なカスタマイズ性能から叩き出されるお値段以上の価値は圧巻の一言に尽きる為、まずはトライアルからでも始めて欲しい。
なお、Dropbox同期を設定する事により、複数環境下でも常に同一のマクロ操作が可能となるのも非常にブラボーな点だ。














## 設定内容（マクロのレシピ）

紙面の関係でKeyboard Maestroの基本操作やマクロの追加手順の詳細は割愛するが、キャプチャを見ることで想像が付くと思うのでご容赦いただきたい。

※ 設定が面倒な方は、エクスポートしたマクロを[こちら](
https://github.com/rotors123/MouseActionMacros)に置いています。

### 1. 「Cmd+;」でマウス移動モードの有効／無効を切り替えられるようマクログループに登録

※筆者は右手だけで全てやりたいので、右側のCmdキーのみ使うようにしている。以降も同様。
￼
<img width="1072" alt="00.png" src="https://qiita-image-store.s3.amazonaws.com/0/187895/4800f2e9-8a6c-f413-e7b9-d6f58e14d63b.png">

### 2. マウスクリックを「Return」とスペースに割り当て

<img width="1072" alt="10.png" src="https://qiita-image-store.s3.amazonaws.com/0/187895/516178ae-40e6-4997-b960-faafad8757a7.png">
<img width="1072" alt="20.png" src="https://qiita-image-store.s3.amazonaws.com/0/187895/e966d8c9-3a3b-15e3-eacb-a769398c1bab.png">

￼
### 3. マウスカーソルの下移動（移動量大）を「j」、（移動量小）を「Cmd+j」及び「Opt+j」に割り当て
￼￼
￼<img width="1072" alt="30.png" src="https://qiita-image-store.s3.amazonaws.com/0/187895/e2de558c-c48d-25a4-8773-5b84ef7d4365.png">
<img width="1072" alt="40.png" src="https://qiita-image-store.s3.amazonaws.com/0/187895/0d0b48ae-1c36-3216-4f8b-6c5de0e79fe6.png">
<img width="1072" alt="50.png" src="https://qiita-image-store.s3.amazonaws.com/0/187895/b25c096c-c6d3-0cf3-5c5e-73194cb28170.png">


### 4. 上記と同様の考え方で、マウスカーソルの左・右・上移動をそれぞれ「h」「l」「k」に割り当て
（画像は多いので省略）。

### 5. 最後にお好みで、マウスのホイール操作をemacsバインド風に「Ctrl + n」「Ctrl + b」（ 上下ホイール）、「Ctrl + f」「Ctrl + p」（左右ホイール）に割り当て（完成）

<img width="1072" alt="150.png" src="https://qiita-image-store.s3.amazonaws.com/0/187895/c37cfcb4-fc3b-7256-eda6-0d218b35cff7.png">
<img width="1072" alt="160.png" src="https://qiita-image-store.s3.amazonaws.com/0/187895/ca9b413c-9f1d-9c40-2378-18628cf639f3.png">
<img width="1072" alt="170.png" src="https://qiita-image-store.s3.amazonaws.com/0/187895/3a0743ee-888d-7eb9-57ba-5328b6136dcb.png">
<img width="1072" alt="180.png" src="https://qiita-image-store.s3.amazonaws.com/0/187895/3ab0b02a-2c9f-af46-e0cc-37794a95d596.png">

※ 最初は設定していなかったが、あると爆発的に便利になるので紹介。

￼￼￼￼
# 実際の利用方法

![out.gif](https://qiita-image-store.s3.amazonaws.com/0/187895/c263ec23-18ae-c62f-8a6a-3e929434fa10.gif)

「Cmd+;」キーを押す度にモードのオン・オフが切り替わる。
あとは動画を見て想像して欲しい。

現状はドラッグ＆ドロップのみサポートしていないが、それ以外のマウス操作の殆どは片手かつキーボードだけで可能になるはずだ。
勿論、モードの切替を含む各操作のキーバインドは、お好みにより変更して欲しい。

では、良い旅を！