You are over-thinking it hk.... you don't have to know the format at all.
All you have to do is have a app that reads the controls.ini. When you wanna make a color entry it literally copies the entire entry, blanking out the label portion, allowing the user to fill in colors for all of them. Just as an example, you aren't putting in the joystick entries... joysticks (and the cpo labels on joysticks) aren't all the same color you know, so that data has to be included as well. And yes I know it's a little redundant to have four color entries for a joystick, but what this does for us is makes a physical link to each label, so a viewer can write the text in that color, for example.
Wanna do a game that isn't in the controls.dat project? Well you can't, which is a good thing, because if you have a pic to know the colors, then it needs an entry filled out.
I've called mine colors.ini because it is more accurate as it'll also store the color of the joystick, flightstick, trackball, ect....
Button_1 and Button_2 are arbiturary names that have no influence on the buttons position on the user's control panel.... what does is what real world key they've binded that function to, which is why it needs linked to the controls.ini And if by "not clearly show the action" you mean the description can't be read then that game doesn't have a controls.ini entry and therefore we don't want it in colors.ini anyway until enough data is found.
Start and Coin buttons aren't supported in controls.ini, but I don't see any reason why you can't add them for your purposes. They don't move around much on a user's cp so a static position can be used.
About your color constants...... Having an art background myself I don't mind precise color names, but the one's you've given are what I call "paint store" color names and have no real reflection on the actual color. For example purple and violet are the same color, purple is just another word for violet. Now on certain color wheels they'll be in different positions but they are the same color. You can describe a base color by mixing it with another color (blue green) or by describing the tint or shade (light blue). Also people tend to get cyan and magenta mixed up (why I don't know) so those words can be interchangeable. Sorry about being picky on that it's just one persons lime is another person's avacado.

Honestly, I don't think calibrated color swatches are even necessary. Mind you they are nice, but if you get the labels right I think people will figure it out as long as it's close enough. Just gotta use "stupid" terms for the colors. I will say this though... system colors are generally blends and our "off" colors are gonna be tints, such as light blue.... it is the same color is blue, just lighter. The light blue looking color in the system pallette actually has more green in it. The best way to do the color swatches is manually.... we want our blue to be 0,0,255 just to make things easier and to get our light blue we can just up the other two values equally until it looks about right. The extended pallete has tints and shades (and some blends closer to the base colors we need) though so that'll work, but the 16 base colors windows has probably won't.
I think a simple calibration standard thrown in the docs somewhere is a good idea, just because what I mentioned above and this will give developers an idea of what the color is actually supposed to be. It needs to be a 255 base though and custom colors need to be a 255 base. This can easily be down converted for ledwiz ect, but it'd be good to get as much detail as possible for graphical applications.
Hope that helps and don't think I'm getting snippy, I just want to get it done right before you begin. Nobody talks about the two months sirp and I bickered back and forth until we decided upon the controls format.
