mirror of
https://github.com/reactos/reactos.git
synced 2025-06-01 15:38:37 +00:00
[FREELDR] Properly set keyboard flags in hardware detection (#2288)
See https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_cm_keyboard_device_data
This commit is contained in:
parent
4c0426ec44
commit
e00ea7dadd
1 changed files with 11 additions and 1 deletions
|
@ -919,6 +919,7 @@ DetectKeyboardPeripheral(PCONFIGURATION_COMPONENT_DATA ControllerKey)
|
||||||
PCM_KEYBOARD_DEVICE_DATA KeyboardData;
|
PCM_KEYBOARD_DEVICE_DATA KeyboardData;
|
||||||
PCONFIGURATION_COMPONENT_DATA PeripheralKey;
|
PCONFIGURATION_COMPONENT_DATA PeripheralKey;
|
||||||
ULONG Size;
|
ULONG Size;
|
||||||
|
REGS Regs;
|
||||||
|
|
||||||
/* HACK: don't call DetectKeyboardDevice() as it fails in Qemu 0.8.2
|
/* HACK: don't call DetectKeyboardDevice() as it fails in Qemu 0.8.2
|
||||||
if (DetectKeyboardDevice()) */
|
if (DetectKeyboardDevice()) */
|
||||||
|
@ -944,12 +945,21 @@ DetectKeyboardPeripheral(PCONFIGURATION_COMPONENT_DATA ControllerKey)
|
||||||
PartialDescriptor->ShareDisposition = CmResourceShareUndetermined;
|
PartialDescriptor->ShareDisposition = CmResourceShareUndetermined;
|
||||||
PartialDescriptor->u.DeviceSpecificData.DataSize = sizeof(CM_KEYBOARD_DEVICE_DATA);
|
PartialDescriptor->u.DeviceSpecificData.DataSize = sizeof(CM_KEYBOARD_DEVICE_DATA);
|
||||||
|
|
||||||
|
/* Int 16h AH=02h
|
||||||
|
* KEYBOARD - GET SHIFT FLAGS
|
||||||
|
*
|
||||||
|
* Return:
|
||||||
|
* AL - shift flags
|
||||||
|
*/
|
||||||
|
Regs.b.ah = 0x02;
|
||||||
|
Int386(0x16, &Regs, &Regs);
|
||||||
|
|
||||||
KeyboardData = (PCM_KEYBOARD_DEVICE_DATA)(PartialDescriptor + 1);
|
KeyboardData = (PCM_KEYBOARD_DEVICE_DATA)(PartialDescriptor + 1);
|
||||||
KeyboardData->Version = 1;
|
KeyboardData->Version = 1;
|
||||||
KeyboardData->Revision = 1;
|
KeyboardData->Revision = 1;
|
||||||
KeyboardData->Type = 4;
|
KeyboardData->Type = 4;
|
||||||
KeyboardData->Subtype = 0;
|
KeyboardData->Subtype = 0;
|
||||||
KeyboardData->KeyboardFlags = 0x20;
|
KeyboardData->KeyboardFlags = Regs.b.al;
|
||||||
|
|
||||||
/* Create controller key */
|
/* Create controller key */
|
||||||
FldrCreateComponentKey(ControllerKey,
|
FldrCreateComponentKey(ControllerKey,
|
||||||
|
|
Loading…
Reference in a new issue