You are right... again, shame on me... ;) Many thanks Loic
> Loic wrote: > > I now have events when I press right arrow. > > (I forgot a win->begin();) > > > > but the event is of type > > FL_SHORTCUT = 12 > > and not of type > > FL_KEYBOARD = 8 > > > > What is the trick? > > See the "Keyboard Events" section of the "Handling Events" chapter: > http://fltk.org/doc-1.3/events.html#events_fl_keydown > > Specifically: > > "To receive FL_KEYBOARD events you must also respond to the > FL_FOCUS and FL_UNFOCUS events.." > > ..which means returning a '1' when your widget receives > FL_FOCUS/UNFOCUS events. > > This is all in the name of efficiency; FLTK won't waste time > sending keyboard events to your widget if it doesn't express > an interest in them. It only does so on the 'second pass' when > no other widget expressed an interest in them either, so FLTK > takes another shot at the widgets sending it as a 'shortcut', > so that shortcuts don't eclipse eg. Fl_Input widgets. > > Or something like that, I imagine.. > > I'd suggest writing your handle() method this way: > > int handle(int e) { > int ret = Fl_Gl_Window::handle(e); > printf("EVENT=%d\n",e); > switch ( e ) { > ..events you're interested in.. > case FL_FOCUS: > case FL_UNFOCUS: > ret = 1; // express interest.. > break; > case FL_KEYBOARD: > ..handle buttons.. > ret = 1; > break; > } > return(e); > } > > HTH. _______________________________________________ fltk-opengl mailing list [email protected] http://lists.easysw.com/mailman/listinfo/fltk-opengl
