ASK_Palette logo

ASK_Palette On Hiatus

04/30/26: This app does not currently work because of complexities related to macOS security. I hope someday to figure out how to deal with this, but for now the application is non-functional.

Create a 2-D Grid of Buttons to Launch AppleScripts, Shortcuts, and Keyboard Maestro Macros

The focus of ASK_Palette is on controlling Keyboard Maestro macros, but it can also directly initiate Shortcuts and AppleScripts. The initials ASK stand for: A: AppleScript; S: Shortcuts; K: Keyboard Maestro.

Keyboard Maestro itself comes with four different types of palettes: Global Macro Palette, Applications Palette, Conflict Palette, and Macro Group Palettes (Keyboard Maestro Palettes). These have their own role, and the user of ASK_Palette does not have to abandon their use. ASK_Palette is a somewhat different animal — I think of it as a virtual Elgato Stream Deck.

The Macro Group Palettes can be presented in a variety of styles: as a list of macro names, as a grid of names, as a grid of icons plus names, or a grid of only icons. Most commonly the simple list style is used, and I think it is the most familiar to users. The icon-grid style is most visually similar to what ASK_Palette produces. If you are familiar with icon-grid palettes, ASK_Palette might seem redundant, but there are significant differences.

ASK_Palette runs as an independent application on your Mac. From this one application you can access and use all the palettes you have designed. Only one palette is active at a time, but you can jump from one to another. ASK_Palette can launch Keyboard Maestro macros, and since it is just a regular application, Keyboard Maestro can manipulate it in return — for example, selecting different palettes. It is straightforward to have a Keyboard Maestro palette and an ASK_Palette palette functioning at the same time. Check out the manual to get a feel for what this program is about. There is extensive help embedded within the program itself, so once you have it running, contextual help can guide you along in creating your own palettes.

ASK_Palette allows the user to design, in a window, a grid of buttons that can be clicked to launch assigned Keyboard Maestro macros. Below are some sample grids.


Comparison with the Elgato Stream Deck

The Elgato Stream Deck permits the assignment of physical buttons to Keyboard Maestro macros. The picture below shows the 15-button model; it comes in various sizes.

Elgato Stream Deck website

In David Spark's Keyboard Maestro Field Guide, he shows the sample Stream Deck configuration below, designed on a 32-button unit.

MacSparky Stream Deck configuration

A matching grid of buttons can be created with ASK_Palette. Clicking these buttons fires off Keyboard Maestro macros just as the hardware device does.

ASK_Palette recreation of the MacSparky layout

Button Design Examples

The user is free to design any graphics to appear on the buttons. One ready source is emoji graphics sized to 64 pixels. Starting at the top row, you can imagine the buttons conveying the notions "Maximize," "Minimize," "Slow Down," "Speed Up." Second row: "Bad," "Good," "Short," "Tall." Third row: "Lazy," "Industrious," "Ugly," "Beautiful." Fourth row: "Creepy," "Cute," "Modest Start," "Accomplished End."

I should probably apologize to the grasshoppers, pigs, and spiders for reinforcing negative stereotypes.

Animal emoji button examples

The small orange letters in the lower-right corner of some buttons represent an optional keyboard shortcut display. A yellow information panel at the bottom of the grid shows supplementary information about the button under the cursor. On the left, the palette ID and button ID are displayed — this information is transmitted to Keyboard Maestro so the correct macro runs. On the right, the shortcut appears in orange. In the center, explanatory text (a "tip") clarifies what the button graphic is meant to convey. In the lower half of this palette, no pictures have been assigned yet; the program shows button IDs and any assigned shortcuts as a default.

Palette with information panel visible

Another source of button designs with a unified look is Apple's SF Symbols. The two palettes below take advantage of that source.

SF Symbols inverted-T palette SF Symbols linear purple palette

Several buttons in the next palette are created using the text function of a design program. I happen to use Affinity Designer, but most design programs offer this functionality. In that environment, you have complete control of text size, color, orientation, and so on. Application icons are available from the Get Info window of any app and can be captured for use on an ASK_Palette button.

Text-based button design example

The next palette is designed to control a specific application — in this case, Zoom. The functions the user needs can be selected, placed on the palette, and invoked by Keyboard Maestro macros (or Shortcuts or AppleScripts) associated with the various buttons. In a complex app like Excel, you can isolate the small subset of functions you actually need and put them on your palette. Since they can invoke Keyboard Maestro macros, they can combine multiple steps into one. The icons identify each function; when the cursor hovers over a button, a textual description also appears. In the example below, the cursor is over the button that will Mute All Others.

Zoom controller palette

Below is a palette with a miscellaneous assortment of images. Some are drawn in vector graphics programs. Some have text in the image. One is a photograph of an owl sized to fit 64 pixels. The top row of three button images has been created to blend into a single image, although the underlying integrity of three separate buttons is preserved. The center button of the third row is "invisible" and does not respond to clicks. The button in the lower-right corner has not been assigned any image.

Variety of graphic styles on buttons

The next palette is one in my own active use. BBEdit has a tool to compare two versions of a text document displayed side by side. Differences can be resolved by accepting one version or the other for each specific difference. I have to deal with long documents that have about 1,000 differences to manually resolve. It is worth having a specific palette just for this task.

The left button sets up the font; the next soft-wraps text in BBEdit; the next declares the left-side version to be "bad"; the next declares it "good"; the next breaks the paragraph into individual differences; the next declares the right-side version to be "good"; and so on. These actions are available scattered around the BBEdit interface but require opening menus and clicking all over the place. Isolating the particular functions needed for this task in one place makes a daunting job more doable.

BBEdit comparison palette

Building a Palette

The above are finished designs. Below is the raw initial palette — a 10 × 10 grid of buttons that the user molds to their needs. It defines the largest possible palette. Usually you would need something smaller, and the tools exist to specify that.

Initial 10×10 palette grid

The application provides tools to modify any palette, including the initial one: determine the number of rows and columns, assign shortcuts, provide tips, and add information about the purpose of individual buttons.

Emoji palette construction

For this palette of emoji, two rows of the grid have been activated. The user is currently editing button 02 on the palette, assigning it a Shortcut.

Grid construction window

After the bones of the palette have been specified, you can assign pictures to individual buttons. Create 64-pixel images using whatever programs you prefer, then name the PNG (or JPG) files with the first two characters referring to the owning button. The picture tool in ASK_Palette helps you associate images with their buttons.

Button image assignment

If the purpose of a button is particularly complex or hard to remember, that button can be assigned a paragraph of explanatory text during the design process. Just what does the owl mean? Access that explanation with an Option-click on the button.

Extended information display for a button

Individual palettes can be renamed or deleted, and new palettes can be created.

Palette manager

The design work, which takes a bit of time and consideration, is usually done only when a palette is first created, though palettes can be modified later as needs evolve. After that, the program exists primarily as a Keyboard Maestro controller. Once it is up and running, you can freely move from one palette to another. For those familiar with Elgato Stream Deck terminology, an individual palette is analogous to a "profile" — selecting a different palette corresponds to selecting a different profile.

A more thorough explanation of the program is supplied in the downloadable manual (see sidebar).

Please email me if you have crashing issues — or about anything, really. I am curious about user experiences and appreciate feedback.


Copyright © 2022 Robert Livingston

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.