100% found this document useful (2 votes)
2K views43 pages

G-Series Lua API Guide

The document provides an overview and reference for the G-series Lua API, which allows for advanced scripting of G-series gaming keyboards using the Lua programming language. It includes documentation on functions for handling key presses, mouse input, macros, and more. The primary event handler OnEvent is used to detect hardware events and trigger scripted responses.

Uploaded by

mehmetogmen
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
2K views43 pages

G-Series Lua API Guide

The document provides an overview and reference for the G-series Lua API, which allows for advanced scripting of G-series gaming keyboards using the Lua programming language. It includes documentation on functions for handling key presses, mouse input, macros, and more. The primary event handler OnEvent is used to detect hardware events and trigger scripted responses.

Uploaded by

mehmetogmen
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

G-series Lua API

V8.50

Overview and Reference









1
Contents

Contents ............................................................................................................................. 2
Overview............................................................................................................................. 3
Reference............................................................................................................................ 4
Standard Lua 5.1 Libraries.................................................................................................. 40
Appendix A........................................................................................................................ 41

2
Overview



The G-series Lua API is a set of functions using the Lua programming language and provides
advanced scripting functionality for the G-series line of gaming keyboards.
This document assumes a working knowledge of the Lua programming language. Further
information can be obtained from [Link].
Every G-series Profile has a default Lua script bound to it which can be edited and customized.
The script is invoked using an event handler, OnEvent. Users may examine the various events
exposed in this handler to perform their desired actions.
3
Reference
Functions
OnEvent.............................................................................................................................. 5
GetMKeyState...................................................................................................................... 7
SetMKeyState...................................................................................................................... 8
Sleep.................................................................................................................................. 9
OutputLogMessage............................................................................................................. 10
GetRunningTime................................................................................................................ 11
GetDate............................................................................................................................ 12
ClearLog............................................................................................................................ 13
PressKey........................................................................................................................... 14
ReleaseKey........................................................................................................................ 15
PressAndReleaseKey........................................................................................................... 16
IsModifierPressed............................................................................................................... 17
PressMouseButton.............................................................................................................. 18
ReleaseMouseButton.......................................................................................................... 19
PressAndReleaseMouseButton............................................................................................. 20
IsMouseButtonPressed ....................................................................................................... 21
MoveMouseTo ................................................................................................................... 22
MoveMouseWheel .............................................................................................................. 23
MoveMouseRelative............................................................................................................ 24
MoveMouseToVirtual .......................................................................................................... 25
GetMousePosition............................................................................................................... 26
OutputLCDMessage............................................................................................................ 27
ClearLCD........................................................................................................................... 28
PlayMacro.......................................................................................................................... 29
AbortMacro........................................................................................................................ 30
IsKeyLockOn ..................................................................................................................... 31
SetBacklightColor............................................................................................................... 32
OutputDebugMessage........................................................................................................ 33
SetMouseDPITable............................................................................................................. 34
SetMouseDPITableIndex..................................................................................................... 35
EnablePrimaryMouseButtonEvents....................................................................................... 36
G13 Programming.............................................................................................................. 37


4
OnEvent
The OnEvent() function serves as the event handler for the script. You will need to implement
this function.
f unct i on OnEvent ( event , ar g [ , f ami l y] )

end
Parameters
event
String containing the event identifier.
arg
Argument correlating to the appropriate identifier.
family
Family of device creating the hardware event. Empty if event is not hardware
specific. Use this if you need to distinguish input from multiple devices.
Family Devices
kb Keyboard devices (G15, G11, G19, etc)
lhc Left handed controllers (G13, etc)
mouse Supported gaming mouse (G300, G400, etc)

Return Values
None
Remarks
The following is the list of identifiers and their arguments:
Event arg Description
"PROFILE_ACTIVATED" None Profile has been activated.
This is the first event seen.
"PROFILE_DEACTIVATED" None Profile has been deactivated.
This is the last event seen.
"G_PRESSED" 1=G1
18=G18
n = G
n
G Key pressed
"G_RELEASED" 1=G1
18=G18
n = G
n
G Key released
"M_PRESSED" 1=M1
2=M2
3=M3
M Key pressed
"M_RELEASED" 1=M1 M Key released
5
2=M2
3=M3
MOUSE_BUTTON_PRESSED 2=Mouse Button 2
3=Mouse Button 3
4=Mouse Button 4

