Latest Update: 2024/11/22


The below log shows all updates for this product since release:


v4.50

Changes in AxisAndOhs version 4.50
- Change: Additional variant for MSFS 2024 (separate installer and database)
- Change: Added automatic merge when restoring AAO MSFS database backup in AAO MSFS2024.
- Change: Added sound device mapping to numerical IDs
- Change: RPN: Added feature buffer length to HIDDEVICE information
- Change: RPN: Added methods to reposition and restyle any app windows in Windows
- Change: RPN: added Logging options to RPN, AAO Commands and WSH scripting
- Change: RPN: added rpnnumval, rpnstrval to AaoCmd in WSH 
- Change: RPN: additional _TOGGLE commands for Control Layers
- Change: RPN: additional commands to switch both button and axis control layers at the same time (AAO_CONTROL_LAYER_SET, AAO_CONTROL_LAYER_TOGGLE)
- Change: WSH: Added real Javascript scripting
- Change: Scripting: added (CREATENONATC:), (CREATEPARKED:), (CREATEENROUTE:), (GETDATA:), (SETDATA) and (SENDKEVENT:) commands for AI operations.
 
- Bugfix: Keyboard button used as Toggle Combo doesn't release
- Bugfix: Keyboard hook didn't pick up system keys (Alt)
- Bugfix: Buttons: P3D-Versions: MAN type incorrect when reopening a button assignment
- Bugfix: Events: Custom aircraft SDK events were not displayed when re-opening an axis assignment using them
- Bugfix: Buttons: green LED weren't working the same with or without "Find Button" active
- Bugfix: Script Editor: Fixed missing scroll bar when resizing the editor window
- Bugfix: RPN: EXECBAT not working properly
- Bugfix: Axis: trigger mode did not repeat when assigned to simulator events.
 
****************************
Please make sure to visit www.axisandohs.com/downloads 
 
- additional gauges
- additional web pages
- additional tools
 
****************************
 
Elgato StreamDeck
 
On the downloads page you will find a sample implementation of an Elgato StreamDeck PlugIn that uses the AAO WebAPI to communicate with the simulator.
 
--> Currently at version 37.01
 
****************************
 
VRI MCP II Bridge

Plugin to connect the VRI MCP II Boeing type to AAO
 
--> Currently at version 3.21
 
****************************
 
Knobster Bridge
 
External Bridge program to connect SinInnovation "Knobster" devices (latest model only) to AAO
 
--> Currently version 1.07
 
****************************
 
Arduino Bridge
 
Plugin to connect Arduino Mega, Nano and Uno boards to AAO

-> Currently at version 1.03 b04
 
****************************
 
HID Bridge
 
External Bridge program to connect generic HID devices to AAO
 
-> Currently at version 1.00 b04


v4.40 - 2024/08/01

- Change: Redesigned Event and Variable selection dialogs

- Change: Redesigned Add/Change Button dialogs

