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