/home/ktietz/out/0002-New-header-gpio.h.txt

new Windows GUIDs ...

/home/ktietz/out/0003-Update-shared-headers-for-DDK-for-winapi-family-check-.txt
New file hidclass.h and  updated other hid*.h headers for
winapi-family check and Win7/8 support

/home/ktietz/out/0004-Add-monitor-configuration-API.txt
New monitor-configuration-API

Ok for apply?

Regards,
Kai
From 52de18df9cf985b821f75c1b258136c3c8d2d178 Mon Sep 17 00:00:00 2001
From: Kai Tietz <ktiet...@googlemail.com>
Date: Fri, 29 Aug 2014 14:43:51 +0200
Subject: New header gpio.h

---
 mingw-w64-headers/include/gpio.h |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)
 create mode 100644 mingw-w64-headers/include/gpio.h

diff --git a/mingw-w64-headers/include/gpio.h b/mingw-w64-headers/include/gpio.h
new file mode 100644
index 0000000..22ecf28
--- /dev/null
+++ b/mingw-w64-headers/include/gpio.h
@@ -0,0 +1,20 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+#ifndef __GPIO_W__
+#define __GPIO_W__
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+
+#if NTDDI_VERSION >= 0x06020000
+#define IOCTL_GPIO_READ_PINS CTL_CODE (FILE_DEVICE_GPIO, 0x0, METHOD_BUFFERED, 
FILE_ANY_ACCESS)
+#define IOCTL_GPIO_WRITE_PINS CTL_CODE (FILE_DEVICE_GPIO, 0x1, 
METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION CTL_CODE (FILE_DEVICE_GPIO, 
0x2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#endif
+
+#endif
+#endif
-- 
1.7.9

From 509d31de1e3549560da0b17671ecfe00146f8819 Mon Sep 17 00:00:00 2001
From: Kai Tietz <ktiet...@googlemail.com>
Date: Fri, 29 Aug 2014 15:41:57 +0200
Subject: =?UTF-8?q?Update=20shared=20headers=20for=20DDK=20for=20winapi-fami?=
 =?UTF-8?q?ly=20check,=20Win=207&8=20extensions,=0Aand=20do=20some=20code-re?=
 =?UTF-8?q?ordering.?=

---
 mingw-w64-headers/include/hidclass.h |  118 ++++++
 mingw-w64-headers/include/hidpi.h    |  773 ++++++++++------------------------
 mingw-w64-headers/include/hidsdi.h   |   69 ++--
 mingw-w64-headers/include/hidusage.h |  374 +++++++++--------
 4 files changed, 570 insertions(+), 764 deletions(-)
 create mode 100644 mingw-w64-headers/include/hidclass.h

diff --git a/mingw-w64-headers/include/hidclass.h 
b/mingw-w64-headers/include/hidclass.h
new file mode 100644
index 0000000..7d2966a
--- /dev/null
+++ b/mingw-w64-headers/include/hidclass.h
@@ -0,0 +1,118 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+#include <winapifamily.h>
+#include <basetyps.h>
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+#define GUID_CLASS_INPUT GUID_DEVINTERFACE_HID
+
+DEFINE_GUID (GUID_DEVINTERFACE_HID, __MSABI_LONG (0x4d1e55b2), 0xf16f, 0x11cf, 
0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30);
+DEFINE_GUID (GUID_HID_INTERFACE_NOTIFY, __MSABI_LONG (0x2c4e2e88), 0x25e6, 
0x4c33, 0x88, 0x2f, 0x3d, 0x82, 0xe6, 0x07, 0x36, 0x81);
+DEFINE_GUID (GUID_HID_INTERFACE_HIDPARSE, 0xf5c315a5, 0x69ac, 0x4bc2, 0x92, 
0x79, 0xd0, 0xb6, 0x45, 0x76, 0xf4, 0x4b);
+#endif
+
+#ifndef __HIDCLASS_H__
+#define __HIDCLASS_H__
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+
+#define GUID_CLASS_INPUT_STR "4D1E55B2-F16F-11CF-88CB-001111000030"
+
+#define HID_REVISION 0x00000001
+
+#define HID_CTL_CODE(id) CTL_CODE (FILE_DEVICE_KEYBOARD,(id), METHOD_NEITHER, 
FILE_ANY_ACCESS)
+#define HID_BUFFER_CTL_CODE(id) CTL_CODE (FILE_DEVICE_KEYBOARD,(id), 
METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define HID_IN_CTL_CODE(id) CTL_CODE (FILE_DEVICE_KEYBOARD,(id), 
METHOD_IN_DIRECT, FILE_ANY_ACCESS)
+#define HID_OUT_CTL_CODE(id) CTL_CODE (FILE_DEVICE_KEYBOARD,(id), 
METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+
+#define IOCTL_HID_GET_DRIVER_CONFIG HID_BUFFER_CTL_CODE (100)
+#define IOCTL_HID_SET_DRIVER_CONFIG HID_BUFFER_CTL_CODE (101)
+#define IOCTL_HID_GET_POLL_FREQUENCY_MSEC HID_BUFFER_CTL_CODE (102)
+#define IOCTL_HID_SET_POLL_FREQUENCY_MSEC HID_BUFFER_CTL_CODE (103)
+#define IOCTL_GET_NUM_DEVICE_INPUT_BUFFERS HID_BUFFER_CTL_CODE (104)
+#define IOCTL_SET_NUM_DEVICE_INPUT_BUFFERS HID_BUFFER_CTL_CODE (105)
+#define IOCTL_HID_GET_COLLECTION_INFORMATION HID_BUFFER_CTL_CODE (106)
+
+#define IOCTL_HID_GET_COLLECTION_DESCRIPTOR HID_CTL_CODE (100)
+#define IOCTL_HID_FLUSH_QUEUE HID_CTL_CODE (101)
+#define IOCTL_HID_SET_FEATURE HID_IN_CTL_CODE (100)
+#define IOCTL_HID_SET_OUTPUT_REPORT HID_IN_CTL_CODE (101)
+#define IOCTL_HID_GET_FEATURE HID_OUT_CTL_CODE (100)
+#define IOCTL_GET_PHYSICAL_DESCRIPTOR HID_OUT_CTL_CODE (102)
+#define IOCTL_HID_GET_HARDWARE_ID HID_OUT_CTL_CODE (103)
+#define IOCTL_HID_GET_INPUT_REPORT HID_OUT_CTL_CODE (104)
+#define IOCTL_HID_GET_MANUFACTURER_STRING HID_OUT_CTL_CODE (110)
+#define IOCTL_HID_GET_PRODUCT_STRING HID_OUT_CTL_CODE (111)
+#define IOCTL_HID_GET_SERIALNUMBER_STRING HID_OUT_CTL_CODE (112)
+#define IOCTL_HID_GET_INDEXED_STRING HID_OUT_CTL_CODE (120)
+#define IOCTL_HID_GET_MS_GENRE_DESCRIPTOR HID_OUT_CTL_CODE (121)
+#define IOCTL_HID_ENABLE_SECURE_READ HID_CTL_CODE (130)
+#define IOCTL_HID_DISABLE_SECURE_READ HID_CTL_CODE (131)
+
+typedef struct _HID_XFER_PACKET {
+  PUCHAR reportBuffer;
+  ULONG reportBufferLen;
+  UCHAR reportId;
+} HID_XFER_PACKET,*PHID_XFER_PACKET;
+
+#ifdef NT_INCLUDED
+enum DeviceObjectState {
+  DeviceObjectStarted,
+  DeviceObjectStopped,
+  DeviceObjectRemoved
+};
+
+typedef VOID (*PHID_STATUS_CHANGE) (PVOID Context, enum DeviceObjectState 
State);
+
+typedef struct _HID_INTERFACE_NOTIFY_PNP {
+#ifdef __cplusplus
+  INTERFACE i;
+#else
+  /* inline instead.  See miniport.h/wdm.h of ddk */
+  USHORT Size;
+  USHORT Version;
+  PVOID Context;
+  PINTERFACE_REFERENCE InterfaceReference;
+  PINTERFACE_DEREFERENCE InterfaceDereference;
+#endif
+  PHID_STATUS_CHANGE StatusChangeFn;
+  PVOID CallbackContext;
+} HID_INTERFACE_NOTIFY_PNP,*PHID_INTERFACE_NOTIFY_PNP;
+
+#ifdef __HIDPI_H__
+typedef NTSTATUS (__stdcall *PHIDP_GETCAPS) (PHIDP_PREPARSED_DATA 
PreparsedData, PHIDP_CAPS Capabilities);
+
+typedef struct _HID_INTERFACE_HIDPARSE {
+#ifdef __cplusplus
+  INTERFACE i;
+#else
+  /* inline instead.  See miniport.h/wdm.h of ddk */
+  USHORT Size;
+  USHORT Version;
+  PVOID Context;
+  PINTERFACE_REFERENCE InterfaceReference;
+  PINTERFACE_DEREFERENCE InterfaceDereference;
+#endif
+  PHIDP_GETCAPS HidpGetCaps;
+} HID_INTERFACE_HIDPARSE,*PHID_INTERFACE_HIDPARSE;
+#endif
+#endif
+
+typedef struct _HID_COLLECTION_INFORMATION {
+  ULONG DescriptorSize;
+  BOOLEAN Polled;
+  UCHAR Reserved1[1];
+  USHORT VendorID;
+  USHORT ProductID;
+  USHORT VersionNumber;
+} HID_COLLECTION_INFORMATION,*PHID_COLLECTION_INFORMATION;
+
+typedef struct _HID_DRIVER_CONFIG {
+  ULONG Size;
+  ULONG RingBufferSize;
+} HID_DRIVER_CONFIG,*PHID_DRIVER_CONFIG;
+#endif
+#endif
diff --git a/mingw-w64-headers/include/hidpi.h 
b/mingw-w64-headers/include/hidpi.h
index dd2cefa..5054978 100644
--- a/mingw-w64-headers/include/hidpi.h
+++ b/mingw-w64-headers/include/hidpi.h
@@ -3,10 +3,11 @@
  *
  * Public Interface for HID parsing library.
  *
- * This file is part of the w32api package.
+ * This file is part of the mingw-w64 package.
  *
  * Contributors:
  *   Created by Casper S. Hornstrup <cho...@users.sourceforge.net>
+ *   Extended by Kai Tietz
  *
  * THIS SOFTWARE IS NOT COPYRIGHTED
  *
@@ -20,587 +21,241 @@
  *
  */
 
-#ifndef __HIDPI_H
-#define __HIDPI_H
+#include <winapifamily.h>
 
-#include "hidusage.h"
+#ifndef __HIDPI_H__
+#define __HIDPI_H__
 
-#ifdef __cplusplus
-extern "C" {
-#endif
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
 
-#if defined(_HIDPI_)
-# define HIDAPI
-#else
-# define HIDAPI DECLSPEC_IMPORT
-#endif
+#include <pshpack4.h>
 
-#if !defined (_NTDEF_) && !defined (_NTSTATUS_PSDK)
-#define _NTSTATUS_PSDK
-  typedef LONG NTSTATUS,*PNTSTATUS;
-#endif
+#define HIDP_LINK_COLLECTION_ROOT ((USHORT) -1)
+#define HIDP_LINK_COLLECTION_UNSPECIFIED ((USHORT) 0)
 
-typedef PUCHAR PHIDP_REPORT_DESCRIPTOR;
-typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA;
+#define HidP_IsSameUsageAndPage(u1, u2) ((*((PULONG) &u1)) == (*((PULONG) 
&u2)))
+#define HidP_SetButtons(Rty, Up, Lco, ULi, ULe, Ppd, Rep, Rle) HidP_SetUsages 
(Rty, Up, Lco, ULi, ULe, Ppd, Rep, Rle)
+#define HidP_UnsetButtons(Rty, Up, Lco, ULi, ULe, Ppd, Rep, Rle) 
HidP_UnsetUsages (Rty, Up, Lco, ULi, ULe, Ppd, Rep, Rle)
+#define HidP_GetButtons(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe) HidP_GetUsages 
(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe)
+#define HidP_GetButtonsEx(Rty, LCo, BLi, ULe, Ppd, Rep, RLe) HidP_GetUsagesEx 
(Rty, LCo, BLi, ULe, Ppd, Rep, RLe)
 
