From 361da0de98b40e2fc793bec0e5561d01da8640f2 Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Fri, 29 Jul 2011 19:14:33 +0000 Subject: [PATCH] Xor numlock and shift for numpad. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3737 --- src/ints/bios_keyboard.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ints/bios_keyboard.cpp b/src/ints/bios_keyboard.cpp index cc2dc5fe..705702e0 100644 --- a/src/ints/bios_keyboard.cpp +++ b/src/ints/bios_keyboard.cpp @@ -382,7 +382,7 @@ static Bitu IRQ1_Handler(void) { add_key(scan_to_scanascii[scancode].normal+0x5000); } else if (flags1 &0x04) { add_key((scan_to_scanascii[scancode].control&0xff00)|0xe0); - } else if( ((flags1 &0x3) != 0) || ((flags1 &0x20) != 0) ) { + } else if( ((flags1 &0x3) != 0) || ((flags1 &0x20) != 0) ) { //Due to |0xe0 results are identical. add_key((scan_to_scanascii[scancode].shift&0xff00)|0xe0); } else add_key((scan_to_scanascii[scancode].normal&0xff00)|0xe0); break; @@ -393,7 +393,7 @@ static Bitu IRQ1_Handler(void) { mem_writeb(BIOS_KEYBOARD_TOKEN,token); } else if (flags1 &0x04) { add_key(scan_to_scanascii[scancode].control); - } else if( ((flags1 &0x3) != 0) || ((flags1 &0x20) != 0) ) { + } else if( ((flags1 &0x3) != 0) ^ ((flags1 &0x20) != 0) ) { //Xor shift and numlock (both means off) add_key(scan_to_scanascii[scancode].shift); } else add_key(scan_to_scanascii[scancode].normal); break;