I think it was a fairly productive evening. I fixed some items I had marked TODO or to test. I am still not happy that it looks like I will not handle rapid keypresses perfectly, but I am going to do the best I can for now. Maybe eventually I or someone else will figure out a solution to that problem too.
For now, I think I have fixed all of the immediate problems I had noticed with ctrl/alt/orange/shift etc. bindings. I seem to have even fixed a weird issue where Windows apparently needed a slight delay so that alt-tab would consistently work. Hopefully this stuff works in Windows XP or Windows 7, but hey, that's why I have you guys to test, haha.
From testing, it seems I now have modifiers set up properly so that you can use control, alt, shift, orange, green, etc. as either sticky keys or normal keys if you configure them properly. If you make the shift button a sticky ("latched") shift key, for instance, then you can press shift and release it, and the shift light will stay lit until you press a normal key like a, which will then type a capital A instead of a lowercase a. The shift light will then go off. Shift-1, shift-2, ..., can be bound to F1, F2, ... if you want. The people button can act like the Windows key if you want.
Remaining chatpad keyboard-specific things to do before I move on to the mouse and controller stuff:
* Change how I handle some of the chatpad data so that my code should handle rapidly repeated keypresses better, though probably not perfectly.
* Test the chatpad to play some of a Mirror's Edge level, making sure the key bindings seem to work properly. Eventually I will want to repeat this test when the mouse is controlled by the thumbsticks. Yes, it's a really silly use for the controller and chatpad, but it lets me prove it works and make sure the original controller buttons and controls work while my driver also works.
* Add some code to make the shift button light stay on when caps lock is activated from the chatpad.
* Finish up some internal virtual keyboard device stuff, mostly having to do with enabling/disabling the device and starting up/shutting down things cleanly.
Hopefully that's all, and testing doesn't reveal any new bugs.
GAFBlizzard do you have a Steam account?
*press shift, release shift* *press j, release j* *press j, release j* --> types "Jj"
*press shift* *press j, release j* *press j, release j* *release shift* *press j, release j* --> types "JJj". The latch stops taking effect as soon as you press a normal key, but as long as you hold shift down you will still get the modifier. The same should go for the orange and green latched versions.
And I do have a Steam account, but I would prefer people just PM me on here or email me instead, no offense.
Well I was thinking it's almost Christmas and I'm sure everyone wants to give you a present especially since you're giving us such a cool one.
Would it be okay to let us test the driver before you implement the mouse/joystick part? Since the joysticks aren't actually part of the chatpad, so we could test out the actual keyboard end of it.
I cant wait either, dying to have a keyboard as well