private bool RegisterForRawInput(RawInput.RAWINPUTDEVICE device) { RawInput.RAWINPUTDEVICE[] devices = new RawInput.RAWINPUTDEVICE[1]; devices[0] = device; return(RegisterForRawInput(devices)); }
/// <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"); }
/// <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"); }