How to: Quadstick, Project Iris, autohotkey

135 views
Skip to first unread message

Dan NH

unread,
Jun 9, 2019, 4:06:12 PM6/9/19
to QuadStick
https://groups.google.com/forum/#!topic/quadstick/McB0xN9RyTU

From these two threads, the conversation continues, but I figured it out so here is a how to:

Step one: Get autohotkey working

The quick summary here is that you want to install to the default program files folder, do a custom installation and optionally enable the UI option (so you can later run commands as administrator). You don't necessarily need this option, but if you are going to be a power user, the last thing you need is Windows UAC getting in the way.

Create a folder on your computer for your autohotkey scripts. Create a script that looks like this:
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

^+i:: ; increment quadstick mode
Run %A_ScriptDir%\QMPSend_increment.lnk
return

^+d:: ; decrement quadstick mode
Run %A_ScriptDir%\QMPSend_decrement.lnk
return

Now you have programmed control + shift + i to increment the sheet, and control + shift + d to decrement the sheet.

  • Right-click on the script and compile it.
  • Right-click on the executable and optionally make a shortcut into your startup folder if you want this to always be available.
press the Windows logo key  + R, type shell:startup
 
  • Run the executable by double-clicking it. It puts a H icon in your start tray on the right by the clock. You may have to go into that triangle menu beside that to drag it down. I set mine to load the executable on startup.
  • Note that this will only work if QMP is running. I will probably modify the script at some point to make that happen.



Step two: modify project Iris macros
C:\Users\Your_username_here\AppData\Local\Xcessity Software Solutions\IRIS\macros.txt
You can add the following XML:

  <MACRO id="QS_increment_mode">
    <START></START>
    <MAIN>
      <KEYINPUT behaviour="PRESS" code="0x11"/>
      <KEYINPUT behaviour="PRESS" code="0x10"/>
      <KEYINPUT behaviour="PRESS" code="0x49"/>
      <KEYINPUT behaviour="RELEASE" code="0x49"/>
      <KEYINPUT behaviour="RELEASE" code="0x10"/>
      <KEYINPUT behaviour="RELEASE" code="0x11"/>
    </MAIN>
    <END></END>
  </MACRO>
  <MACRO id="QS_decrement_mode">
    <START></START>
    <MAIN>
      <KEYINPUT behaviour="PRESS" code="0x11"/>
      <KEYINPUT behaviour="PRESS" code="0x10"/>
      <KEYINPUT behaviour="PRESS" code="0x44"/>
      <KEYINPUT behaviour="RELEASE" code="0x44"/>
      <KEYINPUT behaviour="RELEASE" code="0x10"/>
      <KEYINPUT behaviour="RELEASE" code="0x11"/>
    </MAIN>
    <END></END>
  </MACRO>

Now you have programmed control + shift + i to increment the sheet, and control + shift + d to decrement the sheet.

Step three:
Make a profile and interactors that execute the macros from step two. You should see two entries now for QS_decrement_mode and QS_increment_mode.

  • On the profile settings page of project iris, you can set the key to activate the interactors. I have mine set to ';'

And now you can test it out! You can activate that Project iris activate interactors key while you are gazing at those interactors areas and it will change the sheet mode of your Quadstick profile!

Dan NH

unread,
Jun 9, 2019, 4:10:45 PM6/9/19
to QuadStick
I forgot to mention, you should create these two shortcuts with the following target for the autohotkey scripts to work:

"C:\Program Files (x86)\QuadStick\QMPSend.exe" "decrement_mode"
"C:\Program Files (x86)\QuadStick\QMPSend.exe" "increment_mode"
Set to run minimized. That information was in the referenced threads but thought I should put it here.

Steven F

unread,
Jun 9, 2019, 4:24:43 PM6/9/19
to QuadStick
Hey, nice tutorial Dan... just one thing, you don't have to compile autohotkey scripts to run them. They can run in script form if autohotkey is installed on the system. Makes it a little easier if you want to tweak things.

I actually made a script that automatically launches Quadstick manager, Project Iris and switches Quadstick to a specific profile. Its pretty convenient to get everything up and running with just one click.  It can also startup a game if you want. I can post the script if any body wants it...

On Sunday, June 9, 2019 at 4:06:12 PM UTC-4, Dan NH wrote:

Steven F

unread,
Jun 9, 2019, 4:50:27 PM6/9/19
to QuadStick
Also, another tip... You can remove the %A_ScriptDir%\ bits because you defined that globally with the SetWorkingDir line.

Additional, you can actually do this without the shortcuts if you want... autohotkey can run the commands directly. For example in you examples, you could instead put..

^+i:: ; increment quadstick mode
Run, QMPSend.exe "increment_mode",,Min
Return


^+d:: ; decrement quadstick mode
Run, QMPSend.exe "decrement_mode",,Min
Return

It also might be a good idea to change the SetWorkingDir %A_ScriptDir% line to SetWorkingDir C:\Program Files (x86)\QuadStick That way if you don't have the script in the Quadstick directory, autohotkey will still know where QMPSend is.


Fred Davison

unread,
Jun 9, 2019, 5:19:13 PM6/9/19
to Steven F, QuadStick
If AutoHotKey can send data out a UDP port, it would be possible to bypass qmpsend and have QMP relay the commands to the Quadstick, which is always listening on port 47807.  If AHK can talk to serial ports, it would be possible to even bypass QMP and talk directly to the console port on the Quadstick.

When Matt and I were first setting up voice commands, before QMP existed, we used Putty and just send the command strings from Vocola to Putty instead of QMP.

--
You received this message because you are subscribed to the Google Groups "QuadStick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quadstick+...@googlegroups.com.
To post to this group, send email to quad...@googlegroups.com.
Visit this group at https://groups.google.com/group/quadstick.
To view this discussion on the web visit https://groups.google.com/d/msgid/quadstick/1c98da1a-6ecc-4e14-9f41-a2c86f815943%40googlegroups.com.

