diff --git a/reactos/drivers/input/i8042prt/i8042prt.h b/reactos/drivers/input/i8042prt/i8042prt.h index 58201803e24..7ea45abadb0 100644 --- a/reactos/drivers/input/i8042prt/i8042prt.h +++ b/reactos/drivers/input/i8042prt/i8042prt.h @@ -147,6 +147,8 @@ typedef struct _I8042_KEYBOARD_EXTENSION INTERNAL_I8042_HOOK_KEYBOARD KeyboardHook; /* FIXME: IsrWritePort ignored */ KDPC DpcKeyboard; + KEYBOARD_ATTRIBUTES KeyboardAttributes; + KEYBOARD_INDICATOR_PARAMETERS KeyboardIndicators; KEYBOARD_SCAN_STATE KeyboardScanState; diff --git a/reactos/drivers/input/i8042prt/keyboard.c b/reactos/drivers/input/i8042prt/keyboard.c index 0d2eba6cfd8..1c241c17aa4 100644 --- a/reactos/drivers/input/i8042prt/keyboard.c +++ b/reactos/drivers/input/i8042prt/keyboard.c @@ -636,6 +636,20 @@ cleanup: case IOCTL_KEYBOARD_QUERY_ATTRIBUTES: { DPRINT1("IOCTL_KEYBOARD_QUERY_ATTRIBUTES not implemented\n"); +#if 0 + /* FIXME: KeyboardAttributes are not initialized anywhere */ + TRACE_(I8042PRT, "IRP_MJ_INTERNAL_DEVICE_CONTROL / IOCTL_KEYBOARD_QUERY_ATTRIBUTES\n"); + if (Stack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(KEYBOARD_ATTRIBUTES)) + { + Status = STATUS_BUFFER_TOO_SMALL; + break; + } + + *(PKEYBOARD_ATTRIBUTES) Irp->AssociatedIrp.SystemBuffer = DeviceExtension->KeyboardAttributes; + Irp->IoStatus.Information = sizeof(KEYBOARD_ATTRIBUTES); + Status = STATUS_SUCCESS; + break; +#endif Status = STATUS_NOT_IMPLEMENTED; break; }