-typedef struct _HIDP_UNKNOWN_TOKEN {
-  UCHAR  Token;
-  UCHAR  Reserved[3];
-  ULONG  BitField;
-} HIDP_UNKNOWN_TOKEN, *PHIDP_UNKNOWN_TOKEN;
-
-typedef enum _HIDP_KEYBOARD_DIRECTION {
-  HidP_Keyboard_Break,
-  HidP_Keyboard_Make
-} HIDP_KEYBOARD_DIRECTION;
-
-typedef struct _HIDP_KEYBOARD_MODIFIER_STATE {
-  _ANONYMOUS_UNION union {
-    _ANONYMOUS_STRUCT struct {
-      ULONG  LeftControl : 1;
-      ULONG  LeftShift : 1;
-      ULONG  LeftAlt : 1;
-      ULONG  LeftGUI : 1;
-      ULONG  RightControl : 1;
-      ULONG  RightShift : 1;
-      ULONG  RightAlt : 1;
-      ULONG  RigthGUI : 1;
-      ULONG  CapsLock : 1;
-      ULONG  ScollLock : 1;
-      ULONG  NumLock : 1;
-      ULONG  Reserved : 21;
-    } DUMMYSTRUCTNAME;
-    ULONG ul;
-  } DUMMYUNIONNAME;
-} HIDP_KEYBOARD_MODIFIER_STATE, *PHIDP_KEYBOARD_MODIFIER_STATE;
+typedef PUCHAR PHIDP_REPORT_DESCRIPTOR;
+typedef struct _HIDP_PREPARSED_DATA *PHIDP_PREPARSED_DATA;
 
