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) {
         std::cerr << 1;
     } else {
         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");


     Fl::add_timeout(0.25, TimerProc, pOutput);

     return Fl::run();

fltk mailing list

Reply via email to