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

To join the OverTake Racing Club races I want them to be: (multiple choice)

  • Free to access

    Votes: 230 88.1%
  • Better structured events

    Votes: 48 18.4%
  • Better structured racing club forum

    Votes: 36 13.8%
  • More use of default game content

    Votes: 39 14.9%
  • More use of fixed setups

    Votes: 69 26.4%
  • No 3rd party registration pages

    Votes: 89 34.1%
  • Less casual events

    Votes: 23 8.8%
  • More casual events

    Votes: 85 32.6%
  • Other, specify in thread

    Votes: 14 5.4%
Back
Top