From 53ac3c967d703b0e3733adf4f71e7215da2e18ed Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Sat, 30 Oct 2004 12:11:29 +0000 Subject: [PATCH] Change extended key codes (wd) Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2045 --- src/ints/bios_keyboard.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ints/bios_keyboard.cpp b/src/ints/bios_keyboard.cpp index 8e30c843..eb3fdb3c 100644 --- a/src/ints/bios_keyboard.cpp +++ b/src/ints/bios_keyboard.cpp @@ -304,14 +304,20 @@ static Bitu IRQ1_Handler(void) { case 0x53: /* del . Not entirely correct, but works fine */ if(flags3 &0x02) { /*extend key. e.g key above arrows or arrows*/ if(scancode == 0x52) flags2 |=0x80; /* press insert */ - add_key((scancode <<8)|0xe0); + if(flags1 &0x08) { + add_key(scan_to_scanascii[scancode].normal+0x5000); + } else if( ((flags1 &0x3) != 0) ^ ((flags1 &0x20) != 0) ) { + add_key((scan_to_scanascii[scancode].shift&0xff00)|0xe0); + } else if (flags1 &0x04) { + add_key((scan_to_scanascii[scancode].control&0xff00)|0xe0); + } else add_key((scan_to_scanascii[scancode].normal&0xff00)|0xe0); break; } if(flags1 &0x08) { Bit8u token = mem_readb(BIOS_KEYBOARD_TOKEN); token= token*10 + scan_to_scanascii[scancode].alt; mem_writeb(BIOS_KEYBOARD_TOKEN,token); - } else if( ((flags1 &0x3)!=0) ^ ((flags1 &0x20) !=0) ) { + } else if( ((flags1 &0x3) != 0) ^ ((flags1 &0x20) != 0) ) { add_key(scan_to_scanascii[scancode].shift); } else if (flags1 &0x04) { add_key(scan_to_scanascii[scancode].control);