forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			107 lines
		
	
	
		
			No EOL
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			No EOL
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| #ifndef touchinjection_sdk80_h
 | |
| #define touchinjection_sdk80_h
 | |
| 
 | |
| // Note, this isn't inclusive of all touch injection header info.
 | |
| // You may need to add more to expand on current apis. 
 | |
| 
 | |
| #ifndef TOUCH_FEEDBACK_DEFAULT
 | |
| 
 | |
| #define TOUCH_FEEDBACK_DEFAULT 0x1
 | |
| #define TOUCH_FEEDBACK_INDIRECT 0x2
 | |
| #define TOUCH_FEEDBACK_NONE 0x3
 | |
| 
 | |
| enum {
 | |
|   PT_POINTER  = 0x00000001,   // Generic pointer
 | |
|   PT_TOUCH    = 0x00000002,   // Touch
 | |
|   PT_PEN      = 0x00000003,   // Pen
 | |
|   PT_MOUSE    = 0x00000004,   // Mouse
 | |
| };
 | |
| 
 | |
| typedef DWORD POINTER_INPUT_TYPE;
 | |
| typedef UINT32 POINTER_FLAGS;
 | |
| 
 | |
| typedef enum {
 | |
|   POINTER_CHANGE_NONE,
 | |
|   POINTER_CHANGE_FIRSTBUTTON_DOWN,
 | |
|   POINTER_CHANGE_FIRSTBUTTON_UP,
 | |
|   POINTER_CHANGE_SECONDBUTTON_DOWN,
 | |
|   POINTER_CHANGE_SECONDBUTTON_UP,
 | |
|   POINTER_CHANGE_THIRDBUTTON_DOWN,
 | |
|   POINTER_CHANGE_THIRDBUTTON_UP,
 | |
|   POINTER_CHANGE_FOURTHBUTTON_DOWN,
 | |
|   POINTER_CHANGE_FOURTHBUTTON_UP,
 | |
|   POINTER_CHANGE_FIFTHBUTTON_DOWN,
 | |
|   POINTER_CHANGE_FIFTHBUTTON_UP,
 | |
| } POINTER_BUTTON_CHANGE_TYPE;
 | |
| 
 | |
| typedef struct {
 | |
|   POINTER_INPUT_TYPE    pointerType;
 | |
|   UINT32          pointerId;
 | |
|   UINT32          frameId;
 | |
|   POINTER_FLAGS   pointerFlags;
 | |
|   HANDLE          sourceDevice;
 | |
|   HWND            hwndTarget;
 | |
|   POINT           ptPixelLocation;
 | |
|   POINT           ptHimetricLocation;
 | |
|   POINT           ptPixelLocationRaw;
 | |
|   POINT           ptHimetricLocationRaw;
 | |
|   DWORD           dwTime;
 | |
|   UINT32          historyCount;
 | |
|   INT32           InputData;
 | |
|   DWORD           dwKeyStates;
 | |
|   UINT64          PerformanceCount;
 | |
|   POINTER_BUTTON_CHANGE_TYPE ButtonChangeType;
 | |
| } POINTER_INFO;
 | |
| 
 | |
| typedef UINT32 TOUCH_FLAGS;
 | |
| typedef UINT32 TOUCH_MASK;
 | |
| 
 | |
| typedef struct {
 | |
|   POINTER_INFO    pointerInfo;
 | |
|   TOUCH_FLAGS     touchFlags;
 | |
|   TOUCH_MASK      touchMask;
 | |
|   RECT            rcContact;
 | |
|   RECT            rcContactRaw;
 | |
|   UINT32          orientation;
 | |
|   UINT32          pressure;
 | |
| } POINTER_TOUCH_INFO;
 | |
| 
 | |
| #define TOUCH_FLAG_NONE                 0x00000000 // Default
 | |
| 
 | |
| #define TOUCH_MASK_NONE                 0x00000000 // Default - none of the optional fields are valid
 | |
| #define TOUCH_MASK_CONTACTAREA          0x00000001 // The rcContact field is valid
 | |
| #define TOUCH_MASK_ORIENTATION          0x00000002 // The orientation field is valid
 | |
| #define TOUCH_MASK_PRESSURE             0x00000004 // The pressure field is valid
 | |
| 
 | |
| #define POINTER_FLAG_NONE               0x00000000 // Default
 | |
| #define POINTER_FLAG_NEW                0x00000001 // New pointer
 | |
| #define POINTER_FLAG_INRANGE            0x00000002 // Pointer has not departed
 | |
| #define POINTER_FLAG_INCONTACT          0x00000004 // Pointer is in contact
 | |
| #define POINTER_FLAG_FIRSTBUTTON        0x00000010 // Primary action
 | |
| #define POINTER_FLAG_SECONDBUTTON       0x00000020 // Secondary action
 | |
| #define POINTER_FLAG_THIRDBUTTON        0x00000040 // Third button
 | |
| #define POINTER_FLAG_FOURTHBUTTON       0x00000080 // Fourth button
 | |
| #define POINTER_FLAG_FIFTHBUTTON        0x00000100 // Fifth button
 | |
| #define POINTER_FLAG_PRIMARY            0x00002000 // Pointer is primary
 | |
| #define POINTER_FLAG_CONFIDENCE         0x00004000 // Pointer is considered unlikely to be accidental
 | |
| #define POINTER_FLAG_CANCELED           0x00008000 // Pointer is departing in an abnormal manner
 | |
| #define POINTER_FLAG_DOWN               0x00010000 // Pointer transitioned to down state (made contact)
 | |
| #define POINTER_FLAG_UPDATE             0x00020000 // Pointer update
 | |
| #define POINTER_FLAG_UP                 0x00040000 // Pointer transitioned from down state (broke contact)
 | |
| #define POINTER_FLAG_WHEEL              0x00080000 // Vertical wheel
 | |
| #define POINTER_FLAG_HWHEEL             0x00100000 // Horizontal wheel
 | |
| #define POINTER_FLAG_CAPTURECHANGED     0x00200000 // Lost capture
 | |
| 
 | |
| #endif // TOUCH_FEEDBACK_DEFAULT
 | |
| 
 | |
| #define TOUCH_FLAGS_CONTACTUPDATE (POINTER_FLAG_UPDATE|POINTER_FLAG_INRANGE|POINTER_FLAG_INCONTACT)
 | |
| #define TOUCH_FLAGS_CONTACTDOWN (POINTER_FLAG_DOWN|POINTER_FLAG_INRANGE|POINTER_FLAG_INCONTACT)
 | |
| 
 | |
| typedef BOOL (WINAPI* InitializeTouchInjectionPtr)(UINT32 maxCount, DWORD dwMode);
 | |
| typedef BOOL (WINAPI* InjectTouchInputPtr)(UINT32 count, CONST POINTER_TOUCH_INFO *info);
 | |
| 
 | |
| #endif // touchinjection_sdk80_h
 | 
