Following the Event chronicles :P

Since I know that some people are working on event Stuff(Stef, Fernando,
Igor), I'd like to listen to what they(or anybody else :) ) think about
this.
I've no code (yet) except for the one I've written to play with the vm and
test the keyboard stuff :P.  And I know there is some package where Stef
and Igor where refactoring the event stuff and I don't want to duplicate
efforts either, jeje.

So, this is what from other models I think a complete keyboard event model
should have:

Keyboard interaction raises 3 events (3 different kind of objects!):


   - Keydown

When a key is pressed, it informs the pressed key with modifiers (it should
not send a unicode value of a character).

Should understand the messages:

"boolean indicating which modifiers where pressed"
#alt
#cmd
#shift
#ctrl
#opt?

"a collection of modifier objects"
#modifiers

"the key pressed.  It is not a Character, it should be an instance of Key
(read about Keys in the Glitches below)"
#key

"to know if the event wasHandled"
#handled:
#handled


   - Keypress

When a key with a unicode representation is pressed, informs it.

should understand the messages:

"the unicode character representation of this event.  It is a Character,
not an instance of Key"
#character

"to know if the event wasHandled"
#handled:
#handled


   - Keyup

When a key is released, it informs the released key with modifiers (it
should not send a unicode value of a character).

Should understand the messages:

"the main key pressed.  It is not a Character, it should be an instance of
Key (read about Keys in the Glitches below)"
#key

"to know if the event wasHandled"
#handled:
#handled


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

*Glitches*

1) Today every keyboard event handled on the image side is handled on
keypress, which:
  - limits the ammount of shortcuts you can have (because there are keys
that you can't handle)
  - to make it work, there are some hacks (at image and vm side) to allow
keys with no char representation enter as keypresses (like arrow keys).
  - changing this is ALOT of work :P

2) Some key representation varies from platform to platform.  i.e.: A
Shift-only press generates today a keydown event with:
  - a 254 keyCode value in unix
  - a  16 keyCode value in windows

So I think a "table" has to be built and documented for mappings for each
key in a keyboard.  Examples of this can be found in enums/defs from other
platforms:

Windows platform:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
.Net:
http://msdn.microsoft.com/en-us/library/system.windows.forms.keys(v=vs.71).aspx
X11 (current used window system in unix vm):
http://cgit.freedesktop.org/xorg/proto/x11proto/plain/keysymdef.h
Javascript:
http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
Gtk:
http://www.koders.com/c/fidD9E5E78FD91FE6ABDD6D3F78DA5E4A0FADE79933.aspx

After that, both vm's and image should follow that table :).  And of
course, these keys should be reified in the image side independently of
their character pairs.

Guille

Reply via email to