2014-08-01 Travis Nickles <nickles.travis@gmail.com>

Version 2.5

* Fixed packaging the Windows version so the program will work on
Windows XP again.

* Delay rendering of flashing buttons. This helps improve controller
responsiveness when the main window is not hidden.

* Reduced the size of written profiles. Only changed values are
now stored in profiles.

* Updated German translation provided by phob and Leonard Koenig.

* Allow a profile to be listed as the final argument on the command line.
Ex: antimicro ~/antimicro-profiles/profile.xml.

* Added diagonal distance support for distance slots for Standard
mode on Sticks and DPads. This was necessary for some modifier assignments
to work properly. The best example is for assigning walking in Half-Life 1.

* Allow generated events to be sent to a different X display than the
application is running on. This change was mainly done to better work
with SteamOS. AntiMicro can be run via ssh with X tunneling in order
to configure profiles on one system but the program will send events to the
X display that is running Steam and games.

* Auto Profile support has improved for SteamOS. Application grabbing can
now be done while in the SteamOS BPM Session. Steam BPM can be grabbed as
well.

* Only show active or soon to be active slots for buttons in the main
window. The text displayed on the buttons will update when a
new zone has been reached due to using slots such as distance or hold.

* Allow no profile to be assigned to an application for an Auto Profile entry.
This means that the program will chose an empty profile when the application
for that Auto Profile entry has focus. This will help with disabling AntiMicro
for applications that already have controller support.

* Controller Mapping dialog now stops processing events until all elements
have been released on a controller.


2014-05-30 Travis Nickles <nickles.travis@gmail.com>

Version 2.4

* Relative spring mode added.

* Key repeating changes in Windows.

* Updated Windows version to use Qt 5.3.0.

* Set copying added.

* Corrected application checks used for Auto Profile support
in Windows.


2014-05-23 Travis Nickles <nickles.travis@gmail.com>

Version 2.3.3

* Tweaked Enhanced Precision mouse acceleration curve.

* Tweaked "all" option in Auto Profile. No profile assigned to "all" now
implies that a blank configuration should be loaded.

* Manpage created by Jeff Backus.

* Migrated to the CMake build system.


2014-05-15 Travis Nickles <nickles.travis@gmail.com>

Version 2.3.2

* Fixed problem with old profiles not being usable in the
program.


2014-05-13 Travis Nickles <nickles.travis@gmail.com>

Version 2.3.1

* Added new Enhanced Precision mouse curve. It is now the default
mouse curve. The new mouse curve will make the cursor move slowly
towards the low end of an axis and the cursor movement will be
accelerated towards the high end of an axis.

* Added unsaved profile dialogs.

* Added key repeating behavior under Windows.

* Increased maximum turbo interval.

* Added more options to the Edit Settings dialog.

* Added profile name display editing.

* Fixed invalid pointer issue for Hold events.


2014-05-02 Travis Nickles <nickles.travis@gmail.com>

Version 2.3

* Added a daemon mode.

* Added joystick profile compatibility parser for game controllers.
Old profiles are now usable when using SDL Game Controller support.
Old profiles have to be mapped against the same controller that
is connected.

* Added cycle reset support. Sequences with cycles can now get
returned to the first cycle zone in a sequence after a period of
time.

* Changed Auto Profile support to work properly in SteamOS
while running the SteamOS Big Picture Mode session. On many
tested games (Duke Nukem 3D, SuperTux, World of Goo), the
game had to be run in windowed mode in order for Auto Profile
support to be able to detect the application. It is recommended
that you run games in windowed mode when using Auto Profile support
in the SteamOS BPM session. This is not an issue when running the Steam
desktop client in desktop mode.

* Added a delay slot type. A delay slot can be used for
key presses in a key combination. Unlike other macro slots, slots
placed before a delay slot will remain active after the specified
time has passed.

* Added option to allow the program to start on Windows startup.

* Changed dialogs for secondary set buttons to display the set
that the button is currently in.

