Example #1
0
        private bool RegisterForRawInput(RawInput.RAWINPUTDEVICE device)
        {
            RawInput.RAWINPUTDEVICE[] devices = new RawInput.RAWINPUTDEVICE[1];
            devices[0] = device;

            return(RegisterForRawInput(devices));
        }
Example #2
0
        /// <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");
        }
Example #3
0
        /// <summary>
        /// Configure the IR Server plugin.
        /// </summary>
        public void Configure(IWin32Window owner)
        {
            LoadSettings();

            DeviceSelect deviceSelect = new DeviceSelect();

            deviceSelect.SelectedDevice = _device;
            deviceSelect.InputByte      = _inputByte;
            deviceSelect.ByteMask       = _byteMask;
            deviceSelect.UseAllBytes    = _useAllBytes;
            deviceSelect.RepeatDelay    = _repeatDelay;

            if (deviceSelect.ShowDialog(owner) == DialogResult.OK)
            {
                _device      = deviceSelect.SelectedDevice;
                _inputByte   = deviceSelect.InputByte;
                _byteMask    = deviceSelect.ByteMask;
                _useAllBytes = deviceSelect.UseAllBytes;
                _repeatDelay = deviceSelect.RepeatDelay;

                SaveSettings();
            }
        }
    private bool RegisterForRawInput(RawInput.RAWINPUTDEVICE device)
    {
      RawInput.RAWINPUTDEVICE[] devices = new RawInput.RAWINPUTDEVICE[1];
      devices[0] = device;

      return RegisterForRawInput(devices);
    }
    /// <summary>
    /// Configure the IR Server plugin.
    /// </summary>
    public void Configure(IWin32Window owner)
    {
      LoadSettings();

      DeviceSelect deviceSelect = new DeviceSelect();
      deviceSelect.SelectedDevice = _device;
      deviceSelect.InputByte = _inputByte;
      deviceSelect.ByteMask = _byteMask;
      deviceSelect.UseAllBytes = _useAllBytes;
      deviceSelect.RepeatDelay = _repeatDelay;

      if (deviceSelect.ShowDialog(owner) == DialogResult.OK)
      {
        _device = deviceSelect.SelectedDevice;
        _inputByte = deviceSelect.InputByte;
        _byteMask = deviceSelect.ByteMask;
        _useAllBytes = deviceSelect.UseAllBytes;
        _repeatDelay = deviceSelect.RepeatDelay;

        SaveSettings();
      }
    }
        /// <summary>
        /// finds the iMon HID devices.
        /// </summary>
        private void FindDevices_HID()
        {
            if (_deviceTree != null) return;
            // configure the device tree
            int numDevices = (_enableRemoteInput ? 1 : 0) + (_enableKeyboardInput ? 1 : 0) + (_enableMouseInput ? 1 : 0);
            DebugWriteLine("FindDevices_HID(): searching for {0} devices", numDevices);
            if (numDevices == 0) return;
            RawInput.RAWINPUTDEVICE rDevice = new RawInput.RAWINPUTDEVICE();
            RawInput.RAWINPUTDEVICE kDevice = new RawInput.RAWINPUTDEVICE();
            RawInput.RAWINPUTDEVICE mDevice = new RawInput.RAWINPUTDEVICE();
            // get the complete list of raw input devices and parse it for supported devices
            List<DeviceDetails> _devices = new List<DeviceDetails>();

            try
            {
                _devices = RawInput.EnumerateDevices();
            }
            catch
            {
                return;
            }

            if (_devices.Count > 0)
            {
                foreach (DeviceDetails details in _devices)
                {
                    DebugWriteLine("FindDevices_HID(): checking device \"{0}\"", details.ID);
                    // check the details against the supported device list
                    foreach (string sDevice in SupportedDevices_HID)
                    {
                        if (details.ID.ToLower().Contains(sDevice.ToLower()))
                        {
                            DebugWriteLine("FindDevices_HID(): Found device \"{0}\"", details.ID.Split('#')[1]);
                            // check for remote device - MI_01#
                            if (details.ID.Contains(HIDRemoteSuffix))
                            {
                                DebugWriteLine("FindDevices_HID(): Found iMon Remote device\n");
                                // found the remote device
                                rDevice = new RawInput.RAWINPUTDEVICE();
                                rDevice.usUsage = details.Usage;
                                rDevice.usUsagePage = details.UsagePage;
                                RemoteDeviceName = details.ID;

                                // on very rare systems RemoteDeviceName is reported wrong, no idea why. Lets change it!
                                if (RemoteDeviceName.StartsWith(@"\??\"))
                                {
                                  DebugWriteLine("FindDevices_HID(): Changing to right RemoteDeviceName...");
                                  DebugWriteLine("FindDevices_HID():    reported RemoteDeviceName: \"{0}\"", RemoteDeviceName);
                                  RemoteDeviceName = @"\\?\" + RemoteDeviceName.Substring(4);
                                  DebugWriteLine("FindDevices_HID():   corrected RemoteDeviceName: \"{0}\"", RemoteDeviceName);
                                }
                            }
                            // check for keyboard device - MI_00&Col02#
                            if (details.ID.Contains(HIDKeyboardSuffix))
                            {
                                DebugWriteLine("FindDevices_HID(): Found iMon Keyboard device\n");
                                // found the keyboard device
                                kDevice = new RawInput.RAWINPUTDEVICE();
                                kDevice.usUsage = details.Usage;
                                kDevice.usUsagePage = details.UsagePage;
                                KeyboardDeviceName = details.ID;
                            }
                            // check for remote device - MI_00&Col01#
                            if (details.ID.Contains(HIDMouseSuffix))
                            {
                                DebugWriteLine("FindDevices_HID(): Found iMon Mouse device\n");
                                // found the mouse device
                                mDevice = new RawInput.RAWINPUTDEVICE();
                                mDevice.usUsage = details.Usage;
                                mDevice.usUsagePage = details.UsagePage;
                                MouseDeviceName = details.ID;
                            }
                        }
                    }
                }
                numDevices = ((rDevice.usUsage > 0) ? 1 : 0) + ((kDevice.usUsage > 0) ? 1 : 0) + ((mDevice.usUsage > 0) ? 1 : 0);
                int DevIndex = 0;
                DebugWriteLine("FindDevices_HID(): Found {0} Devices", numDevices);
                _deviceTree = new RawInput.RAWINPUTDEVICE[numDevices];
                if (rDevice.usUsage > 0)
                {
                    RemoteDevice = DevIndex;
                    DevIndex++;
                    _deviceTree[RemoteDevice].usUsage = rDevice.usUsage;
                    _deviceTree[RemoteDevice].usUsagePage = rDevice.usUsagePage;
                    DebugWriteLine("FindDevices_HID(): Added iMon Remote device as deviceTree[{0}]", RemoteDevice);
                }

                if (kDevice.usUsage > 0)
                {
                    KeyboardDevice = DevIndex;
                    DevIndex++;
                    _deviceTree[KeyboardDevice].usUsage = kDevice.usUsage;
                    _deviceTree[KeyboardDevice].usUsagePage = kDevice.usUsagePage;
                    DebugWriteLine("FindDevices_HID(): Added iMon Keyboard device as deviceTree[{0}]", KeyboardDevice);
                }

                if (mDevice.usUsage > 0)
                {
                    MouseDevice = DevIndex;
                    _deviceTree[MouseDevice].usUsage = mDevice.usUsage;
                    _deviceTree[MouseDevice].usUsagePage = mDevice.usUsagePage;
                    DebugWriteLine("FindDevices_HID(): Added iMon Mouse device as deviceTree[{0}]", MouseDevice);
                }
            }
        }
    /// <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");
    }