Perhaps a fairly long explanation how things work might clear up your and others' search for these "hidden" preferences.
Most applications will read their preference files once when they start and the defaults
tool exists to ensure the preference files are a valid structure and don't contain syntax errors. (It also allows the system to change how the keys are stored and people don't have to know the implementation details and can use the defaults command to do all the reading and writing.)
English language style and grammar guides ensure the words I type here are meaningful to the average english speaker, and standardizing the defaults system sets a framework so everyone knows what to expect. The preference list formatting is far more rigid and mathematical than a human language, but the concepts are similar.
The the Mac OS X user defaults system is a key value store (or database if you prefer).
You can write anything into these preference key value stores, a Shakespeare sonnet, numbers, a shopping list. If the program is coded to look for a specific key, it will read the value stored. If it's not looking for that key - it's value sits there unused and unread.
This brings up how to know what values a specific program might be looking for when they start up. It boils down to you either have to know the value or reverse-engineer the program.
Many tools exist to look into a program and try to figure out what strings (the keys) are embedded, such as strings
and dbx/lldb as well as linking in your own library to dump the internal structure of a specific program.
In practice, some things that are needed for testing are added in this "hidden" way so that you can't look over the program's preference pane and see these new features that are not ready for broad use. In a way, it's not at all simple to get a comprehensive list unless the author of that program releases the source code or otherwise documents these settings publicly.
When you read the defaults store for a particular app - you are just reading the "book" that was written when the app created it's default set or the settings that shipped with the Mac OS X. That is why you don't receive the exhaustive list of things that are realistically possible to change with that application.
defaults read
to find the keys for normal preferences or use theCFPreferencesCopyValue
method in gdb. See How to explore more defaults write tweaks on OS X? - Super User.defaults read
to find the keys for normal preferences, run strings on the binaries of frameworks, or use theCFPreferencesCopyValue
method in gdb. See How to explore more defaults write tweaks on OS X? - Super User.