I'm trying to process as many keys on the keyboard as I can. I can see most keys on a standard PC keyboard using Event.current where .type is EventType.KeyDown. It does not pick up Shift and maps keypad Enter to Return.
On a Mac it's much worse, where none of the modifiers (shift/ctrl/alt/apple/capslock/fn) signal anything, most of the keys between F1 and F12 to 'system' things but don't show up as an event, and F16-F19 don't register at all either. Nor does Eject. Oddly, F16 through F19 DO trigger my Input.GetButtonDown("Prev") where Prev is defined in the Input manager as Page Down (!?)
What's going on? Is there a way to get these key events? Or do I have to explicitly look for GetKeyDown(KeyCode.LeftShift) and so forth? I'm not keen on that, as it means looping through the 300 or so keycodes all the time, looking for both key-down and key-up.
Note: I don't care what 'character' things map to, just that I get any kinda (unique) keycode at all. I saw a post that says using USER32.DLL would work on Windows, but I'm also on Mac, there's the problem. http://answers.unity3d.com/questions/11946/keycodes-for-non-us-keyboard-layouts
More info: I tried looping on all the keys with GetKeyDown/Up, and it does a better job, EXCEPT it doesn't get PrintScreen nor ScrollLock, but it DOES with Event.current !!! Still ignoring F16-19 as keycodes, but Input.GetButtonDown("Prev") still does register them. Yikes.
And just so's you know: with GetKeyDown/Up, you get both Left AND Right as down/up at the same time, even if you only press one or the other. Same true for alt, apple, control. On a Mac. On PC, left and right are separate, but you only get Shift keys with GetKeyDown/Up.
ALSO: On PC, Input will give you PrintScreen and ScrollLock, but ONLY ONCE and only the KeyDown! Pause will give you a KeyDown followed by a KeyUp regardless that it's still down!
Can someone please fix this in 3.4?