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

Will add JSDoc later.
Thinking about it more, I'm fine leaving the behavior as-is given the timing.