### Godot version

v4.0.beta15.official [4fa6edc88]

### System information

Windows 10

### Issue description

I use a custom keyboard layout (I made it myself), and it has «dead keys» (just like International keyboard layouts have). For example, if I press `'`, nothing happens, but if I press `a` after that, I'll get `á`. If I press `'` and `Space`, I'll get just `'`. And with my layout:
If I press `Shift + .` and then `a`, I will get `ᵄ`.
If I press `Shift + .` and then `Space`, I will get `>`.
If I press `Shift + [` and then `5`, I will get `₅`.
If I press `Shift + [` and then `Space`, I will get `{`.
In beta 14 and before, everything worked fine, but in beta 15 when I press `Shift + .` and `Space`, just nothing happens, I don't get `>`. Same for `Shift + [` and `Space`, I don't get `>`. It seems the problem is with `Shift`, because I still can type `á` (`'` and `a`) or `'` (`'` and `Space`), but not `ä` (`Shift + '` and `a`) or `"` (`Shift + '` and `Space`). In the latter cases I get `á` and `'` as if `Shift` were never pressed.

### Steps to reproduce

Install/add US International keyboard layout or [Extended Latin keyboard layout](https://github.com/godotengine/godot/files/10494466/Layouts.zip) (just run `Extended Latin\ExtLat6\setup.exe`).
Open script editor.
Press `Shift + '`.
Then press `a`.

### Minimal reproduction project

N/A
} else {
					
				}
			} break;
			case WM_KEYUP:
			case WM_KEYDOWN: {
				Ref<InputEventKey> k;
				k.instantiate();
				k->set_window_id(ke.window_id);
				k->set_shift_pressed(ke.shift);
				k->set_alt_pressed(ke.alt);
				k->set_ctrl_pressed(ke.control);
				k->set_meta_pressed(ke.meta);
				k->set_pressed(ke.uMsg == WM_KEYDOWN);
				Key keycode = KeyMappingWindows::get_keysym(ke.wParam);
				if ((ke.lParam & (1 << 24)) && (ke.wParam == VK_RETURN)) {
					
					keycode = Key::KP_ENTER;
				}
				Key key_label = keycode;
				Key physical_keycode = KeyMappingWindows::get_scansym((ke.lParam >> 16) & 0xFF, ke.lParam & (1 << 24));
				static BYTE keyboard_state[256];
				memset(keyboard_state, 0, 256);
				wchar_t chars[256] = {};
				UINT extended_code = MapVirtualKey((ke.lParam >> 16) & 0xFF, MAPVK_VSC_TO_VK_EX);
				if (!(ke.lParam & (1 << 24)) && ToUnicodeEx(extended_code, (ke.lParam >> 16) & 0xFF, keyboard_state, chars, 255, 0, GetKeyboardLayout(0)) > 0) {
					String keysym = String::utf16((char16_t *)chars, 255);
					if (!keysym.is_empty()) {
						key_label = fix_key_label(keysym[0], keycode);
					}