CopperPad.HidSharp
2.0.0-preview.1
dotnet add package CopperPad.HidSharp --version 2.0.0-preview.1
NuGet\Install-Package CopperPad.HidSharp -Version 2.0.0-preview.1
<PackageReference Include="CopperPad.HidSharp" Version="2.0.0-preview.1" />
<PackageVersion Include="CopperPad.HidSharp" Version="2.0.0-preview.1" />
<PackageReference Include="CopperPad.HidSharp" />
paket add CopperPad.HidSharp --version 2.0.0-preview.1
#r "nuget: CopperPad.HidSharp, 2.0.0-preview.1"
#:package CopperPad.HidSharp@2.0.0-preview.1
#addin nuget:?package=CopperPad.HidSharp&version=2.0.0-preview.1&prerelease
#tool nuget:?package=CopperPad.HidSharp&version=2.0.0-preview.1&prerelease
CopperPad.HidSharp
CopperPad.HidSharp is the desktop HID provider for the platform-neutral CopperPad core API. It contains HidSharp enumeration/reading, raw report diagnostics, profile-backed mapping, SDL_GameControllerDB lookup, and fallback mappers.
Mapping precedence is:
- user/app profile JSON
- provider-native mappings where available
- bundled SDL_GameControllerDB data
- built-in fallback mappers
- raw diagnostics only
The bundled SDL_GameControllerDB snapshot is third-party mapping data under the zlib license. See the package THIRD-PARTY-NOTICES.md and ThirdParty/SDL_GameControllerDB/LICENSE.
In version 2, diagnostics report descriptors and raw input reports are immutable ReadOnlyMemory<byte> values. Reader sessions automatically retry transient HID open/read failures until stopped or the device disappears.
Quick example
using CopperPad;
using var host = new CopperControllerHost(new HidSharpControllerProvider());
host.ControllersChanged += (_, args) =>
{
foreach (var info in args.Controllers)
{
Console.WriteLine($"{info.DisplayName} ({info.MappingSource}: {info.MappingName})");
}
};
host.Start();
Read the latest normalized state from a selected controller:
var controller = host.GetControllers().FirstOrDefault();
var snapshot = controller?.GetSnapshot();
if (snapshot?.ExtendedGamepad is { } gamepad)
{
Console.WriteLine($"Left stick: {gamepad.LeftStickX:0.00}, {gamepad.LeftStickY:0.00}");
Console.WriteLine($"South/A pressed: {gamepad.South}");
}
Pass user/app profiles when an override should take precedence over SDL_GameControllerDB:
var provider = new HidSharpControllerProvider(new HidSharpControllerProviderOptions
{
Profiles = profiles,
ReadTimeout = TimeSpan.FromMilliseconds(100)
});
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.0-preview.1 | 75 | 7/12/2026 |