169 lines
6.5 KiB
C
169 lines
6.5 KiB
C
/*
|
|
* ntdd8042.h I8042 device I/O control codes
|
|
*
|
|
* =========================================================================
|
|
*
|
|
* Open Watcom Project
|
|
*
|
|
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
|
|
*
|
|
* This file is automatically generated. Do not edit directly.
|
|
*
|
|
* =========================================================================
|
|
*/
|
|
|
|
#ifndef _NTDD8042_
|
|
#define _NTDD8042_
|
|
|
|
#ifndef _ENABLE_AUTODEPEND
|
|
#pragma read_only_file;
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* I8042 internal device I/O control codes */
|
|
#define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD \
|
|
CTL_CODE( FILE_DEVICE_KEYBOARD, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS )
|
|
#define IOCTL_INTERNAL_I8042_HOOK_MOUSE \
|
|
CTL_CODE( FILE_DEVICE_MOUSE, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS )
|
|
#define IOCTL_INTERNAL_I8042_KEYBOARD_WRITE_BUFFER \
|
|
CTL_CODE( FILE_DEVICE_KEYBOARD, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS )
|
|
#define IOCTL_INTERNAL_I8042_MOUSE_WRITE_BUFFER \
|
|
CTL_CODE( FILE_DEVICE_MOUSE, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS )
|
|
#define IOCTL_INTERNAL_I8042_CONTROLLER_WRITE_BUFFER \
|
|
CTL_CODE( FILE_DEVICE_KEYBOARD, 0x0FF2, METHOD_NEITHER, FILE_ANY_ACCESS )
|
|
#define IOCTL_INTERNAL_I8042_KEYBOARD_START_INFORMATION \
|
|
CTL_CODE( FILE_DEVICE_KEYBOARD, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS )
|
|
#define IOCTL_INTERNAL_I8042_MOUSE_START_INFORMATION \
|
|
CTL_CODE( FILE_DEVICE_MOUSE, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS )
|
|
|
|
/* I8042 power capability flags */
|
|
#define I8042_POWER_SYS_BUTTON 0x00000001L
|
|
#define I8042_SLEEP_SYS_BUTTON 0x00000002L
|
|
#define I8042_WAKE_SYS_BUTTON 0x00000004L
|
|
#define I8042_SYS_BUTTONS \
|
|
(I8042_POWER_SYS_BUTTON | I8042_SLEEP_SYS_BUTTON | I8042_WAKE_SYS_BUTTON)
|
|
|
|
/* Transmit states */
|
|
typedef enum _TRANSMIT_STATE {
|
|
Idle = 0,
|
|
SendingBytes = 1
|
|
} TRANSMIT_STATE;
|
|
|
|
/* Output packet */
|
|
typedef struct _OUTPUT_PACKET {
|
|
PUCHAR Bytes;
|
|
ULONG CurrentByte;
|
|
ULONG ByteCount;
|
|
TRANSMIT_STATE State;
|
|
} OUTPUT_PACKET;
|
|
typedef OUTPUT_PACKET *POUTPUT_PACKET;
|
|
|
|
/* Mouse states */
|
|
typedef enum _MOUSE_STATE {
|
|
MouseIdle = 0,
|
|
XMovement = 1,
|
|
YMovement = 2,
|
|
ZMovement = 3,
|
|
MouseExpectingACK = 4,
|
|
MouseResetting = 5
|
|
} MOUSE_STATE;
|
|
typedef MOUSE_STATE *PMOUSE_STATE;
|
|
|
|
/* Mouse reset substates */
|
|
typedef enum _MOUSE_RESET_SUBSTATE {
|
|
ExpectingReset = 0,
|
|
ExpectingResetId = 1,
|
|
ExpectingGetDeviceIdACK = 2,
|
|
ExpectingGetDeviceIdValue = 3,
|
|
ExpectingSetResolutionDefaultACK = 4,
|
|
ExpectingSetResolutionDefaultValueACK = 5,
|
|
ExpectingSetResolutionACK = 6,
|
|
ExpectingSetResolutionValueACK = 7,
|
|
ExpectingSetScaling1to1ACK = 8,
|
|
ExpectingSetScaling1to1ACK2 = 9,
|
|
ExpectingSetScaling1to1ACK3 = 10,
|
|
ExpectingReadMouseStatusACK = 11,
|
|
ExpectingReadMouseStatusByte1 = 12,
|
|
ExpectingReadMouseStatusByte2 = 13,
|
|
ExpectingReadMouseStatusByte3 = 14,
|
|
StartPnPIdDetection = 15,
|
|
ExpectingLoopSetSamplingRateACK = 16,
|
|
ExpectingLoopSetSamplingRateValueACK = 17,
|
|
ExpectingPnpIdByte1 = 18,
|
|
ExpectingPnpIdByte2 = 19,
|
|
ExpectingPnpIdByte3 = 20,
|
|
ExpectingPnpIdByte4 = 21,
|
|
ExpectingPnpIdByte5 = 22,
|
|
ExpectingPnpIdByte6 = 23,
|
|
ExpectingPnpIdByte7 = 24,
|
|
EnableWheel = 25,
|
|
Enable5Buttons = 26,
|
|
ExpectingGetDeviceId2ACK = 27,
|
|
ExpectingGetDeviceId2Value = 28,
|
|
ExpectingSetSamplingRateACK = 29,
|
|
ExpectingSetSamplingRateValueACK = 30,
|
|
ExpectingEnableACK = 31,
|
|
ExpectingFinalResolutionACK = 32,
|
|
ExpectingFinalResolutionValueACK = 33,
|
|
ExpectingGetDeviceIdDetectACK = 34,
|
|
ExpectingGetDeviceIdDetectValue = 35,
|
|
CustomHookStateMinimum = 100,
|
|
CustomHookStateMaximum = 999
|
|
} MOUSE_RESET_SUBSTATE;
|
|
typedef MOUSE_RESET_SUBSTATE *PMOUSE_RESET_SUBSTATE;
|
|
|
|
/* Keyboard scan states */
|
|
typedef enum _KEYBOARD_SCAN_STATE {
|
|
Normal = 0,
|
|
GotE0 = 1,
|
|
GotE1 = 2
|
|
} KEYBOARD_SCAN_STATE;
|
|
typedef KEYBOARD_SCAN_STATE *PKEYBOARD_SCAN_STATE;
|
|
|
|
/* I8042 callbacks */
|
|
typedef NTSTATUS (NTAPI *PI8042_SYNCH_READ_PORT)( PVOID, PUCHAR, BOOLEAN );
|
|
typedef NTSTATUS (NTAPI *PI8042_SYNCH_WRITE_PORT)( PVOID, UCHAR, BOOLEAN );
|
|
typedef VOID (NTAPI *PI8042_ISR_WRITE_PORT)( PVOID, UCHAR );
|
|
typedef VOID (NTAPI *PI8042_QUEUE_PACKET)( PVOID );
|
|
typedef BOOLEAN (NTAPI *PI8042_MOUSE_ISR)( PVOID, PMOUSE_INPUT_DATA, POUTPUT_PACKET, UCHAR, PUCHAR, PBOOLEAN, PMOUSE_STATE, PMOUSE_RESET_SUBSTATE );
|
|
typedef NTSTATUS (NTAPI *PI8042_KEYBOARD_INITIALIZATION_ROUTINE)( PVOID, PVOID, PI8042_SYNCH_READ_PORT, PI8042_SYNCH_WRITE_PORT, PBOOLEAN );
|
|
typedef BOOLEAN (NTAPI *PI8042_KEYBOARD_ISR)( PVOID, PKEYBOARD_INPUT_DATA, POUTPUT_PACKET, UCHAR, PUCHAR, PBOOLEAN, PKEYBOARD_SCAN_STATE );
|
|
|
|
/* Internal I8042 hook mouse */
|
|
typedef struct _INTERNAL_I8042_HOOK_MOUSE {
|
|
PVOID Context;
|
|
PI8042_MOUSE_ISR IsrRoutine;
|
|
PI8042_ISR_WRITE_PORT IsrWritePort;
|
|
PI8042_QUEUE_PACKET QueueMousePacket;
|
|
PVOID CallContext;
|
|
} INTERNAL_I8042_HOOK_MOUSE;
|
|
typedef INTERNAL_I8042_HOOK_MOUSE *PINTERNAL_I8042_HOOK_MOUSE;
|
|
|
|
/* Internal I8042 hook keyboard */
|
|
typedef struct _INTERNAL_I8042_HOOK_KEYBOARD {
|
|
PVOID Context;
|
|
PI8042_KEYBOARD_INITIALIZATION_ROUTINE InitializationRoutine;
|
|
PI8042_KEYBOARD_ISR IsrRoutine;
|
|
PI8042_ISR_WRITE_PORT IsrWritePort;
|
|
PI8042_QUEUE_PACKET QueueKeyboardPacket;
|
|
PVOID CallContext;
|
|
} INTERNAL_I8042_HOOK_KEYBOARD;
|
|
typedef INTERNAL_I8042_HOOK_KEYBOARD *PINTERNAL_I8042_HOOK_KEYBOARD;
|
|
|
|
/* Internal I8042 start information */
|
|
typedef struct _INTERNAL_I8042_START_INFORMATION {
|
|
ULONG Size;
|
|
PKINTERRUPT InterruptObject;
|
|
ULONG Reserved[8];
|
|
} INTERNAL_I8042_START_INFORMATION;
|
|
typedef INTERNAL_I8042_START_INFORMATION *PINTERNAL_I8042_START_INFORMATION;
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#endif /* _NTDD8042_ */
|