From e5a9e0941359105014ffa84e3ad85569d9fcfeb6 Mon Sep 17 00:00:00 2001 From: evilC Date: Sat, 31 Mar 2018 19:51:11 +0100 Subject: [PATCH 1/3] Add VID/PID to RawInputTrackApp --- Desktop/RawInput/RawInputTrackApp/Program.cs | 24 +++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Desktop/RawInput/RawInputTrackApp/Program.cs b/Desktop/RawInput/RawInputTrackApp/Program.cs index 266d2bd5..8b79f3ba 100644 --- a/Desktop/RawInput/RawInputTrackApp/Program.cs +++ b/Desktop/RawInput/RawInputTrackApp/Program.cs @@ -19,6 +19,7 @@ // THE SOFTWARE. using System; +using System.Collections.Concurrent; using System.Windows.Forms; using SharpDX.Multimedia; @@ -32,6 +33,7 @@ namespace MouseTrackApp static class Program { private static TextBox textBox; + private static ConcurrentDictionary _deviceNameCache = new ConcurrentDictionary(); /// /// The main entry point for the application. @@ -61,9 +63,29 @@ static void Main() /// The instance containing the event data. static void UpdateMouseText(RawInputEventArgs rawArgs) { + const string sep = " "; var args = (MouseInputEventArgs)rawArgs; + var devName = GetDeviceName(args.Device); + textBox.AppendText( + $"Device: {devName} {sep} Coords: {args.X},{args.Y} {sep} Buttons: {args.ButtonFlags} {sep} State: {args.Mode} {sep} Wheel: {args.WheelDelta}\r\n"); + } - textBox.AppendText(string.Format("(x,y):({0},{1}) Buttons: {2} State: {3} Wheel: {4}\r\n", args.X, args.Y, args.ButtonFlags, args.Mode, args.WheelDelta)); + static string GetDeviceName(IntPtr devPtr) + { + if (_deviceNameCache.ContainsKey(devPtr)) + { + return _deviceNameCache[devPtr]; + } + var devices = Device.GetDevices(); + var deviceName = devPtr.ToString(); + foreach (var dev in devices) + { + if (dev.Handle != devPtr) continue; + deviceName = dev.DeviceName.Split('#')[1]; + break; + } + _deviceNameCache.TryAdd(devPtr, deviceName); + return deviceName; } /// From 6c4eb0a7e3c423c0e53345be9f16d50689f81bd0 Mon Sep 17 00:00:00 2001 From: evilC Date: Sat, 31 Mar 2018 20:02:19 +0100 Subject: [PATCH 2/3] Added extra info to keyboard --- Desktop/RawInput/RawInputTrackApp/Program.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Desktop/RawInput/RawInputTrackApp/Program.cs b/Desktop/RawInput/RawInputTrackApp/Program.cs index 8b79f3ba..e258e6a1 100644 --- a/Desktop/RawInput/RawInputTrackApp/Program.cs +++ b/Desktop/RawInput/RawInputTrackApp/Program.cs @@ -67,7 +67,7 @@ static void UpdateMouseText(RawInputEventArgs rawArgs) var args = (MouseInputEventArgs)rawArgs; var devName = GetDeviceName(args.Device); textBox.AppendText( - $"Device: {devName} {sep} Coords: {args.X},{args.Y} {sep} Buttons: {args.ButtonFlags} {sep} State: {args.Mode} {sep} Wheel: {args.WheelDelta}\r\n"); + $"Mouse: {devName} {sep} Coords: {args.X},{args.Y} {sep} Buttons: {args.ButtonFlags} {sep} State: {args.Mode} {sep} Wheel: {args.WheelDelta}\r\n"); } static string GetDeviceName(IntPtr devPtr) @@ -94,8 +94,10 @@ static string GetDeviceName(IntPtr devPtr) /// The instance containing the event data. static void UpdateKeyboardText(RawInputEventArgs rawArgs) { + const string sep = " "; var args = (KeyboardInputEventArgs)rawArgs; - textBox.AppendText(string.Format("Key: {0} State: {1} ScanCodeFlags: {2}\r\n", args.Key, args.State, args.ScanCodeFlags)); + var devName = GetDeviceName(args.Device); + textBox.AppendText($"Keyboard: {devName} {sep} Key: {args.Key} ({(int)args.Key}) {sep} State: {args.State} {sep} ScanCodeFlags: {args.ScanCodeFlags}\r\n"); } /// From f4a031f558ea0fdb6abfb0c964746a95838e93db Mon Sep 17 00:00:00 2001 From: evilC Date: Sat, 31 Mar 2018 20:11:04 +0100 Subject: [PATCH 3/3] cache to readonly, change name --- Desktop/RawInput/RawInputTrackApp/Program.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Desktop/RawInput/RawInputTrackApp/Program.cs b/Desktop/RawInput/RawInputTrackApp/Program.cs index e258e6a1..2c4c94d2 100644 --- a/Desktop/RawInput/RawInputTrackApp/Program.cs +++ b/Desktop/RawInput/RawInputTrackApp/Program.cs @@ -33,7 +33,7 @@ namespace MouseTrackApp static class Program { private static TextBox textBox; - private static ConcurrentDictionary _deviceNameCache = new ConcurrentDictionary(); + private static readonly ConcurrentDictionary DeviceNameCache = new ConcurrentDictionary(); /// /// The main entry point for the application. @@ -72,9 +72,9 @@ static void UpdateMouseText(RawInputEventArgs rawArgs) static string GetDeviceName(IntPtr devPtr) { - if (_deviceNameCache.ContainsKey(devPtr)) + if (DeviceNameCache.ContainsKey(devPtr)) { - return _deviceNameCache[devPtr]; + return DeviceNameCache[devPtr]; } var devices = Device.GetDevices(); var deviceName = devPtr.ToString(); @@ -84,7 +84,7 @@ static string GetDeviceName(IntPtr devPtr) deviceName = dev.DeviceName.Split('#')[1]; break; } - _deviceNameCache.TryAdd(devPtr, deviceName); + DeviceNameCache.TryAdd(devPtr, deviceName); return deviceName; }