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