Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/widget/windows/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 5 kB image not shown  

Quelle  touchinjection_sdk80.h   Sprache: 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

#include <windows.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 POINTER_FEEDBACK_MODE {
  POINTER_FEEDBACK_DEFAULT =
      1,  // The injected pointer input feedback may get suppressed by the
          // end-user settings in the Pen and Touch control panel.
  POINTER_FEEDBACK_INDIRECT =
      2,  // The injected pointer input feedback overrides the end-user settings
          // in the Pen and Touch control panel.
  POINTER_FEEDBACK_NONE = 3,  // No touch visualizations.
};

enum {
  PT_POINTER = 0x00000001,   // Generic pointer
  PT_TOUCH = 0x00000002,     // Touch
  PT_PEN = 0x00000003,       // Pen
  PT_MOUSE = 0x00000004,     // Mouse
  PT_TOUCHPAD = 0x00000005,  // Touch pad
};

using POINTER_INPUT_TYPE = DWORD;
using POINTER_FLAGS = UINT32;

enum POINTER_BUTTON_CHANGE_TYPE {
  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,
};

struct POINTER_INFO {
  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;
};

using TOUCH_FLAGS = UINT32;
using TOUCH_MASK = UINT32;

struct POINTER_TOUCH_INFO {
  POINTER_INFO pointerInfo;
  TOUCH_FLAGS touchFlags;
  TOUCH_MASK touchMask;
  RECT rcContact;
  RECT rcContactRaw;
  UINT32 orientation;
  UINT32 pressure;
};

#  define PEN_FLAG_NONE 0x00000000      // Default
#  define PEN_FLAG_BARREL 0x00000001    // The barrel button is pressed
#  define PEN_FLAG_INVERTED 0x00000002  // The pen is inverted
#  define PEN_FLAG_ERASER 0x00000004    // The eraser button is pressed

#  define PEN_MASK_NONE \
    0x00000000  // Default - none of the optional fields are valid
#  define PEN_MASK_PRESSURE 0x00000001  // The pressure field is valid
#  define PEN_MASK_ROTATION 0x00000002  // The rotation field is valid
#  define PEN_MASK_TILT_X 0x00000004    // The tiltX field is valid
#  define PEN_MASK_TILT_Y 0x00000008    // The tiltY field is valid

using PEN_FLAGS = UINT32;
using PEN_MASK = UINT32;

struct POINTER_PEN_INFO {
  POINTER_INFO pointerInfo;
  PEN_FLAGS penFlags;
  PEN_MASK penMask;
  UINT32 pressure;
  UINT32 rotation;
  INT32 tiltX;
  INT32 tiltY;
};

struct POINTER_TYPE_INFO {
  POINTER_INPUT_TYPE type;
  union {
    POINTER_TOUCH_INFO touchInfo;
    POINTER_PEN_INFO penInfo;
  };
};

#  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)

using InitializeTouchInjectionPtr = BOOL(WINAPI*)(UINT32, DWORD);
using InjectTouchInputPtr = BOOL(WINAPI*)(UINT32, const POINTER_TOUCH_INFO*);

#if !defined(NTDDI_WIN10_RS5) || (NTDDI_VERSION < NTDDI_WIN10_RS5)
#  define HSYNTHETICPOINTERDEVICE intptr_t
#endif  // NTDDI_VERSION < NTDDI_WIN10_RS5

using CreateSyntheticPointerDevicePtr = HSYNTHETICPOINTERDEVICE(WINAPI*)(
    POINTER_INPUT_TYPE, ULONG, POINTER_FEEDBACK_MODE);
using DestroySyntheticPointerDevicePtr = void(WINAPI*)(HSYNTHETICPOINTERDEVICE);
using InjectSyntheticPointerInputPtr = BOOL(WINAPI*)(HSYNTHETICPOINTERDEVICE,
                                                     const POINTER_TYPE_INFO*,
                                                     UINT32);

#endif  // touchinjection_sdk80_h

100%


¤ Dauer der Verarbeitung: 0.16 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.