Best (?) way to quickly select from a group of related "insert text" Action Sequences

Hi. An easy one, I hope.

What is the best/recommended way to provide a quickly-navigated-by-keyboard list of Action Sequences that insert one of a set of related text strings?

E.g.:

  • Insert date-time in format A, B, C, D, E, F, or G?
  • Insert department name V, W, X, Y, or Z?
  • Insert Floating Menu name 1, 2, 3, 4, … 19, 20? ←for real
  • and possibly even Copy and transform and paste selected text by Transformation 1, 2, 3, 4, 5, 6, … 12, 13.

And so on.

These are sets (certainly the first three examples) that are too simple, imho, to set up a Floating Menu, and as these are going to be mostly string-insertion Action Sequences I want to be able to run them from the keyboard.

I have had these set up in Keyboard Maestro for some time. There I assign each macro (= Action Sequence) the same typed-string trigger so that Keyboard Maestro’s “Conflict Palette” pops up showing all the macros bound to that trigger.

I have set some of these up as Floating Menus by assigned a Keyboard Maestro macro to each Floating Menu Trigger. These work well.

I know I can use BetterTouchTool’s Conflict Menu similarly, but I did read some posts warning against relying on the Conflict Menu to do this. Iirc, the concern was that BetterTouchTool doesn’t always handle conflicts the same way.

I therefore think the better approach is to use the Action “Choose Action From List / Prompt”.

I don’t yet know which is more fluid using just keyboard input.

I don’t know if there is another even better way to do this in BetterTouchTool.

Hence this Topic.

TY!

I would definitely prefer the choose action from list action - I will soon add an option to use that as default for conflict menus as well.

For such a use case it might even make sense to define the whole menu in Java Script and use the "Show Simple JSON Format Menu" action. This allows you to switch between context menu, list or floating menu based display with just one property. Here is an example - chatgpt etc. are perfect for adding any type of custom paste output to that.

Note best use 6.098 if you try this - I just fixed a potential timing output when pasting text from such a generated menu:

async function showMenu() {
    const today = new Date().toISOString().slice(0, 10); // YYYY-MM-DD

    return JSON.stringify({
        type: "searchablelist",   //other allowed values: contextmenu, floatingmenu, searchablelist

        items: [
            {
                title: "Hello World",
                icon: "sfsymbol::globe",
                action: {
                    btt: "paste_text",
                    args: {
                        text: "hello world",
                        insert_by_pasting: true
                    }
                }
            },
            {
                title: `Paste date ${today}`,
                icon: "sfsymbol::house",
                action: {
                    btt: "paste_text",
                    args: {
                        text: today,
                        insert_by_pasting: true
                    }
                }
            }
        ]
    });
}

1 Like

TY Andreas :top_hat:. Happy to take that recommended path.