Mouse Button Pressed
NOTE: Left Mouse Button (1) is
not reported by default. Use
EnablePrimaryMouseButtonEvents
to override this.
MOUSE_BUTTON_RELEASED 2=Mouse Button 2
3=Mouse Button 3
4=Mouse Button 4
..
NOTE: Left Mouse Button (1) is
not reported by default. Use
EnablePrimaryMouseButtonEvents
to override this.

Example
- - Thi s i s t he pr i mar y event handl er
- - You must i mpl ement t hi s f unct i on

f unct i on OnEvent ( event , ar g)
i f ( event == " PROFI LE_ACTI VATED" ) t hen
- - pr of i l e has been act i vat ed
end

i f ( event == " PROFI LE_DEACTI VATED" ) t hen
- - pr of i l e has been deact i vat ed
end

i f ( event == " G_PRESSED" and ar g == 1) t hen
- - G1 has been pr essed
end

i f ( event == " G_RELEASED" and ar g == 1) t hen
- - G1 has been r el eased
end

i f ( event == " M_PRESSED" and ar g == 1) t hen
- - M1 has been pr essed
end

i f ( event == " M_RELEASED" and ar g == 1) t hen
- - M1 has been r el eased
end

i f ( event == " MOUSE_BUTTON_PRESSED" and ar g == 6) t hen
- - Mouse But t on 6 has been pr essed
End

i f ( event == " MOUSE_BUTTON_RELEASED" and ar g == 6) t hen
- - Mouse But t on 6 has been r el eased
end
end


6
GetMKeyState
GetMKeyState() returns the current state of the M keys.
mkey GetMKeyState( [ f ami l y] ) ;
Parameters
family
Optional family name of device if you want to distinguish between multiple
attached devices. Default is kb.
Family Devices
kb Keyboard devices (G15, G11, G19, etc)
lhc Left handed controllers (G13, etc)

Return Values
mkey
1 = M1, 2 = M2, 3 = M3
Remarks
Example
- - Get t he cur r ent M Key st at e

cur r ent _mkey = Get MKeySt at e( )

7
SetMKeyState
SetMKeyState() sets the current state of the M keys. NOTE: Calling GetMKeyState
immediately afterwards, will likely return the previous state. Use the OnEvent handler to
determine when the operation has completed.
mkey SetMKeyState( mkey, [ f ami l y] ) ;
Parameters
mkey
1 = M1, 2 = M2, 3 = M3
family
Optional family name of device if you want to distinguish between multiple
attached devices. Default is kb.
Family Devices
kb Keyboard devices (G15, G11, G19, etc)
lhc Left handed controllers (G13, etc)

Return Values
None
Remarks
Example
- - Set t he cur r ent M Key st at e t o M1 when G1 i s pr essed

f unct i on OnEvent ( event , ar g)
i f ( event == " G_PRESSED" and ar g == 1) t hen
Set MkeySt at e( 1) ;
end
end
8
Sleep
Sleep() will cause the script to pause for the desired amount of time.
Sleep( t i meout ) ;
Parameters
timeout
Total time to sleep in milliseconds.
Return Values
nil
Remarks
Scripting runs on separate thread than the main Profiler, so pausing the script will not
affect it.
You can use this function to simulate delays.
Deactivation of the profiler will wait 1 second for the script to finish, after which the
script will be forcefully aborted. Take precaution if using a long timeout.
Example
- - Sl eepi ng f or 20 mi l l i seconds

Sl eep( 20)


9
OutputLogMessage
OutputLogMessage() will send log messages into the script editor.
OutputLogMessage( . . . ) ;
Parameters
message
Printf style, formatted string containing the message.
Return Values
nil
Remarks
Mirror of [Link]().
You must manually insert a carriage return "\n" to denote end of line.
Example
- - Send out " Hel l o Wor l d"

Out put LogMessage( " Hel l o Wor l d %d\ n" , 2007)

10
GetRunningTime
GetRunningTime() returns the total number of milliseconds elapsed since the script has been
running.
el apsed GetRunningTime( ) ;
Parameters
None
Return Values
elapsed
Integer value containing the elapsed time in milliseconds.
Remarks
You can use this to calculate timing in your script.
Example
- - Di spl ay t he scr i pt r unni ng t i me

Out put LogMessage( " Thi s scr i pt has been r unni ng f or : %d ms" ,
Get Runni ngTi me( ) )

11
GetDate
Use GetDate() to retrieve the formatted date
dat e GetDate ( [ f or mat [ , t i me] ] )
Parameters
format
Optional date format string.
time
Optional time table.
Return Values
date
A string or a table containing the user's machine's current date and time (or the
time represented by time), formatted according to the given string format. If one wishes
to supply your own format string, then it uses the same rules as strftime(). The special
string *t tells the date() function to return a table.
Remarks
Mirror of [Link]().
Example
- - Di spl ay t he cur r ent dat e/ t i me

