Large Menu Bar Project

Hi all, this is going to be a longish post, so bear with me. I have a project that I've been wanting to do for a while. I'll try to keep this organized:

  • What
  • Why
  • Where I am so far

What I would like to do is have keyboard maestro control the menu bar, much like you can control the menu in MS word in windows computers using the alt key. Thus, I would like to have KM click menu items based on numbers I type. I'll post an example below.

I think the menu bar is quite powerful, but often underutilized. I recognize that the help menu is available and powerful, but it takes more keystrokes to type in the help menu sometimes if you've memorized the location.

I currently have two macros that sort of do this. The first actually does exactly what I want, but it's so inefficient that I hate to use it and I can't update it.

1 Tab bar v7 Beta.kmmacros (81.8 KB)

It's crazy long, I suggest you just download it, though I can post an expanded image if you really want. The way this macro works, is that it asks you for your variable (which menu tab you want to open) and then basically scrolls through clicks to your destination. If you want to to the next level down, you hit the "'" key (to the left of the one key) and it asks you for the next level down. So if I want to go to the about chrome menu, I first type 1 then the ` key and then 1 again and hit enter. You can see the process, but it is super inefficient. I have to have a ton of really strange pauses in there to make everything run properly.

Thus, I decided that I want to create a better version using menu scripting. However, I'm kind of lost when I do this. I posted on stack exchange, but I like this community better. They're also not going to be able to help with the maestro engine part of it.

Basically, I want to get rid of all the random steps in between. What I want is to be able to select the menu, see the options, then select the, next level, etc.

It's easier when you actually see the thing running yourself.

Here's what I have so far. Got the first level down fine, but am having immense trouble getting it to click past that. 1 Tab bar v8 Beta.kmmacros (2.9 KB)

Not to diminish the effort you've put into this project, but if your ultimate goal is to browse and activate menu bar items from the keyboard, I can think of three simpler ways. In order of recommendation:

  1. If you're an Alfred Powerpack user, download this workflow: https://www.alfredforum.com/topic/10231-faster-menu-search/
    It's very fast, and the best solution to this kind of problem I've personally found.

  2. Try KeyCue: http://www.ergonis.com/products/keycue/
    This is limited to showing you menu bar items (and KM macros) with keyboard shortcuts, but is still a great way to get a bird's-eye view of most of the commands available in a given app.

  3. Use the built-in F2 shortcut in macOS to navigate the menu bar via the keyboard. You can switch between different menus with the left and right arrow keys, and type the name of an item to select it instead of arrowing up and down.

While it's true that none of these options exactly approximate the Windows way of hitting Alt and hitting a letter or number to select an item, they do all let you activate menu bar items from the keyboard more quickly than using the mouse, so I think they may at least worth looking into before continuing down this particular path.

Thanks for the suggestions.

I am not a powerpack user, but I checked it out. Given what I saw, it's pretty much like having a shortcut for the help feature in the menu, which isn't exactly what I'm looking for.

On KeyCue, I very much like what I see, but as you mention, it only deals with shortcuts, which sort of is the reason I'm trying to create this. At a certain point, I feel like having so many shortcuts becomes unhelpful.

Lastly, I know you can navigate the menu bar with the keyboard, which is partly what I do and also what my original macro did. I just felt like it was slower than I wanted.

Basically, I'm trying to minimize my keystrokes. I do have a macro that works, it's just a bit weird in it's implementation. I wish I could just script it, but I don't know how.

Sorry, but your actual objective is still not clear to me.

Some questions:

  1. What is the scope of your desired macro?
    • All apps?
    • All menu items?
    • If not (and I really hope not), then what apps, what menu items?

Obviously the combination of all apps/ all menu items is to large to make sense. Most apps already have shortcuts for common tasks, so we use KM to automate combinations of tasks, or, in some cases, to remap the shortcut. But we do this for the workflows that are often used -- not every possible workflow.

  1. Can you provide us with a few specific use cases, with full details including apps and menu items?

Well, maybe both @gglick and I don't understand your objective, but from what I understand, it seems to me that the Alfred workflow is very close to what you have described:

Usage
Type m in Alfred to list menu bar items for front most application You can filter menu items by name, or do a fuzzy search.

E.g

m new tab will match the menu item New Tab
m cw will match the menu item Close Window

  1. So, if the Alfred workflow does not do what you want, please provide specific details about what it is missing that you want.

Suggestion

Rather than start out trying to automate everything, think about what specific, common-use, workflows your often need in a specific app. Then automate those with KM.
From that you may learn or discover a model to be used elsewhere.

