- INT 09h: fixed handling of extended keys (asciicode = 0xe0)

- left backslash key added in keycode table
This commit is contained in:
Volker Ruppert 2006-08-07 20:26:58 +00:00
parent b48dce5c3c
commit 0ae9f5670e
2 changed files with 7 additions and 3 deletions

Binary file not shown.

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// $Id: rombios.c,v 1.164 2006-07-30 09:37:33 vruppert Exp $ // $Id: rombios.c,v 1.165 2006-08-07 20:26:17 vruppert Exp $
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2002 MandrakeSoft S.A. // Copyright (C) 2002 MandrakeSoft S.A.
@ -932,7 +932,7 @@ Bit16u cdrom_boot();
#endif // BX_ELTORITO_BOOT #endif // BX_ELTORITO_BOOT
static char bios_cvs_version_string[] = "$Revision: 1.164 $ $Date: 2006-07-30 09:37:33 $"; static char bios_cvs_version_string[] = "$Revision: 1.165 $ $Date: 2006-08-07 20:26:17 $";
#define BIOS_COPYRIGHT_STRING "(c) 2002 MandrakeSoft S.A. Written by Kevin Lawton & the Bochs team." #define BIOS_COPYRIGHT_STRING "(c) 2002 MandrakeSoft S.A. Written by Kevin Lawton & the Bochs team."
@ -1129,7 +1129,7 @@ static struct {
{ 0x5300, 0x532e, none, none, 0x20 }, /* Del */ { 0x5300, 0x532e, none, none, 0x20 }, /* Del */
{ none, none, none, none, none }, { none, none, none, none, none },
{ none, none, none, none, none }, { none, none, none, none, none },
{ none, none, none, none, none }, { 0x565c, 0x567c, none, none, none }, /* \| */
{ 0x5700, 0x5700, none, none, none }, /* F11 */ { 0x5700, 0x5700, none, none, none }, /* F11 */
{ 0x5800, 0x5800, none, none, none } /* F12 */ { 0x5800, 0x5800, none, none, none } /* F12 */
}; };
@ -4626,6 +4626,10 @@ int09_function(DI, SI, BP, SP, BX, DX, CX, AX)
} else if (shift_flags & 0x04) { /* CONTROL */ } else if (shift_flags & 0x04) { /* CONTROL */
asciicode = scan_to_scanascii[scancode].control; asciicode = scan_to_scanascii[scancode].control;
scancode = scan_to_scanascii[scancode].control >> 8; scancode = scan_to_scanascii[scancode].control >> 8;
} else if (((mf2_state & 0x02) > 0) && ((scancode >= 0x47) && (scancode <= 0x53))) {
/* extended keys handling */
asciicode = 0xe0;
scancode = scan_to_scanascii[scancode].normal >> 8;
} else if (shift_flags & 0x03) { /* LSHIFT + RSHIFT */ } else if (shift_flags & 0x03) { /* LSHIFT + RSHIFT */
/* check if lock state should be ignored /* check if lock state should be ignored
* because a SHIFT key are pressed */ * because a SHIFT key are pressed */