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

Will add JSDoc later.
Actually, we don't even need to check `if (json)` since we call JSON.parse in `try ... catch`, and if there is a parser error, we get the error in `catch`.