Common Organization of Controls Kit

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.

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.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