+ bool foundModifier = false;
+ if (KeyCount > 0)
+ {
+ for (int i = _input.Count - 1; i >= 0; i--)
+ {
+
+ if (_input[i].Data.Keyboard.Flags == 0 && (
+ (ushort)WindowsAPI.VirtualKeyCode.VK_SHIFT == _input[i].Data.Keyboard.KeyCode ||
+ (ushort)WindowsAPI.VirtualKeyCode.VK_LSHIFT == _input[i].Data.Keyboard.KeyCode ||
+ (ushort)WindowsAPI.VirtualKeyCode.VK_RSHIFT == _input[i].Data.Keyboard.KeyCode ||
+
+ (ushort)WindowsAPI.VirtualKeyCode.VK_CONTROL == _input[i].Data.Keyboard.KeyCode ||
+ (ushort)WindowsAPI.VirtualKeyCode.VK_LCONTROL == _input[i].Data.Keyboard.KeyCode ||
+ (ushort)WindowsAPI.VirtualKeyCode.VK_RCONTROL == _input[i].Data.Keyboard.KeyCode ||
+
+ (ushort)WindowsAPI.VirtualKeyCode.VK_MENU == _input[i].Data.Keyboard.KeyCode ||
+ (ushort)WindowsAPI.VirtualKeyCode.VK_LMENU == _input[i].Data.Keyboard.KeyCode ||
+ (ushort)WindowsAPI.VirtualKeyCode.VK_RMENU == _input[i].Data.Keyboard.KeyCode
+ ))
+ {
+ foundModifier = true;
+ _input.Insert(i+1, input._input[0]);
+ _input.Insert(i+2, input._input[1]);
+ break;
+ }
+ }
+ }
+
+ if (!foundModifier)
+ {
+ _input.Add(input._input[0]);
+ _input.Add(input._input[1]);
+ }