Skip to content

Instantly share code, notes, and snippets.

@nickcheng
Last active July 12, 2021 01:13
Show Gist options
  • Save nickcheng/01dc00105bc21bbcd046bcd1957f60b2 to your computer and use it in GitHub Desktop.
Save nickcheng/01dc00105bc21bbcd046bcd1957f60b2 to your computer and use it in GitHub Desktop.
Hammerspoon script to turn cursor moving to scrolling while holding right button on trackball.
-- 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 scrollmulty = -4 -- negative multiplier makes mouse work like traditional scrollwheel
local scrollmultx = -1
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 * scrollmultx, dy * scrollmulty},{},'pixel')
-- put the mouse back
hs.mouse.setAbsolutePosition(oldmousepos)
return true, {scroll}
end)
overrideRightMouseDown:start()
overrideRightMouseUp:start()
dragRightToScroll:start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment