home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / ntddkbd.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  4KB  |  136 lines

  1. /*
  2.  * ntddkbd.h
  3.  *
  4.  * Keyboard IOCTL interface
  5.  *
  6.  * This file is part of the w32api package.
  7.  *
  8.  * Contributors:
  9.  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10.  *
  11.  * THIS SOFTWARE IS NOT COPYRIGHTED
  12.  *
  13.  * This source code is offered for use in the public domain. You may
  14.  * use, modify or distribute it freely.
  15.  *
  16.  * This code is distributed in the hope that it will be useful but
  17.  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18.  * DISCLAIMED. This includes but is not limited to warranties of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  */
  22.  
  23. #ifndef __NTDDKBD_H
  24. #define __NTDDKBD_H
  25.  
  26. #if __GNUC__ >=3
  27. #pragma GCC system_header
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #include "ntddk.h"
  35.  
  36. #define DD_KEYBOARD_DEVICE_NAME           "\\Device\\KeyboardClass"
  37. #define DD_KEYBOARD_DEVICE_NAME_U         L"\\Device\\KeyboardClass"
  38.  
  39. #define IOCTL_KEYBOARD_QUERY_ATTRIBUTES \
  40.   CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
  41.  
  42. #define IOCTL_KEYBOARD_QUERY_INDICATORS \
  43.   CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
  44.  
  45. #define IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION \
  46.   CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0020, METHOD_BUFFERED, FILE_ANY_ACCESS)
  47.  
  48. #define IOCTL_KEYBOARD_QUERY_TYPEMATIC \
  49.   CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
  50.  
  51. #define IOCTL_KEYBOARD_SET_TYPEMATIC \
  52.   CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0001, METHOD_BUFFERED, FILE_ANY_ACCESS)
  53.  
  54. #define IOCTL_KEYBOARD_SET_INDICATORS \
  55.   CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0002, METHOD_BUFFERED, FILE_ANY_ACCESS)
  56.  
  57.  
  58. DEFINE_GUID(GUID_DEVINTERFACE_KEYBOARD, \
  59.   0x884b96c3, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd);
  60.  
  61. #define KEYBOARD_ERROR_VALUE_BASE         10000
  62.  
  63. /* KEYBOARD_INPUT_DATA.MakeCode constants */
  64. #define KEYBOARD_OVERRUN_MAKE_CODE        0xFF
  65.  
  66. /* KEYBOARD_INPUT_DATA.Flags constants */
  67. #define KEY_MAKE                          0
  68. #define KEY_BREAK                         1
  69. #define KEY_E0                            2
  70. #define KEY_E1                            4
  71.  
  72. typedef struct _KEYBOARD_INPUT_DATA {
  73.   USHORT  UnitId;
  74.   USHORT  MakeCode;
  75.   USHORT  Flags;
  76.   USHORT  Reserved;
  77.   ULONG  ExtraInformation;
  78. } KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA;
  79.  
  80.  
  81. typedef struct _KEYBOARD_TYPEMATIC_PARAMETERS {
  82.     USHORT  UnitId;
  83.     USHORT  Rate;
  84.     USHORT  Delay;
  85. } KEYBOARD_TYPEMATIC_PARAMETERS, *PKEYBOARD_TYPEMATIC_PARAMETERS;
  86.  
  87. typedef struct _KEYBOARD_ID {
  88.     UCHAR  Type;
  89.     UCHAR  Subtype;
  90. } KEYBOARD_ID, *PKEYBOARD_ID;
  91.  
  92. #define ENHANCED_KEYBOARD(Id) ((Id).Type == 2 || (Id).Type == 4 || FAREAST_KEYBOARD(Id))
  93. #define FAREAST_KEYBOARD(Id)  ((Id).Type == 7 || (Id).Type == 8)
  94.  
  95. typedef struct _KEYBOARD_INDICATOR_PARAMETERS {
  96.   USHORT  UnitId;
  97.   USHORT  LedFlags;
  98. } KEYBOARD_INDICATOR_PARAMETERS, *PKEYBOARD_INDICATOR_PARAMETERS;
  99.  
  100. typedef struct _INDICATOR_LIST {
  101.   USHORT  MakeCode;
  102.   USHORT  IndicatorFlags;
  103. } INDICATOR_LIST, *PINDICATOR_LIST;
  104.  
  105. typedef struct _KEYBOARD_INDICATOR_TRANSLATION {
  106.   USHORT  NumberOfIndicatorKeys;
  107.   INDICATOR_LIST  IndicatorList[1];
  108. } KEYBOARD_INDICATOR_TRANSLATION, *PKEYBOARD_INDICATOR_TRANSLATION;
  109.  
  110. typedef struct _KEYBOARD_ATTRIBUTES {
  111.     KEYBOARD_ID  KeyboardIdentifier;
  112.     USHORT  KeyboardMode;
  113.     USHORT  NumberOfFunctionKeys;
  114.     USHORT  NumberOfIndicators;
  115.     USHORT  NumberOfKeysTotal;
  116.     ULONG  InputDataQueueLength;
  117.     KEYBOARD_TYPEMATIC_PARAMETERS  KeyRepeatMinimum;
  118.     KEYBOARD_TYPEMATIC_PARAMETERS  KeyRepeatMaximum;
  119. } KEYBOARD_ATTRIBUTES, *PKEYBOARD_ATTRIBUTES;
  120.  
  121. typedef struct _KEYBOARD_UNIT_ID_PARAMETER {
  122.   USHORT  UnitId;
  123. } KEYBOARD_UNIT_ID_PARAMETER, *PKEYBOARD_UNIT_ID_PARAMETER;
  124.  
  125. typedef struct _KEYBOARD_IME_STATUS {
  126.     USHORT  UnitId;
  127.     ULONG  ImeOpen;
  128.     ULONG  ImeConvMode;
  129. } KEYBOARD_IME_STATUS, *PKEYBOARD_IME_STATUS;
  130.  
  131. #ifdef __cplusplus
  132. }
  133. #endif
  134.  
  135. #endif /* __NTDDKBD_H */
  136.