Out put LogMessage( " Today s dat e/ t i me i s: %s\ n" , Get Dat e( ) )

12
ClearLog
The ClearLog() function clears the output window of the script editor.
ClearLog( )
Parameters
None.
Return Values
nil
Remarks
None.
Example
- - Cl ear t he scr i pt edi t or l og

Out put LogMessage( " Thi s message wi l l sel f dest r uct i n 2 seconds\ n" )
Sl eep( 2000)
Cl ear Log( )

13
PressKey
The PressKey() function is used to simulate a keyboard key press. NOTE: Calling
IsModifierPressed or IsKeyLockOn immediately afterwards for a simulated modifier or lock
key will likely return the previous state. It will take a few milliseconds for the operation to
complete.
PressKey( scancode [ , scancode] ) ;
PressKey( keyname [ , keyname] ) ;
Parameters
scancode
Specifies the numerical scancode of the key to be pressed.
keyname
Specifies the predefined keyname of the key to be pressed.
Return Values
nil
Remarks
If multiple keys are provided as arguments, all keys will be simulated with a press.
For scancode and keyname values, refer to Appendix A.
Example
- - Si mul at e " a" pr essed usi ng t he scancode
Pr essKey( 30)

- - Si mul at e " a" pr essed usi ng t he keyname
Pr essKey( " a" )

- - Si mul at e " a" and " b" bei ng pr essed
Pr essKey( " a" , " b" )

14
ReleaseKey
The ReleaseKey() function is used to simulate a keyboard key release.
ReleaseKey( scancode [ , scancode] ) ;
ReleaseKey( keyname [ , keyname] ) ;
Parameters
scancode
Specifies the numerical scancode of the key to be pressed.
keyname
Specifies the predefined keyname of the key to be pressed.
Return Values
nil
Remarks
If multiple keys are provided as arguments, all keys will be simulated with a release.
For scancode and keyname values, refer to Appendix A.
Example
- - Si mul at e " a" r el eased usi ng t he scancode
Rel easeKey( 30)

- - Si mul at e " a" r el eased usi ng t he keyname
Rel easeKey( " a" )

- - Si mul at e " a" and " b" bei ng r el eased
Rel easeKey( " a" , " b" )

15
PressAndReleaseKey
The PressAndReleaseKey() function is used to simulate a keyboard key press followed by a
release. NOTE: Calling IsModifierPressed or IsKeyLockOn immediately afterwards for a
simulated modifier or lock key will likely return the previous state. It will take a few milliseconds
for the operation to complete.
ReleaseKey( scancode [ , scancode] ) ;
ReleaseKey( keyname [ , keyname] ) ;
Parameters
scancode
Specifies the numerical scancode of the key to be pressed.
keyname
Specifies the predefined keyname of the key to be pressed.
Return Values
nil
Remarks
If multiple keys are provided as arguments, all keys will be simulated with a press and a
release.
For scancode and keyname values, refer to Appendix A.
Example
- - Si mul at e " a" pr essed and r el eased usi ng t he scancode
Pr essAndRel easeKey( 30)

- - Si mul at e " a" pr essed and r el eased usi ng t he keyname
Pr essAndRel easeKey( " a" )

- - Si mul at e " a" and " b" bei ng pr essed and r el eased
Pr essAndRel easeKey( " a" , " b" )

16
I sModifierPressed
The IsModifierPressed() function is used to determine if a particular modifier key is currently
in a pressed state.
bool ean IsModifierPressed ( keyname ) ;
Parameters
keyname
Specifies the predefined keyname of the modifier key to be pressed. The name
must be one of the following:
Modifier Description
"lalt", "ralt", "alt" Left, right, or either Alt key
"lshift", "rshift", "shift" Left, right, or either Shift key
"lctrl", "rctrl", "ctrl" Left, right, or either Ctrl key
Return Values
True if the modifier key is currently pressed, false otherwise.
Remarks
None.
Example
- - Pr ess a speci f i c modi f i er
Pr essKey( " l shi f t " )

i f I sModi f i er Pr essed( " shi f t " ) t hen
Out put LogMessage( " shi f t i s pr essed. \ n" ) ;
end

- - Rel ease t he key so i t i s no l onger pr essed
Rel easeKey( " l shi f t " )

