Created
July 4, 2026 00:24
-
-
Save georges/290cf883902dceebe0610683dac530d2 to your computer and use it in GitHub Desktop.
Emoji shortcodes catalog for RadioMail
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Emoji shortcodes catalog for RadioMail | |
| # Winlink messages support only ISO-8859-1 characters and do not allow Unicode. | |
| # To enable emoji usage, RadioMail maps emojis to plain-text shortcodes for transmission. | |
| # The following emojis are supported and automatically transcoded. | |
| module EmojiShortcodesCatalog | |
| # Canonical shortcodes (prefer GitHub/gemoji + common Slack names). | |
| # Keep this intentionally small and explicit so it can be shared with other clients. | |
| CANONICAL_SHORTCODE_TO_EMOJI = { | |
| ":+1:" => "👍", | |
| ":-1:" => "👎", | |
| ":slightly_smiling_face:" => "🙂", | |
| ":neutral_face:" => "😐", | |
| ":frown:" => "🙁", | |
| ":thinking:" => "🤔", | |
| ":grinning:" => "😀", | |
| ":rofl:" => "🤣", | |
| ":roll_eyes:" => "🙄", | |
| ":grimacing:" => "😬", | |
| ":nauseated_face:" => "🤢", | |
| ":vomiting_face:" => "🤮", | |
| ":open_mouth:" => "😮", | |
| ":joy:" => "😂", | |
| ":wink:" => "😉", | |
| ":sunglasses:" => "😎", | |
| ":nerd_face:" => "🤓", | |
| ":partying_face:" => "🥳", | |
| ":upside_down_face:" => "🙃", | |
| ":zipper_mouth_face:" => "🤐", | |
| ":angry_face:" => "🤬", | |
| ":zany_face:" => "🤪", | |
| ":cry:" => "😢", | |
| ":sob:" => "😭", | |
| ":heart_eyes:" => "😍", | |
| ":star_struck:" => "🤩", | |
| ":scream:" => "😱", | |
| ":cold_face:" => "🥶", | |
| ":skull:" => "💀", | |
| ":poop:" => "💩", | |
| ":clown_face:" => "🤡", | |
| ":namaste:" => "🙏", | |
| ":v:" => "✌️", | |
| ":shaka:" => "🤙", | |
| ":star:" => "⭐", | |
| ":sheep:" => "🐑", | |
| # Branding: always render hearts as yellow. | |
| ":heart:" => "💛", | |
| ":rainbow:" => "🌈", | |
| ":100:" => "💯", | |
| ":fire:" => "🔥", | |
| ":snowflake:" => "❄️", | |
| ":sunny:" => "☀️", | |
| ":partly_sunny:" => "🌤️", | |
| ":cloud:" => "☁️", | |
| ":cloud_with_rain:" => "🌧️", | |
| ":hamburger:" => "🍔", | |
| ":beer:" => "🍺", | |
| ":ramen:" => "🍜", | |
| ":birthday:" => "🎂", | |
| ":coconut:" => "🥥", | |
| ":pineapple:" => "🍍", | |
| ":car:" => "🚗", | |
| ":police_car:" => "🚓", | |
| ":ambulance:" => "🚑", | |
| ":fire_engine:" => "🚒", | |
| ":rotating_light:" => "🚨", | |
| ":airplane:" => "✈️", | |
| ":rocket:" => "🚀", | |
| ":helicopter:" => "🚁", | |
| ":motor_boat:" => "🛥️", | |
| ":ring_buoy:" => "🛟", | |
| ":moyai:" => "🗿", | |
| ":desert_island:" => "🏝️", | |
| ":mountain:" => "⛰️", | |
| ":camping:" => "🏕️", | |
| ":house:" => "🏠", | |
| ":hospital:" => "🏥", | |
| ":iphone:" => "📱", | |
| ":computer:" => "💻", | |
| ":phone:" => "☎️", | |
| ":microphone:" => "🎙️", | |
| ":hibiscus:" => "🌺", | |
| ":battery:" => "🔋", | |
| ":satellite_antenna:" => "📡", | |
| ":battery_low:" => "🪫", | |
| ":electric_plug:" => "🔌", | |
| ":bulb:" => "💡", | |
| ":fire_extinguisher:" => "🧯", | |
| ":gift:" => "🎁", | |
| ":key:" => "🔑", | |
| ":tada:" => "🎉", | |
| ":white_check_mark:" => "✅", | |
| ":x:" => "❌", | |
| ":warning:" => "⚠️", | |
| ":sos:" => "🆘", | |
| ":round_pushpin:" => "📍", | |
| ":radio:" => "📻", | |
| } | |
| # Alias -> canonical. Used to accept multiple common spellings/names, and to | |
| # migrate older stored shortcodes forward. | |
| SHORTCODE_ALIASES = { | |
| # thumbs up/down | |
| ":thumbsup:" => ":+1:", | |
| ":thumbsdown:" => ":-1:", | |
| # smiley | |
| ":smile:" => ":slightly_smiling_face:", | |
| # eyes | |
| ":rolling_eyes:" => ":roll_eyes:", | |
| # surprised | |
| ":surprised:" => ":open_mouth:", | |
| # check mark | |
| ":ok:" => ":white_check_mark:", | |
| ":heavy_check_mark:" => ":white_check_mark:", | |
| ":ballot_box_with_check:" => ":white_check_mark:", | |
| # location | |
| ":location:" => ":round_pushpin:", | |
| # heart variants in shortcode form | |
| ":yellow_heart:" => ":heart:", | |
| # poop | |
| ":hankey:" => ":poop:", | |
| # gestures | |
| ":peace:" => ":v:", | |
| ":folded_hands:" => ":namaste:", | |
| ":call_me_hand:" => ":shaka:", | |
| # flags (US lives in EmojiFlagsCatalog as :flag_us:) | |
| ":us:" => ":flag_us:", | |
| ":usa:" => ":flag_us:" | |
| } | |
| # Additional emoji sequences that we want to accept & canonicalize. | |
| EXTRA_EMOJI_TO_CANONICAL_SHORTCODE = { | |
| # allow non-variation form too | |
| "✌" => ":v:", | |
| # accept skin tone variations, but canonicalize to base emoji (yellow default) for branding/consistency. | |
| "👍🏻" => ":+1:", | |
| "👍🏼" => ":+1:", | |
| "👍🏽" => ":+1:", | |
| "👍🏾" => ":+1:", | |
| "👍🏿" => ":+1:", | |
| "👎🏻" => ":-1:", | |
| "👎🏼" => ":-1:", | |
| "👎🏽" => ":-1:", | |
| "👎🏾" => ":-1:", | |
| "👎🏿" => ":-1:", | |
| "🤙🏻" => ":shaka:", | |
| "🤙🏼" => ":shaka:", | |
| "🤙🏽" => ":shaka:", | |
| "🤙🏾" => ":shaka:", | |
| "🤙🏿" => ":shaka:", | |
| "✌🏻" => ":v:", | |
| "✌🏼" => ":v:", | |
| "✌🏽" => ":v:", | |
| "✌🏾" => ":v:", | |
| "✌🏿" => ":v:", | |
| # closely related emoji aliases (normalize to our canonical subset) | |
| "⛰" => ":mountain:", | |
| "🏔" => ":mountain:", | |
| "🏔️" => ":mountain:", | |
| "🗻" => ":mountain:", | |
| "📞" => ":phone:", | |
| "☎" => ":phone:", | |
| "🎤" => ":microphone:", | |
| "☑️" => ":white_check_mark:", | |
| "✔️" => ":white_check_mark:", | |
| "✖️" => ":x:", | |
| "❎" => ":x:", | |
| "🌞" => ":sunny:", | |
| "🌥️" => ":partly_sunny:", | |
| "🌦️" => ":cloud_with_rain:", | |
| "☔" => ":cloud_with_rain:", | |
| "🌨️" => ":snowflake:", | |
| "🧊" => ":cold_face:", | |
| "🛫" => ":airplane:", | |
| "🛬" => ":airplane:", | |
| "🚙" => ":car:", | |
| "🚘" => ":car:", | |
| "🚔" => ":police_car:", | |
| "🚤" => ":motor_boat:", | |
| "🏡" => ":house:", | |
| "🗝️" => ":key:", | |
| "🎊" => ":tada:", | |
| "🌟" => ":star:", | |
| "😃" => ":grinning:", | |
| "😛" => ":zany_face:", | |
| "😜" => ":zany_face:", | |
| "😝" => ":zany_face:", | |
| "😋" => ":zany_face:", | |
| "😊" => ":slightly_smiling_face:", | |
| "😆" => ":grinning:", | |
| "😠" => ":angry_face:", | |
| # accept common heart emoji variants, but canonicalize to :heart: so they render as 💛. | |
| "❤️" => ":heart:", | |
| "🧡" => ":heart:", | |
| "💛" => ":heart:", | |
| "💚" => ":heart:", | |
| "💙" => ":heart:", | |
| "💜" => ":heart:", | |
| "🖤" => ":heart:", | |
| "🤍" => ":heart:", | |
| "🤎" => ":heart:" | |
| } | |
| end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment