Common Organization of Controls Kit

Note:
Current version: 1.3

The library does not currently have examples.

Common Organization of Controls Kit is a tool for handling control over your LÖVE games.

This is an input handling library. 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.

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

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
      •  :convetJoystickHat, :convertJoystickHatMode, :convertKey
      •  :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
  • 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)
  • 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
  • 1.0:
    • first release version

See also