Skip to content

Instantly share code, notes, and snippets.

@exceedsystem
Last active April 16, 2022 14:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save exceedsystem/f691d8f5698e096d03a213d268bd0be0 to your computer and use it in GitHub Desktop.
Save exceedsystem/f691d8f5698e096d03a213d268bd0be0 to your computer and use it in GitHub Desktop.
// License:MIT
local buttonNum = 4 -- Left small button is 3, Right small button is 4
local scrolling = false
local scrollSteps = -2 -- When negative, it scrolls in reverse.
hooksMouseUp = hs.eventtap.new({hs.eventtap.event.types.otherMouseUp}, function(e)
if (e:getProperty(hs.eventtap.event.properties.mouseEventButtonNumber) == buttonNum and scrolling) then
scrolling = false
return true
end
return false
end)
hooksMouseDragged = hs.eventtap.new({hs.eventtap.event.types.otherMouseDragged}, function(e)
if (e:getProperty(hs.eventtap.event.properties.mouseEventButtonNumber) ~= buttonNum) then
return false
end
scrolling = true
local curMousePos = hs.mouse.absolutePosition()
local posX = e:getProperty(hs.eventtap.event.properties.mouseEventDeltaX)
local posY = e:getProperty(hs.eventtap.event.properties.mouseEventDeltaY)
local scrollEvent = hs.eventtap.event.newScrollEvent({posX * scrollSteps, posY * scrollSteps}, {}, "pixel")
hs.mouse.absolutePosition(curMousePos)
return true, {scrollEvent}
end)
hooksMouseUp:start()
hooksMouseDragged:start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment