← All mockups

Mac quick trigger

Eleven ways to bring emoji into what you are writing. Each activation is shown in context, with a motion demo and three clear steps. Explore the three new gestures →

Emoji, right at your hand

Three exploratory gestures. Watch the movement, open the emoji bud, then pick a reaction.

9 · Circle to bloomFirst experiment
MessagesEmojiCopy
Team chat
Casey
The new design is ready!
That looks great
1
Draw a small loopNo button held. A deliberate little circle.
2
An emoji bud appearsJust above the pointer; click to unfold.
3
Pick and keep typingInsert into the active text field.
Why it could work
My first experiment: a small physical ritual that brings emoji to your hand.
What to test
Opt-in. Distinguish a deliberate loop from ordinary movement; never insert from the gesture alone.
10 · Meet the caretExploratory concept
MessagesEmojiCopy
Team chat
Casey
The new design is ready!
That looks great
1
Meet the caretMove beside the blinking line and pause.
2
A little smile appearsAbove the caret, outside your words.
3
Open it and pickClick the smile, then an emoji.
Why it could work
The place you are already writing becomes the entry point.
What to test
Needs reliable caret geometry. No caret, no bud. Avoid buttons, selections, secure fields, and ongoing typing.
11 · Pocket emojiExploratory concept
MessagesEmojiCopy
Team chat
Casey
The new design is ready!
That looks great
1
Pocket a favoriteUse “Carry” on an emoji in the picker.
2
It travels with youA small badge follows the pointer to a field.
3
Click the badge and pickConfirm the carried emoji or choose another favorite.
Why it could work
Useful when you repeat the same reaction across several apps.
What to test
Explicit temporary carry mode, not a permanent follower. Escape clears it. Validate a target before offering Insert.

The original four

Each one is a different physical action
1 · Type a colon Hands on the keyboard, mid-sentence
MessagesEmojiCopy
Team chat
Casey
The new design is ready!
That looks great
:th
1
Type :thKeep typing in the same field.
2
Matches appearA small row sits above the text.
3
Choose thumbs upThe shortcode becomes an emoji.
Why it could work
Familiar to people who use shortcodes.
What to test
Native insertion must replace only the verified shortcode.
2 · Highlight first The key you already press, reading intent
MessagesEmojiCopy
Team chat
Casey
The new design is ready!
Want to grab
pizzaSpace
1
Select “pizza”Highlight the word in your message.
2
Press your emoji keyOpen results already searching pizza.
3
Choose a resultReplace the selected word.
Why it could work
You already supplied the search term.
What to test
Only replace a selection that the host app can verify.
3 · Both Shifts Hands never leave the home row
MessagesEmojiCopy
Team chat
Casey
The new design is ready!
That looks great
+
1
Squeeze both ShiftsOne key beneath each pinky.
2
Picker appearsThe keyboard stays within reach.
3
Pick an emojiReturn to the same text field.
Why it could work
A physical gesture with no letter to remember.
What to test
Test false activations and modifier accessibility settings.
4 · Hold the icon Hand already on the pointer
MessagesEmojiCopy
Team chat
Casey
The new design is ready!
That looks great
Hold
1
Hold the menu iconA progress ring confirms the hold.
2
Open the full pickerRelease and browse.
3
Pick an emojiInsert back into your message.
Why it could work
The existing icon gains a second action.
What to test
A normal click must retain its existing behavior.

Four practical alternatives

Start with 5 for everyday use. Try 6 for one-handed access, 7 for mouse users, or 8 for a visible reminder. These are optional alternatives, not four new defaults.

5 · Your own shortcutStrongest next prototype
MessagesEmojiCopy
Team chat
Casey
The new design is ready!
That looks great
E
1
Press your shortcutThe example is Control–Option–E.
2
Picker appearsClose to the field you are using.
3
Pick an emojiKeep writing without switching apps.
Why it could work
Predictable and easy to personalize.
What to test
Check shortcut conflicts during setup.
6 · Double-tap OptionOne hand, no letter key
MessagesEmojiCopy
Team chat
Casey
The new design is ready!
That looks great
1
Tap Option twiceTwo separate taps with one thumb.
2
Favorites appearA small palette, not a full window.
3
Pick an emojiInsert and continue typing.
Why it could work
One hand, one key.
What to test
Timing and accidental activation need native testing.
7 · Palette at the pointerFor mouse-heavy work
MessagesEmojiCopy
Team chat
Casey
The new design is ready!
That looks great
MouseSide key
1
Press the side buttonKeep your pointer near the message.
2
Favorites meet youThe palette opens above the pointer.
3
Click an emojiNo trip to the menu bar.
Why it could work
A short journey for mouse users.
What to test
Opt-in; never take over an existing mouse assignment silently.
8 · A small edge tabVisible, optional entry point
MessagesEmojiCopy
Team chat
Casey
The new design is ready!
That looks great
1
Click the edge tabA small, always-visible entry point.
2
Favorites unfoldThe palette opens inward from the edge.
3
Click an emojiInsert in the last verified text field.
Why it could work
Easy to find even if shortcuts are forgotten.
What to test
It occupies screen space; people must be able to hide or move it.

The colon trigger, in detail

Activation 1, and every rule that governs it
A · Armed, drawing nothing Colon typed, one character in
You type a colon and one letter.Nothing appears. The colon has armed a session and the screen stays empty.
Notes File Edit Mon 2:14
Standup notes
Casey shipped the mini window :t
B · The row Two characters in, matches found
You type a colon and two letters.A row of matching emoji appears under your cursor, in whatever app you are typing in.
Notes File Edit Mon 2:14
Standup notes
Casey shipped the mini window :th
thumbs up thinking face thought balloon thread thermometer thumbs down high voltage ⌘⌥␣
C · The gate One caret, four keystrokes
You keep typing after the colon.The row appears only once there are two letters and a match, so it never flickers.
great work :
Armed. Nothing drawn. No match attempted.
great work :s
One character. Still nothing. The two-character floor has not been reached.
great work :sm
smile smiley smirk smiling face with hearts smiling imp
Both conditions met. Two characters and at least one match. The row draws.
great work :smx
Match count hits zero. The row goes and does not come back for this session.
D · Closing colon The default commit, and it costs nothing
You type the closing colon.The shortcode you typed is replaced by the emoji. Same habit as Slack.
:tada
party popper confetti ball partying face
Row open. Party popper is the exact shortname match and sits highlighted.
:tada:
The closing colon lands. The row is already gone. The shortcode is still sitting in the document. Nobody infers this panel.
Swapped. Seven backspaces, then the emoji. The user typed the terminator themselves.
E · The race Typed straight through, no pause
You keep typing straight through, without pausing.The swap gives up rather than race you, and leaves your words alone.
hip it
Naive. The backspaces fire late and eat into the next word. The user typed :tada: ship it.
:tada: ship it
Abandon on interruption. A real keystroke arrived first, so the swap never runs. The shortcode stays literal and nothing is destroyed.
F · What a colon is not Every specimen tested against the arming rule
You type a colon in ordinary writing or in code.Nothing happens, and nothing flashes on screen first.
3:30nothingA digit precedes the colon.
https://exnothingA letter precedes the colon.
key: valuenothingA letter precedes the colon.
[label]: urlnothingA closing bracket precedes the colon.
::beforenothingA colon precedes the colon.
See this: thanksnothingA letter precedes the colon.
:)nothingArms, then dies. One character, and it is outside the query alphabet.
:-DnothingArms and reaches two characters. Matches nothing, so nothing draws.
(:atomdrawsArms after the opening paren. This is why code editors ship off.
nice work :thdrawsWhitespace precedes the colon, two characters typed, matches found.
G · No caret, and ceded ground Where the row will not draw
You type the trigger in Slack, Linear or Terminal.Nothing is drawn, because we cannot find your cursor there. The shortcode still works.
Linear
Fixed the beak flip :tada
Caret unreadable. Chromium builds its tree lazily. Nothing is drawn at all, and the row never appears near the mouse instead.
Linear
Fixed the beak flip
It still swaps. Blind exact-match expansion needs no geometry. :tada: works with nothing drawn.
Terminal
~ % git commit -m ":tada"
Ceded. Terminal ships off. Nothing draws, nothing swaps, and the tray says why the first time.

The reminders

Five ways to remember it is there
H · Reach answer You reached for an emoji another way
You type :) or open Apple's emoji picker.The menu bar quietly shows the key that would have worked. Three times, then never.
Messages File Emoji ⌘⌥␣ 􀙇Mon 2:14
Casey
that is great :)
The act and the answer, same beat. You typed a face. The menu bar shows the key that would have worked. No badge, no dot, no window.
Messages File 􀙇Mon 2:14
Casey
that is great :) t
Cleared. One keystroke later the title is gone and the neighbours shift back. That motion is the cost and it is owned, not hidden.
I · Emoji key First run, reversible forever
You press Space, the key macOS already taught you.EmojiCopy opens instead of Apple's picker, if you chose that at first run.
EmojiCopy for Mac
Emoji key
Pick the key that opens EmojiCopy. You can change this later.
Use ⌃⌘␣ for EmojiCopy
macOS uses this key for its own emoji picker. Turn that off in Keyboard settings and EmojiCopy takes it over.
Keep ⌃⌘␣ for the macOS picker
EmojiCopy stays on ⌘⌥␣.
J · Field mark The icon you asked about, built so it cannot be hated
You type :) where we can find your cursor.A small mark appears just under the cursor, showing the key. It cannot be clicked.
that is great :) 240
⌘⌥␣
Below the baseline, outside the box. The field's own counter keeps its corner. We take the gutter nobody is using.
that is great :)
⌘⌥␣
🖱 click lands in the field
It cannot take a click. set_ignores_mouse_events(true). It is a hint and can never become a control.
Slack
that is great :)
Same act, no caret. Chromium content resolves nothing, so nothing is drawn. The tray answers instead.
K · The quiet two No detection, no ration, no moment
You open the picker, or right-click the menu bar icon.The key is printed where you are already looking. No detection, no timing, no ration.
Recent
Picker footer. One low-contrast row printing the live key. Present on every open, by every route, so the grid never reflows.
Show EmojiCopy
Quit
The tray menu today. Two rows, no key equivalents, no status. Verified at lib.rs:143.
Off in Terminal
Turn on in Terminal
Emoji keyboard ⌘⌥␣
Mini keyboard ⌃⇧␣
Settings
Quit EmojiCopy
With key equivalents. The status line appears only when something is off, so it is never noise.
L · Hold to see Command held inside the picker
You hold while the picker is open.Every control paints the key that fires it. Let go and it is gone.
Recent
Resting. Nothing painted. This is the zero-cost state and it is what people see almost always.
Recent ⌘1
1 2 3 4 5 6 7 8
Command held. Every control paints the key that fires it, in place. Same frame, same grid, nothing moved. Release and it is gone.

