The Mastering Emacs ebook cover art

Emacs 27 Edition is out now!

$39.99 Buy Now

Learn More

Inserting Emoji with Input Methods

The upcoming Emacs 29 adds many new features, and I’ll take a closer look at them all when it’s out, but one thing caught my eye.

It’s got builtin support for inserting emoji. Now, if you’re familiar with C-x 8 and friends as a way of inserting infrequently used symbols then it’s basically adding on to that. There’s also a Magit-style interface to insert emoji. It’s all pretty cool, but it got me thinking…

Way back in the day I wrote about Input Methods as it’s a really, really cool way of modifying your keyboard input to support languages that you wouldn’t ordinarily be able to type with your keyboard layout. For instance, if you’re an occasional German speaker, you can type C-u C-\ then pick german from the list. If you’re a LaTeX user I recommend you play around with the TeX mode. You can use LaTeX commands to insert the equivalent symbol in non-LaTeX buffers. Try C-h I TeX and you’ll get a really nice table of key sequences you can type and the symbol it’ll output.

Anyway. Input methods use a simple chord system to map a set of keys. But it’s flexible, and you can do just about anything with it. Even emoji.

(quail-define-package
 "Emoji" "UTF-8" "😎" t
 "Emoji input mode for people that really, really like Emoji"
 '(("\t" . quail-completion))
 t t nil nil nil nil nil nil nil t)

(quail-define-rules
 (":)" ?😀)
 (":P" ?😋)
 (":D" ?😂)
 (":thumb:" ?👍))

Here’s a simple example. When you’ve evaluated the elisp you can enable it with C-u C-\ and then pick Emoji. Feel free to change the source locale from UTF-8 to whatever you prefer. You can also pick your own mappings, and you’re not limited to : as the start symbol either.

Now you can type : and either TAB to get a list of known completions or C-h I Emoji RET to see a full list. You’re also presented with a little auto complete dialog in the echo area. Typing :) thus yields 😀. You can toggle the input method on or off with C-\ — it’ll remember your last selection.

Pretty nifty! And if you’re a frequent user of emoji, possibly an easier way of inserting them. And, I hasten to add, you’re not limited to emoji. You can map just about anything.