Sending, receiving, and organizing email in Outlook on the web for business
I had this issue and found a somewhat solution on reddit/another ms thread that suggested to use the tampermonkey addon, which you can set to affect the outlook webpage.
I went through many, many iterations of this with ChatGPT to try to get it to make option+arrow perform as desired (ie never bring up the ribbon menu icons and take away focus from the nested text box), and it somewhat does that for a longer period but eventually after multiple key presses it will do exactly what I dont want it to do.
Fortunately, it does however allow holding shift+option and using the arrow keys to select without the ribbon shortcuts ever popping up.
Additionally, both option+arrow and shift+option+arrow both perform as they should when the compose window is popped out.
Below is the code snippet. Copy it and go to tampermonkey, make a new script, and then click in the text box, select all, and paste. Then save and try it yourself
// ==UserScript== // @name Debug-Option-key-interference-in-Outlook (v6.9) // @namespace http://tampermonkey.net/ // @version 6.9 // @description Fix Option key interference with Outlook's shortcut icons and navigation // @author Skylar // @match https://outlook.office.com/* // @grant none // ==/UserScript== (function() { 'use strict'; let optionKeyPressTime = null; let optionShiftKeyPressTime = null; const optionKeyDelay = 30000; // 30 seconds for Option + Arrow const optionShiftKeyDelay = 30000; // 30 seconds for Option + Shift + Arrow let isOptionHeld = false; let isOptionShiftHeld = false; const preventDefaultAction = (event) => { event.preventDefault(); event.stopImmediatePropagation(); }; // Function to block Outlook's key shortcuts when Option is held const blockOutlookShortcuts = () => { const shortcutElements = document.querySelectorAll('[aria-label^="Shortcut"]'); shortcutElements.forEach(element => { element.setAttribute('aria-hidden', 'true'); // Hide ribbon shortcut icons }); }; const checkAndBlockKeys = (event) => { const isOptionKey = event.key === 'Alt' || event.key === 'Option'; const isArrowKey = event.key === 'ArrowLeft' || event.key === 'ArrowRight'; const isShiftKey = event.shiftKey; // Prevent Outlook's menu icons and keep focus on compose window if (isOptionKey && isArrowKey) { if (!isOptionHeld) { optionKeyPressTime = Date.now(); // Start the timer isOptionHeld = true; } if (isOptionHeld && (Date.now() - optionKeyPressTime) < optionKeyDelay) { preventDefaultAction(event); // Ignore the default shortcut behavior blockOutlookShortcuts(); // Block the shortcut menu display } } // Handle Option + Shift + Arrow with the same logic if (isOptionKey && isShiftKey && isArrowKey) { if (!isOptionShiftHeld) { optionShiftKeyPressTime = Date.now(); // Start the timer isOptionShiftHeld = true; } if (isOptionShiftHeld && (Date.now() - optionShiftKeyPressTime) < optionShiftKeyDelay) { preventDefaultAction(event); // Ignore the default shortcut behavior blockOutlookShortcuts(); // Block the shortcut menu display } } }; // Listen for keydown events to block key combos when holding Option document.addEventListener('keydown', function(event) { checkAndBlockKeys(event); }); // Reset the timestamps when the key is released to allow normal function document.addEventListener('keyup', function(event) { const isOptionKey = event.key === 'Alt' || event.key === 'Option'; const isArrowKey = event.key === 'ArrowLeft' || event.key === 'ArrowRight'; if (isOptionKey && isArrowKey) { isOptionHeld = false; optionKeyPressTime = null; } if (isOptionKey && event.shiftKey && isArrowKey) { isOptionShiftHeld = false; optionShiftKeyPressTime = null; } }); })();