i f not I sModi f i er Pr essed( " shi f t " ) t hen
Out put LogMessage( " shi f t i s not pr essed. \ n" ) ;
end

17
PressMouseButton
The PressMouseButton() function is used to simulate a mouse button press. NOTE: Calling
IsMouseButtonPressed immediately afterwards, will likely return the previous state. It will
take a few milliseconds for the operation to complete.
PressMouseButton( but t on )
Parameters
button
Button identifier. Use the following table:
Button value Location
1 Left Mouse Button
2 Middle Mouse Button
3 Right Mouse Button
4 X1 Mouse Button
5 X2 Mouse Button

Return Values
nil
Remarks
None
Example
- - Si mul at e l ef t mouse but t on pr ess
Pr essMouseBut t on( 1)

- - Si mul at e r i ght mouse but t on pr ess
Pr essMouseBut t on( 3)

18
ReleaseMouseButton
The ReleaseMouseButton() function is used to simulate a mouse button release.
ReleaseMouseButton( but t on )
Parameters
button
Button identifier. Use the following table:
Button value Location
1 Left Mouse Button
2 Middle Mouse Button
3 Right Mouse Button
4 X1 Mouse Button
5 X2 Mouse Button

Return Values
nil
Remarks
None
Example
- - Si mul at e a l ef t mouse but t on cl i ck ( pr ess and r el ease)

Pr essMouseBut t on( 1)
Rel easeMouseBut t on( 1)

19
PressAndReleaseMouseButton
The PressAndReleaseMouseButton() function is used to simulate a mouse button press
followed by a release. NOTE: Calling IsMouseButtonPressed immediately afterwards, will likely
return the previous state. It will take a few milliseconds for the operation to complete.
PressAndReleaseMouseButton( but t on )
Parameters
button
Button identifier. Use the following table:
Button value Location
1 Left Mouse Button
2 Middle Mouse Button
3 Right Mouse Button
4 X1 Mouse Button
5 X2 Mouse Button

Return Values
nil
Remarks
None
Example
- - Si mul at e a l ef t mouse but t on cl i ck ( pr ess and r el ease)

Pr essAndRel easeMouseBut t on( 1)

20
IsMouseButtonPressed
The IsMouseButtonPressed() function is used to determine if a particular mouse button is
currently in a pressed state.
bool ean IsMouseButtonPressed( but t on )
Parameters
button
Button identifier. Use the following table:
Button value Location
1 Left Mouse Button
2 Middle Mouse Button
3 Right Mouse Button
4 X1 Mouse Button
5 X2 Mouse Button

Return Values
True if the button is currently pressed, false otherwise.
Remarks
None
Example
- - Pr ess a mouse but t on
Pr essMouseBut t on( 1)

i f I sMouseBut t onPr essed( 1) t hen
Out put LogMessage( " Lef t mouse but t on i s pr essed. \ n" ) ;
end

- - Rel ease t he but t on so i t i s no l onger pr essed
Rel easeMouseBut t on( 1)

i f not I sMouseBut t onPr essed( 1) t hen
Out put LogMessage( " Lef t mouse but t on i s not pr essed. \ n" ) ;
21
MoveMouseTo
The MoveMouseTo() function is used to move the mouse cursor to an absolute position on the
screen. NOTE: Calling GetMousePosition immediately afterwards, will likely return the previous
state. It will take a few milliseconds for the operation to complete.
MoveMouseTo( x, y, )
Parameters
x
Normalized X coordinate between 0 (farthest left) and 65535 (farthest right)
Y
Normalized y coordinate between 0 (farthest top) and 65535 (farthest bottom)
Return Values
nil
Remarks
If multiple monitors are present, use MoveMouseToVirtual.
Example
- - Move mouse t o upper , l ef t cor ner
MoveMouseTo( 0, 0)

- - Move mouse t o cent er of scr een
MoveMouseTo( 32767, 32767)

- - Move mouse t o l ower , r i ght cor ner
MoveMouseTo( 65535, 65535)

22
MoveMouseWheel
The MoveMouseWheel() function is used to simulate mouse wheel movement.
MoveMouseWheel( cl i ck )
Parameters
click
Number of mouse wheel clicks.
Return Values
nil
Remarks
Positive values denote wheel movement upwards (away from user).
Negative values denote wheel movement downwards (towards user).
Example
- - Si mul at e mouse wheel 3 cl i cks up
MoveMouseWheel ( 3)

- - Si mul at e mouse wheel 1 cl i ck down
MoveMouseWheel ( - 1)

