private INPUT CreateUtf16InputKey(ushort utf16, KEYBDINPUT_FLAGS dwFlags)
 {
     return(new INPUT()
     {
         type = INPUT_TYPE.INPUT_KEYBOARD,
         u = new InputUnion
         {
             ki = new KEYBDINPUT
             {
                 wVk = 0,
                 wScan = utf16,
                 dwFlags = KEYBDINPUT_FLAGS.KEYEVENTF_UNICODE | dwFlags,
                 dwExtraInfo = (System.UIntPtr) 0
             }
         }
     });
 }
 private INPUT CreateInputKey(KeysEx keyCode, KEYBDINPUT_FLAGS dwFlags)
 {
     return(new INPUT()
     {
         type = INPUT_TYPE.INPUT_KEYBOARD,
         u = new InputUnion
         {
             ki = new KEYBDINPUT
             {
                 wVk = (System.UInt16)keyCode,
                 wScan = 0,
                 dwFlags = dwFlags,
                 dwExtraInfo = NativeWin32.GetMessageExtraInfo()
             }
         }
     });
 }