# HG changeset patch # User sl # Date 1419365837 -3600 # Node ID b3e1770628490dff05cfb8461fa6a8820208ae43 # Parent 53886b25c49d38809dfc3fbc2cbbebe197168bf7 Adding colums to our listview. diff -r 53886b25c49d -r b3e177062849 HidDevice.cs --- a/HidDevice.cs Mon Dec 22 12:46:22 2014 +0100 +++ b/HidDevice.cs Tue Dec 23 21:17:17 2014 +0100 @@ -10,7 +10,7 @@ /// /// Represent a HID device. /// - class HidDevice + public class HidDevice { public string Name { get; private set; } public string Manufacturer { get; private set; } diff -r 53886b25c49d -r b3e177062849 HidEvent.cs --- a/HidEvent.cs Mon Dec 22 12:46:22 2014 +0100 +++ b/HidEvent.cs Tue Dec 23 21:17:17 2014 +0100 @@ -13,7 +13,7 @@ /// /// Represent a HID event. /// - class HidEvent + public class HidEvent { public bool IsValid { get; private set; } public bool IsForeground { get; private set; } @@ -202,6 +202,30 @@ } + public ListViewItem ListViewItem + { + get + { + //TODO: What to do with multiple usage + string usage=""; + UsagePage usagePage=(UsagePage)UsagePage; + switch (usagePage) + { + case Hid.UsagePage.Consumer: + usage= ((Hid.UsageTables.ConsumerControl)Usages[0]).ToString(); + break; + + case Hid.UsagePage.WindowsMediaCenterRemoteControl: + usage= ((Hid.UsageTables.WindowsMediaCenterRemoteControl)Usages[0]).ToString(); + break; + + } + + ListViewItem item = new ListViewItem(new[] { usage, UsagePage.ToString("X2"), UsageCollection.ToString("X2") }); + return item; + } + } + } diff -r 53886b25c49d -r b3e177062849 HidHandler.cs --- a/HidHandler.cs Mon Dec 22 12:46:22 2014 +0100 +++ b/HidHandler.cs Tue Dec 23 21:17:17 2014 +0100 @@ -15,7 +15,7 @@ /// /// Our HID handler manages raw input registrations, processes WM_INPUT messages and broadcasts HID events in return. /// - class HidHandler + public class HidHandler { public delegate void HidEventHandler(object aSender, HidEvent aHidEvent); public event HidEventHandler OnHidEvent; diff -r 53886b25c49d -r b3e177062849 MainForm.cs --- a/MainForm.cs Mon Dec 22 12:46:22 2014 +0100 +++ b/MainForm.cs Tue Dec 23 21:17:17 2014 +0100 @@ -21,7 +21,9 @@ private Label labelButtonName; private Label labelDeviceName; private ListView listViewEvents; - private ColumnHeader columnHeaderEventName; + private ColumnHeader columnHeaderUsage; + private ColumnHeader columnHeaderUsagePage; + private ColumnHeader columnHeaderUsageCollection; private Timer _timer; public MainForm() @@ -62,7 +64,9 @@ this.labelButtonName = new System.Windows.Forms.Label(); this.labelDeviceName = new System.Windows.Forms.Label(); this.listViewEvents = new System.Windows.Forms.ListView(); - this.columnHeaderEventName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderUsage = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderUsagePage = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeaderUsageCollection = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.SuspendLayout(); // // labelButtonName @@ -92,7 +96,9 @@ | System.Windows.Forms.AnchorStyles.Left))); this.listViewEvents.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.listViewEvents.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.columnHeaderEventName}); + this.columnHeaderUsage, + this.columnHeaderUsagePage, + this.columnHeaderUsageCollection}); this.listViewEvents.GridLines = true; this.listViewEvents.Location = new System.Drawing.Point(12, 12); this.listViewEvents.Name = "listViewEvents"; @@ -101,10 +107,20 @@ this.listViewEvents.UseCompatibleStateImageBehavior = false; this.listViewEvents.View = System.Windows.Forms.View.Details; // - // columnHeaderEventName + // columnHeaderUsage // - this.columnHeaderEventName.Text = "Event Name"; - this.columnHeaderEventName.Width = 180; + this.columnHeaderUsage.Text = "Usage"; + this.columnHeaderUsage.Width = 180; + // + // columnHeaderUsagePage + // + this.columnHeaderUsagePage.Text = "Usage Page"; + this.columnHeaderUsagePage.Width = 120; + // + // columnHeaderUsageCollection + // + this.columnHeaderUsageCollection.Text = "Usage Collection"; + this.columnHeaderUsageCollection.Width = 120; // // MainForm // @@ -136,8 +152,13 @@ { _remote = new RemoteControlDevice(this.Handle); _remote.ButtonPressed += new Devices.RemoteControl.RemoteControlDevice.RemoteControlDeviceEventHandler(_remote_ButtonPressed); + _remote.iHidHandler.OnHidEvent += HandleHidEvent; } + void HandleHidEvent(object aSender, Hid.HidEvent aHidEvent) + { + listViewEvents.Items.Insert(0, aHidEvent.ListViewItem); + } protected override void WndProc(ref Message message) { @@ -168,14 +189,12 @@ labelButtonName.Text += " / HP:" + ((Hid.UsageTables.HpWindowsMediaCenterRemoteControl)e.MceButton).ToString(); } - processed = true; - listViewEvents.Items.Insert(0,labelButtonName.Text); + processed = true; } else if (e.ConsumerControl != Hid.UsageTables.ConsumerControl.Null) { //Display consumer control name labelButtonName.Text = e.ConsumerControl.ToString(); - listViewEvents.Items.Insert(0, labelButtonName.Text); processed = true; } else diff -r 53886b25c49d -r b3e177062849 RemoteControlDevice.cs --- a/RemoteControlDevice.cs Mon Dec 22 12:46:22 2014 +0100 +++ b/RemoteControlDevice.cs Tue Dec 23 21:17:17 2014 +0100 @@ -166,7 +166,7 @@ /// public delegate bool HidUsageHandler(ushort aUsage); - Hid.HidHandler iHidHandler; + public Hid.HidHandler iHidHandler; //------------------------------------------------------------- diff -r 53886b25c49d -r b3e177062849 Win32RawInput.cs --- a/Win32RawInput.cs Mon Dec 22 12:46:22 2014 +0100 +++ b/Win32RawInput.cs Tue Dec 23 21:17:17 2014 +0100 @@ -190,7 +190,7 @@ [StructLayout(LayoutKind.Sequential, Pack = 1)] - internal struct RAWINPUTDEVICE + public struct RAWINPUTDEVICE { [MarshalAs(UnmanagedType.U2)] public ushort usUsagePage; @@ -203,7 +203,7 @@ [StructLayout(LayoutKind.Sequential, Pack = 1)] - internal struct RAWINPUTHEADER + public struct RAWINPUTHEADER { [MarshalAs(UnmanagedType.U4)] public int dwType; @@ -216,7 +216,7 @@ [StructLayout(LayoutKind.Sequential, Pack = 1)] - internal struct RAWHID + public struct RAWHID { [MarshalAs(UnmanagedType.U4)] public uint dwSizeHid; @@ -228,7 +228,7 @@ [StructLayout(LayoutKind.Sequential, Pack = 1)] - internal struct BUTTONSSTR + public struct BUTTONSSTR { [MarshalAs(UnmanagedType.U2)] public ushort usButtonFlags; @@ -238,7 +238,7 @@ [StructLayout(LayoutKind.Explicit, Pack = 1)] - internal struct RAWMOUSE + public struct RAWMOUSE { [MarshalAs(UnmanagedType.U2)] [FieldOffset(0)] @@ -263,7 +263,7 @@ } [StructLayout(LayoutKind.Sequential, Pack = 1)] - internal struct RAWKEYBOARD + public struct RAWKEYBOARD { [MarshalAs(UnmanagedType.U2)] public ushort MakeCode; @@ -281,7 +281,7 @@ [StructLayout(LayoutKind.Explicit, Pack = 1)] - internal struct RAWINPUT + public struct RAWINPUT { [FieldOffset(0)] public RAWINPUTHEADER header; @@ -295,7 +295,7 @@ [StructLayout(LayoutKind.Sequential, Pack = 1)] - internal struct RID_DEVICE_INFO_MOUSE + public struct RID_DEVICE_INFO_MOUSE { public uint dwId; public uint dwNumberOfButtons; @@ -305,7 +305,7 @@ [StructLayout(LayoutKind.Sequential, Pack = 1)] - internal struct RID_DEVICE_INFO_KEYBOARD + public struct RID_DEVICE_INFO_KEYBOARD { public uint dwType; public uint dwSubType; @@ -316,7 +316,7 @@ } [StructLayout(LayoutKind.Sequential, Pack = 1)] - internal struct RID_DEVICE_INFO_HID + public struct RID_DEVICE_INFO_HID { public uint dwVendorId; public uint dwProductId; @@ -326,7 +326,7 @@ } [StructLayout(LayoutKind.Explicit, Pack = 1)] - internal struct RID_DEVICE_INFO + public struct RID_DEVICE_INFO { [FieldOffset(0)] public uint cbSize;