Skip to content

Commit

Permalink
Merge pull request #38820 from ericrybick/master
Browse files Browse the repository at this point in the history
Fix certain characters being recognized as special keys on Windows when using the us international layout
  • Loading branch information
akien-mga authored May 18, 2020
2 parents d3d118b + e460456 commit 9844cd4
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 1 deletion.
3 changes: 2 additions & 1 deletion platform/windows/display_server_windows.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2658,7 +2658,8 @@ void DisplayServerWindows::_process_key_events() {
KeyEvent &ke = key_event_buffer[i];
switch (ke.uMsg) {
case WM_CHAR: {
if ((i == 0 && ke.uMsg == WM_CHAR) || (i > 0 && key_event_buffer[i - 1].uMsg == WM_CHAR)) {
// extended keys should only be processed as WM_KEYDOWN message.
if (!KeyMappingWindows::is_extended_key(ke.wParam) && ((i == 0 && ke.uMsg == WM_CHAR) || (i > 0 && key_event_buffer[i - 1].uMsg == WM_CHAR))) {
Ref<InputEventKey> k;
k.instance();

Expand Down
13 changes: 13 additions & 0 deletions platform/windows/key_mapping_windows.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -411,3 +411,16 @@ unsigned int KeyMappingWindows::get_scansym(unsigned int p_code, bool p_extended

return keycode;
}

bool KeyMappingWindows::is_extended_key(unsigned int p_code) {
return p_code == VK_INSERT ||
p_code == VK_DELETE ||
p_code == VK_HOME ||
p_code == VK_END ||
p_code == VK_PRIOR ||
p_code == VK_NEXT ||
p_code == VK_LEFT ||
p_code == VK_UP ||
p_code == VK_RIGHT ||
p_code == VK_DOWN;
}
1 change: 1 addition & 0 deletions platform/windows/key_mapping_windows.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class KeyMappingWindows {
public:
static unsigned int get_keysym(unsigned int p_code);
static unsigned int get_scansym(unsigned int p_code, bool p_extended);
static bool is_extended_key(unsigned int p_code);
};

#endif // KEY_MAPPING_WINDOWS_H

0 comments on commit 9844cd4

Please sign in to comment.