PlatformKeyboardEvent::PlatformKeyboardEvent(wxKeyEvent& event) { if (event.GetEventType() == wxEVT_KEY_UP) m_type = KeyUp; else if (event.GetEventType() == wxEVT_KEY_DOWN) m_type = KeyDown; else if (event.GetEventType() == wxEVT_CHAR) m_type = Char; else ASSERT_NOT_REACHED(); if (m_type != Char) m_keyIdentifier = keyIdentifierForWxKeyCode(event.GetKeyCode()); else { //ENTER is an editing command processed as a char (only Enter and Tab are) //unfortunately the unicode key for numpad_enter (370) is NOT what we want here (13) //The unicode values for normal enter and tab are the same as the ASCII values, thus ok //Note that I think this a wx bug, as the Character Code is actually 13 when //numpad_enter is a CHAR event. if (event.GetKeyCode() == 13 && event.GetUnicodeKey() == wxChar(370)) m_text = "\r"; else m_text = wxString(event.GetUnicodeKey()); m_unmodifiedText = m_text; } m_autoRepeat = false; // FIXME: not correct. m_windowsVirtualKeyCode = windowsKeyCodeForKeyEvent(event.GetKeyCode()); m_nativeVirtualKeyCode = event.GetKeyCode(); m_isKeypad = (event.GetKeyCode() >= WXK_NUMPAD_SPACE) && (event.GetKeyCode() <= WXK_NUMPAD_DIVIDE); m_shiftKey = event.ShiftDown(); m_ctrlKey = event.CmdDown(); m_altKey = event.AltDown(); m_metaKey = event.MetaDown(); }
PlatformKeyboardEvent::PlatformKeyboardEvent(wxKeyEvent& event) { m_text = wxString(event.GetUnicodeKey()); m_unmodifiedText = m_text; m_keyIdentifier = keyIdentifierForWxKeyCode(event.GetKeyCode()); m_isKeyUp = event.GetEventType() == wxEVT_KEY_UP; m_autoRepeat = false; // FIXME: not correct. m_WindowsKeyCode = windowsKeyCodeForKeyEvent(event.GetKeyCode()); m_isKeypad = (event.GetKeyCode() >= WXK_NUMPAD_SPACE) && (event.GetKeyCode() <= WXK_NUMPAD_DIVIDE); m_shiftKey = event.ShiftDown(); m_ctrlKey = event.CmdDown(); m_altKey = event.AltDown(); m_metaKey = event.MetaDown(); }