The permission

Already asked for, never explained
M · The blocked tap Accessibility off, emoji tapped
You tap an emoji before turning Accessibility on.It goes to your clipboard and the picker says so, instead of doing nothing at all.
Recent
Today. The tap is a literal no-op. Nothing inserts, nothing copies, nothing is said, and the window stays open. Verified at desktop.js:151.
Recent
Copied. Paste where you want it.
Fixed. The character goes to the clipboard, the app you came from is restored, the footer says so, and the window hides so the paste can happen.
N · The ask Own window, survives losing focus
You press Open the setting.The Accessibility list opens and this window stays put behind it.
EmojiCopy
Typing into other apps
EmojiCopy can put emoji straight into the app you came from instead of your clipboard. macOS holds that behind one setting, called Accessibility, in Privacy and Security.
The setting is broad. It hands EmojiCopy more reach than it uses, and macOS has no smaller version to ask for.
What EmojiCopy does with it: put the character you picked where your cursor is, and note which app you came from so it can put you back there.
Nothing you type is stored, and nothing you type leaves your Mac.
Open the setting Use the clipboard
O · The three endings Waiting, on, and declined
You flip the switch in System Settings, or you decide not to.The screen changes itself. Declining is a real choice and is never punished.
EmojiCopy
Waiting on the switch
System Settings is open at Privacy and Security, then Accessibility. Find EmojiCopy in that list and turn it on.
This screen updates on its own when you do.
Watching for the switch
Waiting. Nothing is disabled, nothing waits on Apple. The status line is live, not a spinner.
EmojiCopy
Typing on
Pick an emoji and it goes into the app you came from.
Your clipboard stays as you left it.
Done
Granted. The watcher fires and the screen changes itself. No relaunch, no quit prompt, no confirm click.
EmojiCopy
⌘V
Clipboard mode
EmojiCopy works without the setting. Pick an emoji and it goes on your clipboard for you to paste where you want it.
Done
Declined. Same size, same weight as granted. No red, no warning, no second pitch, and the app never asks again on its own.