-typedef BOOLEAN (NTAPI *PHIDP_INSERT_SCANCODES)(
-  PVOID  Context,
-  PCHAR  NewScanCodes,
-  ULONG  Length);
+typedef enum _HIDP_REPORT_TYPE {
+  HidP_Input,
+  HidP_Output,
+  HidP_Feature
+} HIDP_REPORT_TYPE;
 
 typedef struct _USAGE_AND_PAGE {
-  USAGE  Usage;
-  USAGE  UsagePage;
-} USAGE_AND_PAGE, *PUSAGE_AND_PAGE;
-
-typedef struct _HIDD_ATTRIBUTES {
-  ULONG   Size;
-  USHORT  VendorID;
-  USHORT  ProductID;
-  USHORT  VersionNumber;
-} HIDD_ATTRIBUTES, *PHIDD_ATTRIBUTES;
-
-typedef struct _HIDD_CONFIGURATION {
-  PVOID  cookie;
-  ULONG  size;
-  ULONG  RingBufferSize;
-} HIDD_CONFIGURATION, *PHIDD_CONFIGURATION;
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_TranslateUsageAndPagesToI8042ScanCodes(
-  PUSAGE_AND_PAGE  ChangedUsageList,
-  ULONG  UsageListLength,
-  HIDP_KEYBOARD_DIRECTION  KeyAction,
-  PHIDP_KEYBOARD_MODIFIER_STATE  ModifierState,
-  PHIDP_INSERT_SCANCODES  InsertCodesProcedure,
-  PVOID  InsertCodesContext);
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_TranslateUsagesToI8042ScanCodes(
-  PUSAGE  ChangedUsageList,
-  ULONG  UsageListLength,
-  HIDP_KEYBOARD_DIRECTION  KeyAction,
-  PHIDP_KEYBOARD_MODIFIER_STATE  ModifierState,
-  PHIDP_INSERT_SCANCODES  InsertCodesProcedure,
-  PVOID  InsertCodesContext);
+  USAGE Usage;
+  USAGE UsagePage;
+} USAGE_AND_PAGE,*PUSAGE_AND_PAGE;
 
 typedef struct _HIDP_BUTTON_CAPS {
-  USAGE  UsagePage;
-  UCHAR  ReportID;
-  BOOLEAN  IsAlias;
-  USHORT  BitField;
-  USHORT  LinkCollection;
-  USAGE  LinkUsage;
-  USAGE  LinkUsagePage;
-  BOOLEAN  IsRange;
-  BOOLEAN  IsStringRange;
-  BOOLEAN  IsDesignatorRange;
-  BOOLEAN  IsAbsolute;
-  ULONG  Reserved[10];
-  _ANONYMOUS_UNION union {
+  USAGE UsagePage;
+  UCHAR ReportID;
+  BOOLEAN IsAlias;
+  USHORT BitField;
+  USHORT LinkCollection;
+  USAGE LinkUsage;
+  USAGE LinkUsagePage;
+  BOOLEAN IsRange;
+  BOOLEAN IsStringRange;
+  BOOLEAN IsDesignatorRange;
+  BOOLEAN IsAbsolute;
+  ULONG Reserved[10];
+  __C89_NAMELESS union {
     struct {
-      USAGE  UsageMin, UsageMax;
-      USHORT  StringMin, StringMax;
-      USHORT  DesignatorMin, DesignatorMax;
-      USHORT  DataIndexMin, DataIndexMax;
+      USAGE UsageMin, UsageMax;
+      USHORT StringMin, StringMax;
+      USHORT DesignatorMin, DesignatorMax;
+      USHORT DataIndexMin, DataIndexMax;
     } Range;
-    struct  {
-       USAGE  Usage, Reserved1;
-       USHORT  StringIndex, Reserved2;
-       USHORT  DesignatorIndex, Reserved3;
-       USHORT  DataIndex, Reserved4;
+    struct {
+      USAGE Usage, Reserved1;
+      USHORT StringIndex, Reserved2;
+      USHORT DesignatorIndex, Reserved3;
+      USHORT DataIndex, Reserved4;
     } NotRange;
-  } DUMMYUNIONNAME;
-} HIDP_BUTTON_CAPS, *PHIDP_BUTTON_CAPS;
-
-typedef struct _HIDP_CAPS {
-  USAGE  Usage;
-  USAGE  UsagePage;
-  USHORT  InputReportByteLength;
-  USHORT  OutputReportByteLength;
-  USHORT  FeatureReportByteLength;
-  USHORT  Reserved[17];
-  USHORT  NumberLinkCollectionNodes;
-  USHORT  NumberInputButtonCaps;
-  USHORT  NumberInputValueCaps;
-  USHORT  NumberInputDataIndices;
-  USHORT  NumberOutputButtonCaps;
-  USHORT  NumberOutputValueCaps;
-  USHORT  NumberOutputDataIndices;
-  USHORT  NumberFeatureButtonCaps;
-  USHORT  NumberFeatureValueCaps;
-  USHORT  NumberFeatureDataIndices;
-} HIDP_CAPS, *PHIDP_CAPS;
-
-typedef struct _HIDP_DATA {
-  USHORT  DataIndex;
-  USHORT  Reserved;
-  _ANONYMOUS_UNION union {
-    ULONG  RawValue;
-    BOOLEAN  On;
-  }  DUMMYUNIONNAME;
-} HIDP_DATA, *PHIDP_DATA;
-
-typedef struct _HIDP_EXTENDED_ATTRIBUTES {
-  UCHAR  NumGlobalUnknowns;
-  UCHAR  Reserved[3];
-  PHIDP_UNKNOWN_TOKEN  GlobalUnknowns;
-  ULONG  Data[1];
-} HIDP_EXTENDED_ATTRIBUTES, *PHIDP_EXTENDED_ATTRIBUTES;
-
-#define HIDP_LINK_COLLECTION_ROOT         ((USHORT) -1)
-#define HIDP_LINK_COLLECTION_UNSPECIFIED  ((USHORT) 0)
-
-typedef struct _HIDP_LINK_COLLECTION_NODE {
-  USAGE  LinkUsage;
-  USAGE  LinkUsagePage;
-  USHORT  Parent;
-  USHORT  NumberOfChildren;
-  USHORT  NextSibling;
-  USHORT  FirstChild;
-  ULONG  CollectionType: 8;
-  ULONG  IsAlias: 1;
-  ULONG  Reserved: 23;
-  PVOID  UserContext;
-} HIDP_LINK_COLLECTION_NODE, *PHIDP_LINK_COLLECTION_NODE;
+  };
+} HIDP_BUTTON_CAPS,*PHIDP_BUTTON_CAPS;
 
 typedef struct _HIDP_VALUE_CAPS {
-  USAGE  UsagePage;
-  UCHAR  ReportID;
-  BOOLEAN  IsAlias;
-  USHORT  BitField;
-  USHORT  LinkCollection;
-  USAGE  LinkUsage;
-  USAGE  LinkUsagePage;
-  BOOLEAN  IsRange;
-  BOOLEAN  IsStringRange;
-  BOOLEAN  IsDesignatorRange;
-  BOOLEAN  IsAbsolute;
-  BOOLEAN  HasNull;
-  UCHAR  Reserved;
-  USHORT  BitSize;
-  USHORT  ReportCount;
-  USHORT  Reserved2[5];
-  ULONG  UnitsExp;
-  ULONG  Units;
-  LONG  LogicalMin, LogicalMax;
-  LONG  PhysicalMin, PhysicalMax;
-    _ANONYMOUS_UNION union {
-      struct {
-        USAGE  UsageMin, UsageMax;
-        USHORT  StringMin, StringMax;
-        USHORT  DesignatorMin, DesignatorMax;
-        USHORT  DataIndexMin, DataIndexMax;
-      } Range;
-      struct {
-        USAGE  Usage, Reserved1;
-        USHORT  StringIndex, Reserved2;
-        USHORT  DesignatorIndex, Reserved3;
-        USHORT  DataIndex, Reserved4;
-      } NotRange;
-    } DUMMYUNIONNAME;
-} HIDP_VALUE_CAPS, *PHIDP_VALUE_CAPS;
-
-typedef enum _HIDP_REPORT_TYPE {
-  HidP_Input,
-  HidP_Output,
-  HidP_Feature
-} HIDP_REPORT_TYPE;
-
-#define FACILITY_HID_ERROR_CODE           0x11
-
-#define HIDP_ERROR_CODES(SEV, CODE) \
-  ((NTSTATUS) (((SEV) << 28) | (FACILITY_HID_ERROR_CODE << 16) | (CODE)))
-
-#define HIDP_STATUS_SUCCESS                 (HIDP_ERROR_CODES(0x0, 0))
-#define HIDP_STATUS_NULL                    (HIDP_ERROR_CODES(0x8, 1))
-#define HIDP_STATUS_INVALID_PREPARSED_DATA  (HIDP_ERROR_CODES(0xC, 1))
-#define HIDP_STATUS_INVALID_REPORT_TYPE     (HIDP_ERROR_CODES(0xC, 2))
-#define HIDP_STATUS_INVALID_REPORT_LENGTH   (HIDP_ERROR_CODES(0xC, 3))
-#define HIDP_STATUS_USAGE_NOT_FOUND         (HIDP_ERROR_CODES(0xC, 4))
-#define HIDP_STATUS_VALUE_OUT_OF_RANGE      (HIDP_ERROR_CODES(0xC, 5))
-#define HIDP_STATUS_BAD_LOG_PHY_VALUES      (HIDP_ERROR_CODES(0xC, 6))
-#define HIDP_STATUS_BUFFER_TOO_SMALL        (HIDP_ERROR_CODES(0xC, 7))
-#define HIDP_STATUS_INTERNAL_ERROR          (HIDP_ERROR_CODES(0xC, 8))
-#define HIDP_STATUS_I8042_TRANS_UNKNOWN     (HIDP_ERROR_CODES(0xC, 9))
-#define HIDP_STATUS_INCOMPATIBLE_REPORT_ID  (HIDP_ERROR_CODES(0xC, 0xA))
-#define HIDP_STATUS_NOT_VALUE_ARRAY         (HIDP_ERROR_CODES(0xC, 0xB))
-#define HIDP_STATUS_IS_VALUE_ARRAY          (HIDP_ERROR_CODES(0xC, 0xC))
-#define HIDP_STATUS_DATA_INDEX_NOT_FOUND    (HIDP_ERROR_CODES(0xC, 0xD))
-#define HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE (HIDP_ERROR_CODES(0xC, 0xE))
-#define HIDP_STATUS_BUTTON_NOT_PRESSED      (HIDP_ERROR_CODES(0xC, 0xF))
-#define HIDP_STATUS_REPORT_DOES_NOT_EXIST   (HIDP_ERROR_CODES(0xC, 0x10))
-#define HIDP_STATUS_NOT_IMPLEMENTED         (HIDP_ERROR_CODES(0xC, 0x20))
-#define HIDP_STATUS_I8242_TRANS_UNKNOWN     HIDP_STATUS_I8042_TRANS_UNKNOWN
-
-
-NTSTATUS HidP_GetButtonCaps(
-  HIDP_REPORT_TYPE  ReportType,
-  PHIDP_BUTTON_CAPS  ButtonCaps,
-  PUSHORT ButtonCapsLength,
-  PHIDP_PREPARSED_DATA  PreparsedData);
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_GetCaps(
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PHIDP_CAPS  Capabilities);
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_GetData(
-  HIDP_REPORT_TYPE  ReportType,
-  PHIDP_DATA  DataList,
-  PULONG  DataLength,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_GetExtendedAttributes(
-  HIDP_REPORT_TYPE  ReportType,
-  USHORT  DataIndex,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PHIDP_EXTENDED_ATTRIBUTES  Attributes,
-  PULONG  LengthAttributes);
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_GetLinkCollectionNodes(
-  PHIDP_LINK_COLLECTION_NODE  LinkCollectionNodes,
-  PULONG  LinkCollectionNodesLength,
-  PHIDP_PREPARSED_DATA  PreparsedData);
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_GetScaledUsageValue(
-  HIDP_REPORT_TYPE  ReportType,
-  USAGE  UsagePage,
-  USHORT  LinkCollection,
-  USAGE  Usage,
-  PLONG  UsageValue,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_GetSpecificButtonCaps(
-  HIDP_REPORT_TYPE  ReportType,
-  USAGE  UsagePage,
-  USHORT  LinkCollection,
-  USAGE  Usage,
-  PHIDP_BUTTON_CAPS  ButtonCaps,
-  PUSHORT  ButtonCapsLength,
-  PHIDP_PREPARSED_DATA  PreparsedData);
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_GetSpecificValueCaps(
-  HIDP_REPORT_TYPE  ReportType,
-  USAGE  UsagePage,
-  USHORT  LinkCollection,
-  USAGE  Usage,
-  PHIDP_VALUE_CAPS  ValueCaps,
-  PUSHORT  ValueCapsLength,
-  PHIDP_PREPARSED_DATA  PreparsedData);
-
-#define HidP_GetButtons(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe) \
-  HidP_GetUsages(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe)
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_GetUsages(
-  HIDP_REPORT_TYPE  ReportType,
-  USAGE  UsagePage,
-  USHORT  LinkCollection,
-  USAGE  *UsageList,
-  ULONG  *UsageLength,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
-
-#define HidP_GetButtonsEx(RT, LC, BL, UL, PD, R, RL)  \
-  HidP_GetUsagesEx(RT, LC, BL, UL, PD, R, RL)
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_GetUsagesEx(
-  HIDP_REPORT_TYPE  ReportType,
-  USHORT  LinkCollection,
-  PUSAGE_AND_PAGE  ButtonList,
-  ULONG  *UsageLength,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_GetUsageValue(
-  HIDP_REPORT_TYPE  ReportType,
-  USAGE  UsagePage,
-  USHORT  LinkCollection,
-  USAGE  Usage,
-  PULONG  UsageValue,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_GetUsageValueArray(
-  HIDP_REPORT_TYPE  ReportType,
-  USAGE  UsagePage,
-  USHORT  LinkCollection,
-  USAGE  Usage,
-  PCHAR  UsageValue,
-  USHORT  UsageValueByteLength,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
-
-NTSTATUS NTAPI HidP_GetValueCaps(
-  HIDP_REPORT_TYPE ReportType,
-  PHIDP_VALUE_CAPS ValueCaps,
-  PUSHORT ValueCapsLength,
-  PHIDP_PREPARSED_DATA PreparsedData);
-
-#if !defined(_HIDPI_NO_FUNCTION_MACROS_)
-
-/*
- * NTSTATUS
- * HidP_GetValueCaps(
- *   IN HIDP_REPORT_TYPE  ReportType,
- *   OUT PHIDP_VALUE_CAPS  ValueCaps,
- *   IN OUT PUSHORT  ValueCapsLength,
- *   IN PHIDP_PREPARSED_DATA  PreparsedData);
- */
-#define HidP_GetValueCaps(_Type_, _Caps_, _Len_, _Data_) \
-  HidP_GetSpecificValueCaps (_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
-
-#endif /* _HIDPI_NO_FUNCTION_MACROS_ */
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_InitializeReportForID(
-  HIDP_REPORT_TYPE  ReportType,
-  UCHAR  ReportID,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
-
-#if !defined(_HIDPI_NO_FUNCTION_MACROS_)
-
-/*
- * BOOLEAN
- * HidP_IsSameUsageAndPage(
- *   USAGE_AND_PAGE  u1,
- *   USAGE_AND_PAGE  u2);
- */
-#define HidP_IsSameUsageAndPage(u1, u2) ((* (PULONG) &u1) == (* (PULONG) &u2))
-
-#endif /* _HIDPI_NO_FUNCTION_MACROS_ */
-
-HIDAPI
-ULONG
-NTAPI
-HidP_MaxDataListLength(
-  HIDP_REPORT_TYPE  ReportType,
-  PHIDP_PREPARSED_DATA  PreparsedData);
-
-HIDAPI
-ULONG
-NTAPI
-HidP_MaxUsageListLength(
-  HIDP_REPORT_TYPE  ReportType,
-  USAGE  UsagePage,
-  PHIDP_PREPARSED_DATA  PreparsedData);
-
-#if !defined(_HIDPI_NO_FUNCTION_MACROS_)
-
-/*
- * NTSTATUS
- * HidP_SetButtons(
- *   IN HIDP_REPORT_TYPE  ReportType,
- *   IN USAGE  UsagePage,
- *   IN USHORT  LinkCollection,
- *   IN PUSAGE  UsageList,
- *   IN OUT PULONG  UsageLength,
- *   IN PHIDP_PREPARSED_DATA  PreparsedData,
- *   IN OUT PCHAR  Report,
- *   IN ULONG  ReportLength);
- */
-#define HidP_SetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
-  HidP_SetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
-
-#endif /* _HIDPI_NO_FUNCTION_MACROS_ */
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_SetData(
-  HIDP_REPORT_TYPE  ReportType,
-  PHIDP_DATA  DataList,
-  PULONG  DataLength,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_SetScaledUsageValue(
-  HIDP_REPORT_TYPE  ReportType,
-  USAGE  UsagePage,
-  USHORT  LinkCollection,
-  USAGE  Usage,
-  LONG  UsageValue,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
-
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_SetUsages(
-  HIDP_REPORT_TYPE  ReportType,
-  USAGE  UsagePage,
-  USHORT  LinkCollection, /* Optional */
-  PUSAGE  UsageList,
-  PULONG  UsageLength,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
+  USAGE UsagePage;
+  UCHAR ReportID;
+  BOOLEAN IsAlias;
+  USHORT BitField;
+  USHORT LinkCollection;
+  USAGE LinkUsage;
+  USAGE LinkUsagePage;
+  BOOLEAN IsRange;
+  BOOLEAN IsStringRange;
+  BOOLEAN IsDesignatorRange;
+  BOOLEAN IsAbsolute;
+  BOOLEAN HasNull;
+  UCHAR Reserved;
+  USHORT BitSize;
+  USHORT ReportCount;
+  USHORT Reserved2[5];
+  ULONG UnitsExp;
+  ULONG Units;
+  LONG LogicalMin, LogicalMax;
+  LONG PhysicalMin, PhysicalMax;
+  __C89_NAMELESS union {
+    struct {
+      USAGE UsageMin, UsageMax;
+      USHORT StringMin, StringMax;
+      USHORT DesignatorMin, DesignatorMax;
+      USHORT DataIndexMin, DataIndexMax;
+    } Range;
+    struct {
+      USAGE Usage, Reserved1;
+      USHORT StringIndex, Reserved2;
+      USHORT DesignatorIndex, Reserved3;
+      USHORT DataIndex, Reserved4;
+    } NotRange;
+  };
+} HIDP_VALUE_CAPS,*PHIDP_VALUE_CAPS;
 
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_SetUsageValue(
-  HIDP_REPORT_TYPE  ReportType,
-  USAGE  UsagePage,
-  USHORT  LinkCollection,
-  USAGE  Usage,
-  ULONG  UsageValue,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
+typedef struct _HIDP_LINK_COLLECTION_NODE {
+  USAGE LinkUsage;
+  USAGE LinkUsagePage;
+  USHORT Parent;
+  USHORT NumberOfChildren;
+  USHORT NextSibling;
+  USHORT FirstChild;
+  ULONG CollectionType: 8;
+  ULONG IsAlias : 1;
+  ULONG Reserved: 23;
+  PVOID UserContext;
+} HIDP_LINK_COLLECTION_NODE,*PHIDP_LINK_COLLECTION_NODE;
 
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_SetUsageValueArray(
-  HIDP_REPORT_TYPE  ReportType,
-  USAGE  UsagePage,
-  USHORT  LinkCollection,
-  USAGE  Usage,
-  PCHAR  UsageValue,
-  USHORT  UsageValueByteLength,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
+typedef struct _HIDP_CAPS {
+  USAGE Usage;
+  USAGE UsagePage;
+  USHORT InputReportByteLength;
+  USHORT OutputReportByteLength;
+  USHORT FeatureReportByteLength;
+  USHORT Reserved[17];
+  USHORT NumberLinkCollectionNodes;
+  USHORT NumberInputButtonCaps;
+  USHORT NumberInputValueCaps;
+  USHORT NumberInputDataIndices;
+  USHORT NumberOutputButtonCaps;
+  USHORT NumberOutputValueCaps;
+  USHORT NumberOutputDataIndices;
+  USHORT NumberFeatureButtonCaps;
+  USHORT NumberFeatureValueCaps;
+  USHORT NumberFeatureDataIndices;
+} HIDP_CAPS,*PHIDP_CAPS;
 
-#if !defined(_HIDPI_NO_FUNCTION_MACROS_)
+typedef struct _HIDP_DATA {
+  USHORT DataIndex;
+  USHORT Reserved;
+  __C89_NAMELESS union {
+    ULONG RawValue;
+    BOOLEAN On;
+  };
+} HIDP_DATA,*PHIDP_DATA;
 
-/*
- * NTSTATUS
- * HidP_UnsetButtons(
- *   IN HIDP_REPORT_TYPE  ReportType,
- *   IN USAGE  UsagePage,
- *   IN USHORT  LinkCollection,
- *   IN PUSAGE  UsageList,
- *   IN OUT PULONG  UsageLength,
- *   IN PHIDP_PREPARSED_DATA  PreparsedData,
- *   IN OUT PCHAR  Report,
- *   IN ULONG  ReportLength);
- */
-#define HidP_UnsetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
-  HidP_UnsetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
+typedef struct _HIDP_UNKNOWN_TOKEN {
+  UCHAR Token;
+  UCHAR Reserved[3];
+  ULONG BitField;
+} HIDP_UNKNOWN_TOKEN,*PHIDP_UNKNOWN_TOKEN;
 
-#endif /* _HIDPI_NO_FUNCTION_MACROS_ */
+typedef struct _HIDP_EXTENDED_ATTRIBUTES {
+  UCHAR NumGlobalUnknowns;
+  UCHAR Reserved [3];
+  PHIDP_UNKNOWN_TOKEN GlobalUnknowns;
+  ULONG Data [1];
+} HIDP_EXTENDED_ATTRIBUTES,*PHIDP_EXTENDED_ATTRIBUTES;
 
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_UnsetUsages(
-  HIDP_REPORT_TYPE  ReportType,
-  USAGE  UsagePage,
-  USHORT  LinkCollection,
-  PUSAGE  UsageList,
-  PULONG  UsageLength,
-  PHIDP_PREPARSED_DATA  PreparsedData,
-  PCHAR  Report,
-  ULONG  ReportLength);
+typedef enum _HIDP_KEYBOARD_DIRECTION {
+  HidP_Keyboard_Break,
+  HidP_Keyboard_Make
+} HIDP_KEYBOARD_DIRECTION;
 
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_UsageAndPageListDifference(
-  PUSAGE_AND_PAGE  PreviousUsageList,
-  PUSAGE_AND_PAGE  CurrentUsageList,
-  PUSAGE_AND_PAGE  BreakUsageList,
-  PUSAGE_AND_PAGE  MakeUsageList,
-  ULONG  UsageListLength);
+typedef struct _HIDP_KEYBOARD_MODIFIER_STATE {
+  __C89_NAMELESS union {
+    struct {
+      ULONG LeftControl: 1;
+      ULONG LeftShift: 1;
+      ULONG LeftAlt: 1;
+      ULONG LeftGUI: 1;
+      ULONG RightControl: 1;
+      ULONG RightShift: 1;
+      ULONG RightAlt: 1;
+      ULONG RigthGUI: 1;
+      ULONG CapsLock: 1;
+      ULONG ScollLock: 1;
+      ULONG NumLock: 1;
+      ULONG Reserved: 21;
+    };
+    ULONG ul;
+  };
+} HIDP_KEYBOARD_MODIFIER_STATE,*PHIDP_KEYBOARD_MODIFIER_STATE;
+
+typedef BOOLEAN (*PHIDP_INSERT_SCANCODES) (PVOID Context, PCHAR NewScanCodes, 
ULONG Length);
+
+NTSTATUS NTAPI HidP_GetCaps (PHIDP_PREPARSED_DATA PreparsedData, PHIDP_CAPS 
Capabilities);
+NTSTATUS NTAPI HidP_GetLinkCollectionNodes (PHIDP_LINK_COLLECTION_NODE 
LinkCollectionNodes, PULONG LinkCollectionNodesLength, PHIDP_PREPARSED_DATA 
PreparsedData);
+NTSTATUS NTAPI HidP_GetSpecificButtonCaps (HIDP_REPORT_TYPE ReportType, USAGE 
UsagePage, USHORT LinkCollection, USAGE Usage, PHIDP_BUTTON_CAPS ButtonCaps, 
PUSHORT ButtonCapsLength, PHIDP_PREPARSED_DATA PreparsedData);
+NTSTATUS NTAPI HidP_GetButtonCaps (HIDP_REPORT_TYPE ReportType, 
PHIDP_BUTTON_CAPS ButtonCaps, PUSHORT ButtonCapsLength, PHIDP_PREPARSED_DATA 
PreparsedData);
+NTSTATUS NTAPI HidP_GetSpecificValueCaps (HIDP_REPORT_TYPE ReportType, USAGE 
UsagePage, USHORT LinkCollection, USAGE Usage, PHIDP_VALUE_CAPS ValueCaps, 
PUSHORT ValueCapsLength, PHIDP_PREPARSED_DATA PreparsedData);
+NTSTATUS NTAPI HidP_GetValueCaps (HIDP_REPORT_TYPE ReportType, 
PHIDP_VALUE_CAPS ValueCaps, PUSHORT ValueCapsLength, PHIDP_PREPARSED_DATA 
PreparsedData);
+NTSTATUS NTAPI HidP_GetExtendedAttributes (HIDP_REPORT_TYPE ReportType, USHORT 
DataIndex, PHIDP_PREPARSED_DATA PreparsedData, PHIDP_EXTENDED_ATTRIBUTES 
Attributes, PULONG LengthAttributes);
+NTSTATUS NTAPI HidP_InitializeReportForID (HIDP_REPORT_TYPE ReportType, UCHAR 
ReportID, PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength);
+NTSTATUS NTAPI HidP_SetData (HIDP_REPORT_TYPE ReportType, PHIDP_DATA DataList, 
PULONG DataLength, PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG 
ReportLength);
+NTSTATUS NTAPI HidP_GetData (HIDP_REPORT_TYPE ReportType, PHIDP_DATA DataList, 
PULONG DataLength, PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG 
ReportLength);
+ULONG NTAPI HidP_MaxDataListLength (HIDP_REPORT_TYPE ReportType, 
PHIDP_PREPARSED_DATA PreparsedData);
+NTSTATUS NTAPI HidP_SetUsages (HIDP_REPORT_TYPE ReportType, USAGE UsagePage, 
USHORT LinkCollection, PUSAGE UsageList, PULONG UsageLength, 
PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength);
+NTSTATUS NTAPI HidP_UnsetUsages (HIDP_REPORT_TYPE ReportType, USAGE UsagePage, 
USHORT LinkCollection, PUSAGE UsageList, PULONG UsageLength, 
PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength);
+NTSTATUS NTAPI HidP_GetUsages (HIDP_REPORT_TYPE ReportType, USAGE UsagePage, 
USHORT LinkCollection, PUSAGE UsageList, PULONG UsageLength, 
PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength);
+NTSTATUS NTAPI HidP_GetUsagesEx (HIDP_REPORT_TYPE ReportType, USHORT 
LinkCollection, PUSAGE_AND_PAGE ButtonList, ULONG *UsageLength, 
PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength);
+ULONG NTAPI HidP_MaxUsageListLength (HIDP_REPORT_TYPE ReportType, USAGE 
UsagePage, PHIDP_PREPARSED_DATA PreparsedData);
+NTSTATUS NTAPI HidP_SetUsageValue (HIDP_REPORT_TYPE ReportType, USAGE 
UsagePage, USHORT LinkCollection, USAGE Usage, ULONG UsageValue, 
PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength);
+NTSTATUS NTAPI HidP_SetScaledUsageValue (HIDP_REPORT_TYPE ReportType, USAGE 
UsagePage, USHORT LinkCollection, USAGE Usage, LONG UsageValue, 
PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength);
+NTSTATUS NTAPI HidP_SetUsageValueArray (HIDP_REPORT_TYPE ReportType, USAGE 
UsagePage, USHORT LinkCollection, USAGE Usage, PCHAR UsageValue, USHORT 
UsageValueByteLength, PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG 
ReportLength);
+NTSTATUS NTAPI HidP_GetUsageValue (HIDP_REPORT_TYPE ReportType, USAGE 
UsagePage, USHORT LinkCollection, USAGE Usage, PULONG UsageValue, 
PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength);
+NTSTATUS NTAPI HidP_GetScaledUsageValue (HIDP_REPORT_TYPE ReportType, USAGE 
UsagePage, USHORT LinkCollection, USAGE Usage, PLONG UsageValue, 
PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength);
+NTSTATUS NTAPI HidP_GetUsageValueArray (HIDP_REPORT_TYPE ReportType, USAGE 
UsagePage, USHORT LinkCollection, USAGE Usage, PCHAR UsageValue, USHORT 
UsageValueByteLength, PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG 
ReportLength);
+NTSTATUS NTAPI HidP_UsageListDifference (PUSAGE PreviousUsageList, PUSAGE 
CurrentUsageList, PUSAGE BreakUsageList, PUSAGE MakeUsageList, ULONG 
UsageListLength);
+NTSTATUS NTAPI HidP_UsageAndPageListDifference (PUSAGE_AND_PAGE 
PreviousUsageList, PUSAGE_AND_PAGE CurrentUsageList, PUSAGE_AND_PAGE 
BreakUsageList, PUSAGE_AND_PAGE MakeUsageList, ULONG UsageListLength);
+NTSTATUS NTAPI HidP_TranslateUsageAndPagesToI8042ScanCodes (PUSAGE_AND_PAGE 
ChangedUsageList, ULONG UsageListLength, HIDP_KEYBOARD_DIRECTION KeyAction, 
PHIDP_KEYBOARD_MODIFIER_STATE ModifierState, PHIDP_INSERT_SCANCODES 
InsertCodesProcedure, PVOID InsertCodesContext);
+NTSTATUS NTAPI HidP_TranslateUsagesToI8042ScanCodes (PUSAGE ChangedUsageList, 
ULONG UsageListLength, HIDP_KEYBOARD_DIRECTION KeyAction, 
PHIDP_KEYBOARD_MODIFIER_STATE ModifierState, PHIDP_INSERT_SCANCODES 
InsertCodesProcedure, PVOID InsertCodesContext);
+
+#ifndef FACILITY_HID_ERROR_CODE
+#define FACILITY_HID_ERROR_CODE 0x11
+#endif
 
-HIDAPI
-NTSTATUS
-NTAPI
-HidP_UsageListDifference(
-  PUSAGE  PreviousUsageList,
-  PUSAGE  CurrentUsageList,
-  PUSAGE  BreakUsageList,
-  PUSAGE  MakeUsageList,
-  ULONG  UsageListLength);
+#define HIDP_ERROR_CODES(SEV, CODE) ((NTSTATUS) (((SEV) << 28) | 
(FACILITY_HID_ERROR_CODE << 16) | (CODE)))
+
+#define HIDP_STATUS_SUCCESS (HIDP_ERROR_CODES (0x0, 0))
+#define HIDP_STATUS_NULL (HIDP_ERROR_CODES (0x8, 1))
+#define HIDP_STATUS_INVALID_PREPARSED_DATA (HIDP_ERROR_CODES (0xc, 1))
+#define HIDP_STATUS_INVALID_REPORT_TYPE (HIDP_ERROR_CODES (0xc, 2))
+#define HIDP_STATUS_INVALID_REPORT_LENGTH (HIDP_ERROR_CODES (0xc, 3))
+#define HIDP_STATUS_USAGE_NOT_FOUND (HIDP_ERROR_CODES (0xc, 4))
+#define HIDP_STATUS_VALUE_OUT_OF_RANGE (HIDP_ERROR_CODES (0xc, 5))
+#define HIDP_STATUS_BAD_LOG_PHY_VALUES (HIDP_ERROR_CODES (0xc, 6))
+#define HIDP_STATUS_BUFFER_TOO_SMALL (HIDP_ERROR_CODES (0xc, 7))
+#define HIDP_STATUS_INTERNAL_ERROR (HIDP_ERROR_CODES (0xc, 8))
+#define HIDP_STATUS_I8042_TRANS_UNKNOWN (HIDP_ERROR_CODES (0xc, 9))
+#define HIDP_STATUS_INCOMPATIBLE_REPORT_ID (HIDP_ERROR_CODES (0xc, 0xa))
+#define HIDP_STATUS_NOT_VALUE_ARRAY (HIDP_ERROR_CODES (0xc, 0xb))
+#define HIDP_STATUS_IS_VALUE_ARRAY (HIDP_ERROR_CODES (0xc, 0xc))
+#define HIDP_STATUS_DATA_INDEX_NOT_FOUND (HIDP_ERROR_CODES (0xc, 0xd))
+#define HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE (HIDP_ERROR_CODES (0xc, 0xe))
+#define HIDP_STATUS_BUTTON_NOT_PRESSED (HIDP_ERROR_CODES (0xc, 0xf))
+#define HIDP_STATUS_REPORT_DOES_NOT_EXIST (HIDP_ERROR_CODES (0xc, 0x10))
+#define HIDP_STATUS_NOT_IMPLEMENTED (HIDP_ERROR_CODES (0xc, 0x20))
+
+#define HIDP_STATUS_I8242_TRANS_UNKNOWN HIDP_STATUS_I8042_TRANS_UNKNOWN
+
+#include <poppack.h>
 
-#ifdef __cplusplus
-}
 #endif
-
-#endif /* __HIDPI_H */
+#endif
diff --git a/mingw-w64-headers/include/hidsdi.h 
b/mingw-w64-headers/include/hidsdi.h
index ea7c3b6..7ba1a3e 100644
--- a/mingw-w64-headers/include/hidsdi.h
+++ b/mingw-w64-headers/include/hidsdi.h
@@ -5,6 +5,7 @@
  *
  * Contributors:
  *   Created by Simon Josefsson <si...@josefsson.org>
+ *   Extended by Kai Tietz
  *
  * THIS SOFTWARE IS NOT COPYRIGHTED
  *
@@ -18,42 +19,54 @@
  *
  */
 
-#ifndef __HIDSDI_H
-#define __HIDSDI_H
+#include <winapifamily.h>
 
-#include "hidpi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
+#ifndef _HIDSDI_H
+#define _HIDSDI_H
 
-  /* http://msdn.microsoft.com/en-us/library/ff538900%28v=VS.85%29.aspx */
-HIDAPI BOOLEAN NTAPI HidD_GetAttributes(HANDLE HidDeviceObject, 
PHIDD_ATTRIBUTES Attributes);
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
 
-  /* http://msdn.microsoft.com/en-us/library/ff538910%28v=VS.85%29.aspx */
-HIDAPI BOOLEAN NTAPI HidD_GetFeature(HANDLE HidDeviceObject, PVOID 
ReportBuffer, ULONG ReportBufferLength);
+#include <pshpack4.h>
 
-  /* http://msdn.microsoft.com/en-us/library/ff539684%28v=VS.85%29.aspx */
-HIDAPI BOOLEAN NTAPI HidD_SetFeature(HANDLE HidDeviceObject, PVOID 
ReportBuffer, ULONG ReportBufferLength);
+typedef LONG NTSTATUS;
 
-/* http://msdn.microsoft.com/en-us/library/ff538924(v=vs.85).aspx */
-HIDAPI VOID NTAPI HidD_GetHidGuid(LPGUID HidGuid);
+#include "hidusage.h"
+#include "hidpi.h"
 
-/* 
http://msdn.microsoft.com/en-us/library/windows/hardware/ff538959(v=vs.85).aspx 
*/
-HIDAPI BOOLEAN NTAPI HidD_GetManufacturerString (HANDLE HidDeviceObject, PVOID 
Buffer, ULONG BufferLength);
+typedef struct _HIDD_CONFIGURATION {
+  PVOID cookie;
+  ULONG size;
+  ULONG RingBufferSize;
+} HIDD_CONFIGURATION,*PHIDD_CONFIGURATION;
 
-/* 
http://msdn.microsoft.com/en-us/library/windows/hardware/ff539681(v=vs.85).aspx 
*/
-HIDAPI BOOLEAN NTAPI HidD_GetProductString (HANDLE HidDeviceObject, PVOID 
Buffer, ULONG BufferLength);
+typedef struct _HIDD_ATTRIBUTES {
+  ULONG Size;
+  USHORT VendorID;
+  USHORT ProductID;
+  USHORT VersionNumber;
+} HIDD_ATTRIBUTES,*PHIDD_ATTRIBUTES;
 
-/* 
http://msdn.microsoft.com/en-us/library/windows/hardware/ff539686(v=vs.85).aspx 
*/
-HIDAPI BOOLEAN NTAPI HidD_SetNumInputBuffers (HANDLE HidDeviceObject, ULONG 
NumberBuffers);
+BOOLEAN NTAPI HidD_FlushQueue (HANDLE HidDeviceObject);
+BOOLEAN NTAPI HidD_FreePreparsedData (PHIDP_PREPARSED_DATA PreparsedData);
+BOOLEAN NTAPI HidD_GetAttributes (HANDLE HidDeviceObject, PHIDD_ATTRIBUTES 
Attributes);
+BOOLEAN NTAPI HidD_GetConfiguration (HANDLE HidDeviceObject, 
PHIDD_CONFIGURATION Configuration, ULONG ConfigurationLength);
+BOOLEAN NTAPI HidD_GetFeature (HANDLE HidDeviceObject, PVOID ReportBuffer, 
ULONG ReportBufferLength);
+void NTAPI HidD_GetHidGuid (LPGUID HidGuid);
+BOOLEAN NTAPI HidD_GetInputReport (HANDLE HidDeviceObject, PVOID ReportBuffer, 
ULONG ReportBufferLength);
+BOOLEAN NTAPI HidD_GetIndexedString (HANDLE HidDeviceObject, ULONG 
StringIndex, PVOID Buffer, ULONG BufferLength);
+BOOLEAN NTAPI HidD_GetManufacturerString (HANDLE HidDeviceObject, PVOID 
Buffer, ULONG BufferLength);
+BOOLEAN NTAPI HidD_GetMsGenreDescriptor (HANDLE HidDeviceObject, PVOID Buffer, 
ULONG BufferLength);
+BOOLEAN NTAPI HidD_GetNumInputBuffers (HANDLE HidDeviceObject, PULONG 
NumberBuffers);
+BOOLEAN NTAPI HidD_GetPhysicalDescriptor (HANDLE HidDeviceObject, PVOID 
Buffer, ULONG BufferLength);
+BOOLEAN NTAPI HidD_GetPreparsedData (HANDLE HidDeviceObject, 
PHIDP_PREPARSED_DATA *PreparsedData);
+BOOLEAN NTAPI HidD_GetProductString (HANDLE HidDeviceObject, PVOID Buffer, 
ULONG BufferLength);
+BOOLEAN NTAPI HidD_GetSerialNumberString (HANDLE HidDeviceObject, PVOID 
Buffer, ULONG BufferLength);
+BOOLEAN NTAPI HidD_SetConfiguration (HANDLE HidDeviceObject, 
PHIDD_CONFIGURATION Configuration, ULONG ConfigurationLength);
+BOOLEAN NTAPI HidD_SetFeature (HANDLE HidDeviceObject, PVOID ReportBuffer, 
ULONG ReportBufferLength);
+BOOLEAN NTAPI HidD_SetNumInputBuffers (HANDLE HidDeviceObject, ULONG 
NumberBuffers);
+BOOLEAN NTAPI HidD_SetOutputReport (HANDLE HidDeviceObject, PVOID 
ReportBuffer, ULONG ReportBufferLength);
 
-/* 
http://msdn.microsoft.com/en-us/library/windows/hardware/ff539675(v=vs.85).aspx 
*/
-HIDAPI BOOLEAN NTAPI HidD_GetNumInputBuffers (HANDLE HidDeviceObject, PULONG 
NumberBuffers);
+#include <poppack.h>
 
-#ifdef __cplusplus
-}
 #endif
-
-#endif /* __HIDSDI_H */
-
+#endif
diff --git a/mingw-w64-headers/include/hidusage.h 
b/mingw-w64-headers/include/hidusage.h
index 1827c19..265dd3b 100644
--- a/mingw-w64-headers/include/hidusage.h
+++ b/mingw-w64-headers/include/hidusage.h
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *   Created by Casper S. Hornstrup <cho...@users.sourceforge.net>
+ *   Extended by Kai Tietz
  *
  * THIS SOFTWARE IS NOT COPYRIGHTED
  *
@@ -20,187 +21,206 @@
  *
  */
 
-#ifndef __HIDUSAGE_H
-#define __HIDUSAGE_H
+#include <winapifamily.h>
 
-#ifdef __cplusplus
-extern "C" {
-#endif
+#ifndef __HIDUSAGE_H__
+#define __HIDUSAGE_H__
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+
+#define HID_USAGE_PAGE_UNDEFINED ((USAGE) 0x00)
+#define HID_USAGE_PAGE_GENERIC ((USAGE) 0x01)
+#define HID_USAGE_PAGE_SIMULATION ((USAGE) 0x02)
+#define HID_USAGE_PAGE_VR ((USAGE) 0x03)
+#define HID_USAGE_PAGE_SPORT ((USAGE) 0x04)
+#define HID_USAGE_PAGE_GAME ((USAGE) 0x05)
+#define HID_USAGE_PAGE_KEYBOARD ((USAGE) 0x07)
+#define HID_USAGE_PAGE_LED ((USAGE) 0x08)
+#define HID_USAGE_PAGE_BUTTON ((USAGE) 0x09)
+#define HID_USAGE_PAGE_ORDINAL ((USAGE) 0x0a)
+#define HID_USAGE_PAGE_TELEPHONY ((USAGE) 0x0b)
+#define HID_USAGE_PAGE_CONSUMER ((USAGE) 0x0c)
+#define HID_USAGE_PAGE_DIGITIZER ((USAGE) 0x0d)
+#define HID_USAGE_PAGE_UNICODE ((USAGE) 0x10)
+#define HID_USAGE_PAGE_ALPHANUMERIC ((USAGE) 0x14)
+#define HID_USAGE_PAGE_MICROSOFT_BLUETOOTH_HANDSFREE ((USAGE) 0xfff3)
+
+#define HID_USAGE_GENERIC_POINTER ((USAGE) 0x01)
+#define HID_USAGE_GENERIC_MOUSE ((USAGE) 0x02)
+#define HID_USAGE_GENERIC_JOYSTICK ((USAGE) 0x04)
+#define HID_USAGE_GENERIC_GAMEPAD ((USAGE) 0x05)
+#define HID_USAGE_GENERIC_KEYBOARD ((USAGE) 0x06)
+#define HID_USAGE_GENERIC_KEYPAD ((USAGE) 0x07)
+#define HID_USAGE_GENERIC_SYSTEM_CTL ((USAGE) 0x80)
 
-typedef USHORT USAGE, *PUSAGE;
-
-#define HID_USAGE_GENERIC_POINTER             ((USAGE) 0x01)
-#define HID_USAGE_GENERIC_MOUSE               ((USAGE) 0x02)
-#define HID_USAGE_GENERIC_JOYSTICK            ((USAGE) 0x04)
-#define HID_USAGE_GENERIC_GAMEPAD             ((USAGE) 0x05)
-#define HID_USAGE_GENERIC_KEYBOARD            ((USAGE) 0x06)
-#define HID_USAGE_GENERIC_KEYPAD              ((USAGE) 0x07)
-#define HID_USAGE_GENERIC_SYSTEM_CTL          ((USAGE) 0x80)
-#define HID_USAGE_GENERIC_X                   ((USAGE) 0x30)
-#define HID_USAGE_GENERIC_Y                   ((USAGE) 0x31)
-#define HID_USAGE_GENERIC_Z                   ((USAGE) 0x32)
-#define HID_USAGE_GENERIC_RX                  ((USAGE) 0x33)
-#define HID_USAGE_GENERIC_RY                  ((USAGE) 0x34)
-#define HID_USAGE_GENERIC_RZ                  ((USAGE) 0x35)
-#define HID_USAGE_GENERIC_SLIDER              ((USAGE) 0x36)
-#define HID_USAGE_GENERIC_DIAL                ((USAGE) 0x37)
-#define HID_USAGE_GENERIC_WHEEL               ((USAGE) 0x38)
-#define HID_USAGE_GENERIC_HATSWITCH           ((USAGE) 0x39)
-#define HID_USAGE_GENERIC_COUNTED_BUFFER      ((USAGE) 0x3A)
-#define HID_USAGE_GENERIC_BYTE_COUNT          ((USAGE) 0x3B)
-#define HID_USAGE_GENERIC_MOTION_WAKEUP       ((USAGE) 0x3C)
-#define HID_USAGE_GENERIC_VX                  ((USAGE) 0x40)
-#define HID_USAGE_GENERIC_VY                  ((USAGE) 0x41)
-#define HID_USAGE_GENERIC_VZ                  ((USAGE) 0x42)
-#define HID_USAGE_GENERIC_VBRX                ((USAGE) 0x43)
-#define HID_USAGE_GENERIC_VBRY                ((USAGE) 0x44)
-#define HID_USAGE_GENERIC_VBRZ                ((USAGE) 0x45)
-#define HID_USAGE_GENERIC_VNO                 ((USAGE) 0x46)
-#define HID_USAGE_GENERIC_SYSCTL_POWER        ((USAGE) 0x81)
-#define HID_USAGE_GENERIC_SYSCTL_SLEEP        ((USAGE) 0x82)
-#define HID_USAGE_GENERIC_SYSCTL_WAKE         ((USAGE) 0x83)
+#define HID_USAGE_GENERIC_X ((USAGE) 0x30)
+#define HID_USAGE_GENERIC_Y ((USAGE) 0x31)
+#define HID_USAGE_GENERIC_Z ((USAGE) 0x32)
+#define HID_USAGE_GENERIC_RX ((USAGE) 0x33)
+#define HID_USAGE_GENERIC_RY ((USAGE) 0x34)
+#define HID_USAGE_GENERIC_RZ ((USAGE) 0x35)
+#define HID_USAGE_GENERIC_SLIDER ((USAGE) 0x36)
+#define HID_USAGE_GENERIC_DIAL ((USAGE) 0x37)
+#define HID_USAGE_GENERIC_WHEEL ((USAGE) 0x38)
+#define HID_USAGE_GENERIC_HATSWITCH ((USAGE) 0x39)
+#define HID_USAGE_GENERIC_COUNTED_BUFFER ((USAGE) 0x3a)
+#define HID_USAGE_GENERIC_BYTE_COUNT ((USAGE) 0x3b)
+#define HID_USAGE_GENERIC_MOTION_WAKEUP ((USAGE) 0x3c)
+#define HID_USAGE_GENERIC_VX ((USAGE) 0x40)
+#define HID_USAGE_GENERIC_VY ((USAGE) 0x41)
+#define HID_USAGE_GENERIC_VZ ((USAGE) 0x42)
+#define HID_USAGE_GENERIC_VBRX ((USAGE) 0x43)
+#define HID_USAGE_GENERIC_VBRY ((USAGE) 0x44)
+#define HID_USAGE_GENERIC_VBRZ ((USAGE) 0x45)
+#define HID_USAGE_GENERIC_VNO ((USAGE) 0x46)
+#define HID_USAGE_GENERIC_SYSCTL_POWER ((USAGE) 0x81)
+#define HID_USAGE_GENERIC_SYSCTL_SLEEP ((USAGE) 0x82)
+#define HID_USAGE_GENERIC_SYSCTL_WAKE ((USAGE) 0x83)
 #define HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU ((USAGE) 0x84)
-#define HID_USAGE_GENERIC_SYSCTL_MAIN_MENU    ((USAGE) 0x85)
-#define HID_USAGE_GENERIC_SYSCTL_APP_MENU     ((USAGE) 0x86)
-#define HID_USAGE_GENERIC_SYSCTL_HELP_MENU    ((USAGE) 0x87)
-#define HID_USAGE_GENERIC_SYSCTL_MENU_EXIT    ((USAGE) 0x88)
-#define HID_USAGE_GENERIC_SYSCTL_MENU_SELECT  ((USAGE) 0x89)
-#define HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT   ((USAGE) 0x8A)
-#define HID_USAGE_GENERIC_SYSCTL_MENU_LEFT    ((USAGE) 0x8B)
-#define HID_USAGE_GENERIC_SYSCTL_MENU_UP      ((USAGE) 0x8C)
-#define HID_USAGE_GENERIC_SYSCTL_MENU_DOWN    ((USAGE) 0x8D)
-
-#define HID_USAGE_KEYBOARD_NOEVENT        ((USAGE) 0x00)
-#define HID_USAGE_KEYBOARD_ROLLOVER       ((USAGE) 0x01)
-#define HID_USAGE_KEYBOARD_POSTFAIL       ((USAGE) 0x02)
-#define HID_USAGE_KEYBOARD_UNDEFINED      ((USAGE) 0x03)
-#define HID_USAGE_KEYBOARD_aA             ((USAGE) 0x04)
-#define HID_USAGE_KEYBOARD_zZ             ((USAGE) 0x1D)
-#define HID_USAGE_KEYBOARD_ONE            ((USAGE) 0x1E)
-#define HID_USAGE_KEYBOARD_ZERO           ((USAGE) 0x27)
-#define HID_USAGE_KEYBOARD_LCTRL          ((USAGE) 0xE0)
-#define HID_USAGE_KEYBOARD_LSHFT          ((USAGE) 0xE1)
-#define HID_USAGE_KEYBOARD_LALT           ((USAGE) 0xE2)
-#define HID_USAGE_KEYBOARD_LGUI           ((USAGE) 0xE3)
-#define HID_USAGE_KEYBOARD_RCTRL          ((USAGE) 0xE4)
-#define HID_USAGE_KEYBOARD_RSHFT          ((USAGE) 0xE5)
-#define HID_USAGE_KEYBOARD_RALT           ((USAGE) 0xE6)
-#define HID_USAGE_KEYBOARD_RGUI           ((USAGE) 0xE7)
-#define HID_USAGE_KEYBOARD_SCROLL_LOCK    ((USAGE) 0x47)
-#define HID_USAGE_KEYBOARD_NUM_LOCK       ((USAGE) 0x53)
-#define HID_USAGE_KEYBOARD_CAPS_LOCK      ((USAGE) 0x39)
-#define HID_USAGE_KEYBOARD_F1             ((USAGE) 0x3A)
-#define HID_USAGE_KEYBOARD_F12            ((USAGE) 0x45)
-#define HID_USAGE_KEYBOARD_RETURN         ((USAGE) 0x28)
-#define HID_USAGE_KEYBOARD_ESCAPE         ((USAGE) 0x29)
-#define HID_USAGE_KEYBOARD_DELETE         ((USAGE) 0x2A)
-#define HID_USAGE_KEYBOARD_PRINT_SCREEN   ((USAGE) 0x46)
-
-#define HID_USAGE_LED_NUM_LOCK                  ((USAGE) 0x01)
-#define HID_USAGE_LED_CAPS_LOCK                 ((USAGE) 0x02)
-#define HID_USAGE_LED_SCROLL_LOCK               ((USAGE) 0x03)
-#define HID_USAGE_LED_COMPOSE                   ((USAGE) 0x04)
-#define HID_USAGE_LED_KANA                      ((USAGE) 0x05)
-#define HID_USAGE_LED_POWER                     ((USAGE) 0x06)
-#define HID_USAGE_LED_SHIFT                     ((USAGE) 0x07)
-#define HID_USAGE_LED_DO_NOT_DISTURB            ((USAGE) 0x08)
-#define HID_USAGE_LED_MUTE                      ((USAGE) 0x09)
-#define HID_USAGE_LED_TONE_ENABLE               ((USAGE) 0x0A)
-#define HID_USAGE_LED_HIGH_CUT_FILTER           ((USAGE) 0x0B)
-#define HID_USAGE_LED_LOW_CUT_FILTER            ((USAGE) 0x0C)
-#define HID_USAGE_LED_EQUALIZER_ENABLE          ((USAGE) 0x0D)
-#define HID_USAGE_LED_SOUND_FIELD_ON            ((USAGE) 0x0E)
-#define HID_USAGE_LED_SURROUND_FIELD_ON         ((USAGE) 0x0F)
-#define HID_USAGE_LED_REPEAT                    ((USAGE) 0x10)
-#define HID_USAGE_LED_STEREO                    ((USAGE) 0x11)
-#define HID_USAGE_LED_SAMPLING_RATE_DETECT      ((USAGE) 0x12)
-#define HID_USAGE_LED_SPINNING                  ((USAGE) 0x13)
-#define HID_USAGE_LED_CAV                       ((USAGE) 0x14)
-#define HID_USAGE_LED_CLV                       ((USAGE) 0x15)
-#define HID_USAGE_LED_RECORDING_FORMAT_DET      ((USAGE) 0x16)
-#define HID_USAGE_LED_OFF_HOOK                  ((USAGE) 0x17)
-#define HID_USAGE_LED_RING                      ((USAGE) 0x18)
-#define HID_USAGE_LED_MESSAGE_WAITING           ((USAGE) 0x19)
-#define HID_USAGE_LED_DATA_MODE                 ((USAGE) 0x1A)
-#define HID_USAGE_LED_BATTERY_OPERATION         ((USAGE) 0x1B)
-#define HID_USAGE_LED_BATTERY_OK                ((USAGE) 0x1C)
-#define HID_USAGE_LED_BATTERY_LOW               ((USAGE) 0x1D)
-#define HID_USAGE_LED_SPEAKER                   ((USAGE) 0x1E)
-#define HID_USAGE_LED_HEAD_SET                  ((USAGE) 0x1F)
-#define HID_USAGE_LED_HOLD                      ((USAGE) 0x20)
-#define HID_USAGE_LED_MICROPHONE                ((USAGE) 0x21)
-#define HID_USAGE_LED_COVERAGE                  ((USAGE) 0x22)
-#define HID_USAGE_LED_NIGHT_MODE                ((USAGE) 0x23)
-#define HID_USAGE_LED_SEND_CALLS                ((USAGE) 0x24)
-#define HID_USAGE_LED_CALL_PICKUP               ((USAGE) 0x25)
-#define HID_USAGE_LED_CONFERENCE                ((USAGE) 0x26)
-#define HID_USAGE_LED_STAND_BY                  ((USAGE) 0x27)
-#define HID_USAGE_LED_CAMERA_ON                 ((USAGE) 0x28)
-#define HID_USAGE_LED_CAMERA_OFF                ((USAGE) 0x29)
-#define HID_USAGE_LED_ON_LINE                   ((USAGE) 0x2A)
-#define HID_USAGE_LED_OFF_LINE                  ((USAGE) 0x2B)
-#define HID_USAGE_LED_BUSY                      ((USAGE) 0x2C)
-#define HID_USAGE_LED_READY                     ((USAGE) 0x2D)
-#define HID_USAGE_LED_PAPER_OUT                 ((USAGE) 0x2E)
-#define HID_USAGE_LED_PAPER_JAM                 ((USAGE) 0x2F)
-#define HID_USAGE_LED_REMOTE                    ((USAGE) 0x30)
-#define HID_USAGE_LED_FORWARD                   ((USAGE) 0x31)
-#define HID_USAGE_LED_REVERSE                   ((USAGE) 0x32)
-#define HID_USAGE_LED_STOP                      ((USAGE) 0x33)
-#define HID_USAGE_LED_REWIND                    ((USAGE) 0x34)
-#define HID_USAGE_LED_FAST_FORWARD              ((USAGE) 0x35)
-#define HID_USAGE_LED_PLAY                      ((USAGE) 0x36)
-#define HID_USAGE_LED_PAUSE                     ((USAGE) 0x37)
-#define HID_USAGE_LED_RECORD                    ((USAGE) 0x38)
-#define HID_USAGE_LED_ERROR                     ((USAGE) 0x39)
-#define HID_USAGE_LED_SELECTED_INDICATOR        ((USAGE) 0x3A)
-#define HID_USAGE_LED_IN_USE_INDICATOR          ((USAGE) 0x3B)
-#define HID_USAGE_LED_MULTI_MODE_INDICATOR      ((USAGE) 0x3C)
-#define HID_USAGE_LED_INDICATOR_ON              ((USAGE) 0x3D)
-#define HID_USAGE_LED_INDICATOR_FLASH           ((USAGE) 0x3E)
-#define HID_USAGE_LED_INDICATOR_SLOW_BLINK      ((USAGE) 0x3F)
-#define HID_USAGE_LED_INDICATOR_FAST_BLINK      ((USAGE) 0x40)
-#define HID_USAGE_LED_INDICATOR_OFF             ((USAGE) 0x41)
-#define HID_USAGE_LED_FLASH_ON_TIME             ((USAGE) 0x42)
-#define HID_USAGE_LED_SLOW_BLINK_ON_TIME        ((USAGE) 0x43)
-#define HID_USAGE_LED_SLOW_BLINK_OFF_TIME       ((USAGE) 0x44)
-#define HID_USAGE_LED_FAST_BLINK_ON_TIME        ((USAGE) 0x45)
-#define HID_USAGE_LED_FAST_BLINK_OFF_TIME       ((USAGE) 0x46)
-#define HID_USAGE_LED_INDICATOR_COLOR           ((USAGE) 0x47)
-#define HID_USAGE_LED_RED                       ((USAGE) 0x48)
-#define HID_USAGE_LED_GREEN                     ((USAGE) 0x49)
-#define HID_USAGE_LED_AMBER                     ((USAGE) 0x4A)
-#define HID_USAGE_LED_GENERIC_INDICATOR         ((USAGE) 0x3B)
-
-#define HID_USAGE_PAGE_UNDEFINED          ((USAGE) 0x00)
-#define HID_USAGE_PAGE_GENERIC            ((USAGE) 0x01)
-#define HID_USAGE_PAGE_SIMULATION         ((USAGE) 0x02)
-#define HID_USAGE_PAGE_VR                 ((USAGE) 0x03)
-#define HID_USAGE_PAGE_SPORT              ((USAGE) 0x04)
-#define HID_USAGE_PAGE_GAME               ((USAGE) 0x05)
-#define HID_USAGE_PAGE_KEYBOARD           ((USAGE) 0x07)
-#define HID_USAGE_PAGE_LED                ((USAGE) 0x08)
-#define HID_USAGE_PAGE_BUTTON             ((USAGE) 0x09)
-#define HID_USAGE_PAGE_ORDINAL            ((USAGE) 0x0A)
-#define HID_USAGE_PAGE_TELEPHONY          ((USAGE) 0x0B)
-#define HID_USAGE_PAGE_CONSUMER           ((USAGE) 0x0C)
-#define HID_USAGE_PAGE_DIGITIZER          ((USAGE) 0x0D)
-#define HID_USAGE_PAGE_UNICODE            ((USAGE) 0x10)
-#define HID_USAGE_PAGE_ALPHANUMERIC       ((USAGE) 0x14)
-
-#define HID_USAGE_TELEPHONY_PHONE               ((USAGE) 0x01)
-#define HID_USAGE_TELEPHONY_ANSWERING_MACHINE   ((USAGE) 0x02)
-#define HID_USAGE_TELEPHONY_MESSAGE_CONTROLS    ((USAGE) 0x03)
-#define HID_USAGE_TELEPHONY_HANDSET             ((USAGE) 0x04)
-#define HID_USAGE_TELEPHONY_HEADSET             ((USAGE) 0x05)
-#define HID_USAGE_TELEPHONY_KEYPAD              ((USAGE) 0x06)
+#define HID_USAGE_GENERIC_SYSCTL_MAIN_MENU ((USAGE) 0x85)
+#define HID_USAGE_GENERIC_SYSCTL_APP_MENU ((USAGE) 0x86)
+#define HID_USAGE_GENERIC_SYSCTL_HELP_MENU ((USAGE) 0x87)
+#define HID_USAGE_GENERIC_SYSCTL_MENU_EXIT ((USAGE) 0x88)
+#define HID_USAGE_GENERIC_SYSCTL_MENU_SELECT ((USAGE) 0x89)
+#define HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT ((USAGE) 0x8a)
+#define HID_USAGE_GENERIC_SYSCTL_MENU_LEFT ((USAGE) 0x8b)
+#define HID_USAGE_GENERIC_SYSCTL_MENU_UP ((USAGE) 0x8c)
+#define HID_USAGE_GENERIC_SYSCTL_MENU_DOWN ((USAGE) 0x8d)
+#define HID_USAGE_SIMULATION_RUDDER ((USAGE) 0xba)
+#define HID_USAGE_SIMULATION_THROTTLE ((USAGE) 0xbb)
+
+#define HID_USAGE_KEYBOARD_NOEVENT ((USAGE) 0x00)
+#define HID_USAGE_KEYBOARD_ROLLOVER ((USAGE) 0x01)
+#define HID_USAGE_KEYBOARD_POSTFAIL ((USAGE) 0x02)
+#define HID_USAGE_KEYBOARD_UNDEFINED ((USAGE) 0x03)
+#define HID_USAGE_KEYBOARD_aA ((USAGE) 0x04)
+#define HID_USAGE_KEYBOARD_zZ ((USAGE) 0x1d)
+#define HID_USAGE_KEYBOARD_ONE ((USAGE) 0x1e)
+#define HID_USAGE_KEYBOARD_ZERO ((USAGE) 0x27)
+#define HID_USAGE_KEYBOARD_LCTRL ((USAGE) 0xe0)
+#define HID_USAGE_KEYBOARD_LSHFT ((USAGE) 0xe1)
+#define HID_USAGE_KEYBOARD_LALT ((USAGE) 0xe2)
+#define HID_USAGE_KEYBOARD_LGUI ((USAGE) 0xe3)
+#define HID_USAGE_KEYBOARD_RCTRL ((USAGE) 0xe4)
+#define HID_USAGE_KEYBOARD_RSHFT ((USAGE) 0xe5)
+#define HID_USAGE_KEYBOARD_RALT ((USAGE) 0xe6)
+#define HID_USAGE_KEYBOARD_RGUI ((USAGE) 0xe7)
+#define HID_USAGE_KEYBOARD_SCROLL_LOCK ((USAGE) 0x47)
+#define HID_USAGE_KEYBOARD_NUM_LOCK ((USAGE) 0x53)
+#define HID_USAGE_KEYBOARD_CAPS_LOCK ((USAGE) 0x39)
+
+#define HID_USAGE_KEYBOARD_F1 ((USAGE) 0x3a)
+#define HID_USAGE_KEYBOARD_F12 ((USAGE) 0x45)
+
+#define HID_USAGE_KEYBOARD_RETURN ((USAGE) 0x28)
+#define HID_USAGE_KEYBOARD_ESCAPE ((USAGE) 0x29)
+#define HID_USAGE_KEYBOARD_DELETE ((USAGE) 0x2a)
+#define HID_USAGE_KEYBOARD_PRINT_SCREEN ((USAGE) 0x46)
+
+#define HID_USAGE_LED_NUM_LOCK ((USAGE) 0x01)
+#define HID_USAGE_LED_CAPS_LOCK ((USAGE) 0x02)
+#define HID_USAGE_LED_SCROLL_LOCK ((USAGE) 0x03)
+#define HID_USAGE_LED_COMPOSE ((USAGE) 0x04)
+#define HID_USAGE_LED_KANA ((USAGE) 0x05)
+#define HID_USAGE_LED_POWER ((USAGE) 0x06)
+#define HID_USAGE_LED_SHIFT ((USAGE) 0x07)
+#define HID_USAGE_LED_DO_NOT_DISTURB ((USAGE) 0x08)
+#define HID_USAGE_LED_MUTE ((USAGE) 0x09)
+#define HID_USAGE_LED_TONE_ENABLE ((USAGE) 0x0a)
+#define HID_USAGE_LED_HIGH_CUT_FILTER ((USAGE) 0x0b)
+#define HID_USAGE_LED_LOW_CUT_FILTER ((USAGE) 0x0c)
+#define HID_USAGE_LED_EQUALIZER_ENABLE ((USAGE) 0x0d)
+#define HID_USAGE_LED_SOUND_FIELD_ON ((USAGE) 0x0e)
+#define HID_USAGE_LED_SURROUND_FIELD_ON ((USAGE) 0x0f)
+#define HID_USAGE_LED_REPEAT ((USAGE) 0x10)
+#define HID_USAGE_LED_STEREO ((USAGE) 0x11)
+#define HID_USAGE_LED_SAMPLING_RATE_DETECT ((USAGE) 0x12)
+#define HID_USAGE_LED_SPINNING ((USAGE) 0x13)
+#define HID_USAGE_LED_CAV ((USAGE) 0x14)
+#define HID_USAGE_LED_CLV ((USAGE) 0x15)
+#define HID_USAGE_LED_RECORDING_FORMAT_DET ((USAGE) 0x16)
+#define HID_USAGE_LED_OFF_HOOK ((USAGE) 0x17)
+#define HID_USAGE_LED_RING ((USAGE) 0x18)
+#define HID_USAGE_LED_MESSAGE_WAITING ((USAGE) 0x19)
+#define HID_USAGE_LED_DATA_MODE ((USAGE) 0x1a)
+#define HID_USAGE_LED_BATTERY_OPERATION ((USAGE) 0x1b)
+#define HID_USAGE_LED_BATTERY_OK ((USAGE) 0x1c)
+#define HID_USAGE_LED_BATTERY_LOW ((USAGE) 0x1d)
+#define HID_USAGE_LED_SPEAKER ((USAGE) 0x1e)
+#define HID_USAGE_LED_HEAD_SET ((USAGE) 0x1f)
+#define HID_USAGE_LED_HOLD ((USAGE) 0x20)
+#define HID_USAGE_LED_MICROPHONE ((USAGE) 0x21)
+#define HID_USAGE_LED_COVERAGE ((USAGE) 0x22)
+#define HID_USAGE_LED_NIGHT_MODE ((USAGE) 0x23)
+#define HID_USAGE_LED_SEND_CALLS ((USAGE) 0x24)
+#define HID_USAGE_LED_CALL_PICKUP ((USAGE) 0x25)
+#define HID_USAGE_LED_CONFERENCE ((USAGE) 0x26)
+#define HID_USAGE_LED_STAND_BY ((USAGE) 0x27)
+#define HID_USAGE_LED_CAMERA_ON ((USAGE) 0x28)
+#define HID_USAGE_LED_CAMERA_OFF ((USAGE) 0x29)
+#define HID_USAGE_LED_ON_LINE ((USAGE) 0x2a)
+#define HID_USAGE_LED_OFF_LINE ((USAGE) 0x2b)
+#define HID_USAGE_LED_BUSY ((USAGE) 0x2c)
+#define HID_USAGE_LED_READY ((USAGE) 0x2d)
+#define HID_USAGE_LED_PAPER_OUT ((USAGE) 0x2e)
+#define HID_USAGE_LED_PAPER_JAM ((USAGE) 0x2f)
+#define HID_USAGE_LED_REMOTE ((USAGE) 0x30)
+#define HID_USAGE_LED_FORWARD ((USAGE) 0x31)
+#define HID_USAGE_LED_REVERSE ((USAGE) 0x32)
+#define HID_USAGE_LED_STOP ((USAGE) 0x33)
+#define HID_USAGE_LED_REWIND ((USAGE) 0x34)
+#define HID_USAGE_LED_FAST_FORWARD ((USAGE) 0x35)
+#define HID_USAGE_LED_PLAY ((USAGE) 0x36)
+#define HID_USAGE_LED_PAUSE ((USAGE) 0x37)
+#define HID_USAGE_LED_RECORD ((USAGE) 0x38)
+#define HID_USAGE_LED_ERROR ((USAGE) 0x39)
+#define HID_USAGE_LED_SELECTED_INDICATOR ((USAGE) 0x3a)
+#define HID_USAGE_LED_IN_USE_INDICATOR ((USAGE) 0x3b)
+#define HID_USAGE_LED_MULTI_MODE_INDICATOR ((USAGE) 0x3c)
+#define HID_USAGE_LED_INDICATOR_ON ((USAGE) 0x3d)
+#define HID_USAGE_LED_INDICATOR_FLASH ((USAGE) 0x3e)
+#define HID_USAGE_LED_INDICATOR_SLOW_BLINK ((USAGE) 0x3f)
+#define HID_USAGE_LED_INDICATOR_FAST_BLINK ((USAGE) 0x40)
+#define HID_USAGE_LED_INDICATOR_OFF ((USAGE) 0x41)
+#define HID_USAGE_LED_FLASH_ON_TIME ((USAGE) 0x42)
+#define HID_USAGE_LED_SLOW_BLINK_ON_TIME ((USAGE) 0x43)
+#define HID_USAGE_LED_SLOW_BLINK_OFF_TIME ((USAGE) 0x44)
+#define HID_USAGE_LED_FAST_BLINK_ON_TIME ((USAGE) 0x45)
+#define HID_USAGE_LED_FAST_BLINK_OFF_TIME ((USAGE) 0x46)
+#define HID_USAGE_LED_INDICATOR_COLOR ((USAGE) 0x47)
+#define HID_USAGE_LED_RED ((USAGE) 0x48)
+#define HID_USAGE_LED_GREEN ((USAGE) 0x49)
+#define HID_USAGE_LED_AMBER ((USAGE) 0x4a)
+#define HID_USAGE_LED_GENERIC_INDICATOR ((USAGE) 0x4b)
+
+#define HID_USAGE_TELEPHONY_PHONE ((USAGE) 0x01)
+#define HID_USAGE_TELEPHONY_ANSWERING_MACHINE ((USAGE) 0x02)
+#define HID_USAGE_TELEPHONY_MESSAGE_CONTROLS ((USAGE) 0x03)
+#define HID_USAGE_TELEPHONY_HANDSET ((USAGE) 0x04)
+#define HID_USAGE_TELEPHONY_HEADSET ((USAGE) 0x05)
+#define HID_USAGE_TELEPHONY_KEYPAD ((USAGE) 0x06)
 #define HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON ((USAGE) 0x07)
+#define HID_USAGE_TELEPHONY_REDIAL ((USAGE) 0x24)
+#define HID_USAGE_TELEPHONY_TRANSFER ((USAGE) 0x25)
+#define HID_USAGE_TELEPHONY_DROP ((USAGE) 0x26)
+#define HID_USAGE_TELEPHONY_LINE ((USAGE) 0x2a)
+#define HID_USAGE_TELEPHONY_RING_ENABLE ((USAGE) 0x2d)
+#define HID_USAGE_TELEPHONY_SEND ((USAGE) 0x31)
+#define HID_USAGE_TELEPHONY_KEYPAD_0 ((USAGE) 0xb0)
+#define HID_USAGE_TELEPHONY_KEYPAD_D ((USAGE) 0xbf)
+#define HID_USAGE_TELEPHONY_HOST_AVAILABLE ((USAGE) 0xf1)
 
-#define HID_USAGE_SIMULATION_RUDDER       ((USAGE) 0xBA)
-#define HID_USAGE_SIMULATION_THROTTLE     ((USAGE) 0xBB)
+#define HID_USAGE_MS_BTH_HF_DIALNUMBER ((USAGE) 0x21)
+#define HID_USAGE_MS_BTH_HF_DIALMEMORY ((USAGE) 0x22)
 
-#ifdef __cplusplus
-}
-#endif
+#define HID_USAGE_CONSUMERCTRL ((USAGE)0x01)
+
+#define HID_USAGE_DIGITIZER_PEN ((USAGE)0x02)
+#define HID_USAGE_DIGITIZER_IN_RANGE ((USAGE)0x32)
+#define HID_USAGE_DIGITIZER_TIP_SWITCH ((USAGE)0x42)
+#define HID_USAGE_DIGITIZER_BARREL_SWITCH ((USAGE)0x44)
 
-#endif /* __HIDUSAGE_H */
+typedef USHORT USAGE,*PUSAGE;
+
+#endif
+#endif
-- 
1.7.9

From 4f21daa6db6153451f6dc93c5b9cd128e41eff2f Mon Sep 17 00:00:00 2001
From: Kai Tietz <ktiet...@googlemail.com>
Date: Fri, 29 Aug 2014 15:57:14 +0200
Subject: Add monitor-configuration-API

---
 .../include/highlevelmonitorconfigurationapi.h     |  115 ++++++++++++++++++++
 .../include/physicalmonitorenumerationapi.h        |   43 ++++++++
 2 files changed, 158 insertions(+), 0 deletions(-)
 create mode 100644 mingw-w64-headers/include/highlevelmonitorconfigurationapi.h
 create mode 100644 mingw-w64-headers/include/physicalmonitorenumerationapi.h

diff --git a/mingw-w64-headers/include/highlevelmonitorconfigurationapi.h 
b/mingw-w64-headers/include/highlevelmonitorconfigurationapi.h
new file mode 100644
index 0000000..a7112e0
--- /dev/null
+++ b/mingw-w64-headers/include/highlevelmonitorconfigurationapi.h
@@ -0,0 +1,115 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+#include <winapifamily.h>
+
+#ifndef HighLevelMonitorConfigurationAPI_h
+#define HighLevelMonitorConfigurationAPI_h
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+
+#include <windows.h>
+#include <physicalmonitorenumerationapi.h>
+
+#define MC_CAPS_NONE 0x00000000
+#define MC_CAPS_MONITOR_TECHNOLOGY_TYPE 0x00000001
+#define MC_CAPS_BRIGHTNESS 0x00000002
+#define MC_CAPS_CONTRAST 0x00000004
+#define MC_CAPS_COLOR_TEMPERATURE 0x00000008
+#define MC_CAPS_RED_GREEN_BLUE_GAIN 0x00000010
+#define MC_CAPS_RED_GREEN_BLUE_DRIVE 0x00000020
+#define MC_CAPS_DEGAUSS 0x00000040
+#define MC_CAPS_DISPLAY_AREA_POSITION 0x00000080
+#define MC_CAPS_DISPLAY_AREA_SIZE 0x00000100
+#define MC_CAPS_RESTORE_FACTORY_DEFAULTS 0x00000400
+#define MC_CAPS_RESTORE_FACTORY_COLOR_DEFAULTS 0x00000800
+#define MC_RESTORE_FACTORY_DEFAULTS_ENABLES_MONITOR_SETTINGS 0x00001000
+
+#define MC_SUPPORTED_COLOR_TEMPERATURE_NONE 0x00000000
+#define MC_SUPPORTED_COLOR_TEMPERATURE_4000K 0x00000001
+#define MC_SUPPORTED_COLOR_TEMPERATURE_5000K 0x00000002
+#define MC_SUPPORTED_COLOR_TEMPERATURE_6500K 0x00000004
+#define MC_SUPPORTED_COLOR_TEMPERATURE_7500K 0x00000008
+#define MC_SUPPORTED_COLOR_TEMPERATURE_8200K 0x00000010
+#define MC_SUPPORTED_COLOR_TEMPERATURE_9300K 0x00000020
+#define MC_SUPPORTED_COLOR_TEMPERATURE_10000K 0x00000040
+#define MC_SUPPORTED_COLOR_TEMPERATURE_11500K 0x00000080
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  typedef enum _MC_DISPLAY_TECHNOLOGY_TYPE {
+    MC_SHADOW_MASK_CATHODE_RAY_TUBE,
+    MC_APERTURE_GRILL_CATHODE_RAY_TUBE,
+    MC_THIN_FILM_TRANSISTOR,
+    MC_LIQUID_CRYSTAL_ON_SILICON,
+    MC_PLASMA,
+    MC_ORGANIC_LIGHT_EMITTING_DIODE,
+    MC_ELECTROLUMINESCENT,
+    MC_MICROELECTROMECHANICAL,
+    MC_FIELD_EMISSION_DEVICE
+  } MC_DISPLAY_TECHNOLOGY_TYPE,*LPMC_DISPLAY_TECHNOLOGY_TYPE;
+
+  typedef enum _MC_DRIVE_TYPE {
+    MC_RED_DRIVE,
+    MC_GREEN_DRIVE,
+    MC_BLUE_DRIVE
+  } MC_DRIVE_TYPE;
+
+  typedef enum _MC_GAIN_TYPE {
+    MC_RED_GAIN,
+    MC_GREEN_GAIN,
+    MC_BLUE_GAIN
+  } MC_GAIN_TYPE;
+
+  typedef enum _MC_POSITION_TYPE {
+    MC_HORIZONTAL_POSITION,
+    MC_VERTICAL_POSITION
+  } MC_POSITION_TYPE;
+
+  typedef enum _MC_SIZE_TYPE {
+    MC_WIDTH,
+    MC_HEIGHT
+  } MC_SIZE_TYPE;
+
+  typedef enum _MC_COLOR_TEMPERATURE {
+    MC_COLOR_TEMPERATURE_UNKNOWN,
+    MC_COLOR_TEMPERATURE_4000K,
+    MC_COLOR_TEMPERATURE_5000K,
+    MC_COLOR_TEMPERATURE_6500K,
+    MC_COLOR_TEMPERATURE_7500K,
+    MC_COLOR_TEMPERATURE_8200K,
+    MC_COLOR_TEMPERATURE_9300K,
+    MC_COLOR_TEMPERATURE_10000K,
+    MC_COLOR_TEMPERATURE_11500K
+  } MC_COLOR_TEMPERATURE,*LPMC_COLOR_TEMPERATURE;
+
+  _BOOL WINAPI DegaussMonitor (HANDLE hMonitor);
+  _BOOL WINAPI GetMonitorBrightness (HANDLE hMonitor, LPDWORD 
pdwMinimumBrightness, LPDWORD pdwCurrentBrightness, LPDWORD 
pdwMaximumBrightness);
+  _BOOL WINAPI GetMonitorCapabilities (HANDLE hMonitor, LPDWORD 
pdwMonitorCapabilities, LPDWORD pdwSupportedColorTemperatures);
+  _BOOL WINAPI GetMonitorColorTemperature (HANDLE hMonitor, 
LPMC_COLOR_TEMPERATURE pctCurrentColorTemperature);
+  _BOOL WINAPI GetMonitorContrast (HANDLE hMonitor, LPDWORD 
pdwMinimumContrast, LPDWORD pdwCurrentContrast, LPDWORD pdwMaximumContrast);
+  _BOOL WINAPI GetMonitorDisplayAreaSize (HANDLE hMonitor, MC_SIZE_TYPE 
stSizeType, LPDWORD pdwMinimumWidthOrHeight, LPDWORD pdwCurrentWidthOrHeight, 
LPDWORD pdwMaximumWidthOrHeight);
+  _BOOL WINAPI GetMonitorDisplayAreaPosition (HANDLE hMonitor, 
MC_POSITION_TYPE ptPositionType, LPDWORD pdwMinimumPosition, LPDWORD 
pdwCurrentPosition, LPDWORD pdwMaximumPosition);
+  _BOOL WINAPI GetMonitorRedGreenOrBlueDrive (HANDLE hMonitor, MC_DRIVE_TYPE 
dtDriveType, LPDWORD pdwMinimumDrive, LPDWORD pdwCurrentDrive, LPDWORD 
pdwMaximumDrive);
+  _BOOL WINAPI GetMonitorRedGreenOrBlueGain (HANDLE hMonitor, MC_GAIN_TYPE 
gtGainType, LPDWORD pdwMinimumGain, LPDWORD pdwCurrentGain, LPDWORD 
pdwMaximumGain);
+  _BOOL WINAPI GetMonitorTechnologyType (HANDLE hMonitor, 
LPMC_DISPLAY_TECHNOLOGY_TYPE pdtyDisplayTechnologyType);
+  _BOOL WINAPI RestoreMonitorFactoryColorDefaults (HANDLE hMonitor);
+  _BOOL WINAPI RestoreMonitorFactoryDefaults (HANDLE hMonitor);
+  _BOOL WINAPI SaveCurrentMonitorSettings (HANDLE hMonitor);
+  _BOOL WINAPI SetMonitorBrightness (HANDLE hMonitor, DWORD dwNewBrightness);
+  _BOOL WINAPI SetMonitorColorTemperature (HANDLE hMonitor, 
MC_COLOR_TEMPERATURE ctCurrentColorTemperature);
+  _BOOL WINAPI SetMonitorContrast (HANDLE hMonitor, DWORD dwNewContrast);
+  _BOOL WINAPI SetMonitorDisplayAreaSize (HANDLE hMonitor, MC_SIZE_TYPE 
stSizeType, DWORD dwNewDisplayAreaWidthOrHeight);
+  _BOOL WINAPI SetMonitorDisplayAreaPosition (HANDLE hMonitor, 
MC_POSITION_TYPE ptPositionType, DWORD dwNewPosition);
+  _BOOL WINAPI SetMonitorRedGreenOrBlueDrive (HANDLE hMonitor, MC_DRIVE_TYPE 
dtDriveType, DWORD dwNewDrive);
+  _BOOL WINAPI SetMonitorRedGreenOrBlueGain (HANDLE hMonitor, MC_GAIN_TYPE 
gtGainType, DWORD dwNewGain);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+#endif
diff --git a/mingw-w64-headers/include/physicalmonitorenumerationapi.h 
b/mingw-w64-headers/include/physicalmonitorenumerationapi.h
new file mode 100644
index 0000000..5b44319
--- /dev/null
+++ b/mingw-w64-headers/include/physicalmonitorenumerationapi.h
@@ -0,0 +1,43 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+#include <winapifamily.h>
+
+#ifndef PhysicalMonitorEnumerationAPI_h
+#define PhysicalMonitorEnumerationAPI_h
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+
+#include <d3d9.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define PHYSICAL_MONITOR_DESCRIPTION_SIZE 128
+
+  typedef WINBOOL _BOOL;
+
+#include <pshpack1.h>
+
+  typedef struct _PHYSICAL_MONITOR {
+    HANDLE hPhysicalMonitor;
+    WCHAR szPhysicalMonitorDescription[PHYSICAL_MONITOR_DESCRIPTION_SIZE];
+  } PHYSICAL_MONITOR,*LPPHYSICAL_MONITOR;
+
+#include <poppack.h>
+
+  _BOOL WINAPI DestroyPhysicalMonitor (HANDLE hMonitor);
+  _BOOL WINAPI DestroyPhysicalMonitors (DWORD dwPhysicalMonitorArraySize, 
LPPHYSICAL_MONITOR pPhysicalMonitorArray);
+  _BOOL WINAPI GetNumberOfPhysicalMonitorsFromHMONITOR (HMONITOR hMonitor, 
LPDWORD pdwNumberOfPhysicalMonitors);
+  HRESULT WINAPI GetNumberOfPhysicalMonitorsFromIDirect3DDevice9 
(IDirect3DDevice9 *pDirect3DDevice9, LPDWORD pdwNumberOfPhysicalMonitors);
+  _BOOL WINAPI GetPhysicalMonitorsFromHMONITOR (HMONITOR hMonitor, DWORD 
dwPhysicalMonitorArraySize, LPPHYSICAL_MONITOR pPhysicalMonitorArray);
+  HRESULT WINAPI GetPhysicalMonitorsFromIDirect3DDevice9 (IDirect3DDevice9 
*pDirect3DDevice9, DWORD dwPhysicalMonitorArraySize, LPPHYSICAL_MONITOR 
pPhysicalMonitorArray);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+#endif
-- 
1.7.9

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to