Logitech G502 Hero is a high-performance gaming mouse with 11 programmable buttons. Logitech G HUB software is used to program these buttons as per our needs. If you’re a developer, you can use this mouse to improve your productivity. Today, I am going to tell you how to program the Logitech G502 mouse for JetBrains WebStorm IDE, using the Lua programming language. This method is a little bit advanced.
Prepare The IDE
First, you need to create shortcuts in WebStorm. Here, I created some shortcuts for some tasks. You can create your own shortcuts.
Ctrl + Shift + F — Global Search
Alt + Shift + F — Format Code
Ctrl + / — Comment Line
Ctrl + D — Duplicate Line
Alt + Shift + B — Create New Branch
Alt + Left Arrow — Go Back
Alt + Right Arrow — Go Forward
Adding Webstorm To GHub
After creating shortcuts, We need to create Macros In GHub software. Click the button on the top left corner and select “Games & Applications”. Then click on “ADD GAME OR APPLICATION”
Add Webstorm IDE as a program. Now in the added programs list, click on Webstorm IDE to activate it.
Creating Macros
While it is activated, in the bottom menu select “MACROS”. Now we have to create macros for the above Webstorm shortcuts in GHub. Click “ADD MACRO FOR THE SELECTED APP”. Give a name for your macro. Select NO REPEAT -> START NOW -> RECORD KEYSTROKES. Now press your shortcuts keys after pressing, click on STOP RECORDING -> Save. Create macros for all your shortcuts like this. If you have any problem please watch this video.
Lua Scripting
Now let’s dig into the scripting part. In the bottom menu, select PROFILE and click on scripting
It will open a window like this. Here we write our Lua script to program our G502
We write our code inside this “OnEvent(event, arg)” function. First, create a table including mouse button values, and create two mouse events. Don’t change these values.
Buttons = {
Foward = 5,
Bacward = 4,
Up = 8,
Down = 7,
LeftScroll = 11,
RightScroll = 10,
G = 6,
Profile = 9,
Mid = 3
}
MOUSE_CLICK = "MOUSE_BUTTON_PRESSED"
MOUSE_RELEASED = "MOUSE_BUTTON_RELEASED"
We can assign more than one macro to a single mouse button by checking the delay to press and release the mouse button. I will assign two macros for a single mouse button. For that let’s define two delays. These delays are in milliseconds
SHORT_DELAY = 350
LONG_DELAY = 1000
Next, in an if-else block, we check which button is pressed, and which mouse event is triggered, and execute the relevant macro according to the delay. Inside the PlayMacro()
function place your macro name
if arg == Buttons.G then
if event == MOUSE_CLICK then
PressedTime = GetRunningTime()
ClickDuration = nil
elseif event == MOUSE_RELEASED then
ClickDuration = GetRunningTime() - PressedTime
-- Find All
if ClickDuration < SHORT_DELAY then
PlayMacro("Find")
-- Take SS
else
PlayMacro("Screenshot")
end
end
return
end
Like the above code, we can write code for all buttons. The final code should be like this. You can extend this code for your macros as you need. This is only a sample code.
function OnEvent(event, arg)
debug = false
-- Disable All These Buttons In GHub
Buttons = {
Foward = 5,
Bacward = 4,
Up = 8,
Down = 7,
LeftScroll = 11,
RightScroll = 10,
G = 6,
Profile = 9,
Mid = 3
}
SHORT_DELAY = 350
LONG_DELAY = 1000
DOUBLE_CLICK_DELAY = 200
MOUSE_CLICK = "MOUSE_BUTTON_PRESSED"
MOUSE_RELEASED = "MOUSE_BUTTON_RELEASED"
if arg == Buttons.G then
if event == MOUSE_CLICK then
PressedTime = GetRunningTime()
ClickDuration = nil
elseif event == MOUSE_RELEASED then
ClickDuration = GetRunningTime() - PressedTime
-- Macro for short click
if ClickDuration < SHORT_DELAY then
PlayMacro("YOUR_MACRO_NAME_HERE")
-- Macro for long click
else
PlayMacro("YOUR_MACRO_NAME_HERE")
end
end
return
elseif arg == Buttons.Down then
if event == MOUSE_CLICK then
PressedTime = GetRunningTime()
ClickDuration = nil
elseif event == MOUSE_RELEASED then
ClickDuration = GetRunningTime() - PressedTime
-- Macro for short click
if ClickDuration < SHORT_DELAY then
PlayMacro("YOUR_MACRO_NAME_HERE")
-- Macro for long click
else
PlayMacro("YOUR_MACRO_NAME_HERE")
end
end
return
end
end
Save your Lua script by pressing Ctrl + S. To activate these macros, you need to disable the mouse buttons, that you used in the above code. Unless these macros will not work.
Now we are done. When you are using Webstorm, you can do your work more quickly. I hope this will help you to improve your coding speed.
References
- https://douile.com/logitech-toggle-keys/APIDocs.pdf — Logitech G-Series Lua API Douile
See you from another article. Happy Coding.
You can connect with me on https://hirushafernando.com/