This past week has been incredibly eye-opening. From fighting with signal passing one day to analyzing implementation the next, I've been plenty busy. At the beginning of the week Dan asked me to create a full-scale keyboard for people who want more options, but are limited to the virtual keyboard. I have added the Esc, Tab, and F1-12 buttons. In addition to that I implemented the all-too-tricky Ctrl/Alt keys.
The difference with these keys was that when the user presses the Ctrl key there is no immediate effect as in with the other keys. The user has to press a non-modifier (ie. 'a') in order for something to happen (same goes for Alt). So, when the user presses the key a signal is sent to the keyboard telling it that a modifier has been pressed and then putting it in the queue.
Here is the Ctrl key in action (as well as a preview to the full-scale layout).
What I really want to start working on is the positioning code for the keyboard. This code will place the onscreen keyboard underneath any location where there is an input device, and will show the keyboard *only* when the user needs to type something, which will surely make for happy web surfing.