Adding colums to our listview.
1.1 --- a/HidDevice.cs Mon Dec 22 12:46:22 2014 +0100
1.2 +++ b/HidDevice.cs Tue Dec 23 21:17:17 2014 +0100
1.3 @@ -10,7 +10,7 @@
1.4 /// <summary>
1.5 /// Represent a HID device.
1.6 /// </summary>
1.7 - class HidDevice
1.8 + public class HidDevice
1.9 {
1.10 public string Name { get; private set; }
1.11 public string Manufacturer { get; private set; }
2.1 --- a/HidEvent.cs Mon Dec 22 12:46:22 2014 +0100
2.2 +++ b/HidEvent.cs Tue Dec 23 21:17:17 2014 +0100
2.3 @@ -13,7 +13,7 @@
2.4 /// <summary>
2.5 /// Represent a HID event.
2.6 /// </summary>
2.7 - class HidEvent
2.8 + public class HidEvent
2.9 {
2.10 public bool IsValid { get; private set; }
2.11 public bool IsForeground { get; private set; }
2.12 @@ -202,6 +202,30 @@
2.13 }
2.14
2.15
2.16 + public ListViewItem ListViewItem
2.17 + {
2.18 + get
2.19 + {
2.20 + //TODO: What to do with multiple usage
2.21 + string usage="";
2.22 + UsagePage usagePage=(UsagePage)UsagePage;
2.23 + switch (usagePage)
2.24 + {
2.25 + case Hid.UsagePage.Consumer:
2.26 + usage= ((Hid.UsageTables.ConsumerControl)Usages[0]).ToString();
2.27 + break;
2.28 +
2.29 + case Hid.UsagePage.WindowsMediaCenterRemoteControl:
2.30 + usage= ((Hid.UsageTables.WindowsMediaCenterRemoteControl)Usages[0]).ToString();
2.31 + break;
2.32 +
2.33 + }
2.34 +
2.35 + ListViewItem item = new ListViewItem(new[] { usage, UsagePage.ToString("X2"), UsageCollection.ToString("X2") });
2.36 + return item;
2.37 + }
2.38 + }
2.39 +
2.40
2.41
2.42 }
3.1 --- a/HidHandler.cs Mon Dec 22 12:46:22 2014 +0100
3.2 +++ b/HidHandler.cs Tue Dec 23 21:17:17 2014 +0100
3.3 @@ -15,7 +15,7 @@
3.4 /// <summary>
3.5 /// Our HID handler manages raw input registrations, processes WM_INPUT messages and broadcasts HID events in return.
3.6 /// </summary>
3.7 - class HidHandler
3.8 + public class HidHandler
3.9 {
3.10 public delegate void HidEventHandler(object aSender, HidEvent aHidEvent);
3.11 public event HidEventHandler OnHidEvent;
4.1 --- a/MainForm.cs Mon Dec 22 12:46:22 2014 +0100
4.2 +++ b/MainForm.cs Tue Dec 23 21:17:17 2014 +0100
4.3 @@ -21,7 +21,9 @@
4.4 private Label labelButtonName;
4.5 private Label labelDeviceName;
4.6 private ListView listViewEvents;
4.7 - private ColumnHeader columnHeaderEventName;
4.8 + private ColumnHeader columnHeaderUsage;
4.9 + private ColumnHeader columnHeaderUsagePage;
4.10 + private ColumnHeader columnHeaderUsageCollection;
4.11 private Timer _timer;
4.12
4.13 public MainForm()
4.14 @@ -62,7 +64,9 @@
4.15 this.labelButtonName = new System.Windows.Forms.Label();
4.16 this.labelDeviceName = new System.Windows.Forms.Label();
4.17 this.listViewEvents = new System.Windows.Forms.ListView();
4.18 - this.columnHeaderEventName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
4.19 + this.columnHeaderUsage = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
4.20 + this.columnHeaderUsagePage = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
4.21 + this.columnHeaderUsageCollection = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
4.22 this.SuspendLayout();
4.23 //
4.24 // labelButtonName
4.25 @@ -92,7 +96,9 @@
4.26 | System.Windows.Forms.AnchorStyles.Left)));
4.27 this.listViewEvents.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
4.28 this.listViewEvents.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
4.29 - this.columnHeaderEventName});
4.30 + this.columnHeaderUsage,
4.31 + this.columnHeaderUsagePage,
4.32 + this.columnHeaderUsageCollection});
4.33 this.listViewEvents.GridLines = true;
4.34 this.listViewEvents.Location = new System.Drawing.Point(12, 12);
4.35 this.listViewEvents.Name = "listViewEvents";
4.36 @@ -101,10 +107,20 @@
4.37 this.listViewEvents.UseCompatibleStateImageBehavior = false;
4.38 this.listViewEvents.View = System.Windows.Forms.View.Details;
4.39 //
4.40 - // columnHeaderEventName
4.41 + // columnHeaderUsage
4.42 //
4.43 - this.columnHeaderEventName.Text = "Event Name";
4.44 - this.columnHeaderEventName.Width = 180;
4.45 + this.columnHeaderUsage.Text = "Usage";
4.46 + this.columnHeaderUsage.Width = 180;
4.47 + //
4.48 + // columnHeaderUsagePage
4.49 + //
4.50 + this.columnHeaderUsagePage.Text = "Usage Page";
4.51 + this.columnHeaderUsagePage.Width = 120;
4.52 + //
4.53 + // columnHeaderUsageCollection
4.54 + //
4.55 + this.columnHeaderUsageCollection.Text = "Usage Collection";
4.56 + this.columnHeaderUsageCollection.Width = 120;
4.57 //
4.58 // MainForm
4.59 //
4.60 @@ -136,8 +152,13 @@
4.61 {
4.62 _remote = new RemoteControlDevice(this.Handle);
4.63 _remote.ButtonPressed += new Devices.RemoteControl.RemoteControlDevice.RemoteControlDeviceEventHandler(_remote_ButtonPressed);
4.64 + _remote.iHidHandler.OnHidEvent += HandleHidEvent;
4.65 }
4.66
4.67 + void HandleHidEvent(object aSender, Hid.HidEvent aHidEvent)
4.68 + {
4.69 + listViewEvents.Items.Insert(0, aHidEvent.ListViewItem);
4.70 + }
4.71
4.72 protected override void WndProc(ref Message message)
4.73 {
4.74 @@ -168,14 +189,12 @@
4.75 labelButtonName.Text += " / HP:" + ((Hid.UsageTables.HpWindowsMediaCenterRemoteControl)e.MceButton).ToString();
4.76 }
4.77
4.78 - processed = true;
4.79 - listViewEvents.Items.Insert(0,labelButtonName.Text);
4.80 + processed = true;
4.81 }
4.82 else if (e.ConsumerControl != Hid.UsageTables.ConsumerControl.Null)
4.83 {
4.84 //Display consumer control name
4.85 labelButtonName.Text = e.ConsumerControl.ToString();
4.86 - listViewEvents.Items.Insert(0, labelButtonName.Text);
4.87 processed = true;
4.88 }
4.89 else
5.1 --- a/RemoteControlDevice.cs Mon Dec 22 12:46:22 2014 +0100
5.2 +++ b/RemoteControlDevice.cs Tue Dec 23 21:17:17 2014 +0100
5.3 @@ -166,7 +166,7 @@
5.4 /// <returns></returns>
5.5 public delegate bool HidUsageHandler(ushort aUsage);
5.6
5.7 - Hid.HidHandler iHidHandler;
5.8 + public Hid.HidHandler iHidHandler;
5.9
5.10
5.11 //-------------------------------------------------------------
6.1 --- a/Win32RawInput.cs Mon Dec 22 12:46:22 2014 +0100
6.2 +++ b/Win32RawInput.cs Tue Dec 23 21:17:17 2014 +0100
6.3 @@ -190,7 +190,7 @@
6.4
6.5
6.6 [StructLayout(LayoutKind.Sequential, Pack = 1)]
6.7 - internal struct RAWINPUTDEVICE
6.8 + public struct RAWINPUTDEVICE
6.9 {
6.10 [MarshalAs(UnmanagedType.U2)]
6.11 public ushort usUsagePage;
6.12 @@ -203,7 +203,7 @@
6.13
6.14
6.15 [StructLayout(LayoutKind.Sequential, Pack = 1)]
6.16 - internal struct RAWINPUTHEADER
6.17 + public struct RAWINPUTHEADER
6.18 {
6.19 [MarshalAs(UnmanagedType.U4)]
6.20 public int dwType;
6.21 @@ -216,7 +216,7 @@
6.22
6.23
6.24 [StructLayout(LayoutKind.Sequential, Pack = 1)]
6.25 - internal struct RAWHID
6.26 + public struct RAWHID
6.27 {
6.28 [MarshalAs(UnmanagedType.U4)]
6.29 public uint dwSizeHid;
6.30 @@ -228,7 +228,7 @@
6.31
6.32
6.33 [StructLayout(LayoutKind.Sequential, Pack = 1)]
6.34 - internal struct BUTTONSSTR
6.35 + public struct BUTTONSSTR
6.36 {
6.37 [MarshalAs(UnmanagedType.U2)]
6.38 public ushort usButtonFlags;
6.39 @@ -238,7 +238,7 @@
6.40
6.41
6.42 [StructLayout(LayoutKind.Explicit, Pack = 1)]
6.43 - internal struct RAWMOUSE
6.44 + public struct RAWMOUSE
6.45 {
6.46 [MarshalAs(UnmanagedType.U2)]
6.47 [FieldOffset(0)]
6.48 @@ -263,7 +263,7 @@
6.49 }
6.50
6.51 [StructLayout(LayoutKind.Sequential, Pack = 1)]
6.52 - internal struct RAWKEYBOARD
6.53 + public struct RAWKEYBOARD
6.54 {
6.55 [MarshalAs(UnmanagedType.U2)]
6.56 public ushort MakeCode;
6.57 @@ -281,7 +281,7 @@
6.58
6.59
6.60 [StructLayout(LayoutKind.Explicit, Pack = 1)]
6.61 - internal struct RAWINPUT
6.62 + public struct RAWINPUT
6.63 {
6.64 [FieldOffset(0)]
6.65 public RAWINPUTHEADER header;
6.66 @@ -295,7 +295,7 @@
6.67
6.68
6.69 [StructLayout(LayoutKind.Sequential, Pack = 1)]
6.70 - internal struct RID_DEVICE_INFO_MOUSE
6.71 + public struct RID_DEVICE_INFO_MOUSE
6.72 {
6.73 public uint dwId;
6.74 public uint dwNumberOfButtons;
6.75 @@ -305,7 +305,7 @@
6.76
6.77
6.78 [StructLayout(LayoutKind.Sequential, Pack = 1)]
6.79 - internal struct RID_DEVICE_INFO_KEYBOARD
6.80 + public struct RID_DEVICE_INFO_KEYBOARD
6.81 {
6.82 public uint dwType;
6.83 public uint dwSubType;
6.84 @@ -316,7 +316,7 @@
6.85 }
6.86
6.87 [StructLayout(LayoutKind.Sequential, Pack = 1)]
6.88 - internal struct RID_DEVICE_INFO_HID
6.89 + public struct RID_DEVICE_INFO_HID
6.90 {
6.91 public uint dwVendorId;
6.92 public uint dwProductId;
6.93 @@ -326,7 +326,7 @@
6.94 }
6.95
6.96 [StructLayout(LayoutKind.Explicit, Pack = 1)]
6.97 - internal struct RID_DEVICE_INFO
6.98 + public struct RID_DEVICE_INFO
6.99 {
6.100 [FieldOffset(0)]
6.101 public uint cbSize;