MIB Combo Key shortcuts: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 15: | Line 15: | ||
== Additional info == | == Additional info == | ||
=== MU Reset === | === MU Reset === | ||
Main unit is reset with an external signal from key panel. This is not CAN-BUS signal - it's a high state send to one of the [[QuadLock]] pins (<code>ZR_Reset</code>). | |||
<youtube> 9jeVCafl9pA </youtube> | |||
=== Research === | === Research === | ||
Possible actions: | Possible actions found in [[LSD.JXE]] from Audi MHI2: | ||
public static final int COMBO_INVALID; // 0 | public static final int COMBO_INVALID; // 0 | ||
public static final int COMBO_RED_ENGINEERING_MENU; // 1 | public static final int COMBO_RED_ENGINEERING_MENU; // 1 | ||
Line 38: | Line 36: | ||
public static final int COMBO_IRC_BACKUP; // 13 ?? | public static final int COMBO_IRC_BACKUP; // 13 ?? | ||
Audi combinations (key1, key2, action, | More information from the <code>triggerComboKeyAction()</code> function: | ||
if (n3 == 1) { | |||
this.kbdListener.triggerHmiKeyPressedEvent(24, this.key1TerminalID); | |||
} else if (n3 == 2) { | |||
this.framework.getStartupMgr().requestStartBundle("AppDevelopment"); | |||
this.kbdListener.triggerHmiKeyPressedEvent(25, this.key1TerminalID); | |||
} else if (n3 == 8) { | |||
if (!this.framework.isPBuild()) { | |||
this.kbdListener.triggerHmiKeyPressedEvent(26, this.key1TerminalID); | |||
} | |||
} else if (n3 == 4) { | |||
this.makeScreenshot(); | |||
} else if (n3 == 6) { | |||
if (!this.framework.isPBuild()) { | |||
this.kbdListener.triggerKeyPressedEvent(50, this.key1TerminalID); | |||
this.kbdListener.triggerKeyReleasedEvent(50, this.key1TerminalID); | |||
} | |||
} else if (n3 == 7) { | |||
if (!this.framework.isPBuild()) { | |||
this.kbdListener.blinkInfo("##### write error dump #####"); | |||
this.framework.getErrorMgr().handleError(null, "error dump triggered manually", 0, 0, 4); | |||
} | |||
} else if (n3 == 13) { | |||
this.kbdListener.blinkInfo("##### IRC Backup triggered #####"); | |||
this.framework.getInfotainmentrecorder().backupTrigger(); | |||
} else if (!this.framework.isPBuild() && this.framework.isPorsche()) { | |||
if (n3 == 9) { | |||
this.kbdListener.triggerHmiKeyPressedEvent(84, this.key1TerminalID); | |||
} else if (n3 == 10) { | |||
this.kbdListener.triggerHmiKeyPressedEvent(82, this.key1TerminalID); | |||
} else if (n3 == 11) { | |||
this.kbdListener.triggerHmiKeyPressedEvent(83, this.key1TerminalID); | |||
} else if (n3 == 12) { | |||
this.kbdListener.triggerHmiKeyPressedEvent(15, this.key1TerminalID); | |||
} | |||
} | |||
Funny thing - next to REM and GEM, there's also HMI EM. Never seen it, but it's there. But it's not available in production firmware, secured with the <code>!this.framework.isPBuild()</code> function which checks if firmware is a production release. Wasn't there a [[LSD.JXE#lsd.sh_flags|lsh.jxe flag]] in the lsd.sh script that could overwrite this flag? | |||
Audi combinations (key1, key2, action, long press timer): | |||
{13, 8, 1, 5000}, // BACK + TOP_LEFT = REM | {13, 8, 1, 5000}, // BACK + TOP_LEFT = REM | ||
{13, 98, 1, 5000}, // BACK + TOP_LEFT = REM | {13, 98, 1, 5000}, // BACK + TOP_LEFT = REM | ||
Line 75: | Line 112: | ||
{4, 97, 13, 2500}, // NAV + TOP_RIGHT = IRC_BACKUP ?? | {4, 97, 13, 2500}, // NAV + TOP_RIGHT = IRC_BACKUP ?? | ||
{6, 97, 13, 2500}; // CAR + TOP_RIGHT = IRC_BACKUP ?? | {6, 97, 13, 2500}; // CAR + TOP_RIGHT = IRC_BACKUP ?? | ||
=== Remapping === | |||
//TODO - VW/SEAT/Skod | |||
//TODO - Audi/Porsche | |||
=== Adding new combinations === | |||
//TODO |
Revision as of 17:34, 20 January 2025
Brand-specific key combinations
Audi
model-specific
Bentley
Bugatti
Lamborghini
Porsche
Seat / Skoda / Volkswagen / MAN
Additional info
MU Reset
Main unit is reset with an external signal from key panel. This is not CAN-BUS signal - it's a high state send to one of the QuadLock pins (ZR_Reset
).
Research
Possible actions found in LSD.JXE from Audi MHI2:
public static final int COMBO_INVALID; // 0 public static final int COMBO_RED_ENGINEERING_MENU; // 1 public static final int COMBO_GREEN_ENGINEERING_MENU; // 2 public static final int COMBO_SCREEN_SHOT; // 4 public static final int COMBO_MENU_EXTENSIONS; // 5 ?? public static final int COMBO_PTT; // 6 ?? public static final int COMBO_ERROR_DUMP; // 7 ?? public static final int COMBO_HMI_ENGINEERING_MENU; // 8 ?? public static final int COMBO_OPTION; // 9 ?? public static final int COMBO_MAP; // 10 ?? public static final int COMBO_SOURCE; // 11 ?? public static final int COMBO_BACK; // 12 ?? public static final int COMBO_IRC_BACKUP; // 13 ??
More information from the triggerComboKeyAction()
function:
if (n3 == 1) { this.kbdListener.triggerHmiKeyPressedEvent(24, this.key1TerminalID); } else if (n3 == 2) { this.framework.getStartupMgr().requestStartBundle("AppDevelopment"); this.kbdListener.triggerHmiKeyPressedEvent(25, this.key1TerminalID); } else if (n3 == 8) { if (!this.framework.isPBuild()) { this.kbdListener.triggerHmiKeyPressedEvent(26, this.key1TerminalID); } } else if (n3 == 4) { this.makeScreenshot(); } else if (n3 == 6) { if (!this.framework.isPBuild()) { this.kbdListener.triggerKeyPressedEvent(50, this.key1TerminalID); this.kbdListener.triggerKeyReleasedEvent(50, this.key1TerminalID); } } else if (n3 == 7) { if (!this.framework.isPBuild()) { this.kbdListener.blinkInfo("##### write error dump #####"); this.framework.getErrorMgr().handleError(null, "error dump triggered manually", 0, 0, 4); } } else if (n3 == 13) { this.kbdListener.blinkInfo("##### IRC Backup triggered #####"); this.framework.getInfotainmentrecorder().backupTrigger(); } else if (!this.framework.isPBuild() && this.framework.isPorsche()) { if (n3 == 9) { this.kbdListener.triggerHmiKeyPressedEvent(84, this.key1TerminalID); } else if (n3 == 10) { this.kbdListener.triggerHmiKeyPressedEvent(82, this.key1TerminalID); } else if (n3 == 11) { this.kbdListener.triggerHmiKeyPressedEvent(83, this.key1TerminalID); } else if (n3 == 12) { this.kbdListener.triggerHmiKeyPressedEvent(15, this.key1TerminalID); } }
Funny thing - next to REM and GEM, there's also HMI EM. Never seen it, but it's there. But it's not available in production firmware, secured with the !this.framework.isPBuild()
function which checks if firmware is a production release. Wasn't there a lsh.jxe flag in the lsd.sh script that could overwrite this flag?
Audi combinations (key1, key2, action, long press timer):
{13, 8, 1, 5000}, // BACK + TOP_LEFT = REM {13, 98, 1, 5000}, // BACK + TOP_LEFT = REM {4, 1, 1, 5000}, // NAV + MEDIA = REM {6, 1, 1, 5000}, // CAR + MEDIA = REM
{13, 9, 2, 5000}, // BACK + BOTTOM_LEFT = GEM {6, 15, 2, 5000}, // CAR + TUNER = GEM {4, 15, 2, 5000}, // NAV + TUNER = GEM
{9, 12, 4, 2500}, // BOTTOM_LEFT + BOTTOM_RIGHT = Screenshot {4, 16, 4, 2500}, // NAV + INC_VOL_ENTER = Screenshot {4, 98, 4, 2500}, // NAV + TOP_LEFT = Screenshot {4, 8, 4, 2500}, // NAV + TOP_LEFT = Screenshot {6, 8, 4, 2500}, // CAR + TOP_LEFT = Screenshot {6, 16, 4, 2500}, // CAR + INC_VOL_ENTER = Screenshot {6, 98, 4, 2500}, // CAR + TOP_LEFT = Screenshot
{9, 8, 6, 2500}, // BOTTOM_LEFT + TOP_LEFT = Press To Talk ?? {86, 16, 6, 2500}, // TONE + INC_VOL_ENTER = Press To Talk ?? {3, 16, 6, 2500}, // TEL + INC_VOL_ENTER = Press To Talk ??
{86, 8, 7, 2500}, // TONE + TOP_LEFT = Error Dump ?? {9, 13, 7, 2500}, // BOTTOM_LEFT + BACK = Error Dump ?? {3, 8, 7, 2500}, // TEL + TOP_LEFT = Error Dump ?? {3, 98, 7, 2500}, // TEL + TOP_LEFT = Error Dump ?? {86, 98, 7, 2500}, // TONE + TOP_LEFT = Error Dump ??
{3, 11, 8, 2500}, // TEL + TOP_RIGHT = HMI_ENGINEERING_MENU ?? {86, 11, 8, 2500}, // TONE + TOP_RIGHT = HMI_ENGINEERING_MENU ?? {86, 97, 8, 2500}, // TONE + TOP_RIGHT = HMI_ENGINEERING_MENU ?? {3, 97, 8, 2500}, // TEL + TOP_RIGHT = HMI_ENGINEERING_MENU ??
{4, 11, 13, 2500}, // NAV + TOP_RIGHT = IRC_BACKUP ?? {6, 11, 13, 2500}, // CAR + TOP_RIGHT = IRC_BACKUP ?? {4, 97, 13, 2500}, // NAV + TOP_RIGHT = IRC_BACKUP ?? {6, 97, 13, 2500}; // CAR + TOP_RIGHT = IRC_BACKUP ??
Remapping
//TODO - VW/SEAT/Skod //TODO - Audi/Porsche
Adding new combinations
//TODO