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