Use unordered_map for keydown to allow codes above 255 (#248)

- Adds internal support for 32bit key codes, required for proper keyboard input on Linux
- Use gdk_keyval_name to get key name on Linux
This commit is contained in:
SSimco 2022-09-18 18:07:26 -07:00 committed by GitHub
parent 5e968eff4f
commit 9f02733a0d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 143 additions and 83 deletions

View file

@ -170,16 +170,16 @@ int CemuApp::FilterEvent(wxEvent& event)
{
const auto& key_event = (wxKeyEvent&)event;
wxGetKeyState(wxKeyCode::WXK_F17);
uint32 keycode=fix_raw_keycode(key_event.GetRawKeyCode(), key_event.GetRawKeyFlags());
if(keycode<256)
g_window_info.keydown[keycode] = true;
g_window_info.set_keystate(fix_raw_keycode(key_event.GetRawKeyCode(), key_event.GetRawKeyFlags()), true);
}
else if(event.GetEventType() == wxEVT_KEY_UP)
{
const auto& key_event = (wxKeyEvent&)event;
uint32 keycode=fix_raw_keycode(key_event.GetRawKeyCode(), key_event.GetRawKeyFlags());
if(keycode<256)
g_window_info.keydown[keycode] = false;
g_window_info.set_keystate(fix_raw_keycode(key_event.GetRawKeyCode(), key_event.GetRawKeyFlags()), false);
}
else if(event.GetEventType() == wxEVT_KILL_FOCUS)
{
g_window_info.set_keystatesdown();
}
return wxApp::FilterEvent(event);