Example #1
0
 internal RawInputDigitizer(RawInputDeviceHandle device, RawInputDeviceInfo deviceInfo)
     : base(device, deviceInfo)
 {
     if (!IsSupported(deviceInfo.Hid.UsageAndPage))
     {
         throw new ArgumentException($"UsagePage and Usage {deviceInfo.Hid.UsageAndPage} is not supported as a digitizer.", nameof(deviceInfo));
     }
 }
Example #2
0
 internal RawInputMouse(RawInputDeviceHandle device, RawInputDeviceInfo deviceInfo)
     : base(device, deviceInfo)
 {
     if (deviceInfo.Type != RawInputDeviceType.Mouse)
     {
         throw new ArgumentException($"Device type must be {RawInputDeviceType.Mouse}.", nameof(deviceInfo));
     }
 }
 internal RawInputKeyboard(RawInputDeviceHandle device, RawInputDeviceInfo deviceInfo)
     : base(device, deviceInfo)
 {
     if (deviceInfo.Type != RawInputDeviceType.Keyboard)
     {
         throw new ArgumentException($"Device type must be {RawInputDeviceType.Keyboard}", nameof(deviceInfo));
     }
 }
Example #4
0
        internal RawInputHid(RawInputDeviceHandle device, RawInputDeviceInfo deviceInfo)
            : base(device, deviceInfo)
        {
            if (deviceInfo.Type != RawInputDeviceType.Hid)
            {
                throw new ArgumentException($"Device type must be {RawInputDeviceType.Hid}.", nameof(deviceInfo));
            }

            hidReader = new Lazy <HidReader>(() => new HidReader(GetPreparsedData()));
        }
Example #5
0
        private void DeviceListAdd(RawInputDevice device)
        {
            string vid = "0000";
            string pid = "0000";

            if (device.DevicePath != null)
            {
                vid = device.VendorId.ToString("X4");
                pid = device.ProductId.ToString("X4");
            }

            string[] row = { RawInputDeviceHandle.GetRawValue(device.Handle).ToString("X8"), device.DeviceType.ToString(), vid, pid, device.ProductName, device.ManufacturerName, "?", "?", "?", (screenWidth / 2).ToString(), (screenHeight / 2).ToString(), GetFancyDeviceName(device), device.DevicePath };
            table.Rows.Add(row);
        }
Example #6
0
        protected override void WndProc(ref Message m)
        {
            // Raw input event
            if (m.Msg == WM_INPUT)
            {
                var data = RawInputData.FromHandle(m.LParam);

                if (data == null)
                {
                    Log("RawInputData NULL!");
                    base.WndProc(ref m);
                    return;
                }

                // Device type
                switch (data)
                {
                case RawInputMouseData mouse:
                    string handleM = "00000000";

                    if (mouse.Device != null)
                    {
                        handleM = RawInputDeviceHandle.GetRawValue(mouse.Device.Handle).ToString("X8");
                    }

                    var nameM = GetFancyDeviceName(mouse.Device);
                    var mode  = mouse.Mouse.Flags;
                    var x     = mouse.Mouse.LastX;
                    var y     = mouse.Mouse.LastY;

                    for (int i = 0; i < table.Rows.Count; i++)
                    {
                        if ((string)(table.Rows[i].Cells[0].Value) == handleM)
                        {
                            bool resize = false;

                            if (table.Rows[i].Cells[6].Value.ToString() != mode.ToString())
                            {
                                resize = true;
                            }

                            table.Rows[i].Cells[6].Value = mode;
                            table.Rows[i].Cells[7].Value = x;
                            table.Rows[i].Cells[8].Value = y;

                            if (mode.HasFlag(RawMouseFlags.MoveRelative))
                            {
                                // Super advanced position determination
                                table.Rows[i].Cells[9].Value  = Math.Min(Math.Max(Int32.Parse(table.Rows[i].Cells[9].Value.ToString()) + x, 0), screenWidth);
                                table.Rows[i].Cells[10].Value = Math.Min(Math.Max(Int32.Parse(table.Rows[i].Cells[10].Value.ToString()) + y, 0), screenHeight);
                            }
                            else if (mode.HasFlag(RawMouseFlags.MoveAbsolute))
                            {
                                table.Rows[i].Cells[9].Value  = Math.Round((float)x / (float)0xFFFF * (float)screenWidth).ToString();
                                table.Rows[i].Cells[10].Value = Math.Round((float)y / (float)0xFFFF * (float)screenHeight).ToString();
                            }

                            if (resize)
                            {
                                table.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
                            }

                            break;
                        }
                    }

                    // Log event?
                    if (chkEnabled.Checked)
                    {
                        if (mouse.Mouse.Buttons != RawMouseButtonFlags.None || (mouse.Mouse.Buttons == RawMouseButtonFlags.None && chkPosition.Checked))
                        {
                            Log($"Handle: {handleM:X8}\tName: {nameM}\tX: {mouse.Mouse.LastX}\tY: {mouse.Mouse.LastY}\tFlags: {mouse.Mouse.Flags}\tButtons: {mouse.Mouse.Buttons}\tData: {mouse.Mouse.ButtonData}");
                        }
                    }

                    break;

                case RawInputKeyboardData keyboard:
                    string handleK = "00000000";

                    if (keyboard.Device != null)
                    {
                        handleK = RawInputDeviceHandle.GetRawValue(keyboard.Device.Handle).ToString("X8");
                    }

                    var nameK = GetFancyDeviceName(keyboard.Device);

                    // Log event?
                    if (chkEnabled.Checked)
                    {
                        Log($"Handle: {handleK:X8}\tName: {nameK}\tKeyCode: {keyboard.Keyboard.VirutalKey}\tScanCode: {keyboard.Keyboard.ScanCode}\tKey: {(Keys)keyboard.Keyboard.VirutalKey}\tFlags: {keyboard.Keyboard.Flags}");
                    }

                    break;

                case RawInputHidData hid:
                    Log(hid.Hid.ToString());
                    break;
                }
            }
            // Device added or removed event
            else if (m.Msg == WM_DEVICECHANGE)
            {
                if ((int)m.WParam == DBT_DEVNODES_CHANGED)
                {
                    DeviceListUpdate();
                }
            }

            base.WndProc(ref m);
        }