Re: Keypressed/Keyreleased events not reaching my code
I figured this out after some reading. On Mon, Nov 16, 2009 at 11:28 PM, Scott Sibley sisib...@gmail.com wrote: Hello. I'm writing an LCD controller, and one feature I'd like is the ability to interact with an LCD via the keyboard. I have the following code, but only the FocusOut/FocusIn events are firing. static Window GetCurrWindow(Display *d) { Window foo; Window win; int bar; do{ (void) XQueryPointer(d, DefaultRootWindow(d), foo, win, bar, bar, bar, bar, (unsigned int *)bar); } while(win = 0); return(win); } void PluginKeyboard::PluginPoll() { Display *dpy = XOpenDisplay(NULL); if(!dpy) { LCDError(PluginKeyboard: Unable to open display.); return; } Window w = GetCurrWindow(dpy); XSelectInput(dpy, w, FocusChangeMask|KeyPressMask|KeyReleaseMask); while(started_) { if(!XPending(dpy)) continue; XEvent event; char str[256+1]; KeySym ks; char keycode; int c; XNextEvent(dpy, event); if(event.type == KeyPress) { c = XLookupString((XKeyEvent *)event, str, 256, ks, NULL); LCDError(KeyPressed); if(c!=0) continue; keycode = XKeysymToKeycode(dpy, ks); emit _KeyPressed(keycode); LCDError(Keypressed: %d, keycode); } if(event.type == KeyRelease) { c = XLookupString((XKeyEvent *)event, str, 256, ks, NULL); if(c!=0) continue; keycode = XKeysymToKeycode(dpy, ks); emit _KeyReleased(keycode); } if(event.type == FocusOut) { LCDError(FocusOut); XSelectInput(dpy, w = GetCurrWindow(dpy), FocusChangeMask|KeyPressMask|KeyReleaseMask); } } } ___ xorg mailing list xorg@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/xorg
Re: Keypressed/Keyreleased events not reaching my code
On Mon, Nov 16, 2009 at 11:28:44PM -0600, Scott Sibley wrote: Hello. I'm writing an LCD controller, and one feature I'd like is the ability to interact with an LCD via the keyboard. I have the following code, but only the FocusOut/FocusIn events are firing. Either there's a passive grab, or your focus is on the wrong window. Cheers, Daniel pgp4i9sh7PniZ.pgp Description: PGP signature ___ xorg mailing list xorg@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/xorg
Keypressed/Keyreleased events not reaching my code
Hello. I'm writing an LCD controller, and one feature I'd like is the ability to interact with an LCD via the keyboard. I have the following code, but only the FocusOut/FocusIn events are firing. static Window GetCurrWindow(Display *d) { Window foo; Window win; int bar; do{ (void) XQueryPointer(d, DefaultRootWindow(d), foo, win, bar, bar, bar, bar, (unsigned int *)bar); } while(win = 0); return(win); } void PluginKeyboard::PluginPoll() { Display *dpy = XOpenDisplay(NULL); if(!dpy) { LCDError(PluginKeyboard: Unable to open display.); return; } Window w = GetCurrWindow(dpy); XSelectInput(dpy, w, FocusChangeMask|KeyPressMask|KeyReleaseMask); while(started_) { if(!XPending(dpy)) continue; XEvent event; char str[256+1]; KeySym ks; char keycode; int c; XNextEvent(dpy, event); if(event.type == KeyPress) { c = XLookupString((XKeyEvent *)event, str, 256, ks, NULL); LCDError(KeyPressed); if(c!=0) continue; keycode = XKeysymToKeycode(dpy, ks); emit _KeyPressed(keycode); LCDError(Keypressed: %d, keycode); } if(event.type == KeyRelease) { c = XLookupString((XKeyEvent *)event, str, 256, ks, NULL); if(c!=0) continue; keycode = XKeysymToKeycode(dpy, ks); emit _KeyReleased(keycode); } if(event.type == FocusOut) { LCDError(FocusOut); XSelectInput(dpy, w = GetCurrWindow(dpy), FocusChangeMask|KeyPressMask|KeyReleaseMask); } } } ___ xorg mailing list xorg@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/xorg