Dan NH

unread,
Jun 9, 2019, 5:28:40 PM6/9/19
to QuadStick
Sure, please post your script. I get inspired by reading what other people are doing, and I think it's important to share. I also would like to get rid of the QMPsend dependency, so I'm going to look around a bit more to see what we can do about that. It's not bad having it this way though, just an extra step.

Dan NH

unread,
Jun 9, 2019, 5:43:20 PM6/9/19
to QuadStick
https://www.autohotkey.com/docs/commands/DllCall.htm

I found this. It might be possible to take that .NET code you put in your voice attack profile and compile it into one of these. 


On Sunday, June 9, 2019 at 5:19:13 PM UTC-4, Fred Davison - QuadStick wrote:
If AutoHotKey can send data out a UDP port, it would be possible to bypass qmpsend and have QMP relay the commands to the Quadstick, which is always listening on port 47807.  If AHK can talk to serial ports, it would be possible to even bypass QMP and talk directly to the console port on the Quadstick.

Steven F

unread,
Jun 10, 2019, 12:25:54 PM6/10/19
to QuadStick
I don't have any clue about that.. Have tried contacting the autohotkey people or try the forums?


On Sunday, June 9, 2019 at 5:19:13 PM UTC-4, Fred Davison - QuadStick wrote:
If AutoHotKey can send data out a UDP port, it would be possible to bypass qmpsend and have QMP relay the commands to the Quadstick, which is always listening on port 47807.  If AHK can talk to serial ports, it would be possible to even bypass QMP and talk directly to the console port on the Quadstick.

When Matt and I were first setting up voice commands, before QMP existed, we used Putty and just send the command strings from Vocola to Putty instead of QMP.

On Sun, Jun 9, 2019 at 2:50 PM Steven F <zathr...@gmail.com> wrote:
Also, another tip... You can remove the %A_ScriptDir%\ bits because you defined that globally with the SetWorkingDir line.

Additional, you can actually do this without the shortcuts if you want... autohotkey can run the commands directly. For example in you examples, you could instead put..

^+i:: ; increment quadstick mode
Run, QMPSend.exe "increment_mode",,Min
Return


^+d:: ; decrement quadstick mode
Run, QMPSend.exe "decrement_mode",,Min
Return

It also might be a good idea to change the SetWorkingDir %A_ScriptDir% line to SetWorkingDir C:\Program Files (x86)\QuadStick That way if you don't have the script in the Quadstick directory, autohotkey will still know where QMPSend is.


--
You received this message because you are subscribed to the Google Groups "QuadStick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quad...@googlegroups.com.

Steven F

unread,
Jun 10, 2019, 12:46:53 PM6/10/19
to QuadStick
Here's my script. You can configure what you want to run and if you want to change quadstick's profile up top. I put comments to explain the settings. The hotkeys are set up at the bottom. The script will automatically exit when you shut Quadstick manager. This assumes you installed everything on C drive in default folders.

#Persistent

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir C:\Program Files (x86)\QuadStick  ; Ensures a consistent starting directory.


; ########## Configurations: ##########


iris
=1 ;Enter 1 to launch Iris, 0 for no
eyebind
=0 ;Enter 1 to launch eyeBind, 0 for no
profile
=0 ;Name of QuadStick profile to switch to.. dont include .csv extension, 0 for no

GameTitle=0 ;Enter title of game to launch a game, 0 for no
GameExe := "" ;Enter location of games executible
Borderless=0 ;Enter 1 to launch in game centered borderless window, 0 for no


; ########## End of configurations! ##########


if (GameTitle)
{
   
Run, %GameExe%
   
WinWait, %GameTitle%
   
Sleep, 6000
   
WinGetPos,,, Width, Height, %GameTitle%
   
if (Borderless)
       
WinSet, Style, -0xC40000, %GameTitle% ; this removes window title bar and border
   
WinMove, %GameTitle%,, (A_ScreenWidth/2)-(Width/2), (A_ScreenHeight/2)-(Height/2)
}

if (iris)
{
   
Run, IRIS.exe, C:\Program Files (x86)\Xcessity Software Solutions\IRIS
}

if (eyebind)
{
   
Run, eyebind.exe, C:\EyeBind
}

Run, QuadStick.exe

WinWait, QuadStick
Sleep, 1000
if (profile)
   
Run, QMPSend.exe "load`,%profile%.csv",,Min
WinMinimize, QuadStick
WinWaitClose, QuadStick
ExitApp  
Return

;Set Hotkeys below


^+i:: ; increment quadstick mode

Run, QMPSend.exe "increment_mode",,Min

Return


^+d:: ; decrement quadstick mode

Run, QMPSend.exe "decrement_mode",,Min

Return


;Run, QMPSend.exe "mode`,1",,Min
;Run, QMPSend.exe "digital_out_1`,-1`,100`,-1",,Min
;Run, QMPSend.exe "kb_f`,-1`,100`,-1",,Min

Timothy Carey

unread,
Apr 18, 2021, 11:08:54 PM4/18/21
to QuadStick
Can you explain how I set everything up and where this code goes, what you mean & how to set up the default directories?  It has been a long time since I have used AutoHotKey and it was just basic use. 

Dan NH

unread,
Apr 19, 2021, 6:54:27 PM4/19/21
to QuadStick
It may be worth going to the AutoHotKey website and get it set up.

For me, all I'm doing is writing the scripts, right clicking and running them individually or set to start up.

Timothy Carey

unread,
Apr 20, 2021, 5:05:47 PM4/20/21
to QuadStick
ok
Reply all
Reply to author
Forward
0 new messages