private static void InitializeInputWin() { //Close existing input wins except for one var allInputWins = (EditorInput[])Resources.FindObjectsOfTypeAll(typeof(EditorInput)); for (int i = 0; i < allInputWins.Length; i++) { if (i == allInputWins.Length - 1) { //Keep the last one inputWin = allInputWins[i]; } else { allInputWins[i].Close(); } } if (inputWin == null) { //If couldn't find an existing one, create a hidden EditorWindow to receive an editor event Rect winPos = new Rect(-5000, -5000, 1, 1); inputWin = CreateInstance <EditorInput>(); inputWin.SetWindowTitle("EditorInputWin", true); inputWin.minSize = winPos.size; inputWin.maxSize = winPos.size; inputWin.position = winPos; inputWin.ShowWithMode(EditorWindowExtensions.ShowMode.NoShadow); inputWin.SetSaveToLayout(false); EditorMainWindow.Focus(); } #if UNITY_STANDALONE_WIN && (UNITY_5_0 || UNITY_5_1) inputWin.DisableKeyboardCapture(); inputWin.InitKeyboardCapture(); #endif }