Latest Update: 30/09/2021

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


- 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


- Supports the Saitek Backlit Information Panel (BIP)


- 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 to get the new advanced gauges like the Airbus type PFD and MFD


- 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 to get the new advanced gauges like the Airbus type PFD and MFD


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