Gesture button for Logitech 'gaming' mouse that doesn't support the Logitech Options app

This page summarizes the projects mentioned and recommended in the original post on /r/lua

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • LogitechMouseGestures

    Discontinued Lua script for basic mouse gestures for Windows 7 and above

    --[[ Author: Mark van den Berg Version: 0.8 Date: 01-05-2020 Special credits to https://github.com/wookiefriseur for showing a way to do this for windows gestures which inspired this script For some windows gestures check https://github.com/wookiefriseur/LogitechMouseGestures This also combined with some codes from Author: Mat Version: 1.11 Date: 2015-12-17 This script wil let you use a button on your mouse to act like the "Gesture button" from Logitech Options. It will also let you use another button on your mouse for navigating between browser pages/ assigned any software shortcut using gestures. This custom gestures created for software Adobe After Effects. The default settings below will be for the G4 - No Move Page Down (Page Down) - Up Position (P) - Down NumEnter (Control+Down-Arrow) - Left Backward Blending Mode (Control+Right-Arrow) - Right Forward Blending Mode (Control+Left-Arrow) The default settings below will be for the G5 - No Move Page Up (Page Up) - Up Text Tool (Ctrl + T) - Down Easy Ease (f9) - Left Show Keyframes (U) - Right Fit Comp (Shift + /) The default settings below will be for the G6 - No Move Move Layer In ([) - Up Show Graph Editor (Shift + f3) - Down Delete - Left Home - Right Move Layer Out (]) ]]-- -- The button your gestures are mapped to G1 = 1, G2 = 2 etc.. gestureButtonG4 = 4; -- The button your gestures are mapped to G1 = 1, G2 = 2 etc.. gestureButtonG5 = 5; -- The button your gestures are mapped to G1 = 1, G2 = 2 etc.. gestureButtonG6 = 6; -- The minimal horizontal/vertical distance your mouse needs to be moved for the gesture to recognize in pixels minimalHorizontalMovement = 2000; minimalVerticalMovement = 2000; -- Default values for horizontalStartingPosistion = 0; verticalStartingPosistion = 0; horizontalEndingPosistion = 0; verticalEndingPosistion = 0; -- Delay between keypresses in millies delay = 20 -- Here you can enable/disable features of the script ToggleNoMove = true ToggleMovedUp = true ToggleMovedDown = true ToggleMovedLeft = true ToggleMovedRight = true -- Toggles debugging messages debuggingEnabeld = false -- Event detection function OnEvent(event, arg, family) if event == "MOUSE_BUTTON_PRESSED" and (arg == gestureButtonG4 or arg == gestureButtonG5 or arg == gestureButtonG6) then if debuggingEnabeld then OutputLogMessage("\nEvent: " .. event .. " for button: " .. arg .. "\n") end -- Get stating mouse posistion horizontalStartingPosistion, verticalStartingPosistion = GetMousePosition() if debuggingEnabeld then OutputLogMessage("Horizontal starting posistion: " .. horizontalStartingPosistion .. "\n") OutputLogMessage("Vertical starting posistion: " .. verticalStartingPosistion .. "\n") end end if event == "MOUSE_BUTTON_RELEASED" and (arg == gestureButtonG4 or arg == gestureButtonG5 or arg == gestureButtonG6) then if debuggingEnabeld then OutputLogMessage("\nEvent: " .. event .. " for button: " .. arg .. "\n") end -- Get ending mouse posistion horizontalEndingPosistion, verticalEndingPosistion = GetMousePosition() if debuggingEnabeld then OutputLogMessage("Horizontal ending posistion: " .. horizontalEndingPosistion .. "\n") OutputLogMessage("Vertical ending posistion: " .. verticalEndingPosistion .. "\n") end -- Calculate differences between start and end posistions horizontalDifference = horizontalStartingPosistion - horizontalEndingPosistion verticalDifference = verticalStartingPosistion - verticalEndingPosistion -- Determine the direction of the mouse and if the mouse moved far enough if math.abs(verticalDifference) < minimalVerticalMovement and math.abs(horizontalDifference) < minimalHorizontalMovement then mouseNoMove (arg) end if horizontalDifference > minimalHorizontalMovement then mouseMovedLeft(arg) end if horizontalDifference < -minimalHorizontalMovement then mouseMovedRight(arg) end if verticalDifference > minimalVerticalMovement then mouseMovedUp(arg) end if verticalDifference < -minimalVerticalMovement then mouseMovedDown(arg) end end end -- Mouse Moved function mouseNoMove(buttonNumber) if debuggingEnabeld then OutputLogMessage("mouseMovedUp\n") end if buttonNumber == gestureButtonG4 and ToggleNoMove then performPageDown() end if buttonNumber == gestureButtonG5 and ToggleNoMove then performPageUp() end if buttonNumber == gestureButtonG6 and ToggleNoMove then performMoveIn() end end function mouseMovedUp(buttonNumber) if debuggingEnabeld then OutputLogMessage("mouseMovedUp\n") end if buttonNumber == gestureButtonG4 and ToggleMovedUp then performPosition() end if buttonNumber == gestureButtonG5 and ToggleMovedUp then performTexTool() end if buttonNumber == gestureButtonG6 and ToggleMovedUp then performShowGraphEdit() end end function mouseMovedDown(buttonNumber) if debuggingEnabeld then OutputLogMessage("mouseMovedDown\n") end if buttonNumber == gestureButtonG4 and ToggleMovedDown then performNumEnter() end if buttonNumber == gestureButtonG5 and ToggleMovedDown then performEasyEase() end if buttonNumber == gestureButtonG6 and ToggleMovedDown then performDelete() end end function mouseMovedLeft(buttonNumber) if debuggingEnabeld then OutputLogMessage("mouseMovedLeft\n") end if buttonNumber == gestureButtonG4 and ToggleMovedLeft then performBackwardBlend() end if buttonNumber == gestureButtonG5 and ToggleMovedLeft then performShowKey() end if buttonNumber == gestureButtonG6 and ToggleMovedLeft then performHome() end end function mouseMovedRight(buttonNumber) if debuggingEnabeld then OutputLogMessage("mouseMovedRight\n") end if buttonNumber == gestureButtonG4 and ToggleMovedRight then performForwardBlend() end if buttonNumber == gestureButtonG5 and ToggleMovedRight then performFitComp() end if buttonNumber == gestureButtonG6 and ToggleMovedRight then performMoveOut() end end -- Gesture Functions G4 function performPageDown() if debuggingEnabeld then OutputLogMessage("performPageDown\n") end firstKey = "pagedown" PressKey(firstKey); Sleep(20); ReleaseKey(firstKey) end function performPosition() if debuggingEnabeld then OutputLogMessage("performPosition\n") end firstKey = "p" PressKey(firstKey); Sleep(20); ReleaseKey(firstKey) end function performNumEnter() if debuggingEnabeld then OutputLogMessage("performNumEnter\n") end firstKey = "numenter" PressKey(firstKey); Sleep(20); ReleaseKey(firstKey) end function performBackwardBlend() if debuggingEnabeld then OutputLogMessage("performHome\n") end firstKey = "lshift" secondKey = "minus" pressTwoKeys(firstKey, secondKey); Sleep(20); ReleaseKey(firstKey) end function performForwardBlend() if debuggingEnabeld then OutputLogMessage("performFitComp\n") end firstKey = "lshift" secondKey = "equal" pressTwoKeys(firstKey, secondKey); Sleep(20); ReleaseKey(firstKey) end ----------------------------------------------------------------------------------------------------------------------------------------------------------- -- Gesture Functions G5 function performPageUp() if debuggingEnabeld then OutputLogMessage("performPosition\n") end firstKey = "pageup" PressKey(firstKey); Sleep(20); ReleaseKey(firstKey) end function performTexTool() if debuggingEnabeld then OutputLogMessage("performTexTool\n") end firstKey = "lctrl" secondKey = "t" pressTwoKeys(firstKey, secondKey); Sleep(20); ReleaseKey(firstKey) end function performEasyEase() if debuggingEnabeld then OutputLogMessage("performEasyEase\n") end firstKey = "f9" PressKey(firstKey); Sleep(20); ReleaseKey(firstKey) end function performHome() if debuggingEnabeld then OutputLogMessage("performHome\n") end firstKey = "home" PressKey(firstKey); Sleep(20); ReleaseKey(firstKey) end function performFitComp() if debuggingEnabeld then OutputLogMessage("performFitComp\n") end firstKey = "lshift" secondKey = "slash" pressTwoKeys(firstKey, secondKey); Sleep(20); ReleaseKey(firstKey) end ----------------------------------------------------------------------------------------------------------------------------------------------------------- -- Gesture Functions G6 function performMoveIn() if debuggingEnabeld then OutputLogMessage("performMoveIn\n") end firstKey = "lbracket" PressKey(firstKey); Sleep(20); ReleaseKey(firstKey) end function performShowGraphEdit() if debuggingEnabeld then OutputLogMessage("performShowGraphEdit\n") end firstKey = "lshift" secondKey = "f3" pressTwoKeys(firstKey, secondKey); Sleep(20); ReleaseKey(firstKey) end function performDelete() if debuggingEnabeld then OutputLogMessage("performDelete\n") end firstKey = "delete" PressKey(firstKey); Sleep(20); ReleaseKey(firstKey) end function performShowKey() if debuggingEnabeld then OutputLogMessage("performShowKey\n") end firstKey = "u" PressKey(firstKey); Sleep(20); ReleaseKey(firstKey) end function performMoveOut() if debuggingEnabeld then OutputLogMessage("performShowKey\n") end firstKey = "rbracket" PressKey(firstKey); Sleep(20); ReleaseKey(firstKey) end ----------------------------------------------------------------------------------------------------------------------------------------------------------- --] Helper Functions function pressTwoKeys(firstKey, secondKey) PressKey(firstKey) Sleep(delay) PressKey(secondKey) Sleep(delay) ReleaseKey(firstKey) ReleaseKey(secondKey) end

  • g-hub-mouse-gestures

    Lua script to use mouse gestures in macOS using g-hub

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts