alpha-omega-labs / hid

Gopher Interface Devices (USB HID)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Go Reference AppVeyor

Gopher Interface Devices (USB HID)

Note: This package is a fork of github.com/karalabe/hid as the original author did not respond to bug fixes and co-maintainership proposals.

The hid package is a cross platform library for accessing and communicating with USB Human Interface Devices (HID).

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. On Linux the package also wraps libusb. Both of these dependencies are 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).

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

This package is a fork of github.com/karalabe/hid as the maintainer is not responding to issues, e-mail or Twitter queries.

Although the karalabe/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.

About

Gopher Interface Devices (USB HID)

License:Other


Languages

Language:C 96.6%Language:C++ 2.0%Language:Go 1.4%Language:Shell 0.1%