Creating your own keyboard shortcuts in Outlook

Or, remapping keys for fun and profit.

I subscribe to a fair number of email lists, and use Exchange rules to filter them to individual folders. Since I read just a fraction of the new emails that arrive each day, I find myself doing “Mark All as Read” in Outlook 2003 a lot.

Enough to get aggravating, in fact. “Mouse over folder name, right click, mouse to Mark All as Read, left click” gets boring after a while. A little keyboard experimentation showed that a two-key combination is Ctrl-A (select all), Ctrl-Q (mark as read). But that’s still one key too many. Now, here’s a quiz – what search terms should you use in Outlook help or Google to find out how to do this? “Outlook keyboard remapping”? “Outlook keyboard shortcuts”? “Outlook mark all as read key”? Fail, fail, fail.

Thankfully, KC Lemson’s blog came through – the other one to try for any Outlook question is Marc’s Outlook on Productivity. In her post “Outlook 2003 tip o’ the day”, KC explains in painful detail how to customize your toolbars to add a new clickable action. The trick here is that you can assign the action an Alt-shortcut key by putting an & at the appropriate place in its name. And the painful detail is because the customization of Office toolbars involves a big cognitive break from the usual modal interface – even though you have a “Customize” window in the foreground, the Office toolbars in the background are still active in a special “drag text or buttons onto me” mode!

So, following KC’s instructions, I dragged the “Mark All as Read” action onto my standard toolbar and renamed it as “&Quickmark”. Now Alt-Q will mark all items in a folder as read. Why Q? Two reasons: I want to do all keyboard work with my left hand so that I can keep my right hand on the mouse, and Alt-Q was the first key I tried that didn’t make Outlook do something else entirely.

Now, the next question is how to get this into

