Skip to content

IDEA : Custom emoji suggestion (optional) #368

Description

@mastertrivia

Feature idea: Custom emoji Suggestions / Personal Suggestion Dictionary

I have one feature idea that I think could be surprisingly powerful while still being very lightweight.

The basic idea is not to replace Dictate's existing emoji/suggestion engine. Dictate can keep its internal emoji suggestions exactly as they are. This would simply add a small user-defined override layer on top.

For example, suppose Dictate internally suggests:

"idea → 💡"

The user could define their own preference:

"idea → 🧠,💡"

Then the custom mapping would take priority whenever the trigger matches.

If the user hasn't defined a custom mapping for something (I mean for a particular word) the normal internal suggestion system continues working exactly as before.

So, like if the user assigned A new emoji set for already existing one, then the user one will override the older emoji word. And like what words are assigned by user , then the suggestion is still following the older words for emoji.

So the user doesn't need to manually configure every word or emoji. They only customize the things they personally care about.

User want change emoji Suggestion for love.
He will do
(Love:❤️,💜)

In this way, because the love is also created by the user, then it will override the internal existing world of love.

What can be a trigger?

I wouldn't restrict this to ordinary words.

A trigger could be:

  • an English word
  • a Hindi word
  • another language
  • a symbol
  • punctuation
  • an emoji
  • a short phrase
  • a sentence
  • up to several words

For example:

(idea:💡,🧠)
(bye:👋,🙂)
(नमस्ते:🙏,😊)
(?:❓,❔)
(I love you:❤️,🥰)
(good morning:🌅,😊)

This means the same system could be used not only for emoji suggestions, but also for symbols, punctuation and personalized phrase shortcuts.

For example, a user could decide that typing "?" should suggest "❓" and "❔", or that another symbol should suggest a particular pair of symbols.

It could even support an emoji as the trigger itself: the user could type a particular emoji and have their preferred related emojis appear as suggestions.

In other words, it becomes a very simple way for the user to say:

«“When I type X, show me Y.”»


A very simple import format

I think the format should be extremely easy for users to understand and paste.

I would suggest:

(trigger:suggestion1,suggestion2)

For example:

(I love you:❤️,🥰)
(idea:💡,🧠)
(good morning:🌅,😊)
(नमस्ते:🙏,😊)
(?:❓,❔)

The entire mapping is inside the outer parentheses.

The rules are deliberately simple:

  • First "(" = beginning of an entry.
  • Final ")" = end of an entry.
  • ":" = separates the trigger from the suggestions.
  • "," = separates the suggestions.
  • Spaces have no special meaning inside the brackets & Are never becoming the hurdle.
  • Hindi, English, symbols, emojis and phrases can all be used.

The brackets are useful because they clearly identify where an entry begins and ends. The user could even put multiple mappings on the same line without the parser becoming dependent on newlines.

For example:

(idea:💡,🧠)(bye:👋,🙂)(love:❤️,🥰)

could still be parsed as three separate mappings.

Newlines can of course still be used for readability.

There should also be basic validation for ambiguous/invalid entries. For example:

