diff --git a/mozilla/widget/src/os2/nsWindow.cpp b/mozilla/widget/src/os2/nsWindow.cpp index 2dafaa41eb2..725a08d830f 100644 --- a/mozilla/widget/src/os2/nsWindow.cpp +++ b/mozilla/widget/src/os2/nsWindow.cpp @@ -1798,6 +1798,10 @@ PRBool nsWindow::OnKey( MPARAM mp1, MPARAM mp2) event.isShift = PR_FALSE; // OS2TODO - Why do we need this? event.keyCode = 0; } + else if (usChar != ' ') + { + event.charCode = 0; + } } } @@ -2661,7 +2665,12 @@ PRUint32 WMChar2KeyCode( MPARAM mp1, MPARAM mp2) else if( flags & KC_VIRTUALKEY) { USHORT vk = SHORT2FROMMP( mp2); - if( !(flags & KC_CHAR) || + if( (flags & KC_ALT) && isNumPadScanCode(CHAR4FROMMP(mp1)) ) + { + // No virtual key value for Alt+NumPad keystrokes + rc = 0; + } + else if( !(flags & KC_CHAR) || (vk == VK_BACKSPACE) || (vk == VK_TAB) || (vk == VK_ENTER) || (vk == VK_NEWLINE) || (vk == VK_SPACE) ) { diff --git a/mozilla/widget/src/os2/nsWindow.h b/mozilla/widget/src/os2/nsWindow.h index 424fae17ffd..3437962e643 100644 --- a/mozilla/widget/src/os2/nsWindow.h +++ b/mozilla/widget/src/os2/nsWindow.h @@ -295,6 +295,24 @@ protected: #define PM2NS_PARENT NS2PM_PARENT #define PM2NS NS2PM +#define PMSCAN_PAD7 0x47 +#define PMSCAN_PAD8 0x48 +#define PMSCAN_PAD9 0x49 +#define PMSCAN_PADMINUS 0x4A +#define PMSCAN_PAD4 0x4B +#define PMSCAN_PAD5 0x4C +#define PMSCAN_PAD6 0x4D +#define PMSCAN_PADPLUS 0x4E +#define PMSCAN_PAD1 0x4F +#define PMSCAN_PAD2 0x50 +#define PMSCAN_PAD3 0x51 +#define PMSCAN_PAD0 0x52 + +#define isNumPadScanCode(scanCode) !( (scanCode < PMSCAN_PAD7) || \ + (scanCode > PMSCAN_PAD0) || \ + (scanCode == PMSCAN_PADMINUS) || \ + (scanCode == PMSCAN_PADPLUS) ) + extern PRUint32 WMChar2KeyCode( MPARAM mp1, MPARAM mp2); extern nsWindow *NS_HWNDToWindow( HWND hwnd);