A Go package to access Human Interface Devices. The platform specific parts of this package are heavily based on Signal 11's HIDAPI.
The following operating systems are supported targets (as used by $GOOS environment variable)
- darwin (uses native IOKit framework)
- linux (uses hidraw)
- windows (uses native Windows HID library)
For building this HID package, you need to have a gcc.exe in your %PATH% environment variable.
There are two tested GCC toolchains: tdm-gcc
and mingw-w64. At the moment (March 2015), both toolchains
are missing some declarations in header files, which will result in the following error message,
when running the go build
:
D:\projects.go\src\github.com\boombuler\hid> go build -v -work
WORK=C:\Users\xxx\AppData\Local\Temp\go-build011586055
github.com/boombuler/hid
# github.com/boombuler/hid
could not determine kind of name for C.HidD_FreePreparsedData
could not determine kind of name for C.HidD_GetPreparsedData
The solutions is simple: just add these four lines to your gcc toolchain header file hidsdi.h
/* http://msdn.microsoft.com/en-us/library/windows/hardware/ff538893(v=vs.85).aspx */
HIDAPI BOOLEAN NTAPI HidD_FreePreparsedData(PHIDP_PREPARSED_DATA PreparsedData);
/* http://msdn.microsoft.com/en-us/library/windows/hardware/ff539679(v=vs.85).aspx */
HIDAPI BOOLEAN NTAPI HidD_GetPreparsedData(HANDLE HidDeviceObject, PHIDP_PREPARSED_DATA *PreparsedData);
Depending on your gcc toolchain installation folder, the files are located in
C:\TDM-GCC-64\x86_64-w64-mingw32\include\hidsdi.h
or
c:\mingw-w64\x86_64-4.9.2-win32-seh-rt_v3-rev1\mingw64\x86_64-w64-mingw32\include\hidsdi.h
After patching the header file, this package will compile. Future releases of the gcc toolchains will surely fix this issue.