thanks to this thread, and especially to DowntownSix, i finally managed to set up Voice Attack+Orion+HOTAS the way i want to! I now have perfect integration between voice and button commands for the panels, they stay in sync in any situation i tested (see below). I also have automated docking with voice that works from any initial panel setup, due to the integration.
If someone using Orion is interested, for the integration i made these two commands, that activate when i press the buttons on my stick that scroll to the next and previous tabs respectively (NOTE: i have only configured the left and right panels to work this way, because the other two (comms and role) i activate by headlook in VR):
Begin Small Integer Compare : [left-panel-status] Equals 1
Set small int (condition) [left-panel-tab] value as incremented by 1
Execute command, '((Left Panel Tab Check))' (by name) (and wait until it completes)
End Condition
Begin Small Integer Compare : [left-panel-status] Equals 0
End Condition
Begin Small Integer Compare : [right-panel-status] Equals 1
Set small int (condition) [right-panel-tab] value as incremented by 1
Execute command, '((Right Panel Tab Check))' (by name) (and wait until it completes)
End Condition
Begin Small Integer Compare : [right-panel-status] Equals 0
End Condition
and the second:
Begin Small Integer Compare : [left-panel-status] Equals 1
Set small int (condition) [left-panel-tab] value as decremented by 1
Execute command, '((Left Panel Tab Check))' (by name) (and wait until it completes)
End Condition
Begin Small Integer Compare : [left-panel-status] Equals 0
End Condition
Begin Small Integer Compare : [right-panel-status] Equals 1
Set small int (condition) [right-panel-tab] value as decremented by 1
Execute command, '((Right Panel Tab Check))' (by name) (and wait until it completes)
End Condition
Begin Small Integer Compare : [right-panel-status] Equals 0
End Condition
then for automated docking i modified the "docking request" voice command this way:
Execute command, '((RS - Docking Request))' (by name)
Pause 0.03 seconds
Execute command, 'Contacts' (and wait until it completes)
Pause 0.5 seconds
Execute command, '((UI Accept))' (by name) (and wait until it completes)
Pause 0.03 seconds
Execute command, '((UI Down))' (by name) (and wait until it completes)
Pause 0.03 seconds
Execute command, '((UI Accept))' (by name) (and wait until it completes)
Pause 0.03 seconds
Execute command, '((Look ahead))' (by name) (and wait until it completes)
Pause 8 seconds
Set Text [Question Asked] to 'docking shields'
Execute command, '((Ask Question))' (by name) (and wait until it completes)
Pause 8 seconds
Set Text [Question Asked] to 'deploy gear'
Execute command, '((Ask Question))' (by name) (and wait until it completes)
Pause 60 seconds
Execute command, '((Balance Power))' (by name) (and wait until it completes)
Execute command, '((RS - Power Balanced))' (by name) (and wait until it completes)
that should be all, iirc. the only bug i found is in combat, after having a sub-target selected, when the target dies the sub-target tab disappears but Voice Attack can't see that and still thinks we are on that tab. Not a big problem. Anyway in any case of messing up just setting the left panel to 'navigaton', right panel to 'status',and asking Orion to close the panel and 'run diagnostics' is enough to get everything back in place. People with VA without Orion can get an idea on how it's done by reading this, and than copypaste the commands and adapt them to their profile, creating an ini command for the variables and other appropriate commands for navigating the panels.
Do a back up before editing any command, i do not guarantee that this will work at all but, with my setup, it's very satisfying. YMMV. Tweak according to your setup.