diff options
author | marha <marha@users.sourceforge.net> | 2012-01-20 08:42:58 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-01-20 09:06:25 +0100 |
commit | 27bec2ba601ec12334e6b7564034f87ab7c9522b (patch) | |
tree | b1100c03326ab526b3f19c18e0fb8ea41ea5db69 | |
parent | e72d316876aad2b8c8ea76dd6f09f3f2f92fc562 (diff) | |
download | vcxsrv-27bec2ba601ec12334e6b7564034f87ab7c9522b.tar.gz vcxsrv-27bec2ba601ec12334e6b7564034f87ab7c9522b.tar.bz2 vcxsrv-27bec2ba601ec12334e6b7564034f87ab7c9522b.zip |
Implemented prgrbs ungrab clsgrb and prwins actions
Now the active grabs can be ungrapped with CTRL+ALT+NKP/ and CTRL+ALT+NKP*
(also kill clients)
-rw-r--r-- | xorg-server/xkb/ddxPrivate.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/xorg-server/xkb/ddxPrivate.c b/xorg-server/xkb/ddxPrivate.c index f1c85f6ea..c4bcab437 100644 --- a/xorg-server/xkb/ddxPrivate.c +++ b/xorg-server/xkb/ddxPrivate.c @@ -3,12 +3,44 @@ #include <dix-config.h> #endif +#ifdef HAVE_XORG_CONFIG_H +#include <xorg-config.h> +#endif + +#include <stdio.h> #include <X11/X.h> #include "windowstr.h" +#define XKBSRV_NEED_FILE_FUNCS #include <xkbsrv.h> +#include "dixgrabs.h" +#include "os.h" +#include "xf86.h" + int XkbDDXPrivate(DeviceIntPtr dev,KeyCode key,XkbAction *act) { + XkbAnyAction *xf86act = &(act->any); + char msgbuf[XkbAnyActionDataSize+1]; + + if (xf86act->type == XkbSA_XFree86Private) { + memcpy(msgbuf, xf86act->data, XkbAnyActionDataSize); + msgbuf[XkbAnyActionDataSize]= '\0'; + if (strcasecmp(msgbuf, "prgrbs")==0) { + DeviceIntPtr tmp; + ErrorF("Printing all currently active device grabs:\n"); + for (tmp = inputInfo.devices; tmp; tmp = tmp->next) + if (tmp->deviceGrab.grab) + PrintDeviceGrabInfo(tmp); + ErrorF("End list of active device grabs\n"); + } + else if (strcasecmp(msgbuf, "ungrab")==0) + UngrabAllDevices(FALSE); + else if (strcasecmp(msgbuf, "clsgrb")==0) + UngrabAllDevices(TRUE); + else if (strcasecmp(msgbuf, "prwins")==0) + PrintWindowTree(); + } + return 0; } |