Rename scancode to keycode.
Add `physical_keycode` (keyboard layout independent keycodes) to InputEventKey and InputMap. Fix non-latin keyboard layout keycodes on Linux/X11 (fallback to physical keycodes).
This commit is contained in:
@ -1135,7 +1135,8 @@ void OS_Windows::process_key_events() {
|
||||
k->set_control(ke.control);
|
||||
k->set_metakey(ke.meta);
|
||||
k->set_pressed(true);
|
||||
k->set_scancode(KeyMappingWindows::get_keysym(ke.wParam));
|
||||
k->set_keycode(KeyMappingWindows::get_keysym(ke.wParam));
|
||||
k->set_physical_keycode(KeyMappingWindows::get_scansym((ke.lParam >> 16) & 0xFF, ke.lParam & (1 << 24)));
|
||||
k->set_unicode(ke.wParam);
|
||||
if (k->get_unicode() && gr_mem) {
|
||||
k->set_alt(false);
|
||||
@ -1165,11 +1166,13 @@ void OS_Windows::process_key_events() {
|
||||
|
||||
if ((ke.lParam & (1 << 24)) && (ke.wParam == VK_RETURN)) {
|
||||
// Special case for Numpad Enter key
|
||||
k->set_scancode(KEY_KP_ENTER);
|
||||
k->set_keycode(KEY_KP_ENTER);
|
||||
} else {
|
||||
k->set_scancode(KeyMappingWindows::get_keysym(ke.wParam));
|
||||
k->set_keycode(KeyMappingWindows::get_keysym(ke.wParam));
|
||||
}
|
||||
|
||||
k->set_physical_keycode(KeyMappingWindows::get_scansym((ke.lParam >> 16) & 0xFF, ke.lParam & (1 << 24)));
|
||||
|
||||
if (i + 1 < key_event_pos && key_event_buffer[i + 1].uMsg == WM_CHAR) {
|
||||
k->set_unicode(key_event_buffer[i + 1].wParam);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user