Combined controls: do you implement this idea?

I've been using this for some months now and I think it's a good practice because it allows you to have more functions with the same number of buttons, thus reducing the need for many buttons on the wheel or the button box, making it simpler to use and remember, and saving buttons for any extra function you need. The idea is to map dual functions to the same button: function 1 for press and release, and function 2 for press and hold (0,5 seconds or whatever time you find ok). For this I'm using autohotkey scripts as launchers for my games. Some of the dual functions I have mapped in several sims are, for instance: pause-unpause / retire; start / restart; camera / replay; pit limit speed / pit request... Generally, you assign these function to keys on the games, and program the scripts as you need. Different games require different codes to make some things work. For instance in Assetto Corsa, it's great to have the In-game Keyboard Shortcuts Extension installed. Something basic for rFactor 2 would be this (change F5 and F6 to the keys you wish).

$1joy5:: ; pit limit / pit request (hold)
SetKeyDelay, 10, 50
keywait 1joy5, T0.6
if errorLevel
{
send {F5}
return
}
else
{
send {F4}
return
}

Something a bit more complex, for the pause / retire function in Assetto Corsa. As you can see, when the pause menu is displayed, you can program the mouse movement and click to unpause (cannot be done with keyboard input):

$1joy9:: ; pause toggle / retire (hold) - In-game Keyboard Shortcuts Extension needed
SetKeyDelay, 10, 50
keywait 1joy9, T0.6
if errorLevel
{
send ^e
return
}
else
{
send {esc}
sleep 200
if (toggle := !toggle)
return
else
{
DllCall("SetCursorPos", int, 960, int, 468)
sleep 300
click
DllCall("SetCursorPos", int, 960, int, 2000)
return
}
}
return

I have also another interesting piece of code for Assetto Corsa (see example) and rFactor 2 to have one button to cycle many different cameras:

myListLetter := ["{F1}","{F1}","{F1}","{F1}","{F1}","{F3}","{F3}","{F3}","{F6}","{F6}","{F6}","{F6}","{F6}","{F5}","{F1}"]
numberPressed = 0
size := myListLetter.MaxIndex()

$1joy4:: ; cameras / replay (hold)
SetKeyDelay, 10, 50
keywait 1joy4, T0.6
if errorLevel
{
send ^r
return
}
else
{
numberPressed++
if(numberPressed<=size)
{
}
else
numberPressed = 1
letter := myListLetter[numberPressed]
Send, %letter%
return
}
return
 

Latest News

What would make you race in our Club events

  • Special events

    Votes: 30 24.2%
  • More leagues

    Votes: 25 20.2%
  • Prizes

    Votes: 22 17.7%
  • Trophies

    Votes: 13 10.5%
  • Forum trophies

    Votes: 7 5.6%
  • Livestreams

    Votes: 21 16.9%
  • Easier access

    Votes: 74 59.7%
  • Other? post your reason

    Votes: 19 15.3%
Back
Top