見出し画像

【Mac】トラックボールマウスの挙動をMagic Mouseくらい滑らかにする方法

こんにちは西川です。
最近、Macでトラックボールマウスを使用する時に、Apple純正のMagic Mouseくらい動きをなめらかにしたい!と思ってトライしたので、備忘録的に残したいと思います。


経緯

僕は元々Magic Mouseを使っていたのですが、ネットでトラックボールを使っている人を見て好奇心からトラックボールマウスを購入して使い始めました。

しかしMacとサードパーティー製のマウスの組み合わせでは純正同士のヌルヌルした操作感にはならないので少し不満を感じており、「どうにかして操作感を近づけられないか」と思い調べてみたところ、限りなくMagic Mouseの操作感に近づけることができました。

ちなみに僕が使っているマウスはLogicoolのMX Ergoです。

手順

大きく分けて以下の2つの目的を達成したいと思います。

  1. スクロールの動きをヌルヌルにする

  2. トラックボールでスクロール可能にする


1. トラックボールの動きをヌルヌルにする

Macの操作感といえばあのヌルヌルした滑らかなスクロールですよね。
あれをサードパーティー製マウスで実現するために、「Mos」というありがたいソフトをインストールします(無料です)。

インストールをして起動できたら、画面右上にあるmacのメニューバーにmosアイコンが追加されていると思うので、そこから「Preferences」を開き、「Advanced」タブを開きます。
ここは好みですが、僕の場合は以下のように設定しています。

それぞれの項目の説明は以下です。Mosだけ使用する場合は、好みに合うように調整してみてください。
ただし、次に紹介する手順でトラックボールでもスクロールできるようにしたい場合はこの設定がオススメです。

  • Step
    = 移動量。1スクロールでどれだけ移動するか

  • Speed
    = 加速度。勢いよくスクロールしたときにそれに応じてどれだけ加速するか

  • Duration
    = デュレーション。スクロール時にどれだけ画面が遅れてついてくるか

どうでしょう、ヌルヌルスクロールできるようになったと思います。

2. トラックボールでスクロールできるようにする

次はトラックボールを使ってスクロールできるようにしたいと思います。
これができると、例えばMiroやFigmaといったツールで、トラックボールを使って縦横無尽に移動ができるようになります。

ここでは「hammerspoon」というソフトを使います(こちらも無料です)。

画面上部の「Download」からインストーラーをダウンロードして、インストールしてください。

インストールできたら、同じように画面右上のメニューバーにアイコンが追加されているのでそこから「Open 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 = -1   -- 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()

コピペできたらメニューバーから「Reload Config」をクリックして完了です。

これで、「右クリックしながらトラックボールを回す」ことでスクロールすることができるようになります。

補足ですが、コード内の「local scrollmult」の値が「-1」になっていますが、ここの値を-2,-3…と減らしていくと、トラックボールでのスクロール時の移動量を増やすことができます。
ただし「Mos」の方の設定も上乗せされるので、調整する場合はそちらも合わせていじってみることをオススメします。

local scrollmult = -1   -- negative multiplier makes mouse work like traditional scrollwheel

まとめ

どちらか片方のソフトでも充分便利にはなりますが、2つ合わせることでよりMagic Mouseの操作感に近づけることができました。
特にホワイトボードツールで縦横無尽に移動できるのがMagic Mouseの大きな利点だったので、それを再現できたのはとても嬉しいです。

参考


この記事が気に入ったらサポートをしてみませんか?