Add JSDoc and some comments.
Rename _keyMapCache to _defaultKeyMap.
Add a list of key names so that we can flag on unsupported key names.
Convert first letter of key to uppercase when normalizing a key.
Add an optional parameter to getKeymap api so that it can return either the default key map or the acitve one with user key bindings.
Fix the issue of not detecting a restricted shortcut used in the special commands.
Fix the issue of not removing the existing key binding from the target command.
Report errors for duplicate key bindings.