Key

As the interface says, PreferenceInfo describe each item the user can customize, by giving it

a name : getKeyName()

possible multiple values : this is currently only used when using a widget which allows the selection of one or more values in a list, but not used to validate the user's input (this should be implemented, though)

a widget : getPreferenceWidget. This is an enum. There a defaut implementation, which should fulfill most needs: SimplePreferenceInfo.

The keyName of the PreferenceInfo has two usages : it must correspond to the model's property which it defines, and it is used in the UI to display the name of the property, by using it as the key in the translation system.