トラックボールを転がして縦横自由にスクロールしたい!が実現したらものすごく快適になった話【Mac】

スポンサーリンク

Mxergo

毎度でございます、えばさん(@Ebba_oBL)です。

トラックボールの扱いに慣れるか心配しながら導入してみたMX ERGOでしたが、想像以上に操作が楽な故に、最近ではほとんどの作業をトラックボールを使って行うようになりました。

そんな中で気になっていたことがあって、MX ERGOについているホイールを回して画面をスクロールさせると、ホイールの動き通りにスクロールするためにホイールのノッチに合わせてガタガタと美しくないスクロールになるんです。

トラックパッドでスクロールする時などは、所謂スマートフォンの画面をスクロールしている時のように無段階で、指の動くスピードにも追従しながらスムーズにスクロールできるわけです。

これをトラックボールをコロコロさせることで実現できないのか、と検索してみるとやはりあるもんですね。

先人の知恵というのはありがたいものです。

Hammerspoonを使えば縦横自由自在のスムーススクロール!

基本的には下記リンク先のページに書かれたことをまるっと真似させていただいたものです。

Macで右クリック+トラックボール操作で画面スクロールしたい!→ それ Hammerspoon でできます! – Qiita

簡単な流れは

1.Hammerspoonをダウンロードしてインストールする。
Release 0.9.97 · Hammerspoon/hammerspoon · GitHub

2.メニューバーにあるHammerspoonからOpen Configを選択して下記のスクリプトを書き込み保存する。
CleanShot 2022 11 17 at 23 20 39

-- 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()

3.Reload Configする。
CleanShot 2022 11 17 at 23 22 34

たったこれだけ。

常に使うものなのでPreferencesからログイン時に実行するように設定しておくと良いと思います。

この設定を行うだけで、トラックボールの右クリックを押しながらボールをコロコロすると超絶スムースなスクロールが手に入るというわけです。

これでますますトラックボール生活が快適になってしまいました。

コメント