23
MoveMouseRelative
The MoveMouseRelative() function is used to simulate relative mouse movement. NOTE:
Calling GetMousePosition immediately afterwards, will likely return the previous state. It will
take a few milliseconds for the operation to complete.
MoveMouseRelative( x, y, )
Parameters
x
Movement along the x-axis
Y
Movement along the y-axis
Return Values
nil
Remarks
Positive x values simulate movement to right.
Negative x values simulate movement to left.
Positive y values simulate movement downwards.
Negative y values simulate movement upwards.
Example
- - Si mul at e r el at i ve mouse movement upwar ds i n 1 pi xel i ncr ement s
f or i = 0, 50 do
MoveMouseRel at i ve( 0, - 1)
Sl eep( 8)
end

24
MoveMouseToVirtual
The MoveMouseToVirtual() function is used to move the mouse cursor to an absolute position
on a multi-monitor screen layout. NOTE: Calling GetMousePosition immediately afterwards,
will likely return the previous state. It will take a few milliseconds for the operation to complete.
MoveMouseToVirtual( x, y, )
Parameters
x
Normalized X coordinate between 0 (farthest left) and 65535 (farthest right)
Y
Normalized y coordinate between 0 (farthest top) and 65535 (farthest bottom)
Return Values
nil
Remarks
If multiple monitors are present, use MoveMouseToVirtual.
Example
- - Move mouse t o upper , l ef t cor ner of vi r t ual deskt op
MoveMouseToVi r t ual ( 0, 0)

- - Move mouse t o cent er of vi r t ual deskt op
MoveMouseToVi r t ual ( 32767, 32767)

- - Move mouse t o l ower , r i ght cor ner of vi r t ual deskt op
MoveMouseToVi r t ual ( 65535, 65535)

25
GetMousePosition
The GetMousePosition() function returns the normalized coordinates of the current mouse
cursor location.
x, y GetMousePosition( )
Parameters
None
Return Values
x
Normalized X coordinate between 0 (farthest left) and 65535 (farthest right)
Y
Normalized y coordinate between 0 (farthest top) and 65535 (farthest bottom)
Remarks

Example
- - Get t he cur r ent mouse cur sor posi t i on
x, y = Get MousePosi t i on( ) ;

Out put LogMessage( " Mouse i s at %d, %d\ n" , x, y) ;

26
OutputLCDMessage
The OutputLCDMessage() function is used to add a line of text on to the LCD.
OutputLCDMessage( t ext [ , t i meout ] )
Parameters
text
String to display
timeout
Timeout in milliseconds, after which the message will disappear
Return Values
nil
Remarks
Up to 4 lines of text can be displayed at once. The default timeout is 1 second.
Example
- - Di spl ay some t ext wi t h def aul t t i meout
Out put LCDMessage( " Hel l o wor l d" )

- - Di spl ay some t ext f or 2 seconds
Out put LCDMessage( " Hel l o wor l d" , 2000)

27
ClearLCD
The ClearLCD() function clears the script display on the LCD.
ClearLCD( )
Parameters
none
Return Values
nil
Remarks

Example
- - Cl ear t he LCD and t hen di spl ay 2 l i nes of t ext
Cl ear LCD ( )
Out put LCDMessage( " Hel l o wor l d1" )
Out put LCDMessage( " Hel l o wor l d2" )

28
PlayMacro
The PlayMacro () function is used to play an existing macro.
PlayMacro( macr oname )
Parameters
macroname
Name of existing macro belonging to the current profile.
Return Values
nil
Remarks
If the function is called while another script macro is playing, no action is taken. In other
words, only one script macro may be playing at any given time.
If the function is called while the same script macro is playing, the macro is queued.
Example
- - Pl ay an exi st i ng macr o
Pl ayMacr o( " my macr o" ) ;
29
AbortMacro
The AbortMacro() function is used to abort any macro started from a script.
AbortMacro( )
Parameters
None
Return Values
nil
Remarks
Any keys still pressed after a call to PlayMacro will be released. Macros playing outside
the script will continue to play.
Example
- - St ar t a macr o
Pl ayMacr o( " my macr o" )

