From: <kar...@ya...> - 2002-11-07 17:07:36
|
As things stand, if you are looking for a SHIFT+b key-press event then you may: 1) Look for modifier=vgui_SHIFT && key='b' 2) Look for ascii_char = 'B' Both vgui_event and vgui_event_condition contain modifier, key and ascii_char so both have the same problems regarding how modifiers effect a key-press. I don't use vgui_event_condition because I don't see much advantage in using it (except perhaps that the constructors do some error checking for you). We are left with (at least) four ways of detecting a key-press event which I guess may appear confusing but I am happy with it. For comparison here are the four ways you could detect a SHIFT+b event in your handle function: Using straight vgui_events: 1) if (event.modifier == vgui_SHIFT && event.key == 'b') 2) if (event.ascii_char == 'B') Using vgui_event_condition: 1) vgui_event_condition my_ec(vgui_key('b'), vgui_SHIFT); if (my_ec(event)) 2) vgui_event_condition my_ec(vgui_key('B'); if (my_ec(event)) Inside the key_press convenience method there is only one way to detect this event (which is certainly less confusing though perhaps debatable whether it is "convenient"): if (key == 'b' && modifier == vgui_SHIFT) Regarding portability. As things stand - everything works exactly as it should on Windows using MFC (Awf and I fixed it a couple of weeks ago) so any one of these four methods is fine. For GTK, all four cases would work for this example because GTK works for letter presses ('a'-'z' and 'A' to 'Z) but symbols are not correct - I believe this could be fixed. For Qt, I had a look and key-press events are not implemented at all for Qt so you will never get a key-press using Qt - I see no reason why it could not be implemented correctly. Personally I see no advantage in recommending vgui_event_condition's or do other people love them? Karen McGaul VGG, Oxford University --- Amitha Perera <pe...@cs...> wrote: > Hi all > > What is the recommended way of handling events in vgui tableaus for > maximum portability? > > In particular, my concern is with key events. It appears that we > cannot simply check for a 'B' key event portably, because the event > may be a 'b'+shift. I know about the ascii_char member, but is it > portable? > > It seems that vgui_event_condition may be the best way to handle > things. However, this implies that most events should be handled in > the handle() method, and not in the key_press convenience method. In > fact, it seems that the key_press method is not so convenient any > more. > > Am I missing something? If not, should the vgui_event_condition > approach be documented as a "recommendation"? With the understanding, > of course, that you are free to do what ever you like. > > Thanks, > Amitha. > > > ------------------------------------------------------- > This SF.net email is sponsored by: ApacheCon, November 18-21 in > Las Vegas (supported by COMDEX), the only Apache event to be > fully supported by the ASF. http://www.apachecon.com > _______________________________________________ > Vxl-maintainers mailing list > Vxl...@li... > https://lists.sourceforge.net/lists/listinfo/vxl-maintainers __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com |