Mercurial > games > semicongine
comparison fuhtark_test/include/ddk/ntdd8042.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1499:1f58458b7ef7 | 1500:91c8c3b7cbf0 |
|---|---|
| 1 /* | |
| 2 * ntdd8042.h | |
| 3 * | |
| 4 * i8042 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 __NTDD8042_H | |
| 24 #define __NTDD8042_H | |
| 25 | |
| 26 #include "ntddkbd.h" | |
| 27 #include "ntddmou.h" | |
| 28 | |
| 29 #ifdef __cplusplus | |
| 30 extern "C" { | |
| 31 #endif | |
| 32 | |
| 33 #define IOCTL_INTERNAL_I8042_CONTROLLER_WRITE_BUFFER \ | |
| 34 CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF2, METHOD_NEITHER, FILE_ANY_ACCESS) | |
| 35 | |
| 36 #define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD \ | |
| 37 CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS) | |
| 38 | |
| 39 #define IOCTL_INTERNAL_I8042_KEYBOARD_START_INFORMATION \ | |
| 40 CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS) | |
| 41 | |
| 42 #define IOCTL_INTERNAL_I8042_KEYBOARD_WRITE_BUFFER \ | |
| 43 CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS) | |
| 44 | |
| 45 #define IOCTL_INTERNAL_I8042_HOOK_MOUSE \ | |
| 46 CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS) | |
| 47 | |
| 48 #define IOCTL_INTERNAL_I8042_MOUSE_START_INFORMATION \ | |
| 49 CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS) | |
| 50 | |
| 51 #define IOCTL_INTERNAL_I8042_MOUSE_WRITE_BUFFER \ | |
| 52 CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS) | |
| 53 | |
| 54 #define I8042_POWER_SYS_BUTTON 0x0001 | |
| 55 #define I8042_SLEEP_SYS_BUTTON 0x0002 | |
| 56 #define I8042_WAKE_SYS_BUTTON 0x0004 | |
| 57 #define I8042_SYS_BUTTONS (I8042_POWER_SYS_BUTTON | \ | |
| 58 I8042_SLEEP_SYS_BUTTON | \ | |
| 59 I8042_WAKE_SYS_BUTTON) | |
| 60 | |
| 61 typedef enum _TRANSMIT_STATE { | |
| 62 Idle = 0, | |
| 63 SendingBytes | |
| 64 } TRANSMIT_STATE; | |
| 65 | |
| 66 typedef struct _OUTPUT_PACKET { | |
| 67 PUCHAR Bytes; | |
| 68 ULONG CurrentByte; | |
| 69 ULONG ByteCount; | |
| 70 TRANSMIT_STATE State; | |
| 71 } OUTPUT_PACKET, *POUTPUT_PACKET; | |
| 72 | |
| 73 typedef enum _KEYBOARD_SCAN_STATE { | |
| 74 Normal, | |
| 75 GotE0, | |
| 76 GotE1 | |
| 77 } KEYBOARD_SCAN_STATE, *PKEYBOARD_SCAN_STATE; | |
| 78 | |
| 79 typedef enum _MOUSE_STATE { | |
| 80 MouseIdle, | |
| 81 XMovement, | |
| 82 YMovement, | |
| 83 ZMovement, | |
| 84 MouseExpectingACK, | |
| 85 MouseResetting | |
| 86 } MOUSE_STATE, *PMOUSE_STATE; | |
| 87 | |
| 88 typedef enum _MOUSE_RESET_SUBSTATE { | |
| 89 ExpectingReset, | |
| 90 ExpectingResetId, | |
| 91 ExpectingGetDeviceIdACK, | |
| 92 ExpectingGetDeviceIdValue, | |
| 93 ExpectingSetResolutionDefaultACK, | |
| 94 ExpectingSetResolutionDefaultValueACK, | |
| 95 ExpectingSetResolutionACK, | |
| 96 ExpectingSetResolutionValueACK, | |
| 97 ExpectingSetScaling1to1ACK, | |
| 98 ExpectingSetScaling1to1ACK2, | |
| 99 ExpectingSetScaling1to1ACK3, | |
| 100 ExpectingReadMouseStatusACK, | |
| 101 ExpectingReadMouseStatusByte1, | |
| 102 ExpectingReadMouseStatusByte2, | |
| 103 ExpectingReadMouseStatusByte3, | |
| 104 StartPnPIdDetection, | |
| 105 ExpectingLoopSetSamplingRateACK, | |
| 106 ExpectingLoopSetSamplingRateValueACK, | |
| 107 ExpectingPnpIdByte1, | |
| 108 ExpectingPnpIdByte2, | |
| 109 ExpectingPnpIdByte3, | |
| 110 ExpectingPnpIdByte4, | |
| 111 ExpectingPnpIdByte5, | |
| 112 ExpectingPnpIdByte6, | |
| 113 ExpectingPnpIdByte7, | |
| 114 EnableWheel, | |
| 115 Enable5Buttons, | |
| 116 ExpectingGetDeviceId2ACK, | |
| 117 ExpectingGetDeviceId2Value, | |
| 118 ExpectingSetSamplingRateACK, | |
| 119 ExpectingSetSamplingRateValueACK, | |
| 120 ExpectingEnableACK, | |
| 121 ExpectingFinalResolutionACK, | |
| 122 ExpectingFinalResolutionValueACK, | |
| 123 ExpectingGetDeviceIdDetectACK, | |
| 124 ExpectingGetDeviceIdDetectValue, | |
| 125 CustomHookStateMinimum = 100, | |
| 126 CustomHookStateMaximum = 999, | |
| 127 I8042ReservedMinimum = 1000 | |
| 128 } MOUSE_RESET_SUBSTATE, *PMOUSE_RESET_SUBSTATE; | |
| 129 | |
| 130 typedef struct _INTERNAL_I8042_START_INFORMATION { | |
| 131 ULONG Size; | |
| 132 PKINTERRUPT InterruptObject; | |
| 133 ULONG Reserved[8]; | |
| 134 } INTERNAL_I8042_START_INFORMATION, *PINTERNAL_I8042_START_INFORMATION; | |
| 135 | |
| 136 typedef VOID | |
| 137 (DDKAPI *PI8042_ISR_WRITE_PORT)( | |
| 138 IN PVOID Context, | |
| 139 IN UCHAR Value); | |
| 140 | |
| 141 typedef VOID | |
| 142 (DDKAPI *PI8042_QUEUE_PACKET)( | |
| 143 IN PVOID Context); | |
| 144 | |
| 145 typedef NTSTATUS | |
| 146 (DDKAPI *PI8042_SYNCH_READ_PORT) ( | |
| 147 IN PVOID Context, | |
| 148 OUT PUCHAR Value, | |
| 149 IN BOOLEAN WaitForACK); | |
| 150 | |
| 151 typedef NTSTATUS | |
| 152 (DDKAPI *PI8042_SYNCH_WRITE_PORT)( | |
| 153 IN PVOID Context, | |
| 154 IN UCHAR Value, | |
| 155 IN BOOLEAN WaitForACK); | |
| 156 | |
| 157 | |
| 158 typedef NTSTATUS | |
| 159 (DDKAPI *PI8042_KEYBOARD_INITIALIZATION_ROUTINE)( | |
| 160 IN PVOID InitializationContext, | |
| 161 IN PVOID SynchFuncContext, | |
| 162 IN PI8042_SYNCH_READ_PORT ReadPort, | |
| 163 IN PI8042_SYNCH_WRITE_PORT WritePort, | |
| 164 OUT PBOOLEAN TurnTranslationOn); | |
| 165 | |
| 166 typedef BOOLEAN | |
| 167 (DDKAPI *PI8042_KEYBOARD_ISR)( | |
| 168 PVOID IsrContext, | |
| 169 PKEYBOARD_INPUT_DATA CurrentInput, | |
| 170 POUTPUT_PACKET CurrentOutput, | |
| 171 UCHAR StatusByte, | |
| 172 PUCHAR Byte, | |
| 173 PBOOLEAN ContinueProcessing, | |
| 174 PKEYBOARD_SCAN_STATE ScanState); | |
| 175 | |
| 176 typedef struct _INTERNAL_I8042_HOOK_KEYBOARD { | |
| 177 OUT PVOID Context; | |
| 178 OUT PI8042_KEYBOARD_INITIALIZATION_ROUTINE InitializationRoutine; | |
| 179 OUT PI8042_KEYBOARD_ISR IsrRoutine; | |
| 180 IN PI8042_ISR_WRITE_PORT IsrWritePort; | |
| 181 IN PI8042_QUEUE_PACKET QueueKeyboardPacket; | |
| 182 IN PVOID CallContext; | |
| 183 } INTERNAL_I8042_HOOK_KEYBOARD, *PINTERNAL_I8042_HOOK_KEYBOARD; | |
| 184 | |
| 185 typedef BOOLEAN | |
| 186 (DDKAPI *PI8042_MOUSE_ISR)( | |
| 187 PVOID IsrContext, | |
| 188 PMOUSE_INPUT_DATA CurrentInput, | |
| 189 POUTPUT_PACKET CurrentOutput, | |
| 190 UCHAR StatusByte, | |
| 191 PUCHAR Byte, | |
| 192 PBOOLEAN ContinueProcessing, | |
| 193 PMOUSE_STATE MouseState, | |
| 194 PMOUSE_RESET_SUBSTATE ResetSubState); | |
| 195 | |
| 196 typedef struct _INTERNAL_I8042_HOOK_MOUSE { | |
| 197 OUT PVOID Context; | |
| 198 OUT PI8042_MOUSE_ISR IsrRoutine; | |
| 199 IN PI8042_ISR_WRITE_PORT IsrWritePort; | |
| 200 IN PI8042_QUEUE_PACKET QueueMousePacket; | |
| 201 IN PVOID CallContext; | |
| 202 } INTERNAL_I8042_HOOK_MOUSE, *PINTERNAL_I8042_HOOK_MOUSE; | |
| 203 | |
| 204 #ifdef __cplusplus | |
| 205 } | |
| 206 #endif | |
| 207 | |
| 208 #endif /* __NTDD8042_H */ |
