if (_timer)
delete _timer;
- grabKeys(false);
removeAllKeys();
-// removeAllButtons(); XXX
+ //removeAllButtons(); // this is done by each client as they are unmanaged
removeAllEvents();
}
if (XGrabKeyboard(**otk::display, root, false, GrabModeAsync,
GrabModeAsync, CurrentTime))
return false;
- XGrabPointer(**otk::display, root, false, 0, GrabModeAsync,
- GrabModeAsync, None, None, CurrentTime);
_keybgrab_callback = callback;
return true;
}
}
+bool Bindings::grabPointer(int screen)
+{
+ if (!openbox->screen(screen))
+ return false; // the screen is not managed
+
+ Window root = otk::display->screenInfo(screen)->rootWindow();
+ XGrabPointer(**otk::display, root, false, 0, GrabModeAsync,
+ GrabModeAsync, None, None, CurrentTime);
+ return true;
+}
+
+
+void Bindings::ungrabPointer()
+{
+ XUngrabPointer(**otk::display, CurrentTime);
+}
+
+
void Bindings::fireKey(int screen, unsigned int modifiers, unsigned int key,
Time time, KeyAction::KA action)
{
_timer = new otk::Timer(5000, // 5 second timeout
(otk::Timer::TimeoutHandler)resetChains,
this);
- // grab the server here to make sure no key pressed go missed
+ // grab the server here to make sure no key presses get missed
otk::display->grab();
grabKeys(false);
_curpos = p;