Sorry for spamming here with such crap (in the realm of SimHubs, proper Button Boxes working as separate controllers, configured with soft much more advanced than simple Joy2Key etc.) - maybe some poor kids find it inspirational or some of you will just find it funny...
... but I'm freaking happy with what I've accomplished with my cheap numpad and a simple AHK script.
Of course, I've also mapped a few additional functions for ACC, but that was easy like taking candy from a baby and not so important...
The real problem I always had with F1 games from Codemasters/EA.
As you probably know, they have quite complicated menus with lots of commands that you can pass to your engineer. OK, perhaps not so complicated, but IMHO still not easy to use during a race and, first of all, with my poor eyesight, difficult to read - I couldn't see them on the screen. When I've played more often, I memorized the combinations for the most important ones - still, not for all.
So, already being in possession of a numpad, I've decided to write some macros in AHK to solve my problem. Unfortunately Autohotkey can't simulate controller actions (to do so, you need soft like Joy2key or at least some additional sophisticated scripts and dll libraries) so first I had to bind the menu navigation commands to the arrow keys and "engineer" and "menu switch" actions to other keys.
Theoretically you can hide Joy actions and substitute them with keyboard presses using AHK, but it didn't work initially, so my plan was in doubt (the inability to switch menu screens and select options using HAT switch and wheel buttons is a pain in such game like F1). Fortunately it turned out that even though game still registers wheel buttons and HAT switch in the menu, tweaking the code in AHK hid them in actual game - F1 gets arrow keys and other alternate keys so I can leave navigation commands assigned to arrows, "engineer" to X, menu switching to Z and I'm still able to invoke all this commands using my wheel. Fantastic!
Now with one button press on my numpad aka button box I can ask engineer everything! last time, best time, fuel, pit strategy, driver in front and behind, pit strategy... You can't imagine how great it is
$joy3::
{
SetKeyDelay 150, 25
SendEvent "z"
}
$joy7::
{
SetKeyDelay 150, 25
SendEvent "x"
}
$NumpadDiv::
{
SetKeyDelay 250, 25
SendEvent "zxx{right}"
} ;fastest lap in race
$NumpadMult::
{
SetKeyDelay 250, 25
SendEvent "zxx{down 1}{right}"
} ;best lap
$NumpadSub::
{
SetKeyDelay 100, 25
SendEvent "zxx{down 2}{right}"
} ;last lap
Of course in quali menu has a bit different layout so I had to write an alternative set of hotkeys and with help of some kind people smarter than me I can know switch between these two sets for quali and race.
Now I'm preparing notes so that I can quickly recall the layout of the buttons in each game whenever it is needed.