I'd like to present to you my open source (MIT-licensed) input library, called NIL for Nice Input Library
It's finally feature-complete and useful enough (my own projects use it) that I'm making the first official release.
Nil is for now Windows-only, but I'm not opposed to making it multiplatform in the long run, should some co-conspirators come along
To quote the Technology section of the GitHub page:
NIL utilises three different input APIs to achieve best possible input from different types of devices:
NIL can tell apart every input device connected to the computer, including keyboards and mice.
- Raw Input API for all mice & keyboard input, with zero lag and no special key weirdness
- XInput API for XBOX 360 controller input
- DirectInput API for all other joysticks & gamepads
Multi-keyboard and multi-mice input support is, for once, a breeze.
NIL is fully based on Plug-and-Play support: It knows when devices are connected and disconnected
from the computer, and remembers previously-connected devices when reconnected.
Additionally, NIL is capable of receiving direct input from the G-keys of certain Logitech Gaming keyboards & mice.
NIL is single-threaded, buffered and fully listener-based.
- Check out the GitHub page here to read more about the project...
- ...and see the v0.1.1 release announcement here, including downloads!
A little backstory: I used to use OIS for all my input needs for several years. Eventually I wanted some things from OIS that it didn't have, and that I only knew how to implement on Windows, so I started keeping my own fork of OIS. Ultimately however my needs diverted from the design of OIS enough that I decided to write my own system entirely, and here we are.
Please feel free to check out the project on GitHub, try it for yourselves (there are prebuilt libraries and a testbed binary in the release downloads) and discuss it here. All feedback (and signs of love) are very welcome
Thanks!