On Fri, 05 Apr 2013 23:39:28 -0700, Greg Ercolano wrote:
> an fltk timer would probably be needed to get the correct
> state info shown reliably.
Thanks for the replies.
No luck with an fltk timer, on Ubuntu Linux 10.04. Test program below.
In the console we can see that (Fl::event_state() & FL_CAPS_LOCK)
correctly changes to nonzero as soon as you press Caps Lock.
But it doesn't change back to 0 when you press Caps Lock again
until e.g. you move the mouse over the window.
Howard Rubin
------------------------
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Output.H>
#include <iostream>
void TimerProc(void* p) {
Fl_Output* pOutput = static_cast<Fl_Output*>(p);
if (Fl::event_state() & FL_CAPS_LOCK) {
pOutput->show();
std::cerr << 1;
} else {
pOutput->hide();
std::cerr << 0;
}
pOutput->damage(~0); pOutput->redraw(); Fl::check(); Fl::wait(.1);
Fl::repeat_timeout(0.25, TimerProc, p);
}
int main(int argc, char* argv[]) {
Fl_Window* win = new Fl_Window(300, 200, "");
Fl_Output* pOutput = new Fl_Output(120, 50, 0, 15, "Caps Lock");
win->end();
win->show();
Fl::add_timeout(0.25, TimerProc, pOutput);
return Fl::run();
}
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk