Currently the Keyboard plug hardcodes the list of supported settings keys, which is not a good idea for compatibility reasons and imposes additional maintenance burden.
What's worse, the plug accesses keys via Granite.Services.Settings, class which relies on the simple Glib.Settings creation method which crashes the whole thing if it tries to access a nonexistent schema or key.
The plug should use http://www.valadoc.org/#!api=gio-2.0/GLib.Settings.list_keys instead to list the available keys, then obtain their descriptions and list those instead of hardcoded values. I haven't yet figured out how to obtain the description for a given key, but it must be possible. Descriptions support localization with gettext, so we will be able to get rid of hardcoded values completely.
Ordering should be done either alphabetically, or by hardcoded order info for known keys (or by any other sane rule you come up with).
Bonus points for using "Settings.full" creation method with error handling to not crash on absence of some schemas (e.g. Gala's schema), as I did in http://bazaar.launchpad.net/~elementary-os/elementaryos/user-specific-alternatives/view/head:/src/user-specific-alternatives.vala#L108
bug 1110568 is a prerequisite of this one