In real aviation there are almost no "unique" controls that are found only in one specific aircraft, most of them are unified for all aircraft. The same control switches are represented on each plane, so we could only expect ONE set of commands for ALL planes, as was originally done in X-Plane, which can potentially have all the necessary command names for the controls found in any cockpit. The X-Plane development team can gradually add more commands / data for new functions that can be used by aircraft developers directly in their plane models.
But, most of custom aircraft developers create hundreds of their own "custom" commands/datarefs for every simplest function though they even have no any reason for this, because they would easily use existing X-Plane commands/datarefs instead, for most functions. As a result, if we take any 10 different virtual aircraft models of the same plane (from different developers) we will see thousands of datarefs/commands instead of tens (maybe hundreds).
Most often because of the eye candy 3D graphics, and most of the custom datarefs and commands are created only for the purpose of animations the elements in the virtual cockpit, nothing more! Custom commands are used to control virtual switches and then custom function just sets some standard X-Plane dataref values, that could be done directly with standard commands and 90% of their panel functions can be controlled using existing X-Plane datarefs!
Of course, developers may simulate some aircraft features that X-Plane does not support. And, sure, this requires adding custom datarefs for such features, but there are very few of them.
So you have to find and use all these unnecessary custom commands in your hardware panel instead of the standard ones, just to watch how cool all these switches/knobs/levers are animated on screen.
For example, a developer wants to add some specific function for wipers to his aircraft model, that should be activated by the switch/knob "Wiper ON".
1. He creates a new custom dataref "my_super_plane/systems/MY_WIPER_Animation" that takes values between 0.00000 and 1.00000 and is linked to the animation on the 3D model, and writes the function "MY_WIPER_Animation" that gradually changes this dataref's value over time.
2.In addition, developer creates another dataref "my_super_plane/switches/MY_Animated_Wiper_Switch_Position" (for the switch animation) and a couple of custom commands for this switch, or worse - a single toggle command "my_super_plane/switches/MY_Wiper_Switch_Toggle" that activates the switch/knob animation.
Okay, but why not just use the standard commands (which are always paired) for the switch and the standard (customizable in PlaneMaker) X-Plane dataref "sim/flightmodel2/misc/wiper_angle_deg" to use its values for the animation in the model?
(OK, at least, plane developers could leave the standard dataref accessible for writing along with their custom datarefs...)
Why make animated toggle switch in the virtual cockpit? It is "TOGGLE"! People don't have to even notice in real life that the switch is moving through all these positions, all these few millimeters.
No, in real life I just move my finger and the switch momentally changes its position! Who ever had any complaints about the "good old" 2-picture method of switch display? Click once - switch up, click again - switch down - that's all that's needed. The same thing (even worse!) for buttons - even two states (pushed, released) are almost excessive to display on screen.
Please let them all be "toggle" switches, don't make them as a slow-motion scene. Cockpit panels in many modern "custom-made" planes look incredible realistic (what is not needed for cockpit builders), but act like a cartoon movie:
It's not good to do all these animations - first, you have to spend much time to write the functions for all animated controls, second - you make a tons of "custom" datarefs for your plane, and the worst thing - some of you restrict the standard datarefs usage, by overwriting their values based on your animations!
Making your panel with standard controls, using standard datarefs doesn't make your work worse (is my opinion even better, as you aren't doing anything "overkill" and keeping good compatibility).
Keep in mind, the cockpit builders don't need any virtual cockpit, not 3D, not 2D. If the panel view is turned off, they won't see any animations, but they need to find out a particular aircraft model's custom commands and datarefs to make their cockpit work with it!
Unfortunately, when an aircraft developer focuses too much attention on making an animated virtual cockpit, it can create problems for people building a physical cockpit. In most cases, it involves the aircraft's scripts overwriting a value of a standard dataref, and often completely disabling it for outside writing.
Apart from forcing the cockpit builders to use custom commands in their configuration, it's quite inconvenient when the dataref changes its value, for example, only after some virtual cockpit element finishes its animation.
One problematic case for cockpit builders is when an aircraft model has a switch under a safety cover. In some planes the custom dataref that is operated with this switch can not be changed externally until the cover animation has finished and it is fully open.In short, the only way to use the intended function from the hardware cockpit was:
That' why the SimVimX plugin includes such useful functionality as automatic opening for all virtual switch cover guards on startup and configuration reload for any custom aircraft - so they won't interfere with the functioning of real switches in your cockpit.
Now you won't need to use extra unnecessary inputs for passing your real cover guard positions to the simulator.
Often, when making virtual cockpits, developers use only one command to control on-screen toggle switches with mouse clicks for both "On" and "Off" positions (single "toggle" command). That means, when you click it once the virtual switch is jumping to On position and returns back to Off position on the second click.
It's OK for virtual panel. The problem is to implement it for a real toggle switch in you cockpit, which needs two separate "On" and "Off" commands or a writable dataref available.
If the dataref that stores this switch position is "read-only" we are bound to use this "toggle" command for both positions and additionally monitor the dataref value in the plugin to synchronize the position of the real switch with the simulator switch.
This "crutch" is already implemented in SimVimX plugin, that can synchronize a switch position in your cockpit when using such single toggle command by monitoring corresponding read-only dataref in the virtual cockpit.
The same problem (even worse) when the custom virtual panel has only a couple of command for rotary switch direction and one read-only dataref that takes the switch position number.
SimVimX correctly processes any "up/down", "left/right" types of commands used in some planes for rotary and 3-position switches (as well as single "toggle" commands for toggle switches). All you need is select appropriate parameter from the configurator table accordingly with input diagram for your plane.