Adding colums to our listview.
authorsl
Tue, 23 Dec 2014 21:17:17 +0100
changeset 40b3e177062849
parent 39 53886b25c49d
child 41 dd603eba46ca
Adding colums to our listview.
HidDevice.cs
HidEvent.cs
HidHandler.cs
MainForm.cs
RemoteControlDevice.cs
Win32RawInput.cs
     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;