- - Wai t f or 100ms and t hen abor t any pl ayi ng macr o
Abor t Macr o( )
30
IsKeyLockOn
The IsKeyLockOn() function used to determine if a particular lock button is currently in an
enabled state .
IsKeyLockOn( key )
Parameters
key
key name. Use the following table:
Key name Location
"scrolllock" Scroll Lock
"capslock" Caps Lock
"numlock" Number Lock
Return Values
True if the lock is currently enabled, false otherwise.
Remarks
None.
Example
- - Check i f t he numl ock i s on and t ur n i t of f i f i t i s
i f ( I sKeyLockOn( " numl ock" ) t hen
Pr essAndRel easeKey( " numl ock" ) ;
end
31
SetBacklightColor
The SetBacklightColor() function is used to set the custom backlight color of the device (if the
device supports custom backlighting).
SetBacklightColor( r ed, gr een, bl ue, [ f ami l y] )
Parameters
red
Red intensity (0 255)
green
Green intensity (0 255)
blue
Blue intensity (0 255)
family
Optional family name of device if you want to distinguish between multiple
attached devices. Default is kb.
Family Devices
kb Keyboard devices (G15, G11, G19, etc)
lhc Left handed controllers (G13, etc)

Return Values
nil
Remarks
None.
Example
- - Set t he backl i ght t o r ed
Set Backl i ght Col or ( 255, 0, 0) ;

- - Set t he backl i ght col or f or al l l ef t handed cont r ol l er s t o bl ue
Set Backl i ght Col or ( 0, 0, 255, l hc) ;
32
OutputDebugMessage
OutputDebugMessage() will send log messages to the Windows debugger.
OutputDebugMessage( . . . ) ;
Parameters
Message
Printf style, formatted string containing the message.
Return Values
nil
Remarks
Mirror of [Link]().
You must manually insert a carriage return "\n" to denote end of line.
Use tools like Dbg View for viewing these messages.
Example
- - Send out " Hel l o Wor l d"

Out put DebugMessage( " Hel l o Wor l d %d\ n" , 2007)
33
SetMouseDPITable
SetMouseDPITable() sets the current DPI table for a supported gaming mouse
SetMouseDPITable( {value1, value2, value3}, [index]) ;
Parameters
DPI Array
Array of DPI values
DPI Index
Optional 1-Based index to DPI to apply as the current DPI.
Return Values
nil
Remarks
If the index is not specified, the first entry is used as the current DPI
A maximum of 16 entries are allowed.
Activating a profile with per-profile DPI settings will override any previously applied DPI.
Example
- - Set our DPI val ues t o {500, 1000, 1500, 2000, 2500}
- - By def aul t , 500 DPI wi l l be set as t he cur r ent DPI
Set MouseDPI Tabl e( {500, 1000, 1500, 2000, 2500})

- - Set our DPI val ues t o {500, 2500} and set t he second val ue as t he
cur r ent DPI
Set MouseDPI Tabl e( {500, 2500}, 2)

34
SetMouseDPI TableI ndex
SetMouseDPITableIndex() sets the current DPI table index for a supported gaming mouse
SetMouseDPITableIndex( i ndex) ;
Parameters
Index
1-Based index into the DPI Table
Return Values
nil
Remarks
If SetMouseDPITable was not called prior to this, the current DPI table for the mouse is
used.
A maximum of 16 entries are allowed.
Activating a profile with per-profile DPI settings will override any previously applied DPI.
Example
- - Set our i ni t i al DPI val ues t o {500, 1000, 1500, 2000, 2500}
Set MouseDPI Tabl e( {500, 1000, 1500, 2000, 2500})

- - Set t he cur r ent DPI t o t he 3
r d
i t emi n t he t abl e ( 1500 DPI )
Set MouseDPI Tabl eI ndex( 3) ;
35
EnablePrimaryMouseButtonEvents
EnablePrimaryMouseButtonEvents() enables event reporting for mouse button 1.
EnablePrimaryMouseButtonEvents( enabl e) ;
Parameters
enable
1 or true to enable event reporting for mouse button 1
0 or false to disable event reporting for mouse button 1
Return Values
nil
Remarks
The primary mouse button is not reported by default for performance issues.
Example
- - Enabl e event r epor t i ng f or mouse but t on 1
Enabl ePr i mar yMouseBut t onEvent s( t r ue) ;

- - Di sabl e event r epor t i ng f or mouse but t on 1
Enabl ePr i mar yMouseBut t onEvent s( f al se) ;
36
G13 Programming
The G13 game panel has an analog joystick that can have a mouse function assigned to it. The
speed of the mouse can be adjusted through either the profiler options panel in the settings
window, or through the Lua scripting language. The following are the new Lua functions for
mouse speed control:
SetMouseSpeed ()
Parameters
New mouse speed
Absolute mouse speed 32 to 255.
Return Values
nil
Remarks
none
Example
- - Set Mouse speed t o 128

Set MouseSpeed( 128) ;

GetMouseSpeed()
Parameters
Current mouse speed
Absolute mouse speed 32 to 255.
Return Values
Current emulated mouse speed.
Remarks
none
Example
- - Get Mouse speed

Out put LogMessage( " The Mouse Speeed i s: %d\ n, Get MouseSpeed( ) ) ;

37
I ncrementMouseSpeed()
Parameters
Mouse speed increment
Return Values
nil
Remarks
Resultant mouse speed will be clamped to a maximum of 255
Example
- - I ncr ease Mouse speed by 10" ) ;

I ncr ement MouseSpeed( 10) ;

DecrementMouseSpeed()
Parameters
Mouse speed decrement
Return Values
nil
Remarks
Resultant mouse speed will be clamped to a minimum of 32
Example
- - Decr ease Mouse speed by 10

DecrementMouseSpeed(10);
38

The G13 mouse functionality does not support any native buttons, e.g. left button, center button,
etc. Mouse buttons must be programmed via Lua. Here is an example of generic Lua code to
effect mouse button operation:
i f event ==" G_PRESSED" and ar g==x t hen
Pr essMouseBut t on( y ) ;
end

i f event ==" G_RELEASED" and ar g==x t hen
Rel easeMouseBut t on( y ) ;

39
Standard Lua 5.1 Libraries
The following standard library functions are supported:
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
math.atan2
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
math.log10
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]

40
Appendix A
Table of scancodes and keynames used in PressKey(), ReleaseKey(), IsModifierPressed().
Keyname Scancode (hex)
"escape" 0x01
"f1" 0x3b
"f2" 0x3c
"f3" 0x3d
"f4" 0x3e
"f5" 0x3f
"f6" 0x40
"f7" 0x41
"f8" 0x42
"f9" 0x43
"f10" 0x44
"f11" 0x57
"f12" 0x58
"f13" 0x64
"f14" 0x65
"f15" 0x66
"f16" 0x67
"f17" 0x68
"f18" 0x69
"f19" 0x6a
"f20" 0x6b
"f21" 0x6c
"f22" 0x6d
"f23" 0x6e
"f24" 0x76
"printscreen" 0x137
"scrolllock" 0x46
"pause" 0x146
"tilde" 0x29
"1" 0x02
"2" 0x03
"3" 0x04
"4" 0x05
"5" 0x06
"6" 0x07
"7" 0x08
"8" 0x09
"9" 0x0a
"0" 0x0b
"minus" 0x0c
"equal" 0x0d
"backspace" 0x0e
"tab" 0x0f
"q" 0x10
"w" 0x11
"e" 0x12
"r" 0x13
"t" 0x14
"y" 0x15
41
"u" 0x16
"I" 0x17
"o" 0x18
"p" 0x19
"lbracket" 0x1a
"rbracket" 0x1b
"backslash" 0x2b
"capslock" 0x3a
"a" 0x1e
"s" 0x1f
"d" 0x20
"f" 0x21
"g" 0x22
"h" 0x23
"j" 0x24
"k" 0x25
"l" 0x26
"semicolon" 0x27
"quote" 0x28
"enter" 0x1c
"lshift" 0x2a
"non_us_slash" 0x56
"z" 0x2c
"x" 0x2d
"c" 0x2e
"v" 0x2f
"b" 0x30
"n" 0x31
"m" 0x32
"comma" 0x33
"period" 0x34
"slash" 0x35
"rshift" 0x36
"lctrl" 0x1d
"lgui" 0x15b
"lalt" 0x38
"spacebar" 0x39
"ralt" 0x138
"rgui" 0x15c
"appkey" 0x15d
"rctrl" 0x11d
"insert" 0x152
"home" 0x147
"pageup" 0x149
"delete" 0x153
"end" 0x14f
"pagedown" 0x151
"up" 0x148
"left" 0x14b
"down" 0x150
"right" 0x14d
"numlock" 0x45
"numslash" 0x135
42
"numminus" 0x4a
"num7" 0x47
"num8" 0x48
"num9" 0x49
"numplus" 0x4e
"num4" 0x4b
"num5" 0x4c
"num6" 0x4d
"num1" 0x4f
"num2" 0x50
"num3" 0x51
"numenter" 0x11c
"num0" 0x52
"numperiod" 0x53
calculator 0x121
web 0x132
media_prev_track 0x110
media_next_track 0x119
media_play_pause 0x122
media_stop 0x124
volume_up 0x130
volume_down 0x12e
volume_mute 0x120



43

Common questions

Powered by AI

The 'OutputLogMessage' function supports debugging by sending formatted log messages to the script editor's output window using a printf-style string. This allows developers to track script execution, verify logic paths, and confirm variable states. The ability to include real-time script behavior data through messages such as current variable values or execution milestones facilitates troubleshooting by making it easier to identify and diagnose issues within scripts .

The 'SetMouseDPITable' function is used to configure a set of DPI (Dots Per Inch) values for a gaming mouse, allowing precise control over the device's sensitivity. Users can provide an array of DPI values, with the first entry typically becoming the default setting unless a specific index is specified. The 'SetMouseDPITableIndex' function complements this by selecting which DPI setting from the established range should be currently active, enabling responsive and dynamic adjustment of mouse sensitivity to suit particular tasks or gaming scenarios. Together, these functions allow for granular and flexible customization of mouse performance .

The 'PressKey' function emulates a key press by using either a keyname or a scancode, simulating the pressing of a specified key. It can handle multiple simultaneous key presses when arguments are provided in succession. Conversely, the 'ReleaseKey' function simulates the release of specified keys, operating similarly by using keynames or scancodes. Together, these functions facilitate precise control over keyboard input, enabling scripts to programmatically mimic complex key sequences or shortcuts, enhancing automated functionality in gaming environments .

Enabling 'EnablePrimaryMouseButtonEvents' allows event reporting for mouse button 1 (the left button), which is not reported by default due to performance considerations. Enabling this feature can potentially affect system performance by increasing the number of events processed, leading to higher CPU usage and reduced system responsiveness. This is particularly relevant in high-demand scenarios like gaming or intensive scripting where efficient resource management is crucial. It requires careful consideration of necessity against performance overhead when deciding whether to enable this setting .

The 'OnEvent' function in the G-series Lua API serves as the primary event handler that users must implement to interact with various hardware events. It processes different event types by evaluating the 'event' and 'arg' parameters, which represent the event identifier and the corresponding event data respectively. For instance, 'PROFILE_ACTIVATED' and 'PROFILE_DEACTIVATED' events signal the activation and deactivation of a profile, while 'G_PRESSED' and 'G_RELEASED' indicate the pressing and releasing of G-keys. The function distinguishes events by evaluating conditions within the function body, allowing customized responses to specific events .

'PlayMacro' initiates a specified macro process, allowing users to automate sequences of actions within applications or games, effectively enhancing productivity or gameplay efficiency. 'AbortMacro' allows for the immediate termination of any still-active macro. Together, these functions provide robust control over automation by enabling precise start and stop functionality, essential for maintaining control and responsiveness in dynamic environments where conditions can rapidly change. However, reliance on macros can also introduce risks if not well-managed, such as unintentional loops or interactions with other scripts .

The 'MoveMouseToVirtual' function moves the cursor to an absolute position within a virtual desktop that spans across multiple monitors. In a multi-monitor setup, this function allows for seamless cursor navigation between screens as it accepts normalized coordinates for positioning. This is crucial for applications that necessitate automated or remote interaction across various display arrangements, ensuring that cursor movements are accurately targeted regardless of the monitor arrangement. However, developers must ensure accurate coordinate mapping to avoid cursor misplacement across multiple screens .

The 'GetMKeyState' function retrieves the current state of the M keys, returning a value of 1 for M1, 2 for M2, or 3 for M3. This function allows a script to check the status of M keys, often used to determine user preferences or mode choices. The 'SetMKeyState', on the other hand, sets the M key state explicitly. When a script needs to change modes or alter functionality based on M key status, it can call 'SetMKeyState' to update the state, automatically reflecting user changes in the keyboard's behavior. This combination provides a flexible control mechanism for adjusting operation modes dynamically .

The 'Sleep' function in the G-series Lua API pauses the script execution for a specified number of milliseconds, allowing timed delays in the script's operation. This can simulate wait times necessary for synchronizing certain series of actions or for cooldown periods in gaming scripts. However, a potential risk of using 'Sleep' is that if set with a long timeout, it could lead to the script being forcefully aborted after 1 second if the profiler deactivates. This presents a risk of unexpected disruptions during script execution if not managed correctly .

The 'IsModifierPressed' function checks the status of modifier keys like 'alt', 'shift', or 'ctrl', returning a boolean to indicate if they are actively pressed. By integrating it into script execution, developers can dictate flow control based on the presence of modifier states. For instance, scripts might execute different actions if 'shift' is held, providing users with the ability to initiate complex commands or alternate functions on the fly. This function thus enables a dynamic and user-interactive control layer within scripts, enhancing the adaptability of scripted operations .

You might also like