Accessibility: Providing keyboard support for macrogroups included in menubar

I was going to ask for something and call it a feature request, but I think it's more of a bug, if I'm honest.

When you set a macro group to appear in the menubar, it is not possible to navigate the items in the same way that you would any other menubar item (up/down arrow keys to navigate, ENTER to select, ESC to dismiss, and press any letter key to jump to items beginning with that).

Personally, I can use the mouse to select, but many cannot. It's an accessibility barrier for such menus (although I am aware that you can set it up un many ways so that the menubar approach is not the only way).

That said, I find myself attempting to use these as normal menus many times a day. It would be a really big usability/accessibility enhancement to provide that keyboard support.

Example: HTML5 reference as a menubar item:

If I want to go to video reference, I have to scroll, but if I could press 'V' and it move focus to that, it would be much better.

Perhaps this functionality will be added in the future. In the meantime, you might consider alternate methods if you prefer to remain mouse-free.

Here's how I select a macro from those available for the front application:

I have a hotkey that triggers Trigger Macro by Name:

As you can see, this sources its macros from a Smart Group whose search string is set to app::

This means that I can press one hotkey trigger and, regardless of which app is at the front, I will presented with a list of its active macros.

That's an interesting point. But also consider that the pull-down menu for the KM engine not only supports arrows, but it also supports alphabetic characters as shortcuts. Maybe you should be asking for that too. It seems quite fair to ask, and it's consistent with KM's own menu. So I think there's a fair chance that may get fixed.

Technically, it's not a bug, though. If it was, then some of Apple's own menus are also buggy, and we should all submit bug reports to Apple about that.

1 Like

I don't disagree. However, if you want a practical solution in the interim, I think Trigger Macro by Name is a good option, and you could try it alongside your current method. It's easy to set up and intuitive to use.

Just to reiterate, I realise there are multiple other ways to get to macros that are keyboard-operable (so this is not a show-stopper, and also I am able to use the mouse), but in essence this is a case of 'it looks like a menu, so should behave like a menu'; there's an expectation about the behavior which is not met at the moment. I thought it was worth asking to be looked at as a general usability feature.

1 Like

What I normally do is I trigger a menu with the mouse and then press a key to jump to the relevant entry - so it's hybrid mouse/keyboard for me. In a long list, that lack of ability to press a key to jump is tricky.

Hang on a sec. I don't use KM menubar icons, so I took your word for it, but...

CleanShot 2023-10-27 at 11.29.05

Hehe, I took his word for it too, but I can use arrows or keystrokes as shortcuts, also.

1 Like

Alright, it's weirder than that ... I have just been able to do this but there are some dead keypresses that are not registering for me. So it took like 5 keypresses of down arrow until it worked. And I never went to that point because why would you :wink:

I'll do a screen recording to show the keypresses and the result.

My guess, just a guess, is that you have other macros running which are sending keystrokes to macOS while you are trying to use the menus. I make mistakes like that myself often enough.

Oh, no option to add a video. Nevermind.

So the plot thickens - I tried this on a number of menus and the focus moves to the first menu item after several presses of down arrow, but it's not consistent.

On one menu it registered on 2nd, 3rd and even 5th keypress (when I pressed down arrow rapidly it took 5 times).

When I recorded the video, I have a visualiser that shows keypresses. And only the last one registers. How strange.

Video no, gifs yes. I use Cleanshot X for gifs.

You can always upload your video to a free hosting site like Imgur.com and post the link.

I'm assuming no other macros are running while you're testing this, and that ↓ is not a macro trigger...

Ah, it needed video so that you could see the contrast between how many times I hit the down key (recorded on microphone) and when the keypress is detected. Maybe that does indicate that there is something else intervening but ... I do not notice this behaviour on any menubar items that are NOT KM macro group ones.

Correct! Nothing that listens for down arrow. But there are other macros running that do things like listen for folder content changes, that sort of thing. But nothing that is listening for down arrow.

In the interest of isolating the issue, do you get the same behaviour with this group?

MenuBar Test Group.kmmacros (5.1 KB)

Nearly every day when I'm worried about macro interference, I disable all my macro folders except for one folder that contains the macro that I'm testing. You may want to consider that. It takes only a minute to do.

2 Likes

If you wanted to get fancy, you could run an AppleScript to get the enabled status of each macro group for easy toggling. This way, if you’re like me and enable/disable macro groups for other reasons, you don’t have to worry about remembering which ones are enabled/disabled. The AppleScript can save the current status to a variable so later on you can iterate over each line in the variable and re-enable only those that were previously enabled.

For instance, this AppleScript... (click to expand/collapse)
set groupStatus to ""
tell application "Keyboard Maestro"
	set theGroups to id of every macro group
	repeat with theGroup in theGroups
		set groupName to name of macro group id theGroup
		if enabled of macro group id theGroup is true then
			set groupStatus to groupStatus & "Macro group " & theGroup & " is enabled (Name: " & groupName & ")
"
		else
			set groupStatus to groupStatus & "Macro group " & theGroup & " is disabled (Name: " & groupName & ")
"
		end if
	end repeat
end tell

return groupStatus
Returns the following list. (click to expand/collapse)
Macro group B1D4C5BD-3760-472B-BFDD-2D9DEBC79459 is enabled (Name: App Activates / Launches / Quits)
Macro group 522FCE7B-1817-4CC4-851E-D7715064766C is enabled (Name: App Specific: BBEdit)
Macro group C4FABF3F-E5EB-41F9-96A8-9B1BAEBD051E is enabled (Name: App Specific: Calendar)
Macro group 23533C69-A51E-4508-9FD0-89FFAC996721 is enabled (Name: App Specific: Code)
Macro group 2994A78A-4270-4EFC-941E-DA2CAAD7E1AF is enabled (Name: App Specific: Finder)
Macro group B14B953F-5754-4CA9-AB44-35916BE01E80 is enabled (Name: App Specific: Google Chrome)
Macro group 0E8EFDFD-663F-4160-ABE3-750A601AE96F is enabled (Name: App Specific: Keyboard Maestro)
Macro group B7D3203C-017D-4AED-9C2F-4AA92781D596 is enabled (Name: App Specific: KOTOR)
Macro group DCF864BC-D9BE-4D52-A7B4-07E52642D47A is enabled (Name: App Specific: Mail)
Macro group E7A808C9-D207-4348-BAFB-FEAE010DBFA1 is enabled (Name: App Specific: Messages)
Macro group 50F9E252-3DCC-42D9-BB67-43E220639F46 is enabled (Name: App Specific: Mic Drop)
Macro group D20DEFA1-B9A1-474A-AB4A-1F5D679AD80D is enabled (Name: App Specific: Microsoft Edge)
Macro group F106AAC3-96FF-4F57-90F0-54312EC8DB7F is enabled (Name: App Specific: Microsoft Remote Desktop)
Macro group 60D7D8C7-F114-4793-BE5D-36A29C46A78D is enabled (Name: App Specific: Microsoft Teams classic)
Macro group C50CDF0F-3DA2-4109-9EBA-673CF0EA7836 is enabled (Name: App Specific: Music)
Macro group 0C1567B5-8855-4A49-861C-29CA56C59790 is enabled (Name: App Specific: Music (in app))
Macro group 846ACB22-2694-47EF-91E9-E30D3884BECF is enabled (Name: App Specific: Music (not running))
Macro group 47E7EDA5-DA31-4756-A7D0-52A3F44013B5 is enabled (Name: App Specific: Notes)
Macro group 38790A02-90EA-4D06-831C-FAE8599674EB is enabled (Name: App Specific: OpenEmu)
Macro group B240AE87-B67F-4558-9C69-3CE9E95F5835 is enabled (Name: App Specific: Pages)
Macro group C3424612-FC5A-4BA9-BF8E-57A79FD1D55F is enabled (Name: App Specific: Reminders)
Macro group F6985AC8-61F2-4EFD-B5C9-058E572918E7 is enabled (Name: App Specific: Safari)
Macro group 05647AD7-0525-4DBA-80AA-A24911817710 is enabled (Name: App Specific: Script Debugger)
Macro group 187D302F-45A6-4C9A-A34A-A2B34D3E3843 is enabled (Name: App Specific: SoundSource)
Macro group 3D2DEFFA-F215-4700-955B-CD8047E36A16 is enabled (Name: App Specific: Stream Deck)
Macro group 0294A1BB-0D2B-47C1-8349-58150314565B is enabled (Name: App Specific: Terminal)
Macro group EFAA1DC7-838C-435A-9419-6E7D26518209 is enabled (Name: App Specific: TextEdit)
Macro group 3B6CCB45-0EFE-470B-B7F0-1F494CA3058D is enabled (Name: App Specific: TV)
Macro group 6AAF3CA7-D54F-45A6-B225-CC7D9794230D is enabled (Name: App Specific: Typinator)
Macro group 71B9A938-D66B-4240-AB6E-6F74DD6F9223 is enabled (Name: App Specific: Typinator (not running))
Macro group 9B87C531-B562-4CFC-A98F-D0022523CE6F is disabled (Name: App Specific: WhatsApp)
Macro group FA48E8E8-3E3D-4A5B-AC0B-FA02110C3343 is enabled (Name: App Specific: Windows 11)
Macro group 72B88F7D-D6D7-4C0A-B129-F06992F29D6F is enabled (Name: Audio Controls)
Macro group C8507F9C-B872-4E8D-B303-E70553BD4A92 is enabled (Name: Calculations and conversions)
Macro group 52710DBC-9117-4AAC-B910-59C016C4BDEA is enabled (Name: Clipboard, Filters and Text Editing)
Macro group F4DCFE75-36F1-4555-8DC1-BDDE2AA9253E is enabled (Name: Date Calculations)
Macro group 21D67121-4B5E-42E4-A943-6F232AFA4E6A is enabled (Name: Debugging and Error Reporting)
Macro group 195FDDA2-5DCA-442D-9E15-37E618BEFF17 is enabled (Name: File Auto Organizing)
Macro group F0BF67C7-2F38-4AC7-A508-908E92385BB2 is enabled (Name: Folder and File Finder)
Macro group 0FCE3229-0111-46DD-B15D-28F9EDB20C91 is enabled (Name: Function Keys)
Macro group 50D67D0C-86A6-4ACA-B265-E27ABE1FA4A4 is enabled (Name: Gaming)
Macro group 0282A4D8-2883-4AD6-8264-886C4CE62594 is enabled (Name: Global Macro Group)
Macro group BFB978EA-BA62-45EB-A7A5-BF1962105398 is enabled (Name: Internet shortcuts)
Macro group 039A1F07-19F1-4A4B-959A-0AC6C276B604 is enabled (Name: KMET Edit as Text)
Macro group 9757137D-435F-48E7-B82E-83AFF61E0E14 is enabled (Name: Lionbridge: 01) Master)
Macro group F3D7828F-D79F-4CD1-B488-1C5D21D1DEAA is enabled (Name: Lionbridge: 02) Secondary)
Macro group 166AEDDC-3674-4BA0-9482-295C3D8D7AEF is enabled (Name: Lionbridge: 03) Copy/Paste Actions)
Macro group 64E7D4BE-118B-4912-A001-708142B6B575 is enabled (Name: Lionbridge: 04) Stream Deck)
Macro group C1819E30-CC76-4AF6-A609-0D8A769DA9EC is enabled (Name: Lionbridge: 05) DHS-USCIS Forms)
Macro group E464D0F1-4337-4778-AC0E-EE4731154B7E is enabled (Name: Media)
Macro group EFF92E22-BCA0-42B3-A940-2CEB5594FA6F is enabled (Name: Open/recall applications)
Macro group 6188D724-3ACE-4046-B7CC-EAFD90054D01 is enabled (Name: Quick Access Macro Editor Palette)
Macro group 7B734F84-88C4-45D1-82FF-A450DDFFEB2C is enabled (Name: Searches)
Macro group 7F05B8D0-1F61-45E7-AABB-821DBE8AA989 is enabled (Name: Smart Home)
Macro group 77034887-077B-4D3B-ADDA-EAD2FF85EF7B is enabled (Name: Subroutines)
Macro group F92BF5AC-45F2-424E-80D1-70023B96808D is enabled (Name: System Microphone)
Macro group 0E6959AD-478C-493F-B4CF-C55BC7E97037 is enabled (Name: Test Macros)
Macro group 5B8030D9-82CB-4E39-A511-18F55EBE2C9E is enabled (Name: Text Editing)
Macro group 474B91C5-D6B1-4141-9317-B2B06527BE46 is enabled (Name: Thunderbolt Hub)
Macro group 4246ADED-5ECA-4631-AEE7-DF28E95EEC79 is enabled (Name: VIP - Variable Inspector Prompt)
Macro group E4318F4C-39BE-4D3A-922B-BA304A0B82FE is enabled (Name: Website: Keyboard Maestro forum)
Macro group 9D083CCA-657B-4DB5-BCB7-0F9ADAEDB741 is enabled (Name: Website: PPF)
Macro group EB14326F-182C-496E-97E7-F197748D4299 is enabled (Name: Window Controls)
Macro group 037DD75F-6D54-4700-AD45-46C5289E0E98 is enabled (Name: Youtube)
2 Likes

I took the nuclear option - I backup up one macro group on its own, and backed up the whole sync file. Then I deleted EVERYTHING, and reimported one macro group. Conclusion: yeah, something elsewhere is causing this. The single macro group was instantly responding.

So I need to start switching things out to see what the cause is.

I have LOADS of typed string triggers always listening. Would those be culprits, do you think?

For info, this is what I was seeing. When you compare the sound with what is being registered as a keypress (in ScreenFlick screen recorder), you can see there is mismatch:

I narrowed down the source to a single macro. Surprisingly, it was not one that was listening for arrow keypresses. Even more surprisingly it was not one of mine; it was a default macro that comes with KM: Activate Application Switcher.

I will record a demo of this and put on to YouTube for sharing later, but it is 100% down to that macro.

2 Likes