GitXplorerGitXplorer
k

hid

public
277 stars
133 forks
7 issues

Commits

List of commits on branch master.
Verified
821c38d2678e741180ec60b2512b408fa8bab99e

Add top-level dummy.go (#52)

bbenma committed 4 months ago
Verified
573246063e52c0d0a3a12036a8dfe8f286379e96

hid_enabled: fix a build-error on docker / alpine (#51)

hholiman committed 10 months ago
Verified
d3b59fe37df86cfdd422c969454d6a38577fa21a

use libusb 1.0.27 as backend on linux (#50)

hholiman committed a year ago
Verified
a99fb5838245ea506114dd73a6a656de633f8a81

README: Update AppVeyor badge

kkaralabe committed a year ago
Verified
2306e0129cf054090097678994d138c3cc6c6104

fix appveyor + enable linux (#49)

hholiman committed a year ago
Verified
0c3aacf0049070109a5dd5d71ab6dbc6a2f42a49

update readme and appveyor (#47)

hholiman committed a year ago

README

The README file for this repository.

AppVeyor GoDoc

Gopher Interface Devices (USB HID)

The hid package is a cross platform library for accessing and communicating with USB Human Interface Devices (HID). It is an alternative package to gousb for use cases where devices support this ligher mode of operation (e.g. input devices, hardware crypto wallets).

The package wraps hidapi for accessing OS specific USB HID APIs directly instead of using low level USB constructs, which might have permission issues on some platforms. The hidapi dependency is vendored directly into the repository and wrapped using CGO, making the hid package self-contained and go-gettable.

Supported platforms at the moment are Linux, macOS and Windows (exclude constraints are also specified for Android and iOS to allow smoother vendoring into cross platform projects).

The hidapi on linux unfortunately requires libuddev (libudev-dev on ubuntu, systemd-devel on fedora). Therefore, this library includes libusb which we use as a backend on linux, and thus avoid runtime dependencies.

Cross-compiling

Using go get the embedded C library is compiled into the binary format of your host OS. Cross compiling to a different platform or architecture entails disabling CGO by default in Go, causing device enumeration hid.Enumerate() to yield no results.

To cross compile a functional version of this library, you'll need to enable CGO during cross compilation via CGO_ENABLED=1 and you'll need to install and set a cross compilation enabled C toolkit via CC=your-cross-gcc.

Acknowledgements

Although the hid package is an implementation from scratch, it was heavily inspired by the existing go.hid library, which seems abandoned since 2015; is incompatible with Go 1.6+; and has various external dependencies. Given its inspirational roots, I thought it important to give credit to the author of said package too.

Wide character support in the hid package is done via the gowchar library, unmaintained since 2013; non buildable with a modern Go release and failing go vet checks. As such, gowchar was also vendored in inline (copyright headers and origins preserved).

License

The components of hid are licensed as such:

Given the above, hid is licensed under GNU LGPL 2.1 or later on Linux and 3-clause BSD on other platforms.