In my experience, to figure out keyboard shortucts is somewhat difficult. I can either leave them as defaults and learn those, or change all of them to how I see fit. There are all these obscure actions that aren't used that much, I end up accidentally pressing keys that do some random action that formats your hard disk or archives the last email in your inbox, with no way to undo whatever happened (this could be supplemented with a notification).
Would it better to completely remove shortcuts and have the user assign them as they go? This option would allow users to easier learn the shortcuts as they are creating them themselves.
What about if only commonly known and expected shortcuts exist initially? For example, a media player would pause/play with the
p or space key, or
Ctrl+S to save.
Another option would be to have the top 10-15 actions have shortcuts by default.
To make it easier to assign shortcuts, each control would be designed in such as way that they could be assigned easily. For example, a little button in the corner of the button to set that button's shortcut. Another option would be to have a separate mode, where clicking on a button would assign it's shortcut, rather than executing that action (this mode could also be activated by a shortcut!).