トラックボールマウスをカスタマイズしたら後悔した
宝の持ち腐れ状態だったトラックボールマウス「ロジクールMX ERGOアドバンス ワイヤレス トラックボール」を、MacBookのトラックパッド並の便利さを追求してカスタマイズしました。トラックボールに興味がある方もない方も、よければ御覧ください。
トラックボールをカスタマイズすると…
ボタンひとつでMission Controlを開けたり
ジェスチャーでデスクトップを移動したり
ボールを転がしてスクロールしたりすることが可能です。
動作を確認した環境はmacOS Big Sur バージョン 11.4です。
MX ERGOとトラックボールについて
本商品はロジクールのハイエンドマウスです。ボールを転がしてマウスポインタを操作できます。マウス自体を動かさないため、手首や腕の腱鞘炎を予防できるらしいです。詳細はロジクールの公式サイトや、以下のレビューなどを御覧ください。
- 【2年使用レビュー】MXERGO ロジクール MXTB1s 肩こり対策トラックボール - 地方でWEB暮らし
- トラックボール最上位、ロジクールのMX ERGO 購入レビュー | Entrance Part2
筆者は2018年頃から使っていますが、いまだに壊れる気配がありません。フル充電で4か月稼働という惹句にも偽り無く、2021年現在もバッテリーがヘタっている様子はありません。ポインタの効きが悪くなっても、ボールを外して掃除してあげれば元通りです。耐用年数を考えれば、意外と安い商品かもしれません。
余談ですが、ここまで壊れにくいとメーカーは儲からないんじゃないでしょうか。せめて次世代機がリリースされたら筆者は買い替えたいと思います。ちなみにMX ERGOは2017年発売で、給電用の端子がmicro USB Type-Bです。次世代機はおそらくType-Cにアップグレードされるでしょう。
いまさらカスタマイズした理由
急に話が変わりますが、ずっと欲しかった外付けキーボードをようやく購入しました。購入したのはHappy Hacking Keyboard Professional HYBRID Type-S 英語配列/墨です。
しかしながら、机が狭いために尊師スタイルを導入し、パームレストを置いたところMacBook Proのトラックパッドが完全にふさがってしまいました。
これには少し戸惑いました。そこで、「そういえば(めんどくさがって放置してたけど)MX ERGOってボタン割当てとか色々できたような…」と思い出したのがカスタマイズまでの経緯です。
右クリック+トラックボールで画面スクロール
実は、もともと少しだけカスタマイズしていました。右クリック+トラックボールをころころすることで画面スクロールできるよう設定していたんです。これはWindows環境なら専用のフリーウェアを使って簡単に実現できる機能ですが、Mac環境では少し複雑な設定が必要です。下記の記事でも詳細に解説されています。
- Macで右クリック+トラックボール操作で画面スクロールしたい!→ それ Hammerspoon でできます! - Qiita
- トラックボール型マウスで右クリック時は画面スクロールさせる設定 - あなたのスイッチを押すブログ
まず、HammerspoonというMacの自動化を行えるツールをインストールします。
KarabinderのGitHubのissueのコメントに、Lua言語で書かれたスクリプトがあるので、これをHammerspoonのコンソールにコピペして実行し、Reload config
しましょう。
-- HANDLE SCROLLING local deferred = false overrideRightMouseDown = hs.eventtap.new({ hs.eventtap.event.types.rightMouseDown }, function(e) --print("down")) deferred = true return true end) overrideRightMouseUp = hs.eventtap.new({ hs.eventtap.event.types.rightMouseUp }, function(e) -- print("up")) if (deferred) then overrideRightMouseDown:stop() overrideRightMouseUp:stop() hs.eventtap.rightClick(e:location()) overrideRightMouseDown:start() overrideRightMouseUp:start() return true end return false end) local oldmousepos = {} local scrollmult = -4 -- negative multiplier makes mouse work like traditional scrollwheel dragRightToScroll = hs.eventtap.new({ hs.eventtap.event.types.rightMouseDragged }, function(e) -- print("scroll"); deferred = false oldmousepos = hs.mouse.getAbsolutePosition() local dx = e:getProperty(hs.eventtap.event.properties['mouseEventDeltaX']) local dy = e:getProperty(hs.eventtap.event.properties['mouseEventDeltaY']) local scroll = hs.eventtap.event.newScrollEvent({dx * scrollmult, dy * scrollmult},{},'pixel') -- put the mouse back hs.mouse.setAbsolutePosition(oldmousepos) return true, {scroll} end) overrideRightMouseDown:start() overrideRightMouseUp:start() dragRightToScroll:start()
以下のように37行目のdx
やdy
を、-dx
や-dy
に記述を変更することで、ボールを転がした方向にスクロールするか、反転方向にスクロールさせるかを調整できます。ですが次の方法がオススメです。
local scroll = hs.eventtap.event.newScrollEvent({-dx * scrollmult, -dy * scrollmult},{},'pixel')
Scroll Reverserをインストールして調整することができます。筆者は下のように設定しています。
これで右クリックしながらころころしてスクロールできるはずです。
拡張ボタン設定
今回取り組んだのはこちらです。 Logicool Optionsをインストールすることで、ショートカットやジェスチャーを拡張ボタンに割り当てることができます。筆者は下記の記事を参考に設定しました。
割当可能なボタンは6か所です。
筆者の設定を例として公開します。
プレシジョンモードボタンをMission Controlに割り当てています。
拡張ボタンの1を
Shift
+Ctrl
+Tab
に、2をCtrl
+Tab
に割り当てています。これにより、高速でChromeのタブ移動が可能です。マウスホイールを左に倒すのを
Command
+←
、右に倒すのをCommand
+→
に割り当てています。これにより、テキスト入力中ならキャレットを行頭や行末に移動できます。また、Chromeならブラウザの戻るや進むといったアクションを行うことができます。最後に、マウスホイールの押し込みです。 マウスホイールの押し込み自体には中央ボタン(Chromeのタブ削除など)を割り当てています。また、押し込みながら上下左右いずれかにボールを転がすことで、ジェスチャーを起動するよう設定しています。押し込みながら上に転がせば音量を上げるように、押し込みながら右に転がせば右側のデスクトップへ移動できるようにしています。上下は音量の変更ではなく輝度の変更としてもいいかもしれません。
まとめ
別にトラックパッドがふさがってなかったとしても生産性爆上がりだったので、ちゃんと自分が使っている道具に向き合って、さっさとカスタマイズしておけばよかったです。
「なぜオレはあんなムダな時間を……」
MX ERGOと結構長い付き合いですが、これからもさらに愛着が湧きそうです。
また、質問やコメントいただけると嬉しいです。
その他の参考情報
上記リンク以外にも参考にさせて頂きました。 感謝申し上げます。
- HammerspoonでトラックボールマウスERGO M575の右クリックとボールで画面を自由にスクロールする[Mac] - tomi_kun’s diary
- Mac - トラックパッドとマウスのスクロール方向を逆に - アプリ「Scroll Reverser」 | PC設定のカルマ
追記(2021年7月13日)
M1 MacBookだと、スリープ復帰後にスクロールやボタン、アプリケーションごとのカスタマイズが初期化されてしまう不具合が時折発生します。筆者は再起動することで対応していたのですが、下記の記事の方法でLogicool Optionsをアクティビティモニターから強制終了することで、再起動せずに済みます。