<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://gimx.fr/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jonovision</id>
	<title>GIMX - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://gimx.fr/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jonovision"/>
	<link rel="alternate" type="text/html" href="https://gimx.fr/wiki/index.php?title=Special:Contributions/Jonovision"/>
	<updated>2026-05-05T05:38:26Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.7</generator>
	<entry>
		<id>https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3948</id>
		<title>Macros</title>
		<link rel="alternate" type="text/html" href="https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3948"/>
		<updated>2015-03-04T13:54:40Z</updated>

		<summary type="html">&lt;p&gt;Jonovision: /* Rapid fire macro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Directory== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Macros have to be defined in files saved into:&lt;br /&gt;
* Ubuntu: the ~/.gimx/macros directory. ~ is the home directory, and .gimx folder is hidden (in the file manager, press ctrl+h to display hidden folders).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\gimx\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
GIMX 1.12 and older:&lt;br /&gt;
* 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).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\emuclient\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
GIMX 0.51 and older:&lt;br /&gt;
* Windows 32bits: the C:\Program Files\GIMX\macros directory.&lt;br /&gt;
* Windows 64bits: the C:\Program Files (x86)\GIMX\macros directory.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
MACRO &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt;&lt;br /&gt;
 &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt; &amp;lt;VALUE&amp;gt;&lt;br /&gt;
 DELAY &amp;lt;MS&amp;gt;&lt;br /&gt;
 #&amp;lt;COMMENT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;DEVICE EVENT&amp;gt;: KEY, KEYDOWN, KEYUP, MBUTTON, MBUTTONDOWN, MBUTTONUP, JBUTTON, JBUTTONDOWN, JBUTTONUP, MAXIS, JAXIS&lt;br /&gt;
 &amp;lt;ID&amp;gt;: the event id (case sensitive) as displayed in gimx-config&lt;br /&gt;
 &amp;lt;VALUE&amp;gt;: the axis value (only for MAXIS and JAXIS)&lt;br /&gt;
 &amp;lt;MS&amp;gt;: integer value in milliseconds&lt;br /&gt;
 &amp;lt;COMMENT&amp;gt;: a comment, not interpreted&lt;br /&gt;
&lt;br /&gt;
==Commands== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* KEYDOWN: keyboard key pressed&lt;br /&gt;
* KEYUP: keyboard key released&lt;br /&gt;
* KEY: KEYDOWN + DELAY 50 + KEYUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
* MBUTTONDOWN: mouse button pressed&lt;br /&gt;
* MBUTTONUP: mouse button released&lt;br /&gt;
* MBUTTON: MBUTTONDOWN + DELAY 50 + MBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* JBUTTONDOWN: joystick button pressed&lt;br /&gt;
* JBUTTONUP: joystick button released&lt;br /&gt;
* JBUTTON: JBUTTONDOWN + DELAY 50 + JBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* DELAY: delay in milliseconds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
* MAXIS: mouse axis moved&lt;br /&gt;
ID: 0 for x axis, and 1 for y axis&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: positive values for right and down&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* JAXIS: joystick axis moved&lt;br /&gt;
ID: the axis id as displayed in gimx-config&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: in [-32768 .. 32767] for centered axes, and in [0 .. 32767] for non-centered axes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Change '25' with the value in [0..128] that cancels the recoil.&lt;br /&gt;
&lt;br /&gt;
==Macro activation== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
This section is only applicable since GIMX 1.00.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
It is possible to specify the macro files to be read for each configuration file.&amp;lt;br /&amp;gt;&lt;br /&gt;
This can be configured in a file named &amp;quot;configs.txt&amp;quot;, located in the macros directory.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 #If config1.xml is loaded, macro1.txt is read.&lt;br /&gt;
 config1.xml macro1.txt&lt;br /&gt;
 #If config1.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config1.xml macro2.txt&lt;br /&gt;
 #If config2.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config2.xml macro2.txt&lt;br /&gt;
Lines beginning with a # are not interpreted.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
It is also possible to define activation triggers within the macro definition.&amp;lt;br /&amp;gt;&lt;br /&gt;
The syntax is:&lt;br /&gt;
 TRIGGER &amp;lt;event&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F2&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F3&lt;br /&gt;
 TRIGGER F6&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F4&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
With GIMX 1.12 and earlier, the above example works the following way:&amp;lt;br /&amp;gt;&lt;br /&gt;
F1 remains active all the time as there is no trigger specified.&amp;lt;br /&amp;gt;&lt;br /&gt;
F2 and F4 are default active. If F6 is pressed, F3 becomes active, F2 and F4 become inactive.&amp;lt;br /&amp;gt;&lt;br /&gt;
With GIMX 2.00:&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger are default inactive. To make a macro with trigger default active, add a line containing &amp;quot;INIT ON&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger can work with a toggle mode. This can be configured adding a line containing &amp;quot;TOGGLE YES&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 TRIGGER 1&lt;br /&gt;
 INIT ON&lt;br /&gt;
 TOGGLE YES&lt;br /&gt;
 #content&lt;br /&gt;
&lt;br /&gt;
==Notes== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Delay precision=== &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
The delay precision depends on the controller update period:&lt;br /&gt;
* sixaxis/bluetooth = 11.25ms&lt;br /&gt;
* sixaxis/usb       = 10ms&lt;br /&gt;
* 360 pad           = 8ms&lt;br /&gt;
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.&amp;lt;br /&amp;gt;&lt;br /&gt;
For example, if the precision is 11.25ms and the delay is 12ms, the resulting delay will be 22.50ms (=2*11.25ms).&lt;br /&gt;
&lt;br /&gt;
===Macro loop=== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
To make a macro loop, just add a matching KEYDOWN, MBUTTONDOWN or JBUTTONDOWN command at the end of the macro.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 #content&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
The macro is triggered by pressing 'BUTTON_LEFT'.&amp;lt;br /&amp;gt;&lt;br /&gt;
The last command of the macro restarts the macro, creating a loop.&amp;lt;br /&amp;gt;&lt;br /&gt;
To stop a macro loop, just press the trigger again. The macro is stopped immediately, and the state of the controller is unchanged.&lt;br /&gt;
&lt;br /&gt;
===Multiple keyboards/mice/joysticks=== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
In case multiple keyboards or mice or joysticks are used, it's not possible to specify the device for which events are generated.&amp;lt;br /&amp;gt;&lt;br /&gt;
Events are generated for the first keyboard/mouse/joystick found in the configuration.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===Rapid fire macro===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN p&lt;br /&gt;
 #Set delay no less than the maximum rate of fire&lt;br /&gt;
 DELAY 100 # = 10 rounds per second (600 rpm)&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 #~Do not set delay after keyup or it will negatively impact automatic weapons&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYUP p #~Sometimes the fire key can be stuck down after the macro ends this releases it after the macro has been terminated&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
In gimx-config, bind 'p' to r1 in both hip fire and ADS profiles (profiles 1 and 2).&amp;lt;br /&amp;gt;&lt;br /&gt;
DO NOT bind 'BUTTON_LEFT' to r1 in both hip fire and ADS profiles.&lt;br /&gt;
&lt;br /&gt;
The macro is triggered by pressing the left mouse button.&amp;lt;br /&amp;gt;&lt;br /&gt;
The last command of the first macro restarts the macro, creating a loop.&amp;lt;br /&amp;gt;&lt;br /&gt;
Upon the release of the left mouse button the second macro ends the loop of the first macro.&lt;br /&gt;
&lt;br /&gt;
===Recoil macro===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
MACRO KEYDOWN o&lt;br /&gt;
 MAXIS 1 25&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonovision</name></author>
		
	</entry>
	<entry>
		<id>https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3941</id>
		<title>Macros</title>
		<link rel="alternate" type="text/html" href="https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3941"/>
		<updated>2015-02-27T18:14:06Z</updated>

		<summary type="html">&lt;p&gt;Jonovision: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Directory== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Macros have to be defined in files saved into:&lt;br /&gt;
* Ubuntu: the ~/.gimx/macros directory. ~ is the home directory, and .gimx folder is hidden (in the file manager, press ctrl+h to display hidden folders).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\gimx\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
GIMX 1.12 and older:&lt;br /&gt;
* 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).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\emuclient\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
GIMX 0.51 and older:&lt;br /&gt;
* Windows 32bits: the C:\Program Files\GIMX\macros directory.&lt;br /&gt;
* Windows 64bits: the C:\Program Files (x86)\GIMX\macros directory.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
MACRO &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt;&lt;br /&gt;
 &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt; &amp;lt;VALUE&amp;gt;&lt;br /&gt;
 DELAY &amp;lt;MS&amp;gt;&lt;br /&gt;
 #&amp;lt;COMMENT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;DEVICE EVENT&amp;gt;: KEY, KEYDOWN, KEYUP, MBUTTON, MBUTTONDOWN, MBUTTONUP, JBUTTON, JBUTTONDOWN, JBUTTONUP, MAXIS, JAXIS&lt;br /&gt;
 &amp;lt;ID&amp;gt;: the event id (case sensitive) as displayed in gimx-config&lt;br /&gt;
 &amp;lt;VALUE&amp;gt;: the axis value (only for MAXIS and JAXIS)&lt;br /&gt;
 &amp;lt;MS&amp;gt;: integer value in milliseconds&lt;br /&gt;
 &amp;lt;COMMENT&amp;gt;: a comment, not interpreted&lt;br /&gt;
&lt;br /&gt;
==Commands== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* KEYDOWN: keyboard key pressed&lt;br /&gt;
* KEYUP: keyboard key released&lt;br /&gt;
* KEY: KEYDOWN + DELAY 50 + KEYUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
* MBUTTONDOWN: mouse button pressed&lt;br /&gt;
* MBUTTONUP: mouse button released&lt;br /&gt;
* MBUTTON: MBUTTONDOWN + DELAY 50 + MBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* JBUTTONDOWN: joystick button pressed&lt;br /&gt;
* JBUTTONUP: joystick button released&lt;br /&gt;
* JBUTTON: JBUTTONDOWN + DELAY 50 + JBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* DELAY: delay in milliseconds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
* MAXIS: mouse axis moved&lt;br /&gt;
ID: 0 for x axis, and 1 for y axis&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: positive values for right and down&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* JAXIS: joystick axis moved&lt;br /&gt;
ID: the axis id as displayed in gimx-config&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: in [-32768 .. 32767] for centered axes, and in [0 .. 32767] for non-centered axes&lt;br /&gt;
&lt;br /&gt;
==Example1: rapid_fire.txt== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
'p' is bind to r1 in both hip fire and ADS profiles.&amp;lt;br /&amp;gt;&lt;br /&gt;
'BUTTON_LEFT' is NOT bind to r1 in both hip fire and ADS profiles.&lt;br /&gt;
&lt;br /&gt;
==Example2: recoil.txt== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
MACRO KEYDOWN o&lt;br /&gt;
 MAXIS 1 25&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Change '25' with the value in [0..128] that cancels the recoil.&lt;br /&gt;
&lt;br /&gt;
==Macro activation== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
This section is only applicable since GIMX 1.00.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
It is possible to specify the macro files to be read for each configuration file.&amp;lt;br /&amp;gt;&lt;br /&gt;
This can be configured in a file named &amp;quot;configs.txt&amp;quot;, located in the macros directory.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 #If config1.xml is loaded, macro1.txt is read.&lt;br /&gt;
 config1.xml macro1.txt&lt;br /&gt;
 #If config1.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config1.xml macro2.txt&lt;br /&gt;
 #If config2.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config2.xml macro2.txt&lt;br /&gt;
Lines beginning with a # are not interpreted.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
It is also possible to define activation triggers within the macro definition.&amp;lt;br /&amp;gt;&lt;br /&gt;
The syntax is:&lt;br /&gt;
 TRIGGER &amp;lt;event&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F2&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F3&lt;br /&gt;
 TRIGGER F6&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F4&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
With GIMX 1.12 and earlier, the above example works the following way:&amp;lt;br /&amp;gt;&lt;br /&gt;
F1 remains active all the time as there is no trigger specified.&amp;lt;br /&amp;gt;&lt;br /&gt;
F2 and F4 are default active. If F6 is pressed, F3 becomes active, F2 and F4 become inactive.&amp;lt;br /&amp;gt;&lt;br /&gt;
With GIMX 2.00:&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger are default inactive. To make a macro with trigger default active, add a line containing &amp;quot;INIT ON&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger can work with a toggle mode. This can be configured adding a line containing &amp;quot;TOGGLE YES&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 TRIGGER 1&lt;br /&gt;
 INIT ON&lt;br /&gt;
 TOGGLE YES&lt;br /&gt;
 #content&lt;br /&gt;
&lt;br /&gt;
==Notes== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Delay precision=== &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
The delay precision depends on the controller update period:&lt;br /&gt;
* sixaxis/bluetooth = 11.25ms&lt;br /&gt;
* sixaxis/usb       = 10ms&lt;br /&gt;
* 360 pad           = 8ms&lt;br /&gt;
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.&amp;lt;br /&amp;gt;&lt;br /&gt;
For example, if the precision is 11.25ms and the delay is 12ms, the resulting delay will be 22.50ms (=2*11.25ms).&lt;br /&gt;
&lt;br /&gt;
===Macro loop=== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
To make a macro loop, just add a KEYDOWN, MBUTTONDOWN or JBUTTONDOWN command at the end of the macro that is triggered with a KEYDOWN, MBUTTONDOWN or JBUTTONDOWN that you wish to loop.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 #~Fire Macro&lt;br /&gt;
 MACRO KEYDOWN p&lt;br /&gt;
 KEYDOWN k #~In gimx-config bind k to fire&lt;br /&gt;
 DELAY 100 #~Delay is set according to the rate of fire desired&lt;br /&gt;
 KEYUP k&lt;br /&gt;
 #~Placing a delay after keyup affects the function of automatic weapons&lt;br /&gt;
 &lt;br /&gt;
 #~Stops Rapid Fire Macro&lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 &lt;br /&gt;
 #~Triggers Fire Macro in a Loop&lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN p&lt;br /&gt;
 DELAY 100 #~Delay must match fire macro delay&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
The macro is triggered by holding down the left mouse button.&amp;lt;br /&amp;gt;&lt;br /&gt;
Upon the release of the left mouse button the second macro ends the loop of the third macro.&amp;lt;br /&amp;gt;&lt;br /&gt;
The last command of the last macro restarts the macro, creating a loop.&lt;br /&gt;
&lt;br /&gt;
===Multiple keyboards/mice/joysticks=== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
In case multiple keyboards or mice or joysticks are used, it's not possible to specify the device for which events are generated.&amp;lt;br /&amp;gt;&lt;br /&gt;
Events are generated for the first keyboard/mouse/joystick found in the configuration.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonovision</name></author>
		
	</entry>
	<entry>
		<id>https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3940</id>
		<title>Macros</title>
		<link rel="alternate" type="text/html" href="https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3940"/>
		<updated>2015-02-26T04:25:18Z</updated>

		<summary type="html">&lt;p&gt;Jonovision: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Directory== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Macros have to be defined in files saved into:&lt;br /&gt;
* Ubuntu: the ~/.gimx/macros directory. ~ is the home directory, and .gimx folder is hidden (in the file manager, press ctrl+h to display hidden folders).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\gimx\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
GIMX 1.12 and older:&lt;br /&gt;
* 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).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\emuclient\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
GIMX 0.51 and older:&lt;br /&gt;
* Windows 32bits: the C:\Program Files\GIMX\macros directory.&lt;br /&gt;
* Windows 64bits: the C:\Program Files (x86)\GIMX\macros directory.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
MACRO &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt;&lt;br /&gt;
 &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt; &amp;lt;VALUE&amp;gt;&lt;br /&gt;
 DELAY &amp;lt;MS&amp;gt;&lt;br /&gt;
 #&amp;lt;COMMENT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;DEVICE EVENT&amp;gt;: KEY, KEYDOWN, KEYUP, MBUTTON, MBUTTONDOWN, MBUTTONUP, JBUTTON, JBUTTONDOWN, JBUTTONUP, MAXIS, JAXIS&lt;br /&gt;
 &amp;lt;ID&amp;gt;: the event id (case sensitive) as displayed in gimx-config&lt;br /&gt;
 &amp;lt;VALUE&amp;gt;: the axis value (only for MAXIS and JAXIS)&lt;br /&gt;
 &amp;lt;MS&amp;gt;: integer value in milliseconds&lt;br /&gt;
 &amp;lt;COMMENT&amp;gt;: a comment, not interpreted&lt;br /&gt;
&lt;br /&gt;
==Commands== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* KEYDOWN: keyboard key pressed&lt;br /&gt;
* KEYUP: keyboard key released&lt;br /&gt;
* KEY: KEYDOWN + DELAY 50 + KEYUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
* MBUTTONDOWN: mouse button pressed&lt;br /&gt;
* MBUTTONUP: mouse button released&lt;br /&gt;
* MBUTTON: MBUTTONDOWN + DELAY 50 + MBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* JBUTTONDOWN: joystick button pressed&lt;br /&gt;
* JBUTTONUP: joystick button released&lt;br /&gt;
* JBUTTON: JBUTTONDOWN + DELAY 50 + JBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* DELAY: delay in milliseconds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
* MAXIS: mouse axis moved&lt;br /&gt;
ID: 0 for x axis, and 1 for y axis&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: positive values for right and down&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* JAXIS: joystick axis moved&lt;br /&gt;
ID: the axis id as displayed in gimx-config&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: in [-32768 .. 32767] for centered axes, and in [0 .. 32767] for non-centered axes&lt;br /&gt;
&lt;br /&gt;
==Example1: rapid_fire.txt== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
'p' is bind to r1 in both hip fire and ADS profiles.&amp;lt;br /&amp;gt;&lt;br /&gt;
'BUTTON_LEFT' is NOT bind to r1 in both hip fire and ADS profiles.&lt;br /&gt;
&lt;br /&gt;
==Example2: recoil.txt== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
MACRO KEYDOWN o&lt;br /&gt;
 MAXIS 1 25&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Change '25' with the value in [0..128] that cancels the recoil.&lt;br /&gt;
&lt;br /&gt;
==Macro activation== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
This section is only applicable since GIMX 1.00.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
It is possible to specify the macro files to be read for each configuration file.&amp;lt;br /&amp;gt;&lt;br /&gt;
This can be configured in a file named &amp;quot;configs.txt&amp;quot;, located in the macros directory.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 #If config1.xml is loaded, macro1.txt is read.&lt;br /&gt;
 config1.xml macro1.txt&lt;br /&gt;
 #If config1.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config1.xml macro2.txt&lt;br /&gt;
 #If config2.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config2.xml macro2.txt&lt;br /&gt;
Lines beginning with a # are not interpreted.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
It is also possible to define activation triggers within the macro definition.&amp;lt;br /&amp;gt;&lt;br /&gt;
The syntax is:&lt;br /&gt;
 TRIGGER &amp;lt;event&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F2&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F3&lt;br /&gt;
 TRIGGER F6&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F4&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
With GIMX 1.12 and earlier, the above example works the following way:&amp;lt;br /&amp;gt;&lt;br /&gt;
F1 remains active all the time as there is no trigger specified.&amp;lt;br /&amp;gt;&lt;br /&gt;
F2 and F4 are default active. If F6 is pressed, F3 becomes active, F2 and F4 become inactive.&amp;lt;br /&amp;gt;&lt;br /&gt;
With GIMX 2.00:&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger are default inactive. To make a macro with trigger default active, add a line containing &amp;quot;INIT ON&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger can work with a toggle mode. This can be configured adding a line containing &amp;quot;TOGGLE YES&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 TRIGGER 1&lt;br /&gt;
 INIT ON&lt;br /&gt;
 TOGGLE YES&lt;br /&gt;
 #content&lt;br /&gt;
&lt;br /&gt;
==Notes== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Delay precision=== &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
The delay precision depends on the controller update period:&lt;br /&gt;
* sixaxis/bluetooth = 11.25ms&lt;br /&gt;
* sixaxis/usb       = 10ms&lt;br /&gt;
* 360 pad           = 8ms&lt;br /&gt;
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.&amp;lt;br /&amp;gt;&lt;br /&gt;
For example, if the precision is 11.25ms and the delay is 12ms, the resulting delay will be 22.50ms (=2*11.25ms).&lt;br /&gt;
&lt;br /&gt;
===Macro loop=== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
To make a macro loop, just add a KEYDOWN, MBUTTONDOWN or JBUTTONDOWN command at the end of the macro that is triggered with a KEYDOWN, MBUTTONDOWN or JBUTTONDOWN that you wish to loop.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 #~Fire Macro&lt;br /&gt;
 MACRO KEYDOWN p&lt;br /&gt;
 #~In gimx-config bind k to fire&lt;br /&gt;
 KEY k&lt;br /&gt;
 #~Delay is set according to the rate of fire desired&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 &lt;br /&gt;
 #~Stops Rapid Fire Macro&lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 &lt;br /&gt;
 #~Triggers Fire Macro in a Loop&lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
The macro is triggered by holding down the left mouse button.&amp;lt;br /&amp;gt;&lt;br /&gt;
Upon the release of the left mouse button the second macro ends the loop of the third macro.&amp;lt;br /&amp;gt;&lt;br /&gt;
The last command of the last macro restarts the macro, creating a loop.&lt;br /&gt;
&lt;br /&gt;
===Multiple keyboards/mice/joysticks=== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
In case multiple keyboards or mice or joysticks are used, it's not possible to specify the device for which events are generated.&amp;lt;br /&amp;gt;&lt;br /&gt;
Events are generated for the first keyboard/mouse/joystick found in the configuration.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonovision</name></author>
		
	</entry>
	<entry>
		<id>https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3939</id>
		<title>Macros</title>
		<link rel="alternate" type="text/html" href="https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3939"/>
		<updated>2015-02-26T04:22:36Z</updated>

		<summary type="html">&lt;p&gt;Jonovision: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Directory== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Macros have to be defined in files saved into:&lt;br /&gt;
* Ubuntu: the ~/.gimx/macros directory. ~ is the home directory, and .gimx folder is hidden (in the file manager, press ctrl+h to display hidden folders).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\gimx\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
GIMX 1.12 and older:&lt;br /&gt;
* 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).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\emuclient\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
GIMX 0.51 and older:&lt;br /&gt;
* Windows 32bits: the C:\Program Files\GIMX\macros directory.&lt;br /&gt;
* Windows 64bits: the C:\Program Files (x86)\GIMX\macros directory.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
MACRO &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt;&lt;br /&gt;
 &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt; &amp;lt;VALUE&amp;gt;&lt;br /&gt;
 DELAY &amp;lt;MS&amp;gt;&lt;br /&gt;
 #&amp;lt;COMMENT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;DEVICE EVENT&amp;gt;: KEY, KEYDOWN, KEYUP, MBUTTON, MBUTTONDOWN, MBUTTONUP, JBUTTON, JBUTTONDOWN, JBUTTONUP, MAXIS, JAXIS&lt;br /&gt;
 &amp;lt;ID&amp;gt;: the event id (case sensitive) as displayed in gimx-config&lt;br /&gt;
 &amp;lt;VALUE&amp;gt;: the axis value (only for MAXIS and JAXIS)&lt;br /&gt;
 &amp;lt;MS&amp;gt;: integer value in milliseconds&lt;br /&gt;
 &amp;lt;COMMENT&amp;gt;: a comment, not interpreted&lt;br /&gt;
&lt;br /&gt;
==Commands== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* KEYDOWN: keyboard key pressed&lt;br /&gt;
* KEYUP: keyboard key released&lt;br /&gt;
* KEY: KEYDOWN + DELAY 50 + KEYUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
* MBUTTONDOWN: mouse button pressed&lt;br /&gt;
* MBUTTONUP: mouse button released&lt;br /&gt;
* MBUTTON: MBUTTONDOWN + DELAY 50 + MBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* JBUTTONDOWN: joystick button pressed&lt;br /&gt;
* JBUTTONUP: joystick button released&lt;br /&gt;
* JBUTTON: JBUTTONDOWN + DELAY 50 + JBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* DELAY: delay in milliseconds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
* MAXIS: mouse axis moved&lt;br /&gt;
ID: 0 for x axis, and 1 for y axis&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: positive values for right and down&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* JAXIS: joystick axis moved&lt;br /&gt;
ID: the axis id as displayed in gimx-config&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: in [-32768 .. 32767] for centered axes, and in [0 .. 32767] for non-centered axes&lt;br /&gt;
&lt;br /&gt;
==Example1: rapid_fire.txt== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
'p' is bind to r1 in both hip fire and ADS profiles.&amp;lt;br /&amp;gt;&lt;br /&gt;
'BUTTON_LEFT' is NOT bind to r1 in both hip fire and ADS profiles.&lt;br /&gt;
&lt;br /&gt;
==Example2: recoil.txt== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
MACRO KEYDOWN o&lt;br /&gt;
 MAXIS 1 25&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Change '25' with the value in [0..128] that cancels the recoil.&lt;br /&gt;
&lt;br /&gt;
==Macro activation== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
This section is only applicable since GIMX 1.00.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
It is possible to specify the macro files to be read for each configuration file.&amp;lt;br /&amp;gt;&lt;br /&gt;
This can be configured in a file named &amp;quot;configs.txt&amp;quot;, located in the macros directory.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 #If config1.xml is loaded, macro1.txt is read.&lt;br /&gt;
 config1.xml macro1.txt&lt;br /&gt;
 #If config1.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config1.xml macro2.txt&lt;br /&gt;
 #If config2.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config2.xml macro2.txt&lt;br /&gt;
Lines beginning with a # are not interpreted.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
It is also possible to define activation triggers within the macro definition.&amp;lt;br /&amp;gt;&lt;br /&gt;
The syntax is:&lt;br /&gt;
 TRIGGER &amp;lt;event&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F2&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F3&lt;br /&gt;
 TRIGGER F6&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F4&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
With GIMX 1.12 and earlier, the above example works the following way:&amp;lt;br /&amp;gt;&lt;br /&gt;
F1 remains active all the time as there is no trigger specified.&amp;lt;br /&amp;gt;&lt;br /&gt;
F2 and F4 are default active. If F6 is pressed, F3 becomes active, F2 and F4 become inactive.&amp;lt;br /&amp;gt;&lt;br /&gt;
With GIMX 2.00:&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger are default inactive. To make a macro with trigger default active, add a line containing &amp;quot;INIT ON&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger can work with a toggle mode. This can be configured adding a line containing &amp;quot;TOGGLE YES&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 TRIGGER 1&lt;br /&gt;
 INIT ON&lt;br /&gt;
 TOGGLE YES&lt;br /&gt;
 #content&lt;br /&gt;
&lt;br /&gt;
==Notes== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Delay precision=== &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
The delay precision depends on the controller update period:&lt;br /&gt;
* sixaxis/bluetooth = 11.25ms&lt;br /&gt;
* sixaxis/usb       = 10ms&lt;br /&gt;
* 360 pad           = 8ms&lt;br /&gt;
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.&amp;lt;br /&amp;gt;&lt;br /&gt;
For example, if the precision is 11.25ms and the delay is 12ms, the resulting delay will be 22.50ms (=2*11.25ms).&lt;br /&gt;
&lt;br /&gt;
===Macro loop=== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
To make a macro loop, just add a KEYDOWN, MBUTTONDOWN or JBUTTONDOWN command at the end of the macro that is triggered with a KEYDOWN, MBUTTONDOWN or JBUTTONDOWN that you wish to loop.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 #~Fire Macro&lt;br /&gt;
 MACRO KEYDOWN p&lt;br /&gt;
 #~In gimx-config bind k to fire&lt;br /&gt;
 KEY k&lt;br /&gt;
 #~Delay is set according to the rate of fire desired&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 &lt;br /&gt;
 #~Stops Rapid Fire Macro&lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 &lt;br /&gt;
 #~Triggers Fire Macro in a Loop&lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
The macro is triggered by holding down the left mouse button.&amp;lt;br /&amp;gt;&lt;br /&gt;
Upon the release of the left mouse button the second macro ends the loop of the third macro.&amp;lt;br /&amp;gt;&lt;br /&gt;
The last command of the last macro restarts the macro, creating a loop.&lt;br /&gt;
&lt;br /&gt;
===Multiple keyboards/mice/joysticks=== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
In case multiple keyboards or mice or joysticks are used, it's not possible to specify the device for which events are generated.&amp;lt;br /&amp;gt;&lt;br /&gt;
Events are generated for the first keyboard/mouse/joystick found in the configuration.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonovision</name></author>
		
	</entry>
	<entry>
		<id>https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3938</id>
		<title>Macros</title>
		<link rel="alternate" type="text/html" href="https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3938"/>
		<updated>2015-02-26T04:22:07Z</updated>

		<summary type="html">&lt;p&gt;Jonovision: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Directory== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Macros have to be defined in files saved into:&lt;br /&gt;
* Ubuntu: the ~/.gimx/macros directory. ~ is the home directory, and .gimx folder is hidden (in the file manager, press ctrl+h to display hidden folders).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\gimx\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
GIMX 1.12 and older:&lt;br /&gt;
* 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).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\emuclient\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
GIMX 0.51 and older:&lt;br /&gt;
* Windows 32bits: the C:\Program Files\GIMX\macros directory.&lt;br /&gt;
* Windows 64bits: the C:\Program Files (x86)\GIMX\macros directory.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
MACRO &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt;&lt;br /&gt;
 &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt; &amp;lt;VALUE&amp;gt;&lt;br /&gt;
 DELAY &amp;lt;MS&amp;gt;&lt;br /&gt;
 #&amp;lt;COMMENT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;DEVICE EVENT&amp;gt;: KEY, KEYDOWN, KEYUP, MBUTTON, MBUTTONDOWN, MBUTTONUP, JBUTTON, JBUTTONDOWN, JBUTTONUP, MAXIS, JAXIS&lt;br /&gt;
 &amp;lt;ID&amp;gt;: the event id (case sensitive) as displayed in gimx-config&lt;br /&gt;
 &amp;lt;VALUE&amp;gt;: the axis value (only for MAXIS and JAXIS)&lt;br /&gt;
 &amp;lt;MS&amp;gt;: integer value in milliseconds&lt;br /&gt;
 &amp;lt;COMMENT&amp;gt;: a comment, not interpreted&lt;br /&gt;
&lt;br /&gt;
==Commands== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* KEYDOWN: keyboard key pressed&lt;br /&gt;
* KEYUP: keyboard key released&lt;br /&gt;
* KEY: KEYDOWN + DELAY 50 + KEYUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
* MBUTTONDOWN: mouse button pressed&lt;br /&gt;
* MBUTTONUP: mouse button released&lt;br /&gt;
* MBUTTON: MBUTTONDOWN + DELAY 50 + MBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* JBUTTONDOWN: joystick button pressed&lt;br /&gt;
* JBUTTONUP: joystick button released&lt;br /&gt;
* JBUTTON: JBUTTONDOWN + DELAY 50 + JBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* DELAY: delay in milliseconds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
* MAXIS: mouse axis moved&lt;br /&gt;
ID: 0 for x axis, and 1 for y axis&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: positive values for right and down&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* JAXIS: joystick axis moved&lt;br /&gt;
ID: the axis id as displayed in gimx-config&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: in [-32768 .. 32767] for centered axes, and in [0 .. 32767] for non-centered axes&lt;br /&gt;
&lt;br /&gt;
==Example1: rapid_fire.txt== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
'p' is bind to r1 in both hip fire and ADS profiles.&amp;lt;br /&amp;gt;&lt;br /&gt;
'BUTTON_LEFT' is NOT bind to r1 in both hip fire and ADS profiles.&lt;br /&gt;
&lt;br /&gt;
==Example2: recoil.txt== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
MACRO KEYDOWN o&lt;br /&gt;
 MAXIS 1 25&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Change '25' with the value in [0..128] that cancels the recoil.&lt;br /&gt;
&lt;br /&gt;
==Macro activation== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
This section is only applicable since GIMX 1.00.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
It is possible to specify the macro files to be read for each configuration file.&amp;lt;br /&amp;gt;&lt;br /&gt;
This can be configured in a file named &amp;quot;configs.txt&amp;quot;, located in the macros directory.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 #If config1.xml is loaded, macro1.txt is read.&lt;br /&gt;
 config1.xml macro1.txt&lt;br /&gt;
 #If config1.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config1.xml macro2.txt&lt;br /&gt;
 #If config2.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config2.xml macro2.txt&lt;br /&gt;
Lines beginning with a # are not interpreted.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
It is also possible to define activation triggers within the macro definition.&amp;lt;br /&amp;gt;&lt;br /&gt;
The syntax is:&lt;br /&gt;
 TRIGGER &amp;lt;event&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F2&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F3&lt;br /&gt;
 TRIGGER F6&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F4&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
With GIMX 1.12 and earlier, the above example works the following way:&amp;lt;br /&amp;gt;&lt;br /&gt;
F1 remains active all the time as there is no trigger specified.&amp;lt;br /&amp;gt;&lt;br /&gt;
F2 and F4 are default active. If F6 is pressed, F3 becomes active, F2 and F4 become inactive.&amp;lt;br /&amp;gt;&lt;br /&gt;
With GIMX 2.00:&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger are default inactive. To make a macro with trigger default active, add a line containing &amp;quot;INIT ON&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger can work with a toggle mode. This can be configured adding a line containing &amp;quot;TOGGLE YES&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 TRIGGER 1&lt;br /&gt;
 INIT ON&lt;br /&gt;
 TOGGLE YES&lt;br /&gt;
 #content&lt;br /&gt;
&lt;br /&gt;
==Notes== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Delay precision=== &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
The delay precision depends on the controller update period:&lt;br /&gt;
* sixaxis/bluetooth = 11.25ms&lt;br /&gt;
* sixaxis/usb       = 10ms&lt;br /&gt;
* 360 pad           = 8ms&lt;br /&gt;
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.&amp;lt;br /&amp;gt;&lt;br /&gt;
For example, if the precision is 11.25ms and the delay is 12ms, the resulting delay will be 22.50ms (=2*11.25ms).&lt;br /&gt;
&lt;br /&gt;
===Macro loop=== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
To make a macro loop, just add a KEYDOWN, MBUTTONDOWN or JBUTTONDOWN command at the end of the macro that is triggered with a KEYDOWN, MBUTTONDOWN or JBUTTONDOWN that you wish to loop.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 #~Fire Macro&lt;br /&gt;
 MACRO KEYDOWN p&lt;br /&gt;
 #~In gimx-config bind k to fire&lt;br /&gt;
 KEY k&lt;br /&gt;
 #~Delay is set according to the rate of fire desired&lt;br /&gt;
 DELAY 50&lt;br /&gt;
&lt;br /&gt;
 #~Stops Rapid Fire Macro&lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
 #~Triggers Fire Macro in a Loop&lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
The macro is triggered by holding down the left mouse button.&amp;lt;br /&amp;gt;&lt;br /&gt;
Upon the release of the left mouse button the second macro ends the loop of the third macro.&amp;lt;br /&amp;gt;&lt;br /&gt;
The last command of the last macro restarts the macro, creating a loop.&lt;br /&gt;
&lt;br /&gt;
===Multiple keyboards/mice/joysticks=== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
In case multiple keyboards or mice or joysticks are used, it's not possible to specify the device for which events are generated.&amp;lt;br /&amp;gt;&lt;br /&gt;
Events are generated for the first keyboard/mouse/joystick found in the configuration.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonovision</name></author>
		
	</entry>
	<entry>
		<id>https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3937</id>
		<title>Macros</title>
		<link rel="alternate" type="text/html" href="https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3937"/>
		<updated>2015-02-26T03:50:00Z</updated>

		<summary type="html">&lt;p&gt;Jonovision: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Directory== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Macros have to be defined in files saved into:&lt;br /&gt;
* Ubuntu: the ~/.gimx/macros directory. ~ is the home directory, and .gimx folder is hidden (in the file manager, press ctrl+h to display hidden folders).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\gimx\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
GIMX 1.12 and older:&lt;br /&gt;
* 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).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\emuclient\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
GIMX 0.51 and older:&lt;br /&gt;
* Windows 32bits: the C:\Program Files\GIMX\macros directory.&lt;br /&gt;
* Windows 64bits: the C:\Program Files (x86)\GIMX\macros directory.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
MACRO &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt;&lt;br /&gt;
 &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt; &amp;lt;VALUE&amp;gt;&lt;br /&gt;
 DELAY &amp;lt;MS&amp;gt;&lt;br /&gt;
 #&amp;lt;COMMENT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;DEVICE EVENT&amp;gt;: KEY, KEYDOWN, KEYUP, MBUTTON, MBUTTONDOWN, MBUTTONUP, JBUTTON, JBUTTONDOWN, JBUTTONUP, MAXIS, JAXIS&lt;br /&gt;
 &amp;lt;ID&amp;gt;: the event id (case sensitive) as displayed in gimx-config&lt;br /&gt;
 &amp;lt;VALUE&amp;gt;: the axis value (only for MAXIS and JAXIS)&lt;br /&gt;
 &amp;lt;MS&amp;gt;: integer value in milliseconds&lt;br /&gt;
 &amp;lt;COMMENT&amp;gt;: a comment, not interpreted&lt;br /&gt;
&lt;br /&gt;
==Commands== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* KEYDOWN: keyboard key pressed&lt;br /&gt;
* KEYUP: keyboard key released&lt;br /&gt;
* KEY: KEYDOWN + DELAY 50 + KEYUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
* MBUTTONDOWN: mouse button pressed&lt;br /&gt;
* MBUTTONUP: mouse button released&lt;br /&gt;
* MBUTTON: MBUTTONDOWN + DELAY 50 + MBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* JBUTTONDOWN: joystick button pressed&lt;br /&gt;
* JBUTTONUP: joystick button released&lt;br /&gt;
* JBUTTON: JBUTTONDOWN + DELAY 50 + JBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* DELAY: delay in milliseconds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
* MAXIS: mouse axis moved&lt;br /&gt;
ID: 0 for x axis, and 1 for y axis&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: positive values for right and down&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* JAXIS: joystick axis moved&lt;br /&gt;
ID: the axis id as displayed in gimx-config&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: in [-32768 .. 32767] for centered axes, and in [0 .. 32767] for non-centered axes&lt;br /&gt;
&lt;br /&gt;
==Example1: rapid_fire.txt== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
'p' is bind to r1 in both hip fire and ADS profiles.&amp;lt;br /&amp;gt;&lt;br /&gt;
'BUTTON_LEFT' is NOT bind to r1 in both hip fire and ADS profiles.&lt;br /&gt;
&lt;br /&gt;
==Example2: recoil.txt== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
MACRO KEYDOWN o&lt;br /&gt;
 MAXIS 1 25&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Change '25' with the value in [0..128] that cancels the recoil.&lt;br /&gt;
&lt;br /&gt;
==Macro activation== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
This section is only applicable since GIMX 1.00.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
It is possible to specify the macro files to be read for each configuration file.&amp;lt;br /&amp;gt;&lt;br /&gt;
This can be configured in a file named &amp;quot;configs.txt&amp;quot;, located in the macros directory.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 #If config1.xml is loaded, macro1.txt is read.&lt;br /&gt;
 config1.xml macro1.txt&lt;br /&gt;
 #If config1.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config1.xml macro2.txt&lt;br /&gt;
 #If config2.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config2.xml macro2.txt&lt;br /&gt;
Lines beginning with a # are not interpreted.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
It is also possible to define activation triggers within the macro definition.&amp;lt;br /&amp;gt;&lt;br /&gt;
The syntax is:&lt;br /&gt;
 TRIGGER &amp;lt;event&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F2&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F3&lt;br /&gt;
 TRIGGER F6&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F4&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
With GIMX 1.12 and earlier, the above example works the following way:&amp;lt;br /&amp;gt;&lt;br /&gt;
F1 remains active all the time as there is no trigger specified.&amp;lt;br /&amp;gt;&lt;br /&gt;
F2 and F4 are default active. If F6 is pressed, F3 becomes active, F2 and F4 become inactive.&amp;lt;br /&amp;gt;&lt;br /&gt;
With GIMX 2.00:&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger are default inactive. To make a macro with trigger default active, add a line containing &amp;quot;INIT ON&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger can work with a toggle mode. This can be configured adding a line containing &amp;quot;TOGGLE YES&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 TRIGGER 1&lt;br /&gt;
 INIT ON&lt;br /&gt;
 TOGGLE YES&lt;br /&gt;
 #content&lt;br /&gt;
&lt;br /&gt;
==Notes== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Delay precision=== &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
The delay precision depends on the controller update period:&lt;br /&gt;
* sixaxis/bluetooth = 11.25ms&lt;br /&gt;
* sixaxis/usb       = 10ms&lt;br /&gt;
* 360 pad           = 8ms&lt;br /&gt;
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.&amp;lt;br /&amp;gt;&lt;br /&gt;
For example, if the precision is 11.25ms and the delay is 12ms, the resulting delay will be 22.50ms (=2*11.25ms).&lt;br /&gt;
&lt;br /&gt;
===Macro loop=== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
To make a macro loop, just add a KEYDOWN, MBUTTONDOWN or JBUTTONDOWN command at the end of the macro that is triggered with a KEYDOWN, MBUTTONDOWN or JBUTTONDOWN that you wish to loop.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT #~Triggers Rapid Fire Macro&lt;br /&gt;
 KEY p&lt;br /&gt;
 MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT #~Stops Rapid Fire Macro&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 &lt;br /&gt;
 MACRO KEYDOWN p #~Rapid Fire Macro Loop&lt;br /&gt;
 KEY k #~In gimx-config bind k to fire&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 KEYDOWN p #~Restarts this macro&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
The macro is triggered by holding down the left mouse button.&amp;lt;br /&amp;gt;&lt;br /&gt;
Upon the release of the left mouse button the second macro ends the loop of the third macro.&amp;lt;br /&amp;gt;&lt;br /&gt;
The last command of the last macro restarts the macro, creating a loop.&lt;br /&gt;
&lt;br /&gt;
===Multiple keyboards/mice/joysticks=== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
In case multiple keyboards or mice or joysticks are used, it's not possible to specify the device for which events are generated.&amp;lt;br /&amp;gt;&lt;br /&gt;
Events are generated for the first keyboard/mouse/joystick found in the configuration.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonovision</name></author>
		
	</entry>
	<entry>
		<id>https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3936</id>
		<title>Macros</title>
		<link rel="alternate" type="text/html" href="https://gimx.fr/wiki/index.php?title=Macros&amp;diff=3936"/>
		<updated>2015-02-26T03:46:35Z</updated>

		<summary type="html">&lt;p&gt;Jonovision: Changed how the macro is executed by introducing a macro that activates and deactivate the looping macro, eliminating the need to click the left mouse button to end the macro loop.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Directory== &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Macros have to be defined in files saved into:&lt;br /&gt;
* Ubuntu: the ~/.gimx/macros directory. ~ is the home directory, and .gimx folder is hidden (in the file manager, press ctrl+h to display hidden folders).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\gimx\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
GIMX 1.12 and older:&lt;br /&gt;
* 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).&lt;br /&gt;
* Windows: the C:\Users\&amp;lt;username&amp;gt;\AppData\Roaming\emuclient\macros directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
GIMX 0.51 and older:&lt;br /&gt;
* Windows 32bits: the C:\Program Files\GIMX\macros directory.&lt;br /&gt;
* Windows 64bits: the C:\Program Files (x86)\GIMX\macros directory.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
MACRO &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt;&lt;br /&gt;
 &amp;lt;DEVICE EVENT&amp;gt; &amp;lt;ID&amp;gt; &amp;lt;VALUE&amp;gt;&lt;br /&gt;
 DELAY &amp;lt;MS&amp;gt;&lt;br /&gt;
 #&amp;lt;COMMENT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;DEVICE EVENT&amp;gt;: KEY, KEYDOWN, KEYUP, MBUTTON, MBUTTONDOWN, MBUTTONUP, JBUTTON, JBUTTONDOWN, JBUTTONUP, MAXIS, JAXIS&lt;br /&gt;
 &amp;lt;ID&amp;gt;: the event id (case sensitive) as displayed in gimx-config&lt;br /&gt;
 &amp;lt;VALUE&amp;gt;: the axis value (only for MAXIS and JAXIS)&lt;br /&gt;
 &amp;lt;MS&amp;gt;: integer value in milliseconds&lt;br /&gt;
 &amp;lt;COMMENT&amp;gt;: a comment, not interpreted&lt;br /&gt;
&lt;br /&gt;
==Commands== &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* KEYDOWN: keyboard key pressed&lt;br /&gt;
* KEYUP: keyboard key released&lt;br /&gt;
* KEY: KEYDOWN + DELAY 50 + KEYUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
* MBUTTONDOWN: mouse button pressed&lt;br /&gt;
* MBUTTONUP: mouse button released&lt;br /&gt;
* MBUTTON: MBUTTONDOWN + DELAY 50 + MBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* JBUTTONDOWN: joystick button pressed&lt;br /&gt;
* JBUTTONUP: joystick button released&lt;br /&gt;
* JBUTTON: JBUTTONDOWN + DELAY 50 + JBUTTONUP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* DELAY: delay in milliseconds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
* MAXIS: mouse axis moved&lt;br /&gt;
ID: 0 for x axis, and 1 for y axis&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: positive values for right and down&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* JAXIS: joystick axis moved&lt;br /&gt;
ID: the axis id as displayed in gimx-config&amp;lt;br /&amp;gt;&lt;br /&gt;
VALUE: in [-32768 .. 32767] for centered axes, and in [0 .. 32767] for non-centered axes&lt;br /&gt;
&lt;br /&gt;
==Example1: rapid_fire.txt== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 DELAY 50&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYUP p&lt;br /&gt;
 MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
'p' is bind to r1 in both hip fire and ADS profiles.&amp;lt;br /&amp;gt;&lt;br /&gt;
'BUTTON_LEFT' is NOT bind to r1 in both hip fire and ADS profiles.&lt;br /&gt;
&lt;br /&gt;
==Example2: recoil.txt== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
MACRO KEYDOWN o&lt;br /&gt;
 MAXIS 1 25&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
 &lt;br /&gt;
 MACRO MBUTTONUP BUTTON_LEFT&lt;br /&gt;
 KEYDOWN o&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Change '25' with the value in [0..128] that cancels the recoil.&lt;br /&gt;
&lt;br /&gt;
==Macro activation== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
This section is only applicable since GIMX 1.00.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
It is possible to specify the macro files to be read for each configuration file.&amp;lt;br /&amp;gt;&lt;br /&gt;
This can be configured in a file named &amp;quot;configs.txt&amp;quot;, located in the macros directory.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 #If config1.xml is loaded, macro1.txt is read.&lt;br /&gt;
 config1.xml macro1.txt&lt;br /&gt;
 #If config1.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config1.xml macro2.txt&lt;br /&gt;
 #If config2.xml is loaded, macro2.txt is read.&lt;br /&gt;
 config2.xml macro2.txt&lt;br /&gt;
Lines beginning with a # are not interpreted.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
It is also possible to define activation triggers within the macro definition.&amp;lt;br /&amp;gt;&lt;br /&gt;
The syntax is:&lt;br /&gt;
 TRIGGER &amp;lt;event&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F2&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F3&lt;br /&gt;
 TRIGGER F6&lt;br /&gt;
 #content&lt;br /&gt;
 &lt;br /&gt;
 MACRO F4&lt;br /&gt;
 TRIGGER F5&lt;br /&gt;
 #content&lt;br /&gt;
With GIMX 1.12 and earlier, the above example works the following way:&amp;lt;br /&amp;gt;&lt;br /&gt;
F1 remains active all the time as there is no trigger specified.&amp;lt;br /&amp;gt;&lt;br /&gt;
F2 and F4 are default active. If F6 is pressed, F3 becomes active, F2 and F4 become inactive.&amp;lt;br /&amp;gt;&lt;br /&gt;
With GIMX 2.00:&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger are default inactive. To make a macro with trigger default active, add a line containing &amp;quot;INIT ON&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Macros with a trigger can work with a toggle mode. This can be configured adding a line containing &amp;quot;TOGGLE YES&amp;quot; after the &amp;quot;TRIGGER &amp;lt;event&amp;gt;&amp;quot; line.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 MACRO F1&lt;br /&gt;
 TRIGGER 1&lt;br /&gt;
 INIT ON&lt;br /&gt;
 TOGGLE YES&lt;br /&gt;
 #content&lt;br /&gt;
&lt;br /&gt;
==Notes== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Delay precision=== &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
The delay precision depends on the controller update period:&lt;br /&gt;
* sixaxis/bluetooth = 11.25ms&lt;br /&gt;
* sixaxis/usb       = 10ms&lt;br /&gt;
* 360 pad           = 8ms&lt;br /&gt;
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.&amp;lt;br /&amp;gt;&lt;br /&gt;
For example, if the precision is 11.25ms and the delay is 12ms, the resulting delay will be 22.50ms (=2*11.25ms).&lt;br /&gt;
&lt;br /&gt;
===Macro loop=== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
To make a macro loop, just add a KEYDOWN, MBUTTONDOWN or JBUTTONDOWN command at the end of the macro that is triggered with a KEYDOWN, MBUTTONDOWN or JBUTTONDOWN that you wish to loop.&amp;lt;br /&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
MACRO MBUTTONDOWN BUTTON_LEFT #~Triggers Rapid Fire Macro&lt;br /&gt;
KEY p&lt;br /&gt;
MBUTTONUP BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
MACRO MBUTTONUP BUTTON_LEFT #~Stops Rapid Fire Macro&lt;br /&gt;
KEYUP p&lt;br /&gt;
MBUTTONDOWN BUTTON_LEFT&lt;br /&gt;
&lt;br /&gt;
MACRO KEYDOWN p #~Rapid Fire Macro Loop&lt;br /&gt;
KEY k #~In gimx-config bind k to fire&lt;br /&gt;
DELAY 50&lt;br /&gt;
KEYDOWN p #~Restarts this macro&lt;br /&gt;
&lt;br /&gt;
The macro is triggered by holding down the left mouse button.&amp;lt;br /&amp;gt;&lt;br /&gt;
Upon the release of the left mouse button the second macro ends the loop of the third macro.&amp;lt;br /&amp;gt;&lt;br /&gt;
The last command of the last macro restarts the macro, creating a loop.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Multiple keyboards/mice/joysticks=== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
In case multiple keyboards or mice or joysticks are used, it's not possible to specify the device for which events are generated.&amp;lt;br /&amp;gt;&lt;br /&gt;
Events are generated for the first keyboard/mouse/joystick found in the configuration.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonovision</name></author>
		
	</entry>
</feed>