3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 1991-1998 by LCS/Telegraphics
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 2002 Patrik Stridvall
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is free software; you can redistribute it and/or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * modify it under the terms of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License as published by the Free Software Foundation; either
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * version 2.1 of the License, or (at your option) any later version.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is distributed in the hope that it will be useful,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Lesser General Public License for more details.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * You should have received a copy of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License along with this library; if not, write to the Free Software
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync/*
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * a choice of LGPL license versions is made available with the language indicating
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * of the LGPL is applied is otherwise unspecified.
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef __WINE_PKTDEF_H
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __WINE_PKTDEF_H
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/***********************************************************************
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * How to use pktdef.h:
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * 1. Include wintab.h
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * 2. if using just one packet format:
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * a. Define PACKETDATA and PACKETMODE as or'ed combinations of WTPKT bits
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * (use the PK_* identifiers).
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * b. Include pktdef.h.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * c. The generated structure typedef will be called PACKET. Use PACKETDATA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * and PACKETMODE to fill in the LOGCONTEXT structure.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * 3. If using multiple packet formats, for each one:
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * a. Define PACKETNAME. Its text value will be a prefix for this packet's
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * parameters and names.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * b. Define <PACKETNAME>PACKETDATA and <PACKETNAME>PACKETMODE similar to
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * 2.a. above.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * c. Include pktdef.h.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * d. The generated structure typedef will be called
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * <PACKETNAME>PACKET. Compare with 2.c. above and example #2 below.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * 4. If using extension packet data, do the following additional steps
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * for each extension:
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * a. Before including pktdef.h, define <PACKETNAME>PACKET<EXTENSION>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * as either PKEXT_ABSOLUTE or PKEXT_RELATIVE.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * b. The generated structure typedef will contain a field for the
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * extension data.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * c. Scan the WTI_EXTENSION categories to find the extension's
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * packet mask bit.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * d. OR the packet mask bit with <PACKETNAME>PACKETDATA and use the
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * result in the lcPktData field of the LOGCONTEXT structure.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * e. If <PACKETNAME>PACKET<EXTENSION> was PKEXT_RELATIVE, OR the
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * packet mask bit with <PACKETNAME>PACKETMODE and use the result
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * in the lcPktMode field of the LOGCONTEXT structure.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Example #1. -- single packet format
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #include <wintab.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define PACKETDATA PK_X | PK_Y | PK_BUTTONS /@ x, y, buttons @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define PACKETMODE PK_BUTTONS /@ buttons relative mode @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #include <pktdef.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * ...
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * lc.lcPktData = PACKETDATA;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * lc.lcPktMode = PACKETMODE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Example #2. -- multiple formats
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #include <wintab.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define PACKETNAME MOE
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define MOEPACKETDATA PK_X | PK_Y | PK_BUTTONS /@ x, y, buttons @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define MOEPACKETMODE PK_BUTTONS /@ buttons relative mode @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #include <pktdef.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define PACKETNAME LARRY
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define LARRYPACKETDATA PK_Y | PK_Z | PK_BUTTONS /@ y, z, buttons @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define LARRYPACKETMODE PK_BUTTONS /@ buttons relative mode @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #include <pktdef.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define PACKETNAME CURLY
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define CURLYPACKETDATA PK_X | PK_Z | PK_BUTTONS /@ x, z, buttons @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define CURLYPACKETMODE PK_BUTTONS /@ buttons relative mode @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #include <pktdef.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * ...
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * lcMOE.lcPktData = MOEPACKETDATA;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * lcMOE.lcPktMode = MOEPACKETMODE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * ...
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * lcLARRY.lcPktData = LARRYPACKETDATA;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * lcLARRY.lcPktMode = LARRYPACKETMODE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * ...
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * lcCURLY.lcPktData = CURLYPACKETDATA;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * lcCURLY.lcPktMode = CURLYPACKETMODE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Example #3. -- extension packet data "XFOO".
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #include <wintab.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define PACKETDATA PK_X | PK_Y | PK_BUTTONS /@ x, y, buttons @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define PACKETMODE PK_BUTTONS /@ buttons relative mode @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #define PACKETXFOO PKEXT_ABSOLUTE /@ XFOO absolute mode @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #include <pktdef.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * ...
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * UINT ScanExts(UINT wTag)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * UINT i;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * UINT wScanTag;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * /@ scan for wTag's info category. @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * for (i = 0; WTInfo(WTI_EXTENSIONS + i, EXT_TAG, &wScanTag); i++) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * if (wTag == wScanTag) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * /@ return category offset from WTI_EXTENSIONS. @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * return i;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * /@ return error code. @/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * return 0xFFFF;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * ...
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * lc.lcPktData = PACKETDATA;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * lc.lcPktMode = PACKETMODE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #ifdef PACKETXFOO
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * categoryXFOO = ScanExts(WTX_XFOO);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * WTInfo(WTI_EXTENSIONS + categoryXFOO, EXT_MASK, &maskXFOO);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * lc.lcPktData |= maskXFOO;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #if PACKETXFOO == PKEXT_RELATIVE
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * lc.lcPktMode |= maskXFOO;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * #endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * WTOpen(hWnd, &lc, TRUE);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern "C" {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* defined(__cplusplus) */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef PACKETNAME
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* if no packet name prefix */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define __PFX(x) x
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define __IFX(x,y) x ## y
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* add prefixes and infixes to packet format names */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define __PFX(x) __PFX2(PACKETNAME,x)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define __PFX2(p,x) __PFX3(p,x)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define __PFX3(p,x) p ## x
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define __IFX(x,y) __IFX2(x,PACKETNAME,y)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define __IFX2(x,i,y) __IFX3(x,i,y)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# define __IFX3(x,i,y) x ## i ## y
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __SFX2(x,s) __SFX3(x,s)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __SFX3(x,s) x ## s
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __TAG __IFX(tag,PACKET)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __TYPES \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync __PFX(PACKET), * __IFX(P,PACKET), \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * __IFX(NP,PACKET), * __IFX(LP,PACKET)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __DATA (__PFX(PACKETDATA))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __MODE (__PFX(PACKETMODE))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __EXT(x) __SFX2(__PFX(PACKET),x)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct __TAG {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_CONTEXT)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HCTX pkContext;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_STATUS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT pkStatus;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_TIME)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD pkTime;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_CHANGED)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WTPKT pkChanged;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_SERIAL_NUMBER)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT pkSerialNumber;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_CURSOR)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT pkCursor;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_BUTTONS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD pkButtons;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_X)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LONG pkX;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_Y)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LONG pkY;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_Z)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LONG pkZ;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_NORMAL_PRESSURE)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# if (__MODE & PK_NORMAL_PRESSURE)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* relative */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync int pkNormalPressure;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* absolute */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT pkNormalPressure;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_TANGENT_PRESSURE)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# if (__MODE & PK_TANGENT_PRESSURE)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* relative */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync int pkTangentPressure;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* absolute */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT pkTangentPressure;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync# endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_ORIENTATION)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ORIENTATION pkOrientation;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__DATA & PK_ROTATION)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ROTATION pkRotation; /* 1.1 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef NOWTEXTENSIONS
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* extensions begin here. */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__EXT(FKEYS) == PKEXT_RELATIVE) || (__EXT(FKEYS) == PKEXT_ABSOLUTE)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT pkFKeys;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#if (__EXT(TILT) == PKEXT_RELATIVE) || (__EXT(TILT) == PKEXT_ABSOLUTE)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TILT pkTilt;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} __TYPES;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef PACKETNAME
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __TAG
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __TAG2
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __TYPES
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __TYPES2
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __DATA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __MODE
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __PFX
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __PFX2
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __PFX3
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __IFX
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __IFX2
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __IFX3
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __SFX2
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#undef __SFX3
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} /* extern "C" */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* defined(__cplusplus) */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* defined(__WINE_PKTDEF_H */