- Change: RPN: Added (SIMVAL: command

- Change: WSH Integration: added getnumval, setnumval, getstrval, setstrval options to AaoCmd


- Bugfix: Template import disregarded Combo buttons when reassigning the hardware

- Bugfix: Axis: duplicate Axis assignments not processed correctly

- Bugfix: PMDG 777: MSFS data structure updated

- Bugfix: PMDG 737: MSFS data structure updated


****************************

Please make sure to visit www.axisandohs.com/downloads 


- additional gauges

- additional web pages

- additional tools


****************************


v4.30 - 2024/07/04

- Change: PMDG 777 MSFS integration

- Change: added (HIDDEVICES) command, added indexes to (HIDWRITE/READ)

- Change: MIDI: added option to send fully customized SysEx messages F0 xx ... zz F7

- Change: RPN/MIDI: added (MIDIOUT: AAO command (so you can use %s1 etc.)

- Change: JScript: setInterval and setTimeout can have parameters now


- Bugfix: Axis: when a filter is set, the axis was not updated when the joystick stopped sending data (=the edges could not be reached).

- Bugfix: CONVERSATION: a running conversation could only be paused by supplying the full path name of the file


v4.20 - 2024/05/30 

- Change: Axis: "High sensitivity mode" for joystick axis operation

- Change: Axis: when assigning an event or variable with a value range greater than 2, Rounding is preset to "int"

- Change: Axis: redesigned and simplyfied the Axis Trigger Mode

- Change: Voice Recognition: added an error log message when a grammar can't be loaded

- Change: Voice Recognition: added an optional setting to prevent AAO voice recognition reactig to text-to-speech output

- Change: Voice Recognition: added Windows Voice Typing ("Cortana") online voice recognition option.

- Change: Voice Recognition: added option to parse a dictation into button events.

- Change: Scripting: REXEXSPLIT can escape pipe symbol

- Change: Scripting: added "(>>" increment/concatenation operator to RPN for numerical and String LVars

- Change: Scripting: Editor remembers font and size

- Change: Gauges: added option to implement scrolling text

- Change: Gauges: added <Visible> tag to Input element

- Change: XPlane: made AAO more resilient against invalid entries in the default DataRefs.txt and Commands.txt

- Change: XPlane: optimized the scan process for XP files

- Change: XPlane: RPN parser accepts AAOs internal K-Events

- Change: MIDI: added processing of MIDI SysEx messages as 0xF0-CHN-EVT-VAL-0xF7. CHN, EVT, VAL are single byte values for channel (0-255), event-ID (0-255) and value (0-127)


- Bugfix: NOAA weather API has changed

- Bugfix: Axis/Buttons: attaching an XBox controller and another device that registers as a gamepad, then one of the two won't work.

- Bugfix: Axis/Buttons: updating labels when a script is renamed

- Bugfix: Axis/Buttons: AAO would crash when a game controller was disconnected in a layered button/axis configuration

- Bugfix: Axis/Buttons: When a joystick is initialized before connecting, switch-type buttons that are in the "ON" state were not processed correctly when switched off again

- Bugfix: Axis/Buttons: when scripts were assigned to an axis it would only transmit integer values, regardless of what the rounding was set to. Float rounding has been limited to 4 digits in this case 

- Bugfix: Wear&Tear was missing the option to edit the title of a template

- Bugfix: MSFS: One Shot Autoscripts starting more than once

- Bugfix: MSFS: controls were not disabled in Clone mode

- Bugfix: Gauge Editor: fixed problem with resizing the background image

- Bugfix: Scriptfiles: syntax checker shows multiple choice checklist commands as errors

- Bugfix: Scripting: missing updates in buttons when renaming script groups or scripts

- Bugfix: Saitek Panels: Some buttons not processing ON/OFF correctly when overridden with custom events or scripts (upper row on the Switch Panel)

- Bugfix: CAN: floating point numbers incorrectly "reduced" to the neighboring integer


****************************

Please make sure to visit www.axisandohs.com/downloads 


- additional gauges

- additional web pages

- additional tools


****************************


v4.10 - 2024/01/26

- Major Change: Replaced the sound output with NAudio to allow playing SOUND and SPEAK on different devices, with volume, balance and sound effect controls.

- Change: Scripting: added DSP effects processing to SOUND and SPEAK

- Change: Scripting: added SIGNAL and STOPSIGNAL commands

- Change: Scripting: added option to query the ChatGPT API for text results (requires billable ChatGPT API account!).

- Change: Scripting: added option to play sounds for a preset time only

- Change: Scripting: added VOICEMIX command to mix voice output with an audio file

- Change: Scripting: made variable processing faster

- Change: Scripting: added tocsv operator for arrays

- Change: Scripting: added processing option to ssplit

- Change: Scripting: added GETBUTTONS, GETAXIS commands to read the state of a game controller

- Change: Scripting: added AAO_SAVE_DESKFIP, AAO_SAVE_WEBFIP, RENDERGAUGE commands to save a FIP into a base64 string variable

- Change: Scripting: MSFS: added MSFS_DEACTIVATE_ADDON, MSFS_ACTIVATE_ADDON commands

- Change: Scripting: added processing option to ssplit

- Change: Variable Observer: arrays and hashmaps can now be observed "live"

- Change: Scripting: Added (DICTATION commands to write voice recognition results into an LVar to parse them elsewhere

- Change: TextToSpeech: integrated advanced TTS capabilites into AAO: if you have an AWS Polly, Microsoft Cognitive Speech or ChatGPT API account, you can use those services to generate voice output from text. The AdvancedTts Plugin is obsolete with this change.

- Change: Voice Recognition: Added option to use Microsoft Cognitive Speech service for voice recognition

- Change: Gauges: Added voice recognition status gauge to the default Lorby Gauges

- Change: Made Button List scrollable

- Change: CAN: reading values from CAN messages into LVars


- Bugfix: Buttons with repeat and Combo: when Combo was released before the button, it got stuck.

- Bugfix: Buttons: key up events were sent multiple times in some situations (keyboard input mostly)

- Bugfix: Buttons: cannot use indexed LVars

- Bugfix: ScriptEditor: prevent STRARR/NUMARR commands from executing when the Test button is not pressed

- Bugfix: Control Layers: AAO_xxx_LAYER_SET events only working with the 4 default layers

- Bugfix: Scripting: script variable not working with WSH

- Bugfix: Scripting: in OfflineMode, non-existing automated scripts could break the script processing.


- Bugfix: MSFS: InputEvents axis disregard the "on change" setting

- Bugfix: MSFS: event selection: Test with 0/1 not working for MSFS Input Events

- Bugfix: Gauges: DesktopFipHandler not closing when AAO is shut down

- Bugfix: Gauge Editor: fixed problem with resizing the background image


****************************

Please make sure to visit www.axisandohs.com/downloads 


- additional gauges

- additional web pages

- additional tools


****************************


v4.00 - 2023/12/08

- Major Change: Added the option to use other scripting languages than RPN (JSCRIPT, VBSCRIPT)


- Change: Axis: added option to handle the deadzone in linear or non-linear fashion. Activate "Tools->Axis advanced mode", then use the "RAW" button to access the settings. "linear" means that the deadzone is cut from the axis range, while with "non-linear" the range is wrapped around the deadzone (= it starts when the deadzone ends).

- Change: Updated MSFS SDK events and variables to latest spec

- Change: Updated MSFS SimConnect libraries to durrent spec

- Change: new asynchronous logging mechanism

- Change: Voice Recognition: resetting the voice recognition will clear out all LISTEN_FOR_VOICE scripts too

- Change: Voice Recognition: option to export the internal Numeric and Nato grammars as a file

- Change: RPN: added (HIDWRITE:, (HIDWRITEOR:, (HIDWRITEAND:, (HIDREAD: commands that can communicate with the FeatureBuffer of a HID device (example: the LEDs on the HoneyComb Bravo)

- Change: RPN: added NOAA_METAR_POS, NOAA_METAR_ICAO commands to download the current METAR for a location or ICAO code into an LVar

- Change: RPN: added setbit/clrbit operators

- Change: RPN: added binary operators for byte arrays (=strings in hex format)

- Change: RPN: added NOAA_METAR_POS, NOAA_METAR_ICAO commands to download the current METAR for a location or ICAO code into an LVar

- Change: RPN: added filter option to EXPORTVARS command

- Change: RPN: (LOADTEXTFILE:) can now also target a single String LVar instead of a dynamic list

- Change: RPN: Added (LOAD_AAO_CONFIG:) command, so you can switch to an entirely different config at runtime

- Change: RPN: Made executing AAO commands faster

- Change: Variable Observer: when selecting variables from the treelist, keeping left shift pressed prevents the selection dialog from closing

- Change: Variable Observer: it is now possible to observe AAO arrays and hashmaps

- Change: Variable Observer: right-clicking an item now copies the value to the clipboard too

- Change: Added option to label Control Layers individually, on a per-aircraft(livery) basis.

- Bugfix: Gauges: a recent WPF update changed the way that Stretch works when setting a size programmatically at the same time

- Bugfix: RPN: Conflict between SPLIT and code injection via macro variable

- Bugfix: Keyboard combinations assigned as single keys interfere with single key recognition.

- Bugfix: Saitek Panels: missing event for ADF swap

- Bugfix: AAO Plugin Handler did not process all Json structures correctly


v3.60 - 2023/10/03

- Change: MSFS: SU13 compatibility - Input Events

- Change: RPN: copy and paste to/from RPN Editor redesigned

- Change: RPN: STRARR and NUMARR can be used like dynamic lists (= without the ":capacity" option)

- Change: RPN: added list/array operators "next", "rset", "revs", "sora", "sord"

- Change: RPN: added (HASHMAP: operator

- Change: RPN: Added "REGEXSPLIT:" command

- Change: RPN: Added "UNLISTEN:" command

- Change: RPN: added "unixtsms" operator

- Change: Gauges: Added {case} conditional string format

- Change: Speech Recognition: added option to use SRGS XML grammar files for speech recognition

- Change: Speech Recognition: Added NATO - alphabet as voice recognition option

- Change: Keyboard events will no longer repeat automatically with the keyboard clock, must be set to repeat in AAO

- Change: added internal LVar with the Config/Template title (L:AaoConfigTitle, String)

- Change: added prototype Wear&Tear module


- Bugfix: Keyboard events were not processed correctly when used as Combo buttons

- Bugfix: Virtual Keys: extended key codes not handled correctly

- Bugfix: Saitek Radio Panel: can't override ADF2 frequency

- Bugfix: RPN: LOAD_SIMBRIEF_PLAN not working

- Bugfix: RPN: script variable not processed correctly when there is a SPLIT in the script

- Bugfix: GaugeEditor: Input boxes and MouseAreas cannot be locked with a mouse click

- Bugfix: GaugeEditor: Background Image Editor not working correctly

- Bugfix: Gauges: Reloading a layout doesn't reset the gauge sizes


v3.50 - 2023/07/17

- Change: added Prepar3d V6 variant

- Change: Scripts can call themselves, AAO will only display a warning

- Change: Option to export multiple templates in one go

- Change: Updated InGame Panel so it can process multiple Coherent calls and triggers

- Change: Added "Filter" boxes to selected template/config selection dialogs

- Change: Added dialog to call AAO web pages

- Change: Gauges: added VerticalAlign parameter and script options for horizontal and vertical alignment

- Change: Gauges: GaugeText can now be multiline text, lines are separated with \n

- Change: RPN: Added "time" operator that queries the current system time in milliseconds

- Change: RPN: Added "ar429" operator to convert ARINC429 values

- Change: RPN: added "(LVARRPN:)" command

- Change: RPN: added "(OPENURL:)" command


- Bugfix: RPN: Conversations: (END) can be used in a line that contains other code too

- Bugfix: Gauges: Update frequency inaccurate, lagging behind

- Bugfix: Gauge Editor: several bugfixes


v3.01 - 2023/05/04 

- Change: MSFS: updated event and variable lists to SDK 0.21.0 spec 

- Change: MSFS: added Z: variable processing

- Change: make AAO more indifferent to USB errors, disconnect device only when an error happens for 50+ times

- Change: added Link to AAO website to the top menu

- Change: when OfflineMode is disabled, AAO will no longer switch over to online mode automatically

- Change: RPN: Added option for "repeating" scripts

- Change: RPN: added "(DIRLIST" AAO command and filexist, direxist RPN operators

- Change: RPN: added SPEAKBLK command for sequetial text-to-speech output

- Change: Gauges: added option to set a default template for desktop, web and app gauges

- Change: Gauges: Added <Visibility> tag for the entire gauge

- Change: Gauges: added <Input> element to gauge definition

- Change: Gauges: Added (AAO_HIDE_DESKFIP:n), (AAO_SHOW_DESKFIP:n) to show/hide individual gauges in a layout

- Change: Gauges: Added (AAO_HIDE_WEBFIP:n), (AAO_SHOW_WEBFIP:n) to show/hide individual gauges in a layout

- Change: Gauges: Added (AAO_HIDE_APPWEB:n), (AAO_SHOW_APPWEB:n) to show/hide individual gauges in a layout

- Change: added option to DesktopGaugeHandler to control "topmost"

- Change: MSFS: added zoom variable to InGame Panel

- Change: SaitekPanels: using INC/DEC events instead of _SET for COM and NAV radios


- Bugfix: Change Button dialog: when selecting LVars from the KeyDown/KeyUp treelists, they were inserted as BVars

- Bugfix: "Configure WebAPI Port" does not show all lorbysi addons for MSFS

- Bugfix: MIDI: possible unwanted cross-references when more than 10 devices are used

- Bugfix: RPN: script header REPEAT_UNTIL_RPN not working as expected, added REPEAT_WHILE_RPN 

- Bugfix: RPN: CONVERSATION not processing WAIT in a *..* line correctly

- Bugfix: Variables of type C: were not working correctly

- Bugfix: Gauges: DesktopFIPs had trouble with BMP files

- Bugfix: Gauges: Desktop and Web FIPs did not process the SizeScale parameter correctly.

- Bugfix: MSFS: LVar to BVar mapping: AAO is not sending 1 (>L:AAO_INPUT_ACTION, Bool) automatically in SU12 mode

- Bugfix: MSFS: manually entered BVars cannot be assigned to buttons directly

- Bugfix: AAO no longer detected empty variable names


V3.00 - 2023/03/27

- Major change: MSFS: with SU12 AAO can access LVars through SimConnect. If there is trouble with this new logic, you can 
 switch the new logic off and go back to the legacy mode in the "Application" menu.

- Major change: the MIDI library in AAO has been replaced, because the old one is no longer maintained. 

With the new version the channel number is finally correct (=same as in all other MIDI tools)
AAO will automatically migrate all existing MIDI assignments (Buttons, Axis and Combos) to the new channel numbers
A backup of all affect
ed files is created during the process, just in case (See Tools->Create Backup / Restore Database)

- Change: Implemented custom message boxes
- Change: updated all libraries, removed obsolete ones
- Change: updated and corrected installers
- Change: improved Script Handler SimConnect variable error handling
- Change: redesigned script initialization process
- Change: When auto connect and autostart are active, AAO will start the sim and connect to it
- Change: Added Plugin - option for additional programmatic modules (=the bridges) that can be used instead of the WebAPI
- Change: Added Drag&Drop option for import files (templates, scripts, BVar mappings, gauge layouts, variable/event lists)
- Change: Added "Minimize to System Tray" option that hides all AAO icons from the task bar.
- Change: Added option to start AAO directly in Offline mode, loading the selection menu
- Change: Added option for displaying web pages and windows apps controlled by AAO (like gauges)
- Change: Added option to start AAO directly in Offline mode, loading a preselected profile.
- Change: RPN: redesigned Text-To-Speech, multiple voices can talk at the same time now
- Change: WebAPI: Secondary WebAPI process to balance load
- Change: WebAPI: Redesigned Port Settings dialogs
- Change: WebAPI: is always active when AAO is started "As Administrator"
- Change: WebAPI: added LEDs to show the status of the WebAPI on the main window
- Change: Gauges: added a new option (besides Desktop and Web FIPs) to create gauge windows to start and display other apps and web pages
- Change: Gauges: added "<Frequency>" to the "<Update>" tags for gauges
- Change: Gauges: added "<Redirect>" tag for web gauges, will display a web page inside an iFrame (if possible)
- Change: Saitek Panels: added option to force a permanent left-shift of the COM frequencies in 8.333 KHz mode
- Change: CAN: Candle and CANhid interface included, supports CIS standard and Canas input events
- Change: CAN: monitor dialog
- Change: CAN: send RPN commands
- Change: MSFS: added option to use the mouse as cyclic input
- Change: MSFS: added default visibility scripts for Ingame Panel
- Change: MSFS: added option to hide Ingame Panel border

- Bugfix: WebAPI: API was processing set and get the wrong way around
- Bugfix: Steam MSFS not started automatically by AAO
- Bugfix: it was possible to close the Script Watcher in a way that it can't be reopened
- Bugfix: "Hardware change" feature disregarded the Combo buttons
- Bugfix: Saitek Panel Handler not always stopping when it should
- Bugfix: multiple startup calls in MSFS version
- Bugfix: dialog for changing the WebFIP port was broken
- Bugfix: Some message boxes can't be closed (missing OK button)
- Bugfix: voice recognizer was case sensitive (problematic with duplicate commands)
- Bugfix: RPN: Re-definition of a <Macro> at a later time didn't work
- Bugfix: Desktop/Web FIPs size controls not working correctly

!!!!!!!!!!!!!!!!!!!!!!!!!!!!

MSFS-Users: PLEASE REMEMBER TO ACTIVATE YOUR BVAR MAPPINGS AGAIN (if you are using them) - INSTALLING AN UPDATE RESETS THEM TO DEFAULT!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!



v2.81 - 2022/12/20

- Bugfix: RPN: Scripts with A:/E:/P: variables in them were not initialized fully every time
- Bugfix: RPN: Scripts with A:/E:/P: variables in them sometimes would not "fire" on the first call.
- Bugfix: RPN: "+" option is missing for "!...f!" string format
- Bugfix: RPN: Selecting certain variables from the treelist causes an app crash
- Bugfix: Fixed problem where an axis assignment would retain an old value when selecting a new virtual assignment
- Bugfix: Fixed unexpected closing of the app when an empty axis assignment is created
- Bugfix: SaitekPanels and FIPs handler not working with cloned configurations

!!!!!!!!!!!!!!!!!!!!!!!!!!!!

MSFS-Users: PLEASE REMEMBER TO ACTIVATE YOUR BVAR MAPPINGS AGAIN (if you are using them) - INSTALLING AN UPDATE RESETS THEM TO DEFAULT!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!


v2.80 - 2022/12/13

- Change: Catching process corrupted Exceptions in MIDI initialization

- Change: added text boxes to control left, right margins, center point and deadzone size on the change axis dialog

- Change: added accessibility tags to the Change Axis dialog

- Change: Desktop FIPs: reducing grey line effects when resizing the FIP

- Change: Desktop FIPs: improved performance, image position is only updated when it actually changes

- Change: Clicking on "Connect to simulator" label initiates connection, same as the green LED button

- Change: MSFS: separated helicopter tail rotor pitch and speed events in the axis assignment list

- Change: MSFS: AAO InGame panel added to the AAO installer

- Change: MSFS: AAO InGame panel can be used to read and write BVars directly from buttons, axis and RPN scripts, without the need for an extra mapping

- Change: RPN: unknown A: variables will be read from the simulator directly

- Change: RPN: added seq and iseq operators

- Change: Variable watcher: option to save the list of variable names being watched to disk and to reload it.


- Bugfix: MSFS: Missing landing gear/brake variables added to the internal database

- Bugfix: MSFS: Missing electrical systems events added to the internal database

- Bugfix: Cleaning up virtual files in WebAPI

- Bugfix: RPN: fixed missing initializations in for string script handling

- Bugfix: RPN: String literals not processed correctly when starting with a space character

- Bugfix: RPN: fixed SimConnect flood when scripts were called too quickly in succession

- Bugfix: RPN: (>A: - Variables were not reset properly when changing aircraft


v2.70 - 2022/11/18

- Change: MSFS: Integrated new (SU11) SimConnect DLLs, updated event and variable lists from the SDK v. 0.20.3.0
- Change: Added option to start the sim automatically before connecting
- Change: Added ViGEm Interface, so AAO can be used to control games that rely on XBox controllers (SnowRunner and the like)
- Change: Added Virtual Mouse
- Change: Added P3D Camera/View SimConnect methods
- Change: Added new logic for filtering potentiometer noise for axis
- Change: Removed the obsolete LED on the button dialogs that assign virtual events
- Change: AAO can run without the ViGEm or vJoy DLLs being present (in case they are blocked by AntiVirus)
- Change: Expanded Hardware Change dialog
- Change: Added extra button to remove non-existing devices from the blacklist
- Change: Web FIPs: instruments can be called separately using their index, gauge name or file name
- Change: PMDG: data structure adapted for MSFS 737 SDK

- Change: RPN: %1 - %9 / %s1 - %s9 dynamic parameters can be used with all AAO commands
- Change: RPN: Additional parametrized "(CALL:scriptgroup-scriptname)" command to call other scripts from RPN code in addition to (>K:scriptgroup-scriptname)
- Change: RPN: Added mousex, mousey, mousecmp commands
- Change: RPN: Added option to replace a color when using LOADIMAGE (useful for gauges)
- Change: RPN: Added (REPLACECOLOR:) command
- Change: RPN: MSFS: added option to use native parametrized events over SimConnect (K:2:, K:3:, K:4:, K:5:)
- Change: RPN: output from testing scripts is no longer written to the clipboard, but to the debug window instead

- Bugfix: Deleted Buttons and Axis were still active until config was reloaded.
- Bugfix: Add Axis crashing when entering an LVar before a controller has been assigned
- Bugfix: Midi axis to vJoy axis doesn't work with direct assignment
- Bugfix: script variable not working for axis assignments
- Bugfix: Changing an existing axis assignment to vJoy leaves the previous varible/event intact.
- Bugfix: Add/Change Axis can leave invalid Axis Min/Max values
- Bugfix: Add/Change Axis can result in the "None" event being assigned
- Bugfix: Dialog for "Hardware change" is ignoring templates
- Bugfix: FSX/P3D not detecting cloned aircraft configs correctly.
- Bugfix: RPN: GOTO not working correctly in multiline scripts

!!!!!!!!!!!!!!!!!!!!!!!!!!!!

MSFS-Users: PLEASE REMEMBER TO ACTIVATE YOUR BVAR MAPPINGS AGAIN (if you are using them) - INSTALLING AN UPDATE RESETS THEM TO DEFAULT!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!


v2.60 - 2022/10/17

- Change: Starting with this version, Templates can be linked to your current aircraft too, instead of "applied". With a "link" in place, AAO will not create a copy of all template axis and buttons in your current aircraft configuration, it just references them. So a change in the template will directly affect all aircraft that have a link to it.

- Change: Templates: option to exclude all scripts from template export

- Change: Templates: AAO asks if you want to overwrite an existing template when importing it again.

- Change: Templates: Option to create an empty template in Offline Mode

- Change: RPN: added bytof, bytol, bytoi operators

- Change: RPN: added "procexist" operator

- Change: RPN: improving performance of RPN parser

- Change: RPN: String query now returns numerical result when string is null

- Change: RPN: KEY_ events can be entered numerically

- Change: RPN: Added (AAO_ONLINE_MODE) and (AAO_OFFLINE_MODE:xxx) commands

- Change: Updated MSFS SDK information, updated MSFS SimConnect DLLs

- Change: Updated P3D V5 SDK information

- Change: Gauges: Added FontColorScript, FontHeightScript to GaugeText Desktop/Web FIP elements 

- Change: Gauges: Desktop and Web FIP Handlers can be stopped with the standard "X" button

- Change: Updated to current PMDG 737 MSFS SDK

- Change: BVar mapping LVars now show up in the variables treeview

- Bugfix: Templates: Applying/Merging the same template again was multiplying the autoscripts 

- Bugfix: Gauges: Cursor areas on DesktopFIPs not scaling with the gauge

- Bugfix: vJoy interface was not activated if used only in scripts, required at least one button

- Bugfix: vJoy interface not active while RPN Editor is open.

- Bugfix: The result of "Delete Config" and "Empty Config" was not immediately visible in Offline Mode

- Bugfix: NPE when closing RPN Editor when no config has been loaded


v2.51 - 2022/09/13

- Change: AAO now has an interface to work with vJoy. With that you can send virtual joystick button events or axis to other apps with AAO Axis or Button assignments. For example, you can trigger MSFS features that are only available in MSFS controller assignments (=the camera controls) using a vJoy device instead of keyboard keys as another example, in Offline Mode you can use AAO as a bridge between your MIDI hardware and any app that has joystick control.

- Change: SaitekPanels and FIPs available in offline mode

- Change: Updated Axis/Buttons dialogs so they only accept one outgoing action at a time.

- Change: RPN: Option to select additional scripts to be exported with a Template

- Change: RPN: Option to remove the Edition when exporting scripts

- Change: RPN: added commands for using vJoy events in scripts

- Change: RPN: added slen command (string length)

- Bugfix: Writing to A: variables stopped working after RPN editor has been used

- Bugfix: List of template for Export not sorted


v1.50 - 2022/08/31

- Change: Desktop/Web Gauges: image handling has been redesigned to reduce the memory footprint and increase performance. This changes the way that Rotation elements work in AAO. Images that are rotated around their center are fine. But if they are rotated around an offset axis (especially with negative values), authors may have to check their code if the Axis element needs adjusting. Make sure to re-download the extra Lorby gauges (PFD/MFD) if you are using those.

- Change: Desktop/Web Gauges: added Cursor display for custom MouseAreas

- Change: Desktop/Web Gauges: can use Base64 encoded String LVars as Image source (for example loaded with the LOADIMAGE command).

- Change: messagebox when database has been saved manually

- Change: Selecting "long click" flips the key down/up event selection

- Change: RPN: changing script group name or script name will update the AAO database (but not external files, like FIPs, scriptfiles, etc.)

- Change: RPN: added "substr" operator to get substrings by position and length

- Change: RPN: Added "LOADTEXTFILE", "LOADNUMFILE", "WRITEFILE" , "DELETEFILE", "COPYFILE", "MOVEFILE", "LOADIMAGE", "WRITEIMAGE"

- Change: RPN: Redesigned script handling logic to help reduce SimConnect flooding events (but script authors should nevertheless make sure that they don't cause flooding in the first place - don't send too many K Events too fast)

- Bugfix: WebFIPs size change broken

- Bugfix: voice checklist having trouble with multiselect phrases


v2.33 - 2022/08/10

- Change: RPN: Editor messages made quicker, Ctrl&S saves/updates the script
- Change: Option to force an axis value be a float or rounded/int number
- Bugfix: Script import dialog was broken
- Bugfix: "Change Axis" dialog overwrites Axis Min/Max for axis variables


MSFS-Users: PLEASE REMEMBER TO ACTIVATE YOUR BVAR MAPPINGS AGAIN (if you are using them) - INSTALLING AN UPDATE RESETS THEM TO DEFAULT!


v2.32 2022/08/08 

- Change: Direct assignment of variables to axis.
- Change: Added dialogs to edit Templates and Configurations, and the option to replace controllers in that scope
- Change: Added button to save database
- Change: increased number of automated backups to 6
- Change: Added option to lock the GUI to prevent accidental changes
- Change: added option to bring AAO window(s) to front (not persisted)
- Change: Axis Min and Max can be set on the GUI control in advanced mode
- Change: FIPs: further code unification regarding RPN script and value handling (Desktop, Web and Saitek FIPs)
- Change: FIPs: Added Airport, VOR, NDB, Waypoint, Traffic display to MFD/ND Desktop/Web FIP gauge
- Change: FIPs: Added data stream for Aerosoft CRJ CDUs (WebFMC)
- Change: FIPs: Desktop FIP Layouts can be locked
- Change: FIPs: Button to reload a DesktopFip
- Change: Voice recognition: Added option to trigger voice recognition PTT by voice...
- Change: Voice recognition: built-in numeric recognizer
- Change: Voice recognition: added LVars with current state and phrase
- Change: RPN: Added option to read the result of script calculations using the "(S:" prefix
- Change: RPN: Parser no longer filtering out spaces (string handling).
- Change: RPN: added "mod" operator for modulo
- Change: RPN: option to run one shot autoscripts when the aircraft is unloaded
- Change: RPN: a scriptfile with flow control can be exectued multiple times in parallel now
- Change: RPN: added option to use other scripts for calculations with the "(S:" prefix
- Change: MSFS: added AAO Web FIP in-game panel (available on the website)
- Change: MSFS: Added generic reverser axis option

- Bugfix: RPN: EXECBAT not working
- Bugfix: RPN: single if{ leaves a 0 on the stack
- Bugfix: RPN: red/green LED had trouble processing macro definitions
- Bugfix: WebFIPs: size is wrong when a new WebFIP is added
- Bugfix: Catching exceptions around Windows clipboard access to prevent app shutdown
- Bugfix: Saitek BIP config dialog not saving changes


MSFS-Users: PLEASE REMEMBER TO ACTIVATE YOUR BVAR MAPPINGS AGAIN (if you are using them) - INSTALLING AN UPDATE RESETS THEM TO DEFAULT!


v2.31 2022/06/30

- Change: Axis: Added dialog to edit RAW axis parameters directly

- Change: Warning when app window is located off-screen

- Change: WebAPI: process request parameters

- Change: Implemented PMDG 737 MSFS current SDK spec

- Change: RPN: Custom checklist voice phrases can be added in code

- Change: RPN: Added HTTPPOST and HTTPSPOST

- Change: RPN: AAO rpn commands can contain parentheses

- Change: RPN: Added EXECBAT that doesn't create an app window

- Change: RPN: added "n iterate{ ... }" operator

- Change: RPN Scriptfiles: added |CACHE option

- Change: RPN: LISTEN_FOR_RPN redesigned, added REPEAT_UNTIL_RPN

- Change: RPN: Simulator LVars can be used as macro variables too (@varname)

- Change: RPN: internal scripts can have multiple lines now, so using GOTO etc. is possible without a scriptfile.

- Change: RPN: added SOUNDVOLUME, RANDOMSOUNDVOLUME command to change the volume of samples that are already playing.

- Change: RPN: added SOUNDBALANCE, RANDOMSOUNDBALANCE command to change the left/right balance of samples that are already playing.

- Change: FIPs:Unified FIP handling of simulator and local variables. Added option to use script variables etc. (like in the WebAPI)

- Change: FIPs: GaugeText can be shifted

- Change: FIPs: Boeing-like route picture

- Change: Saitek devices are sorted when they have been discovered

- Bugfix: Flight plan export to clipboard not activated in MSFS version 

- Bugfix: FIPs not processing PMDG Variable correctly

- Bugfix: Desktop FIPs not displaying string variables properly

- Bugfix: Saitek Multi Panel: AP alt down not working when plane does not reveal selected alt (Fenix)

- Bugfix: RPN: Made script import faster by removing temp database writes

- Bugfix: RPN: macrovariables didn't work for strings

- Bugfix: RPN: arrays had only local scope


MSFS-Users: PLEASE REMEMBER TO ACTIVATE YOUR BVAR MAPPINGS AGAIN (if you are using them) - INSTALLING AN UPDATE RESETS THEM TO DEFAULT!


v2.30 - 2022/05/27

- Change: Added database Backup and Restore option

- Change: blacklist multiple devices at the same time

- Change: Added help button that opens the manual

- Change: Added PMDG CDU streaming option (737 MSFS/NGX/NG3, 747 COTS II)

- Change: RPN: Enabled PMDG custom events and variables for MSFS 737

- Change: RPN: AAO_CL_PAUSE_TOGGLE command implemented

- Change: RPN: (LISTEN_FOR_K:-..) returns the event value now

- Change: RPN: additional "LVar not initialized" catch

- Change: Desktop/WebFIPs: Added option to "Roll" pictures vertically

- Bugfix: Saitek Radio Panel Baro knob didn't work correctly for non-standard events


MSFS-Users: PLEASE REMEMBER TO ACTIVATE YOUR BVAR MAPPINGS AGAIN (if you are using them) - INSTALLING AN UPDATE RESETS THEM TO DEFAULT!


v2.29 - 2022/05/04

- Change: Option to limit the number of repeats for a button to avoid overruns

- Change: stronger filter logic for axis input

- Change: On/Off Switch option for Joysticks

- Change: Gauges: Hidden grip on DesktopFIPs

- Change: Gauges: move DesktopFIPs as a group

- Change: Gauges: Import/Export DesktopFIP layouts

- Change: Gauges: WebFIPs are no longer arranged in tables, they use exact pixel locations and sizes instead

- Change: Gauges: left, right, up, down buttons for Desktop and Web FIPs layout

- Change: Gauges: WebFIPs can import DesktopFips layouts (so you can design the web layout on the desktop)

- Change: Gauges: FIPs can be deleted as a group

- Change: Gauges: FIP definitions can be in subfolders of \UserGauges too

- Change: Gauges: added Visible parameter to mouse areas

- Change: Gauges: Calculating %..%!..! in FIPs

- Change: RPN: Introducing value arrays in RPN scripts (numerical and strings)

- Change: RPN: Option to use the *...* syntax for the reminder text in CHECKLIST

- Change: RPN: "EXPORTAI" command to write data about all AI objects currently in the sim to a tsv file

- Change: RPN: added GOSUB - RETURN - END for Scriptfiles (Script-Conversation-Checklist)

- Change: RPN: added syntax check dialog for script files

- Change: RPN: Script Export now includes the "edition"

- Change: RPN: catching Windows Clipboard exceptions


- Bugfix: Invalid voices will no longer crash the speech synthesizer

- Bugfix: Leading zeroes in GaugeText format not working

- Bugfix: Mouse wheel reversed for default mouse areas in Web FIPs

- Bugfix: GOTO is not blocking script execution

- Bugfix: conflict with Macro names resolved when they have the same length


v2.28 - 2022/04/04

- Change: Filter boxes on selection dialogs remember last entries
- Change: RPN: Create and remove simobjects with scripts
- Change: RPN: Initialization of BVars reworked
- Change: RPN: GOTO works in both directions now
- Change: RPN: Added script processing observer dialog

- Bugfix: RPN: RPN Editor syntax check can't handle "paramN" literals
- Bugfix: RPN: string parameters for SPEAK are processed in the wrong order
- Bugfix: RPN: <Macro> not processing special characters correctly
- Bugfix: ADF needle on the Lorby HSI pointing in the wrong direction


MSFS-Users: PLEASE REMEMBER TO ACTIVATE YOUR BVAR MAPPINGS AGAIN (if you are using them) - INSTALLING AN UPDATE RESETS THEM TO DEFAULT!


v2.27 - 2022/03/10

- Change: SCRIPTFILE is now automatically executed as CONVERSATION when it contains flow control

- Change: Added events to load and switch Desktop/Web FIP templates

- Change: Sort FIPs template list


- Bugfix: Voice recognition: key up can get stuck

- Bugfix: DesktopFIP Handler can't change negative pixel positions

- Bugfix: RPN: WAIT not working properly with indexed K:2 events 

- Bugfix: WebAPI not processing pure button events correctly.

- Bugfix: Axis List Tree Mode misses grouped items

- Bugfix: Cloned configurations should not be present in the Template assignment dialog


v2.26 - 2022/02/21

- Change: Voice commands: can use | to build a list of recognized phrases for the same assignments

- Change: Voice commands: inserted pause between events to trigger VKeys too

- Change: RPN: added "stod" command to convert strings into numerical values

- Change: WebAPI Port is now written to a simulator LVar "(L:AaoWebApiPort, Number)"

- Change: Size and Position of DesktopFIPs can be changed on the panel handler window with the mouse wheel

- Bugfix: Very small negative offsets (curve) can throw off the sim events and axis value calculations (app stops responding)


v2.25 - 2022/02/14

- Change: display raw axis value on the Add/Change Axis dialogs

- Change: WebAPI: added svg to web server image list

- Change: WebAPI: multipart uploads can be assembled on the server to improve performance

- Change: WebAPI: added option to write to string LVars with the WebAPI

- Change: Added Toggle events for voice recognition and event recording activation

- Change: RPN: Added "%" parameter option to (EXEC:

- Change: RPN: Added "AAO_CV_PAUSE_TOGGLE" command

- Change: RPN: (GOTO: command to jump to a specific line in a conversation or checklist

- Change: RPN: Added option to start a script file at a specific line number

- Bugfix: short/long click not working correctly, especially with keyboard keys

- Bugfix: Combo button not working correctly with short/long click setups

- Bugfix: negative numbers not encoded correctly for K-Events

- Bugfix: Mouse Button handling in MouseYoke mode broken 

- Bugfix: RPN: Running a conversation causes an internal error when the ScriptHandler restarts.

- Bugfix: RPN: WAIT noch working as intended in a Conversation.

- Bugfix: RPN: FOCUS can target windowless threads

- Bugfix: Saitek Panels: saving a new script in the Saitek BIP group duplicates the group

- Bugfix: Saitek Panels: not possible to disable events for Saitek panels

- Bugfix: Saitek Panels: clearing events from the saitek panel configuration causes an exception


MSFS-Users: PLEASE REMEMBER TO ACTIVATE YOUR BVAR MAPPINGS AGAIN (if you are using them) - INSTALLING AN UPDATE RESETS THEM TO DEFAULT!


v2.24 - 2022/01/17

Changes in AxisAndOhs version 2.24

- Change: WebAPI: the WebAPI now has web server functionality, to host webpages with buttons or gauges on them. There are examples on the AxisAndOhs website of how to do this
- Change: Input event recorder feature, records AAO actions into a script file
- Change: Event Observer: option to ignore "spam" events
- Change: Option to display the actual axis values (this helps a lot when you want to operate scripts via axis, as you can now see the value of the script variable)
- Change: MIDI: new rotary encoder "rocker switch" mode
- Change: MIDI: MIDI channel priority can (must) be set for individual devices now
- Change: RPN: Parametrized script calls 1 (>K:scriptgroup-scriptname;param1;param2;...)
- Change: RPN: parser logfile output disabled for Editor
- Change: RPN: inserting VKeys in scripts automatically adds the SPLIT
- Change: RPN: improved search in the script database (added regex option)
- Change: RPN: trying to catch unmotivated clr.dll exceptions in the script editor
- Change: RPN: "EXPORTVARS" and "REPLACEVARS" features
- Change: Saitek panels: logic expanded to use more variables, plus H: and L: vars
- Change: Saitek panels: Disabling the alt sel correction logic in the panel handler
- Change: Saitek panels: Redesigned Saitek FIP Handler
- Change: Saitek panels: can use scripts directly (read and write)
- Change: Option to use AAO on another computer using the SimConnect remote features

- Bugfix: RPN editor showing "goto" labels as errors
- Bugfix: Conversation not respecting WAIT in the repeat code
- Bugfix: WebAPI button events get stuck when the device is disconnected and reconnected
- Bugfix: Imported scripts cannot be edited
- Bugfix: Certain syntax errors in RPN script code can make the editor crash.
- Bugfix: Global automated scripts cannot be removed or added, unless the editor is used too.


MSFS-Users: PLEASE REMEMBER TO ACTIVATE YOUR BVAR MAPPINGS AGAIN - INSTALLING AN UPDATE RESETS THEM TO DEFAULT!

v2.23

- Change: re-tuned the "fast turn" logic

- Change: BVar: remove trigger var when inserting into scripts

- Change: "Skip" Button actuations if a controller sends unwanted signals

- Change: Redesigned the Desktop/Web FIP initialization logic 

- Change: Variable and Event watcher windows resizable

- Change: RPN: Script database is saved after every change

- Change: RPN: Autoscript selection with groups

- Change: RPN: "Test" button reveals last calculation result, even when there is no assignment

- Change: RPN Editor: No dots when Ctrl&C ing from lower script box

- Change: Additional AAO events for tiller on/off/toggle

- Change: added option to select a specific langauge for voice recognition

- Bugfix: Close Observer windows when closing AAO

- Bugfix: BVars: Avoid app crash when content folder does not exist.

- Bugfix: RPN syntax check not recognizing H: vars

- Bugfix: RPN << and >> operators reversed

- Bugfix: Desktop/Web/Saitek FIPs didn't understand nonlinear structures with degrees

- Bugfix: Threading conflict in script handler

- Bugfix: fixed errors on the dialog for entering manual custom variables 

- Bugfix: Changing a script in the RPN editor doesn't update the script cache.


MSFS-Users: PLEASE REMEMBER TO ACTIVATE YOUR BVAR MAPPINGS AGAIN - INSTALLING AN UPDATE RESETS THEM TO DEFAULT!


v2.22 b43 - 19/11/2011


- Major change: merged the current MSFS default variables and events into the selection dialogs
- Major Bugfix: Trigger events for axis not working correctly has been fixed. Unfortunately this bug has introduced
invalid trigger settings in all axis that are based on events. This is corrected in 2.22, but that
happens on a global scale. If you have axis assignments that are meant to be triggers, those will have
to be revisited and the trigger mode reset to Both/Up/Down.

- Change: New RPN script editor GUI element
- Change: Tracking dialogs for default simulator events and variables
- Change: AxisMin/Max fields: direct text input enabled (doubleclick the field)
- Change: added A: option on the customvar input dialog
- Change: Revert blacklisted MIDI devices if they are not the same "thing" anymore
- Change: handling Min/Max Axis ranges that don't have a center.
- Change: BVARs: "1·(>L:AAO_INPUT_ACTION, Bool)" no longer necessary
- Change: RPN: Filter for RPN scripts on the editor
- Change: RPN: script variables are no local to the call
- Change: Touch events for DesktopFIPs
- Change: option to disregard the MIDI device IDs and use the channel number only

- Bugfix: RPN: Fixed hex and octal numbers
- Bugfix: RPN: "?" RPN reading the stack backwards


v2.20

- Main change: Offline mode. You don't have to connect to the sim when working on templates or configs. 

- Change: Exporting templates by controller

- Change: RPN: (SCRIPTFILE:) command

- Change: RPN: (CHECKLIST:) (CONVERSATION:) TextToSpeech checklist system, so you can create your own audio checklists.

- Change: RPN: VOICE, VOICERATE and VOICEVOLUME are global parameters now

- Change: RPN: two new ops: lldist and llbrg (distance and bearing between two lat/lon points)

- Change: RPN: (SOUND:) and (SOUNDLOOP:) can play audio in parallel now (so you can have some background sounds and then play the flight attendant announcement on top of them). 

- Bugfix: Axis dialogs not recognizing trigger events

- Bugfix: MIDI axis not working correctly with virtual keys

- Bugfix: Script initialization delay can lead to exceptions "unknown RPN op"

- Bugfix: Repeating "button" events over WebAPI (StreamDeck)


v2.12 - 13/09/2021

- Main change: Lorby-SI is no longer the vendor of this app. All IPR and sales operations have been transferred to LorbyWildfireResponse Inc. in Canada.

- Main change: Voice recognition. AAO can now use the Windows voice assist system as an input device. You just type the phrase that you want to be recognized into a button assignment. PTT button option is available

- Change: Added TextToSpeech capabilities to RPN scripts (you can make AAO read any text to you, using the Windows TTS system (SAPI))

- Change: Improved very first left turn pickup of rotary MIDI controllers

- Change: Axis can have custom labels

- Change: RPN: documentation in the manual has been expanded, there are tables now, showing all commands and operations

- Change: RPN: Added LISTEN_FOR_K, LISTEN_FOR_RPN, ONESHOT script options

- Change: RPN: Added randomizers rnd and rndsel{...} to RPN commands

- Change: RPN: script macros, like in the XML gauges (global text replacement)

- Change: RPN: Added String type local LVars

- Change: RPN: Added the option to read/write Windows Environment variables

- Bugfix: Desktop/Web FIP handler not shutting down on simulator Quit.

- Bugfix: DesktopFIPs resize not remembered

- Bugfix: using a keyboard assignment for Combo and Trigger at the same time doesn't work

- Bugfix: PMDG 747 data structure corrupt(?)

- Bugfix: Keyboard not locked when entering virtual keys

- Bugfix: Saitek panels error when simulation is interrupted


v2.11 - 31/08/2021

- Main change: It is possible to use a "master" configuration for an aircraft and mere liveries of it will reference back to it without creating their own copy (but you can still do that of course)
- Change: RPN logic can process nested ifs
- Change: no need to merge a template that is empty anyway.
- Change: process MIDI input of rotary encoders without waiting for event reset (every click triggers an action now)
- Change: redesigned the RPN SLEEP, it is SPLIT now (but both work), additional WAIT command
- Change: Manual addition of events to database, LVars and HVars
- Change: added option to empty the current profile
- Change: rotary encoders on Saitek Multi/Radio panel now send different MIDI events for different selector positions
- Change: Saitek Panel Variables can be overwritten manually
- Change: Use of local LVars on Saitek Panels
- Bugfix: MIDI axis only processing first event of multiple assignments
- Bugfix: not possible to input decimals in Axis Min/Max
- Bugfix: RPN "SOUND" command conflict - sounds not playing
- Bugfix: RPN "EXEC" command broken
- Bugfix: Blacklist dialog crashes when a gamepad is attached
- Bugfix: Hardware change dialog crashes when a gamepad is attached
- Bugfix: duplicate fast turn conflict causes exception
- Bugfix: main dialog doesn't remember axis panel mode
- Bugfix: Resizing/resetting DesktopFIPs on multi-monitor Setups can go wrong (gauge too big)
- Bugfix: Saitek Radio Panel could get stuck in MIDI mode


v2.10 - 18/08/2021

- Main change: enhanced tracking of input event timing, so especially rotary encoders are working more reliably and fluently. This affects all "Button" ops.

- Change: Add/Change button dialogs: "Device" box relocated, separate ignore/lock controls

- Change: "Roll" and "Adaptive repeat" for buttons

- Change: WebAPI events can be used as AxisInput

- Change: Resizing the main window is now possible

- Change: Startup sequence of Desktop/Web FIPs synchronized with profile load (waiting until user is in the cockpit)

- Change: all mouse wheel operated GUI controls now have a special cursor

- Change: option to capture the entire Windows desktop when a screenshot is taken (for MSFS too!)

- Bugfix: Keyboard input combos overlap each other

- Bugfix: RPN: "case" statement incorrect

- Bugfix: RPN: "?" operator missing


v2.09 - 05/07/2021

- The input event processing logic has been redesigned, so it works the same for all input devices.

- The startup and connection sequence of the app has been redesigned. The app will now try to wait until the aircraft has finished loading before it establishes the 

  various data connections. This is to avoid problems with certain addon aircraft that don't like it if LVars are assigned too early in the process.


Individual changes:

-  Change: Scripts: The output of the "Test" button is always copied to the clipboard, so you can Ctrl&V it into a text editor

-  Change: MSFS: AAO tries to match aircraft liveries to existing profiles for this particular aircraft addon

-  Change: the current simulator flight plan can be copied to the clipboard (Menu item in "Extras").

-  Change: static Macros can be used in the Desktop/WebFIP logic

-  Change: Local variables will retain their values when 

-  Change: MIDI Out now supports program change events

-  Change: it is possible now to access string variables in the WebAPI (for example to show the call sign on the StreamDeck)

-  Change: When assigning templates you now have the choice of what to merge exactly (so only parts of a template can be loaded into the current config)

-  Change: Saitek Panels: all controls now fully event based, MIDI mode can be configured for individual aircraft now, option to override the output variabls in MIDI mode

-  Change: Add/Change button dialogs: input value boxes now unlimited in range (to accomodate PMDG DC-6 ROTOR_BRAKE event triggers)

-  Change: Added startup error device file to catch instances where the app would not start fully when incompatible devices are connected.

-  Change: When assigning buttons, specific events can be excluded temporarily from the scan

-  Bugfix: Blacklisting MIDI devices crashed the app

-  Bugfix: Add/Change Button dialogs had trouble handling gamepads

-  Bugfix: Combo Buttons were only working when pressed before the actual button

-  Bugfix: Long/short clicks were duplicating

-  Bugfix: Local variables were not retaining their values when the app recovered from a SimConnect crash

-  Bugfix: custom variable import used incorrect headers

-  Bugfix: SOUND took precedence over everything else in scripts

-  Bugfix: Global automated script dialogs not handling duplicates correctly

-  Bugfix: SLIDER type axis non-functional


v2.07 - 04/05/2021

- Change: Scripts: Repeat K: events with "|n" in scripts 

- Bugfix: Buttons and Axis couldn't be changed when device is not attached

- Bugfix: MIDI mode for the Saitek Panels could get stuck

- Bugfix: handling of the key down/up value boxes

- Bugfix: value 16384 not available for the key down/up events (PMDG mouse events!)

- Bugfix: Scripts: Forced read of LVars

- Bugfix: Scripts: Initialization of LVars fixed

- Bugfix: Additional initialization of "onchange" axis values


v2.05 - 07/04/2021

- New: Template Editor: add or remove individual items from a template

- Change(!): option to change the update method of axis: continuously (like before) or

               "on change" = only when you actually move the lever.

- Change: Desktop/Web FIPs: %% can be used to create a percent sign in gauge text

- Change: Desktop/Web FIPs: <HorizontalAlign> CENTER, RIGHT, LEFT for gauge text

- Change: Performance: update button GUI control only when there is a change

- Change: option to overwrite all duplicate scripts in the Script Importer

- Change: added (a lot of) undocumented events to the default lists (especially for MSFS and P3D V5)

- Change: added an option to import csv lists of variables or events


- Bugfix: Direct assignment of LVars to buttons was broken

- Bugfix: MIDI axis not processing scripts

- Bugfix: "rng" RPN command working backwards

- Bugfix: WASM module not processing SIMPROC scripts correctly in some cases


v2.04 - 24/03/2021

- IMPORTANT for users of the WebAPI and/or the Elgato Stream Deck plugin: the pure "Button" event (device, channel, buttonid) has changed and will show up in AAO with a different ID string. This change was necessary to accomodate the long/short press feature. Please make sure to download the latest version of the plugin too (2.3).


- Change: Virtual key presses now working with MSFS, can be assigned to buttons or axis

- Change: Buttons can be assigned to have a different action when held down for a bit (long press) or just clicked (short press)

- Change: Rotary encoder can be assigned to have a different action when turned fast or slow (fast turn)

- Change: Joystick axis can be used to trigger one-shot events or key presses

- Change: Saitek Panels can be set to MIDI mode. In that mode the controls on the panel will send MIDI events that can be assigned in AAO like any other button

- Change: "SLEEP:" command to pause the execution of an RPN script by a fixed or random amount of time

- Change: "SIMPROC:" command to pass the execution of an RPN script on to the simulator, instead of processing it in AAO

- Change: "EXEC:" command to call an executable on your computer from within an RPN script

- Change: "SOUND:" command to play a wave file on your computer from within an RPN script

- Change: Devices that send unwanted DirectInput signals can be configured to be ignored by AAO (device blacklist)

- Change: added handling of C: variables

- Change: The position value of an axis can be assigned to scripts (required to operate the thrust levers in the Aerosoft CRJ)

- Change: automated restart of the script handler if SimConnect breaks down (the little LED on the main page turns yellow/red)

- Change: main window can be stretched by spinning the mouse wheel between the Axis and Button panels

- Change: Improved handling of the RPN script editor (copy & paste from other sources, double-click formats the contents)

- Change: Filter textbox is immediately active on the variable and event tree selection dialogs, "Enter" applies the filter

- Change: Added an extra "AXIS_TILLER_SET" event for ground steering with aircraft that use "AXIS_RUDDER_SET" for rudder control


v2.03 - 09/02/2021

- Change: Additional features in the WebAPI to support a new version of the StreamDeck Plugin

- Change: "Fast turn" option for rotary encoders: the down event will only trigger when you turn the encoder fast enough

- Change: special LVAR for the RPN scripts containing the down value of the button assignment. So instead of two scripts for 100/1000 changes you only need one

- Change: Template export/import will try to match controllers to the local hardware automatically (for example the device ID of a MIDI controller)

- Change: MSFS: When assigning the default "CAPTURE_SCREENSHOT" event, AAO will create a screenshot of the simulator windows and save it do "Documents"

- Change: The app will read from the PMDG SDK datastructures now, so you can use those values for visual feedback, for example on a MIDI controller

- Bugfix: MIDI buttons getting stuck when assigned multiple times

- Bugfix: Saitek buttons couldn't call RPN scripts

- Bugfix: Clear on right click not working for up/down events on the Button assignment dialogs


v2.02 - 19/01/2021

- Additional features in the WebAPI to support a new version of the StreamDeck Plugin

- Bugfixes in the ScriptHandler process

- Mouse buttons and wheel can be assigned to Events now.


v2.01 - 11/01/2021

- The "endless“ setting for MIDI encoders has been fixed. When it is activated, it will make the app repeat the command that has been assigned to a control when it is at the stops (rotary with stops or a slider). For example, when you adjust the AP altitude, you could use a slider. This will work normally in the range that it can travel, and at the stops it will just continue counting up/down until you move it the other way again

- SimConnect Errors will be caught in most cases now, reducing the probability of a hard crash

- The “Test” button on the script editor has been fixed

- The “Read HVARs from sim” feature now finds all kinds of things – like for example undocumented K: - Events and A: Variables.

-  Again several changes under the hood, like running heavy processing in even more separate threads and SimConnect clients


v2.00 - 21/12/2020

- Major change 1

  • AAO can now read and write to LVARs and use KEY events directly. 

- Major change 2 (MSFS only) 

  • AAO can now read and write to the internal HTML variables that MSFS glass cockpit instruments use to operate the buttons.


To achieve both of these, AAO will install a new additional module (dll on the legacy sims, WASM on MSFS).


- Change: The list of button assignments can be switched to different formats that may be more convenient if you have a lot of buttons to manage

- Change: AxisAndOhs can be configured to start automatically from within the app. No manual editing of any config files is necessary

- Change: Axis assignments can have detents now. Right click into the grey area of an axis to create a detent in the current location of the lever. As long as the lever value is inside this detent, it will send the same axis value. This is useful for example for thrust levers that are supposed to "click to" certain positions. 

- Change: Some of the default events on the Saitek Switchpanel have changed. Please follow this procedure:

          1. Disable the panels first by unchecking "Hardware -> Saitek Panels enabled"

          2. Go to "Hardware -> Saitek panel config", select "Events" on the "Switch Panel" tab, click on "Restore Defaults" and "Apply Globally". Close all dialogs

- Bugfix: Appcrash when assigning button on a "pure" Gamepad (= one that isn't handled as a joystick by Windows)

- Many changes and fixes "under the hood" that should improve performance and overall stability.


v1.77 - 04/12/2020

- Major change 1

  • This version changes the naming and sorting convention for assigned button items. This will happen automatically the first time that you run AAO. Before doing this, the app creates a special backup file with your previous database in C:\Users\...\AppData\Local\LORBY_SI\LorbyAxisAndOhs

- Major change 2

  • When using MIDI devices, the AAO app did not distinguish between Note and CC messages correctly. This lead to duplicate controller actions when in reality there were none on the hardware. This has been fixed, but it will be required to check and reassign especially rotary encoders again. 

- Change: option to duplicate button assignments.

- Change: Added MSFS events for managed/selected speed, altitude, heading and VS.

- Change: Saitek Switchpanel now only processes button events for those buttons that have actually changed

- Change: Option to run automates scripts on a global level (=for every aircraft). This will be more convenient when using Elgato StreamDeck or MIDI Out

- Change: Add and Change button dialog now have tool tipps on the textboxes that can contain long strings

- Change: When assigning a template you have the choice now if it should overwrite the current aircraft config or merge with it. With the latter you can now create partial templates, for example with your MIDI or StreamDeck assignments, that you can merge into any other config without overwriting what is already there.

- Bugfix: MIDI "Toggle" type button events fixed for Behringer X-Touch

- Bugfix: The MFD instrument did not calculate the waypoint positions correctly (magnetic heading instead of true)


v1.76 - 16/11/2020

- The app has a web based API that processes XMLHttpRequests and JSONP. It supports button events, triggering of simulator event IDs,  reading and writing of simulator variables


v1.75

- Supports the Saitek Backlit Information Panel (BIP)


v1.74

- Added the Event-IDs of the PMDG SDK (737 NGX, 777, 747 QOTS2)

- Expanded the RPN scripting logic to facilitate the use of the PMDG events, added new chapter at the end of the manual.

- Added logic to run RPN scripts automatically for each individual aircraft

- Fixed bug where the calling of scripts inside other scripts would fail

- The Event Group of scripts can now be changed by the user

- Template Export and Import logic to facilitate the exchange of complex setups between users. Import is guided.

- Added option to isolate a joystick device if axis are not picked up (Saitek Trim Wheel)

- Fixed bug where the "Change Button" dialog would show the wrong event in case of a duplicate ID


Please make sure to visit axisandohs.weebly.com/downloads to get the new advanced gauges like the Airbus type PFD and MFD


v1.73

- Redesigned the layout of the assignment dialogs to make it clearer which input field is currently active

- Fixed bug where the axis would move slightly in the opposite direction when using curve and deadzone together

- Fixed the bug where the flaps detents box was partially obscured

- Fixed the instances where a split axis must be handled as a slider when applying a curve (MSFS: toe brakes, throttle, propeller, mixture)

- Keyboard and MIDI combos can be used with axis too

- Expanded RPN scripting and gauge logic

Please make sure to visit axisandohs.weebly.com/downloads to get the new advanced gauges like the Airbus type PFD and MFD


v1.71

- With this version, scripts can be created to trigger more complex functionality with a single button press


The product download in your account is updated as and when updates are released, so if purchasing after any of the given dates your product will include all updates prior to that date.


To download updates you will need to re-download the product from the 'Your Orders' section of your account which you can log into by clicking here.

For guidance on downloading this update, please visit this FAQ.