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 is the reason for your passion for sim racing?

  • Watching real motorsport

    Votes: 294 68.5%
  • Physics and mechanics

    Votes: 193 45.0%
  • Competition and adrenaline

    Votes: 211 49.2%
  • Practice for real racing

    Votes: 88 20.5%
  • Community and simracers

    Votes: 117 27.3%
Back
Top