I should learn more on the topic :). But on the principle yes I want to avoid all the hardcode stuff everywhere. Guillermo in feb we should have a coffee meeting with a group building new UI using Python (of course) and I could ask them how they manage keystrokes. Or we can also interact with them by mail. May be they do not have the answer.
Hi!
While playing (again) to add Function keys support, reading documentation of how keyboard handling works on our vm and other platforms:
.Net: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown... Javascript: http://www.quirksmode.org/js/keys.html
And a quick explanation of Igor of how our vm works: http://lists.squeakfoundation.org/pipermail/vm-dev/2011-November/009661.html
What puzzles me is some of the following:
- Keypress event should only be raised to send keystrokes having a character representation. - but some keystrokes with no character representation are taken as keypresses! (arrowup, arrowdown, esc...) (and so, used to handle events instead of doing it on keydown) - the strokes above should be only raised in keydowns IMHO. - more on, we have in Character class representations for those non characters :P which is funny because they are not characters.
And everything works, and fits in a kind of strange way :).
Now, rearranging this to follow those conventions means: - reify Keys (vs Characters). So we can model modifier keys, function keys, arrow keys, independent from Characters. - Keys (non-characters) should only be raised as single events on keydown. - and the worse part is to fix all the hardcoded shortcuts messed everywhere in the image.
Any thoughts on this?
Thanks! Guille