exevents.h revision 6747b715
105b261ecSmrg/************************************************************ 205b261ecSmrg 305b261ecSmrgCopyright 1996 by Thomas E. Dickey <dickey@clark.net> 405b261ecSmrg 505b261ecSmrg All Rights Reserved 605b261ecSmrg 705b261ecSmrgPermission to use, copy, modify, and distribute this software and its 805b261ecSmrgdocumentation for any purpose and without fee is hereby granted, 905b261ecSmrgprovided that the above copyright notice appear in all copies and that 1005b261ecSmrgboth that copyright notice and this permission notice appear in 1105b261ecSmrgsupporting documentation, and that the name of the above listed 1205b261ecSmrgcopyright holder(s) not be used in advertising or publicity pertaining 1305b261ecSmrgto distribution of the software without specific, written prior 1405b261ecSmrgpermission. 1505b261ecSmrg 1605b261ecSmrgTHE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD 1705b261ecSmrgTO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 1805b261ecSmrgAND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE 1905b261ecSmrgLIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 2005b261ecSmrgWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 2105b261ecSmrgACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 2205b261ecSmrgOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 2305b261ecSmrg 2405b261ecSmrg********************************************************/ 2505b261ecSmrg 2605b261ecSmrg/******************************************************************** 2705b261ecSmrg * Interface of 'exevents.c' 2805b261ecSmrg */ 2905b261ecSmrg 3005b261ecSmrg#ifndef EXEVENTS_H 3105b261ecSmrg#define EXEVENTS_H 3205b261ecSmrg 3305b261ecSmrg#include <X11/extensions/XIproto.h> 346747b715Smrg#include "inputstr.h" 356747b715Smrg 366747b715Smrg/*************************************************************** 376747b715Smrg * Interface available to drivers * 386747b715Smrg ***************************************************************/ 396747b715Smrg 406747b715Smrgextern _X_EXPORT int InitProximityClassDeviceStruct( 416747b715Smrg DeviceIntPtr /* dev */); 426747b715Smrg 436747b715Smrgextern _X_EXPORT void InitValuatorAxisStruct( 446747b715Smrg DeviceIntPtr /* dev */, 456747b715Smrg int /* axnum */, 466747b715Smrg Atom /* label */, 476747b715Smrg int /* minval */, 486747b715Smrg int /* maxval */, 496747b715Smrg int /* resolution */, 506747b715Smrg int /* min_res */, 516747b715Smrg int /* max_res */); 526747b715Smrg 536747b715Smrg/* Input device properties */ 546747b715Smrgextern _X_EXPORT void XIDeleteAllDeviceProperties( 556747b715Smrg DeviceIntPtr /* device */ 566747b715Smrg); 576747b715Smrg 586747b715Smrgextern _X_EXPORT int XIDeleteDeviceProperty( 596747b715Smrg DeviceIntPtr /* device */, 606747b715Smrg Atom /* property */, 616747b715Smrg Bool /* fromClient */ 626747b715Smrg); 636747b715Smrg 646747b715Smrgextern _X_EXPORT int XIChangeDeviceProperty( 656747b715Smrg DeviceIntPtr /* dev */, 666747b715Smrg Atom /* property */, 676747b715Smrg Atom /* type */, 686747b715Smrg int /* format*/, 696747b715Smrg int /* mode*/, 706747b715Smrg unsigned long /* len*/, 716747b715Smrg pointer /* value*/, 726747b715Smrg Bool /* sendevent*/ 736747b715Smrg ); 746747b715Smrg 756747b715Smrgextern _X_EXPORT int XIGetDeviceProperty( 766747b715Smrg DeviceIntPtr /* dev */, 776747b715Smrg Atom /* property */, 786747b715Smrg XIPropertyValuePtr* /* value */ 796747b715Smrg); 806747b715Smrg 816747b715Smrgextern _X_EXPORT int XISetDevicePropertyDeletable( 826747b715Smrg DeviceIntPtr /* dev */, 836747b715Smrg Atom /* property */, 846747b715Smrg Bool /* deletable */ 856747b715Smrg); 866747b715Smrg 876747b715Smrgextern _X_EXPORT long XIRegisterPropertyHandler( 886747b715Smrg DeviceIntPtr dev, 896747b715Smrg int (*SetProperty) (DeviceIntPtr dev, 906747b715Smrg Atom property, 916747b715Smrg XIPropertyValuePtr prop, 926747b715Smrg BOOL checkonly), 936747b715Smrg int (*GetProperty) (DeviceIntPtr dev, 946747b715Smrg Atom property), 956747b715Smrg int (*DeleteProperty) (DeviceIntPtr dev, 966747b715Smrg Atom property) 976747b715Smrg); 986747b715Smrg 996747b715Smrgextern _X_EXPORT void XIUnregisterPropertyHandler( 1006747b715Smrg DeviceIntPtr dev, 1016747b715Smrg long id 1026747b715Smrg); 1036747b715Smrg 1046747b715Smrgextern _X_EXPORT Atom XIGetKnownProperty( 1056747b715Smrg char* name 1066747b715Smrg); 1076747b715Smrg 1086747b715Smrgextern _X_EXPORT DeviceIntPtr XIGetDevice(xEvent *ev); 1096747b715Smrg 1106747b715Smrgextern _X_EXPORT int XIPropToInt( 1116747b715Smrg XIPropertyValuePtr val, 1126747b715Smrg int *nelem_return, 1136747b715Smrg int **buf_return 1146747b715Smrg); 1156747b715Smrg 1166747b715Smrgextern _X_EXPORT int XIPropToFloat( 1176747b715Smrg XIPropertyValuePtr val, 1186747b715Smrg int *nelem_return, 1196747b715Smrg float **buf_return 1206747b715Smrg); 1216747b715Smrg 1226747b715Smrg/**************************************************************************** 1236747b715Smrg * End of driver interface * 1246747b715Smrg ****************************************************************************/ 1256747b715Smrg 12605b261ecSmrg 1274642e01fSmrg/** 1284642e01fSmrg * Attached to the devPrivates of each client. Specifies the version number as 1294642e01fSmrg * supported by the client. 1304642e01fSmrg */ 1314642e01fSmrgtypedef struct _XIClientRec { 1324642e01fSmrg int major_version; 1334642e01fSmrg int minor_version; 1344642e01fSmrg} XIClientRec, *XIClientPtr; 1354642e01fSmrg 1366747b715Smrg 1376747b715Smrgtypedef struct _GrabParameters { 1386747b715Smrg int grabtype; /* GRABTYPE_CORE, etc. */ 1396747b715Smrg unsigned int ownerEvents; 1406747b715Smrg unsigned int this_device_mode; 1416747b715Smrg unsigned int other_devices_mode; 1426747b715Smrg Window grabWindow; 1436747b715Smrg Window confineTo; 1446747b715Smrg Cursor cursor; 1456747b715Smrg unsigned int modifiers; 1466747b715Smrg} GrabParameters; 1476747b715Smrg 1486747b715Smrg 1496747b715Smrgextern void 1506747b715SmrgRegisterOtherDevice ( 15105b261ecSmrg DeviceIntPtr /* device */); 15205b261ecSmrg 1534642e01fSmrgextern int 1544642e01fSmrgUpdateDeviceState ( 1554642e01fSmrg DeviceIntPtr /* device */, 1566747b715Smrg DeviceEvent* /* xE */); 1574642e01fSmrg 1586747b715Smrgextern void 1596747b715SmrgProcessOtherEvent ( 1606747b715Smrg InternalEvent* /* ev */, 1616747b715Smrg DeviceIntPtr /* other */); 16205b261ecSmrg 1636747b715Smrgextern void 1646747b715SmrgDeviceFocusEvent( 16505b261ecSmrg DeviceIntPtr /* dev */, 16605b261ecSmrg int /* type */, 16705b261ecSmrg int /* mode */, 16805b261ecSmrg int /* detail */, 16905b261ecSmrg WindowPtr /* pWin */); 17005b261ecSmrg 1716747b715Smrgextern int 1726747b715SmrgCheckGrabValues( 1736747b715Smrg ClientPtr /* client */, 1746747b715Smrg GrabParameters* /* param */); 1756747b715Smrg 1766747b715Smrgextern int 1776747b715SmrgGrabButton( 17805b261ecSmrg ClientPtr /* client */, 17905b261ecSmrg DeviceIntPtr /* dev */, 18005b261ecSmrg DeviceIntPtr /* modifier_device */, 1816747b715Smrg int /* button */, 1826747b715Smrg GrabParameters* /* param */, 1836747b715Smrg GrabType /* grabtype */, 1846747b715Smrg GrabMask* /* eventMask */); 1856747b715Smrg 1866747b715Smrgextern int 1876747b715SmrgGrabKey( 18805b261ecSmrg ClientPtr /* client */, 18905b261ecSmrg DeviceIntPtr /* dev */, 19005b261ecSmrg DeviceIntPtr /* modifier_device */, 1916747b715Smrg int /* key */, 1926747b715Smrg GrabParameters* /* param */, 1936747b715Smrg GrabType /* grabtype */, 1946747b715Smrg GrabMask* /* eventMask */); 1956747b715Smrg 1966747b715Smrgextern int 1976747b715SmrgGrabWindow( 1986747b715Smrg ClientPtr /* client */, 1996747b715Smrg DeviceIntPtr /* dev */, 2006747b715Smrg int /* type */, 2016747b715Smrg GrabParameters* /* param */, 2026747b715Smrg GrabMask* /* eventMask */); 20305b261ecSmrg 2046747b715Smrgextern int 2056747b715SmrgSelectForWindow( 20605b261ecSmrg DeviceIntPtr /* dev */, 20705b261ecSmrg WindowPtr /* pWin */, 20805b261ecSmrg ClientPtr /* client */, 20905b261ecSmrg Mask /* mask */, 2106747b715Smrg Mask /* exclusivemasks */); 21105b261ecSmrg 2126747b715Smrgextern int 2136747b715SmrgAddExtensionClient ( 21405b261ecSmrg WindowPtr /* pWin */, 21505b261ecSmrg ClientPtr /* client */, 21605b261ecSmrg Mask /* mask */, 21705b261ecSmrg int /* mskidx */); 21805b261ecSmrg 2196747b715Smrgextern void 2206747b715SmrgRecalculateDeviceDeliverableEvents( 22105b261ecSmrg WindowPtr /* pWin */); 22205b261ecSmrg 2236747b715Smrgextern int 2246747b715SmrgInputClientGone( 22505b261ecSmrg WindowPtr /* pWin */, 22605b261ecSmrg XID /* id */); 22705b261ecSmrg 2286747b715Smrgextern int 2296747b715SmrgSendEvent ( 23005b261ecSmrg ClientPtr /* client */, 23105b261ecSmrg DeviceIntPtr /* d */, 23205b261ecSmrg Window /* dest */, 23305b261ecSmrg Bool /* propagate */, 23405b261ecSmrg xEvent * /* ev */, 23505b261ecSmrg Mask /* mask */, 23605b261ecSmrg int /* count */); 23705b261ecSmrg 2386747b715Smrgextern int 2396747b715SmrgSetButtonMapping ( 24005b261ecSmrg ClientPtr /* client */, 24105b261ecSmrg DeviceIntPtr /* dev */, 24205b261ecSmrg int /* nElts */, 24305b261ecSmrg BYTE * /* map */); 24405b261ecSmrg 2456747b715Smrgextern int 2466747b715SmrgChangeKeyMapping( 24705b261ecSmrg ClientPtr /* client */, 24805b261ecSmrg DeviceIntPtr /* dev */, 24905b261ecSmrg unsigned /* len */, 25005b261ecSmrg int /* type */, 25105b261ecSmrg KeyCode /* firstKeyCode */, 25205b261ecSmrg CARD8 /* keyCodes */, 25305b261ecSmrg CARD8 /* keySymsPerKeyCode */, 25405b261ecSmrg KeySym * /* map */); 25505b261ecSmrg 2566747b715Smrgextern void 2576747b715SmrgDeleteWindowFromAnyExtEvents( 25805b261ecSmrg WindowPtr /* pWin */, 25905b261ecSmrg Bool /* freeResources */); 26005b261ecSmrg 2616747b715Smrgextern int 2626747b715SmrgMaybeSendDeviceMotionNotifyHint ( 26305b261ecSmrg deviceKeyButtonPointer * /* pEvents */, 26405b261ecSmrg Mask /* mask */); 26505b261ecSmrg 2666747b715Smrgextern void 2676747b715SmrgCheckDeviceGrabAndHintWindow ( 26805b261ecSmrg WindowPtr /* pWin */, 26905b261ecSmrg int /* type */, 27005b261ecSmrg deviceKeyButtonPointer * /* xE */, 27105b261ecSmrg GrabPtr /* grab */, 27205b261ecSmrg ClientPtr /* client */, 27305b261ecSmrg Mask /* deliveryMask */); 27405b261ecSmrg 2756747b715Smrgextern void 2766747b715SmrgMaybeStopDeviceHint( 27705b261ecSmrg DeviceIntPtr /* dev */, 27805b261ecSmrg ClientPtr /* client */); 27905b261ecSmrg 2806747b715Smrgextern int 2816747b715SmrgDeviceEventSuppressForWindow( 28205b261ecSmrg WindowPtr /* pWin */, 28305b261ecSmrg ClientPtr /* client */, 28405b261ecSmrg Mask /* mask */, 28505b261ecSmrg int /* maskndx */); 28605b261ecSmrg 2876747b715Smrgextern void 2886747b715SmrgSendEventToAllWindows( 28905b261ecSmrg DeviceIntPtr /* dev */, 29005b261ecSmrg Mask /* mask */, 29105b261ecSmrg xEvent * /* ev */, 29205b261ecSmrg int /* count */); 29305b261ecSmrg 2946747b715Smrgextern _X_HIDDEN void XI2EventSwap( 2956747b715Smrg xGenericEvent * /* from */, 2966747b715Smrg xGenericEvent * /* to */); 2974642e01fSmrg 2986747b715Smrg/* For an event such as MappingNotify which affects client interpretation 2996747b715Smrg * of input events sent by device dev, should we notify the client, or 3006747b715Smrg * would it merely be irrelevant and confusing? */ 3016747b715Smrgextern int 3026747b715SmrgXIShouldNotify(ClientPtr client, DeviceIntPtr dev); 3034642e01fSmrg 3046747b715Smrgextern void 3056747b715SmrgXISendDeviceChangedEvent(DeviceIntPtr device, DeviceIntPtr master, 3066747b715Smrg DeviceChangedEvent *dce); 3074642e01fSmrg 3086747b715Smrgextern int 3096747b715SmrgXISetEventMask(DeviceIntPtr dev, WindowPtr win, ClientPtr client, 3106747b715Smrg unsigned int len, unsigned char* mask); 3114642e01fSmrg 3126747b715Smrgextern int 3136747b715SmrgXICheckInvalidMaskBits(unsigned char *mask, int len); 3144642e01fSmrg 31505b261ecSmrg#endif /* EXEVENTS_H */ 316