Configurable Keyboard Input

Added a way to change the keymappings and configure custom keyboard
input based on keycodes and header enum values