Common Organization of Controls Kit
Current version: 1.3
Common Organization of Controls Kit is a tool for handling control over your LÖVE games.
It enables you to easily define a (several of) set of control bindings to be used in your game, and provides a very user-friendly methods for handling it, e.g. you can access all gathered data as a table member, and it has a function to grab a user input to store it into control map, and to unset it, which is really handy in controls setup screen etc. Check out the demo! http://love2d.org/forums/download/file.php?id=8398
This library have much detail to it, please consutlt the manual.
NOTE: the library only support latest released version of LÖVE, and the author only support latest released version of the library. There may be no backwards compatibility.
Contents
Features
- Multiple separate control objects
- Comprehensive controls setup
- Support for "defaults"
- All available input devices supported
- Capture and bind user input
- Joystick deadzones and hat remapping, hat modes, pick up previously used joysticks
- Delta modes and inversion modes
- Literal or numerical arguments to functions; number of helper functions
Scheduled:
- XBox360 controller support for all OSes (for now only works with Windows, partially)
- Functions to save/load configurations (for now simple serialization of the object will do)
Links
- Project page: http://raidho36.net/stuff/cock
- Forum thread: http://love2d.org/forums/viewtopic.php?f=5&t=40089
Changelog
- 1.3:
- fixed:
- code refactoring; improved consistency
- fixed broken event handler locks
- generating random IDs now work properly
- fixed issue with spacebar key and :explodeCapturedData/:bind ( unexplodedData ) functions
- fixed all :*Joystick* functions.
- :addJoystick will now create a dummy joystick if it's impossible to actually create the joystick
- added:
- .defaultOption and defaultConfig fields
- :getConvetedJoystickHat, :getConvertedJoystickHatMode, :getConvertedKey
- :find returns control object with given ID
- :updateAll updates all registered objects
- :addJoystick and :removeJoystick (handled automatically)
- .controlcaptured, .controlpeaked, .controlzeroed, .controlpressed, .controlreleased, .controlchanged callbacks
- :setCallbacks for enabling/disabling above callbacks
- addded 4-way diagonal hat mode (4-way input, diagonal input generates both conjuncted directions input)
- changed:
- control objects now have unique identifiers
- control binds data will no longer accept one-default arranged data
- event callbacks are now supplied with ID of the sender object
- all joystick-related functions now have "device id" field which specifies the joystick used in terms of control object
- :setDefaultXBox360 now accepts device ID to use
- :capturedDataExplode renamed to :explodeCapturedData (lol)
- conversion functions now have argument "literal" to force either literal or numerical output
- :getBinded and pals are now return raw unconverted data
- :setCapture function will now by default invoke the callback
- renamed joystick hat modes
- lookup tables will now grow further to avoid extra garbage/increase function performance
- :setDefaultXBox360 now returns joystick ID (could change)
- removed:
- :setControlMode and pals
- :setDefaultXBox360 for Linux and OS X
- fixed:
- 1.2:
- fixed:
- a bunch of potential pitfalls
- joystick axes and hats are now correctly captured
- added:
- no-cutoff for negative values for inversion
- multiple binds per action via "options" tables
- :setJoystickDeadzone and getJoystickDeadzone gets and sets joystick deadzone per axis
- :getJoysticksList returns list of all found joysticks names and numbers
- :remapJoystickHat maps four joystick buttons to act like joystick hat
- :bind directly binds mappings
- :getBinded returns list of binds for map
- :getEmptyOption returns next (in arbitrary order) unused option for map
- :getControlModesList returns list of all control modess
- :getConvertedDevice, :getConvertedAxis, :getConvertedInverse, :getConvertedDelta
- cutoff delta modes and inversion modes (only pass positive/negative part)
- :setDefaultXBox360 function (currently used XBox360 controller API in Windows version sucks pretty hard)
- :capturedDataExplode helper function (can't pass table to LÖVE's events)
- changed:
- :setCapture now accepts "callback" argument to be used instead of instant automatical binding
- :grab now would either call callback function or instantly bind captured input
- :unset renamed to :unbind
- controls data table for assignment now have different format
- :getJoystickHatMode and :getControlMode now only return literal value
- joystick axis delta mode no longer requires stick to be on the corresponding side either (that was silly, too)
- removed:
- :getDeviceName (replaced with :getBinded)
- fixed:
- 1.1:
- fixed:
- capturing an input now sets both "previous" and "current" tables to captured input value
- mouse axis delta mode no longer requires mouse pointer to be on the corresponding side of the offset
- added:
- getDeviceName function returns literal name of a device assiged to specified map
- changed:
- reloadJoystick now returns true on success
- fixed:
- 1.0:
- first release version