Personally, I'd guess that I have little use for ~50%+ of all menu items of all apps. When I have an occasional need for a menu item that is not logically where I'd expect it to be, then a quick trip to the Help > Search menu and enter a keyword of the menu item.

image

Thank you all for your kind answers. I apologize if I've miscommunicated the issues.

Definitely all apps and any items. This is why something like the KeyCue doesn't work -- I don't want to have to make shortcuts for everything. Rather, I can have one general shortcut leading to minimal keystrokes to access menu items.

Yes, for example, if I want to start a recording in MS words notes, I could use the shortcut to access the menu section and then submenu, etc. I am aware that I could either automate that specifically or use the menu search function you mentioned or use Alfred. However, some menus have tons of the same item with different endings (e.g., export as...).

Here's an example of what it looks like in real time:

Untitled.mov.zip (4.2 MB)

I just felt like it would be an efficient solution to my needs. The reason I want to do this is because I don't think the scripting is super hard, but I just don't know how. In addition, as I use one or two of these menu items for each app that I have, I won't have to accumulate 20 macros, rather, I'll be able to see and remember what the fast combo is.

I think this also answers why Alfred and your suggestions aren't optimal. Sure, I could definitely use them and they are great suggestions, but I prefer this way personally.

I believe that the mac menu is massively underutilized because it is inconvenient to access. Some of you seem to have found good ways to work for you. I personally like this one though.

Let me know if I can further clarify.

OK, thanks for the video. That help me a lot to understand your desired workflow.

So, if I understand you correctly, you one one monster macro that you use for all apps and all menu items in those apps. You want to select the menu by number, and then the menu item within that menu by number. Is this all correct?

I'll just pause here for now, until you can confirm/correct my understanding.

Yes! Precisely. I need to do it by level because you can’t see the entire menu unless you do it peacemeal. Also, if you can find some way of overlaying numbers, that would be even better (doubt it exists in km though). Overall, I have scoured the internet for an existing app and it seems like it doesn’t exist.

For figuring out the numbers, I think somehow I could get it in the user input box. With the menu options.

Does this mean that you are not trying to remember the position (number) of a given menu item in a menu, but wait until the menu is displayed, then manually count down the list to get the position of the menu item you want?

BetterTouchTool allows you to display the current application's menu bar as a vertical pop-up menu in response to either a trackpad/mouse gesture or a keyboard shortcut.

@JMichaelTX Initially yes. I plan to create a better version that either lists the numbers in the dialogue box, or that has some sort of overlay. Worst case scenario, though, if I have a repetitive task, I would learn it once and be able to do it over and over. Basically, I can skip a bunch of steps (i.e., making a macro) if I need to do something repetitive.

@eurobubba Interesting. My trial ran out, and I didn't know that was a thing it did. Would you post a video/gif? If it looks like what I'm looking for, I'll gladly pay the $5. However, it still seems like it would need to be paird with a custom macro to do exactly what I'm looking for.

I just want to add that there are more available navigation options when invoking Control-F2; e.g., First-Letter nav works across the Menubar, as well as vertically inside a menu (no need to arrow left/right); e.g., in Safari, Letter' S' invokes 'Safari', 'H' is 'History', 'B' is 'Bookmarks', etc...

Once on the target menu, Spacebar expands it; first instance of a tapped letter is now active; double-tap a letter key to get either first or next instance (where instance equals the first occurrence of the letter, not just the first letter of each menu item).

When my Father made a transition to Mac after far too many years in Windows and DOS, he was beyond frustrated with the lack of key navigation. I eventually scripted for each of his most used applications the Alt-[first letter of Menubar title] shortcuts to speed him into the desired menu (1 stroke versus 3), and then first-occurance nav (which is essentially how Windows works anyway) native to macOS took over, along with visual cues of predefined commands.

Anyway, my point is some further experimenting with the native system, along with some KM streamlining, might give you a blend that works well enough, given that your proposed method already requires a fair amount of real-time observation, assessment and counting to determine your targets.

Overall, I agree with you; it would be pretty great to just throw a switch and invoke the super useful (if ugly) underlined-letter nav system. I've just gone the opposite route for four decades and instead quickly learned the required shortcuts; and hit that ramp for every now or seldom-used application.

@Frederico

Thank you for your comments. What you've described is basically what I do right now. It works, but I still feel like there is a better way of doing it. For example, when I try to type out (export as .mp3), there are like 10 export as options, so I essentially have to type it out completely.

I am almost certain that it is scriptable the way I do it. I'll probably post an updated reply to explain exactly what script I need, so that people can get clarity.

12