> On 30/11/11 08:20, Terry Welsh wrote:
> > Hi,
> > I'm using FLTK 2, and I have a class derived from GlWindow. My handle()
> > function gets called for almost every key on the keyboard, but not when I
> > press backspace or delete. Is this expected behavior? Is there a way to
> > get events for these keys?
>
> Urgh, I'm not even sure. So in theory, the answer to "Is this expected?"
> is no, while "is there a way to get events for these keys?" is yes.
> However:
> OpenGL compatibility with FLTK2 (especially with keyboards and whatnot)
> is achieved by emulating certain bits of OGL functionality, to make it
> work properly with fltk. As such, there are a few really dirty hacks
> going on to (try to) make things work as they should. Occasionally,
> however, things stop working.
>
> However, in saying that this doesn't automagically make fltk the
> problem; there could be a whole raft of issues to do with your platform,
> or code, or etc.
> If you could post a minimal, compilable example of your current code
> that shows the problem, this would be fantastic. I'll take a look if I
> get the time, though at the moment that's a rather large if.
> In the meantime, I'd suggest using fltk1.3 -- this is far far more
> stable than 2.0 and is less likely to have as many bugs. If you really
> desperately need 2.0 compatibility, you'll probably want to wait until
> fltk3 comes out (and I get the 2.0 compatibility layer in, too, though
> like I said I'm struggling for time at the moment).
>
> HTH,
> Ben
>
Hi Ben,
Thanks for the reply. BTW, my platform is Suse 11.3 and Gnome 2.x. Below is
the minimal test case you asked for. It appears the problem is introduced by
having an fltk::Output beside the GlWindow. If you comment out the creation of
the fltk::Output, then the Backspace and Delete keys will work. Changing the
GlWindow to a regular Window does not help. I found other keys that fail in
the presence of the fltk::Output: Esc Tab, Shift, Ctrl, Home, and End.
That's as far as I've gotten. I'll try other Linux distros and desktop
enviroments and dig into the fltk code when I get a little more time to work on
this. Any suggestions would be great.
We started this project years ago when 2.0 was supposed to be the future.
Switching to 1.3 sounds more difficult than they'll give me time for. You're
probably right that 3.0 is the way to go eventually. (Funny how people here
talk about 2.0 as unstable, since it's still the most stable open source
project I've ever used.)
#include <fltk/GlWindow.h>
#include <fltk/Output.h>
#include <fltk/events.h>
#include <fltk/run.h>
#include <iostream>
using namespace std;
using namespace fltk;
class MyView : public fltk::GlWindow{
public:
MyView(int x, int y, int w, int h, const char *l)
: GlWindow(x, y, w, h, l) {}
~MyView(){}
void draw(){}
int handle(int e){
switch(e){
case fltk::SHORTCUT:
cout << fltk::event_key() << endl;
break;
}
return (GlWindow::handle(e));
}
};
class MyGui{
public:
Window* mMainWindow;
MyView* mMyView;
Output* mOutput;
MyGui(){
Window* o = mMainWindow = new Window(400, 400, "FLTK delete key
test");
o->shortcut(0xff1b);
o->user_data((void*)(this));
o->begin();
mMyView = new MyView(0, 0, 400, 375, "");
Group::current()->resizable(mMyView);
mOutput = new fltk::Output(0, 375, 400, 25);
o->end();
}
~MyGui(){}
void show(){
mMainWindow->show();
}
};
int main(int argc, char* argv[]){
MyGui gui;
gui.show();
while(1){
fltk::check();
}
return 0;
}
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk