Esempio n. 1
0
      /// <summary>
      /// Saves the settings.
      /// </summary>
      public static void SaveSettings(Config config)
      {
        Debug.WriteLine("SaveSettings()");
        XmlSerializer ser = new XmlSerializer(typeof (Config));
        FileStream str = new FileStream(ConfigurationFile, FileMode.Create);

        try
        {
          ser.Serialize(str, config);
        }
        catch (Exception ex)
        {
          Debug.WriteLine(ex.ToString());
        }

        str.Close();
      }
Esempio n. 2
0
      /// <summary>
      /// Loads the settings.
      /// </summary>
      public static void LoadSettings(ref Config config)
      {
        IrssLog.Info("LoadSettings()");
        XmlSerializer ser = new XmlSerializer(typeof (Config));
        StreamReader sr = new StreamReader(ConfigurationFile);

        try
        {
          config = (Config) ser.Deserialize(sr);
        }
        catch (Exception ex)
        {
          IrssLog.Error(ex.ToString());
          config = new Config();
        }

        sr.Close();
      }
Esempio n. 3
0
      /// <summary>
      /// Loads the settings.
      /// </summary>
      public static void LoadSettings(ref Config config)
      {
        Debug.WriteLine("LoadSettings()");
        XmlSerializer ser = new XmlSerializer(typeof (Config));
        StreamReader sr = null;

        try
        {
          sr = new StreamReader(ConfigurationFile);
          config = (Config)ser.Deserialize(sr);
        }
        catch (Exception ex)
        {
          Debug.WriteLine(ex.ToString());
          config = new Config();
        }
        if (sr != null)
          sr.Close();
      }
    /// <summary>
    /// Configure the IR Server plugin.
    /// </summary>
    public void Configure(IWin32Window owner)
    {
      Debug.WriteLine("Configure()");
      _config = new Config();
      ConfigManagement.LoadSettings(ref _config);

      ConfigurationDialog configDialog = new ConfigurationDialog();

      configDialog.DoRepeats = _config.DoRepeats;
      configDialog.UseSystemRatesDelay = _config.UseSystemRatesDelay;
      configDialog.FirstRepeatDelay = _config.FirstRepeatDelay;
      configDialog.HeldRepeatDelay = _config.HeldRepeatDelay;

      if (configDialog.ShowDialog(owner) == DialogResult.OK)
      {
        _config.DoRepeats = configDialog.DoRepeats;
        _config.UseSystemRatesDelay = configDialog.UseSystemRatesDelay;
        _config.FirstRepeatDelay = configDialog.FirstRepeatDelay;
        _config.HeldRepeatDelay = configDialog.HeldRepeatDelay;

        ConfigManagement.SaveSettings(_config);
      }
      Debug.WriteLine("Configure(): Completed");
    }
Esempio n. 5
0
      /// <summary>
      /// Loads the settings. Still using old code to prevent breaking existing setting-files
      /// </summary>
      public static void LoadSettings(ref Config config)
      {
#if !TEST_APPLICATION
        IrssLog.Info("LoadSettings()");
#endif
        //XmlSerializer ser = new XmlSerializer(typeof (Config));
        //StreamReader sr = new StreamReader(ConfigurationFile);

        //try
        //{
        //  config = (Config) ser.Deserialize(sr);
        //}
        //catch (Exception ex)
        //{
        //  IrssLog.Error(ex.ToString());
        //  config = new Config();
        //}

        //sr.Close();
        XmlDocument doc = new XmlDocument();

        try
        {
          doc.Load(ConfigurationFile);
        }
        catch
        {
          return;
        }

        try
        {
          config.LearnTimeout = int.Parse(doc.DocumentElement.Attributes["LearnTimeout"].Value, CultureInfo.InvariantCulture);
        }
        catch
        {
        }
        try
        {
          config._disableMceServices = bool.Parse(doc.DocumentElement.Attributes["DisableMceServices"].Value);
        }
        catch
        {
        }

        try
        {
          config.EnableRemoteInput = bool.Parse(doc.DocumentElement.Attributes["EnableRemoteInput"].Value);
        }
        catch
        {
        }
        try
        {
          config.UseSystemRatesRemote = bool.Parse(doc.DocumentElement.Attributes["UseSystemRatesRemote"].Value);
        }
        catch
        {
        }
        try
        {
          config.RemoteFirstRepeat = int.Parse(doc.DocumentElement.Attributes["RemoteFirstRepeat"].Value,
                                         CultureInfo.InvariantCulture);
        }
        catch
        {
        }
        try
        {
          config.RemoteHeldRepeats = int.Parse(doc.DocumentElement.Attributes["RemoteHeldRepeats"].Value,
                                         CultureInfo.InvariantCulture);
        }
        catch
        {
        }
        try
        {
          config._disableAutomaticButtons = bool.Parse(doc.DocumentElement.Attributes["DisableAutomaticButtons"].Value);
        }
        catch
        {
        }

        try
        {
          config.EnableKeyboardInput = bool.Parse(doc.DocumentElement.Attributes["EnableKeyboardInput"].Value);
        }
        catch
        {
        }
        try
        {
          config.UseSystemRatesKeyboard = bool.Parse(doc.DocumentElement.Attributes["UseSystemRatesKeyboard"].Value);
        }
        catch
        {
        }
        try
        {
          config.KeyboardFirstRepeat = int.Parse(doc.DocumentElement.Attributes["KeyboardFirstRepeat"].Value,
                                           CultureInfo.InvariantCulture);
        }
        catch
        {
        }
        try
        {
          config.KeyboardHeldRepeats = int.Parse(doc.DocumentElement.Attributes["KeyboardHeldRepeats"].Value,
                                           CultureInfo.InvariantCulture);
        }
        catch
        {
        }
        try
        {
          config.HandleKeyboardLocally = bool.Parse(doc.DocumentElement.Attributes["HandleKeyboardLocally"].Value);
        }
        catch
        {
        }
        try
        {
          config.UseQwertzLayout = bool.Parse(doc.DocumentElement.Attributes["UseQwertzLayout"].Value);
        }
        catch
        {
        }

        try
        {
          config.EnableMouseInput = bool.Parse(doc.DocumentElement.Attributes["EnableMouseInput"].Value);
        }
        catch
        {
        }
        try
        {
          config.HandleMouseLocally = bool.Parse(doc.DocumentElement.Attributes["HandleMouseLocally"].Value);
        }
        catch
        {
        }
        try
        {
          config.MouseSensitivity = double.Parse(doc.DocumentElement.Attributes["MouseSensitivity"].Value,
                                           CultureInfo.InvariantCulture);
        }
        catch
        {
        }
      }
Esempio n. 6
0
      /// <summary>
      /// Saves the settings. Still using old code to prevent breaking existing setting-files
      /// </summary>
      public static void SaveSettings(Config config)
      {
#if !TEST_APPLICATION
        IrssLog.Info("SaveSettings()");
#endif
        //XmlSerializer ser = new XmlSerializer(typeof(Config));
        //FileStream str = new FileStream(ConfigurationFile, FileMode.Create);

        //try
        //{
        //  ser.Serialize(str, config);
        //}
        //catch (Exception ex)
        //{
        //  IrssLog.Error(ex.ToString());
        //}

        //str.Close();
        try
        {
          using (XmlTextWriter writer = new XmlTextWriter(ConfigurationFile, Encoding.UTF8))
          {
            writer.Formatting = Formatting.Indented;
            writer.Indentation = 1;
            writer.IndentChar = (char)9;
            writer.WriteStartDocument(true);
            writer.WriteStartElement("settings"); // <settings>

            writer.WriteAttributeString("LearnTimeout", config.LearnTimeout.ToString(CultureInfo.InvariantCulture));
            writer.WriteAttributeString("DisableMceServices", config._disableMceServices.ToString());

            writer.WriteAttributeString("EnableRemoteInput", config.EnableRemoteInput.ToString());
            writer.WriteAttributeString("UseSystemRatesRemote", config.UseSystemRatesRemote.ToString());
            writer.WriteAttributeString("RemoteFirstRepeat", config.RemoteFirstRepeat.ToString(CultureInfo.InvariantCulture));
            writer.WriteAttributeString("RemoteHeldRepeats", config.RemoteHeldRepeats.ToString(CultureInfo.InvariantCulture));
            writer.WriteAttributeString("DisableAutomaticButtons", config._disableAutomaticButtons.ToString());

            writer.WriteAttributeString("EnableKeyboardInput", config.EnableKeyboardInput.ToString());
            writer.WriteAttributeString("UseSystemRatesKeyboard", config.UseSystemRatesKeyboard.ToString());
            writer.WriteAttributeString("KeyboardFirstRepeat", config.KeyboardFirstRepeat.ToString(CultureInfo.InvariantCulture));
            writer.WriteAttributeString("KeyboardHeldRepeats", config.KeyboardHeldRepeats.ToString(CultureInfo.InvariantCulture));
            writer.WriteAttributeString("HandleKeyboardLocally", config.HandleKeyboardLocally.ToString());
            writer.WriteAttributeString("UseQwertzLayout", config.UseQwertzLayout.ToString());

            writer.WriteAttributeString("EnableMouseInput", config.EnableMouseInput.ToString());
            writer.WriteAttributeString("HandleMouseLocally", config.HandleMouseLocally.ToString());
            writer.WriteAttributeString("MouseSensitivity", config.MouseSensitivity.ToString(CultureInfo.InvariantCulture));

            writer.WriteEndElement(); // </settings>
            writer.WriteEndDocument();
          }
        }
#if TRACE
      catch (Exception ex)
      {
        Trace.WriteLine(ex.ToString());
      }
#else
        catch
        {
        }
#endif
      }
    /// <summary>
    /// Configure the IR Server plugin.
    /// </summary>
    public void Configure(IWin32Window owner)
    {
      _config = new Config();
      ConfigManagement.LoadSettings(ref _config);

      ConfigurationDialog configDialog = new ConfigurationDialog();

      configDialog.LearnTimeout = _config.LearnTimeout;
      configDialog.DisableMceServices = _config._disableMceServices;

      configDialog.EnableRemote = _config.EnableRemoteInput;
      configDialog.UseSystemRatesForRemote = _config.UseSystemRatesRemote;
      configDialog.RemoteRepeatDelay = _config.RemoteFirstRepeat;
      configDialog.RemoteHeldDelay = _config.RemoteHeldRepeats;
      configDialog.DisableAutomaticButtons = _config._disableAutomaticButtons;

      configDialog.EnableKeyboard = _config.EnableKeyboardInput;
      configDialog.UseSystemRatesForKeyboard = _config.UseSystemRatesKeyboard;
      configDialog.KeyboardRepeatDelay = _config.KeyboardFirstRepeat;
      configDialog.KeyboardHeldDelay = _config.KeyboardHeldRepeats;
      configDialog.HandleKeyboardLocal = _config.HandleKeyboardLocally;
      configDialog.UseQwertzLayout = _config.UseQwertzLayout;

      configDialog.EnableMouse = _config.EnableMouseInput;
      configDialog.HandleMouseLocal = _config.HandleMouseLocally;
      configDialog.MouseSensitivity = _config.MouseSensitivity;

      if (configDialog.ShowDialog(owner) == DialogResult.OK)
      {
        _config.LearnTimeout = configDialog.LearnTimeout;
        _config._disableMceServices = configDialog.DisableMceServices;

        _config.EnableRemoteInput = configDialog.EnableRemote;
        _config.UseSystemRatesRemote = configDialog.UseSystemRatesForRemote;
        _config.RemoteFirstRepeat = configDialog.RemoteRepeatDelay;
        _config.RemoteHeldRepeats = configDialog.RemoteHeldDelay;
        _config._disableAutomaticButtons = configDialog.DisableAutomaticButtons;

        _config.EnableKeyboardInput = configDialog.EnableKeyboard;
        _config.UseSystemRatesKeyboard = configDialog.UseSystemRatesForKeyboard;
        _config.KeyboardFirstRepeat = configDialog.KeyboardRepeatDelay;
        _config.KeyboardHeldRepeats = configDialog.KeyboardHeldDelay;
        _config.HandleKeyboardLocally = configDialog.HandleKeyboardLocal;

        _config.EnableMouseInput = configDialog.EnableMouse;
        _config.HandleMouseLocally = configDialog.HandleMouseLocal;
        _config.MouseSensitivity = configDialog.MouseSensitivity;

        ConfigManagement.SaveSettings(_config);
      }
    }
    /// <summary>
    /// Start the IR Server plugin.
    /// </summary>
    /// <returns><c>true</c> if successful, otherwise <c>false</c>.</returns>
    public override void Start()
    {
#if TRACE
      Trace.WriteLine("Start MicrosoftMceTransceiver");
#endif

      if (_driver != null)
        throw new InvalidOperationException("MicrosoftMceTransceiver already started");

      _config = new Config();
      ConfigManagement.LoadSettings(ref _config);

      // Put this in a try...catch so that if the registry keys don't exist we don't throw an ugly exception.
      try
      {
        _ignoreAutomaticButtons = CheckAutomaticButtons();
      }
      catch
      {
        _ignoreAutomaticButtons = false;
      }

      if (_config._disableMceServices)
        DisableMceServices();

      Guid deviceGuid;
      string devicePath;

      Driver newDriver = null;

      if (FindDevice(out deviceGuid, out devicePath))
      {
        if (deviceGuid == MicrosoftGuid)
        {
          if (Environment.OSVersion.Version.Major >= VistaVersionNumber)
            newDriver = new DriverVista(deviceGuid, devicePath, RemoteEvent, KeyboardEvent, MouseEvent);
          else
            newDriver = new DriverXP(deviceGuid, devicePath, RemoteEvent, KeyboardEvent, MouseEvent);
        }
        else
        {
          newDriver = new DriverReplacement(deviceGuid, devicePath, RemoteEvent, KeyboardEvent, MouseEvent);
        }
      }
      else
      {
        throw new InvalidOperationException("Device not found");
      }

      newDriver.Start();

      _driver = newDriver;
    }
    /// <summary>
    /// Configure the IR Server plugin.
    /// </summary>
    public void Configure(IWin32Window owner)
    {
      LoadSettings();

      Config config = new Config();
      config.PluginFolder = _pluginFolder;
      config.PluginFile = _pluginFile;

      if (config.ShowDialog(owner) == DialogResult.OK)
      {
        _pluginFolder = config.PluginFolder;
        _pluginFile = config.PluginFile;

        SaveSettings();
      }
    }
    /// <summary>
    /// Start the IR Server plugin.
    /// </summary>
    /// <returns>true if successful, otherwise false.</returns>
    public override void Start()
    {
      _config = new Config();
      ConfigManagement.LoadSettings(ref _config);

      RegisterDeviceNotification();
      StartListener();
    }
    /// <summary>
    /// Configure the IR Server plugin.
    /// </summary>
    public void Configure(IWin32Window owner)
    {
      _config = new Config();
      ConfigManagement.LoadSettings(ref _config);

      InitDeviceList();

      ConfigurationDialog configDialog = new ConfigurationDialog(_deviceList);
      configDialog.DeviceGuid = _config.DeviceGUID;
      configDialog.AxisLimit = _config.AxisLimit;

      if (configDialog.ShowDialog(owner) == DialogResult.OK)
      {
        if (!String.IsNullOrEmpty(configDialog.DeviceGuid))
        {
          _config.DeviceGUID = configDialog.DeviceGuid;
          _config.AxisLimit = configDialog.AxisLimit;

          ConfigManagement.SaveSettings(_config);
        }
      }
    }
    /// <summary>
    /// Start the receiver.
    /// </summary>
    private void Start_Receiver()
    {
      Debug.Open("Philips MCE USB IR Receiver- Spinel plus.log");
      Debug.WriteLine("Start_Receiver()");
      _config = new Config();
      ConfigManagement.LoadSettings(ref _config);

      _firstRepeatDelay = _config.FirstRepeatDelay;
      _heldRepeatDelay = _config.HeldRepeatDelay;

      if (_config.UseSystemRatesDelay)
      {
        _firstRepeatDelay = 250 + (SystemInformation.KeyboardDelay*250);
        _heldRepeatDelay = (int) (1000.0/(2.5 + (SystemInformation.KeyboardSpeed*0.888)));
      }

      // create receiver Window
      _receiverWindow = new ReceiverWindow("Philips MCE USB IR Receiver- Spinel plus Receiver");
      _receiverWindow.ProcMsg += ProcMessage;

      // collect devices
      _deviceList = new List<RawInput.RAWINPUTDEVICE>();
      RawInput.RAWINPUTDEVICE _device;

      foreach (Device device in supportedDevices)
      {
        foreach (DeviceDetails details in device.DeviceDetails)
        {
          _device = new RawInput.RAWINPUTDEVICE();
          _device.usUsage = details.Usage;
          _device.usUsagePage = details.UsagePage;
          _device.dwFlags = RawInput.RawInputDeviceFlags.InputSink;
          _device.hwndTarget = _receiverWindow.Handle;
          _deviceList.Add(_device);
        }
      }

      if (!RegisterForRawInput(_deviceList.ToArray()))
      {
        Debug.WriteLine("ERROR: Failed to register for HID Raw input");
        throw new InvalidOperationException("Failed to register for HID Raw input");
      }

      Debug.WriteLine("Start_Receiver(): completed");
    }