Annotation of ntddk/src/input/inc/ntddkbd.h, revision 1.1

1.1     ! root        1: /*++ BUILD Version: 0001    // Increment this if a change has global effects
        !             2: 
        !             3: Copyright (c) 1990-1993  Microsoft Corporation
        !             4: 
        !             5: Module Name:
        !             6: 
        !             7:     ntddkbd.h
        !             8: 
        !             9: Abstract:
        !            10: 
        !            11:     This is the include file that defines all constants and types for
        !            12:     accessing the keyboard device.
        !            13: 
        !            14: Author:
        !            15: 
        !            16:     Lee A. Smith (lees) 02-Aug-1991.
        !            17: 
        !            18: Revision History:
        !            19: 
        !            20: --*/
        !            21: 
        !            22: #ifndef _NTDDKBD_
        !            23: #define _NTDDKBD_
        !            24: 
        !            25: //
        !            26: // Device Name - this string is the name of the device.  It is the name
        !            27: // that should be passed to NtOpenFile when accessing the device.
        !            28: //
        !            29: // Note:  For devices that support multiple units, it should be suffixed
        !            30: //        with the Ascii representation of the unit number.
        !            31: //
        !            32: 
        !            33: #define DD_KEYBOARD_DEVICE_NAME    "\\Device\\KeyboardClass"
        !            34: #define DD_KEYBOARD_DEVICE_NAME_U L"\\Device\\KeyboardClass"
        !            35: 
        !            36: //
        !            37: // NtDeviceIoControlFile IoControlCode values for this device.
        !            38: //
        !            39: // Warning:  Remember that the low two bits of the code specify how the
        !            40: //           buffers are passed to the driver!
        !            41: //
        !            42: 
        !            43: #define IOCTL_KEYBOARD_QUERY_ATTRIBUTES      CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
        !            44: #define IOCTL_KEYBOARD_SET_TYPEMATIC         CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0001, METHOD_BUFFERED, FILE_ANY_ACCESS)
        !            45: #define IOCTL_KEYBOARD_SET_INDICATORS        CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0002, METHOD_BUFFERED, FILE_ANY_ACCESS)
        !            46: #define IOCTL_KEYBOARD_QUERY_TYPEMATIC       CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
        !            47: #define IOCTL_KEYBOARD_QUERY_INDICATORS      CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
        !            48: #define IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION   CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0020, METHOD_BUFFERED, FILE_ANY_ACCESS)
        !            49: #define IOCTL_KEYBOARD_INSERT_DATA           CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0040, METHOD_BUFFERED, FILE_ANY_ACCESS)
        !            50: 
        !            51: //
        !            52: // NtReadFile Output Buffer record structures for this device.
        !            53: //
        !            54: 
        !            55: typedef struct _KEYBOARD_INPUT_DATA {
        !            56: 
        !            57:     //
        !            58:     // Unit number.  E.g., for \Device\KeyboardPort0 the unit is '0', 
        !            59:     // for \Device\KeyboardPort1 the unit is '1', and so on.
        !            60:     //
        !            61: 
        !            62:     USHORT UnitId;
        !            63: 
        !            64:     //
        !            65:     // The "make" scan code (key depression).
        !            66:     //
        !            67: 
        !            68:     USHORT MakeCode;
        !            69: 
        !            70:     //
        !            71:     // The flags field indicates a "break" (key release) and other
        !            72:     // miscellaneous scan code information defined below.
        !            73:     //
        !            74: 
        !            75:     USHORT Flags;
        !            76: 
        !            77:     USHORT Reserved;
        !            78: 
        !            79:     //
        !            80:     // Device-specific additional information for the event.
        !            81:     //
        !            82: 
        !            83:     ULONG ExtraInformation;
        !            84: 
        !            85: } KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA;
        !            86: 
        !            87: //
        !            88: // Define the keyboard overrun MakeCode.
        !            89: //
        !            90: 
        !            91: #define KEYBOARD_OVERRUN_MAKE_CODE    0xFF
        !            92: 
        !            93: //
        !            94: // Define the keyboard input data Flags.
        !            95: //
        !            96: 
        !            97: #define KEY_MAKE  0
        !            98: #define KEY_BREAK 1
        !            99: #define KEY_E0    2
        !           100: #define KEY_E1    4
        !           101: 
        !           102: //
        !           103: // NtDeviceIoControlFile Input/Output Buffer record structures for
        !           104: // IOCTL_KEYBOARD_QUERY_TYPEMATIC/IOCTL_KEYBOARD_SET_TYPEMATIC.
        !           105: //
        !           106: 
        !           107: typedef struct _KEYBOARD_TYPEMATIC_PARAMETERS {
        !           108: 
        !           109:     //
        !           110:     // Unit identifier.  Specifies the device unit for which this 
        !           111:     // request is intended.
        !           112:     //
        !           113: 
        !           114:     USHORT UnitId;
        !           115: 
        !           116:     //
        !           117:     // Typematic rate, in repeats per second.
        !           118:     //
        !           119: 
        !           120:     USHORT  Rate;
        !           121: 
        !           122:     //
        !           123:     // Typematic delay, in milliseconds.
        !           124:     //
        !           125: 
        !           126:     USHORT  Delay;
        !           127: 
        !           128: } KEYBOARD_TYPEMATIC_PARAMETERS, *PKEYBOARD_TYPEMATIC_PARAMETERS;
        !           129: 
        !           130: //
        !           131: // NtDeviceIoControlFile OutputBuffer record structures for
        !           132: // IOCTL_KEYBOARD_QUERY_ATTRIBUTES.
        !           133: //
        !           134: 
        !           135: typedef struct _KEYBOARD_ID {
        !           136:     UCHAR Type;       // Keyboard type 
        !           137:     UCHAR Subtype;    // Keyboard subtype (OEM-dependent value)
        !           138: } KEYBOARD_ID, *PKEYBOARD_ID;
        !           139: 
        !           140: typedef struct _KEYBOARD_ATTRIBUTES {
        !           141: 
        !           142:     //
        !           143:     // Keyboard ID value.  Used to distinguish between keyboard types.
        !           144:     //
        !           145: 
        !           146:     KEYBOARD_ID KeyboardIdentifier;
        !           147: 
        !           148:     //
        !           149:     // Scan code mode.
        !           150:     //
        !           151: 
        !           152:     USHORT KeyboardMode;
        !           153: 
        !           154:     //
        !           155:     // Number of function keys located on the keyboard.
        !           156:     //
        !           157: 
        !           158:     USHORT NumberOfFunctionKeys;
        !           159: 
        !           160:     //
        !           161:     // Number of LEDs located on the keyboard.
        !           162:     //
        !           163: 
        !           164:     USHORT NumberOfIndicators;
        !           165: 
        !           166:     //
        !           167:     // Total number of keys located on the keyboard.
        !           168:     //
        !           169: 
        !           170:     USHORT NumberOfKeysTotal;
        !           171: 
        !           172:     //
        !           173:     // Length of the typeahead buffer, in bytes.
        !           174:     //
        !           175: 
        !           176:     ULONG  InputDataQueueLength;
        !           177: 
        !           178:     //
        !           179:     // Minimum allowable values of keyboard typematic rate and delay.
        !           180:     //
        !           181: 
        !           182:     KEYBOARD_TYPEMATIC_PARAMETERS KeyRepeatMinimum;
        !           183: 
        !           184:     //
        !           185:     // Maximum allowable values of keyboard typematic rate and delay.
        !           186:     //
        !           187: 
        !           188:     KEYBOARD_TYPEMATIC_PARAMETERS KeyRepeatMaximum;
        !           189: 
        !           190: } KEYBOARD_ATTRIBUTES, *PKEYBOARD_ATTRIBUTES;
        !           191: 
        !           192: //
        !           193: // ENHANCED_KEYBOARD() is TRUE if the value for keyboard type indicates an
        !           194: // Enhanced (101- or 102-key) or compatible keyboard.  The result is FALSE
        !           195: // if the keyboard is an old-style AT keyboard (83- or 84- or 86-key keyboard).
        !           196: //
        !           197: 
        !           198: #define ENHANCED_KEYBOARD(Id) ((Id).Type == 2 || (Id).Type == 4)
        !           199: 
        !           200: //
        !           201: // NtDeviceIoControlFile Input/Output Buffer record structures for
        !           202: // IOCTL_KEYBOARD_QUERY_INDICATORS/IOCTL_KEYBOARD_SET_INDICATORS.
        !           203: //
        !           204: 
        !           205: typedef struct _KEYBOARD_INDICATOR_PARAMETERS {
        !           206: 
        !           207:     //
        !           208:     // Unit identifier.  Specifies the device unit for which this 
        !           209:     // request is intended.
        !           210:     //
        !           211: 
        !           212:     USHORT UnitId;
        !           213: 
        !           214:     //
        !           215:     // LED indicator state.
        !           216:     //
        !           217: 
        !           218:     USHORT    LedFlags;
        !           219: 
        !           220: } KEYBOARD_INDICATOR_PARAMETERS, *PKEYBOARD_INDICATOR_PARAMETERS;
        !           221: 
        !           222: //
        !           223: // NtDeviceIoControlFile Output Buffer record structures for
        !           224: // IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION.
        !           225: //
        !           226: 
        !           227: typedef struct _INDICATOR_LIST {
        !           228: 
        !           229:     //
        !           230:     // The "make" scan code (key depression).
        !           231:     //
        !           232: 
        !           233:     USHORT MakeCode;
        !           234: 
        !           235:     //
        !           236:     // The associated LED indicators.
        !           237:     //
        !           238: 
        !           239:     USHORT IndicatorFlags;
        !           240: 
        !           241: } INDICATOR_LIST, *PINDICATOR_LIST;
        !           242: 
        !           243: typedef struct _KEYBOARD_INDICATOR_TRANSLATION {
        !           244: 
        !           245:     //
        !           246:     // Number of entries in IndicatorList.
        !           247:     //
        !           248: 
        !           249:     USHORT NumberOfIndicatorKeys;
        !           250: 
        !           251:     //
        !           252:     // List of the scancode-to-indicator mappings.
        !           253:     //
        !           254: 
        !           255:     INDICATOR_LIST IndicatorList[1];
        !           256: 
        !           257: } KEYBOARD_INDICATOR_TRANSLATION, *PKEYBOARD_INDICATOR_TRANSLATION;
        !           258: 
        !           259: //
        !           260: // Define the keyboard indicators.
        !           261: //
        !           262: 
        !           263: #define KEYBOARD_CAPS_LOCK_ON     4
        !           264: #define KEYBOARD_NUM_LOCK_ON      2
        !           265: #define KEYBOARD_SCROLL_LOCK_ON   1
        !           266: 
        !           267: //
        !           268: // Generic NtDeviceIoControlFile Input Buffer record structure for
        !           269: // various keyboard IOCTLs.
        !           270: //
        !           271: 
        !           272: typedef struct _KEYBOARD_UNIT_ID_PARAMETER {
        !           273: 
        !           274:     //
        !           275:     // Unit identifier.  Specifies the device unit for which this 
        !           276:     // request is intended.
        !           277:     //
        !           278: 
        !           279:     USHORT UnitId;
        !           280: 
        !           281: } KEYBOARD_UNIT_ID_PARAMETER, *PKEYBOARD_UNIT_ID_PARAMETER;
        !           282: 
        !           283: //
        !           284: // Define the base values for the keyboard error log packet's
        !           285: // UniqueErrorValue field.
        !           286: //
        !           287: 
        !           288: #define KEYBOARD_ERROR_VALUE_BASE        10000
        !           289: 
        !           290: #endif // _NTDDKBD_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.