( (:)

should be recognized as invalid/incomplete, while:

( (:))

can represent "(" as the trigger and ")" as the suggestion.

So the delimiter itself can still be supported with appropriate parsing/escaping rules rather than making the whole system complicated.

I don't think the user should ever need to understand JSON. Internally, this could use JSON or even reuse the same kind of data structure/mechanism already used for the symbol/secondary-layout definitions. The important thing is that the user-facing format remains extremely simple.

They are never getting disturbed like how much space the user put inside the opening and closing bracket. So the space are never creating the disturbances, inside bracket.


Phrase matching is important

There is one behavior I think is particularly important because it is something the current suggestion behavior appears to be missing.

Currently, emoji suggestions seem to be based primarily on the immediately preceding/current word. For example, if the user is trying to type:

"I love you"

the love-related emoji can appear while "love" is the relevant word, but when the user starts typing "you", that suggestion can disappear.

For custom suggestions, it would be useful to support multi-word triggers.

For example:

(I love you:❤️,🥰)

The keyboard should not trigger the mapping while the user is still typing "you".

The intended behavior would be:

"I love yo..." → don't trigger yet.

"I love you" → still don't trigger prematurely.

"I love you " → now the phrase is complete, so show:

"❤️ 🥰"

The important point is that the space after the completed word/phrase acts as the boundary. This prevents the suggestion from interfering with the word currently being typed.

The implementation does not necessarily have to look at an unlimited amount of text. If the existing prediction engine naturally considers the previous two or three words, the custom layer could use that same context.

For example, if the user defines:

(I love you:❤️,🥰)

the matcher could detect the relevant completed suffix such as "love you".

But I would prefer the implementation to support the longest matching completed phrase, rather than hard-coding the feature to exactly two words.

For example:

(love:❤️,😍)
(I love you:❤️,🥰)
(I really love you:❤️,🥰)

If the user types:

"I love you "

the three-word mapping should win over the single-word "love" mapping.

This would also avoid the problem where a phrase-specific suggestion disappears simply because the latest word changed.

So you may be like you can make some rule like the emojis are not getting changed. I mean emojis are there. And they are looking up to the last two word.

Don't immediately discard an existing emoji suggestion just because a new word is typed. If the current word has no emoji suggestion, the engine could continue considering the previous 1–2 completed words. For example, if good morning produces 🌅, then typing good morning brother could still retain 🌅 because morning is still within the recent context. Similarly, I love you could continue showing ❤️ if love has the relevant emoji and you has none.
If the newest word does have its own emoji suggestion, then that newer suggestion could take priority. This could make the system feel much more natural for short phrases such as Hey → 👋, while Hey man could potentially use the newer/contextual suggestion.
Could you clarify how Dictate's current prediction engine works here? Does it only consider the immediately previous word, or can it already access the previous 2–3 words/candidates? If the latter is available, perhaps this “recent-context fallback” could be implemented quite lightly.


Don't make the feature unnecessarily complicated

The actual underlying mechanism could be very small:

User types → check completed text against custom mappings → if a custom mapping matches, prioritize it → otherwise use the existing Dictate suggestions.

That's it.

It doesn't need to replace or modify the whole prediction engine.

The custom list is essentially a personal override dictionary.

This also means that if the user only defines 20 things, Dictate still has its normal behavior for everything else.


UI: manual editing + bulk import

I think the user-facing interface should have two ways to create these mappings.

A. Normal/manual mode

Instead of forcing users to type the syntax, show something similar to a simple Excel/spreadsheet-style table:

Trigger| Suggestion 1| Suggestion 2
I love you| ❤️| 🥰
idea| 💡| 🧠
good morning| 🌅| 😊
नमस्ते| 🙏| 😊

There could simply be a "+" / Add row button.

The user can keep adding rows and manually type whatever they want in each column.

This is useful for normal users because they don't need to understand the import syntax at all.

The table is essentially just the friendly UI representation of the same underlying mappings.

B. Bulk Import

But the Bulk Import/Add option is what makes this feature particularly powerful.

There could be a button such as:

Bulk Import

which opens a plain, scrollable text box.

The user pastes:

(I love you:❤️,🥰)
(idea:💡,🧠)
(good morning:🌅,😊)
(नमस्ते:🙏,😊)
(?:❓,❔)

and presses Import.

The app then parses the text and automatically fills the table with all the corresponding rows.

So users can either:

Add one row manually

or:

Paste 100–300 mappings → Import → automatically populate the table.

That makes the feature useful for both casual users and power users.


Why bulk import is especially useful now

Today is the world of ChatGPT and several AI where highly customized and personalized things can be obtained within just one prompt.

This is where I think the feature becomes much more interesting than a normal “custom emoji” setting.

Users don't necessarily want to sit there manually creating 100 entries.

They can simply go to ChatGPT or another AI and ask it to generate a personalized list.

For example, an English user could ask:

«Generate 100 of the most commonly used everyday English words and short phrases, and assign two useful emojis to each one.»

A Hindi user could ask the same thing in Hindi.

A student could ask for common study-related words.

Someone could ask for frequently used work phrases.

Someone else could ask for common conversational expressions.

The AI can produce the mappings directly in the supported format:

(happy:😊,😄)
(sad:😢,😭)
(thinking:🤔,🧐)
(idea:💡,🧠)
(good morning:🌅,😊)
(thank you:🙏,❤️)

The user simply copies the whole output and pastes it into Bulk Import.

That means the feature can become highly personalized without requiring the keyboard developer to maintain huge language-specific emoji dictionaries.


The keyboard itself could teach users how to use this

I think this should be made discoverable rather than just adding an unexplained “Custom Suggestions” setting.

For example:

Custom Suggestions

«Create your own personalized suggestions.

Type them manually or use ChatGPT/another AI to generate a list and import it in bulk.

Example:

"(I love you:❤️,🥰)"

"(idea:💡,🧠)"»

Then have a Copy AI Prompt button.

The copied prompt could be something like:

Generate 100 commonly used words and short everyday phrases in [LANGUAGE].
For each one, assign exactly two useful emojis.

Use exactly this format:
(trigger:emoji1,emoji2)

Examples:
(Good morning:☕,💖)
(Love:🙏,❤️)
(शुभ प्रभात:🌅,🙏)
(?:❓,❔)
Include common everyday words, symbols and short phrases.
Do not add numbering, explanations, Markdown or any other text.
Return only the mappings.

The user can replace "[LANGUAGE]" with Hindi, English, or whatever language they want.

This makes the feature almost self-explanatory:

Generate → Copy → Paste → Import → Done.


One more useful consequence

Because the trigger is not limited to words, this can effectively become a personal shortcut/search system for the emoji bar.

Normally, if I repeatedly want a particular emoji, I have to open the emoji keyboard and search for it every time.

With custom suggestions, I can save the things I repeatedly search for.

For example:

(idea:💡,🧠)
(question:❓,🤔)
(strong:💪,🔥)
(love:❤️,🥰)
(? :❓,❔)

Then I can get my preferred emojis directly from the suggestion bar.

So although the implementation could be quite small, the result gives the user a lot of control over what appears in the suggestion bar and when.

I am not insisting that the UI or exact implementation has to be this way; I'm mainly suggesting the concept because it seems like a relatively lightweight addition that could make the existing suggestion system much more customizable without replacing its current behavior.

I think the real power of this feature is not simply “custom emojis”. It can effectively turn the user's manual emoji searches into automatic suggestion shortcuts.

For example, today, if I want an emoji, I might open the emoji bar, search for something like “idea”, find 💡, and use it. With this feature, I could use ChatGPT or another AI to generate a personalized list of the words/phrases I commonly use and the emojis I normally want for them. I simply bulk-import that list once, and from then on, the emoji that I previously had to search for manually can appear directly in the suggestion bar.

For example, an AI could generate:

(idea:💡,🧠)
(happy:😊,😄)
(thinking:🤔,🧐)
(thank you:🙏,❤️)
(good morning:🌅,😊)

So the AI is essentially helping the user save their frequently used emoji searches as personalized shortcuts.

I don't think users should be encouraged to create mappings for every word, because then the suggestion bar could become overloaded and emojis would appear everywhere. The feature is more useful when the user customizes the small set of words, phrases and symbols they actually use frequently.

For example, the UI could encourage users to ask ChatGPT/another AI:

«“Give me the most frequently used words and short phrases in my language that I use in daily chatting, and assign the most appropriate emojis to them.”»

They could also ask for mappings specific to their profession, studies, hobbies, etc. Then they simply bulk-import the result.

Also, two emojis should not be mandatory. A user should be able to assign only one:

(idea:💡)

or two:

(idea:💡,🧠)

This keeps the suggestion bar from unnecessarily consuming space.

One more small extension could be new-line suggestions. Normally, when the user starts a new line, the suggestion bar may have nothing meaningful to suggest, and that's fine. But users could optionally define a few symbols that are particularly useful at the beginning of a new line, for example:

• 👉 -

You could allow a maximum of three such new-line suggestions, either with sensible defaults or as user-configurable entries.

That would make the same custom-suggestion mechanism useful not only for emojis, but also for frequently used formatting symbols and writing shortcuts.

Note

Of course, please treat everything above simply as a suggestion, not as a request or expectation. If you find the idea useful for DictateKeyboard, you are completely free to implement it. You could also implement only a lighter/simpler version of it, modify the behavior or UI in whatever way makes the most sense, or take only the parts that you think are practical.

I tried my best to think about this feature from different perspectives, including the UX, possible use cases, edge cases, and how it could remain lightweight rather than becoming unnecessarily complicated. The idea itself was originally just a random thought from my side; I used ChatGPT mainly to help me structure and rewrite those thoughts into a clearer, more organized flow for the issue.

So there is absolutely no pressure to implement everything described here. If you don't find the feature useful, or if you feel it doesn't fit DictateKeyboard's direction, you are completely free to close the issue immediately. And if you think some part of it is easy and worthwhile to implement, please feel completely welcome to go ahead with it in whatever form you consider best.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions