:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / include / ddk / ntdd8042.h
1 #ifndef _NTDD8042_
2 #define _NTDD8042_
3
4 #define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD  CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
5 #define IOCTL_INTERNAL_I8042_HOOK_MOUSE     CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
6
7 typedef enum _KEYBOARD_SCAN_STATE {
8     Normal,
9     GotE0,
10     GotE1
11 } KEYBOARD_SCAN_STATE, *PKEYBOARD_SCAN_STATE;
12
13 typedef
14 NTSTATUS
15 (*PI8042_SYNCH_READ_PORT) (
16     IN PVOID    Context,
17     PUCHAR      Value,
18     BOOLEAN     WaitForACK
19     );
20
21 typedef
22 NTSTATUS
23 (*PI8042_SYNCH_WRITE_PORT) (
24     IN PVOID    Context,
25     UCHAR       Value,
26     BOOLEAN     WaitForACK
27     );
28
29 typedef enum _TRANSMIT_STATE {
30     Idle = 0,
31     SendingBytes
32 } TRANSMIT_STATE;
33
34 typedef struct _OUTPUT_PACKET {
35     PUCHAR         Bytes;
36     ULONG          CurrentByte;
37     ULONG          ByteCount;
38     TRANSMIT_STATE State;
39 } OUTPUT_PACKET, *POUTPUT_PACKET;
40
41 typedef
42 NTSTATUS
43 (*PI8042_KEYBOARD_INITIALIZATION_ROUTINE) (
44     IN PVOID                           InitializationContext,
45     IN PVOID                           SynchFuncContext,
46     IN PI8042_SYNCH_READ_PORT          ReadPort,
47     IN PI8042_SYNCH_WRITE_PORT         WritePort,
48     OUT PBOOLEAN                       TurnTranslationOn
49     );
50
51 typedef
52 BOOLEAN
53 (*PI8042_KEYBOARD_ISR) (
54     PVOID                   IsrContext,
55     PKEYBOARD_INPUT_DATA    CurrentInput,
56     POUTPUT_PACKET          CurrentOutput,
57     UCHAR                   StatusByte,
58     PUCHAR                  Byte,
59     PBOOLEAN                ContinueProcessing,
60     PKEYBOARD_SCAN_STATE    ScanState
61     );
62
63 typedef struct _INTERNAL_I8042_HOOK_KEYBOARD {
64
65     //
66     // Context variable for all callback routines
67     //
68     PVOID Context;
69
70     //
71     // Routine to call after the mouse is reset
72     //
73     PI8042_KEYBOARD_INITIALIZATION_ROUTINE InitializationRoutine;
74
75     //
76     // Routine to call when a byte is received via the interrupt
77     //
78     PI8042_KEYBOARD_ISR IsrRoutine;
79
80     //
81     // Write function
82     //
83  //UNIMPLEMENTED   PI8042_ISR_WRITE_PORT IsrWritePort;
84
85     //
86     // Queue the current packet (ie the one passed into the isr callback hook)
87     // to be reported to the class driver
88     //
89  //UNIMPLEMENTED  PI8042_QUEUE_PACKET QueueKeyboardPacket;
90
91     //
92     // Context for IsrWritePort, QueueKeyboardPacket
93     //
94  //UNIMPLEMENTED  PVOID CallContext;
95
96 } INTERNAL_I8042_HOOK_KEYBOARD, *PINTERNAL_I8042_HOOK_KEYBOARD;
97
98 #endif                                  //_NTDD8042_