Arrow keys, space, control, shift etc. are all normal, but I guess how capturable those are from JS varies. Making them configurable?
Qwerty X maps to Dvorak Q; Qwerty C maps to Dvorak J. That is, listening to Q and J when the user is using Dvorak, as X and C on a Qwerty keyboard.