All notable changes to this project will be documented in this file.
- Only wait for event file when
setAbsResolutionis needed, speeding up device registration for devices without axis resolution
- Unit and integration tests with Docker-based test runner
EventPath()toVirtualKeyboard,VirtualMouse, andVirtualTouchpadinterfacesEventPath()toVirtualDeviceandVirtualGamepadinterfacesSend()method to all virtual device classes.gitignoreentries for.DS_Storeand compiled binaries- Doc comments to all exported symbols
- Makefile
shelltarget now usesdocker-entrypoint.shto mount devtmpfs WaitForEventFiletimeout increased from 500ms to 2s for reliability- Race condition: panic when
Send()is called on an unregistered device - Touchpad
fingerCountgoing negative causing index out of bounds panic - Gamepad
Press/Releasenot returning early on unassigned button - Repeat events incorrectly using
EV_MSCinstead ofEV_REP FFEffectstruct to use byte array matching C union size- AZERTY keymap conflicts for
]andùcharacters - Mangled
SwitchEventconstant names missing space before type writeEventerror output to use stderr with newline- Various documentation fixes (typos, incorrect types, missing calls)
- Align Dockerfile
GO_VERSIONwith go.mod (1.21) - Rename
GenricMouse.gotoGenericMouse.go - Remove unused
IsDenormalizedfield fromAbsAxis - Translate French comment to English in
atomicBool.go - Simplify range loop by removing unused blank identifier
- MSC generic support
- JoyCon IMU virtual device
- Nintendo Switch JoyCon L & R virtual devices
- Xbox One Elite 2 controller
TapKeyand missingSyncReporttoVirtualKeyboard- Configurable tap duration for keyboard typing
Send()andEventPath()toVirtualDeviceinterface- Generic
SendMiscEventreplacing specializedSendScanCode
- Breaking: Replace
SendScanCodewith genericSendMiscEvent
- Initial release
- Virtual device abstraction over Linux uinput
- Virtual keyboard with typing and keymap support
- Virtual mouse with click, scroll, and move support
- Virtual touchpad with multitouch protocol A and B support
- Virtual gamepad with digital buttons and analog sticks
- Predefined controller profiles (Xbox 360, Xbox One S, Stadia, and more)
- Linux input event codes and uinput bindings