Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/geertjohan/go.hid
Provides communication with USB Human Interface Devices.
https://github.com/geertjohan/go.hid
Last synced: 3 months ago
JSON representation
Provides communication with USB Human Interface Devices.
- Host: GitHub
- URL: https://github.com/geertjohan/go.hid
- Owner: GeertJohan
- License: bsd-2-clause
- Created: 2013-03-24T21:02:14.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2017-04-16T15:52:13.000Z (almost 8 years ago)
- Last Synced: 2024-06-20T05:19:49.256Z (7 months ago)
- Language: C
- Homepage: godoc.org/github.com/GeertJohan/go.hid
- Size: 66.4 KB
- Stars: 55
- Watchers: 5
- Forks: 17
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
**This package is discontinued**
This package does not work with Go1.6+. I won't be updating this package since a better alternative is already available, please take a look at [karalabe/hid](https://github.com/karalabe/hid).## go.hid
This [go](http://golang.org) package wraps the [signal11/hidapi](https://github.com/signal11/hidapi) and provides communication with USB Human Interface Devices.**This package is not completely tested yet!**
### Installation:
This project depends on libhidapi, which must be installed manually.
```shell
git clone [email protected]:signal11/hidapi.git
cd hidapi
./bootstrap
./configure
```Now change directory depending on your OS.
For linux + hidraw: `cd linux`. (requires libudev. Package libudev-dev on debian/ubuntu.)
For linux + libusb: `cd libusb`. (requires libusb. Package libusb-1.0-0-dev on debian/ubuntu.)
For mac: `cd mac`.
For windows: `cd windows`.
Make and install.
For linux/mac:
```
make
sudo make install
```
For windows:
```
run some wizzard, probably.. (PR on readme is very welcome)
```Lastly, for linux only:
Create a symlink pointing libhidapi.so to the version you chose:For linux + hidraw: `cd /usr/local/lib; sudo ln -s libhidapi-hidraw.so libhidapi.so`
For linux + libusb: `cd /usr/local/lib; sudo ln -s libhidapi-libusb.so libhidapi.so`
For more instructions on libhidapi, please visit [signal11/hidapi](https://github.com/signal11/hidapi).
When you have installed hidapi lib, install this package with `go get github.com/GeertJohan/go.hid`.
### Documentation:
[godoc.org/github.com/GeertJohan/go.hid](https://godoc.org/github.com/GeertJohan/go.hid)### Example:
This is a simple example on how to use feature reports. For a working example view [GeertJohan/mgl](https://github.com/GeertJohan/mgl).
```go
package mainimport(
"log"
"github.com/GeertJohan/go.hid"
)func main() {
// open the MSI GT leds device
leds, err := hid.Open(0x1770, 0xff00, "")
if err != nil {
log.Fatalf("Could not open leds device: %s", err)
}
defer leds.Close()// create a feature report. This is always 8*n+1 bytes long, where n is >1.
data := make([]byte, 9)
data[0] = 0x42 // report ID
data[1] = 0x00 // dummy data
data[2] = 0x01 // dummy data
data[3] = 0x02 // dummy data
data[4] = 0x03 // dummy data
data[5] = 0x04 // dummy data
data[6] = 0x05 // dummy data
data[7] = 0x06 // dummy data
data[8] = 0x07 // dummy data_, err := leds.SendFeatureReport(data)
if err != nil {
log.Fatalf("Could not send feature report to do dummy action. %s\n", err)
}
}
```### License:
The go code in this project is licenced under a a Simplified BSD license. Please read the [LICENSE file](LICENSE).### TODO:
At this point, the package works for linux with hidraw.
hidapi itself is already cross-platform, so making this package work cross-platform shouldn't be a lot of work.
- Make this package work cross-platform.
- Add better support for hidapi init() and exit(). (At this time hidapi's init() is called once on first Open() call)
- Add tests (find if there is a usb-hid dummy device that has expected input/output and works consistently within an OS (we can write a test file for each OS seperated))
- Better example (preferably with a dummy test device)### History:
I started this project to be able to communicate with the MSI leds device in the MSI GT780DX laptop. For more information about that project, visit [GeertJohan/mgl](https://github.com/GeertJohan/mgl).