[NTVDM]
authorAleksandar Andrejevic <aandrejevic@reactos.org>
Tue, 5 May 2015 17:56:37 +0000 (17:56 +0000)
committerAleksandar Andrejevic <aandrejevic@reactos.org>
Tue, 5 May 2015 17:56:37 +0000 (17:56 +0000)
The DOS CON driver should support extended keystrokes.

svn path=/trunk/; revision=67561

reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/condrv.c

index ec4440e..d818c5c 100644 (file)
@@ -42,8 +42,8 @@ WORD NTAPI ConDrvReadInput(PDOS_DEVICE_NODE Device, DWORD Buffer, PWORD Length)
     {
         if (!ExtendedCode)
         {
-            /* Call the BIOS INT 16h, AH=00h "Get Keystroke" */
-            setAH(0x00);
+            /* Call the BIOS INT 16h, AH=10h "Get Extended Keystroke" */
+            setAH(0x10);
             Int32Call(&DosContext, BIOS_KBD_INTERRUPT);
 
             /* Retrieve the character in AL (scan code is in AH) */
@@ -59,7 +59,7 @@ WORD NTAPI ConDrvReadInput(PDOS_DEVICE_NODE Device, DWORD Buffer, PWORD Length)
         }
 
         /* Check if this is a special character */
-        if (Character == 0) ExtendedCode = getAH();
+        if (Character == 0 || Character == 0xE0) ExtendedCode = getAH();
 
         if (DoEcho) DosPrintCharacter(DOS_OUTPUT_HANDLE, Character);
         Pointer[BytesRead++] = Character;