* Changed turbo mode to give more control. Key presses are now given
more time to be active. Key presses and releases now run for a
duration of t/2 seconds.

* Altered tray menu to display a single list when only one controller
is connected. An option has been added to allow for a single
list to also be used when multiple controllers are detected.

* Fixed issue with Windows XP Auto Profile workaround.
On the plus side, now the program is confirmed to work in
Windows XP.

* Fixed issues with Auto Profile support saving and precendence.


2014-04-19 Travis Nickles <nickles.travis@gmail.com>

Version 2.2

* Added example controller display to Game Controller Mapping
dialog window.

* Added Auto Profile support. Allows for profiles to be associated
with specific applications.

* Added button icons in Windows version.

* Added a press time slot type. That slot type is used
to have keys active for a specific period of time.

* Allow Pause slots to have a 0 second interval. Allows
for a forced key release.

* Windows version is now built with SDL 2.0.3.

* Fixed 8-Way D-Pad mode.

* Fixed preset options in various dialogs to account for new aliases.

* Fixed ampersand rendering in set buttons.

* Fixed spring mouse mode dimension support.

* Fixed spring mouse mode accuracy under Windows.


2014-02-28 Travis Nickles <nickles.travis@gmail.com>

Version 2.1

* Added new stick and dpad modes.

* Added set names.

* Minor fixes for Windows.

* Fixed QSettings usage to reduce reads and write to config file.


2014-02-10 Travis Nickles <nickles.travis@gmail.com>

Version 2.0.1

* Active keyboard keys now use a reference count. This will
be useful for keeping modifier keys held when moving a stick
from a diagonal direction to a cardinal direction. This will allow a run
to be maintained properly.

* A release delay has been added to release slot events. This is needed
for some games where a key press and release might happen too quickly
for a game, such as The Elder Scrolls IV: Oblivion, to catch it.

* Altered data sent to SendInput under Windows. The change should allow
games that rely exclusively on scancode data to detect keyboard
key presses now. Previously, keyboard emulation would not work
while playing The Elder Scrolls IV: Oblivion on Windows.

* Improved key associations under Windows. VK_OEM_* keys associations
are now generated at runtime which will allow associations
to be more layout independent.

* Changed some portions of the Windows version so that the Numpad
Enter key can be emulated.

* The recent profile list is now updated when a profile is added
or removed from the list as opposed to when the program is closed.
This allows the list to be in sync while utilizing hotplugging.


2014-01-04 Travis Nickles <nickles.travis@gmail.com>

Version 2.0

* Migrated profiles to use Qt key values as opposed to using native key code
values. Allows for better cross-platform compatibility. Current 
joystick profiles will be migrated when first loaded by the program.

* Program can now be compiled against SDL 2.

* The Game Controller API provided by SDL 2 has been integrated into the
application. The API is used to abstract various gamepads to a unified 
standard. Profiles made against the Game Controller API can be used with
any controller that is supported. Unsupported controllers will have to be 
mapped in the program.

* A simple Game Controller mapping window has been made so people that are using
an unsupported controller can map that controller so that it can be used with
the Game Controller API. Any saved mapping string will be loaded into
SDL when AntiMicro is first launched or when you select the
"Update Joysticks" option in the main window.

* Any new saved profile will include the device type that it is 
associated with in the filename. Joysticks and game controllers use slightly 
different file specifications.

* Joystick hotplugging support has been added thanks to SDL 2.

* On Windows, XInput support is now available. This allows the Xbox 360 
controller guide button to be usable and both gamepad triggers can be used at 
the same time. Previously, only DirectInput was being used so both triggers were 
being mapped to one axis so they would negate each other if used at the same 
time. This problem would really affect people trying to play Call of Duty with a 
360 controller when the "Hold Aim Down the Sight" option is enabled in the game.

* The list of recent profiles is now tied to a joystick GUID or joystick name 
if the GUID is not available (compiled against SDL 1.2).

* Program options window has been made. For right now, it is only being used to 
allow users to be able to disable Game Controller integration for specific
controllers.

* Mouse events are queued before a mouse event is sent to the system. This 
allows for smoother diagonal mouse movement. This really helped improve camera 
control for me in Warsow.

* Key checker dialog has been made so you can check the alias values that are 
being used for keyboard keys. This is mainly for debugging purposes. If you 
find that a keyboard key that you use does not have a built-in alias, please 
let me know so an alias can be added. Although, the key can still be used in 
the program and saved to a profile. The major downside is that a profile 
that uses an unsupported key will not be cross-platform compatible.


2013-12-13 Travis Nickles <nickles.travis@gmail.com>

Version 1.2

* Improved while held set changing so that the program should not get stuck on
the wrong set. The changes made should behave roughly like the old while held
workaround that used turbo.

* Windows port of AntiMicro has been made.

* Tweaked code used for button presses and releases in order
to improve responsiveness.

* Allow time-dependent action slots to have an interval
as low as 0.01 seconds.

* Tweaked Release action slot. Release slots can now be placed at the
beginning of the assigned slots. This can be useful for
Tap and Hold slot configurations.

* Pause slots can now be used with Release slots.

* Profiles can be removed from the recent configs list.

* Spring mouse mode preview has now been enabled.

* Mouse speed modifier action slot has been added. This can be used to modify
the mouse speed settings used with any controller element while the slot is
active. The setting will modify the mouse speed by the percentage that is
specified. The mouse speed modifier can be used to allow for the mouse speed
to be slowed down while sniping.

* Button and action names have been added. Names can be used to describe
the action that a slot sequence performs in the game.

* Mouse wheel buttons are now used as a form of mouse movement. Mouse wheel
scrolling is now possible without using turbo. The speed that the wheel is
rotated can be specified in the mouse settings dialog window.

* Added support for two extra mouse buttons.

* A new controller properties window has been made. This window shows various
bits of information provided by SDL about a controller as well as the current
values of all the controller elements.

* Added quick assign functionality for sticks and virtual dpads.

* Windows version of the program now uses LocalAppData variable to know
where to place the program's settings file.

* New translations provided by the translation team.


2013-10-03 Travis Nickles <nickles.travis@gmail.com>

Version 1.1

* Added spring mouse mode. This mode is used to move the mouse cursor
from the center of the screen based on how much an axis has been moved
from the dead zone. The mouse cursor will be returned to the center
of the screen when the axis is released.

* Added mouse curve options from QJoyPad.

* Tweaked mouse movement in cursor mode to improve axis responsiveness
and to allow mouse movement to be less jittery.

* Added optional mouse smoothing for a further reduction
in jitter in exchange for slightly delayed responsiveness.

* Moved various mouse settings into a new dialog window.
Several other dialog windows have been changed to point to the
new dialog window to allow for mouse setting adjustments.

* Added an option to start the program hidden.

* Tray menu has been tweaked to allow configuration profiles to be
disabled. A blank new profile will be enabled in the program
for a controller. This is equivalent to selecting <New> in the main window
combobox.

* Serbian translation provided by Jay Alexander Fleming.

* Brazilian Portuguese translation provided by VaGNaroK.


2013-07-12 Travis Nickles <nickles.travis@gmail.com> 

Version 1.0

* 8-way controls have been implemented. This allows keys to be mapped
to the diagonal directions of controller sticks and dpads. 8-way controls
allow rougelike games to be playable.

* Virtual Dpad support has been added. Axes and buttons can be mapped
to a virtual dpad. This is useful for mapping dpads that are detected as a
pair of axes in SDL.

* A Quick Set option has been added. Using the Quick Set option, you
can press a button on the controller and the program will bring up the edit
window for that specific button.  The button can then be mapped to an
assignment from the edit window. The Quick Set option also works for axes,
controller sticks, and dpads. This is more of a convenience function than
anything but I have found it really useful since implementing it.

* Main interface button text is now updated whenever the assigned slots
are changed. This allows the buttons' text to be in sync in many situations
that was not possible before.

* Toggle and Turbo can be used together to create automated key macros for
use in MMORPGs.
