 HammerspoonでトラックボールマウスERGO M575の右クリックとボールで画面を自由にスクロールする[Mac]

 今はMacBook AirLogicoolトラックボールマウスERGO M575を繋いで操作しています。はじめてトラックボールを使った時に困ったのは画面のスクロールでした。上下のスクロールはホイールがあるので出来るのですが左右に長い画面を横にスクロール出来なくて困りました。そのうちにLogicoolトラックボール専用のアプリLogicool optionで設定できる事がわかりジェスチャー機能で使っていました。ところがこの操作をトラックボールの右クリックとボールを回すだけで縦横無尽どんな方向にでも画面をスクロール出来る設定があると知り早速やってみました。この設定をするには無料のHammerspoonというアプリが必要でその設定に下記にあるサイトからコードを入手する必要があります。

 Hammerspoonのインストール

1.Hammerspoonをインストールします。ココ→https://www.hammerspoon.org/
2.ダウンロードしたzipファイルを解凍してHammerspoon.appをアプリケーションフォルダに移動させる。
3.「システム環境設定」→「 Security & Privacy 」→「 Accessibility 」でHammerSpoon.app のチェックボックスをONにする。

 Hammerspoonの設定

1.Hammerspoonを起動してMacのメニューバーにあるHammerspoonのアイコンをクリックする。
2.表れたメニューから「Open Config」をクリックする。
3.設定画面に下のサイトからコードを入手してコピー&ペーストする。https://github.com/tekezo/Karabiner/issues/814#issuecomment-337643019
4.再びMacツールバーのHammerspoonのアイコンをクリックして「Reload Config」をクリックして完了。

 設定出来たらトラックボールの右クリックしてボールを回してみて下さい。画面が自由な方向に動きます。普通のブラウザを観ているだけでは変わりがないように思えますが実は上下の画面のスクロールもコリコリとホイールを回すよりもボールでスクロールした方がスムーズで速い事が分かります。Hammerspoonが起動中は利用可能です。

 トラックボールを利用しているパソコンユーザーの数はどれくらいだろう。そしてそのうちのMacユーザーとなると極少数だろう。それでもこういった貴重なアプリやプログラムが開発、公開されている。Mac愛好家としては嬉しい限りです。また出会える機会を与えられてしあわせに思います。

See you tomorrow!

  

-- 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()
follow us in feedly