Well, mapping JavaScript key codes to USB key codes, and then mapping those USB key codes to visual labels was... fun. Nothing beats manually editing 200+ item arrays!
At least I shouldn't have to convert them again at the back end. Just pass the raw key codes on and skip the human friendly defines used in the current files.
Unfortunately, however, there's no way to differentiate between left and right modifiers in JavaScript, so users will have to change them manually. Likewise, Print Screen appears to be impossible to capture. (And by manually, I mean having to use the GUI to pick out a function for the key. The current quick mode is just clicking on a key, hitting the button the keyboard you want, clicking on the next key, etc. Can load out a layer in seconds.)
A loaded layer pic is attached with key shaders enabled. For some reason, Chrome renders text a bit wobbly on the diagonals, but there's not much I can do about that. It probably has something to do with the way Chrome handles the CSS scaling. USB key codes won't be placed at the bottom of keys in the real version, but they're there right now as both debug and for the fact that I'm not sure *what* I'll put there
) For layer keys, the top and bottom of the key represent key-up and key-down states respectively. For transparent keys, the transparency label will be there to further distinguish them from active keys in normal layer configuration. For normal keys though, I guess the bottom will just be blank.