/// <summary> /// Adds a key up to the list of <see cref="INPUT"/> messages. /// </summary> /// <param name="keyCode">The <see cref="VirtualKeyCode"/>.</param> /// <returns>This <see cref="InputBuilder"/> instance.</returns> public InputBuilder AddKeyUp(VirtualKeyCode keyCode) { KeyboardFlag flags = KeyboardFlag.KeyUp; ushort scanCode = (UInt16)(NativeMethods.MapVirtualKey((UInt32)keyCode, 0) & 0xFFU); if (keyCode == VirtualKeyCode.LSHIFT) { flags |= KeyboardFlag.ScanCode; scanCode = 0x2A; } var up = new INPUT { Type = (UInt32)InputType.Keyboard, Data = { Keyboard = new KEYBDINPUT { KeyCode = (UInt16)keyCode, Scan = scanCode, Flags = (UInt32)(IsExtendedKey(keyCode) ? flags | KeyboardFlag.ExtendedKey : flags), Time = 0, ExtraInfo = IntPtr.Zero } } }; _inputList.Add(up); return(this); }
private static INPUT CreateKeyboardInput(Keys key, KeyboardFlag flags) { if (IsExtendedKey(key)) { flags |= KeyboardFlag.ExtendedKey; } return(new INPUT { Type = (uint)InputType.Keyboard, Data = new InputUnion { KeyboardInput = new KEYBDINPUT { KeyCode = 0, Scan = GetScanCode(key), Flags = (UInt32)flags, Time = 0, ExtraInfo = IntPtr.Zero } } }); }
public static extern void KeybdEvent(byte bVk, byte bScan, KeyboardFlag dwFlags, UIntPtr dwExtraInfo);