the point is you can configure it whatever way you want from the existing options screen. default controls would not be changed, new functions would just be added to the list. a good example is the controversial way the view command has been changed since trackir support was added. in retail when you used a view command, your view would instantly change, but now the camera pans to that angle over the course of a few fractions of a second. so you provide one set of view commands for people who like the classic meathod, another for people who like the new setup, people who have a trackir can unbind them all and use the keys elsewhere. people with extra joystick axes could use relative or absolute view axis commands. it s kinda like how things are done in most flight sims, offer more functions than you need, and let the player decide how to configure their controls.
Some controls that differ from available in retail should be masked by default and unmaskable by mods, if they could possibly unbalance the missions by allowing them.
this is a fairly good idea. a mod that doesnt use shields for example, wouldnt need shield commands. so there should be some option for modders to hide those commands to avoid confusing the player. perhaps a controls.tbl. you could exclude, rename, or add commands and type with this table. say a mod wants to call afterburners boosters, does not use shields, and has a vertical thrust axis would use something like this sort of like:
$command: afterbutner
+group: ship
+type: button
+rename: fire booster
$command: equalize shield
+group: misc
+type: button
+remove:
$command: vertical thrust
+group: ship
+type: axis
+min value: 0
+max value: 1
+create:
the first two act on existing commands, the last is a custom command that would show up in the customize controls screen, and its state would be available under scripting (io.Controls["control name"]) or from the mission (commands utilized through the events system). if the new command is an axis, a min and max can be defined, raw joystick data is scaled to the specified range. group and type could probably be omitted on controls that are already in the menu, perhaps you could also move a command to another group with the group option. another command that would be useful is +default: "name of default key,button,or,axis". as it becomes more and more possible for mods to implement custom game functions, a more intuitive way to bind controls becomes necessary for those features.