Comments (18)

  1. Wes says:

    I just always hold down Alt and hit E twice, which marks all as read in current folder. I do this a lot, for email-lists and news postings from newsgator.

  2. Which version of Outlook does that work for? In Outlook 2003, the first Alt-E takes me into the Edit menu, but then the second Alt-E beeps forlornly, since there’s no command in that menu with an underlined "e".

  3. Raymond Chen says:

    It’s there in Outlook 2003 11.5608.5606 at least. Alt+EE is what I use too.

  4. Wes says:


    I’ve used it in Outlook XP and now Outlook 2003.

    I’m looking for an Empty "Junk Email" Folder shortcut key. I have only found the option by right clicking on the Junk Email folder. I’ve tried to customized the menu bar but I can’t even find the command anywhere.


  5. Grrr. Alt-EE doesn’t work for me in two different installs of 11.5608.6530. I guess I’m stuck with my Alt-Q hack.

    Wes, I can’t find the command for Empty Junk Mail either. I’m thinking that you might have to write a macro to call the right Outlook object, and then bind that macro to a key?

    We should probably both go over to KC Lemson’s blog and ask our questions there… 🙂

  6. Wes says:

    I’m going to be interning this summer in the Outlook group so I will see if I can’t find an answer. Its funny everyone I tell that I’m going to be interning in the Outlook group gives me a list of things that they don’t like about Outlook. As if I’m going to be able to do much, but anyways I will see what I can do.

  7. KC Lemson says:

    Jonathan – &E on the edit menu is "Mark all as read". Is the option not there, or is the option there but _E is not the accelerator? You should be able to modify either with customizable toolbars.

    I don’t know how to do this just using customizable toolbars, but I blogged a macro option today:

  8. The option isn’t on the Edit menu. It’s present in the list of Edit commands in the Customize Toolbars dialog, but it’s definitely not shown on the Edit menu…

    Thanks for the Empty Junk Mail tip – I’ll let Wes know!

  9. For me the long sought for combo trick has been figuring out how to add MULTIPLE senders to the JunkMail Senders Blocked list. For inevitably by the time I finally find the time to takle the overflowing contents of my various ‘Certainly Spam, "Probably SPAM", and very possibly SPAM’ folders, seeking out those at last rare instances of a new White Listable sender, or the even rarer eMail suggesting some new ‘Light-Grey-List’ rule for aiming the likely spam into a more frequently audited folder, when but the time I’ve handled that mind numbingly dull task, which nevertheless can ONLY be done effectively if one’s careful NOT to become mind-numbed by same, the last thing I then want to be doing is sitting there holding down that Block’em key and listening to that noxious near rythym of bleeps and blorts as the system folds some hundreds or thousands of new SPAMs into the far smaller list of newly found Spammers to be added into the lists…

    Yet I’m reluctant to automate the process lest it be too easily accidentally triggerable, for the list seems to be stored for efficiency in a purely alphabetical list, without any means for being regarded from the perspective of who was just now added, thereby preventing any hope of having a fall-back ‘safety net’ approach of being able to ‘merely’ have to skim through the most recently added few hundred addresses.

    Thus if the task is left ignored for too long it becomes ever more tempting to then let it wait yet a bit longer still, and making the desire for such a block mode blocking mode function ever more desirable as the Hundreds of unprocessed SPAMs become THOUSANDS of unprocessed SPAMs…

    My appolgies Wes for being like the oh so many others you’d spoken of, but I’m hoping it might be possible to hope that the notion of your passing along this thought might not be too unreasonable.

    The only thing that’s made this a less even a slightly objectionable process than in the past, if one can stretch to thinging of it as a ‘saving grace’, is that with the escallations in Mal-Ware propagation methodologies available having finally forced a begrudging acceptance of once and for all turning off the auto downloading of eMail graphics, at least I’m no longer also as likely as not to be accidentally also doing a this-address-is-live signalling to each and every SPAMMER whose message is so touch individually, due to that one at a time blocking rule, merely for forgetting to turn off the pictures downloader each time before undertaking that hated task.

  10. Cameron Reilly found my post on keyboard shortcuts in Outlook while trying to figure out a better way…

  11. s0lar1s8 says:

    Sub MarkRead()

    ‘misc notes:

    ‘outlook 2002 written 3/2004 by s0lar1s8

    ‘create a toolbar button to run this.

    ‘note: due to security you’ll get a prompt.

    ‘The event that fires when a user displays any item — new or otherwise — is

    ‘Inspectors.NewInspect. A new item will have a blank EntryID property.

    Dim app As New Outlook.Application

    Dim ns As NameSpace

    ‘Dim tempname As String

    On Error GoTo ErrorHandler

    Set ns = app.GetNamespace("MAPI")

    ‘tempname =

    FindtoMark ns.Folders, 0

    ‘MsgBox "Completed", vbOKOnly, "Macro"

    Exit Sub


    MsgBox "Error " & Err & " " & Err.Description, vbCritical, "MarkRead"

    End Sub

    Sub FindtoMark(parent As Folders, depth As Integer)

    Dim flr As MAPIFolder

    Dim s As String

    Dim MarkThisFolder As Boolean

    Dim FindString As String

    On Error Resume Next

    s = String(depth * 2, " ")

    For Each flr In parent

    ‘Debug.Print s; flr.Name; ": "; flr.DefaultMessageClass;

    ‘mark all as read in a particular folder.

    MarkThisFolder = False

    Select Case

    Case "SPAM E-mail"

    MarkThisFolder = True

    Case "Junk E-mail"

    MarkThisFolder = True

    Case Else

    MarkThisFolder = False

    End Select

    If MarkThisFolder Then

    ‘Dim lngCount As Long

    ‘Dim i As Long

    ‘lngCount = flr.Items.Count ‘ objMailItem.Count

    ‘If lngCount > 0 Then

    ‘ We need to use a count down loop for

    ‘ removing items from a collection. Otherwise,

    ‘ the loop counter gets confused and only every

    ‘ other item is removed.

    ‘For i = lngCount To 1 Step -1

    For Each objMailItem In flr.Items

    ‘ all cases

    If objMailItem.UnRead = True Then

    objMailItem.UnRead = False

    End If


    ‘Next i

    ‘ End If


    DoEvents ‘ do any windows background processing

    End If

    FindtoMark flr.Folders, depth + 1

    Next flr

    DoEvents ‘ do any windows background processing

    End Sub

  12. Allen Oliver says:

    I have Outlook 2003 installed and I would like to know to turn off all keyboard shortcuts.

  13. Sarah says:

    Awesome macro – thanks!

  14. john says:

    Would anyone know how to make outlook 2003 auto complete entries by hitting the enter key instead of using Ctil + K?

    Or how to assign a function key to do the same thing

  15. Chris says:

    Hey, thanks Jonathan! I didn’t think to do it that way. I was trying to find the shortcut key for that command when I saw your site. Works elegantly.

    Thanks again!

  16. Paul Ford says:

    Hi Jonathan,

    The tips you accumulated a couple of years ago from KC were useful.  I set up shortcut keys to flag email as completed or needing action.  What would be helpful is to have a macro associated with the shortcuts that both flagged the item and moved to the next item in one key stroke.

  17. Tobin Coziahr says:

    What I’ve been looking for all night is a way to define a keystroke that moves an item from my inbox to another predefined folder.  For example, I move everything out of my inbox into an "archive" when I’ve processed it, and having to drag the emails from one to the other is tedious.  I’d love a single button like "a" that moves an email to a new folder.  Any ideas?

  18. Andy K says:

    The macro is a cool idea.  But when I run the macro, it never stops and it seems to lock up the program.  I’m using Outlook 2003.   Has anybody else seen the problem?