Create Text Expansions Macro

I can highly recommend you Typinator. I’m using it for years and always found it to be superior to Textexpander (better features and search, faster). More pricey than aText, but if they are clever they’ll offer an discount now for TE switchers…

It’s from the same company that makes the very nice PopChar (and KeyCue).


I just moved all of my script based TextExpander items to KM. Works much faster and more reliably when the system is running full force (I do a lot of video editing). Now, to get my bad spelling helpers.

I’ve looked at Typinator, but I think KM fills the place okay. The UI is good enough for me!


The downside with Typinator is you can not export the expansions (unless that has changed in a recent version).

You can export them in its native format or as text.

1 Like

That’s great! It used to be able to only export its own .tyset format.

I was a big TextExpander user before I found KM. I now use both a lot.
But with TE moving to an expensive ($48/yr) subscription model, I won't be upgrading TE.

So, having used both TE and KM, IMO KM can be a great text expansion provider for many, many users. Of course, KM is much, much more than just a text expander tool!

But if you are more of a power user (like Chis, Tom, and myself (and others here), then you will probably find an app dedicated to text expansion useful.

Since both Chris and Tom think so highly of Typinator, I just took a look at it. With the 30% discount code of KC8L (expires Apr 8) that Peter provided earlier for KeyCue, I'm plan to buy the package deal, and save 33%

Turns out the discount applies to your entire order.

Looks like EUR 29.91 is about $US 34.08.

1 Like

That’s great (and surprising)!

Hopefully not too much OT, here are a couple of tips for TextExpander switchers (or Typinator beginners):

  • Install the predefined sets (in case they aren’t auto-installed). In the Predefined Sets sheet you also find a link, where you have even more useful sets and examples.

  • Set your Sets folder to a syncable location, for example iCloud Drive, DropBox:

  • Don’t forget to enable beta updates (they have a pretty good update frequency):

  • You can set the abbreviation prefix/suffix ‘globally’ for each abbreviation set:

  • Don’t miss out the regex abbreviation examples:

    Typinator uses the same regex package as Keyboard Maestro (ICU).

  • You can store snippets also in form of individual text files in the includes folder:

    Scripts also go there.

  • Your scripts can take an argument that you can feed through an expansion or via regex:

I hope this is useful.


Apparently the switchers are on the way now. From the latest change notes:

• Typinator now also supports import from TextExpander’s “textexpandersettings” file format.
• When importing from TextExpander, Typinator now correctly converts nested snippet invocations.

(It’s on 25% discount now.)

Coupon KC8L will get you 30% discount.

You said KC8L will expire 8 April. It seems the new discount is unrelated to KeyCue.

The KC8L coupon is still working as of now. Perhaps it will expire at midnight tonight, I don’t know. It is easy enough to try both coupons.

Hi guys,

I’m sorry if this is some sort of highjack. But I do not get this working (have KM only a few hours, not into scripting at all. Should learn that - any good tipps/ressources?).

I’ve got a “.hi”-Snippet expanding to


from datetime import datetime
import sys

currentHour =

if currentHour < 12:
sys.stdout.write(“Guten Morgen,”)
elif currentHour < 18:
sys.stdout.write(“Guten Tag,”)
sys.stdout.write(“Guten Abend,”)"

But I’m not sure how to switch that to KM. Can someone guide me on that?


Absolutely NOT a highjack. In fact, your post is very ON-topic, whereas mine and the other above were off-topic.

Yep, see:

If that does not answer your question, please feel free to post back in the above thread.

One suggestion: Instead of using the “Insert by Typing”, I would use the “Insert by Pasting” action at the bottom of the macro.

1 Like

Why’s that please?

One feature of TextExpander I saw mentioned is the ability to automatically capitalize the first letter of an expansion, if it occurs at the start of a sentence (but not capitalize if it occurs elsewhere). Is that possible with Keyboard Maestro?

Not really, no. You can configure your Typed String trigger to “case affects actions” in which case the Insert Text action will honour the case of the typed string (Lower case, Upper first or Upper all).

So for example, if you had a trigger of “hello” and an insertion of “hi there”, then it would map:

  • hello ➤ hi there
  • Hello ➤ Hi there

But that’s about as close as it gets.

Thanks for the link. Gonna go through that if I have some spare time. Actually I bought typinator as well (and I do not understand everything, BUT the thing with regular expressions is HUGE).

A word of caution regarding Typinator. I used to use it, switched to TextExpander for a change in interface. Went back to Typinator today.

My OS went crazy. It seems that TotalSpaces2 conflicts withTypinator to the point that I had to disable TotalSpaces2. Use caution if you have both apps installed.

Hi, I'm a beginner to Keyboard Maestro, and am missing something simple about making OP's macro work. Can anybody offer some advice?

I'm not sure what OP means by

"simply fill in the text of the action with lines like:


where trigger is the Typed String trigger you want and text is the text you want to expand to."

I have tried to write in my trigger and text in different locations in the actions, but i'm not sure where in the actions it should go (i have tired the (.?):(.) area alot but not sure if i should be including the extra stufff). everytime i get a notification that says macro cancelled (pic below). Can anybody point me to exactly where i need to type the trigger and text? thanks so much!

This means, in the below Action, to replace the text of the Action with the text expansion trigger, and the text (snippet) that it will output, with your own, using the format of:

<trigger> is the typed string you will use to trigger the macro
<text> is the text snippet to be output

In the above Action, one of the macros to be created has
the <trigger> is "=em="
the <text> is ""

Make sense?

1 Like