7d2543a3cb
Add four new private XKB actions for debugging: * PrGrbs: print active grabs to the log file * Ungrab: ungrab all currently active grabs * ClsGrb: kill clients with active grabs * PrWins: dump the current window tree to the log file To use these, you need to modify your XKB maps, e.g. the following to have Ctrl+Alt+(F9-F12) mapped to the above: - compat/xfree86: interpret XF86LogGrabInfo { action = Private(type=0x86, data="PrGrbs"); }; interpret XF86Ungrab { action = Private(type=0x86, data="Ungrab"); } interpret XF86ClearGrab { action = Private(type=0x86, data="ClsGrb"); } interpret XF86LogWindowTree { action = Private(type=0x86, data="PrWins"); } - symbols/pc: key <FK09> { type="CTRL+ALT", [ Return, XF86LogGrabInfo ] }; key <FK10> { type="CTRL+ALT", [ Return, XF86Ungrab ] }; key <FK11> { type="CTRL+ALT", [ Return, XF86ClearGrab ] }; key <FK12> { type="CTRL+ALT", [ Return, XF86LogWindowTree ] }; At the moment, this only works if the grabbing client continues to call AllowEvents, as the server does no event processing at all when a device is frozen. Signed-off-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
64 lines
2.1 KiB
C
64 lines
2.1 KiB
C
/************************************************************
|
|
|
|
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
|
|
|
|
All Rights Reserved
|
|
|
|
Permission to use, copy, modify, and distribute this software and its
|
|
documentation for any purpose and without fee is hereby granted,
|
|
provided that the above copyright notice appear in all copies and that
|
|
both that copyright notice and this permission notice appear in
|
|
supporting documentation, and that the name of the above listed
|
|
copyright holder(s) not be used in advertising or publicity pertaining
|
|
to distribution of the software without specific, written prior
|
|
permission.
|
|
|
|
THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
|
|
TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
|
|
LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
********************************************************/
|
|
|
|
#ifndef DIXGRABS_H
|
|
#define DIXGRABS_H 1
|
|
|
|
struct _GrabParameters;
|
|
|
|
extern void PrintDeviceGrabInfo(DeviceIntPtr dev);
|
|
extern void UngrabAllDevices(Bool kill_client);
|
|
|
|
extern GrabPtr CreateGrab(
|
|
int /* client */,
|
|
DeviceIntPtr /* device */,
|
|
DeviceIntPtr /* modDevice */,
|
|
WindowPtr /* window */,
|
|
GrabType /* grabtype */,
|
|
GrabMask * /* mask */,
|
|
struct _GrabParameters * /* param */,
|
|
int /* type */,
|
|
KeyCode /* keybut */,
|
|
WindowPtr /* confineTo */,
|
|
CursorPtr /* cursor */);
|
|
|
|
extern _X_EXPORT int DeletePassiveGrab(
|
|
pointer /* value */,
|
|
XID /* id */);
|
|
|
|
extern _X_EXPORT Bool GrabMatchesSecond(
|
|
GrabPtr /* pFirstGrab */,
|
|
GrabPtr /* pSecondGrab */,
|
|
Bool /*ignoreDevice*/);
|
|
|
|
extern _X_EXPORT int AddPassiveGrabToList(
|
|
ClientPtr /* client */,
|
|
GrabPtr /* pGrab */);
|
|
|
|
extern _X_EXPORT Bool DeletePassiveGrabFromList(
|
|
GrabPtr /* pMinuendGrab */);
|
|
|
|
#endif /* DIXGRABS_H */
|