Skip to content

emoji

Emoji, Emoticon, and Kaomoji Support

This directory provides Talon configuration and assets for inserting various emojis, Western emoticons (ASCII-based), and Eastern kaomojis (Unicode text-art) using voice commands.

By grouping these features into a dedicated tag (user.emoji), the system allows users to optionally activate or deactivate these voice commands based on context.

How It Works

The functionality is divided into three parts: defining the structure, implementing the voice commands, and declaring the mapping lists.

1. Registration and Setup

The emoji.py file serves as the schema definition for this module. It registers:

  • The user.emoji tag, which must be enabled for any of these commands to become active.
  • Three distinct list definitions: user.emoticon, user.emoji, and user.kaomoji.

2. Defining Voice Commands

The emoji.talon file implements the voice commands that are triggered when the user.emoji tag is active:

  • Emoticons: Saying "emoticon {user.emoticon}" types the corresponding ASCII characters directly (for example, saying "emoticon wink" outputs ;)).
  • Emojis and Kaomojis: Saying "emoji {user.emoji}" or "kaomoji {user.kaomoji}" inserts the Unicode characters by calling user.paste(). Using paste ensures that complex multi-byte Unicode strings or emojis are reliably inserted into the active application without keyboard-layout interference.

3. Custom Mappings (The Lists)

The mapping between spoken phrases and their symbolic outputs is declared in three separate Talon list files:

  • emoji.talon-list: Maps spoken words to standard Unicode emojis.

    • Example: shushing: 🤫
  • kaomoji.talon-list: Maps spoken expressions to Japanese-style kaomoji text art.

    • Example: table flip: (╯°□°)╯︵ ┻━┻
  • emoticon.talon-list: Maps spoken terms to classic Western ASCII emoticons.

    • Example: cheering: \o/