• Fixed saving individual axis sensitivity, gravity, and deadzone settings. (Thanks Kailan)
  • Better handle edge cases when trying to use GetText for invalid inputs. (Thanks Guray)
  • Fixed some console warnings in recent versions of Unity.
  • No longer support versions of Unity older than 5.6.4.


  • Corrected/added Keys class entries for Xbox One's View and Menu buttons.
  • Fixed error in Unity 5.4 about making an API call from the constructor. (Thanks Steven)


  • Fixed IndexOutOfRangeException introduced in 2.8.8. (Thanks Doghelmer)
  • Xbox One gamepad triggers now try to map to axes 9 and 10 when scanning for inputs.


  • Keys class attempts to smartly handle Xbox 360 and Xbox One gamepad differences.


  • Loading no longer "stomps" axis sensitivity, gravity, and deadzone settings. (Thanks SinisterCycle)
  • cInput only loads settings once on startup.
  • Modifiers now do some sanity checking.
  • Fixed input values not updating while scanning during key rebind. (Thanks Sascha)
  • Other minor bugfixes.


  • Forbidden keys are now completely ignored when changing input.
  • You can now forbid axes using ForbidAxis. (Thanks Dan)
  • cInput setup no longer requires restarting the Unity Editor.
  • Fixed more gravity/sensitivity/deadzone errors caused by changes in 2.8.4. (Thanks Doghelmer)
  • cInput now warns when trying to change inputs for keys that haven't been defined. (Thanks Joshmond)


  • Fixed IndexOutOfRange exception introduced in 2.8.4. (Thanks paulordbm)
  • Added optional parameter to cInput.Init to disable cGUI. (Thanks willtrax)
  • No more garbage collection each frame when getting calibrated axis inputs.


  • cInput can now be set up to check for input from any gamepad axis.
  • Fixed disabling PlayerPrefs causing problems. (Thanks jpthek9)
  • Keys class now has proper mappings for Xbox 360 gamepad on WebGL player.


  • Fixed gravity/sensitivity/deadzone not working for positive axis inputs. (Thanks Doghelmer)


  • Fixed error when setting deadzone/gravity/sensitivity for axis with 1 input. (Thanks Doghelmer)
  • cInput fires an event (OnKeyChanged) when keys are changed via GUI or ResetInputs. (Thanks CaptainChristian)


  • Added cInput.anyKey and cInput.anyKeyDown properties.
  • Using PlayerPrefs is now optional with usePlayerPrefs bool (default is enabled).


  • Fixed Xbox 360 DPad up/down axis on Windows in Keys class. (Thanks yvesgrolet)
  • Updates to documentation.
  • Updates to demo scene for compatibility with Unity 5.


  • Added public setter for scanning variable. (Thanks Ed)
  • Increased the limit on inputs from 99 to 250. (Thanks Chris)
  • Fixed cGUI being transparent when cGUI.bgColor isn't set properly.


  • Expanded cross-platform Xbox 360 controller mappings in the Keys class to all buttons/axes. (Thanks Phi)
  • ChangeKey now warns if you try to change an invalid input. (Thanks Foxxis)
  • cGUI will no longer warn about cSkin if cGUI isn't being used. (Thanks Walter)


  • Fixed Dictionary lookup sometimes causing an exception. (Thanks Andre)
  • Fixed possible out of range exception when loading from external string. (Thanks Nick)
  • Setting Keys/Axes now returns the hashcode for easy future reference. (Thanks Foxxis)
  • Added overloaded GetText functions to return empty string instead of None. (Thanks Kurt)


  • cInput now uses hash lookups for functions like GetKey, GetAxis, etc. (Thanks Foxxis)
  • Fixed Xbox triggers returning strange values on OSX. (Thanks Warbands)
  • Keys class now returns appropriate axes for Xbox triggers on OSX.
  • Various performance improvements, less loops/iterations per frame.


  • Fixed Axis 10 always returning positive. (Thanks Erik)
  • Fixed case where analog input wouldn't always give correct value. (Thanks Manolo)
  • Fixed GetButtonDown and GetButtonUp not working properly with analog inputs. (Thanks hoeloe)
  • Fixed external string loading working with recent axis inversion status changes.
  • You can now retrieve sensitivity, deadzone, and gravity values. (Thanks defaxer)


  • Fixed misplaced #endif which caused build problems. (Thanks Credd)


  • GetKey and GetButton functions now work on cInput's first run. (Thanks Erhune)
  • cInput now compares hashes instead of strings in many places. (Thanks Foxxis)
  • Make sure inversion status was saved before trying to load it. (Thanks nagisaki)
  • A debug warning is more clear and should show up less often.
  • Fixed a couple cases of redundant lookups. (Thanks Foxxis)


  • Axes no longer return 0 if deltaTime is 0. (Thanks Mel)
  • SetAxis no longer resets the axis inversion to false. (Thanks SpectralRook)
  • Changed Script Execution Order for cInput so that it runs before other scripts.
  • No more errors if cGUI files are missing. (Thanks Shyam)
  • An important debug log warning is no longer commented out. (Thanks Shyam)


  • Fixed cInput sometimes not being initialized properly. (Thanks Warbands and Jesse)
  • Added event to cGUI for when the GUI is opened/closed. (Thanks Kelly and Mike)
  • Removed the last remnants of the Necromancer GUI. (Thanks Mike)
  • Fixed axis gradually increasing more than it was being pressed. (Thanks Chris)


  • GetAxis returns uniformly smoothed results for both digital and analog inputs.
  • GetAxisRaw actually returns raw values (no more clamping values). (Thanks Goblox)
  • cInput now binds Xbox triggers to axis 9 or 10 for left or right trigger respectively. (Thanks Lexie)
  • Added easier access to Xbox triggers in Keys class.
  • Fixed ArrayOutOfBounds exception when setting axis Sensitivity, Gravity, Deadzone. (Thanks dbarbieri and morten_nost)
  • cInput now restores the instantiated cInput object if it gets destroyed. (Thanks Sean)
  • cInput no longer appears to support 5 gamepads since Unity only supports 4. (Thanks OhiraKyou)
  • MonoDevelop should no longer complain about unsupported default parameters. (Thanks Daithi)
  • Implemented a "scanningDeadzone" to prevent axes with deadzone issues from breaking input scanning. (Thanks megan_l_fox)


  • Corrected installation instructions in readme file.
  • Fixed GetKeyUp and GetKeyDown always returning false for Mouse Wheel. (Thanks Krileon)
  • Replaced cInput.dat with plaintext version.


  • Fixed immediately selecting an axis that gives non-zero value by default. (Thanks Goblox)
  • Fixed case where GetAxisRaw always returned 0. (Thanks gumboots)
  • Fixed axes sometimes returning max value (1) when halfway down. (Thanks Goblox)
  • Fixed some issues with axis calibration.


  • Fixed SetAxis overload function not working properly. (Thanks Goblox)


  • Fixed an error in the console log. (Thanks Matt and Harabeck)


  • Fixed a bug in axis calibration code. (Thanks gumboots and Krileon)


  • Converted cInput scripts to UTF-8 which should prevent MonoDevelop errors. (Thanks Matumit)
  • Renamed Demo Class files to prevent Class/Namspace conflicts. (Thanks Michael)
  • Cleaned up a bunch of Debug Logs that accidentally got left in there somehow.


  • Added deadzone settings on a per-axis basis with SetAxisDeadzone().
  • Fixed ChangeKey not setting modifiers properly (for reals this time). (Thanks ratking)
  • Fixed mixing keyboard and joystick/mouse inputs on an axis being totally broken. (Thanks Laztor)
  • Fixed individual sensitivity and gravity not working properly (for really reals this time).


  • Fixed GetAxisRaw almost always returning 0 when using gamepad and mouse axis. (Thanks V4nKw15h)
  • Fixed ChangeKey not setting modifiers properly. (Thanks Krileon)
  • Fixed secondary inputs not accepting modifiers. (Thanks hjupter)


  • Fixed cGUI not working when cSkin wasn't set. (Thanks KeithT)
  • Fixed trying to load from PlayerPrefs when there was nothing saved.


  • Added Editor script to create the InputManager.asset file.
  • Removed unused variable which caused Editor warnings. (Thanks Neurological)
  • GUI color now works in both Unity 3.x and 4.x. (Thanks Neurological)
  • Added functions to remove modifiers. (Thanks xadhoom)


  • Got individual axis gravity and sensitivity settings to work (for reals this time). (Thanks Kementh)
  • Fixed bug where duplicate copies of same axis could be created.


  • Added the ability to set up and use modifier keys with AddModifier() and SetKey(). (Thanks Steve Tack and others)
  • Added the ability to set gravity with SetAxisGravity() rather than having all axes use the same gravity. (Thanks Can Baycay)
  • You can now also set the gravity for an axis when you create it with SetAxis(). (Thanks Can Baycay)
  • Rewrote GUI code and separated it from cInput into its own script (see cGUI documentation).
  • Separated Keys class from cInput into separate script.
  • Added new GUISkins.


  • Fixed inability to use SetKey after cInput object was created. (Thanks Rob)


  • Fixed using mouse button as input triggering another call to ChangeKey. (Thanks Joseph)
  • Fixed flickering Axis name in GUI when changing key.
  • Deadzone for axes used as buttons now uses public "deadzone". (Thanks Lexie)
  • Prevented _string2Key Dictionary from being created more than once.


  • Fixed out of range null-reference exception related to number of gamepads. (Thanks Julian)


  • cInput now caches joystick axis strings. (Thanks goodhustle)
  • Escape doesn't close GUI menu in demo if scanning for new inputs. (Thanks MrG)


  • Added public Init() to manually create the cInput object. (Thanks goodustle)
  • cInput now supports saving/loading inputs to/from sources other than PlayerPrefs. (Thanks gumboots)
  • Made "scanning" property static. (Thanks goodhustle)
  • Fixed a bug with allowDuplicates.
  • ResetInputs() now re-saves defaults to PlayerPrefs. (Thanks goodhustle)
  • Fixed ChangeKey() to properly (dis)allow certain inputs. (Thanks Adrian)
  • Fixed certain debug messages showing when they shouldn't.


  • cInput is now compatible with iOS, Android, and Flash.
  • Improved efficiency (less CPU overhead).
  • Fixed key & axis mapped to same input causing KeyUp to fire instantly. (Thanks goodhustle)
  • Added read-only public bool "scanning" as getter for the private bool "_scanning" (Thanks goodhustle)


  • Added the ability to set sensitivity with SetAxisSensitivity() rather than having all axes use the same sensitivity. (Thanks Jacob)
  • You can now also set the sensitivity for an axis when you create it with SetAxis().
  • You can now forbid keys from being used as inputs with ForbidKey(). (Thanks Kurt)


  • Added IsKeyDefined() and IsAxisDefined() methods to allow other developers to make cInput-compatible plugins. (Thanks David)
  • Added GetAxisRaw() method. (Thanks Jay, patrickw)
  • Added Clear() method to remove all PlayerPrefs keys stored by cInput
  • Fixed changed/deleted/added keys not saving/loading properly
  • Keys class properties are now const, as they should be. (Thanks Jay)
  • SetAxis() now has some error checking to make sure you're using it correctly. (Thanks Jay)


  • Fixed bug with GetAxis() not creating cInput object properly. (Thanks Christopher)


  • Fixed bug with inverted axes not saving/loading properly. (Thanks Christopher)


  • Analog inputs are now compatible with GetKeyDown(), GetKeyUp(), GetButtonDown(), and GetButtonUp() functions. (Thanks goodhustle)


  • ShowMenu() now accepts additional arguments for easier customization of cInput's menu. (Thanks goodhustle)


  • InvertAxis() and IsAxisInverted() have been combined into a single function: AxisInverted().
  • Minor bugfixes.


  • Length() method has been replaced by the read-only cInput.length property.
  • Can now manually assign keys with ChangeKey() instead of waiting for input from player.
    • This can be used to pre-designate control "Profiles" which can be switched from a menu.
  • Added GetButton(), GetButtonDown(), and GetButtonUp(). (Thanks patrickw)
  • Can now allow duplicate inputs for multiple actions using cInput.allowDuplicates (Thanks patrickw)
  • Can now invert an axis using InvertAxis("axisName"). (Thanks Ryan)
  • Can get axis inversion status with IsAxisInverted("axisName"). (Thanks Ryan)
  • SetAxis() can now accept 1 action instead of requiring 2. (Thanks patrickw)
  • Better support for sliders, gas pedals and other analog inputs with Calibrate(). (Thanks patrickw)


  • Initial release of cInput 2.
Last modified 4yr ago