void AttachKeyboardDeviceWithConfig(UnityInputDeviceProfile config) { if (_keyboardDevicesAttached) { return; } var keyboardDevice = new UnityInputDevice(config); AttachDevice(keyboardDevice); _keyboardDevicesAttached = true; }
void DetectAttachedJoystickDevice(int unityJoystickId, string unityJoystickName) { if (unityJoystickName == "WIRED CONTROLLER" || unityJoystickName == " WIRED CONTROLLER") { // Ignore Steam controller for now. return; } if (unityJoystickName.IndexOf("webcam", StringComparison.OrdinalIgnoreCase) != -1) { // Unity thinks some webcams are joysticks. >_< return; } // As of Unity 4.6.3p1, empty strings on windows represent disconnected devices. if ((Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer) && string.IsNullOrEmpty(unityJoystickName)) { return; } UnityInputDeviceProfile matchedDeviceProfile = _deviceProfiles.Find(config => config.HasJoystickName(unityJoystickName)) ?? _deviceProfiles.Find(config => config.HasLastResortRegex(unityJoystickName)); UnityInputDeviceProfile deviceProfile = null; if (matchedDeviceProfile == null) { deviceProfile = new UnityUnknownDeviceProfile(unityJoystickName); _deviceProfiles.Add(deviceProfile); } else { deviceProfile = matchedDeviceProfile; } if ( devices.OfType <UnityInputDevice>() .Any(unityDevice => unityDevice.IsConfiguredWith(deviceProfile, unityJoystickId))) { Log.Info("Device \"{0}\" is already configured with {1}", unityJoystickName, deviceProfile.Name); return; } if (!deviceProfile.IsHidden) { var joystickDevice = new UnityInputDevice(deviceProfile, unityJoystickId); AttachDevice(joystickDevice); if (matchedDeviceProfile == null) { Log.Warning("Device {0} with name \"{1}\" does not match any known profiles.", unityJoystickId, unityJoystickName); } else { Log.Info("Device {0} matched profile {1} ({2})", unityJoystickId, deviceProfile.GetType().Name, deviceProfile.Name); } } else { Log.Info("Device {0} matching profile {1} ({2}) is hidden and will not be attached.", unityJoystickId, deviceProfile.GetType().Name, deviceProfile.Name); } }