Autopilot events in manual correct? VS Mode?
-
It seems we have to also assign and use the "K:AP_MASTER" button... it is kind of weird because the aircraft has no AP Master button. To be able to select HDG mode for example I have to first press the assigned AP MASTER and after this it lets me select assigned HDG, NAV,...
-
@Black-Square Is the fact that we have to use the AP Master a workaround because of MSFS or is this something that will change?
I just want to know, sorry to bother you! Thank you very much! -
I currently solved it in mobiflight with RPN code. It first checks if the AP Master is on, if not, activates it, and then selects HDG mode. Same for all other modes.
Additionally, when using the suggested AP disconnect variable, you actually have to press twice to cancel the mode- because it behaves like it does in the Bo/Baron/Duke where you disengage the AP with the first click, but keep the FD modes active which are only canceled on the second click.
As far as I understand, in the 114 the disconnect button should cancel the AP and all modes immediately, as there is no FD installed. -
I currently solved it in mobiflight with RPN code. It first checks if the AP Master is on, if not, activates it, and then selects HDG mode. Same for all other modes.
Additionally, when using the suggested AP disconnect variable, you actually have to press twice to cancel the mode- because it behaves like it does in the Bo/Baron/Duke where you disengage the AP with the first click, but keep the FD modes active which are only canceled on the second click.
As far as I understand, in the 114 the disconnect button should cancel the AP and all modes immediately, as there is no FD installed. -
I currently solved it in mobiflight with RPN code. It first checks if the AP Master is on, if not, activates it, and then selects HDG mode. Same for all other modes.
Additionally, when using the suggested AP disconnect variable, you actually have to press twice to cancel the mode- because it behaves like it does in the Bo/Baron/Duke where you disengage the AP with the first click, but keep the FD modes active which are only canceled on the second click.
As far as I understand, in the 114 the disconnect button should cancel the AP and all modes immediately, as there is no FD installed.@MatzeH84 Thank you, I will trie the same with Axis and Ohs I think. As I have not much of a clue of programming I will see what chatGPT can do for me

