diff --git a/hw/xfree86/xkb/xkbPrivate.c b/hw/xfree86/xkb/xkbPrivate.c index 4b9ef3397..009610892 100644 --- a/hw/xfree86/xkb/xkbPrivate.c +++ b/hw/xfree86/xkb/xkbPrivate.c @@ -30,23 +30,6 @@ XkbDDXPrivate(DeviceIntPtr dev, KeyCode key, XkbAction *act) xf86ProcessActionEvent(ACTION_PREV_MODE, NULL); else if (strcasecmp(msgbuf, "+vmode") == 0) xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL); - else if (strcasecmp(msgbuf, "prgrbs") == 0) { - DeviceIntPtr tmp; - - xf86Msg(X_INFO, "Printing all currently active device grabs:\n"); - for (tmp = inputInfo.devices; tmp; tmp = tmp->next) - if (tmp->deviceGrab.grab) - PrintDeviceGrabInfo(tmp); - xf86Msg(X_INFO, "End list of active device grabs\n"); - - PrintPassiveGrabs(); - } - 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; diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c index 2ffd3fadc..db29091e7 100644 --- a/xkb/xkbActions.c +++ b/xkb/xkbActions.c @@ -43,6 +43,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "mi.h" #include "mipointer.h" #include "inpututils.h" +#include "dixgrabs.h" #define EXTENSION_EVENT_BASE 64 DevPrivateKeyRec xkbDevicePrivateKeyRec; @@ -992,6 +993,45 @@ _XkbFilterSwitchScreen(XkbSrvInfoPtr xkbi, return 1; } +static int +XkbHandlePrivate(DeviceIntPtr dev, KeyCode keycode, XkbAction *pAction) +{ + XkbAnyAction *xkb_act = &(pAction->any); + + if (xkb_act->type == XkbSA_XFree86Private) { + char msgbuf[XkbAnyActionDataSize + 1]; + + memcpy(msgbuf, xkb_act->data, XkbAnyActionDataSize); + msgbuf[XkbAnyActionDataSize] = '\0'; + + if (strcasecmp(msgbuf, "prgrbs") == 0) { + DeviceIntPtr tmp; + + LogMessage(X_INFO, "Printing all currently active device grabs:\n"); + for (tmp = inputInfo.devices; tmp; tmp = tmp->next) + if (tmp->deviceGrab.grab) + PrintDeviceGrabInfo(tmp); + LogMessage(X_INFO, "End list of active device grabs\n"); + + PrintPassiveGrabs(); + } + else if (strcasecmp(msgbuf, "ungrab") == 0) { + LogMessage(X_INFO, "Ungrabbing devices\n"); + UngrabAllDevices(FALSE); + } + else if (strcasecmp(msgbuf, "clsgrb") == 0) { + LogMessage(X_INFO, "Clear grabs\n"); + UngrabAllDevices(TRUE); + } + else if (strcasecmp(msgbuf, "prwins") == 0) { + LogMessage(X_INFO, "Printing window tree\n"); + PrintWindowTree(); + } + } + + return XkbDDXPrivate(dev, keycode, pAction); +} + static int _XkbFilterXF86Private(XkbSrvInfoPtr xkbi, XkbFilterPtr filter, unsigned keycode, XkbAction *pAction) @@ -1006,7 +1046,7 @@ _XkbFilterXF86Private(XkbSrvInfoPtr xkbi, filter->active = 1; filter->filterOthers = 0; filter->filter = _XkbFilterXF86Private; - XkbDDXPrivate(dev, keycode, pAction); + XkbHandlePrivate(dev, keycode, pAction); return 0; } else if (filter->keycode == keycode) {