Macros

From GIMX

Revision as of 14:45, 6 February 2013 by Matlo (talk | contribs) (Delay precision)

Jump to: navigation, search
Other languages:
English • ‎français

It's possible to configure keyboard/mouse/joystick macros: a key or button press can trigger a series of keyboard/mouse/joystick events, with timing conditions.

Directory

Macros have to be defined in files saved into:

  • Ubuntu: the ~/.emuclient/macros directory. ~ is the home directory, and .emuclient folder is hidden (in the file manager, press ctrl+h to display hidden folders).
  • Windows 32bits: the C:\Program Files\GIMX\macros directory.
  • Windows 64bits: the C:\Program Files (x86)\GIMX\macros directory.

Syntax

MACRO <DEVICE EVENT> <ID>
<DEVICE EVENT> <ID>
DELAY <MS>
#<COMMENT>
<DEVICE EVENT>: KEYDOWN, KEYUP, MBUTTONDOWN, MBUTTONUP, JBUTTONDOWN, JBUTTONUP
<ID>: the event id (case sensitive) as displayed in gimx-config
<MS>: integer value in milliseconds
<COMMENT>: a comment, not interpreted

Commands

  • KEYDOWN: keyboard key pressed
  • KEYUP: keyboard key released
  • KEY: KEYDOWN + DELAY 50 + KEYUP
  • MBUTTONDOWN: mouse button pressed
  • MBUTTONUP: mouse button released
  • JBUTTONDOWN: joystick button pressed
  • JBUTTONUP: joystick button released
  • DELAY: delay in milliseconds

Example: rapid_fire.txt

MACRO MBUTTONDOWN BUTTON_LEFT
KEYDOWN p
DELAY 50
KEYUP p
DELAY 50
MBUTTONDOWN BUTTON_LEFT

MACRO MBUTTONUP BUTTON_LEFT
KEYUP p
MBUTTONDOWN BUTTON_LEFT

'p' is bind to r1 in both hip fire and ADS profiles.
'BUTTON_LEFT' is NOT bind to r1 in both hip fire and ADS profiles.

Notes

Delay precision

The delay precision depends on the controller update period.
Using bluetooth, the precision is 10ms. Using a USB adapter at 250Hz, the precision is 4ms.
If you specify a delay that is not a multiple of the precision, the resulting delay will be the lowest multiple of the precision higher than the specified delay.
For example, if the precision is 10ms and the delay is 11ms, the resulting delay will be 20ms.

Macro loop

To make a macro loop, just add a KEYDOWN or MBUTTONDOWN or JBUTTONDOWN command at the end of the macro definition.
Example:

MACRO MBUTTONDOWN BUTTON_LEFT
KEYDOWN p
DELAY 50
KEYUP p
DELAY 50
MBUTTONDOWN BUTTON_LEFT

The macro is triggered by pressing 'BUTTON_LEFT'.
The last command of the macro restarts the macro, creating a loop.
To stop a macro loop, just press the trigger again. The macro is stopped immediately, and the state of the controller is unchanged.

Multiple keyboards/mice/joysticks

In case multiple keyboards or mice or joysticks are used, it's not possible to specify the device for which events are generated.
Events are generated for the first keyboard/mouse/joystick found in the configuration.