-
It’s funny, I am actually using virtually no bindings for the 114 for a change. I did go and set most up but kinda enjoying using the mouse for a change. Also I don’t know how to trigger button press sounds from the aircraft, if at all possible, and that is more a lack of immersion than anything else.
-
I spent some time going through the Commander 114’s actual model behavior with the MSFS DevMode Behavior Viewer and now have the autopilot buttons working correctly through MobiFlight.
The missing piece is that the cockpit buttons do more than send the basic mode event. They first check that the autopilot is powered and, when necessary, automatically turn on AP_MASTER. That is why assigning only the individual events from the manual can make it seem like a separate AP Master button is required.
These are RPN calculator codes. In MobiFlight, use each one as On Press and leave On Release blank. The same RPN logic should also be usable as an AxisAndOhs script.
HDG
(A:CIRCUIT ON:54, bool) (L:var_AutopilotTest, bool) ! and if{ (A:AUTOPILOT MASTER, bool) ! if{ (>K:AP_MASTER) } (>K:AP_PANEL_HEADING_HOLD) }NAV
(A:CIRCUIT ON:54, bool) (L:var_AutopilotTest, bool) ! and if{ (A:AUTOPILOT MASTER, bool) ! if{ (>K:AP_MASTER) } (>K:AP_NAV1_HOLD) }Back Course
(A:CIRCUIT ON:54, bool) (L:var_AutopilotTest, bool) ! and if{ (A:AUTOPILOT MASTER, bool) ! if{ (>K:AP_MASTER) } (>K:AP_BC_HOLD) }Vertical Speed
The VS button is more involved because it transfers the Commander’s selected altitude and selected vertical speed into the simulator autopilot before engaging VS mode.
(A:CIRCUIT ON:54, bool) (L:var_AutopilotTest, bool) ! and if{ 0 (>L:var_AutopilotVsIntervention, bool) (L:var_PreselectedAltitude, number) 1 r (>K:2:AP_ALT_VAR_SET_ENGLISH) (L:var_PreselectedVerticalSpeed, number) 100 * 1 r (>K:2:AP_VS_VAR_SET_ENGLISH) (A:AUTOPILOT MASTER, bool) ! if{ (>K:AP_MASTER) } (>K:AP_VS_HOLD) }The Commander stores the selected vertical speed in hundreds of feet per minute, which is why the script multiplies it by 100.
ALT
(A:CIRCUIT ON:54, bool) (L:var_AutopilotTest, bool) ! and if{ 0 (>L:var_AutopilotAltIntervention, bool) (L:PMS50_APGA_RUNNING, bool) if{ (L:PMS50_APGA_ACTIVE_VERTICAL_MODE, number) 3 == } els{ (A:AUTOPILOT ALTITUDE LOCK, bool) } if{ (A:AUTOPILOT MASTER, bool) ! if{ (>K:AP_MASTER) } (>K:AP_PITCH_LEVELER_ON) } els{ (A:AUTOPILOT MASTER, bool) ! if{ (>K:AP_MASTER) } (>K:AP_ALT_HOLD) } }This duplicates the airplane’s ALT-button logic rather than merely sending a generic altitude-hold event.
AP Disconnect - cancel everything with one press
The reason the suggested disconnect assignment requires two presses is that the Commander’s cockpit behavior uses an if/else arrangement:
First press disconnects the autopilot.
A later press cancels the remaining flight-director modes.For a hardware disconnect button, this version checks and cancels both during the same press:
(A:AUTOPILOT MASTER, bool) if{ (>K:AP_MASTER) } (A:AUTOPILOT FLIGHT DIRECTOR ACTIVE, bool) if{ (>K:TOGGLE_FLIGHT_DIRECTOR) }That gives the expected Commander behavior: one press disconnects the autopilot and removes the remaining active modes.
-
I spent some time going through the Commander 114’s actual model behavior with the MSFS DevMode Behavior Viewer and now have the autopilot buttons working correctly through MobiFlight.
The missing piece is that the cockpit buttons do more than send the basic mode event. They first check that the autopilot is powered and, when necessary, automatically turn on AP_MASTER. That is why assigning only the individual events from the manual can make it seem like a separate AP Master button is required.
These are RPN calculator codes. In MobiFlight, use each one as On Press and leave On Release blank. The same RPN logic should also be usable as an AxisAndOhs script.
HDG
(A:CIRCUIT ON:54, bool) (L:var_AutopilotTest, bool) ! and if{ (A:AUTOPILOT MASTER, bool) ! if{ (>K:AP_MASTER) } (>K:AP_PANEL_HEADING_HOLD) }NAV
(A:CIRCUIT ON:54, bool) (L:var_AutopilotTest, bool) ! and if{ (A:AUTOPILOT MASTER, bool) ! if{ (>K:AP_MASTER) } (>K:AP_NAV1_HOLD) }Back Course
(A:CIRCUIT ON:54, bool) (L:var_AutopilotTest, bool) ! and if{ (A:AUTOPILOT MASTER, bool) ! if{ (>K:AP_MASTER) } (>K:AP_BC_HOLD) }Vertical Speed
The VS button is more involved because it transfers the Commander’s selected altitude and selected vertical speed into the simulator autopilot before engaging VS mode.
(A:CIRCUIT ON:54, bool) (L:var_AutopilotTest, bool) ! and if{ 0 (>L:var_AutopilotVsIntervention, bool) (L:var_PreselectedAltitude, number) 1 r (>K:2:AP_ALT_VAR_SET_ENGLISH) (L:var_PreselectedVerticalSpeed, number) 100 * 1 r (>K:2:AP_VS_VAR_SET_ENGLISH) (A:AUTOPILOT MASTER, bool) ! if{ (>K:AP_MASTER) } (>K:AP_VS_HOLD) }The Commander stores the selected vertical speed in hundreds of feet per minute, which is why the script multiplies it by 100.
ALT
(A:CIRCUIT ON:54, bool) (L:var_AutopilotTest, bool) ! and if{ 0 (>L:var_AutopilotAltIntervention, bool) (L:PMS50_APGA_RUNNING, bool) if{ (L:PMS50_APGA_ACTIVE_VERTICAL_MODE, number) 3 == } els{ (A:AUTOPILOT ALTITUDE LOCK, bool) } if{ (A:AUTOPILOT MASTER, bool) ! if{ (>K:AP_MASTER) } (>K:AP_PITCH_LEVELER_ON) } els{ (A:AUTOPILOT MASTER, bool) ! if{ (>K:AP_MASTER) } (>K:AP_ALT_HOLD) } }This duplicates the airplane’s ALT-button logic rather than merely sending a generic altitude-hold event.
AP Disconnect - cancel everything with one press
The reason the suggested disconnect assignment requires two presses is that the Commander’s cockpit behavior uses an if/else arrangement:
First press disconnects the autopilot.
A later press cancels the remaining flight-director modes.For a hardware disconnect button, this version checks and cancels both during the same press:
(A:AUTOPILOT MASTER, bool) if{ (>K:AP_MASTER) } (A:AUTOPILOT FLIGHT DIRECTOR ACTIVE, bool) if{ (>K:TOGGLE_FLIGHT_DIRECTOR) }That gives the expected Commander behavior: one press disconnects the autopilot and removes the remaining active modes.
@fredgarven Thank you a lot! Will trie it asap in AAOhs.
-
@fredgarven Your scripts worked like a charm, thank you again!
-
I'm glad to hear the autopilot scripts worked.
I am still finishing my complete Commander 114 MobiFlight project, so I am not ready to share the full project file yet. However, here is a bonus for anyone using the Honeycomb Bravo Throttle Quadrant.
I configured the Bravo’s left selector knob to determine what the right knob controls. MobiFlight has a guide explaining how to configure the selector variable and use it as a precondition:
https://docs.mobiflight.com/guides/honeycomb-bravo-selector-knob
These are the selector values I am using:
ALT = 0 VS = 1 HDG = 2 CRS = 3 IAS = 4I repurposed the Bravo’s IAS selector position for the Commander autopilot’s BAR setting.
For each right-knob input, add the appropriate Selector value as a MobiFlight-variable precondition. Place the code under On Press and leave On Release blank.
ALT SELECTOR
Precondition:
Selector = 0The altitude control normally moves in 100-foot increments. These versions measure how quickly the right knob is being turned:
Slow rotation: 100 feet per click
Medium rotation: 500 feet per click
Fast rotation: 1,000 feet per clickRight Knob - ALT Increase
(E:SIMULATION TIME, seconds) (L:MF_ALT_LastIncTime, seconds) - 0.08 < if{ 1000 (>L:MF_ALT_Step, number) } els{ (E:SIMULATION TIME, seconds) (L:MF_ALT_LastIncTime, seconds) - 0.20 < if{ 500 (>L:MF_ALT_Step, number) } els{ 100 (>L:MF_ALT_Step, number) } } (L:var_PreselectedAltitude_10000, number) 10000 * (L:var_PreselectedAltitude_1000, number) 1000 * + (L:var_PreselectedAltitude_100, number) 100 * + (L:MF_ALT_Step, number) + 99900 min (>L:MF_ALT_New, number) (L:MF_ALT_New, number) 10000 / flr (>L:var_PreselectedAltitude_10000, number) (L:MF_ALT_New, number) 10000 % 1000 / flr (>L:var_PreselectedAltitude_1000, number) (L:MF_ALT_New, number) 1000 % 100 / flr (>L:var_PreselectedAltitude_100, number) (E:SIMULATION TIME, seconds) (>L:MF_ALT_LastIncTime, seconds)Right Knob - ALT Decrease
(E:SIMULATION TIME, seconds) (L:MF_ALT_LastDecTime, seconds) - 0.08 < if{ 1000 (>L:MF_ALT_Step, number) } els{ (E:SIMULATION TIME, seconds) (L:MF_ALT_LastDecTime, seconds) - 0.20 < if{ 500 (>L:MF_ALT_Step, number) } els{ 100 (>L:MF_ALT_Step, number) } } (L:var_PreselectedAltitude_10000, number) 10000 * (L:var_PreselectedAltitude_1000, number) 1000 * + (L:var_PreselectedAltitude_100, number) 100 * + (L:MF_ALT_Step, number) - 0 max (>L:MF_ALT_New, number) (L:MF_ALT_New, number) 10000 / flr (>L:var_PreselectedAltitude_10000, number) (L:MF_ALT_New, number) 10000 % 1000 / flr (>L:var_PreselectedAltitude_1000, number) (L:MF_ALT_New, number) 1000 % 100 / flr (>L:var_PreselectedAltitude_100, number) (E:SIMULATION TIME, seconds) (>L:MF_ALT_LastDecTime, seconds)This allows precise 100-foot adjustments when turning the knob slowly, while still making it practical to move from zero to normal cruising altitudes quickly.
VS SELECTOR
Precondition:
Selector = 1The Commander stores the selected vertical speed in hundreds of feet per minute. These commands adjust it by 200 feet per minute and limit the selection to plus or minus 1,600 feet per minute.
Right Knob - VS Increase
(L:var_PreselectedVerticalSpeed, number) 2 + 16 min (>L:var_PreselectedVerticalSpeed, number)Right Knob - VS Decrease
(L:var_PreselectedVerticalSpeed, number) 2 - -16 max (>L:var_PreselectedVerticalSpeed, number)BAR SELECTOR
I use the Bravo’s IAS selector position for the autopilot barometric setting.
Precondition:
Selector = 4The Commander stores the BAR setting as three separate digits, so the following code handles carrying and borrowing between them.
Right Knob - BAR Increase
(L:var_AutopilotBaroCalibration_01, number) 9 < if{ (L:var_AutopilotBaroCalibration_01, number) 1 + (>L:var_AutopilotBaroCalibration_01, number) } els{ (L:var_AutopilotBaroCalibration_1, number) 9 < if{ 0 (>L:var_AutopilotBaroCalibration_01, number) (L:var_AutopilotBaroCalibration_1, number) 1 + (>L:var_AutopilotBaroCalibration_1, number) } els{ (L:var_AutopilotBaroCalibration_10, number) 9 < if{ 0 (>L:var_AutopilotBaroCalibration_01, number) 0 (>L:var_AutopilotBaroCalibration_1, number) (L:var_AutopilotBaroCalibration_10, number) 1 + (>L:var_AutopilotBaroCalibration_10, number) } } }Right Knob - BAR Decrease
(L:var_AutopilotBaroCalibration_01, number) 0 > if{ (L:var_AutopilotBaroCalibration_01, number) 1 - (>L:var_AutopilotBaroCalibration_01, number) } els{ (L:var_AutopilotBaroCalibration_1, number) 0 > if{ 9 (>L:var_AutopilotBaroCalibration_01, number) (L:var_AutopilotBaroCalibration_1, number) 1 - (>L:var_AutopilotBaroCalibration_1, number) } els{ (L:var_AutopilotBaroCalibration_10, number) 0 > if{ 9 (>L:var_AutopilotBaroCalibration_01, number) 9 (>L:var_AutopilotBaroCalibration_1, number) (L:var_AutopilotBaroCalibration_10, number) 1 - (>L:var_AutopilotBaroCalibration_10, number) } } }These are working well for me in MobiFlight with the Honeycomb Bravo. The same aircraft variables should also be usable with other hardware after adapting the device inputs and preconditions.