オーディオとバイク日記

バイクやポータブルオーディオなどが趣味な人の記録。購入したもののレビューも書きたいと思っています。

TM-150r ボールでスクロールする設定(Mac向け Hammerspoon使用)

 左利きでも使えるトラックボールマウス!安い!ということで購入したロジクールのTM−150r。

LOGICOOL 有線 レーザー式 4ボタン マーブル TM-150r

LOGICOOL 有線 レーザー式 4ボタン マーブル TM-150r

 
 
 

 

 

追記 2021/08/16 

現在はTM-150rの後継機としてTM-150nが販売されています。大きな違いはないようです。現在も愛用していますが、裏の滑り止めゴムが外れてしまいました。しかし、ボタンやスクロールなどの操作は問題なく、通常通り使えています。

 

このマウスはスクロールの部分がなく、その点が不便なわけですがMacでは他のアプリなどを使って設定すればトラックボールの部分でスクロールができる。

という情報があったので購入しました。

 

ところがこのマウス、最近のOSアップデートによってトラックボールの部分でスクロールできるよう設定するアプリがSierra以降使えなくなっていて現在はKarabinerというアプリで代用されている模様。

 

で、このKarabinerを入れれば解決だろうと思ってやってみたところMapping RightClick+CursorMove to ScrollWheelのチェックマークがない!

 

\(^o^)/オワタ

 

このままではせっかく買ったマウスが無駄になってしまってまずいと思い、色々サイトを探していると解決できたような記述を発見。

github.com

 

英語のサイトだったのでグーグル先生に翻訳してもらって解読してみると

Hammerspoonというアプリで解決できそうな感じが。

 

設定方法

まず、Hammerspoonをダウンロード。インストールします。

Hammerspoonを開いたら上メニュー(バー?)のFileからOpen configをクリック。

すると、xcodeのようなコードを書く画面が出てきます。

 

このコードを書く画面に上記サイトの

 

I had the same problem, but I prefer to use right mouse button to init scrolling,という文章から始まる人の

 

-- HANDLE SCROLLING

local deferred = false

 

から始まるソースをコピー。

Hammerspoonに貼り付けてReload configをクリック。コードの内容が読み込まれ、エラーが出なければ成功です。

 

追記 2021/08/16

私が今使っているHammerspoonのコードを書き込んでおきます。

 

-- HANDLE SCROLLING
local deferred = false
overrideRightMouseDown = hs.eventtap.new({ hs.eventtap.event.types.rightMouseDown }, function(e)    --print("down"))    deferred = true    return trueend)
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 falseend)

local oldmousepos = {}local scrollmult = -4 -- negative multiplier makes mouse work like traditional scrollwheeldragRightToScroll = 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()

 

 

エラーが出るときはシステム環境設定のセキュリティーとプライバシーのアクセリビリティからHammerspoonの制御を許可してないと思うので許可してください(最初これやってなくてエラー出て少し悩みました)

 

これで左(大)ボタンを押しながらトラックボールを動かすとスクロールできるようになると思います。

Logicoolのアプリで小さなボタン2つの設定もできます。私は戻るを右ボタン(小)に、進むを左ボタン(小)に設定しています。