Handle language-switching keystroke gracefully

This patch fixes a bug in the keypress handling flow. If I press a language-switching keystoke in Chrome/Linux, the browser emits keycode 0, which is mapped to number 48. This results in exception "48 does not have toLowerCase method".
Route cause of the bug: forward and reverse mapping are stored in the same dictionary.
This patch provides a workaround to handle this case.