Implement custom keyboard shortcuts support with a user key map file.

Will add JSDoc later.
Why does there need to be an original binding for key to be considered a "reserved shortcut"? I don't see how that's relevant.